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
@@ -2711,7 +2711,7 @@ namespace Framework.Constants
UnitLineCasterToDestEnemy = 134,
UnitLineCasterToDest = 135,
Unk136 = 136,
Unk137 = 137,
DestCasterMovementDirection = 137,
DestDestGround = 138,
Unk139 = 139,
Unk140 = 140,
+2 -2
View File
@@ -3591,13 +3591,13 @@ namespace Game.Entities
public void SetMovementFlags(MovementFlag f) { flags = f; }
public void AddMovementFlag(MovementFlag f) { flags |= f; }
public void RemoveMovementFlag(MovementFlag f) { flags &= ~f; }
public bool HasMovementFlag(MovementFlag f) { return Convert.ToBoolean(flags & f); }
public bool HasMovementFlag(MovementFlag f) { return (flags & f) != 0; }
public MovementFlag2 GetMovementFlags2() { return flags2; }
public void SetMovementFlags2(MovementFlag2 f) { flags2 = f; }
public void AddMovementFlag2(MovementFlag2 f) { flags2 |= f; }
public void RemoveMovementFlag2(MovementFlag2 f) { flags2 &= ~f; }
public bool HasMovementFlag2(MovementFlag2 f) { return Convert.ToBoolean(flags2 & f); }
public bool HasMovementFlag2(MovementFlag2 f) { return (flags2 & f) != 0; }
public void SetFallTime(uint time) { jump.fallTime = time; }
+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