Core/Movement: Some movement fixes

This commit is contained in:
hondacrx
2022-07-11 22:20:56 -04:00
parent f41b65ffa6
commit 077ac3988d
3 changed files with 5 additions and 3 deletions
+2
View File
@@ -40,6 +40,7 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.MoveHeartbeat, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveJump, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveSetFacing, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveSetFacingHeartbeat, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveSetFly, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveSetPitch, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveSetRunMode, Processing = PacketProcessing.ThreadSafe)]
@@ -61,6 +62,7 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.MoveStopStrafe, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveStopSwim, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveStopTurn, Processing = PacketProcessing.ThreadSafe)]
[WorldPacketHandler(ClientOpcodes.MoveUpdateFallSpeed, Processing = PacketProcessing.ThreadSafe)]
void HandleMovement(ClientPlayerMovement packet)
{
HandleMovementOpcode(packet.GetOpcode(), packet.Status);
@@ -266,9 +266,9 @@ namespace Game.Movement
static bool PositionOkay(Unit owner, Unit target, float? minDistance, float? maxDistance, ChaseAngle? angle)
{
float distSq = owner.GetExactDistSq(target);
if (minDistance.HasValue && distSq < MathF.Sqrt(minDistance.Value))
if (minDistance.HasValue && distSq < minDistance.Value * minDistance.Value)
return false;
if (maxDistance.HasValue && distSq > MathF.Sqrt(maxDistance.Value))
if (maxDistance.HasValue && distSq > maxDistance.Value * maxDistance.Value)
return false;
if (angle.HasValue && !angle.Value.IsAngleOkay(target.GetRelativeAngle(owner)))
return false;
@@ -210,7 +210,7 @@ namespace Game.Movement
static bool PositionOkay(Unit owner, Unit target, float range, ChaseAngle? angle = null)
{
if (owner.GetExactDistSq(target) > MathF.Sqrt(owner.GetCombatReach() + target.GetCombatReach() + range))
if (owner.GetExactDistSq(target) > (owner.GetCombatReach() + target.GetCombatReach() + range) * (owner.GetCombatReach() + target.GetCombatReach() + range))
return false;
return !angle.HasValue || angle.Value.IsAngleOkay(target.GetRelativeAngle(owner));