From 3fc61524ffe12a6790a3438cd8cd324c5b363c60 Mon Sep 17 00:00:00 2001 From: spp Date: Sun, 13 Dec 2009 11:35:12 +0100 Subject: Implementation of glyph of Power Word: Shield. By rammbonr5, closes #411 --HG-- branch : trunk --- src/game/SpellAuras.cpp | 20 ++++++++++++++++++++ src/game/Unit.cpp | 7 ------- 2 files changed, 20 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 27679b20b7c..2f533e8bfff 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1579,6 +1579,26 @@ void AuraEffect::HandleAuraEffectSpecificMods(bool apply, bool Real, bool change DoneActualBenefit *= caster->CalculateLevelPenalty(GetSpellProto()); m_amount += (int32)DoneActualBenefit; } + + // we have exact amount now so apply mods affecting all boni + switch (m_spellProto->SpellFamilyName) + { + case SPELLFAMILY_PRIEST: + // Glyph of Power Word: Shield + if (m_spellProto->SpellFamilyFlags[0] & 0x1 && m_spellProto->SpellFamilyFlags[2] & 0x400 && + GetAuraName() == SPELL_AURA_SCHOOL_ABSORB) + { + if (AuraEffect* glyph = caster->GetAuraEffect(55672,0)) + { + // instantly heal m_amount% of the absorb-value + int32 heal = (glyph->GetAmount() * m_amount)/100; + caster->CastCustomSpell(m_target, 56160, &heal, NULL, NULL, true, 0, this); + } + } + break; + default: + break; + } } } } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 884588e0456..7cdc513535f 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5786,13 +5786,6 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger target = this; break; } - // Glyph of Power Word: Shield - case 55672: - { - basepoints0 = damage * triggerAmount/100; - triggered_spell_id = 56160; - break; - } // Glyph of Prayer of Healing case 55680: { -- cgit v1.2.3