aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQAston <qaston@gmail.com>2011-08-26 14:23:23 +0200
committerQAston <qaston@gmail.com>2011-08-26 14:23:23 +0200
commite2d592f38000c3a350b4ca5aa38c0f89eef6aa56 (patch)
tree7fb137a61303916e2a45d10000898aa190adb672 /src
parent2ee88d76dac2714e1feaefc4e1aa716787e1b9f3 (diff)
Core/Spells: Interrupt periodic trigger auras when triggered spells fails to cast. Closes #2598
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index a7370c3f74f..6476eabb3bf 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -2922,7 +2922,11 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered
SpellCastResult result = CheckCast(true);
if (result != SPELL_CAST_OK && !IsAutoRepeat()) //always cast autorepeat dummy for triggering
{
- if (triggeredByAura && triggeredByAura->GetSpellInfo()->IsChanneled())
+ // Periodic auras should be interrupted when aura triggers a spell which can't be cast
+ // for example bladestorm aura should be removed on disarm as of patch 3.3.5
+ // channeled periodic spells should be affected by this (arcane missiles, penance, etc)
+ // a possible alternative sollution for those would be validating aura target on unit state change
+ if (triggeredByAura && triggeredByAura->IsPeriodic())
{
SendChannelUpdate(0);
triggeredByAura->GetBase()->SetDuration(0);