diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 63dadd6ede3..c1f202a459e 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3801,7 +3801,7 @@ void SpellInfo::_InitializeSpellPositivity() switch (Effects[i].ApplyAuraName) { // has other non positive effect? - // then it should be marked negative despite of targets (ex 8510, 8511, 8893, 10267) + // then it should be marked negative if has same target as negative effect (ex 8510, 8511, 8893, 10267) case SPELL_AURA_DUMMY: case SPELL_AURA_MOD_STUN: case SPELL_AURA_MOD_FEAR: @@ -3809,9 +3809,13 @@ void SpellInfo::_InitializeSpellPositivity() case SPELL_AURA_TRANSFORM: case SPELL_AURA_MOD_ATTACKSPEED: case SPELL_AURA_MOD_DECREASE_SPEED: - if (!IsPositive()) - AttributesCu |= (SPELL_ATTR0_CU_NEGATIVE_EFF0 << i); + { + for (uint8 j = i + 1; j < MAX_SPELL_EFFECTS; ++j) + if (!IsPositiveEffect(j) && Effects[i].TargetA.GetTarget() == Effects[j].TargetA.GetTarget() && Effects[i].TargetB.GetTarget() == Effects[j].TargetB.GetTarget()) + AttributesCu |= (SPELL_ATTR0_CU_NEGATIVE_EFF0 << i); + break; + } default: break; } |