Core/Spells: allow to use ranked spells in spell_proc_event table (like in spell_proc table)

This commit is contained in:
joschiwald
2013-07-21 15:12:34 +02:00
parent bf100ffc3c
commit e6a146aba8
2 changed files with 935 additions and 31 deletions

View File

@@ -0,0 +1,876 @@
ALTER TABLE `spell_proc_event`
CHANGE `entry` `entry` MEDIUMINT(8) DEFAULT 0 NOT NULL;
DELETE FROM `spell_proc_event` WHERE `entry` IN (
325,
905,
945,
8134,
8494,
8495,
10191,
10192,
10193,
10431,
10432,
11120,
12487,
12488,
12574,
12575,
12576,
12577,
12598,
12668,
12724,
12725,
12726,
12727,
12799,
12812,
12813,
12814,
12815,
12846,
12847,
12848,
12849,
12867,
12872,
12873,
12958,
12967,
12968,
12969,
12970,
12971,
12972,
12973,
12974,
13867,
14070,
14071,
14160,
14161,
14190,
14193,
14194,
14195,
14318,
14319,
14320,
14321,
14322,
14774,
15338,
15362,
15363,
16196,
16198,
16235,
16240,
16277,
16278,
16279,
16280,
16281,
16282,
16283,
16284,
16489,
16492,
16544,
16923,
16924,
16954,
16961,
17107,
17108,
17796,
17801,
17802,
17803,
18073,
18095,
18120,
19387,
19388,
19573,
20056,
20057,
20179,
20180,
20181,
20182,
20212,
20213,
20214,
20215,
20235,
20336,
20337,
20501,
20927,
20928,
23695,
24398,
25296,
25469,
25472,
25988,
27044,
27131,
27179,
27815,
27816,
28592,
28593,
29075,
29076,
29179,
29180,
29444,
29594,
29838,
30295,
30296,
30301,
30302,
30678,
30679,
30705,
30883,
30884,
30885,
30886,
31126,
31245,
31570,
31572,
31657,
31658,
31835,
31836,
31872,
31877,
31878,
32387,
32392,
32393,
32394,
32593,
32594,
33145,
33146,
33154,
33192,
33193,
33736,
33882,
33883,
34498,
34499,
34502,
34503,
34859,
34860,
34916,
34917,
34938,
34939,
34954,
35102,
35550,
35551,
35552,
35553,
43019,
43020,
44443,
44446,
44448,
44469,
44470,
44471,
44472,
44560,
44561,
45243,
45244,
46855,
46914,
46915,
46949,
47196,
47197,
47202,
47203,
47204,
47205,
47246,
47247,
47259,
47260,
47264,
47265,
47511,
47515,
47517,
47570,
47581,
47582,
48110,
48111,
48112,
48113,
48159,
48160,
48484,
48485,
48499,
48500,
48510,
48511,
48521,
48525,
48544,
48545,
48951,
48952,
49280,
49281,
49283,
49284,
49503,
49504,
49508,
49509,
49529,
49530,
49599,
49627,
49628,
49654,
49655,
50033,
50034,
50115,
50884,
50885,
50886,
50887,
51462,
51463,
51464,
51465,
51478,
51479,
51522,
51524,
51557,
51558,
51563,
51564,
51565,
51566,
51626,
51628,
51629,
51635,
51636,
51665,
51667,
51668,
51669,
51674,
51679,
51696,
51989,
52004,
52005,
52007,
52008,
52129,
52131,
52134,
52136,
52138,
52797,
52798,
52799,
52800,
53179,
53216,
53217,
53222,
53224,
53232,
53237,
53238,
53259,
53260,
53291,
53292,
53376,
53381,
53382,
53488,
53502,
53503,
53530,
53552,
53553,
53576,
53673,
53696,
53710,
53711,
54151,
54154,
54155,
54637,
54638,
54749,
55667,
56343,
56344,
56611,
56612,
56613,
56614,
56637,
56638,
56822,
56834,
56835,
57472,
57880,
57881,
57960,
58874,
59057,
59089,
61345,
61346,
61847,
62765,
63158,
63245,
63374,
63733,
63737,
64129,
66191,
66192,
66814,
66815,
66816,
66817);
DELETE FROM `spell_proc_event` WHERE `entry` IN (
324,
974,
1463,
5952,
9799,
11095,
11119,
11180,
11185,
11213,
11255,
12281,
12289,
12298,
12311,
12319,
12797,
12834,
12966,
13165,
13754,
13983,
14156,
14186,
14531,
14892,
15337,
16086,
16176,
16180,
16256,
16257,
16487,
16850,
16880,
16952,
16958,
17106,
17793,
18094,
18096,
18119,
19184,
19572,
20049,
20177,
20210,
20234,
20335,
20500,
20925,
27811,
29074,
29441,
29593,
29834,
30160,
30293,
30299,
30675,
30701,
30881,
31124,
31244,
31569,
31571,
31656,
31833,
31871,
31876,
32385,
33076,
33142,
33150,
33191,
33881,
34497,
34500,
34753,
34914,
34935,
34950,
35100,
35541,
41635,
44442,
44445,
44449,
44557,
45234,
46854,
46867,
46913,
46945,
47195,
47201,
47245,
47258,
47263,
47509,
47516,
47569,
47580,
48483,
48496,
48506,
48516,
48539,
48988,
49004,
49018,
49149,
49188,
49208,
49217,
49219,
49223,
49467,
50880,
51459,
51474,
51521,
51523,
51556,
51562,
51625,
51627,
51634,
51664,
51672,
51692,
51940,
52127,
52795,
53178,
53215,
53221,
53228,
53234,
53256,
53290,
53375,
53380,
53486,
53501,
53527,
53551,
53569,
53671,
53695,
53709,
54639,
54747,
55666,
56342,
56636,
57470,
57878,
58872,
59088,
61846,
62764,
63156,
63373,
63730,
64127,
65661,
66799,
-324,
-974,
-1463,
-5952,
-9799,
-11095,
-11119,
-11180,
-11185,
-11213,
-11255,
-12281,
-12289,
-12298,
-12311,
-12319,
-12797,
-12834,
-12966,
-13165,
-13754,
-13983,
-14156,
-14186,
-14531,
-14892,
-15337,
-16086,
-16176,
-16180,
-16256,
-16257,
-16487,
-16850,
-16880,
-16952,
-16958,
-17106,
-17793,
-18094,
-18096,
-18119,
-19184,
-19572,
-20049,
-20177,
-20210,
-20234,
-20335,
-20500,
-20925,
-27811,
-29074,
-29441,
-29593,
-29834,
-30160,
-30293,
-30299,
-30675,
-30701,
-30881,
-31124,
-31244,
-31569,
-31571,
-31656,
-31833,
-31871,
-31876,
-32385,
-33076,
-33142,
-33150,
-33191,
-33881,
-34497,
-34500,
-34753,
-34914,
-34935,
-34950,
-35100,
-35541,
-41635,
-44442,
-44445,
-44449,
-44557,
-45234,
-46854,
-46867,
-46913,
-46945,
-47195,
-47201,
-47245,
-47258,
-47263,
-47509,
-47516,
-47569,
-47580,
-48483,
-48496,
-48506,
-48516,
-48539,
-48988,
-49004,
-49018,
-49149,
-49188,
-49208,
-49217,
-49219,
-49223,
-49467,
-50880,
-51459,
-51474,
-51521,
-51523,
-51556,
-51562,
-51625,
-51627,
-51634,
-51664,
-51672,
-51692,
-51940,
-52127,
-52795,
-53178,
-53215,
-53221,
-53228,
-53234,
-53256,
-53290,
-53375,
-53380,
-53486,
-53501,
-53527,
-53551,
-53569,
-53671,
-53695,
-53709,
-54639,
-54747,
-55666,
-56342,
-56636,
-57470,
-57878,
-58872,
-59088,
-61846,
-62764,
-63156,
-63373,
-63730,
-64127,
-65661,
-66799);
INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
(-324,0,0,0,0,0,0,0,0,0,3),
(-974,0,0,0,0,0,139944,0,0,0,3),
(-1463,0,0,0,0,0,0,1024,0,0,0),
(-5952,0,8,0,1,0,0,0,0,0,0),
(-9799,0,0,0,0,0,0,2,0,0,0),
(-11095,0,3,16,0,0,0,0,0,0,0),
(-11119,4,3,0,0,0,0,2,0,0,0),
(-11180,16,3,0,0,0,0,0,0,0,0),
(-11185,0,3,128,0,0,327680,0,0,0,0),
(-11213,0,3,0,0,0,0,0,0,0,0),
(-11255,0,3,16384,0,0,0,0,0,0,0),
(-12281,0,4,2858419268,4194565,0,0,0,0,0,6),
(-12289,0,4,2,0,0,0,0,0,0,0),
(-12298,0,0,0,0,0,0,112,0,0,0),
(-12311,0,4,2048,1,0,0,0,0,0,0),
(-12319,0,0,0,0,0,0,2,0,0,0),
(-12797,0,4,1024,0,0,0,0,0,0,0),
(-12834,0,0,0,0,0,0,2,0,0,0),
(-12966,0,0,0,0,0,0,65536,0,0,0),
(-13165,0,0,0,0,0,64,0,0,0,0),
(-13754,0,8,16,0,0,0,0,0,0,0),
(-13983,0,0,0,0,0,0,24,0,0,0),
(-14156,0,8,4063232,8,0,0,0,0,0,0),
(-14186,0,8,1082131720,6,0,0,2,0,0,1),
(-14531,0,0,0,0,0,0,2,0,0,0),
(-14892,0,6,268443136,65540,0,0,2,0,0,0),
(-15337,0,6,8396800,2,0,0,2,0,0,0),
(-16086,4,11,0,262144,0,196608,0,0,0,0),
(-16176,0,11,448,0,16,0,2,0,0,0),
(-16180,0,11,448,0,16,0,2,0,100,0),
(-16256,0,0,0,0,0,0,2,0,0,0),
(-16257,0,0,0,0,0,0,65536,0,0,0),
(-16487,0,0,0,0,0,0,2,0,0,0),
(-16850,0,7,4,0,0,0,0,0,0,0),
(-16880,72,7,103,58720258,0,0,2,0,0,0),
(-16952,0,7,233472,1024,262144,0,2,0,0,0),
(-16958,0,0,0,0,0,0,2,0,0,0),
(-17106,0,7,524288,0,0,0,0,0,0,0),
(-17793,0,5,1,0,0,0,0,0,0,0),
(-18094,0,5,10,0,0,0,0,0,0,0),
(-18096,0,5,256,8388608,0,0,2,0,0,0),
(-18119,0,5,0,8388608,0,0,0,0,0,0),
(-19184,0,9,16,8192,0,0,0,0,0,0),
(-19572,0,9,8388608,0,0,16384,0,0,0,0),
(-20049,0,0,0,0,0,0,2,0,0,0),
(-20177,0,0,0,0,0,0,67,0,0,0),
(-20210,0,10,3221225472,65536,0,0,2,0,0,0),
(-20234,0,10,32768,0,0,0,0,0,0,0),
(-20335,0,10,8388608,0,8,16,0,0,100,0),
(-20500,0,4,268435456,0,0,0,0,0,0,0),
(-20925,0,0,0,0,0,0,64,0,0,0),
(-27811,0,0,0,0,0,0,2,0,0,0),
(-29074,20,3,0,0,0,0,2,0,0,0),
(-29441,0,0,0,0,0,0,8,0,0,1),
(-29593,0,0,0,0,0,0,112,0,0,0),
(-29834,0,0,0,0,0,0,65536,0,0,0),
(-30160,0,0,0,0,0,0,2,0,0,0),
(-30293,0,5,897,8519872,0,0,0,0,0,0),
(-30299,126,0,0,0,0,0,0,0,0,0),
(-30675,0,11,3,0,0,0,0,0,0,0),
(-30701,28,0,0,0,0,664232,0,0,100,0),
(-30881,0,0,0,0,0,0,0,0,0,30),
(-31124,0,8,16777222,0,0,0,0,0,0,0),
(-31244,0,8,4063232,9,0,0,52,0,0,0),
(-31569,0,3,65536,0,0,0,0,0,0,0),
(-31571,0,3,0,34,0,16384,0,0,0,0),
(-31656,4,3,134217728,0,0,0,0,0,0,0),
(-31833,0,10,2147483648,0,0,0,0,0,0,0),
(-31871,0,10,16,0,0,16384,0,0,0,0),
(-31876,0,10,8388608,0,0,0,262144,0,0,0),
(-32385,0,5,1,262144,0,0,0,0,0,0),
(-33076,0,0,0,0,0,664232,0,0,0,0),
(-33142,0,0,0,0,0,0,2,0,0,0),
(-33150,0,0,0,0,0,0,2,0,0,0),
(-33191,0,6,32768,1024,64,0,0,0,0,0),
(-33881,0,0,0,0,0,0,2,0,0,0),
(-34497,0,0,0,0,0,0,2,0,0,0),
(-34500,0,0,0,0,0,0,2,0,0,0),
(-34753,0,6,6144,4,4096,0,2,0,0,0),
(-34914,0,6,8192,0,0,0,0,0,0,0),
(-34935,0,0,0,0,0,0,0,0,0,8),
(-34950,0,0,0,0,0,0,2,0,0,0),
(-35100,0,9,4096,0,1,0,0,0,0,0),
(-35541,0,0,0,0,0,8388608,0,0,0,0),
(-41635,0,0,0,0,0,664232,0,0,0,0),
(-44442,0,3,8388608,64,0,0,65536,0,0,1),
(-44445,0,3,19,69632,0,0,0,0,0,0),
(-44449,0,3,551686775,102472,0,0,2,0,0,0),
(-44557,0,3,32,0,0,0,0,0,0,0),
(-45234,0,0,0,0,0,0,2,0,0,0),
(-46854,0,0,0,0,0,0,2,0,0,0),
(-46867,0,0,0,0,0,0,2,0,0,0),
(-46913,0,4,64,1028,0,0,262144,0,0,0),
(-46945,0,4,0,65536,0,0,0,0,0,0),
(-47195,0,5,2,0,0,0,0,0,0,0),
(-47201,0,5,16393,262144,0,0,0,0,0,0),
(-47245,0,5,2,0,0,0,1,0,0,0),
(-47258,0,5,0,8388608,0,0,65536,0,0,0),
(-47263,32,5,0,0,0,0,2,0,0,20),
(-47509,0,0,0,0,0,0,2,0,0,0),
(-47516,0,6,6144,65536,0,0,0,0,0,0),
(-47569,0,6,16384,0,0,16384,0,0,0,0),
(-47580,0,6,0,0,64,0,65536,0,0,0),
(-48483,0,7,34816,1088,0,0,0,0,0,0),
(-48496,0,7,96,33554434,0,0,2,0,0,0),
(-48506,0,7,5,0,0,0,0,0,0,0),
(-48516,0,7,5,0,0,0,2,0,0,30),
(-48539,0,7,16,67108864,0,262144,0,0,0,0),
(-48988,0,0,0,0,0,0,2,0,0,0),
(-49004,0,0,0,0,0,0,51,0,0,0),
(-49018,0,15,20971520,0,0,0,0,0,0,0),
(-49149,0,15,6,131074,0,0,0,0,0,0),
(-49188,0,15,0,131072,0,0,0,0,0,0),
(-49208,0,15,4194304,65536,0,0,0,0,0,0),
(-49217,0,15,0,0,2,0,0,0,0,1),
(-49219,0,0,0,0,0,4,0,0,0,0),
(-49223,0,15,17,134348800,0,0,0,0,0,0),
(-49467,0,15,16,131072,0,0,0,0,0,0),
(-50880,0,15,0,67108864,0,0,0,0,0,0),
(-51459,0,0,0,0,0,4,0,0,0,0),
(-51474,0,0,0,0,0,0,65536,0,0,0),
(-51521,0,11,0,16777216,0,0,0,0,0,0),
(-51523,0,11,0,1,0,65536,0,0,50,0),
(-51556,0,11,192,0,16,0,2,0,0,0),
(-51562,0,11,256,0,16,0,0,0,0,0),
(-51625,0,8,268476416,0,0,0,0,0,0,0),
(-51627,0,0,0,0,0,0,112,0,0,0),
(-51634,0,0,0,0,0,0,2,0,0,0),
(-51664,0,8,131072,8,0,0,0,0,0,0),
(-51672,0,0,0,0,0,0,16,0,0,1),
(-51692,0,8,516,0,0,0,0,0,0,0),
(-51940,0,0,0,0,0,0,0,0,20,0),
(-52127,0,0,0,0,0,0,0,0,0,3),
(-52795,0,6,1,0,0,0,0,0,0,0),
(-53178,0,9,0,268435456,0,65536,0,0,100,0),
(-53215,0,9,1,0,0,0,0,0,0,0),
(-53221,0,9,0,1,0,0,0,0,0,0),
(-53228,0,9,32,16777216,0,0,0,0,0,0),
(-53234,0,9,131072,1,1,0,2,0,0,0),
(-53256,0,9,2048,8388609,0,0,2,0,0,0),
(-53290,0,9,2048,1,512,0,2,0,0,0),
(-53375,0,10,0,8192,0,1024,0,0,0,6),
(-53380,0,10,8388608,163840,0,0,262146,0,0,0),
(-53486,0,10,8388608,163840,0,0,262146,0,0,0),
(-53501,0,0,0,0,0,0,2,0,0,0),
(-53527,1,10,0,0,4,1024,1,0,100,0),
(-53551,0,10,4096,0,0,0,0,0,0,0),
(-53569,0,10,1075838976,65536,0,0,0,0,0,0),
(-53671,0,10,8388608,0,0,0,0,0,0,0),
(-53695,0,10,8388608,0,8,16,0,0,0,0),
(-53709,2,10,16384,0,0,0,0,0,0,0),
(-54639,0,15,4194304,65536,0,0,0,0,0,0),
(-54747,0,0,0,0,0,0,65536,0,0,0),
(-55666,0,15,1,134217728,0,0,0,0,0,0),
(-56342,0,9,24,134217728,147456,0,0,0,0,22),
(-56636,0,4,32,0,0,0,262144,0,0,6),
(-57470,0,6,1,0,0,0,0,0,0,0),
(-57878,0,0,0,0,0,0,16,0,0,0),
(-58872,0,0,0,0,0,0,270403,0,0,0),
(-59088,0,4,0,2,0,1024,0,0,0,0),
(-61846,0,0,0,0,0,64,0,0,0,0),
(-62764,0,9,0,268435456,0,65536,0,0,100,0),
(-63156,0,5,1,192,0,0,0,0,0,0),
(-63373,0,11,2147483648,0,0,65536,0,0,0,0),
(-63730,0,6,2048,4,0,0,0,0,0,0),
(-64127,0,6,1,1,0,0,0,0,0,0),
(-65661,0,15,4194321,537001988,0,16,0,0,100,0),
(-66799,0,15,4194304,0,0,0,0,0,0,0);

View File

@@ -1741,52 +1741,76 @@ void SpellMgr::LoadSpellProcEvents()
}
uint32 count = 0;
uint32 customProc = 0;
do
{
Field* fields = result->Fetch();
uint32 entry = fields[0].GetUInt32();
int32 spellId = fields[0].GetInt32();
SpellInfo const* spell = GetSpellInfo(entry);
if (!spell)
bool allRanks = false;
if (spellId < 0)
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` does not exist", entry);
allRanks = true;
spellId = -spellId;
}
SpellInfo const* spellInfo = GetSpellInfo(spellId);
if (!spellInfo)
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` does not exist", spellId);
continue;
}
SpellProcEventEntry spe;
spe.schoolMask = fields[1].GetInt8();
spe.spellFamilyName = fields[2].GetUInt16();
spe.spellFamilyMask[0] = fields[3].GetUInt32();
spe.spellFamilyMask[1] = fields[4].GetUInt32();
spe.spellFamilyMask[2] = fields[5].GetUInt32();
spe.procFlags = fields[6].GetUInt32();
spe.procEx = fields[7].GetUInt32();
spe.ppmRate = fields[8].GetFloat();
spe.customChance = fields[9].GetFloat();
spe.cooldown = fields[10].GetUInt32();
mSpellProcEventMap[entry] = spe;
if (spell->ProcFlags == 0)
if (allRanks)
{
if (spe.procFlags == 0)
if (!spellInfo->IsRanked())
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` with all ranks, but spell has no ranks.", spellId);
if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId))
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` probally not triggered spell", entry);
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` is not first rank of spell.", spellId);
continue;
}
customProc++;
}
SpellProcEventEntry spellProcEvent;
spellProcEvent.schoolMask = fields[1].GetInt8();
spellProcEvent.spellFamilyName = fields[2].GetUInt16();
spellProcEvent.spellFamilyMask[0] = fields[3].GetUInt32();
spellProcEvent.spellFamilyMask[1] = fields[4].GetUInt32();
spellProcEvent.spellFamilyMask[2] = fields[5].GetUInt32();
spellProcEvent.procFlags = fields[6].GetUInt32();
spellProcEvent.procEx = fields[7].GetUInt32();
spellProcEvent.ppmRate = fields[8].GetFloat();
spellProcEvent.customChance = fields[9].GetFloat();
spellProcEvent.cooldown = fields[10].GetUInt32();
while (spellInfo)
{
if (mSpellProcEventMap.find(spellInfo->Id) != mSpellProcEventMap.end())
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` already has its first rank in table.", spellInfo->Id);
break;
}
if (!spellInfo->ProcFlags && !spellProcEvent.procFlags)
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` probally not triggered spell", spellInfo->Id);
mSpellProcEventMap[spellInfo->Id] = spellProcEvent;
if (allRanks)
spellInfo = spellInfo->GetNextRankSpell();
else
break;
}
++count;
} while (result->NextRow());
if (customProc)
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u extra and %u custom spell proc event conditions in %u ms", count, customProc, GetMSTimeDiffToNow(oldMSTime));
else
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u extra spell proc event conditions in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
while (result->NextRow());
TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u extra spell proc event conditions in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
void SpellMgr::LoadSpellProcs()
@@ -1826,6 +1850,9 @@ void SpellMgr::LoadSpellProcs()
if (allRanks)
{
if (!spellInfo->IsRanked())
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` with all ranks, but spell has no ranks.", spellId);
if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId))
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` is not first rank of spell.", spellId);
@@ -1855,9 +1882,10 @@ void SpellMgr::LoadSpellProcs()
{
if (mSpellProcMap.find(spellInfo->Id) != mSpellProcMap.end())
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` has duplicate entry in the table", spellInfo->Id);
TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc` already has its first rank in table.", spellInfo->Id);
break;
}
SpellProcEntry procEntry = SpellProcEntry(baseProcEntry);
// take defaults from dbcs