local MAJOR_VERSION = "SpellTree 1.1" local MINOR_VERSION = tonumber(string.sub("$Revision: 1536 $", 12, -3)) if BabbleLib and BabbleLib.versions[MAJOR_VERSION] and BabbleLib.versions[MAJOR_VERSION].minor >= MINOR_VERSION then return end local locale = GetLocale and GetLocale() or "enUS" if locale ~= "frFR" and locale ~= "deDE" then locale = "enUS" end local initTrees, trees if locale == "enUS" then function initTrees() trees = { -- Druid BALANCE = "Balance", FERAL_COMBAT = "Feral Combat", RESTORATION = "Restoration", -- Hunter BEAST_MASTERY = "Beast Mastery", MARKSMANSHIP = "Marksmanship", SURVIVAL = "Survival", -- Mage ARCANE = "Arcane", FIRE = "Fire", FROST = "Frost", -- Paladin HOLY = "Holy", PROTECTION = "Protection", RETRIBUTION = "Retribution", -- Priest DISCIPLINE = "Discipline", HOLY = "Holy", -- same as Paladin SHADOW = "Shadow", -- Rogue ASSASSINATION = "Assassination", COMBAT = "Combat", SUBTLETY = "Subtlety", -- Shaman ELEMENTAL = "Elemental", ENHANCEMENT = "Enhancement", RESTORATION = "Restoration", -- same as Druid -- Warrior ARMS = "Arms", FURY = "Fury", PROTECTION = "Protection", -- same as Paladin -- Warlock AFFLICTION = "Affliction", DEMONOLOGY = "Demonology", DESTRUCTION = "Destruction", } end elseif locale == "deDE" then function initTrees() trees = { -- Druid BALANCE = "Gleichgewicht", FERAL_COMBAT = "Wilder Kampf", RESTORATION = "Wiederherstellung", -- Hunter BEAST_MASTERY = "Tierherrschaft", MARKSMANSHIP = "Treffsicherheit", SURVIVAL = "\195\156berleben", -- Mage ARCANE = "Arcan", FIRE = "Feuer", FROST = "Frost", -- Paladin HOLY = "Heilig", PROTECTION = "Schutz", RETRIBUTION = "Vergeltung", -- Priest DISCIPLINE = "Disziplin", HOLY = "Heilig", -- same as Paladin SHADOW = "Schatten", -- Rogue ASSASSINATION = "Meucheln", COMBAT = "Kampf", SUBTLETY = "T\195\164uschung", -- Shaman ELEMENTAL = "Elementar", ENHANCEMENT = "Verst\195\164rkung", RESTORATION = "Wiederherstellung", -- same as Druid -- Warrior ARMS = "Waffen", FURY = "Furor", PROTECTION = "Schutz", -- same as Paladin -- Warlock AFFLICTION = "Gebrechen", DEMONOLOGY = "D\195\164monologie", DESTRUCTION = "Zerst\195\182rung", } end elseif locale == "frFR" then function initTrees() trees = { -- Druid BALANCE = "Equilibre", FERAL_COMBAT = "Combat sauvage", RESTORATION = "Restauration", -- Hunter BEAST_MASTERY = "Ma\195\174trise des b\195\170tes", MARKSMANSHIP = "Pr\195\169cision", SURVIVAL = "Survie", -- Mage ARCANE = "Arcanes", FIRE = "Feu", FROST = "Givre", -- Paladin HOLY = "Sacr\195\169", PROTECTION = "Protection", RETRIBUTION = "Vindicte", -- Priest DISCIPLINE = "Discipline", HOLY = "Sacr\195\169", -- same as Paladin SHADOW = "Ombre", -- Rogue ASSASSINATION = "Assassinat", COMBAT = "Combat", SUBTLETY = "Finesse", -- Shaman ELEMENTAL = "\195\137l\195\169mentaire", ENHANCEMENT = "Am\195\169lioration", RESTORATION = "Restauration", -- same as Druid -- Warrior ARMS = "Armes", FURY = "Fureur", PROTECTION = "Protection", -- same as Paladin -- Warlock AFFLICTION = "Affliction", DEMONOLOGY = "D\195\169monologie", DESTRUCTION = "Destruction", } end end -------------IRIEL'S-STUB-CODE-------------- local stub = {}; -- Instance replacement method, replace contents of old with that of new function stub:ReplaceInstance(old, new) for k,v in pairs(old) do old[k]=nil; end for k,v in pairs(new) do old[k]=v; end end -- Get a new copy of the stub function stub:NewStub() local newStub = {}; self:ReplaceInstance(newStub, self); newStub.lastVersion = ''; newStub.versions = {}; return newStub; end -- Get instance version function stub:GetInstance(version) if (not version) then version = self.lastVersion; end local versionData = self.versions[version]; if (not versionData) then message("Cannot find library instance with version '" .. version .. "'"); return; end return versionData.instance; end -- Register new instance function stub:Register(newInstance) local version,minor = newInstance:GetLibraryVersion(); self.lastVersion = version; local versionData = self.versions[version]; if (not versionData) then -- This one is new! versionData = { instance = newInstance, minor = minor, old = {} }; self.versions[version] = versionData; newInstance:LibActivate(self); return newInstance; end if (minor <= versionData.minor) then -- This one is already obsolete if (newInstance.LibDiscard) then newInstance:LibDiscard(); end return versionData.instance; end -- This is an update local oldInstance = versionData.instance; local oldList = versionData.old; versionData.instance = newInstance; versionData.minor = minor; local skipCopy = newInstance:LibActivate(self, oldInstance, oldList); table.insert(oldList, oldInstance); if (not skipCopy) then for i, old in ipairs(oldList) do self:ReplaceInstance(old, newInstance); end end return newInstance; end -- Bind stub to global scope if it's not already there if (not BabbleLib) then BabbleLib = stub:NewStub(); end -- Nil stub for garbage collection stub = nil; -----------END-IRIEL'S-STUB-CODE------------ local lib = {} local localTrees function lib:GetEnglish(tree) return localTrees[tree] or tree end function lib:GetLocalized(tree) return trees[tree] or tree end function lib:GetIterator() return pairs(trees) end function lib:GetReverseIterator() return pairs(localTrees) end function lib:HasSpellTree(tree) return (trees[tree] or localTrees[tree]) and true or false end function lib:GetLibraryVersion() return MAJOR_VERSION, MINOR_VERSION end function lib:LibActivate(stub, oldLib, oldList) initTrees() initTrees = nil localTrees = {} for english, localized in pairs(trees) do if string.sub(english, -4) == "_ALT" then localTrees[localized] = string.sub(english, 0, -5) elseif string.sub(english, -5, -2) == "_ALT" then localTrees[localized] = string.sub(english, 0, -6) else localTrees[localized] = english end end end function lib:LibDeactivate() trees, localTrees, initTrees = nil end BabbleLib:Register(lib) lib = nil