Core/Spells: Spell's damage should not interrupt auras applied by the same spell (fixes Frost Nova and water elemental Freeze), patch by dr.tenma

Closes issue #3052.

--HG--
branch : trunk
This commit is contained in:
Shauren
2010-09-19 17:02:05 +02:00
parent 21c85a155c
commit 2983dab1cb
+9 -1
View File
@@ -14357,6 +14357,14 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit * pTarget, uint32 procFlag,
takeCharges = true; takeCharges = true;
else else
{ {
// Spell own direct damage at apply wont break the CC
if (procSpell && (procSpell->Id == triggeredByAura->GetId()))
{
Aura * aura = triggeredByAura->GetBase();
// called from spellcast, should not have ticked yet
if (aura->GetDuration() == aura->GetMaxDuration())
break;
}
int32 damageLeft = triggeredByAura->GetAmount(); int32 damageLeft = triggeredByAura->GetAmount();
// No damage left // No damage left
if (damageLeft < int32(damage)) if (damageLeft < int32(damage))
@@ -14364,8 +14372,8 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit * pTarget, uint32 procFlag,
else else
triggeredByAura->SetAmount(damageLeft - damage); triggeredByAura->SetAmount(damageLeft - damage);
} }
}
break; break;
}
//case SPELL_AURA_ADD_FLAT_MODIFIER: //case SPELL_AURA_ADD_FLAT_MODIFIER:
//case SPELL_AURA_ADD_PCT_MODIFIER: //case SPELL_AURA_ADD_PCT_MODIFIER:
// HandleSpellModAuraProc // HandleSpellModAuraProc