From 110ff906e8a82abb67fb17eaa045a7984db1fc97 Mon Sep 17 00:00:00 2001 From: Den Date: Sun, 26 Jul 2009 20:32:05 +0400 Subject: [PATCH] [8253] Some spell proc fixes. Signed-off-by: VladimirMangos --- sql/mangos.sql | 46 ++++++++++--------- sql/updates/8253_01_mangos_spell_chain.sql | 16 +++++++ .../8253_02_mangos_spell_proc_event.sql | 21 +++++++++ sql/updates/Makefile.am | 4 ++ src/game/Unit.cpp | 13 +++++- src/shared/revision_nr.h | 2 +- 6 files changed, 79 insertions(+), 23 deletions(-) create mode 100644 sql/updates/8253_01_mangos_spell_chain.sql create mode 100644 sql/updates/8253_02_mangos_spell_proc_event.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index f027c62bf..3f5149fea 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -23,7 +23,7 @@ DROP TABLE IF EXISTS `db_version`; CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, - `required_8251_03_mangos_spell_proc_event` bit(1) default NULL + `required_8253_02_mangos_spell_proc_event` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -15649,7 +15649,7 @@ INSERT INTO spell_chain VALUES (27219,11700,689,7,0), (27220,27219,689,8,0), (47857,27220,689,9,0), -/*DrainSoul*/ +/*Drain Soul*/ (1120,0,1120,1,0), (8288,1120,1120,2,0), (8289,8288,1120,3,0), @@ -15665,14 +15665,20 @@ INSERT INTO spell_chain VALUES (59161,48181,48181,2,0), (59163,59161,48181,3,0), (59164,59163,48181,4,0), -/*HowlofTerror*/ +/*Howl of Terror*/ (5484,0,5484,1,0), (17928,5484,5484,2,0), -/*SeedofCorruption*/ +/*Seed of Corruption*/ (27243,0,27243,1,0), (47835,27243,27243,2,0), (47836,47835,27243,3,0), -/*UnstableAffliction*/ +/* Shadow embrace */ +(32385,0,32385,1,0), +(32387,32385,32385,2,0), +(32392,32387,32385,3,0), +(32393,32392,32385,4,0), +(32394,32393,32385,5,0), +/*Unstable Affliction*/ (30108,0,30108,1,0), (30404,30108,30108,2,0), (30405,30404,30108,3,0), @@ -17239,7 +17245,7 @@ INSERT INTO `spell_proc_event` VALUES (12999, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 4.000000, 0.000000, 0), (13000, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 6.000000, 0.000000, 0), (13001, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 8.000000, 0.000000, 0), -(13002, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 10.000000, 0.000000, 0), +(13002, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,10.000000, 0.000000, 0), (13045, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (13046, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (13047, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), @@ -17333,8 +17339,8 @@ INSERT INTO `spell_proc_event` VALUES (20131, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0), (20132, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0), (20164, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 5.000000, 0.000000, 0), -(20165, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 20.000000, 0.000000, 0), -(20166, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 20.000000, 0.000000, 0), +(20165, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,20.000000, 0.000000, 0), +(20166, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,15.000000, 0.000000, 0), (20182, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0), (20210, 0x00000000, 10, 0xC0000000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (20212, 0x00000000, 10, 0xC0000000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), @@ -17372,7 +17378,7 @@ INSERT INTO `spell_proc_event` VALUES (24353, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (24389, 0x00000000, 3, 0x00C00017, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (24658, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00014110, 0x00000000, 0.000000, 0.000000, 0), -(24905, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 15.000000, 0.000000, 0), +(24905, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002,15.000000, 0.000000, 0), (24932, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 6), (25050, 0x00000004, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (25669, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1.000000, 0.000000, 0), @@ -17468,7 +17474,7 @@ INSERT INTO `spell_proc_event` VALUES (31570, 0x00000000, 3, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31785, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00008800, 0x00000000, 0.000000, 0.000000, 0), (31794, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0), -(31801, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 20.000000, 0.000000, 0), +(31801, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,20.000000, 0.000000, 0), (31833, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31835, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31836, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), @@ -17478,11 +17484,7 @@ INSERT INTO `spell_proc_event` VALUES (31877, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0), (31878, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0), (31904, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0), -(32385, 0x00000000, 5, 0x00000402, 0x00000011, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(32387, 0x00000000, 5, 0x00000402, 0x00000011, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(32392, 0x00000000, 5, 0x00000402, 0x00000011, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(32393, 0x00000000, 5, 0x00000402, 0x00000011, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(32394, 0x00000000, 5, 0x00000402, 0x00000011, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), +(32385, 0x00000000, 5, 0x00000001, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (32409, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (32587, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0), (32642, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0), @@ -17758,6 +17760,7 @@ INSERT INTO `spell_proc_event` VALUES (51483, 0x00000001, 11, 0x20000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0), (51485, 0x00000001, 11, 0x20000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0), (51486, 0x00000001, 11, 0x20000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0), +(51528, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,12.500000, 0.000000, 0), (51556, 0x00000000, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (51557, 0x00000000, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (51558, 0x00000000, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), @@ -17787,12 +17790,12 @@ INSERT INTO `spell_proc_event` VALUES (51698, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 1), (51700, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 1), (51701, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 1), -(51940, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 20.000000, 0), -(51989, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 20.000000, 0), -(52004, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 20.000000, 0), -(52005, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 20.000000, 0), -(52007, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 20.000000, 0), -(52008, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 20.000000, 0), +(51940, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,20.000000, 0), +(51989, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,20.000000, 0), +(52004, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,20.000000, 0), +(52005, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,20.000000, 0), +(52007, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,20.000000, 0), +(52008, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,20.000000, 0), (52020, 0x00000000, 7, 0x00008000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (52127, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 3), (52420, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 30), @@ -17910,6 +17913,7 @@ INSERT INTO `spell_proc_event` VALUES (60132, 0x00000000, 15, 0x00000000, 0x08020000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (60170, 0x00000000, 5, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (60172, 0x00000000, 5, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0), +(60442, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), (60493, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), (60503, 0x00000000, 4, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (60537, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), diff --git a/sql/updates/8253_01_mangos_spell_chain.sql b/sql/updates/8253_01_mangos_spell_chain.sql new file mode 100644 index 000000000..19d35f8cd --- /dev/null +++ b/sql/updates/8253_01_mangos_spell_chain.sql @@ -0,0 +1,16 @@ +ALTER TABLE db_version CHANGE COLUMN required_8251_03_mangos_spell_proc_event required_8253_01_mangos_spell_chain bit; + +DELETE FROM `spell_chain` WHERE `spell_id` IN (32385,32387,32392,32393,32394,51528,51529,51530,51531,51532); +INSERT INTO `spell_chain` (`spell_id`, `prev_spell`, `first_spell`, `rank`, `req_spell`) VALUES +/*Shadow embrace*/ +(32385,0,32385,1,0), +(32387,32385,32385,2,0), +(32392,32387,32385,3,0), +(32393,32392,32385,4,0), +(32394,32393,32385,5,0), +/*Maelstrom Weapon*/ +(51528,0,51528,1,0), +(51529,51528,51528,2,0), +(51530,51529,51528,3,0), +(51531,51530,51528,4,0), +(51532,51531,51528,5,0); \ No newline at end of file diff --git a/sql/updates/8253_02_mangos_spell_proc_event.sql b/sql/updates/8253_02_mangos_spell_proc_event.sql new file mode 100644 index 000000000..8e3472cbc --- /dev/null +++ b/sql/updates/8253_02_mangos_spell_proc_event.sql @@ -0,0 +1,21 @@ +ALTER TABLE db_version CHANGE COLUMN required_8253_01_mangos_spell_chain required_8253_02_mangos_spell_proc_event bit; + +/*Bandit's Insignia*/ +DELETE FROM `spell_proc_event` WHERE entry IN (60442); +INSERT INTO spell_proc_event VALUES +(60442, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45); + +/*Seal of wisdom*/ +DELETE FROM `spell_proc_event` WHERE `entry` IN (20166); +INSERT INTO `spell_proc_event` VALUES +(20166, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,15.000000, 0.000000, 0); + +/*Shadow embrace*/ +DELETE FROM `spell_proc_event` WHERE `entry` IN (32385); +INSERT INTO `spell_proc_event` VALUES +(32385, 0x00000000, 5, 0x00000001, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); + +/*Maelstrom Weapon*/ +DELETE FROM `spell_proc_event` WHERE `entry` IN (51528); +INSERT INTO `spell_proc_event` VALUES +(51528, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,12.500000, 0.000000, 0); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 463d1c432..89aaa3def 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -258,6 +258,8 @@ pkgdata_DATA = \ 8251_01_mangos_spell_chain.sql \ 8251_02_mangos_spell_bonus_data.sql \ 8251_03_mangos_spell_proc_event.sql \ + 8253_01_mangos_spell_chain.sql \ + 8253_02_mangos_spell_proc_event.sql \ README ## Additional files to include when running 'make dist' @@ -496,4 +498,6 @@ EXTRA_DIST = \ 8251_01_mangos_spell_chain.sql \ 8251_02_mangos_spell_bonus_data.sql \ 8251_03_mangos_spell_proc_event.sql \ + 8253_01_mangos_spell_chain.sql \ + 8253_02_mangos_spell_proc_event.sql \ README diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 0b67a2f1d..9f37a130c 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6170,7 +6170,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB Item* castItem = triggeredByAura->GetCastItemGUID() && GetTypeId()==TYPEID_PLAYER ? ((Player*)this)->GetItemByGuid(triggeredByAura->GetCastItemGUID()) : NULL; - // Try handle uncnown trigger spells + // Try handle unknown trigger spells if (sSpellStore.LookupEntry(trigger_spell_id)==NULL) { switch (auraSpellInfo->SpellFamilyName) @@ -6815,6 +6815,17 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB ((Player*)this)->RemoveSpellCategoryCooldown(1209, true); break; } + // Maelstrom Weapon + case 53817: + { + // have rank dependent proc chance, ignore too often cases + // PPM = 2.5 * (rank of talent), + uint32 rank = spellmgr.GetSpellRank(auraSpellInfo->Id); + // 5 rank -> 100% 4 rank -> 80% and etc from full rate + if(!roll_chance_i(20*rank)) + return false; + break; + } // Brain Freeze case 57761: { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index dd06e1250..fc6b3185e 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8252" + #define REVISION_NR "8253" #endif // __REVISION_NR_H__