aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2013_07_24_03_world_spell_proc_event.sql876
-rw-r--r--src/server/game/Spells/SpellMgr.cpp86
2 files changed, 933 insertions, 29 deletions
diff --git a/sql/updates/world/2013_07_24_03_world_spell_proc_event.sql b/sql/updates/world/2013_07_24_03_world_spell_proc_event.sql
new file mode 100644
index 00000000000..0e179e54ec8
--- /dev/null
+++ b/sql/updates/world/2013_07_24_03_world_spell_proc_event.sql
@@ -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);
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 9cedfdf922f..7b162b5abf0 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -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)
+ {
+ 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", entry);
+ TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` does not exist", spellId);
continue;
}
- SpellProcEventEntry spe;
+ if (allRanks)
+ {
+ 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` is not first rank of spell.", spellId);
+ continue;
+ }
+ }
- 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();
+ SpellProcEventEntry spellProcEvent;
- mSpellProcEventMap[entry] = spe;
+ 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();
- if (spell->ProcFlags == 0)
+ while (spellInfo)
{
- if (spe.procFlags == 0)
+ if (mSpellProcEventMap.find(spellInfo->Id) != mSpellProcEventMap.end())
{
- TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` probally not triggered spell", entry);
- continue;
+ TC_LOG_ERROR(LOG_FILTER_SQL, "Spell %u listed in `spell_proc_event` already has its first rank in table.", spellInfo->Id);
+ break;
}
- customProc++;
+
+ 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));
+ ++count;
+ }
+ 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