diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2016-12-30 15:59:59 -0300 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2016-12-30 15:59:59 -0300 |
| commit | ee6d1d02c09941e44ff76ed240770f1102f14267 (patch) | |
| tree | 2f8e4e1f83bfb7c017c5340e19208d6b1ac3c339 /src/server/game/Spells | |
| parent | 07fb65a6f2ae490bd74a53c945b4eb166c2ec953 (diff) | |
Core/Spell: kill old charge restoring system. Mods are fully handled by proc system now.
- Fixes an edge case of spell failing due to out of range and re-adding charges to an existing aura.
Diffstat (limited to 'src/server/game/Spells')
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.h | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 32 |
3 files changed, 12 insertions, 30 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 8973a3efd50..232d96a62aa 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -902,7 +902,6 @@ bool Aura::ModStackAmount(int32 num, AuraRemoveMode removeMode /*= AURA_REMOVE_B if (refresh) { - RefreshSpellMods(); RefreshTimers(resetPeriodicTimer); // reset charges @@ -913,13 +912,6 @@ bool Aura::ModStackAmount(int32 num, AuraRemoveMode removeMode /*= AURA_REMOVE_B return false; } -void Aura::RefreshSpellMods() -{ - for (Aura::ApplicationMap::const_iterator appIter = m_applications.begin(); appIter != m_applications.end(); ++appIter) - if (Player* player = appIter->second->GetTarget()->ToPlayer()) - player->RestoreAllSpellMods(0, this); -} - bool Aura::HasMoreThanOneEffectForType(AuraType auraType) const { uint32 count = 0; diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h index 9cdf84e82cf..f37f7a96a44 100644 --- a/src/server/game/Spells/Auras/SpellAuras.h +++ b/src/server/game/Spells/Auras/SpellAuras.h @@ -148,8 +148,6 @@ class TC_GAME_API Aura void SetStackAmount(uint8 num); bool ModStackAmount(int32 num, AuraRemoveMode removeMode = AURA_REMOVE_BY_DEFAULT, bool resetPeriodicTimer = true); - void RefreshSpellMods(); - uint8 GetCasterLevel() const { return m_casterLevel; } bool HasMoreThanOneEffectForType(AuraType auraType) const; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 0071aa23f37..810fd9c8a68 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2979,13 +2979,10 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered triggeredByAura->GetBase()->SetDuration(0); } + // cleanup after mod system + // triggered spell pointer can be not removed in some cases if (m_caster->GetTypeId() == TYPEID_PLAYER) - { - m_caster->ToPlayer()->RestoreSpellMods(this); - // cleanup after mod system - // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); - } if (param1 || param2) SendCastResult(result, ¶m1, ¶m2); @@ -3091,8 +3088,6 @@ void Spell::cancel() { case SPELL_STATE_PREPARING: CancelGlobalCooldown(); - if (m_caster->GetTypeId() == TYPEID_PLAYER) - m_caster->ToPlayer()->RestoreSpellMods(this); // no break case SPELL_STATE_DELAYED: SendInterrupted(0); @@ -3187,14 +3182,12 @@ void Spell::cast(bool skipCheck) { SendCastResult(castResult, ¶m1, ¶m2); SendInterrupted(0); - //restore spell mods + + // cleanup after mod system + // triggered spell pointer can be not removed in some cases if (m_caster->GetTypeId() == TYPEID_PLAYER) - { - m_caster->ToPlayer()->RestoreSpellMods(this); - // cleanup after mod system - // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); - } + finish(false); SetExecutedCurrently(false); return; @@ -3214,10 +3207,11 @@ void Spell::cast(bool skipCheck) my_trade->SetSpell(m_spellInfo->Id, m_CastItem); SendCastResult(SPELL_FAILED_DONT_REPORT); SendInterrupted(0); - m_caster->ToPlayer()->RestoreSpellMods(this); + // cleanup after mod system // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); + finish(false); SetExecutedCurrently(false); return; @@ -3240,14 +3234,12 @@ void Spell::cast(bool skipCheck) if (m_spellState == SPELL_STATE_FINISHED) { SendInterrupted(0); - //restore spell mods + + // cleanup after mod system + // triggered spell pointer can be not removed in some cases if (m_caster->GetTypeId() == TYPEID_PLAYER) - { - m_caster->ToPlayer()->RestoreSpellMods(this); - // cleanup after mod system - // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); - } + finish(false); SetExecutedCurrently(false); return; |
