aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2016-12-29 03:34:54 -0300
committerariel- <ariel-@users.noreply.github.com>2016-12-29 03:34:54 -0300
commit584d347b70be521d7431dfe1694b80f2e95b957b (patch)
treecb123a68079a689dcfc5a7eb1c5a11cf9bd0a6ce
parent0bb1c03fbf3d2253d18873600cfb10d2f54825c6 (diff)
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
-rw-r--r--src/server/game/Spells/SpellInfo.cpp4
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp5
2 files changed, 4 insertions, 5 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 8394ca71103..1166902b8a8 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -561,7 +561,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)
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 83b23b7d523..cc62e69132a 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1983,16 +1983,13 @@ class spell_gen_mount : public SpellScriptLoader
}
if (mount)
- {
- PreventHitAura();
target->CastSpell(target, mount, true);
- }
}
}
void Register() override
{
- OnEffectHitTarget += SpellEffectFn(spell_gen_mount_SpellScript::HandleMount, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
+ OnEffectHitTarget += SpellEffectFn(spell_gen_mount_SpellScript::HandleMount, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
}
private: