diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 321c18dbf..1f9799dfd 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1447,8 +1447,7 @@ void Aura::TriggerSpell() if (mana) { mana /= 10; - caster->ModifyPower( POWER_MANA, mana ); - caster->SendEnergizeSpellLog(caster, 23493, mana, POWER_MANA); + caster->EnergizeBySpell(caster, 23493, mana, POWER_MANA); } return; } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 8ecbd2145..2cf5d4dd4 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2369,9 +2369,7 @@ void Spell::EffectPowerDrain(uint32 i) int32 gain = int32(new_damage * manaMultiplier); - m_caster->ModifyPower(POWER_MANA,gain); - //send log - m_caster->SendEnergizeSpellLog(m_caster, m_spellInfo->Id, gain, POWER_MANA); + m_caster->EnergizeBySpell(m_caster, m_spellInfo->Id, gain, POWER_MANA); } } @@ -2792,8 +2790,7 @@ void Spell::EffectEnergize(uint32 i) if(unitTarget->GetMaxPower(power) == 0) return; - unitTarget->ModifyPower(power,damage); - m_caster->SendEnergizeSpellLog(unitTarget, m_spellInfo->Id, damage, power); + m_caster->EnergizeBySpell(unitTarget, m_spellInfo->Id, damage, power); // Mad Alchemist's Potion if (m_spellInfo->Id == 45051) @@ -2855,8 +2852,7 @@ void Spell::EffectEnergisePct(uint32 i) return; uint32 gain = damage * maxPower / 100; - unitTarget->ModifyPower(power, gain); - m_caster->SendEnergizeSpellLog(unitTarget, m_spellInfo->Id, gain, power); + m_caster->EnergizeBySpell(unitTarget, m_spellInfo->Id, gain, power); } void Spell::SendLoot(uint64 guid, LootType loottype) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ca6622bc1..4d5301106 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -7643,6 +7643,13 @@ void Unit::SendEnergizeSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, Po SendMessageToSet(&data, true); } +void Unit::EnergizeBySpell(Unit *pVictim, uint32 SpellID, uint32 Damage, Powers powertype) +{ + SendEnergizeSpellLog(pVictim, SpellID, Damage, powertype); + // needs to be called after sending spell log + ModifyPower(powertype, Damage); +} + uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack) { if(!spellProto || !pVictim || damagetype==DIRECT_DAMAGE ) diff --git a/src/game/Unit.h b/src/game/Unit.h index 89dc497d6..cbaa47af4 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1119,6 +1119,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject void SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, uint32 OverHeal, bool critical = false); void SendEnergizeSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage,Powers powertype); + void EnergizeBySpell(Unit *pVictim, uint32 SpellID, uint32 Damage, Powers powertype); uint32 SpellNonMeleeDamageLog(Unit *pVictim, uint32 spellID, uint32 damage); void CastSpell(Unit* Victim, uint32 spellId, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0); void CastSpell(Unit* Victim,SpellEntry const *spellInfo, bool triggered, Item *castItem= NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 602a888f2..c3b5841f1 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 "8010" + #define REVISION_NR "8011" #endif // __REVISION_NR_H__