From 6ec1bce3588325d41b4acd7ddb02d531fb363983 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 18 Mar 2018 12:09:43 -0400 Subject: [PATCH] Core/Spell: Prevent NO_TARGET auras from actually selecting target (same as caster) --- Source/Game/Spells/SpellInfo.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index 46ef4ff52..c85466d3f 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -3132,7 +3132,7 @@ namespace Game.Spells continue; // extend explicit target mask only if valid targets for effect could not be provided by target types - SpellCastTargetFlags effectTargetMask = effect.GetMissingTargetMask(srcSet, dstSet, (uint)targetMask); + SpellCastTargetFlags effectTargetMask = effect.GetMissingTargetMask(srcSet, dstSet, targetMask); // don't add explicit object/dest flags when spell has no max range if (GetMaxRange(true) == 0.0f && GetMaxRange(false) == 0.0f) @@ -4025,10 +4025,12 @@ namespace Game.Spells return SpellInfo.GetTargetFlagMask(TargetA.GetObjectType()) | SpellInfo.GetTargetFlagMask(TargetB.GetObjectType()); } - public SpellCastTargetFlags GetMissingTargetMask(bool srcSet = false, bool dstSet = false, uint mask = 0) + public SpellCastTargetFlags GetMissingTargetMask(bool srcSet = false, bool dstSet = false, SpellCastTargetFlags mask = 0) { var effImplicitTargetMask = SpellInfo.GetTargetFlagMask(GetUsedTargetObjectType()); - var providedTargetMask = (SpellInfo.GetTargetFlagMask(TargetA.GetObjectType()) | SpellInfo.GetTargetFlagMask(TargetB.GetObjectType()) | (SpellCastTargetFlags)mask); + SpellCastTargetFlags providedTargetMask = GetProvidedTargetMask() | mask; + if (providedTargetMask == 0) // no targets to select + return 0; // remove all flags covered by effect target mask if (Convert.ToBoolean(providedTargetMask & SpellCastTargetFlags.UnitMask))