Core/Movement: MotionMaster reimplementation

Port From (https://github.com/TrinityCore/TrinityCore/commit/426f9f2f92b26fbb68e7cda9290ccbd586c6af4e)
This commit is contained in:
hondacrx
2021-09-29 18:24:37 -04:00
parent cf13f32062
commit a968772bad
47 changed files with 1954 additions and 1227 deletions
+12 -12
View File
@@ -976,23 +976,23 @@ namespace Game.Chat
return false;
}
if (/*creature.GetMotionMaster().empty() ||*/
creature.GetMotionMaster().GetCurrentMovementGeneratorType() != MovementGeneratorType.Follow)
MovementGenerator movement = creature.GetMotionMaster().GetMovementGenerator(a =>
{
if (a.GetMovementGeneratorType() == MovementGeneratorType.Follow)
{
FollowMovementGenerator followMovement = a as FollowMovementGenerator;
return followMovement != null && followMovement.GetTarget() == player;
}
return false;
});
if (movement != null)
{
handler.SendSysMessage(CypherStrings.CreatureNotFollowYou, creature.GetName());
return false;
}
FollowMovementGenerator mgen = (FollowMovementGenerator)creature.GetMotionMaster().Top();
if (mgen.GetTarget() != player)
{
handler.SendSysMessage(CypherStrings.CreatureNotFollowYou, creature.GetName());
return false;
}
// reset movement
creature.GetMotionMaster().MovementExpired(true);
creature.GetMotionMaster().Remove(movement);
handler.SendSysMessage(CypherStrings.CreatureNotFollowYouNow, creature.GetName());
return true;
}