From ef500cc204c29f85125486f45f0ca82e4c3ac0ed Mon Sep 17 00:00:00 2001 From: "QAston@qaston-pc" Date: Sun, 1 Mar 2009 14:38:26 +0100 Subject: *Fix mana burn. *Fix glyph of dispel Magic (by Lightguard). *Add missing sql from latest rev. --HG-- branch : trunk --- sql/updates/1618_world.sql | 6 ++++++ src/game/SpellEffects.cpp | 17 ++++++++++++++++- src/game/Unit.cpp | 10 ++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 sql/updates/1618_world.sql diff --git a/sql/updates/1618_world.sql b/sql/updates/1618_world.sql new file mode 100644 index 00000000000..0f08c98b6ae --- /dev/null +++ b/sql/updates/1618_world.sql @@ -0,0 +1,6 @@ +-- Glyph of power word: shield +INSERT INTO `spell_proc_event` VALUES (55672, 0x00, 6, 0x00000001, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0); + +-- Bloodsurge +DELETE FROM `spell_proc_event` WHERE `entry` IN (46915); +INSERT INTO `spell_proc_event` VALUES (46915, 0x00, 4, 0x00000040, 0x00000404, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index d0327ea522c..948b3cb7754 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2436,10 +2436,25 @@ void Spell::EffectPowerBurn(uint32 i) if(damage < 0) return; + Unit* caster = m_originalCaster ? m_originalCaster : m_caster; + int32 curPower = int32(unitTarget->GetPower(powertype)); - // resilience reduce mana draining effect at spell crit damage reduction (added in 2.4) + uint32 power = damage; + // Priest's Mana Burn, burn max amount of 26% of caster's mana + if ( m_spellInfo->SpellFamilyName==SPELLFAMILY_PRIEST && m_spellInfo->SpellFamilyFlags[0] & 0x10) + { + // Burn percentage of target's mana + power = damage * curPower / 100; + if (caster) + { + casterPower = caster->GetPower(powertype)*0.26f + if (casterPowerGetTypeId() == TYPEID_PLAYER ) power -= ((Player*)unitTarget)->GetSpellCritDamageReduction(power); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index a6287c07a9c..625cc148baf 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5463,6 +5463,16 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu triggered_spell_id = 56160; break; } + // Glyph of Dispel Magic + case 55677: + { + if(!target->IsFriendlyTo(this)) + return false; + + basepoints0 = int32(target->GetMaxHealth() * triggerAmount / 100); + triggered_spell_id = 56131; + break; + } // Oracle Healing Bonus ("Garments of the Oracle" set) case 26169: { -- cgit v1.2.3