aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 3969155fa41..8c7536babd4 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -14246,12 +14246,6 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* pTarget, uint32 procFlag,
if (i->aura->IsRemoved())
continue;
- // don't allow to proc from spells which have been recasted during spell proc
- // this code is a temp workaround, to fix procs of auras refreshed during other aura procs
- // will be dropped soon because of the new proc system implementation
- if (i->aura->GetDuration() == i->aura->GetMaxDuration())
- continue;
-
bool useCharges = i->aura->GetCharges() > 0;
bool takeCharges = false;
SpellEntry const* spellInfo = i->aura->GetSpellProto();
@@ -14413,6 +14407,14 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* pTarget, uint32 procFlag,
takeCharges = true;
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();
// No damage left
if (damageLeft < int32(damage))