From 7ed391aa92f907e4b3ce2503628fde35f6a91525 Mon Sep 17 00:00:00 2001 From: QAston Date: Mon, 18 May 2009 21:54:11 +0200 Subject: [PATCH] *Fix beacon of light *Apply healing aura mods to leech auras. --HG-- branch : trunk --- sql/updates/3393_world_spell_proc_event.sql | 1 + sql/world_spell_full.sql | 18 ++++++++++++---- src/game/SpellAuras.cpp | 4 +--- src/game/Unit.cpp | 23 ++++++++++++++++++--- 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 sql/updates/3393_world_spell_proc_event.sql diff --git a/sql/updates/3393_world_spell_proc_event.sql b/sql/updates/3393_world_spell_proc_event.sql new file mode 100644 index 0000000000..b6781bfa1c --- /dev/null +++ b/sql/updates/3393_world_spell_proc_event.sql @@ -0,0 +1 @@ +DELETE FROM `spell_proc_event` WHERE `entry` IN (53651); \ No newline at end of file diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql index 94b3be8c85..fd5746770a 100644 --- a/sql/world_spell_full.sql +++ b/sql/world_spell_full.sql @@ -827,7 +827,7 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (27179, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), (27419, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), (27498, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), -(27521, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(27521, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 15), (27656, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), (27774, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), (27787, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), @@ -1340,7 +1340,6 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (53569, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0), (53576, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0), (53601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), -(53651, 0, 10, 3221258240, 0, 0, 0, 0, 0, 0, 0), (53671, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), (53672, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0), (53673, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), @@ -1451,7 +1450,7 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (60575, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), (60617, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), (60710, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), -(60717, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60717, 0, 7, 2, 0, 0, 0, 0, 0, 100, 0), (60719, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), (60722, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), (60724, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), @@ -1483,7 +1482,18 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (9782, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), (9784, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), (9799, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), -(56372, 0, 3, 0, 128, 0, 16384, 0, 0, 0, 0); +(56372, 0, 3, 0, 128, 0, 16384, 0, 0, 0, 0), +(62147, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(57907, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(55381, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 15), +(62459, 0, 15, 4, 0, 0, 0, 0, 0, 0, 0), +(60176, 0, 4, 32, 16, 0, 0, 0, 0, 0, 0), +(60529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(51528, 0, 0, 0, 0, 0, 0, 0, 2.5, 0, 0), +(51529, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0), +(51530, 0, 0, 0, 0, 0, 0, 0, 7.5, 0, 0), +(51531, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0), +(51532, 0, 0, 0, 0, 0, 0, 0, 12.5, 0, 0); -- -------- -- ENCHANT PROC diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 19d4b43bb3..097073cd96 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -5944,12 +5944,10 @@ void AuraEffect::PeriodicTick() } } - if(Player *modOwner = pCaster->GetSpellModOwner()) modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_MULTIPLE_VALUE, multiplier); - // Don't apply heal mods for this aura - uint32 heal = uint32(new_damage * multiplier);//pCaster->SpellHealingBonus(pCaster, spellProto, uint32(new_damage * multiplier), DOT, stackAmount); + uint32 heal = uint32(pCaster->SpellHealingBonus(pCaster, spellProto, uint32(new_damage * multiplier), DOT, stackAmount)); int32 gain = pCaster->DealHeal(pCaster, heal, spellProto); pCaster->getHostilRefManager().threatAssist(pCaster, gain * 0.5f, spellProto); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 7cfb6a1d16..d9364b1c1b 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9350,11 +9350,23 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint int32 DoneAdvertisedBenefit = SpellBaseHealingBonus(GetSpellSchoolMask(spellProto)); int32 TakenAdvertisedBenefit = SpellBaseHealingBonusForVictim(GetSpellSchoolMask(spellProto), pVictim); + bool scripted = false; + for (uint8 i=0;i<3;++i) + { + switch (spellProto->EffectApplyAuraName[i]) + { + // These auras do not use healing coeff + case SPELL_AURA_PERIODIC_LEECH: + case SPELL_AURA_PERIODIC_HEALTH_FUNNEL: + scripted = true; + break; + } + } + // Check for table values - SpellBonusEntry const* bonus = spellmgr.GetSpellBonusData(spellProto->Id); + SpellBonusEntry const* bonus = scripted ? spellmgr.GetSpellBonusData(spellProto->Id) : NULL; float coeff; float factorMod = 1.0f; - bool scripted = false; if (bonus) { if (damagetype == DOT) @@ -9384,6 +9396,11 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint { factorMod *= 0.45f; } + // Already set to scripted? so not uses healing bonus coefficient + else if (scripted) + { + coeff = 0.0f; + } } // Default calculation @@ -13732,7 +13749,7 @@ void Unit::AddAura(uint32 spellId, Unit* target) if (!eff_mask) return; - Aura *Aur = new Aura(spellInfo, eff_mask, NULL, target, this); + Aura *Aur = new Aura(spellInfo, eff_mask, NULL, target, this, NULL, target); target->AddAura(Aur); }