Core/Spells: Implemented target 137 TARGET_DEST_CASTER_MOVEMENT_DIRECTION
Port From (https://github.com/TrinityCore/TrinityCore/commit/f515424217b6470b73269c7671a3086ff19c2359)
This commit is contained in:
@@ -2711,7 +2711,7 @@ namespace Framework.Constants
|
||||
UnitLineCasterToDestEnemy = 134,
|
||||
UnitLineCasterToDest = 135,
|
||||
Unk136 = 136,
|
||||
Unk137 = 137,
|
||||
DestCasterMovementDirection = 137,
|
||||
DestDestGround = 138,
|
||||
Unk139 = 139,
|
||||
Unk140 = 140,
|
||||
|
||||
@@ -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; }
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user