Core/Spell: Prevent NO_TARGET auras from actually selecting target (same as caster)
This commit is contained in:
@@ -3132,7 +3132,7 @@ namespace Game.Spells
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// extend explicit target mask only if valid targets for effect could not be provided by target types
|
// 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
|
// don't add explicit object/dest flags when spell has no max range
|
||||||
if (GetMaxRange(true) == 0.0f && GetMaxRange(false) == 0.0f)
|
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());
|
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 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
|
// remove all flags covered by effect target mask
|
||||||
if (Convert.ToBoolean(providedTargetMask & SpellCastTargetFlags.UnitMask))
|
if (Convert.ToBoolean(providedTargetMask & SpellCastTargetFlags.UnitMask))
|
||||||
|
|||||||
Reference in New Issue
Block a user