You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6866 lines
141 KiB

--[[
Character data handling
]]
local _, Internal = ...;
local L = Internal.L;
local UnitSex = UnitSex
local UnitRace = UnitRace
local UnitClass = UnitClass
local UnitFullName = UnitFullName
local GetRealmName = GetRealmName
local GetClassInfo = GetClassInfo
local GetNumClasses = GetNumClasses
local GetTalentInfoByID = GetTalentInfoByID
local GetSpecialization = GetSpecialization
local GetPvpTalentSlotInfo = C_SpecializationInfo.GetPvpTalentSlotInfo;
local GetNumSpecializations = GetNumSpecializations
local GetSpecializationInfo = GetSpecializationInfo
local GetTalentInfoBySpecialization = GetTalentInfoBySpecialization
local GetNumSpecializationsForClassID = GetNumSpecializationsForClassID
local GetSpecializationInfoForClassID = GetSpecializationInfoForClassID
local GetEssenceInfo = C_AzeriteEssence.GetEssenceInfo;
local roles = {"TANK", "HEALER", "DAMAGER"};
local roleIndexes = {["TANK"] = 1, ["HEALER"] = 2, ["DAMAGER"] = 3};
local classInfo = {};
local classInfoBySpecID = {};
function Internal.Roles()
return ipairs(roles)
end
function Internal.GetClassInfo(class)
return classInfo[class]
end
function Internal.GetClassInfoBySpecID(spec)
return classInfoBySpecID[spec]
end
function Internal.GetClassID(class)
return classInfo[class] and classInfo[class].classID;
end
function Internal.GetClassFile(class)
return classInfo[class] and classInfo[class].classFile;
end
function Internal.IsClassRoleValid(class, role)
return (classInfo[class] and classInfo[class].roles[role]) and true or false;
end
function Internal.UpdateClassInfo()
for classIndex=1,GetNumClasses() do
if GetNumSpecializationsForClassID(classIndex) > 0 then
local info = C_CreatureInfo.GetClassInfo(classIndex);
local classID = info.classID;
info.specs, info.roles = {}, {};
for specIndex=1,GetNumSpecializationsForClassID(classID) do
local id, _, _, _, role = GetSpecializationInfoForClassID(classID, specIndex);
info.specs[specIndex] = id;
info.roles[role] = true;
classInfoBySpecID[id] = info;
end
classInfo[classID] = info;
classInfo[info.classFile] = info;
end
end
end
-- In very niche situations UnitFullName will not correctly respond with the realm
-- but since player realm cant change while logged in we can just reuse the previous value
local playerNameCache, playerRealmCache
function Internal.GetCharacterSlug()
local name, realm = UnitFullName("player");
playerNameCache = name or playerNameCache
playerRealmCache = realm or playerRealmCache
return playerRealmCache .. "-" .. playerNameCache
end
local GetSpecInfoVersion;
local VerifyTalentForSpec;
local VerifyPvPTalentForSpec;
local GetTalentInfoForSpecID;
local GetPvpTalentSlotInfoForSpecID;
do
local specInfo
if Internal.Is100100 then
specInfo = {
version = 8,
-- Warrior
[71] = { -- Arms
talents = {
{22624, 22360, 22371},
{19676, 22372, 22789},
{22380, 22489, 19138},
{15757, 22627, 22628},
{22392, 22391, 22362},
{22394, 22397, 22399},
{21204, 22407, 21667},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
{
level = 30,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
{
level = 40,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
},
},
[72] = { -- Fury
talents = {
{22632, 22633, 22491},
{19676, 22625, 23093},
{22379, 22381, 23372},
{23097, 22627, 22382},
{22383, 22393, 19140},
{22396, 22398, 22400},
{22405, 22402, 16037},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
{
level = 30,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
{
level = 40,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
},
},
[73] = { -- Protection
talents = {
{15760, 15759, 15774},
{19676, 22629, 22409},
{22378, 22626, 23260},
{23096, 22627, 22488},
{22384, 22631, 22800},
{22395, 22544, 22401},
{23455, 22406, 23099},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
24, 168, 171,
173, 175, 178,
831, 833, 845,
5374, 5432,
}
},
{
level = 30,
availableTalentIDs = {
24, 168, 171,
173, 175, 178,
831, 833, 845,
5374, 5432,
}
},
{
level = 40,
availableTalentIDs = {
24, 168, 171,
173, 175, 178,
831, 833, 845,
5374, 5432,
}
},
},
},
-- Paladin
[65] = { -- Holy
talents = {
{17565, 17567, 17569},
{22176, 17575, 17577},
{22179, 22180, 21811},
{22433, 22434, 17593},
{17597, 17599, 17601},
{23191, 23680, 22484},
{21201, 21671, 23681},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 3618, 5421,
5553, 5583,
}
},
{
level = 30,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 3618, 5421,
5553, 5583,
}
},
{
level = 40,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 3618, 5421,
5553, 5583,
}
},
},
},
[66] = { -- Protection
talents = {
{22428, 22558, 23469},
{22431, 22604, 23468},
{22179, 22180, 21811},
{22433, 22434, 22435},
{17597, 17599, 17601},
{22189, 22438, 23087},
{23457, 21202, 22645},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 5554, 5582,
}
},
{
level = 30,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 5554, 5582,
}
},
{
level = 40,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 5554, 5582,
}
},
},
},
[70] = { -- Retribution
talents = {
{22590, 22557, 23467},
{22319, 22592, 23466},
{22179, 22180, 21811},
{22433, 22434, 22183},
{17597, 17599, 17601},
{23167, 22483, 23086},
{23456, 22215, 22634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
81, 752, 753,
754, 756, 5422,
5535, 5572, 5573,
5584,
}
},
{
level = 30,
availableTalentIDs = {
81, 752, 753,
754, 756, 5422,
5535, 5572, 5573,
5584,
}
},
{
level = 40,
availableTalentIDs = {
81, 752, 753,
754, 756, 5422,
5535, 5572, 5573,
5584,
}
},
},
},
-- Hunter
[253] = { -- Beast Mastery
talents = {
{22291, 22280, 22282},
{22500, 22266, 22290},
{19347, 19348, 23100},
{22441, 22347, 22269},
{22268, 22276, 22499},
{19357, 22002, 23044},
{22273, 21986, 22295},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3604,
3730, 5418, 5441,
5444, 5534,
}
},
{
level = 30,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3604,
3730, 5418, 5441,
5444, 5534,
}
},
{
level = 40,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3604,
3730, 5418, 5441,
5444, 5534,
}
},
},
},
[254] = { -- Marksmanship
talents = {
{22279, 22501, 22289},
{22495, 22497, 22498},
{19347, 19348, 23100},
{22267, 22286, 21998},
{22268, 22276, 23463},
{23063, 23104, 22287},
{22274, 22308, 22288},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
651, 653, 658,
659, 660, 3729,
5419, 5440, 5442,
5531, 5533,
}
},
{
level = 30,
availableTalentIDs = {
651, 653, 658,
659, 660, 3729,
5419, 5440, 5442,
5531, 5533,
}
},
{
level = 40,
availableTalentIDs = {
651, 653, 658,
659, 660, 3729,
5419, 5440, 5442,
5531, 5533,
}
},
},
},
[255] = { -- Survival
talents = {
{22275, 22283, 22296},
{21997, 22769, 22297},
{19347, 19348, 23100},
{22277, 19361, 22299},
{22268, 22276, 22499},
{22300, 22278, 22271},
{22272, 22301, 23105},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
661, 662, 664,
665, 686, 3607,
3609, 5420, 5443,
5532,
}
},
{
level = 30,
availableTalentIDs = {
661, 662, 664,
665, 686, 3607,
3609, 5420, 5443,
5532,
}
},
{
level = 40,
availableTalentIDs = {
661, 662, 664,
665, 686, 3607,
3609, 5420, 5443,
5532,
}
},
},
},
-- Rogue
[259] = { -- Assassination
talents = {
{22337, 22338, 22339},
{22331, 22332, 23022},
{19239, 19240, 19241},
{22340, 22122, 22123},
{19245, 23037, 22115},
{22343, 23015, 22344},
{21186, 22133, 23174},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
{
level = 30,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
{
level = 40,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
},
},
[260] = { -- Outlaw
talents = {
{22118, 22119, 22120},
{23470, 19237, 19238},
{19239, 19240, 19241},
{22121, 22122, 22123},
{23077, 22114, 22115},
{21990, 23128, 19250},
{22125, 23075, 23175},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
{
level = 30,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
{
level = 40,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
},
},
[261] = { -- Subtlety
talents = {
{19233, 19234, 19235},
{22331, 22332, 22333},
{19239, 19240, 19241},
{22128, 22122, 22123},
{23078, 23036, 22115},
{22335, 19249, 22336},
{22132, 23183, 21188},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
{
level = 30,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
{
level = 40,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
},
},
-- Priest
[256] = { -- Discipline
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
98, 100, 109,
111, 114, 123,
126, 855, 5416,
5480, 5487, 5570,
}
},
{
level = 30,
availableTalentIDs = {
98, 100, 109,
111, 114, 123,
126, 855, 5416,
5480, 5487, 5570,
}
},
{
level = 40,
availableTalentIDs = {
98, 100, 109,
111, 114, 123,
126, 855, 5416,
5480, 5487, 5570,
}
},
},
},
[257] = { -- Holy
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
101, 108, 112,
124, 127, 1927,
5365, 5366, 5476,
5478, 5479, 5485,
5569,
}
},
{
level = 30,
availableTalentIDs = {
101, 108, 112,
124, 127, 1927,
5365, 5366, 5476,
5478, 5479, 5485,
5569,
}
},
{
level = 40,
availableTalentIDs = {
101, 108, 112,
124, 127, 1927,
5365, 5366, 5476,
5478, 5479, 5485,
5569,
}
},
},
},
[258] = { -- Shadow
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
106, 113, 763,
5381, 5447, 5477,
5481, 5486, 5568,
}
},
{
level = 30,
availableTalentIDs = {
106, 113, 763,
5381, 5447, 5477,
5481, 5486, 5568,
}
},
{
level = 40,
availableTalentIDs = {
106, 113, 763,
5381, 5447, 5477,
5481, 5486, 5568,
}
},
},
},
-- Death Knight
[250] = { -- Blood
talents = {
{19165, 19166, 23454},
{19218, 19219, 19220},
{19221, 22134, 22135},
{22013, 22014, 22015},
{19227, 19226, 19228},
{19230, 19231, 19232},
{21207, 21208, 21209},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
204, 205, 206,
608, 609, 841,
3441, 3511, 5513,
5587, 5592,
}
},
{
level = 30,
availableTalentIDs = {
204, 205, 206,
608, 609, 841,
3441, 3511, 5513,
5587, 5592,
}
},
{
level = 40,
availableTalentIDs = {
204, 205, 206,
608, 609, 841,
3441, 3511, 5513,
5587, 5592,
}
},
},
},
[251] = { -- Frost
talents = {
{22016, 22017, 22018},
{22019, 22020, 22021},
{22515, 22517, 22519},
{22521, 22523, 22525},
{22527, 22530, 23373},
{22531, 22533, 22535},
{22023, 22109, 22537},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5429,
5435, 5510, 5512,
5586, 5591,
}
},
{
level = 30,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5429,
5435, 5510, 5512,
5586, 5591,
}
},
{
level = 40,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5429,
5435, 5510, 5512,
5586, 5591,
}
},
},
},
[252] = { -- Unholy
talents = {
{22024, 22025, 22026},
{22027, 22028, 22029},
{22516, 22518, 22520},
{22522, 22524, 22526},
{22528, 22529, 23373},
{22532, 22534, 22536},
{22030, 22110, 22538},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5430, 5436,
5511, 5585, 5590,
}
},
{
level = 30,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5430, 5436,
5511, 5585, 5590,
}
},
{
level = 40,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5430, 5436,
5511, 5585, 5590,
}
},
},
},
-- Shaman
[262] = { -- Elemental
talents = {
{22356, 22357, 22358},
{23108, 23460, 23190},
{23162, 23163, 23164},
{19271, 19272, 19273},
{22144, 22172, 21966},
{22145, 19266, 23111},
{21198, 22153, 21675},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
727, 730, 3488,
3490, 3491, 3620,
5415, 5571, 5574,
}
},
{
level = 30,
availableTalentIDs = {
727, 730, 3488,
3490, 3491, 3620,
5415, 5571, 5574,
}
},
{
level = 40,
availableTalentIDs = {
727, 730, 3488,
3490, 3491, 3620,
5415, 5571, 5574,
}
},
},
},
[263] = { -- Enhancement
talents = {
{22354, 22355, 22353},
{22636, 23462, 23109},
{23165, 19260, 23166},
{23089, 23090, 22171},
{22144, 22149, 21966},
{21973, 22352, 22351},
{21970, 22977, 21972},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
721, 722, 3487,
3489, 3492, 3622,
5414, 5438, 5527,
5575, 5596,
}
},
{
level = 30,
availableTalentIDs = {
721, 722, 3487,
3489, 3492, 3622,
5414, 5438, 5527,
5575, 5596,
}
},
{
level = 40,
availableTalentIDs = {
721, 722, 3487,
3489, 3492, 3622,
5414, 5438, 5527,
5575, 5596,
}
},
},
},
[264] = { -- Restoration
talents = {
{19262, 19263, 19264},
{19259, 23461, 21963},
{19275, 23110, 22127},
{22152, 22322, 22323},
{22144, 19269, 21966},
{19265, 21971, 21968},
{21969, 21199, 22359},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
707, 708, 714,
715, 3755, 5388,
5437, 5528, 5566,
5567, 5576,
}
},
{
level = 30,
availableTalentIDs = {
707, 708, 714,
715, 3755, 5388,
5437, 5528, 5566,
5567, 5576,
}
},
{
level = 40,
availableTalentIDs = {
707, 708, 714,
715, 3755, 5388,
5437, 5528, 5566,
5567, 5576,
}
},
},
},
-- Mage
[62] = { -- Arcane
talents = {
{22458, 22461, 22464},
{23072, 22443, 16025},
{22444, 22445, 22447},
{22453, 22467, 22470},
{22907, 22448, 22471},
{22455, 22449, 22474},
{21630, 21144, 21145},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
635, 637, 3517,
3529, 5397, 5488,
5491, 5589, 5601,
}
},
{
level = 30,
availableTalentIDs = {
635, 637, 3517,
3529, 5397, 5488,
5491, 5589, 5601,
}
},
{
level = 40,
availableTalentIDs = {
635, 637, 3517,
3529, 5397, 5488,
5491, 5589, 5601,
}
},
},
},
[63] = { -- Fire
talents = {
{22456, 22459, 22462},
{23071, 22443, 23074},
{22444, 22445, 22447},
{22450, 22465, 22468},
{22904, 22448, 22471},
{22451, 23362, 22472},
{21631, 22220, 21633},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
644, 646, 647,
648, 5389, 5489,
5495, 5588, 5602,
}
},
{
level = 30,
availableTalentIDs = {
644, 646, 647,
648, 5389, 5489,
5495, 5588, 5602,
}
},
{
level = 40,
availableTalentIDs = {
644, 646, 647,
648, 5389, 5489,
5495, 5588, 5602,
}
},
},
},
[64] = { -- Frost
talents = {
{22457, 22460, 22463},
{22442, 22443, 23073},
{22444, 22445, 22447},
{22452, 22466, 22469},
{22446, 22448, 22471},
{22454, 23176, 22473},
{21632, 22309, 21634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
66, 632, 634,
5390, 5490, 5496,
5497, 5581, 5600,
}
},
{
level = 30,
availableTalentIDs = {
66, 632, 634,
5390, 5490, 5496,
5497, 5581, 5600,
}
},
{
level = 40,
availableTalentIDs = {
66, 632, 634,
5390, 5490, 5496,
5497, 5581, 5600,
}
},
},
},
-- Warlock
[265] = { -- Affliction
talents = {
{22039, 23140, 23141},
{22044, 21180, 22089},
{19280, 19285, 19286},
{19279, 19292, 22046},
{22047, 19291, 23465},
{23139, 23159, 19295},
{19284, 19281, 19293},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
12, 15, 16,
18, 19, 5379,
5386, 5392, 5543,
5546, 5579, 5608,
}
},
{
level = 30,
availableTalentIDs = {
12, 15, 16,
18, 19, 5379,
5386, 5392, 5543,
5546, 5579, 5608,
}
},
{
level = 40,
availableTalentIDs = {
12, 15, 16,
18, 19, 5379,
5386, 5392, 5543,
5546, 5579, 5608,
}
},
},
},
[266] = { -- Demonology
talents = {
{19290, 22048, 23138},
{22045, 21694, 23158},
{19280, 19285, 19286},
{22477, 22042, 23160},
{22047, 19291, 23465},
{23147, 23146, 21717},
{23161, 22479, 23091},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
162, 165, 1213,
3506, 3624, 5394,
5400, 5545, 5577,
5606,
}
},
{
level = 30,
availableTalentIDs = {
162, 165, 1213,
3506, 3624, 5394,
5400, 5545, 5577,
5606,
}
},
{
level = 40,
availableTalentIDs = {
162, 165, 1213,
3506, 3624, 5394,
5400, 5545, 5577,
5606,
}
},
},
},
[267] = { -- Destruction
talents = {
{22038, 22090, 22040},
{23148, 21695, 23157},
{19280, 19285, 19286},
{22480, 22043, 23143},
{22047, 19291, 23465},
{23155, 23156, 19295},
{19284, 23144, 23092},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
157, 164, 3508,
5382, 5393, 5401,
5544, 5580, 5607,
}
},
{
level = 30,
availableTalentIDs = {
157, 164, 3508,
5382, 5393, 5401,
5544, 5580, 5607,
}
},
{
level = 40,
availableTalentIDs = {
157, 164, 3508,
5382, 5393, 5401,
5544, 5580, 5607,
}
},
},
},
-- Monk
[268] = { -- Brewmaster
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22099, 22097, 19992},
{19993, 19994, 19995},
{20174, 23363, 20175},
{19819, 20184, 22103},
{22106, 22104, 22108},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
666, 667, 668,
669, 670, 672,
673, 765, 843,
1958, 5417, 5538,
5541, 5552,
}
},
{
level = 30,
availableTalentIDs = {
666, 667, 668,
669, 670, 672,
673, 765, 843,
1958, 5417, 5538,
5541, 5552,
}
},
{
level = 40,
availableTalentIDs = {
666, 667, 668,
669, 670, 672,
673, 765, 843,
1958, 5417, 5538,
5541, 5552,
}
},
},
},
[270] = { -- Mistweaver
talents = {
{19823, 19820, 20185},
{19304, 19818, 19302},
{22168, 22167, 22166},
{19993, 22219, 19995},
{23371, 20173, 20175},
{23107, 22101, 0},
{22218, 22169, 22170},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
70, 679, 680,
682, 683, 1928,
3732, 5395, 5398,
5402, 5539, 5551,
5565, 5603,
}
},
{
level = 30,
availableTalentIDs = {
70, 679, 680,
682, 683, 1928,
3732, 5395, 5398,
5402, 5539, 5551,
5565, 5603,
}
},
{
level = 40,
availableTalentIDs = {
70, 679, 680,
682, 683, 1928,
3732, 5395, 5398,
5402, 5539, 5551,
5565, 5603,
}
},
},
},
[269] = { -- Windwalker
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22098, 19771, 22096},
{19993, 23364, 19995},
{23258, 20173, 20175},
{22093, 23122, 22102},
{22107, 22105, 21191},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540, 5610,
}
},
{
level = 30,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540, 5610,
}
},
{
level = 40,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540, 5610,
}
},
},
},
-- Druid
[102] = { -- Balance
talents = {
{22385, 22386, 22387},
{19283, 18570, 18571},
{22163, 22157, 22159},
{21778, 18576, 18577},
{18580, 21706, 21702},
{22389, 21712, 22165},
{21648, 21193, 21655},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5515, 5604,
}
},
{
level = 30,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5515, 5604,
}
},
{
level = 40,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5515, 5604,
}
},
},
},
[103] = { -- Feral
talents = {
{22363, 22364, 22365},
{19283, 18570, 18571},
{22163, 22158, 22159},
{21778, 18576, 18577},
{21708, 18579, 21704},
{21714, 21711, 22370},
{21646, 21649, 21653},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5593,
}
},
{
level = 30,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5593,
}
},
{
level = 40,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5593,
}
},
},
},
[104] = { -- Guardian
talents = {
{22419, 22418, 0},
{19283, 18570, 18571},
{22163, 22156, 22159},
{21778, 18576, 18577},
{21709, 21707, 22388},
{22423, 21713, 22390},
{22426, 22427, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
49, 51, 52,
194, 195, 196,
197, 842, 1237,
3750, 5410,
}
},
{
level = 30,
availableTalentIDs = {
49, 51, 52,
194, 195, 196,
197, 842, 1237,
3750, 5410,
}
},
{
level = 40,
availableTalentIDs = {
49, 51, 52,
194, 195, 196,
197, 842, 1237,
3750, 5410,
}
},
},
},
[105] = { -- Restoration
talents = {
{18569, 18574, 18572},
{19283, 18570, 18571},
{22366, 22367, 22160},
{21778, 18576, 18577},
{21710, 21705, 22421},
{21716, 18585, 22422},
{22403, 21651, 22404},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5514,
}
},
{
level = 30,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5514,
}
},
{
level = 40,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5514,
}
},
},
},
-- Demon Hunter
[577] = { -- Havoc
talents = {
{21854, 22493, 22416},
{21857, 22765, 22799},
{22909, 22494, 21862},
{21863, 21864, 21865},
{21866, 21867, 21868},
{21869, 21870, 22767},
{21900, 21901, 22547},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
805, 806, 809,
811, 812, 813,
1206, 1218, 5433,
5523,
}
},
{
level = 30,
availableTalentIDs = {
805, 806, 809,
811, 812, 813,
1206, 1218, 5433,
5523,
}
},
{
level = 40,
availableTalentIDs = {
805, 806, 809,
811, 812, 813,
1206, 1218, 5433,
5523,
}
},
},
},
[581] = { -- Vengeance
talents = {
{22502, 22503, 22504},
{22505, 22766, 22507},
{22324, 22541, 22540},
{22508, 22509, 22770},
{22546, 22510, 22511},
{22512, 22513, 22768},
{22543, 23464, 21902},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
{
level = 30,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
{
level = 40,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
},
},
-- Evoker
[1467] = { -- Devastation
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5556,
5599,
}
},
{
level = 30,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5556,
5599,
}
},
{
level = 40,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5556,
5599,
}
},
},
},
[1468] = { -- Preservation
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5595,
5598,
}
},
{
level = 30,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5595,
5598,
}
},
{
level = 40,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5595,
5598,
}
},
},
},
}
elseif Internal.Is100005 then
specInfo = {
version = 7,
-- Warrior
[71] = { -- Arms
talents = {
{22624, 22360, 22371},
{19676, 22372, 22789},
{22380, 22489, 19138},
{15757, 22627, 22628},
{22392, 22391, 22362},
{22394, 22397, 22399},
{21204, 22407, 21667},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
{
level = 30,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
{
level = 40,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
},
},
[72] = { -- Fury
talents = {
{22632, 22633, 22491},
{19676, 22625, 23093},
{22379, 22381, 23372},
{23097, 22627, 22382},
{22383, 22393, 19140},
{22396, 22398, 22400},
{22405, 22402, 16037},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
{
level = 30,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
{
level = 40,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
},
},
[73] = { -- Protection
talents = {
{15760, 15759, 15774},
{19676, 22629, 22409},
{22378, 22626, 23260},
{23096, 22627, 22488},
{22384, 22631, 22800},
{22395, 22544, 22401},
{23455, 22406, 23099},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
{
level = 30,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
{
level = 40,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
},
},
-- Paladin
[65] = { -- Holy
talents = {
{17565, 17567, 17569},
{22176, 17575, 17577},
{22179, 22180, 21811},
{22433, 22434, 17593},
{17597, 17599, 17601},
{23191, 23680, 22484},
{21201, 21671, 23681},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 859, 3618,
5421, 5501, 5537,
5553,
}
},
{
level = 30,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 859, 3618,
5421, 5501, 5537,
5553,
}
},
{
level = 40,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 859, 3618,
5421, 5501, 5537,
5553,
}
},
},
},
[66] = { -- Protection
talents = {
{22428, 22558, 23469},
{22431, 22604, 23468},
{22179, 22180, 21811},
{22433, 22434, 22435},
{17597, 17599, 17601},
{22189, 22438, 23087},
{23457, 21202, 22645},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475, 5536,
5554,
}
},
{
level = 30,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475, 5536,
5554,
}
},
{
level = 40,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475, 5536,
5554,
}
},
},
},
[70] = { -- Retribution
talents = {
{22590, 22557, 23467},
{22319, 22592, 23466},
{22179, 22180, 21811},
{22433, 22434, 22183},
{17597, 17599, 17601},
{23167, 22483, 23086},
{23456, 22215, 22634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422, 5535,
}
},
{
level = 30,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422, 5535,
}
},
{
level = 40,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422, 5535,
}
},
},
},
-- Hunter
[253] = { -- Beast Mastery
talents = {
{22291, 22280, 22282},
{22500, 22266, 22290},
{19347, 19348, 23100},
{22441, 22347, 22269},
{22268, 22276, 22499},
{19357, 22002, 23044},
{22273, 21986, 22295},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3612, 3730,
5418, 5441, 5444,
5534,
}
},
{
level = 30,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3612, 3730,
5418, 5441, 5444,
5534,
}
},
{
level = 40,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3612, 3730,
5418, 5441, 5444,
5534,
}
},
},
},
[254] = { -- Marksmanship
talents = {
{22279, 22501, 22289},
{22495, 22497, 22498},
{19347, 19348, 23100},
{22267, 22286, 21998},
{22268, 22276, 23463},
{23063, 23104, 22287},
{22274, 22308, 22288},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
649, 651, 653,
658, 659, 660,
3614, 3729, 5419,
5440, 5442, 5531,
5533,
}
},
{
level = 30,
availableTalentIDs = {
649, 651, 653,
658, 659, 660,
3614, 3729, 5419,
5440, 5442, 5531,
5533,
}
},
{
level = 40,
availableTalentIDs = {
649, 651, 653,
658, 659, 660,
3614, 3729, 5419,
5440, 5442, 5531,
5533,
}
},
},
},
[255] = { -- Survival
talents = {
{22275, 22283, 22296},
{21997, 22769, 22297},
{19347, 19348, 23100},
{22277, 19361, 22299},
{22268, 22276, 22499},
{22300, 22278, 22271},
{22272, 22301, 23105},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3607, 3609, 3610,
5420, 5443, 5532,
}
},
{
level = 30,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3607, 3609, 3610,
5420, 5443, 5532,
}
},
{
level = 40,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3607, 3609, 3610,
5420, 5443, 5532,
}
},
},
},
-- Rogue
[259] = { -- Assassination
talents = {
{22337, 22338, 22339},
{22331, 22332, 23022},
{19239, 19240, 19241},
{22340, 22122, 22123},
{19245, 23037, 22115},
{22343, 23015, 22344},
{21186, 22133, 23174},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
{
level = 30,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
{
level = 40,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
},
},
[260] = { -- Outlaw
talents = {
{22118, 22119, 22120},
{23470, 19237, 19238},
{19239, 19240, 19241},
{22121, 22122, 22123},
{23077, 22114, 22115},
{21990, 23128, 19250},
{22125, 23075, 23175},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
{
level = 30,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
{
level = 40,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
},
},
[261] = { -- Subtlety
talents = {
{19233, 19234, 19235},
{22331, 22332, 22333},
{19239, 19240, 19241},
{22128, 22122, 22123},
{23078, 23036, 22115},
{22335, 19249, 22336},
{22132, 23183, 21188},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
{
level = 30,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
{
level = 40,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
},
},
-- Priest
[256] = { -- Discipline
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
5416, 5475, 5480,
5483, 5487, 5498,
}
},
{
level = 30,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
5416, 5475, 5480,
5483, 5487, 5498,
}
},
{
level = 40,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
5416, 5475, 5480,
5483, 5487, 5498,
}
},
},
},
[257] = { -- Holy
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
101, 108, 112,
115, 124, 127,
1927, 5365, 5366,
5476, 5478, 5479,
5482, 5485, 5499,
}
},
{
level = 30,
availableTalentIDs = {
101, 108, 112,
115, 124, 127,
1927, 5365, 5366,
5476, 5478, 5479,
5482, 5485, 5499,
}
},
{
level = 40,
availableTalentIDs = {
101, 108, 112,
115, 124, 127,
1927, 5365, 5366,
5476, 5478, 5479,
5482, 5485, 5499,
}
},
},
},
[258] = { -- Shadow
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
106, 113, 739,
763, 5381, 5447,
5474, 5477, 5481,
5484, 5486, 5500,
}
},
{
level = 30,
availableTalentIDs = {
106, 113, 739,
763, 5381, 5447,
5474, 5477, 5481,
5484, 5486, 5500,
}
},
{
level = 40,
availableTalentIDs = {
106, 113, 739,
763, 5381, 5447,
5474, 5477, 5481,
5484, 5486, 5500,
}
},
},
},
-- Death Knight
[250] = { -- Blood
talents = {
{19165, 19166, 23454},
{19218, 19219, 19220},
{19221, 22134, 22135},
{22013, 22014, 22015},
{19227, 19226, 19228},
{19230, 19231, 19232},
{21207, 21208, 21209},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5513,
}
},
{
level = 30,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5513,
}
},
{
level = 40,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5513,
}
},
},
},
[251] = { -- Frost
talents = {
{22016, 22017, 22018},
{22019, 22020, 22021},
{22515, 22517, 22519},
{22521, 22523, 22525},
{22527, 22530, 23373},
{22531, 22533, 22535},
{22023, 22109, 22537},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5424,
5429, 5435, 5510,
5512,
}
},
{
level = 30,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5424,
5429, 5435, 5510,
5512,
}
},
{
level = 40,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5424,
5429, 5435, 5510,
5512,
}
},
},
},
[252] = { -- Unholy
talents = {
{22024, 22025, 22026},
{22027, 22028, 22029},
{22516, 22518, 22520},
{22522, 22524, 22526},
{22528, 22529, 23373},
{22532, 22534, 22536},
{22030, 22110, 22538},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5430,
5436, 5511,
}
},
{
level = 30,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5430,
5436, 5511,
}
},
{
level = 40,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5430,
5436, 5511,
}
},
},
},
-- Shaman
[262] = { -- Elemental
talents = {
{22356, 22357, 22358},
{23108, 23460, 23190},
{23162, 23163, 23164},
{19271, 19272, 19273},
{22144, 22172, 21966},
{22145, 19266, 23111},
{21198, 22153, 21675},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
727, 728, 730,
3062, 3488, 3490,
3491, 3620, 3621,
5415, 5457, 5519,
}
},
{
level = 30,
availableTalentIDs = {
727, 728, 730,
3062, 3488, 3490,
3491, 3620, 3621,
5415, 5457, 5519,
}
},
{
level = 40,
availableTalentIDs = {
727, 728, 730,
3062, 3488, 3490,
3491, 3620, 3621,
5415, 5457, 5519,
}
},
},
},
[263] = { -- Enhancement
talents = {
{22354, 22355, 22353},
{22636, 23462, 23109},
{23165, 19260, 23166},
{23089, 23090, 22171},
{22144, 22149, 21966},
{21973, 22352, 22351},
{21970, 22977, 21972},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
5518, 5527,
}
},
{
level = 30,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
5518, 5527,
}
},
{
level = 40,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
5518, 5527,
}
},
},
},
[264] = { -- Restoration
talents = {
{19262, 19263, 19264},
{19259, 23461, 21963},
{19275, 23110, 22127},
{22152, 22322, 22323},
{22144, 19269, 21966},
{19265, 21971, 21968},
{21969, 21199, 22359},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
707, 708, 712,
714, 715, 1930,
3520, 3755, 5388,
5437, 5458, 5528,
}
},
{
level = 30,
availableTalentIDs = {
707, 708, 712,
714, 715, 1930,
3520, 3755, 5388,
5437, 5458, 5528,
}
},
{
level = 40,
availableTalentIDs = {
707, 708, 712,
714, 715, 1930,
3520, 3755, 5388,
5437, 5458, 5528,
}
},
},
},
-- Mage
[62] = { -- Arcane
talents = {
{22458, 22461, 22464},
{23072, 22443, 16025},
{22444, 22445, 22447},
{22453, 22467, 22470},
{22907, 22448, 22471},
{22455, 22449, 22474},
{21630, 21144, 21145},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
61, 635, 637,
3442, 3517, 3529,
3531, 5397, 5488,
5491, 5492,
}
},
{
level = 30,
availableTalentIDs = {
61, 635, 637,
3442, 3517, 3529,
3531, 5397, 5488,
5491, 5492,
}
},
{
level = 40,
availableTalentIDs = {
61, 635, 637,
3442, 3517, 3529,
3531, 5397, 5488,
5491, 5492,
}
},
},
},
[63] = { -- Fire
talents = {
{22456, 22459, 22462},
{23071, 22443, 23074},
{22444, 22445, 22447},
{22450, 22465, 22468},
{22904, 22448, 22471},
{22451, 23362, 22472},
{21631, 22220, 21633},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
53, 644, 646,
647, 648, 828,
5389, 5489, 5493,
5495,
}
},
{
level = 30,
availableTalentIDs = {
53, 644, 646,
647, 648, 828,
5389, 5489, 5493,
5495,
}
},
{
level = 40,
availableTalentIDs = {
53, 644, 646,
647, 648, 828,
5389, 5489, 5493,
5495,
}
},
},
},
[64] = { -- Frost
talents = {
{22457, 22460, 22463},
{22442, 22443, 23073},
{22444, 22445, 22447},
{22452, 22466, 22469},
{22446, 22448, 22471},
{22454, 23176, 22473},
{21632, 22309, 21634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
66, 632, 634,
3443, 3532, 5390,
5490, 5494, 5496,
5497,
}
},
{
level = 30,
availableTalentIDs = {
66, 632, 634,
3443, 3532, 5390,
5490, 5494, 5496,
5497,
}
},
{
level = 40,
availableTalentIDs = {
66, 632, 634,
3443, 3532, 5390,
5490, 5494, 5496,
5497,
}
},
},
},
-- Warlock
[265] = { -- Affliction
talents = {
{22039, 23140, 23141},
{22044, 21180, 22089},
{19280, 19285, 19286},
{19279, 19292, 22046},
{22047, 19291, 23465},
{23139, 23159, 19295},
{19284, 19281, 19293},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 5379,
5386, 5392, 5506,
5543, 5546,
}
},
{
level = 30,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 5379,
5386, 5392, 5506,
5543, 5546,
}
},
{
level = 40,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 5379,
5386, 5392, 5506,
5543, 5546,
}
},
},
},
[266] = { -- Demonology
talents = {
{19290, 22048, 23138},
{22045, 21694, 23158},
{19280, 19285, 19286},
{22477, 22042, 23160},
{22047, 19291, 23465},
{23147, 23146, 21717},
{23161, 22479, 23091},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3624, 3625,
3626, 5394, 5400,
5505, 5545,
}
},
{
level = 30,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3624, 3625,
3626, 5394, 5400,
5505, 5545,
}
},
{
level = 40,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3624, 3625,
3626, 5394, 5400,
5505, 5545,
}
},
},
},
[267] = { -- Destruction
talents = {
{22038, 22090, 22040},
{23148, 21695, 23157},
{19280, 19285, 19286},
{22480, 22043, 23143},
{22047, 19291, 23465},
{23155, 23156, 19295},
{19284, 23144, 23092},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
157, 159, 164,
3502, 3508, 3509,
3510, 5382, 5393,
5401, 5507, 5544,
}
},
{
level = 30,
availableTalentIDs = {
157, 159, 164,
3502, 3508, 3509,
3510, 5382, 5393,
5401, 5507, 5544,
}
},
{
level = 40,
availableTalentIDs = {
157, 159, 164,
3502, 3508, 3509,
3510, 5382, 5393,
5401, 5507, 5544,
}
},
},
},
-- Monk
[268] = { -- Brewmaster
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22099, 22097, 19992},
{19993, 19994, 19995},
{20174, 23363, 20175},
{19819, 20184, 22103},
{22106, 22104, 22108},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
5538, 5541, 5542,
5552,
}
},
{
level = 30,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
5538, 5541, 5542,
5552,
}
},
{
level = 40,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
5538, 5541, 5542,
5552,
}
},
},
},
[270] = { -- Mistweaver
talents = {
{19823, 19820, 20185},
{19304, 19818, 19302},
{22168, 22167, 22166},
{19993, 22219, 19995},
{23371, 20173, 20175},
{23107, 22101, 0},
{22218, 22169, 22170},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402, 5508,
5539, 5551,
}
},
{
level = 30,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402, 5508,
5539, 5551,
}
},
{
level = 40,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402, 5508,
5539, 5551,
}
},
},
},
[269] = { -- Windwalker
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22098, 19771, 22096},
{19993, 23364, 19995},
{23258, 20173, 20175},
{22093, 23122, 22102},
{22107, 22105, 21191},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540,
}
},
{
level = 30,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540,
}
},
{
level = 40,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540,
}
},
},
},
-- Druid
[102] = { -- Balance
talents = {
{22385, 22386, 22387},
{19283, 18570, 18571},
{22155, 22157, 22159},
{21778, 18576, 18577},
{18580, 21706, 21702},
{22389, 21712, 22165},
{21648, 21193, 21655},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5503, 5515, 5526,
}
},
{
level = 30,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5503, 5515, 5526,
}
},
{
level = 40,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5503, 5515, 5526,
}
},
},
},
[103] = { -- Feral
talents = {
{22363, 22364, 22365},
{19283, 18570, 18571},
{22163, 22158, 22159},
{21778, 18576, 18577},
{21708, 18579, 21704},
{21714, 21711, 22370},
{21646, 21649, 21653},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5525,
}
},
{
level = 30,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5525,
}
},
{
level = 40,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5525,
}
},
},
},
[104] = { -- Guardian
talents = {
{22419, 22418, 22420},
{19283, 18570, 18571},
{22163, 22156, 22159},
{21778, 18576, 18577},
{21709, 21707, 22388},
{22423, 21713, 22390},
{22426, 22427, 22425},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410, 5524,
}
},
{
level = 30,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410, 5524,
}
},
{
level = 40,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410, 5524,
}
},
},
},
[105] = { -- Restoration
talents = {
{18569, 18574, 18572},
{19283, 18570, 18571},
{22366, 22367, 22160},
{21778, 18576, 18577},
{21710, 21705, 22421},
{21716, 18585, 22422},
{22403, 21651, 22404},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5504, 5514,
}
},
{
level = 30,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5504, 5514,
}
},
{
level = 40,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5504, 5514,
}
},
},
},
-- Demon Hunter
[577] = { -- Havoc
talents = {
{21854, 22493, 22416},
{21857, 22765, 22799},
{22909, 22494, 21862},
{21863, 21864, 21865},
{21866, 21867, 21868},
{21869, 21870, 22767},
{21900, 21901, 22547},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
805, 806, 809,
811, 812, 813,
1206, 1218, 5433,
5523,
}
},
{
level = 30,
availableTalentIDs = {
805, 806, 809,
811, 812, 813,
1206, 1218, 5433,
5523,
}
},
{
level = 40,
availableTalentIDs = {
805, 806, 809,
811, 812, 813,
1206, 1218, 5433,
5523,
}
},
},
},
[581] = { -- Vengeance
talents = {
{22502, 22503, 22504},
{22505, 22766, 22507},
{22324, 22541, 22540},
{22508, 22509, 22770},
{22546, 22510, 22511},
{22512, 22513, 22768},
{22543, 23464, 21902},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
{
level = 30,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
{
level = 40,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
},
},
-- Evoker
[1467] = { -- Devastation
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5509,
}
},
{
level = 30,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5509,
}
},
{
level = 40,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5509,
}
},
},
},
[1468] = { -- Preservation
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5502,
}
},
{
level = 30,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5502,
}
},
{
level = 40,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5502,
}
},
},
},
}
elseif Internal.IsDragonflightPatch then
specInfo = {
version = 6,
-- Warrior
[71] = { -- Arms
talents = {
{22624, 22360, 22371},
{19676, 22372, 22789},
{22380, 22489, 19138},
{15757, 22627, 22628},
{22392, 22391, 22362},
{22394, 22397, 22399},
{21204, 22407, 21667},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
{
level = 30,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
{
level = 40,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376, 5547,
}
},
},
},
[72] = { -- Fury
talents = {
{22632, 22633, 22491},
{19676, 22625, 23093},
{22379, 22381, 23372},
{23097, 22627, 22382},
{22383, 22393, 19140},
{22396, 22398, 22400},
{22405, 22402, 16037},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
{
level = 30,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
{
level = 40,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431, 5548,
}
},
},
},
[73] = { -- Protection
talents = {
{15760, 15759, 15774},
{19676, 22629, 22409},
{22378, 22626, 23260},
{23096, 22627, 22488},
{22384, 22631, 22800},
{22395, 22544, 22401},
{23455, 22406, 23099},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
{
level = 30,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
{
level = 40,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
},
},
-- Paladin
[65] = { -- Holy
talents = {
{17565, 17567, 17569},
{22176, 17575, 17577},
{22179, 22180, 21811},
{22433, 22434, 17593},
{17597, 17599, 17601},
{23191, 23680, 22484},
{21201, 21671, 23681},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 859, 3618,
5421, 5501, 5537,
5553,
}
},
{
level = 30,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 859, 3618,
5421, 5501, 5537,
5553,
}
},
{
level = 40,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 859, 3618,
5421, 5501, 5537,
5553,
}
},
},
},
[66] = { -- Protection
talents = {
{22428, 22558, 23469},
{22431, 22604, 23468},
{22179, 22180, 21811},
{22433, 22434, 22435},
{17597, 17599, 17601},
{22189, 22438, 23087},
{23457, 21202, 22645},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475, 5536,
5554,
}
},
{
level = 30,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475, 5536,
5554,
}
},
{
level = 40,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475, 5536,
5554,
}
},
},
},
[70] = { -- Retribution
talents = {
{22590, 22557, 23467},
{22319, 22592, 23466},
{22179, 22180, 21811},
{22433, 22434, 22183},
{17597, 17599, 17601},
{23167, 22483, 23086},
{23456, 22215, 22634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422, 5535,
}
},
{
level = 30,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422, 5535,
}
},
{
level = 40,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422, 5535,
}
},
},
},
-- Hunter
[253] = { -- Beast Mastery
talents = {
{22291, 22280, 22282},
{22500, 22266, 22290},
{19347, 19348, 23100},
{22441, 22347, 22269},
{22268, 22276, 22499},
{19357, 22002, 23044},
{22273, 21986, 22295},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3612, 3730,
5418, 5441, 5444,
5534,
}
},
{
level = 30,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3612, 3730,
5418, 5441, 5444,
5534,
}
},
{
level = 40,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3612, 3730,
5418, 5441, 5444,
5534,
}
},
},
},
[254] = { -- Marksmanship
talents = {
{22279, 22501, 22289},
{22495, 22497, 22498},
{19347, 19348, 23100},
{22267, 22286, 21998},
{22268, 22276, 23463},
{23063, 23104, 22287},
{22274, 22308, 22288},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
649, 651, 653,
658, 659, 660,
3614, 3729, 5419,
5440, 5442, 5531,
5533,
}
},
{
level = 30,
availableTalentIDs = {
649, 651, 653,
658, 659, 660,
3614, 3729, 5419,
5440, 5442, 5531,
5533,
}
},
{
level = 40,
availableTalentIDs = {
649, 651, 653,
658, 659, 660,
3614, 3729, 5419,
5440, 5442, 5531,
5533,
}
},
},
},
[255] = { -- Survival
talents = {
{22275, 22283, 22296},
{21997, 22769, 22297},
{19347, 19348, 23100},
{22277, 19361, 22299},
{22268, 22276, 22499},
{22300, 22278, 22271},
{22272, 22301, 23105},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3607, 3609, 3610,
5420, 5443, 5532,
}
},
{
level = 30,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3607, 3609, 3610,
5420, 5443, 5532,
}
},
{
level = 40,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3607, 3609, 3610,
5420, 5443, 5532,
}
},
},
},
-- Rogue
[259] = { -- Assassination
talents = {
{22337, 22338, 22339},
{22331, 22332, 23022},
{19239, 19240, 19241},
{22340, 22122, 22123},
{19245, 23037, 22115},
{22343, 23015, 22344},
{21186, 22133, 23174},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
{
level = 30,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
{
level = 40,
availableTalentIDs = {
141, 147, 830,
3448, 3479, 3480,
5405, 5408, 5517,
5530, 5550,
}
},
},
},
[260] = { -- Outlaw
talents = {
{22118, 22119, 22120},
{23470, 19237, 19238},
{19239, 19240, 19241},
{22121, 22122, 22123},
{23077, 22114, 22115},
{21990, 23128, 19250},
{22125, 23075, 23175},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
{
level = 30,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
{
level = 40,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5516,
5549,
}
},
},
},
[261] = { -- Subtlety
talents = {
{19233, 19234, 19235},
{22331, 22332, 22333},
{19239, 19240, 19241},
{22128, 22122, 22123},
{23078, 23036, 22115},
{22335, 19249, 22336},
{22132, 23183, 21188},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
{
level = 30,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
{
level = 40,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411, 5529,
}
},
},
},
-- Priest
[256] = { -- Discipline
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
1244, 5416, 5475,
5480, 5483, 5487,
5498,
}
},
{
level = 30,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
1244, 5416, 5475,
5480, 5483, 5487,
5498,
}
},
{
level = 40,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
1244, 5416, 5475,
5480, 5483, 5487,
5498,
}
},
},
},
[257] = { -- Holy
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
101, 108, 112,
115, 124, 127,
1927, 5365, 5366,
5476, 5478, 5479,
5482, 5485, 5499,
}
},
{
level = 30,
availableTalentIDs = {
101, 108, 112,
115, 124, 127,
1927, 5365, 5366,
5476, 5478, 5479,
5482, 5485, 5499,
}
},
{
level = 40,
availableTalentIDs = {
101, 108, 112,
115, 124, 127,
1927, 5365, 5366,
5476, 5478, 5479,
5482, 5485, 5499,
}
},
},
},
[258] = { -- Shadow
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
106, 113, 739,
763, 5381, 5447,
5474, 5477, 5481,
5484, 5486, 5500,
}
},
{
level = 30,
availableTalentIDs = {
106, 113, 739,
763, 5381, 5447,
5474, 5477, 5481,
5484, 5486, 5500,
}
},
{
level = 40,
availableTalentIDs = {
106, 113, 739,
763, 5381, 5447,
5474, 5477, 5481,
5484, 5486, 5500,
}
},
},
},
-- Death Knight
[250] = { -- Blood
talents = {
{19165, 19166, 23454},
{19218, 19219, 19220},
{19221, 22134, 22135},
{22013, 22014, 22015},
{19227, 19226, 19228},
{19230, 19231, 19232},
{21207, 21208, 21209},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5513,
}
},
{
level = 30,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5513,
}
},
{
level = 40,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5513,
}
},
},
},
[251] = { -- Frost
talents = {
{22016, 22017, 22018},
{22019, 22020, 22021},
{22515, 22517, 22519},
{22521, 22523, 22525},
{22527, 22530, 23373},
{22531, 22533, 22535},
{22023, 22109, 22537},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5424,
5429, 5435, 5510,
5512,
}
},
{
level = 30,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5424,
5429, 5435, 5510,
5512,
}
},
{
level = 40,
availableTalentIDs = {
701, 702, 3439,
3512, 3743, 5424,
5429, 5435, 5510,
5512,
}
},
},
},
[252] = { -- Unholy
talents = {
{22024, 22025, 22026},
{22027, 22028, 22029},
{22516, 22518, 22520},
{22522, 22524, 22526},
{22528, 22529, 23373},
{22532, 22534, 22536},
{22030, 22110, 22538},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5430,
5436, 5511,
}
},
{
level = 30,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5430,
5436, 5511,
}
},
{
level = 40,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5430,
5436, 5511,
}
},
},
},
-- Shaman
[262] = { -- Elemental
talents = {
{22356, 22357, 22358},
{23108, 23460, 23190},
{23162, 23163, 23164},
{19271, 19272, 19273},
{22144, 22172, 21966},
{22145, 19266, 23111},
{21198, 22153, 21675},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
727, 728, 730,
3062, 3488, 3490,
3491, 3620, 3621,
5415, 5457, 5519,
}
},
{
level = 30,
availableTalentIDs = {
727, 728, 730,
3062, 3488, 3490,
3491, 3620, 3621,
5415, 5457, 5519,
}
},
{
level = 40,
availableTalentIDs = {
727, 728, 730,
3062, 3488, 3490,
3491, 3620, 3621,
5415, 5457, 5519,
}
},
},
},
[263] = { -- Enhancement
talents = {
{22354, 22355, 22353},
{22636, 23462, 23109},
{23165, 19260, 23166},
{23089, 23090, 22171},
{22144, 22149, 21966},
{21973, 22352, 22351},
{21970, 22977, 21972},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
5518, 5527,
}
},
{
level = 30,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
5518, 5527,
}
},
{
level = 40,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
5518, 5527,
}
},
},
},
[264] = { -- Restoration
talents = {
{19262, 19263, 19264},
{19259, 23461, 21963},
{19275, 23110, 22127},
{22152, 22322, 22323},
{22144, 19269, 21966},
{19265, 21971, 21968},
{21969, 21199, 22359},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
707, 708, 712,
714, 715, 1930,
3520, 3755, 3756,
5388, 5437, 5458,
5528,
}
},
{
level = 30,
availableTalentIDs = {
707, 708, 712,
714, 715, 1930,
3520, 3755, 3756,
5388, 5437, 5458,
5528,
}
},
{
level = 40,
availableTalentIDs = {
707, 708, 712,
714, 715, 1930,
3520, 3755, 3756,
5388, 5437, 5458,
5528,
}
},
},
},
-- Mage
[62] = { -- Arcane
talents = {
{22458, 22461, 22464},
{23072, 22443, 16025},
{22444, 22445, 22447},
{22453, 22467, 22470},
{22907, 22448, 22471},
{22455, 22449, 22474},
{21630, 21144, 21145},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
61, 635, 637,
3442, 3517, 3529,
3531, 5397, 5488,
5491, 5492,
}
},
{
level = 30,
availableTalentIDs = {
61, 635, 637,
3442, 3517, 3529,
3531, 5397, 5488,
5491, 5492,
}
},
{
level = 40,
availableTalentIDs = {
61, 635, 637,
3442, 3517, 3529,
3531, 5397, 5488,
5491, 5492,
}
},
},
},
[63] = { -- Fire
talents = {
{22456, 22459, 22462},
{23071, 22443, 23074},
{22444, 22445, 22447},
{22450, 22465, 22468},
{22904, 22448, 22471},
{22451, 23362, 22472},
{21631, 22220, 21633},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
53, 644, 646,
647, 648, 828,
5389, 5489, 5493,
5495,
}
},
{
level = 30,
availableTalentIDs = {
53, 644, 646,
647, 648, 828,
5389, 5489, 5493,
5495,
}
},
{
level = 40,
availableTalentIDs = {
53, 644, 646,
647, 648, 828,
5389, 5489, 5493,
5495,
}
},
},
},
[64] = { -- Frost
talents = {
{22457, 22460, 22463},
{22442, 22443, 23073},
{22444, 22445, 22447},
{22452, 22466, 22469},
{22446, 22448, 22471},
{22454, 23176, 22473},
{21632, 22309, 21634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
66, 632, 634,
3443, 3532, 5390,
5490, 5494, 5496,
5497,
}
},
{
level = 30,
availableTalentIDs = {
66, 632, 634,
3443, 3532, 5390,
5490, 5494, 5496,
5497,
}
},
{
level = 40,
availableTalentIDs = {
66, 632, 634,
3443, 3532, 5390,
5490, 5494, 5496,
5497,
}
},
},
},
-- Warlock
[265] = { -- Affliction
talents = {
{22039, 23140, 23141},
{22044, 21180, 22089},
{19280, 19285, 19286},
{19279, 19292, 22046},
{22047, 19291, 23465},
{23139, 23159, 19295},
{19284, 19281, 19293},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 5379,
5386, 5392, 5506,
5543, 5546,
}
},
{
level = 30,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 5379,
5386, 5392, 5506,
5543, 5546,
}
},
{
level = 40,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 5379,
5386, 5392, 5506,
5543, 5546,
}
},
},
},
[266] = { -- Demonology
talents = {
{19290, 22048, 23138},
{22045, 21694, 23158},
{19280, 19285, 19286},
{22477, 22042, 23160},
{22047, 19291, 23465},
{23147, 23146, 21717},
{23161, 22479, 23091},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3624, 3625,
3626, 5394, 5400,
5505, 5545,
}
},
{
level = 30,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3624, 3625,
3626, 5394, 5400,
5505, 5545,
}
},
{
level = 40,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3624, 3625,
3626, 5394, 5400,
5505, 5545,
}
},
},
},
[267] = { -- Destruction
talents = {
{22038, 22090, 22040},
{23148, 21695, 23157},
{19280, 19285, 19286},
{22480, 22043, 23143},
{22047, 19291, 23465},
{23155, 23156, 19295},
{19284, 23144, 23092},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
157, 159, 164,
3502, 3508, 3509,
3510, 5382, 5393,
5401, 5507, 5544,
}
},
{
level = 30,
availableTalentIDs = {
157, 159, 164,
3502, 3508, 3509,
3510, 5382, 5393,
5401, 5507, 5544,
}
},
{
level = 40,
availableTalentIDs = {
157, 159, 164,
3502, 3508, 3509,
3510, 5382, 5393,
5401, 5507, 5544,
}
},
},
},
-- Monk
[268] = { -- Brewmaster
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22099, 22097, 19992},
{19993, 19994, 19995},
{20174, 23363, 20175},
{19819, 20184, 22103},
{22106, 22104, 22108},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
5538, 5541, 5542,
5552,
}
},
{
level = 30,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
5538, 5541, 5542,
5552,
}
},
{
level = 40,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
5538, 5541, 5542,
5552,
}
},
},
},
[270] = { -- Mistweaver
talents = {
{19823, 19820, 20185},
{19304, 19818, 19302},
{22168, 22167, 22166},
{19993, 22219, 19995},
{23371, 20173, 20175},
{23107, 22101, 0},
{22218, 22169, 22170},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402, 5508,
5539, 5551,
}
},
{
level = 30,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402, 5508,
5539, 5551,
}
},
{
level = 40,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402, 5508,
5539, 5551,
}
},
},
},
[269] = { -- Windwalker
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22098, 19771, 22096},
{19993, 23364, 19995},
{23258, 20173, 20175},
{22093, 23122, 22102},
{22107, 22105, 21191},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540,
}
},
{
level = 30,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540,
}
},
{
level = 40,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448, 5540,
}
},
},
},
-- Druid
[102] = { -- Balance
talents = {
{22385, 22386, 22387},
{19283, 18570, 18571},
{22155, 22157, 22159},
{21778, 18576, 18577},
{18580, 21706, 21702},
{22389, 21712, 22165},
{21648, 21193, 21655},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5503, 5515, 5526,
}
},
{
level = 30,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5503, 5515, 5526,
}
},
{
level = 40,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
5503, 5515, 5526,
}
},
},
},
[103] = { -- Feral
talents = {
{22363, 22364, 22365},
{19283, 18570, 18571},
{22163, 22158, 22159},
{21778, 18576, 18577},
{21708, 18579, 21704},
{21714, 21711, 22370},
{21646, 21649, 21653},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5525,
}
},
{
level = 30,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5525,
}
},
{
level = 40,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384, 5525,
}
},
},
},
[104] = { -- Guardian
talents = {
{22419, 22418, 22420},
{19283, 18570, 18571},
{22163, 22156, 22159},
{21778, 18576, 18577},
{21709, 21707, 22388},
{22423, 21713, 22390},
{22426, 22427, 22425},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410, 5524,
}
},
{
level = 30,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410, 5524,
}
},
{
level = 40,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410, 5524,
}
},
},
},
[105] = { -- Restoration
talents = {
{18569, 18574, 18572},
{19283, 18570, 18571},
{22366, 22367, 22160},
{21778, 18576, 18577},
{21710, 21705, 22421},
{21716, 18585, 22422},
{22403, 21651, 22404},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5504, 5514,
}
},
{
level = 30,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5504, 5514,
}
},
{
level = 40,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
5387, 5504, 5514,
}
},
},
},
-- Demon Hunter
[577] = { -- Havoc
talents = {
{21854, 22493, 22416},
{21857, 22765, 22799},
{22909, 22494, 21862},
{21863, 21864, 21865},
{21866, 21867, 21868},
{21869, 21870, 22767},
{21900, 21901, 22547},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
805, 806, 809,
810, 811, 812,
813, 1204, 1206,
1218, 5433, 5523,
}
},
{
level = 30,
availableTalentIDs = {
805, 806, 809,
810, 811, 812,
813, 1204, 1206,
1218, 5433, 5523,
}
},
{
level = 40,
availableTalentIDs = {
805, 806, 809,
810, 811, 812,
813, 1204, 1206,
1218, 5433, 5523,
}
},
},
},
[581] = { -- Vengeance
talents = {
{22502, 22503, 22504},
{22505, 22766, 22507},
{22324, 22541, 22540},
{22508, 22509, 22770},
{22546, 22510, 22511},
{22512, 22513, 22768},
{22543, 23464, 21902},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
{
level = 30,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
{
level = 40,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
5520, 5521, 5522,
}
},
},
},
-- Evoker
[1467] = { -- Devastation
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5473,
5509,
}
},
{
level = 30,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5473,
5509,
}
},
{
level = 40,
availableTalentIDs = {
5456, 5460, 5462,
5464, 5466, 5467,
5469, 5471, 5473,
5509,
}
},
},
},
[1468] = { -- Preservation
talents = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5472,
5502,
}
},
{
level = 30,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5472,
5502,
}
},
{
level = 40,
availableTalentIDs = {
5454, 5455, 5459,
5461, 5463, 5465,
5468, 5470, 5472,
5502,
}
},
},
},
}
else
specInfo = {
version = 4,
-- Warrior
[71] = { -- Arms
talents = {
{22624, 22360, 22371},
{19676, 22372, 22789},
{22380, 22489, 19138},
{15757, 22627, 22628},
{22392, 22391, 22362},
{22394, 22397, 22399},
{21204, 22407, 21667},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376,
}
},
{
level = 30,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376,
}
},
{
level = 40,
availableTalentIDs = {
28, 29, 31,
32, 33, 34,
3522, 3534, 5372,
5376,
}
},
},
},
[72] = { -- Fury
talents = {
{22632, 22633, 22491},
{19676, 22625, 23093},
{22379, 22381, 23372},
{23097, 22627, 22382},
{22383, 22393, 19140},
{22396, 22398, 22400},
{22405, 22402, 16037},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431,
}
},
{
level = 30,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431,
}
},
{
level = 40,
availableTalentIDs = {
25, 166, 170,
172, 177, 179,
3528, 3533, 3735,
5373, 5431,
}
},
},
},
[73] = { -- Protection
talents = {
{15760, 15759, 15774},
{19676, 22629, 22409},
{22378, 22626, 23260},
{23096, 22627, 22488},
{22384, 22631, 22800},
{22395, 22544, 22401},
{23455, 22406, 23099},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
{
level = 30,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
{
level = 40,
availableTalentIDs = {
24, 167, 168,
171, 173, 175,
178, 831, 833,
845, 5374, 5432,
}
},
},
},
-- Paladin
[65] = { -- Holy
talents = {
{17565, 17567, 17569},
{22176, 17575, 17577},
{22179, 22180, 21811},
{22433, 22434, 17593},
{17597, 17599, 17601},
{23191, 22190, 22484},
{21201, 21671, 21203},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 689, 859,
3618, 5421,
}
},
{
level = 30,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 689, 859,
3618, 5421,
}
},
{
level = 40,
availableTalentIDs = {
82, 85, 86,
87, 88, 640,
642, 689, 859,
3618, 5421,
}
},
},
},
[66] = { -- Protection
talents = {
{22428, 22558, 23469},
{22431, 22604, 23468},
{22179, 22180, 21811},
{22433, 22434, 22435},
{17597, 17599, 17601},
{22189, 22438, 23087},
{23457, 21202, 22645},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475,
}
},
{
level = 30,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475,
}
},
{
level = 40,
availableTalentIDs = {
90, 91, 92,
93, 94, 97,
844, 860, 861,
3474, 3475,
}
},
},
},
[70] = { -- Retribution
talents = {
{22590, 22557, 23467},
{22319, 22592, 23466},
{22179, 22180, 21811},
{22433, 22434, 22183},
{17597, 17599, 17601},
{23167, 22483, 23086},
{23456, 22215, 22634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422,
}
},
{
level = 30,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422,
}
},
{
level = 40,
availableTalentIDs = {
81, 641, 751,
752, 753, 754,
755, 756, 757,
858, 5422,
}
},
},
},
-- Hunter
[253] = { -- Beast Mastery
talents = {
{22291, 22280, 22282},
{22500, 22266, 22290},
{19347, 19348, 23100},
{22441, 22347, 22269},
{22268, 22276, 22499},
{19357, 22002, 23044},
{22273, 21986, 22295},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3605, 3612,
3730, 5418, 5441,
5444,
}
},
{
level = 30,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3605, 3612,
3730, 5418, 5441,
5444,
}
},
{
level = 40,
availableTalentIDs = {
693, 824, 825,
1214, 3599, 3600,
3604, 3605, 3612,
3730, 5418, 5441,
5444,
}
},
},
},
[254] = { -- Marksmanship
talents = {
{22279, 22501, 22289},
{22495, 22497, 22498},
{19347, 19348, 23100},
{22267, 22286, 21998},
{22268, 22276, 23463},
{23063, 23104, 22287},
{22274, 22308, 22288},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
649, 651, 653,
656, 657, 658,
659, 660, 3614,
3729, 5419, 5440,
5442,
}
},
{
level = 30,
availableTalentIDs = {
649, 651, 653,
656, 657, 658,
659, 660, 3614,
3729, 5419, 5440,
5442,
}
},
{
level = 40,
availableTalentIDs = {
649, 651, 653,
656, 657, 658,
659, 660, 3614,
3729, 5419, 5440,
5442,
}
},
},
},
[255] = { -- Survival
talents = {
{22275, 22283, 22296},
{21997, 22769, 22297},
{19347, 19348, 23100},
{22277, 19361, 22299},
{22268, 22276, 22499},
{22300, 22278, 22271},
{22272, 22301, 23105},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3606, 3607, 3609,
3610, 5420, 5443,
}
},
{
level = 30,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3606, 3607, 3609,
3610, 5420, 5443,
}
},
{
level = 40,
availableTalentIDs = {
661, 662, 663,
664, 665, 686,
3606, 3607, 3609,
3610, 5420, 5443,
}
},
},
},
-- Rogue
[259] = { -- Assassination
talents = {
{22337, 22338, 22339},
{22331, 22332, 23022},
{19239, 19240, 19241},
{22340, 22122, 22123},
{19245, 23037, 22115},
{22343, 23015, 22344},
{21186, 22133, 23174},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
130, 141, 144,
147, 830, 3448,
3479, 3480, 5405,
5408,
}
},
{
level = 30,
availableTalentIDs = {
130, 141, 144,
147, 830, 3448,
3479, 3480, 5405,
5408,
}
},
{
level = 40,
availableTalentIDs = {
130, 141, 144,
147, 830, 3448,
3479, 3480, 5405,
5408,
}
},
},
},
[260] = { -- Outlaw
talents = {
{22118, 22119, 22120},
{23470, 19237, 19238},
{19239, 19240, 19241},
{22121, 22122, 22123},
{23077, 22114, 22115},
{21990, 23128, 19250},
{22125, 23075, 23175},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5413,
}
},
{
level = 30,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5413,
}
},
{
level = 40,
availableTalentIDs = {
129, 135, 138,
139, 145, 853,
1208, 3421, 3483,
3619, 5412, 5413,
}
},
},
},
[261] = { -- Subtlety
talents = {
{19233, 19234, 19235},
{22331, 22332, 22333},
{19239, 19240, 19241},
{22128, 22122, 22123},
{23078, 23036, 22115},
{22335, 19249, 22336},
{22132, 23183, 21188},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411,
}
},
{
level = 30,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411,
}
},
{
level = 40,
availableTalentIDs = {
136, 146, 153,
846, 856, 1209,
3447, 3462, 5406,
5409, 5411,
}
},
},
},
-- Priest
[256] = { -- Discipline
talents = {
{19752, 22313, 22329},
{22315, 22316, 19758},
{22440, 22094, 19755},
{19759, 19769, 19761},
{22330, 19765, 19766},
{22161, 19760, 19763},
{21183, 21184, 22976},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
1244, 5403, 5416,
}
},
{
level = 30,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
1244, 5403, 5416,
}
},
{
level = 40,
availableTalentIDs = {
98, 100, 109,
111, 114, 117,
123, 126, 855,
1244, 5403, 5416,
}
},
},
},
[257] = { -- Holy
talents = {
{22312, 19753, 19754},
{22325, 22326, 19758},
{22487, 22095, 22562},
{21750, 21977, 19761},
{19764, 22327, 21754},
{19767, 19760, 19763},
{21636, 21644, 23145},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
101, 108, 112,
115, 118, 124,
127, 1242, 1927,
5365, 5366, 5404,
}
},
{
level = 30,
availableTalentIDs = {
101, 108, 112,
115, 118, 124,
127, 1242, 1927,
5365, 5366, 5404,
}
},
{
level = 40,
availableTalentIDs = {
101, 108, 112,
115, 118, 124,
127, 1242, 1927,
5365, 5366, 5404,
}
},
},
},
[258] = { -- Shadow
talents = {
{22328, 22136, 22314},
{22315, 23374, 21976},
{23125, 23126, 23127},
{23137, 23375, 21752},
{22310, 22311, 21755},
{21718, 21719, 21720},
{21637, 21978, 21979},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
102, 106, 113,
128, 739, 763,
3753, 5380, 5381,
5446, 5447,
}
},
{
level = 30,
availableTalentIDs = {
102, 106, 113,
128, 739, 763,
3753, 5380, 5381,
5446, 5447,
}
},
{
level = 40,
availableTalentIDs = {
102, 106, 113,
128, 739, 763,
3753, 5380, 5381,
5446, 5447,
}
},
},
},
-- Death Knight
[250] = { -- Blood
talents = {
{19165, 19166, 23454},
{19218, 19219, 19220},
{19221, 22134, 22135},
{22013, 22014, 22015},
{19227, 19226, 19228},
{19230, 19231, 19232},
{21207, 21208, 21209},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5426,
}
},
{
level = 30,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5426,
}
},
{
level = 40,
availableTalentIDs = {
204, 205, 206,
607, 608, 609,
841, 3441, 3511,
5425, 5426,
}
},
},
},
[251] = { -- Frost
talents = {
{22016, 22017, 22018},
{22019, 22020, 22021},
{22515, 22517, 22519},
{22521, 22523, 22525},
{22527, 22530, 23373},
{22531, 22533, 22535},
{22023, 22109, 22537},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
701, 702, 706,
3439, 3512, 3743,
5424, 5427, 5429,
5435,
}
},
{
level = 30,
availableTalentIDs = {
701, 702, 706,
3439, 3512, 3743,
5424, 5427, 5429,
5435,
}
},
{
level = 40,
availableTalentIDs = {
701, 702, 706,
3439, 3512, 3743,
5424, 5427, 5429,
5435,
}
},
},
},
[252] = { -- Unholy
talents = {
{22024, 22025, 22026},
{22027, 22028, 22029},
{22516, 22518, 22520},
{22522, 22524, 22526},
{22528, 22529, 23373},
{22532, 22534, 22536},
{22030, 22110, 22538},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5428,
5430, 5436,
}
},
{
level = 30,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5428,
5430, 5436,
}
},
{
level = 40,
availableTalentIDs = {
40, 41, 149,
152, 3437, 3746,
3747, 5423, 5428,
5430, 5436,
}
},
},
},
-- Shaman
[262] = { -- Elemental
talents = {
{22356, 22357, 22358},
{23108, 23460, 23190},
{23162, 23163, 23164},
{19271, 19272, 19273},
{22144, 22172, 21966},
{22145, 19266, 23111},
{21198, 22153, 21675},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
727, 728, 730,
731, 3062, 3488,
3490, 3491, 3620,
3621, 5415,
}
},
{
level = 30,
availableTalentIDs = {
727, 728, 730,
731, 3062, 3488,
3490, 3491, 3620,
3621, 5415,
}
},
{
level = 40,
availableTalentIDs = {
727, 728, 730,
731, 3062, 3488,
3490, 3491, 3620,
3621, 5415,
}
},
},
},
[263] = { -- Enhancement
talents = {
{22354, 22355, 22353},
{22636, 23462, 23109},
{23165, 19260, 23166},
{23089, 23090, 22171},
{22144, 22149, 21966},
{21973, 22352, 22351},
{21970, 22977, 21972},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
}
},
{
level = 30,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
}
},
{
level = 40,
availableTalentIDs = {
721, 722, 725,
1944, 3487, 3489,
3492, 3519, 3622,
3623, 5414, 5438,
}
},
},
},
[264] = { -- Restoration
talents = {
{19262, 19263, 19264},
{19259, 23461, 21963},
{19275, 23110, 22127},
{22152, 22322, 22323},
{22144, 19269, 21966},
{19265, 21971, 21968},
{21969, 21199, 22359},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
707, 708, 712,
713, 714, 715,
1930, 3520, 3755,
3756, 5388, 5437,
}
},
{
level = 30,
availableTalentIDs = {
707, 708, 712,
713, 714, 715,
1930, 3520, 3755,
3756, 5388, 5437,
}
},
{
level = 40,
availableTalentIDs = {
707, 708, 712,
713, 714, 715,
1930, 3520, 3755,
3756, 5388, 5437,
}
},
},
},
-- Mage
[62] = { -- Arcane
talents = {
{22458, 22461, 22464},
{23072, 22443, 16025},
{22444, 22445, 22447},
{22453, 22467, 22470},
{22907, 22448, 22471},
{22455, 22449, 22474},
{21630, 21144, 21145},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
61, 62, 635,
637, 3442, 3517,
3529, 3531, 5397,
}
},
{
level = 30,
availableTalentIDs = {
61, 62, 635,
637, 3442, 3517,
3529, 3531, 5397,
}
},
{
level = 40,
availableTalentIDs = {
61, 62, 635,
637, 3442, 3517,
3529, 3531, 5397,
}
},
},
},
[63] = { -- Fire
talents = {
{22456, 22459, 22462},
{23071, 22443, 23074},
{22444, 22445, 22447},
{22450, 22465, 22468},
{22904, 22448, 22471},
{22451, 23362, 22472},
{21631, 22220, 21633},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
53, 643, 644,
645, 646, 647,
648, 828, 5389,
}
},
{
level = 30,
availableTalentIDs = {
53, 643, 644,
645, 646, 647,
648, 828, 5389,
}
},
{
level = 40,
availableTalentIDs = {
53, 643, 644,
645, 646, 647,
648, 828, 5389,
}
},
},
},
[64] = { -- Frost
talents = {
{22457, 22460, 22463},
{22442, 22443, 23073},
{22444, 22445, 22447},
{22452, 22466, 22469},
{22446, 22448, 22471},
{22454, 23176, 22473},
{21632, 22309, 21634},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
66, 67, 68,
632, 633, 634,
3443, 3532, 5390,
}
},
{
level = 30,
availableTalentIDs = {
66, 67, 68,
632, 633, 634,
3443, 3532, 5390,
}
},
{
level = 40,
availableTalentIDs = {
66, 67, 68,
632, 633, 634,
3443, 3532, 5390,
}
},
},
},
-- Warlock
[265] = { -- Affliction
talents = {
{22039, 23140, 23141},
{22044, 21180, 22089},
{19280, 19285, 19286},
{19279, 19292, 22046},
{22047, 19291, 23465},
{23139, 23159, 19295},
{19284, 19281, 19293},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 3740,
5370, 5379, 5386,
5392,
}
},
{
level = 30,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 3740,
5370, 5379, 5386,
5392,
}
},
{
level = 40,
availableTalentIDs = {
11, 12, 15,
16, 17, 18,
19, 20, 3740,
5370, 5379, 5386,
5392,
}
},
},
},
[266] = { -- Demonology
talents = {
{19290, 22048, 23138},
{22045, 21694, 23158},
{19280, 19285, 19286},
{22477, 22042, 23160},
{22047, 19291, 23465},
{23147, 23146, 21717},
{23161, 22479, 23091},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3507, 3624,
3625, 3626, 5394,
5400,
}
},
{
level = 30,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3507, 3624,
3625, 3626, 5394,
5400,
}
},
{
level = 40,
availableTalentIDs = {
156, 158, 162,
165, 1213, 3505,
3506, 3507, 3624,
3625, 3626, 5394,
5400,
}
},
},
},
[267] = { -- Destruction
talents = {
{22038, 22090, 22040},
{23148, 21695, 23157},
{19280, 19285, 19286},
{22480, 22043, 23143},
{22047, 19291, 23465},
{23155, 23156, 19295},
{19284, 23144, 23092},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
157, 159, 164,
3502, 3504, 3508,
3509, 3510, 5382,
5393, 5401,
}
},
{
level = 30,
availableTalentIDs = {
157, 159, 164,
3502, 3504, 3508,
3509, 3510, 5382,
5393, 5401,
}
},
{
level = 40,
availableTalentIDs = {
157, 159, 164,
3502, 3504, 3508,
3509, 3510, 5382,
5393, 5401,
}
},
},
},
-- Monk
[268] = { -- Brewmaster
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22099, 22097, 19992},
{19993, 19994, 19995},
{20174, 23363, 20175},
{19819, 20184, 22103},
{22106, 22104, 22108},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
}
},
{
level = 30,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
}
},
{
level = 40,
availableTalentIDs = {
666, 667, 668,
669, 670, 671,
672, 673, 765,
843, 1958, 5417,
}
},
},
},
[270] = { -- Mistweaver
talents = {
{19823, 19820, 20185},
{19304, 19818, 19302},
{22168, 22167, 22166},
{19993, 22219, 19995},
{23371, 20173, 20175},
{23107, 22101, 22214},
{22218, 22169, 22170},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402,
}
},
{
level = 30,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402,
}
},
{
level = 40,
availableTalentIDs = {
70, 678, 679,
680, 682, 683,
1928, 3732, 5395,
5398, 5402,
}
},
},
},
[269] = { -- Windwalker
talents = {
{23106, 19820, 20185},
{19304, 19818, 19302},
{22098, 19771, 22096},
{19993, 23364, 19995},
{23258, 20173, 20175},
{22093, 23122, 22102},
{22107, 22105, 21191},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448,
}
},
{
level = 30,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448,
}
},
{
level = 40,
availableTalentIDs = {
77, 675, 852,
3050, 3052, 3734,
3737, 3744, 3745,
5448,
}
},
},
},
-- Druid
[102] = { -- Balance
talents = {
{22385, 22386, 22387},
{19283, 18570, 18571},
{22155, 22157, 22159},
{21778, 18576, 18577},
{18580, 21706, 21702},
{22389, 21712, 22165},
{21648, 21193, 21655},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
}
},
{
level = 30,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
}
},
{
level = 40,
availableTalentIDs = {
180, 182, 184,
185, 822, 834,
836, 3058, 3728,
3731, 5383, 5407,
}
},
},
},
[103] = { -- Feral
talents = {
{22363, 22364, 22365},
{19283, 18570, 18571},
{22163, 22158, 22159},
{21778, 18576, 18577},
{21708, 18579, 21704},
{21714, 21711, 22370},
{21646, 21649, 21653},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384,
}
},
{
level = 30,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384,
}
},
{
level = 40,
availableTalentIDs = {
201, 203, 601,
602, 611, 612,
620, 820, 3053,
3751, 5384,
}
},
},
},
[104] = { -- Guardian
talents = {
{22419, 22418, 22420},
{19283, 18570, 18571},
{22163, 22156, 22159},
{21778, 18576, 18577},
{21709, 21707, 22388},
{22423, 21713, 22390},
{22426, 22427, 22425},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410,
}
},
{
level = 30,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410,
}
},
{
level = 40,
availableTalentIDs = {
49, 50, 51,
52, 192, 193,
194, 195, 196,
197, 842, 1237,
3750, 5410,
}
},
},
},
[105] = { -- Restoration
talents = {
{18569, 18574, 18572},
{19283, 18570, 18571},
{22366, 22367, 22160},
{21778, 18576, 18577},
{21710, 21705, 22421},
{21716, 18585, 22422},
{22403, 21651, 22404},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
3752, 5387,
}
},
{
level = 30,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
3752, 5387,
}
},
{
level = 40,
availableTalentIDs = {
59, 691, 692,
697, 700, 835,
838, 1215, 3048,
3752, 5387,
}
},
},
},
-- Demon Hunter
[577] = { -- Havoc
talents = {
{21854, 22493, 22416},
{21857, 22765, 22799},
{22909, 22494, 21862},
{21863, 21864, 21865},
{21866, 21867, 21868},
{21869, 21870, 22767},
{21900, 21901, 22547},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
805, 806, 809,
810, 811, 812,
813, 1204, 1206,
1218, 5433, 5445,
}
},
{
level = 30,
availableTalentIDs = {
805, 806, 809,
810, 811, 812,
813, 1204, 1206,
1218, 5433, 5445,
}
},
{
level = 40,
availableTalentIDs = {
805, 806, 809,
810, 811, 812,
813, 1204, 1206,
1218, 5433, 5445,
}
},
},
},
[581] = { -- Vengeance
talents = {
{22502, 22503, 22504},
{22505, 22766, 22507},
{22324, 22541, 22540},
{22508, 22509, 22770},
{22546, 22510, 22511},
{22512, 22513, 22768},
{22543, 23464, 21902},
},
pvptalentslots = {
{
level = 20,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
}
},
{
level = 30,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
}
},
{
level = 40,
availableTalentIDs = {
814, 815, 816,
819, 1220, 1948,
3423, 3429, 3430,
3727, 5434, 5439,
}
},
},
},
}
end
if type(specInfo.version) ~= "number" then
error("MISSING SPEC INFO VERSION NUMBER")
end
function GetSpecInfoVersion()
return specInfo.version
end
function VerifyTalentForSpec(specID, talentID)
if specInfo[specID] then
for tier,talents in ipairs(specInfo[specID].talents) do
for column,talent in ipairs(talents) do
if talent == talentID then
return tier, column
end
end
end
end
end
function VerifyPvPTalentForSpec(specID, talentID)
if specInfo[specID] then
for _,slot in ipairs(specInfo[specID].pvptalentslots) do
for _,talent in ipairs(slot.availableTalentIDs) do
if talent == talentID then
return true
end
end
end
end
end
function GetTalentInfoForSpecID(specID, tier, column)
for specIndex=1,GetNumSpecializations() do
local playerSpecID = GetSpecializationInfo(specIndex);
if playerSpecID == specID then
return GetTalentInfoBySpecialization(specIndex, tier, column);
end
end
if BtWLoadoutsSpecInfo[specID] then
return GetTalentInfoByID(BtWLoadoutsSpecInfo[specID].talents[tier][column]);
end
if specInfo[specID] then
return GetTalentInfoByID(specInfo[specID].talents[tier][column]);
end
end
function GetPvpTalentSlotInfoForSpecID(specID, index)
local playerSpecID = GetSpecializationInfo(GetSpecialization());
if playerSpecID == specID then
local slotInfo = GetPvpTalentSlotInfo(index);
return slotInfo
end
if BtWLoadoutsSpecInfo[specID] and BtWLoadoutsSpecInfo[specID].pvptalentslots and BtWLoadoutsSpecInfo[specID].pvptalentslots[index] then
return BtWLoadoutsSpecInfo[specID].pvptalentslots[index];
end
if specInfo[specID] and specInfo[specID].pvptalentslots and specInfo[specID].pvptalentslots[index] then
return specInfo[specID].pvptalentslots[index];
end
end
Internal.GetSpecInfoVersion = GetSpecInfoVersion
Internal.VerifyTalentForSpec = VerifyTalentForSpec
Internal.VerifyPvPTalentForSpec = VerifyPvPTalentForSpec
Internal.GetTalentInfoForSpecID = GetTalentInfoForSpecID
Internal.GetPvpTalentSlotInfoForSpecID = GetPvpTalentSlotInfoForSpecID
end
local GetEssenceInfoByID, GetEssenceInfoForRole;
do
local essenceInfo = {
nil, -- [1]
{
["ID"] = 2,
["name"] = "Azeroth's Undying Gift",
["icon"] = 2967107,
}, -- [2]
{
["ID"] = 3,
["name"] = "Sphere of Suppression",
["icon"] = 2065602,
}, -- [3]
{
["ID"] = 4,
["name"] = "Worldvein Resonance",
["icon"] = 1830317,
}, -- [4]
{
["ID"] = 5,
["name"] = "Essence of the Focusing Iris",
["icon"] = 2967111,
}, -- [5]
{
["ID"] = 6,
["name"] = "Purification Protocol",
["icon"] = 2967103,
}, -- [6]
{
["ID"] = 7,
["name"] = "Anima of Life and Death",
["icon"] = 2967105,
}, -- [7]
nil, -- [8]
nil, -- [9]
nil, -- [10]
nil, -- [11]
{
["ID"] = 12,
["name"] = "The Crucible of Flame",
["icon"] = 3015740,
}, -- [12]
{
["ID"] = 13,
["name"] = "Nullification Dynamo",
["icon"] = 3015741,
}, -- [13]
{
["ID"] = 14,
["name"] = "Condensed Life-Force",
["icon"] = 2967113,
}, -- [14]
{
["ID"] = 15,
["name"] = "Ripple in Space",
["icon"] = 2967109,
}, -- [15]
{
["ID"] = 16,
["name"] = "Unwavering Ward",
["icon"] = 3193842,
}, -- [16]
{
["ID"] = 17,
["name"] = "The Ever-Rising Tide",
["icon"] = 2967108,
}, -- [17]
{
["ID"] = 18,
["name"] = "Artifice of Time",
["icon"] = 2967112,
}, -- [18]
{
["ID"] = 19,
["name"] = "The Well of Existence",
["icon"] = 516796,
}, -- [19]
{
["ID"] = 20,
["name"] = "Life-Binder's Invocation",
["icon"] = 2967106,
}, -- [20]
{
["ID"] = 21,
["name"] = "Vitality Conduit",
["icon"] = 2967100,
}, -- [21]
{
["ID"] = 22,
["name"] = "Vision of Perfection",
["icon"] = 3015743,
}, -- [22]
{
["ID"] = 23,
["name"] = "Blood of the Enemy",
["icon"] = 2032580,
}, -- [23]
{
["ID"] = 24,
["name"] = "Spirit of Preservation",
["icon"] = 2967101,
}, -- [24]
{
["ID"] = 25,
["name"] = "Aegis of the Deep",
["icon"] = 2967110,
}, -- [25]
nil, -- [26]
{
["ID"] = 27,
["name"] = "Memory of Lucid Dreams",
["icon"] = 2967104,
}, -- [27]
{
["ID"] = 28,
["name"] = "The Unbound Force",
["icon"] = 2967102,
}, -- [28]
nil, -- [29]
nil, -- [30]
nil, -- [31]
{
["ID"] = 32,
["name"] = "Conflict and Strife",
["icon"] = 3015742,
}, -- [32]
{
["ID"] = 33,
["name"] = "Touch of the Everlasting",
["icon"] = 3193847,
}, -- [33]
{
["ID"] = 34,
["name"] = "Strength of the Warden",
["icon"] = 3193846,
}, -- [34]
{
["ID"] = 35,
["name"] = "Breath of the Dying",
["icon"] = 3193844,
}, -- [35]
{
["ID"] = 36,
["name"] = "Spark of Inspiration",
["icon"] = 3193843,
}, -- [36]
{
["ID"] = 37,
["name"] = "The Formless Void",
["icon"] = 3193845,
}, -- [37]
}
local roleInfo = {
["DAMAGER"] = {
["essences"] = {
23, -- [1]
35, -- [2]
14, -- [3]
32, -- [4]
5, -- [5]
27, -- [6]
6, -- [7]
15, -- [8]
36, -- [9]
12, -- [10]
37, -- [11]
28, -- [12]
22, -- [13]
4, -- [14]
},
},
["TANK"] = {
["essences"] = {
25, -- [1]
7, -- [2]
2, -- [3]
32, -- [4]
27, -- [5]
13, -- [6]
15, -- [7]
3, -- [8]
34, -- [9]
12, -- [10]
37, -- [11]
33, -- [12]
22, -- [13]
4, -- [14]
},
},
["HEALER"] = {
["essences"] = {
18, -- [1]
32, -- [2]
20, -- [3]
27, -- [4]
15, -- [5]
24, -- [6]
12, -- [7]
17, -- [8]
37, -- [9]
19, -- [10]
16, -- [11]
22, -- [12]
21, -- [13]
4, -- [14]
},
},
};
function GetEssenceInfoByID(essenceID)
local essence = GetEssenceInfo(essenceID);
if not essence then
essence = BtWLoadoutsEssenceInfo and BtWLoadoutsEssenceInfo[essenceID] or essenceInfo[essenceID];
end
return essence;
end
function GetEssenceInfoForRole(role, index)
if BtWLoadoutsRoleInfo[role] and BtWLoadoutsRoleInfo[role].essences and BtWLoadoutsRoleInfo[role].essences[index] then
return GetEssenceInfoByID(BtWLoadoutsRoleInfo[role].essences[index]);
end
if roleInfo[role] and roleInfo[role].essences and roleInfo[role].essences[index] then
return GetEssenceInfoByID(roleInfo[role].essences[index]);
end
end
Internal.GetEssenceInfoByID = GetEssenceInfoByID
Internal.GetEssenceInfoForRole = GetEssenceInfoForRole
end
do
local traitInfoVersion, trees, nodes = Internal.dftalents.version, Internal.dftalents.trees, Internal.dftalents.nodes
for _,node in pairs(nodes) do
for _,edge in ipairs(node.edges) do
local target = nodes[edge.targetNode];
target.incomingEdges = target.incomingEdges or {};
target.incomingEdges[#target.incomingEdges+1] = node.ID;
end
end
function Internal.GetTraitInfoVersion()
return traitInfoVersion;
end
function Internal.GetTreeInfoBySpecID(specID)
local result = BtWLoadoutsTraitsInfo.trees[specID] or trees[specID];
if not result then
C_ClassTalents.InitializeViewLoadout(specID, 70);
C_ClassTalents.ViewLoadout({});
Internal.UpdateTraitInfoFromConfig(specID, Constants.TraitConsts.VIEW_TRAIT_CONFIG_ID);
result = BtWLoadoutsTraitsInfo.trees[specID] or trees[specID];
end
result.buttonSize = 40;
result.minZoom = 0.75;
result.maxZoom = 0.75;
return result;
end
function Internal.GetNodeInfo(nodeID)
return nodes[nodeID];
end
function Internal.GetNodeInfoBySpecID(specID, nodeID)
local tree = Internal.GetTreeInfoBySpecID(specID);
local result = BtWLoadoutsTraitsInfo.nodes[nodeID] and CopyTable(BtWLoadoutsTraitsInfo.nodes[nodeID], false) or nodes[nodeID];
if not result then
error("Missing Node " .. nodeID);
end
result.isVisible = tree.visibleNodes[nodeID] and true or false;
if tContains(tree.grantedNodes, nodeID) then
result.activeRank = result.maxRanks;
result.currentRank = result.maxRanks;
else
result.activeRank = 0;
result.currentRank = 0;
end
result.ranksPurchased = 0;
if not result.activeEntry and #result.entryIDs == 1 then
result.activeEntry = {
entryID = result.entryIDs[1],
rank = 1,
}
end
if result.edgesBySpecID and result.edgesBySpecID[specID] then
result.visibleEdges = result.edgesBySpecID[specID];
else
result.visibleEdges = {}
end
return result;
end
function Internal.UpdateTraitInfoFromPlayer()
local specID = GetSpecializationInfo(GetSpecialization());
C_ClassTalents.InitializeViewLoadout(specID, 70);
local success = C_ClassTalents.ViewLoadout({});
if not success then
--[==[@debug@
print(format(L["[BtWLoadouts]: failed to update trait information for %s, could not initialize trait tree."], select(2, GetSpecializationInfoByID(specID))));
--@end-debug@]==]
return
end
local configID = Constants.TraitConsts.VIEW_TRAIT_CONFIG_ID; -- C_ClassTalents.GetActiveConfigID();
if not configID then
--[==[@debug@
print(format(L["[BtWLoadouts]: failed to update trait information for %s, missing active config id."], select(2, GetSpecializationInfoByID(specID))));
--@end-debug@]==]
return
end
return Internal.UpdateTraitInfoFromConfig(specID, configID)
end
function Internal.UpdateTraitInfoFromConfig(specID, configID)
if not C_ClassTalents then
--[==[@debug@
print(format(L["[BtWLoadouts]: failed to update trait information for %s, missing C_ClassTalents."], select(2, GetSpecializationInfoByID(specID))));
--@end-debug@]==]
return
end
local configInfo = C_Traits.GetConfigInfo(configID);
local treeID = C_ClassTalents.GetTraitTreeForSpec(specID);
local tree = C_Traits.GetTreeInfo(configID, treeID);
local nodeIDs = C_Traits.GetTreeNodes(treeID);
local currencies = C_Traits.GetTreeCurrencyInfo(configID, treeID, true);
local incomingEdgesByNodeID = {}
--[==[@debug@
print(format(L["[BtWLoadouts]: updating trait information for %s, configID: %d, treeID: %d."], select(2, GetSpecializationInfoByID(specID)), configID, treeID));
--@end-debug@]==]
local conditions = setmetatable({}, {
__index = function (self, key)
if type(key) == "number" then
local result = C_Traits.GetConditionInfo(configID, key)
self[key] = result;
return result;
end
end
});
for _,gate in ipairs(tree.gates) do
local condInfo = conditions[gate.conditionID];
gate.traitCurrencyID = condInfo.traitCurrencyID;
gate.spentAmountRequired = condInfo.spentAmountRequired;
end
tree.hideSingleRankNumbers = nil;
tree.buttonSize = nil;
tree.maxZoom = nil;
tree.minZoom = nil;
for _,currency in ipairs(currencies) do
currency.quantity = nil;
currency.spent = nil;
end
tree.nodes = nodeIDs;
tree.currencies = currencies;
local visibleNodes = {};
local grantedNodes = {};
for _,nodeID in ipairs(nodeIDs) do
local nodeInfo = C_Traits.GetNodeInfo(configID, nodeID);
if nodeInfo and nodeInfo.isVisible then
visibleNodes[nodeID] = true;
for _,condID in ipairs(nodeInfo.conditionIDs) do
local condInfo = conditions[condID];
if condInfo.ranksGranted and (condInfo.specSetID == nil or tContains(C_SpecializationInfo.GetSpecIDs(condInfo.specSetID), specID)) then
grantedNodes[#grantedNodes+1] = nodeID;
end
end
if not incomingEdgesByNodeID[nodeID] then
incomingEdgesByNodeID[nodeID] = {};
end
nodeInfo.canPurchaseRank = nil;
nodeInfo.canRefundRank = nil;
nodeInfo.isAvailable = nil;
nodeInfo.isCascadeRepurchasable = nil;
nodeInfo.isVisible = nil;
nodeInfo.meetsEdgeRequirements = nil;
nodeInfo.activeRank = nil;
nodeInfo.currentRank = nil;
nodeInfo.ranksPurchased = nil;
nodeInfo.activeEntry = nil;
nodeInfo.entryIDsWithCommittedRanks = nil;
for _,edge in ipairs(nodeInfo.visibleEdges) do
edge.isActive = nil;
if not incomingEdgesByNodeID[edge.targetNode] then
incomingEdgesByNodeID[edge.targetNode] = {};
end
incomingEdgesByNodeID[edge.targetNode][#incomingEdgesByNodeID[edge.targetNode]+1] = nodeID;
end
local savedNodeInfo = Internal.GetNodeInfo(nodeID);
nodeInfo.edgesBySpecID = savedNodeInfo and savedNodeInfo.edgesBySpecID or {};
nodeInfo.edgesBySpecID[specID] = nodeInfo.visibleEdges;
nodeInfo.incomingEdges = savedNodeInfo and savedNodeInfo.incomingEdges;
nodeInfo.incomingEdgesBySpecID = savedNodeInfo and savedNodeInfo.incomingEdgesBySpecID or {};
nodeInfo.incomingEdgesBySpecID[specID] = incomingEdgesByNodeID[nodeID];
nodeInfo.visibleEdges = nil;
local costs = C_Traits.GetNodeCost(configID, nodeID);
nodeInfo.costs = costs;
BtWLoadoutsTraitsInfo.nodes[nodeID] = nodeInfo;
elseif not BtWLoadoutsTraitsInfo.nodes[nodeID] then
nodeInfo.canPurchaseRank = nil;
nodeInfo.canRefundRank = nil;
nodeInfo.isAvailable = nil;
nodeInfo.isCascadeRepurchasable = nil;
nodeInfo.isVisible = nil;
nodeInfo.meetsEdgeRequirements = nil;
nodeInfo.activeRank = nil;
nodeInfo.currentRank = nil;
nodeInfo.ranksPurchased = nil;
nodeInfo.activeEntry = nil;
nodeInfo.entryIDsWithCommittedRanks = nil;
BtWLoadoutsTraitsInfo.nodes[nodeID] = nodeInfo;
end
end
tree.visibleNodes = visibleNodes;
tree.grantedNodes = grantedNodes;
BtWLoadoutsTraitsInfo.trees[specID] = tree;
end
end
function Internal.GetCharacterInfo(character)
return BtWLoadoutsCharacterInfo and BtWLoadoutsCharacterInfo[character];
end
function Internal.GetFormattedCharacterName(slug, includeRealm)
local characterInfo = Internal.GetCharacterInfo(slug)
if characterInfo then
local classColor = C_ClassColor.GetClassColor(characterInfo.class)
if includeRealm then
return format("%s - %s", classColor:WrapTextInColorCode(characterInfo.name), characterInfo.realm)
else
return classColor:WrapTextInColorCode(characterInfo.name)
end
end
return slug
end
local characterIteratorTemp = {}
function Internal.CharacterIterator()
wipe(characterIteratorTemp);
for character in pairs(BtWLoadoutsCharacterInfo or {}) do
characterIteratorTemp[#characterIteratorTemp+1] = character
end
table.sort(characterIteratorTemp, function (a, b)
return a < b
end)
return ipairs(characterIteratorTemp)
end
-- EnumerateRealms
do
local unique, list = {}, {}
function Internal.EnumerateRealms()
wipe(unique)
wipe(list)
for _,character in pairs(BtWLoadoutsCharacterInfo or {}) do
unique[character.realm] = true
end
for realm in pairs(unique) do
list[#list+1] = realm
end
table.sort(list, function (a, b)
return a < b
end)
return ipairs(list)
end
end
-- EnumerateCharactersForRealm
do
local list = {}
function Internal.EnumerateCharactersForRealm(realm)
wipe(list)
for slug,character in pairs(BtWLoadoutsCharacterInfo or {}) do
if character.realm == realm then
list[#list+1] = slug
end
end
table.sort(list, function (a, b)
return a < b
end)
return ipairs(list)
end
end
function Internal.DeleteCharacter(slug)
if Internal.Call("CHARACTER_DELETE", slug) then
BtWLoadoutsCharacterInfo[slug] = nil
end
BtWLoadoutsFrame:Update();
end
function Internal.UpdatePlayerInfo()
local name, realm = UnitFullName("player");
local class = select(2, UnitClass("player"));
local race = select(3, UnitRace("player"));
local sex = UnitSex("player") - 2;
BtWLoadoutsCharacterInfo[realm .. "-" .. name] = {name = name, realm = GetRealmName(), class = class, race = race, sex = sex};
end
-- Checks if the player can switch to specID, used to check if loadouts are valid
function Internal.CanSwitchToSpecialization(specID)
local playerClass = select(2, UnitClass("player"));
local specClass = select(6, GetSpecializationInfoByID(specID));
if playerClass ~= specClass then
return false
end
local specIndex = GetSpecialization()
if specIndex == nil then
return false
end
if select(2, GetInstanceInfo()) == "arena" then
-- Can not switch specs in arena
return GetSpecializationInfo(specIndex) == specID
elseif select(2, GetInstanceInfo()) == "battleground" then
-- You can only switch specs in bgs unless you go from or to healer
local currentRole = GetSpecializationRole(specIndex)
local targetRole = GetSpecializationRoleByID(specID)
return (currentRole == targetRole) or not (currentRole == "HEALER" or targetRole == "HEALER")
end
return true
end
function Internal.HasJailersChains()
return GetPlayerAuraBySpellID(338906) ~= nil
end