From d46f36f7737e6c558c50e1d2a4eadb202ed666bb Mon Sep 17 00:00:00 2001 From: ariel- Date: Sat, 10 Mar 2018 00:57:19 -0300 Subject: Core/Spells: tweak 'neutral' spell positivity - Fixes Mind Control dummy self aura appearing as a debuff --- src/server/game/Spells/SpellInfo.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3