From b03a2c3736283cbf44bb1e715c99c908b82b21bb Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 29 Dec 2016 03:34:54 -0300 Subject: Core/Spell: Prevent NO_TARGET auras from actually selecting target (same as caster) - Fixes an issue with generic mount scripts where the dummy aura was applied and removed then the real mount was applied - Pets would be unsummoned, resummoned and unsummoned again in an instant Closes #16783 (cherry picked from commit 584d347b70be521d7431dfe1694b80f2e95b957b) --- src/server/game/Spells/SpellInfo.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/server/game/Spells/SpellInfo.cpp') diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 2592c973e8d..1178f7ce3ed 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -691,7 +691,9 @@ uint32 SpellEffectInfo::GetProvidedTargetMask() const uint32 SpellEffectInfo::GetMissingTargetMask(bool srcSet /*= false*/, bool dstSet /*= false*/, uint32 mask /*=0*/) const { uint32 effImplicitTargetMask = GetTargetFlagMask(GetUsedTargetObjectType()); - uint32 providedTargetMask = GetTargetFlagMask(TargetA.GetObjectType()) | GetTargetFlagMask(TargetB.GetObjectType()) | mask; + uint32 providedTargetMask = GetProvidedTargetMask() | mask; + if (!providedTargetMask) // no targets to select + return 0; // remove all flags covered by effect target mask if (providedTargetMask & TARGET_FLAG_UNIT_MASK) -- cgit v1.2.3