diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-05-17 13:33:24 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-05-17 13:33:24 +0200 |
commit | 37145b6203c5781856ca0546bd57798bbfcc8ab5 (patch) | |
tree | 57af96f6c3c63be39074185b9c88c0b69db6328b /src | |
parent | 63f7a6d3d91c0181d753e8ed8e6bbb97aaed4adb (diff) |
Core/Spells: Fixed spell modifiers losing charges on cancelled casts
Closes #247
Closes #640
Closes #1353
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
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); |