Core/Spells: Implemented target 137 TARGET_DEST_CASTER_MOVEMENT_DIRECTION

Port From (https://github.com/TrinityCore/TrinityCore/commit/f515424217b6470b73269c7671a3086ff19c2359)
This commit is contained in:
hondacrx
2022-02-16 13:05:11 -05:00
parent ad165bb837
commit 8d7ba1061c
4 changed files with 46 additions and 4 deletions
+42
View File
@@ -876,6 +876,7 @@ namespace Game.Spells
break;
}
case Targets.DestCasterFrontLeap:
case Targets.DestCasterMovementDirection:
{
Unit unitCaster = m_caster.ToUnit();
if (unitCaster == null)
@@ -883,6 +884,47 @@ namespace Game.Spells
float dist = spellEffectInfo.CalcRadius(unitCaster);
float angle = targetType.CalcDirectionAngle();
if (targetType.GetTarget() == Targets.DestCasterMovementDirection)
{
switch (m_caster.m_movementInfo.GetMovementFlags() & (MovementFlag.Forward | MovementFlag.Backward | MovementFlag.StrafeLeft | MovementFlag.StrafeRight))
{
case MovementFlag.None:
case MovementFlag.Forward:
case MovementFlag.Forward | MovementFlag.Backward:
case MovementFlag.StrafeLeft | MovementFlag.StrafeRight:
case MovementFlag.Forward | MovementFlag.StrafeLeft | MovementFlag.StrafeRight:
case MovementFlag.Forward | MovementFlag.Backward | MovementFlag.StrafeLeft | MovementFlag.StrafeRight:
angle = 0.0f;
break;
case MovementFlag.Backward:
case MovementFlag.Backward | MovementFlag.StrafeLeft | MovementFlag.StrafeRight:
angle = MathF.PI;
break;
case MovementFlag.StrafeLeft:
case MovementFlag.Forward | MovementFlag.Backward | MovementFlag.StrafeLeft:
angle = (MathF.PI / 2);
break;
case MovementFlag.Forward | MovementFlag.StrafeLeft:
angle = (MathF.PI / 4);
break;
case MovementFlag.Backward | MovementFlag.StrafeLeft:
angle = (3 * MathF.PI / 4);
break;
case MovementFlag.StrafeRight:
case MovementFlag.Forward | MovementFlag.Backward | MovementFlag.StrafeRight:
angle = (-MathF.PI / 2);
break;
case MovementFlag.Forward | MovementFlag.StrafeRight:
angle = (-MathF.PI / 4);
break;
case MovementFlag.Backward | MovementFlag.StrafeRight:
angle = (-3 * MathF.PI / 4);
break;
default:
angle = 0.0f;
break;
}
}
Position pos = new(dest.Position);