Core/Movement: Creatures' idle movement generator can no longer override player mover control.
Port From (https://github.com/TrinityCore/TrinityCore/commit/88c1739e3e1ecf58407b0846f3c8dfeb589f3113)
This commit is contained in:
@@ -99,10 +99,15 @@ namespace Game.AI
|
||||
|
||||
public static IMovementGenerator SelectMovementAI(Creature creature)
|
||||
{
|
||||
return creature.DefaultMovementType switch
|
||||
MovementGeneratorType type = MovementGeneratorType.Idle;
|
||||
if (creature.GetPlayerMovingMe() == null)
|
||||
type = creature.GetDefaultMovementType();
|
||||
|
||||
return type switch
|
||||
{
|
||||
MovementGeneratorType.Random => new RandomMovementGenerator(),
|
||||
MovementGeneratorType.Waypoint => new WaypointMovementGenerator(),
|
||||
MovementGeneratorType.Idle => new IdleMovementGenerator(),
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3177,7 +3177,7 @@ namespace Game.Entities
|
||||
public void SetNoSearchAssistance(bool val) { m_AlreadySearchedAssistance = val; }
|
||||
public bool HasSearchedAssistance() { return m_AlreadySearchedAssistance; }
|
||||
|
||||
MovementGeneratorType GetDefaultMovementType() { return DefaultMovementType; }
|
||||
public MovementGeneratorType GetDefaultMovementType() { return DefaultMovementType; }
|
||||
public void SetDefaultMovementType(MovementGeneratorType mgt) { DefaultMovementType = mgt; }
|
||||
|
||||
public long GetRespawnTime() { return m_respawnTime; }
|
||||
|
||||
@@ -7245,8 +7245,13 @@ namespace Game.Entities
|
||||
public void SetMover(Unit target)
|
||||
{
|
||||
m_unitMovedByMe.m_playerMovingMe = null;
|
||||
if (m_unitMovedByMe.IsCreature())
|
||||
m_unitMovedByMe.GetMotionMaster().Initialize();
|
||||
|
||||
m_unitMovedByMe = target;
|
||||
m_unitMovedByMe.m_playerMovingMe = this;
|
||||
if (m_unitMovedByMe.IsCreature())
|
||||
m_unitMovedByMe.GetMotionMaster().Initialize();
|
||||
|
||||
MoveSetActiveMover packet = new();
|
||||
packet.MoverGUID = target.GetGUID();
|
||||
|
||||
@@ -1603,7 +1603,7 @@ namespace Game.Entities
|
||||
return null;
|
||||
}
|
||||
|
||||
Player GetPlayerMovingMe() { return m_playerMovingMe; }
|
||||
public Player GetPlayerMovingMe() { return m_playerMovingMe; }
|
||||
|
||||
public void AddUnitMovementFlag(MovementFlag f)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user