aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorModoX <moardox@gmail.com>2023-06-24 01:16:00 +0200
committerGitHub <noreply@github.com>2023-06-24 01:16:00 +0200
commit80e22230c34106753cd6be57d9a496642e47216d (patch)
treecccccd6ce252930c2439f724ec923fa53ffc0633 /src/server/game/Spells/Spell.cpp
parent8ffc4c1034931d04f9904187c76b730f2ae61965 (diff)
Core/Spells: Implemented target type TARGET_DEST_DEST_TARGET_TOWARDS_CASTER (#29085)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 2c2d8a8f1c0..8a55827d6d6 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -1674,6 +1674,18 @@ void Spell::SelectImplicitDestDestTargets(SpellEffectInfo const& spellEffectInfo
case TARGET_DEST_DEST_GROUND:
dest._position.m_positionZ = m_caster->GetMapHeight(dest._position.GetPositionX(), dest._position.GetPositionY(), dest._position.GetPositionZ());
break;
+ case TARGET_DEST_DEST_TARGET_TOWARDS_CASTER:
+ {
+ float dist = spellEffectInfo.CalcRadius(m_caster);
+ Position pos = dest._position;
+ float angle = pos.GetAbsoluteAngle(m_caster) - m_caster->GetOrientation();
+
+ m_caster->MovePositionToFirstCollision(pos, dist, angle);
+ pos.SetOrientation(m_caster->GetAbsoluteAngle(dest._position));
+
+ dest.Relocate(pos);
+ break;
+ }
default:
{
float angle = targetType.CalcDirectionAngle();