From b0e7dc95a4a05f3e78c833c0de29749e4df044af Mon Sep 17 00:00:00 2001 From: Astellar Date: Thu, 7 Jan 2010 00:24:58 +0300 Subject: [PATCH] Fixes issue 152. Now Improved Water Shield works as intended. 1. Removed hardcoded proc chance for Lesser Healing Wave (all ranks had equal proc chance). 2. Added proc chance for Chain Heal (patch 3.2). 3. Fixed bug with Lesser Healing Wave and Chain Heal rolled default spell proc chance at first and then correct chance in dummy proc. So they have never ever proced for low ranks of the talent. 4. Removed consumption of charges (patch 3.2). --HG-- branch : trunk --- sql/updates/6915_world_spell_proc_event.sql | 1 + sql/world.sql | 6 +++--- src/game/Unit.cpp | 15 ++++++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 sql/updates/6915_world_spell_proc_event.sql diff --git a/sql/updates/6915_world_spell_proc_event.sql b/sql/updates/6915_world_spell_proc_event.sql new file mode 100644 index 0000000000..5ef9121cc4 --- /dev/null +++ b/sql/updates/6915_world_spell_proc_event.sql @@ -0,0 +1 @@ +UPDATE spell_proc_event SET spellFamilyMask0 = spellFamilyMask0 | 0x100, customChance = 100 WHERE entry IN (16198, 16180, 16196); \ No newline at end of file diff --git a/sql/world.sql b/sql/world.sql index 4ef214b1c0..5e208424f3 100644 --- a/sql/world.sql +++ b/sql/world.sql @@ -5788,9 +5788,9 @@ INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFam ( 16086, 0x04, 11, 0x00000000, 0x00040000, 0x00000000, 0x00030000, 0x00000000, 0, 0, 0), -- Improved Fire Nova Totem (Rank 1) ( 16544, 0x04, 11, 0x00000000, 0x00040000, 0x00000000, 0x00030000, 0x00000000, 0, 0, 0), -- Improved Fire Nova Totem (Rank 2) ( 16176, 0x00, 11, 0x000001C0, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Ancestral Healing (Rank 1) -( 16180, 0x00, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0, 0, 0), -- Improved Water Shield (Rank 1) -( 16196, 0x00, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0, 0, 0), -- Improved Water Shield (Rank 2) -( 16198, 0x00, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0, 0, 0), -- Improved Water Shield (Rank 3) +( 16180, 0x00, 11, 0x000001C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0, 100, 0), -- Improved Water Shield (Rank 1) +( 16196, 0x00, 11, 0x000001C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0, 100, 0), -- Improved Water Shield (Rank 2) +( 16198, 0x00, 11, 0x000001C0, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0, 100, 0), -- Improved Water Shield (Rank 3) ( 16235, 0x00, 11, 0x000001C0, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Ancestral Healing (Rank 2) ( 16240, 0x00, 11, 0x000001C0, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Ancestral Healing (Rank 3) ( 16256, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Flurry (Rank 1) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 93694a21f2..51fdd22253 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6918,15 +6918,24 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // Improved Water Shield if (dummySpell->SpellIconID == 2287) { - // Lesser Healing Wave need aditional 60% roll - if (procSpell->SpellFamilyFlags[0] & 0x80 && !roll_chance_i(60)) + // Default chance for Healing Wave and Riptide + float chance = triggeredByAura->GetAmount(); + + if (procSpell->SpellFamilyFlags[0] & 0x80) + // Lesser Healing Wave - 0.6 of default + chance *= 0.6f; + else if (procSpell->SpellFamilyFlags[0] & 0x100) + // Chain heal - 0.3 of default + chance *= 0.3f; + + if (!roll_chance_f(chance)) return false; + // Water Shield if (AuraEffect const * aurEff = GetAura(SPELL_AURA_PROC_TRIGGER_SPELL, SPELLFAMILY_SHAMAN, 0, 0x00000020)) { uint32 spell = aurEff->GetSpellProto()->EffectTriggerSpell[aurEff->GetEffIndex()]; CastSpell(this, spell, true, castItem, triggeredByAura); - aurEff->GetParentAura()->DropAuraCharge(); return true; } return false;