Core/Movement: shield ChaseMovementGenerator against a potential crash

Port From (https://github.com/TrinityCore/TrinityCore/commit/6d9e544c2072b6fba2bf978066edbd3f5c519034)
This commit is contained in:
hondacrx
2021-09-29 19:25:46 -04:00
parent 8d052d7d51
commit 3e040d6688
@@ -223,7 +223,11 @@ namespace Game.Movement
if (target.GetMotionMaster().GetCurrentMovementGeneratorType() != MovementGeneratorType.Chase)
return false;
return ((ChaseMovementGenerator)target.GetMotionMaster().GetCurrentMovementGenerator())._abstractFollower.GetTarget() == owner;
ChaseMovementGenerator movement = target.GetMotionMaster().GetCurrentMovementGenerator() as ChaseMovementGenerator;
if (movement != null)
return movement.GetTarget() == owner;
return false;
}
static bool PositionOkay(Unit owner, Unit target, float? minDistance, float? maxDistance, ChaseAngle? angle)
@@ -245,5 +249,10 @@ namespace Game.Movement
if (creatureOwner.IsAIEnabled && creatureOwner.GetAI() != null)
creatureOwner.GetAI().MovementInform(MovementGeneratorType.Chase, (uint)target.GetGUID().GetCounter());
}
public Unit GetTarget()
{
return _abstractFollower.GetTarget();
}
}
}