Core/Spells: Check a few aura effects for determining if should be negative

Port From (https://github.com/TrinityCore/TrinityCore/commit/81154a7455fccdcc55e740f98d73face3adc8da4)
This commit is contained in:
hondacrx
2022-02-28 14:06:44 -05:00
parent ce4851a33a
commit facb5c89a1
+14 -17
View File
@@ -3567,30 +3567,27 @@ namespace Game.Spells
return true; return true;
case AuraType.PeriodicTriggerSpellWithValue: case AuraType.PeriodicTriggerSpellWithValue:
case AuraType.PeriodicTriggerSpellFromClient: case AuraType.PeriodicTriggerSpellFromClient:
case AuraType.PeriodicTriggerSpell: SpellInfo spellTriggeredProto = Global.SpellMgr.GetSpellInfo(effect.TriggerSpell, spellInfo.Difficulty);
if (!_isPositiveTarget(effect)) if (spellTriggeredProto != null)
{ {
SpellInfo spellTriggeredProto = Global.SpellMgr.GetSpellInfo(effect.TriggerSpell, spellInfo.Difficulty); // negative targets of main spell return early
if (spellTriggeredProto != null) foreach (var spellTriggeredEffect in spellTriggeredProto.GetEffects())
{ {
// negative targets of main spell return early // already seen this
foreach (var spellTriggeredEffect in spellTriggeredProto.GetEffects()) if (visited.Contains(Tuple.Create(spellTriggeredProto, spellTriggeredEffect.EffectIndex)))
{ continue;
// already seen this
if (visited.Contains(Tuple.Create(spellTriggeredProto, spellTriggeredEffect.EffectIndex)))
continue;
if (!spellTriggeredEffect.IsEffect()) if (!spellTriggeredEffect.IsEffect())
continue; continue;
// if non-positive trigger cast targeted to positive target this main cast is non-positive // if non-positive trigger cast targeted to positive target this main cast is non-positive
// this will place this spell auras as debuffs // this will place this spell auras as debuffs
if (_isPositiveTarget(spellTriggeredEffect) && !_isPositiveEffectImpl(spellTriggeredProto, spellTriggeredEffect, visited)) if (_isPositiveTarget(spellTriggeredEffect) && !_isPositiveEffectImpl(spellTriggeredProto, spellTriggeredEffect, visited))
return false; return false;
}
} }
} }
break; break;
case AuraType.PeriodicTriggerSpell:
case AuraType.ModStun: case AuraType.ModStun:
case AuraType.Transform: case AuraType.Transform:
case AuraType.ModDecreaseSpeed: case AuraType.ModDecreaseSpeed: