diff options
author | joschiwald <joschiwald@online.de> | 2013-07-21 15:12:34 +0200 |
---|---|---|
committer | joschiwald <joschiwald@online.de> | 2013-07-24 23:52:06 +0200 |
commit | e6a146aba83d98b65c9cdb62cd17132637b98c4e (patch) | |
tree | 4f28f3e4b9e1c16b3c7a178d51066509b5911e28 | |
parent | bf100ffc3cd5ea1d08f57c31aa9612fd19977462 (diff) |
Core/Spells: allow to use ranked spells in `spell_proc_event` table (like in `spell_proc` table)
-rw-r--r-- | sql/updates/world/2013_07_24_03_world_spell_proc_event.sql | 876 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 86 |
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 |