Fixes Fleeing, and probably so other movement stuff.

This commit is contained in:
hondacrx
2021-06-18 15:13:04 -04:00
parent b5885d2c6c
commit 88c9b21ec2
5 changed files with 16 additions and 16 deletions
+3 -3
View File
@@ -2214,8 +2214,8 @@ namespace Game.Entities
public Position GetFirstCollisionPosition(float dist, float angle)
{
var pos = GetPosition();
MovePositionToFirstCollision(ref pos, dist, angle);
var pos = new Position(GetPosition());
MovePositionToFirstCollision(pos, dist, angle);
return pos;
}
@@ -2276,7 +2276,7 @@ namespace Game.Entities
pos.SetOrientation(GetOrientation());
}
public void MovePositionToFirstCollision(ref Position pos, float dist, float angle)
public void MovePositionToFirstCollision(Position pos, float dist, float angle)
{
angle += GetOrientation();
float destx = pos.posX + dist * (float)Math.Cos(angle);
@@ -67,10 +67,10 @@ namespace Game.Movement
// start moving
owner.AddUnitState(UnitState.ConfusedMove);
Position destination = _reference;
Position destination = new(_reference);
float distance = (float)(4.0f * RandomHelper.FRand(0.0f, 1.0f) - 2.0f);
float angle = RandomHelper.FRand(0.0f, 1.0f) * MathF.PI * 2.0f;
owner.MovePositionToFirstCollision(ref destination, distance, angle);
owner.MovePositionToFirstCollision(destination, distance, angle);
if (_path == null)
_path = new PathGenerator(owner);
@@ -99,8 +99,8 @@ namespace Game.Movement
owner.AddUnitState(UnitState.FleeingMove);
Position destination = owner.GetPosition();
GetPoint(owner, ref destination);
Position destination = new Position(owner.GetPosition());
GetPoint(owner, destination);
// Add LOS check for target point
if (!owner.IsWithinLOS(destination.GetPositionX(), destination.GetPositionY(), destination.GetPositionZ()))
@@ -127,7 +127,7 @@ namespace Game.Movement
_timer.Reset(traveltime + RandomHelper.URand(800, 1500));
}
void GetPoint(T owner, ref Position position)
void GetPoint(T owner, Position position)
{
float casterDistance, casterAngle;
Unit fleeTarget = Global.ObjAccessor.GetUnit(owner, _fleeTargetGUID);
@@ -162,7 +162,7 @@ namespace Game.Movement
angle = RandomHelper.FRand(0.0f, 2.0f * MathF.PI);
}
owner.MovePositionToFirstCollision(ref position, distance, angle);
owner.MovePositionToFirstCollision(position, distance, angle);
}
public override MovementGeneratorType GetMovementGeneratorType()
@@ -95,7 +95,7 @@ namespace Game.Movement
Position position = new(_reference);
float distance = RandomHelper.FRand(0.0f, 1.0f) * _wanderDistance;
float angle = RandomHelper.FRand(0.0f, 1.0f) * MathF.PI * 2.0f;
owner.MovePositionToFirstCollision(ref position, distance, angle);
owner.MovePositionToFirstCollision(position, distance, angle);
uint resetTimer = RandomHelper.randChance(50) ? RandomHelper.URand(5000, 10000) : RandomHelper.URand(1000, 2000);
+6 -6
View File
@@ -929,8 +929,8 @@ namespace Game.Spells
if (dist < objSize)
dist = objSize;
Position pos = dest.Position;
m_caster.MovePositionToFirstCollision(ref pos, dist, angl);
Position pos = new(dest.Position);
m_caster.MovePositionToFirstCollision(pos, dist, angl);
dest.Relocate(pos);
}
@@ -961,8 +961,8 @@ namespace Game.Spells
if (targetType.GetTarget() == Targets.DestRandom)
dist *= (float)RandomHelper.NextDouble();
Position pos = dest.Position;
target.MovePositionToFirstCollision(ref pos, dist, angle);
Position pos = new(dest.Position);
target.MovePositionToFirstCollision(pos, dist, angle);
dest.Relocate(pos);
}
@@ -999,8 +999,8 @@ namespace Game.Spells
if (targetType.GetTarget() == Targets.DestRandom)
dist *= (float)RandomHelper.NextDouble();
Position pos = m_targets.GetDstPos();
m_caster.MovePositionToFirstCollision(ref pos, dist, angle);
Position pos = new(m_targets.GetDstPos());
m_caster.MovePositionToFirstCollision(pos, dist, angle);
dest.Relocate(pos);
}