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);
+1 -1
View File
@@ -5060,7 +5060,7 @@ namespace Game.Spells
new StaticData(SpellTargetObjectTypes.Unit, SpellTargetReferenceTypes.Dest, SpellTargetSelectionCategories.Line, SpellTargetCheckTypes.Enemy, SpellTargetDirectionTypes.None), // 134 TARGET_UNIT_LINE_CASTER_TO_DEST_ENEMY
new StaticData(SpellTargetObjectTypes.Unit, SpellTargetReferenceTypes.Dest, SpellTargetSelectionCategories.Line, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 135 TARGET_UNIT_LINE_CASTER_TO_DEST
new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 136
new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 137
new StaticData(SpellTargetObjectTypes.Dest, SpellTargetReferenceTypes.Caster, SpellTargetSelectionCategories.Default, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 137 TARGET_DEST_CASTER_MOVEMENT_DIRECTION
new StaticData(SpellTargetObjectTypes.Dest, SpellTargetReferenceTypes.Dest, SpellTargetSelectionCategories.Default, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 138 TARGET_DEST_DEST_GROUND
new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 139
new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 140