From 37145b6203c5781856ca0546bd57798bbfcc8ab5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 17 May 2011 13:33:24 +0200 Subject: Core/Spells: Fixed spell modifiers losing charges on cancelled casts Closes #247 Closes #640 Closes #1353 --- src/server/game/Spells/Spell.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d2d422ba6e4..b35a17ba50f 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2957,9 +2957,12 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const * triggere // Prepare data for triggers prepareDataForTriggerSystem(triggeredByAura); + if (m_caster->GetTypeId() == TYPEID_PLAYER) + m_caster->ToPlayer()->SetSpellModTakingSpell(this, true); // calculate cast time (calculated after first CheckCast check to prevent charge counting for first CheckCast fail) m_casttime = GetSpellCastTime(m_spellInfo, this); - //m_caster->ModSpellCastTime(m_spellInfo, m_casttime, this); + if (m_caster->GetTypeId() == TYPEID_PLAYER) + m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); // don't allow channeled spells / spells with cast time to be casted while moving // (even if they are interrupted on moving, spells with almost immediate effect get to have their effect processed before movement interrupter kicks in) @@ -3028,6 +3031,8 @@ void Spell::cancel() { case SPELL_STATE_PREPARING: CancelGlobalCooldown(); + if (m_caster->GetTypeId() == TYPEID_PLAYER) + m_caster->ToPlayer()->RestoreSpellMods(this); case SPELL_STATE_DELAYED: SendInterrupted(0); SendCastResult(SPELL_FAILED_INTERRUPTED); -- cgit v1.2.3