mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 08:55:32 +01:00
Merge pull request #10327 from joschiwald/spell_talent_ranks
Core/Spells: load spell ranks for talents from dbc
This commit is contained in:
682
sql/updates/world/2013_07_24_01_world_spell_ranks.sql
Normal file
682
sql/updates/world/2013_07_24_01_world_spell_ranks.sql
Normal file
@@ -0,0 +1,682 @@
|
||||
DELETE FROM `spell_ranks` WHERE `first_spell_id` IN (
|
||||
5923,
|
||||
5952,
|
||||
9452,
|
||||
9453,
|
||||
9799,
|
||||
11069,
|
||||
11070,
|
||||
11071,
|
||||
11078,
|
||||
11083,
|
||||
11094,
|
||||
11095,
|
||||
11100,
|
||||
11103,
|
||||
11108,
|
||||
11115,
|
||||
11119,
|
||||
11124,
|
||||
11151,
|
||||
11160,
|
||||
11170,
|
||||
11175,
|
||||
11180,
|
||||
11185,
|
||||
11189,
|
||||
11190,
|
||||
11207,
|
||||
11210,
|
||||
11213,
|
||||
11222,
|
||||
11232,
|
||||
11237,
|
||||
11242,
|
||||
11247,
|
||||
11252,
|
||||
11255,
|
||||
12163,
|
||||
12281,
|
||||
12282,
|
||||
12284,
|
||||
12285,
|
||||
12286,
|
||||
12287,
|
||||
12289,
|
||||
12290,
|
||||
12295,
|
||||
12297,
|
||||
12298,
|
||||
12299,
|
||||
12300,
|
||||
12301,
|
||||
12308,
|
||||
12311,
|
||||
12312,
|
||||
12313,
|
||||
12317,
|
||||
12318,
|
||||
12319,
|
||||
12320,
|
||||
12321,
|
||||
12322,
|
||||
12324,
|
||||
12329,
|
||||
12700,
|
||||
12797,
|
||||
12834,
|
||||
12862,
|
||||
13705,
|
||||
13706,
|
||||
13709,
|
||||
13712,
|
||||
13713,
|
||||
13715,
|
||||
13732,
|
||||
13733,
|
||||
13741,
|
||||
13742,
|
||||
13743,
|
||||
13754,
|
||||
13958,
|
||||
13960,
|
||||
13975,
|
||||
13976,
|
||||
13981,
|
||||
13983,
|
||||
14057,
|
||||
14076,
|
||||
14079,
|
||||
14082,
|
||||
14113,
|
||||
14128,
|
||||
14138,
|
||||
14144,
|
||||
14156,
|
||||
14158,
|
||||
14162,
|
||||
14165,
|
||||
14168,
|
||||
14171,
|
||||
14174,
|
||||
14179,
|
||||
14186,
|
||||
14520,
|
||||
14521,
|
||||
14522,
|
||||
14523,
|
||||
14531,
|
||||
14747,
|
||||
14748,
|
||||
14749,
|
||||
14750,
|
||||
14889,
|
||||
14892,
|
||||
14898,
|
||||
14901,
|
||||
14908,
|
||||
14909,
|
||||
14910,
|
||||
14911,
|
||||
14912,
|
||||
14913,
|
||||
15058,
|
||||
15257,
|
||||
15259,
|
||||
15260,
|
||||
15270,
|
||||
15273,
|
||||
15274,
|
||||
15275,
|
||||
15318,
|
||||
15337,
|
||||
15392,
|
||||
16035,
|
||||
16038,
|
||||
16039,
|
||||
16040,
|
||||
16043,
|
||||
16086,
|
||||
16089,
|
||||
16173,
|
||||
16176,
|
||||
16178,
|
||||
16179,
|
||||
16180,
|
||||
16181,
|
||||
16182,
|
||||
16184,
|
||||
16187,
|
||||
16194,
|
||||
16252,
|
||||
16254,
|
||||
16255,
|
||||
16256,
|
||||
16258,
|
||||
16259,
|
||||
16261,
|
||||
16262,
|
||||
16266,
|
||||
16462,
|
||||
16487,
|
||||
16493,
|
||||
16513,
|
||||
16538,
|
||||
16578,
|
||||
16757,
|
||||
16814,
|
||||
16819,
|
||||
16821,
|
||||
16833,
|
||||
16836,
|
||||
16845,
|
||||
16850,
|
||||
16858,
|
||||
16880,
|
||||
16896,
|
||||
16909,
|
||||
16929,
|
||||
16934,
|
||||
16940,
|
||||
16942,
|
||||
16947,
|
||||
16966,
|
||||
16972,
|
||||
16998,
|
||||
17002,
|
||||
17003,
|
||||
17050,
|
||||
17056,
|
||||
17063,
|
||||
17069,
|
||||
17074,
|
||||
17104,
|
||||
17106,
|
||||
17111,
|
||||
17118,
|
||||
17123,
|
||||
17322,
|
||||
17485,
|
||||
17778,
|
||||
17783,
|
||||
17788,
|
||||
17793,
|
||||
17804,
|
||||
17810,
|
||||
17815,
|
||||
17917,
|
||||
17927,
|
||||
17954,
|
||||
17959,
|
||||
18094,
|
||||
18096,
|
||||
18119,
|
||||
18126,
|
||||
18135,
|
||||
18174,
|
||||
18179,
|
||||
18182,
|
||||
18213,
|
||||
18218,
|
||||
18271,
|
||||
18427,
|
||||
18459,
|
||||
18462,
|
||||
18530,
|
||||
18551,
|
||||
18692,
|
||||
18694,
|
||||
18697,
|
||||
18703,
|
||||
18705,
|
||||
18709,
|
||||
18731,
|
||||
18754,
|
||||
18767,
|
||||
18769,
|
||||
18827,
|
||||
19159,
|
||||
19168,
|
||||
19184,
|
||||
19255,
|
||||
19286,
|
||||
19290,
|
||||
19295,
|
||||
19370,
|
||||
19376,
|
||||
19407,
|
||||
19416,
|
||||
19421,
|
||||
19426,
|
||||
19454,
|
||||
19461,
|
||||
19464,
|
||||
19485,
|
||||
19498,
|
||||
19507,
|
||||
19549,
|
||||
19552,
|
||||
19559,
|
||||
19572,
|
||||
19578,
|
||||
19583,
|
||||
19590,
|
||||
19598,
|
||||
19609,
|
||||
19616,
|
||||
19621,
|
||||
20042,
|
||||
20049,
|
||||
20060,
|
||||
20096,
|
||||
20101,
|
||||
20111,
|
||||
20117,
|
||||
20127,
|
||||
20138,
|
||||
20143,
|
||||
20174,
|
||||
20177,
|
||||
20196,
|
||||
20205,
|
||||
20210,
|
||||
20224,
|
||||
20234,
|
||||
20237,
|
||||
20244,
|
||||
20254,
|
||||
20257,
|
||||
20262,
|
||||
20335,
|
||||
20359,
|
||||
20468,
|
||||
20487,
|
||||
20500,
|
||||
20502,
|
||||
20504,
|
||||
23584,
|
||||
23785,
|
||||
24443,
|
||||
24968,
|
||||
25956,
|
||||
26022,
|
||||
27789,
|
||||
27811,
|
||||
27839,
|
||||
27900,
|
||||
28574,
|
||||
28996,
|
||||
28999,
|
||||
29062,
|
||||
29074,
|
||||
29082,
|
||||
29140,
|
||||
29187,
|
||||
29192,
|
||||
29206,
|
||||
29438,
|
||||
29441,
|
||||
29447,
|
||||
29590,
|
||||
29593,
|
||||
29598,
|
||||
29721,
|
||||
29723,
|
||||
29759,
|
||||
29787,
|
||||
29834,
|
||||
29836,
|
||||
29888,
|
||||
30054,
|
||||
30060,
|
||||
30143,
|
||||
30160,
|
||||
30242,
|
||||
30288,
|
||||
30293,
|
||||
30299,
|
||||
30319,
|
||||
30664,
|
||||
30672,
|
||||
30675,
|
||||
30802,
|
||||
30812,
|
||||
30816,
|
||||
30864,
|
||||
30867,
|
||||
30872,
|
||||
30881,
|
||||
30892,
|
||||
30894,
|
||||
30902,
|
||||
30919,
|
||||
31122,
|
||||
31124,
|
||||
31130,
|
||||
31208,
|
||||
31211,
|
||||
31216,
|
||||
31221,
|
||||
31226,
|
||||
31228,
|
||||
31234,
|
||||
31244,
|
||||
31380,
|
||||
31569,
|
||||
31571,
|
||||
31574,
|
||||
31579,
|
||||
31584,
|
||||
31638,
|
||||
31641,
|
||||
31656,
|
||||
31667,
|
||||
31670,
|
||||
31674,
|
||||
31679,
|
||||
31682,
|
||||
31785,
|
||||
31822,
|
||||
31825,
|
||||
31828,
|
||||
31833,
|
||||
31837,
|
||||
31844,
|
||||
31848,
|
||||
31850,
|
||||
31858,
|
||||
31866,
|
||||
31871,
|
||||
31876,
|
||||
31879,
|
||||
32043,
|
||||
32381,
|
||||
32385,
|
||||
32477,
|
||||
33142,
|
||||
33150,
|
||||
33158,
|
||||
33167,
|
||||
33186,
|
||||
33191,
|
||||
33201,
|
||||
33213,
|
||||
33221,
|
||||
33589,
|
||||
33592,
|
||||
33597,
|
||||
33600,
|
||||
33603,
|
||||
33851,
|
||||
33853,
|
||||
33859,
|
||||
33872,
|
||||
33879,
|
||||
33881,
|
||||
33886,
|
||||
34151,
|
||||
34293,
|
||||
34297,
|
||||
34453,
|
||||
34455,
|
||||
34462,
|
||||
34466,
|
||||
34475,
|
||||
34482,
|
||||
34485,
|
||||
34491,
|
||||
34494,
|
||||
34497,
|
||||
34500,
|
||||
34506,
|
||||
34753,
|
||||
34908,
|
||||
34935,
|
||||
34948,
|
||||
34950,
|
||||
35029,
|
||||
35100,
|
||||
35104,
|
||||
35363,
|
||||
35446,
|
||||
35541,
|
||||
35578,
|
||||
35691,
|
||||
37116,
|
||||
44378,
|
||||
44394,
|
||||
44397,
|
||||
44400,
|
||||
44404,
|
||||
44442,
|
||||
44445,
|
||||
44449,
|
||||
44543,
|
||||
44546,
|
||||
44557,
|
||||
44566,
|
||||
44745,
|
||||
45234,
|
||||
46854,
|
||||
46859,
|
||||
46865,
|
||||
46867,
|
||||
46908,
|
||||
46910,
|
||||
46913,
|
||||
46945,
|
||||
46951,
|
||||
47195,
|
||||
47198,
|
||||
47201,
|
||||
47220,
|
||||
47230,
|
||||
47236,
|
||||
47245,
|
||||
47258,
|
||||
47266,
|
||||
47294,
|
||||
47507,
|
||||
47509,
|
||||
47516,
|
||||
47535,
|
||||
47558,
|
||||
47562,
|
||||
47569,
|
||||
47573,
|
||||
47580,
|
||||
47586,
|
||||
48384,
|
||||
48389,
|
||||
48409,
|
||||
48411,
|
||||
48432,
|
||||
48483,
|
||||
48488,
|
||||
48492,
|
||||
48496,
|
||||
48506,
|
||||
48516,
|
||||
48532,
|
||||
48535,
|
||||
48539,
|
||||
48962,
|
||||
48963,
|
||||
48965,
|
||||
48977,
|
||||
48978,
|
||||
48979,
|
||||
48985,
|
||||
48987,
|
||||
48988,
|
||||
48997,
|
||||
49004,
|
||||
49006,
|
||||
49013,
|
||||
49015,
|
||||
49018,
|
||||
49023,
|
||||
49024,
|
||||
49027,
|
||||
49032,
|
||||
49036,
|
||||
49042,
|
||||
49137,
|
||||
49140,
|
||||
49145,
|
||||
49146,
|
||||
49149,
|
||||
49175,
|
||||
49182,
|
||||
49186,
|
||||
49188,
|
||||
49189,
|
||||
49200,
|
||||
49202,
|
||||
49208,
|
||||
49217,
|
||||
49219,
|
||||
49220,
|
||||
49223,
|
||||
49224,
|
||||
49226,
|
||||
49455,
|
||||
49467,
|
||||
49471,
|
||||
49588,
|
||||
50040,
|
||||
50117,
|
||||
50187,
|
||||
50365,
|
||||
50384,
|
||||
50391,
|
||||
50685,
|
||||
50880,
|
||||
51099,
|
||||
51123,
|
||||
51179,
|
||||
51459,
|
||||
51466,
|
||||
51468,
|
||||
51474,
|
||||
51480,
|
||||
51483,
|
||||
51521,
|
||||
51523,
|
||||
51525,
|
||||
51528,
|
||||
51554,
|
||||
51556,
|
||||
51560,
|
||||
51562,
|
||||
51625,
|
||||
51627,
|
||||
51632,
|
||||
51634,
|
||||
51664,
|
||||
51672,
|
||||
51682,
|
||||
51685,
|
||||
51692,
|
||||
51698,
|
||||
51708,
|
||||
51745,
|
||||
51883,
|
||||
52234,
|
||||
52783,
|
||||
52795,
|
||||
53137,
|
||||
53175,
|
||||
53178,
|
||||
53180,
|
||||
53182,
|
||||
53186,
|
||||
53203,
|
||||
53215,
|
||||
53221,
|
||||
53228,
|
||||
53234,
|
||||
53241,
|
||||
53252,
|
||||
53256,
|
||||
53262,
|
||||
53290,
|
||||
53295,
|
||||
53298,
|
||||
53302,
|
||||
53375,
|
||||
53379,
|
||||
53380,
|
||||
53409,
|
||||
53427,
|
||||
53450,
|
||||
53481,
|
||||
53483,
|
||||
53486,
|
||||
53501,
|
||||
53511,
|
||||
53514,
|
||||
53527,
|
||||
53551,
|
||||
53554,
|
||||
53556,
|
||||
53569,
|
||||
53583,
|
||||
53590,
|
||||
53620,
|
||||
53660,
|
||||
53671,
|
||||
53695,
|
||||
53709,
|
||||
53754,
|
||||
54037,
|
||||
54117,
|
||||
54347,
|
||||
54639,
|
||||
54747,
|
||||
55061,
|
||||
55091,
|
||||
55107,
|
||||
55129,
|
||||
55620,
|
||||
55666,
|
||||
56314,
|
||||
56333,
|
||||
56339,
|
||||
56342,
|
||||
56636,
|
||||
56927,
|
||||
57470,
|
||||
57810,
|
||||
57849,
|
||||
57873,
|
||||
57878,
|
||||
58414,
|
||||
58872,
|
||||
59088,
|
||||
61154,
|
||||
61216,
|
||||
61680,
|
||||
61682,
|
||||
61686,
|
||||
61689,
|
||||
62097,
|
||||
62758,
|
||||
62759,
|
||||
62764,
|
||||
62905,
|
||||
63117,
|
||||
63156,
|
||||
63349,
|
||||
63370,
|
||||
63373,
|
||||
63410,
|
||||
63504,
|
||||
63534,
|
||||
63625,
|
||||
63646,
|
||||
63730,
|
||||
64127,
|
||||
64353,
|
||||
65661,
|
||||
66799);
|
||||
@@ -1187,23 +1187,88 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32
|
||||
return true;
|
||||
}
|
||||
|
||||
void SpellMgr::UnloadSpellInfoChains()
|
||||
{
|
||||
for (SpellChainMap::iterator itr = mSpellChains.begin(); itr != mSpellChains.end(); ++itr)
|
||||
mSpellInfoMap[itr->first]->ChainEntry = NULL;
|
||||
|
||||
mSpellChains.clear();
|
||||
}
|
||||
|
||||
void SpellMgr::LoadSpellTalentRanks()
|
||||
{
|
||||
// cleanup core data before reload - remove reference to ChainNode from SpellInfo
|
||||
UnloadSpellInfoChains();
|
||||
|
||||
for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i)
|
||||
{
|
||||
TalentEntry const* talentInfo = sTalentStore.LookupEntry(i);
|
||||
if (!talentInfo)
|
||||
continue;
|
||||
|
||||
SpellInfo const* lastSpell = NULL;
|
||||
for (uint8 rank = MAX_TALENT_RANK - 1; rank > 0; --rank)
|
||||
{
|
||||
if (talentInfo->RankID[rank])
|
||||
{
|
||||
lastSpell = GetSpellInfo(talentInfo->RankID[rank]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!lastSpell)
|
||||
continue;
|
||||
|
||||
SpellInfo const* firstSpell = GetSpellInfo(talentInfo->RankID[0]);
|
||||
if (!firstSpell)
|
||||
{
|
||||
TC_LOG_ERROR(LOG_FILTER_SPELLS_AURAS, "SpellMgr::LoadSpellTalentRanks: First Rank Spell %u for TalentEntry %u does not exist.", talentInfo->RankID[0], i);
|
||||
continue;
|
||||
}
|
||||
|
||||
SpellInfo const* prevSpell = NULL;
|
||||
for (uint8 rank = 0; rank < MAX_TALENT_RANK; ++rank)
|
||||
{
|
||||
uint32 spellId = talentInfo->RankID[rank];
|
||||
if (!spellId)
|
||||
break;
|
||||
|
||||
SpellInfo const* currentSpell = GetSpellInfo(spellId);
|
||||
if (!currentSpell)
|
||||
{
|
||||
TC_LOG_ERROR(LOG_FILTER_SPELLS_AURAS, "SpellMgr::LoadSpellTalentRanks: Spell %u (Rank: %u) for TalentEntry %u does not exist.", spellId, rank + 1, i);
|
||||
break;
|
||||
}
|
||||
|
||||
SpellChainNode node;
|
||||
node.first = firstSpell;
|
||||
node.last = lastSpell;
|
||||
node.rank = rank + 1;
|
||||
|
||||
node.prev = prevSpell;
|
||||
node.next = node.rank < MAX_TALENT_RANK ? GetSpellInfo(talentInfo->RankID[rank + 1]) : NULL;
|
||||
|
||||
mSpellChains[spellId] = node;
|
||||
mSpellInfoMap[spellId]->ChainEntry = &mSpellChains[spellId];
|
||||
|
||||
prevSpell = currentSpell;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpellMgr::LoadSpellRanks()
|
||||
{
|
||||
// cleanup data and load spell ranks for talents from dbc
|
||||
LoadSpellTalentRanks();
|
||||
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// cleanup core data before reload - remove reference to ChainNode from SpellInfo
|
||||
for (SpellChainMap::iterator itr = mSpellChains.begin(); itr != mSpellChains.end(); ++itr)
|
||||
{
|
||||
mSpellInfoMap[itr->first]->ChainEntry = NULL;
|
||||
}
|
||||
mSpellChains.clear();
|
||||
// 0 1 2
|
||||
QueryResult result = WorldDatabase.Query("SELECT first_spell_id, spell_id, rank from spell_ranks ORDER BY first_spell_id, rank");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 spell rank records. DB table `spell_ranks` is empty.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1280,6 +1345,10 @@ void SpellMgr::LoadSpellRanks()
|
||||
{
|
||||
++count;
|
||||
int32 addedSpell = itr->first;
|
||||
|
||||
if (mSpellInfoMap[addedSpell]->ChainEntry)
|
||||
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u (rank: %u, first: %u) listed in `spell_ranks` has already ChainEntry from dbc.", addedSpell, itr->second, lastSpell);
|
||||
|
||||
mSpellChains[addedSpell].first = GetSpellInfo(lastSpell);
|
||||
mSpellChains[addedSpell].last = GetSpellInfo(rankChain.back().first);
|
||||
mSpellChains[addedSpell].rank = itr->second;
|
||||
@@ -1296,10 +1365,10 @@ void SpellMgr::LoadSpellRanks()
|
||||
mSpellChains[addedSpell].next = GetSpellInfo(itr->first);
|
||||
}
|
||||
while (true);
|
||||
} while (!finished);
|
||||
}
|
||||
while (!finished);
|
||||
|
||||
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u spell rank records in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
|
||||
}
|
||||
|
||||
void SpellMgr::LoadSpellRequired()
|
||||
|
||||
@@ -696,6 +696,8 @@ class SpellMgr
|
||||
public:
|
||||
|
||||
// Loading data at server startup
|
||||
void UnloadSpellInfoChains();
|
||||
void LoadSpellTalentRanks();
|
||||
void LoadSpellRanks();
|
||||
void LoadSpellRequired();
|
||||
void LoadSpellLearnSkills();
|
||||
|
||||
Reference in New Issue
Block a user