Core/Movement: Fix a potential crash on newly created pets.
Port From (https://github.com/TrinityCore/TrinityCore/commit/3d9d6fbcb80eaab72acbe6ef09b9b1c29f2439c7)
This commit is contained in:
@@ -523,7 +523,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
if (creature.HasUnitTypeMask(UnitTypeMask.Minion) && !creature.IsInCombat())
|
if (creature.HasUnitTypeMask(UnitTypeMask.Minion) && !creature.IsInCombat())
|
||||||
{
|
{
|
||||||
var top = creature.GetMotionMaster().Top();
|
var top = creature.GetMotionMaster().TopOrNull();
|
||||||
if (top != null && top.GetMovementGeneratorType() == MovementGeneratorType.Follow)
|
if (top != null && top.GetMovementGeneratorType() == MovementGeneratorType.Follow)
|
||||||
{
|
{
|
||||||
Unit followed = ((AbstractFollower)top).GetTarget();
|
Unit followed = ((AbstractFollower)top).GetTarget();
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ namespace Game.Movement
|
|||||||
|
|
||||||
static bool IsMutualChase(Unit owner, Unit target)
|
static bool IsMutualChase(Unit owner, Unit target)
|
||||||
{
|
{
|
||||||
IMovementGenerator gen = target.GetMotionMaster().Top();
|
IMovementGenerator gen = target.GetMotionMaster().TopOrNull();
|
||||||
if (gen == null || gen.GetMovementGeneratorType() != MovementGeneratorType.Chase)
|
if (gen == null || gen.GetMovementGeneratorType() != MovementGeneratorType.Chase)
|
||||||
return false;
|
return false;
|
||||||
return ((ChaseMovementGenerator)gen).GetTarget() == owner;
|
return ((ChaseMovementGenerator)gen).GetTarget() == owner;
|
||||||
|
|||||||
@@ -804,6 +804,11 @@ namespace Game.Movement
|
|||||||
|
|
||||||
int Size() { return _top + 1; }
|
int Size() { return _top + 1; }
|
||||||
|
|
||||||
|
public IMovementGenerator TopOrNull()
|
||||||
|
{
|
||||||
|
return Empty() ? null : Top();
|
||||||
|
}
|
||||||
|
|
||||||
public IMovementGenerator Top()
|
public IMovementGenerator Top()
|
||||||
{
|
{
|
||||||
Cypher.Assert(!Empty());
|
Cypher.Assert(!Empty());
|
||||||
|
|||||||
Reference in New Issue
Block a user