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)
|
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.Random => new RandomMovementGenerator(),
|
||||||
MovementGeneratorType.Waypoint => new WaypointMovementGenerator(),
|
MovementGeneratorType.Waypoint => new WaypointMovementGenerator(),
|
||||||
|
MovementGeneratorType.Idle => new IdleMovementGenerator(),
|
||||||
_ => null,
|
_ => null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3177,7 +3177,7 @@ namespace Game.Entities
|
|||||||
public void SetNoSearchAssistance(bool val) { m_AlreadySearchedAssistance = val; }
|
public void SetNoSearchAssistance(bool val) { m_AlreadySearchedAssistance = val; }
|
||||||
public bool HasSearchedAssistance() { return m_AlreadySearchedAssistance; }
|
public bool HasSearchedAssistance() { return m_AlreadySearchedAssistance; }
|
||||||
|
|
||||||
MovementGeneratorType GetDefaultMovementType() { return DefaultMovementType; }
|
public MovementGeneratorType GetDefaultMovementType() { return DefaultMovementType; }
|
||||||
public void SetDefaultMovementType(MovementGeneratorType mgt) { DefaultMovementType = mgt; }
|
public void SetDefaultMovementType(MovementGeneratorType mgt) { DefaultMovementType = mgt; }
|
||||||
|
|
||||||
public long GetRespawnTime() { return m_respawnTime; }
|
public long GetRespawnTime() { return m_respawnTime; }
|
||||||
|
|||||||
@@ -7245,8 +7245,13 @@ namespace Game.Entities
|
|||||||
public void SetMover(Unit target)
|
public void SetMover(Unit target)
|
||||||
{
|
{
|
||||||
m_unitMovedByMe.m_playerMovingMe = null;
|
m_unitMovedByMe.m_playerMovingMe = null;
|
||||||
|
if (m_unitMovedByMe.IsCreature())
|
||||||
|
m_unitMovedByMe.GetMotionMaster().Initialize();
|
||||||
|
|
||||||
m_unitMovedByMe = target;
|
m_unitMovedByMe = target;
|
||||||
m_unitMovedByMe.m_playerMovingMe = this;
|
m_unitMovedByMe.m_playerMovingMe = this;
|
||||||
|
if (m_unitMovedByMe.IsCreature())
|
||||||
|
m_unitMovedByMe.GetMotionMaster().Initialize();
|
||||||
|
|
||||||
MoveSetActiveMover packet = new();
|
MoveSetActiveMover packet = new();
|
||||||
packet.MoverGUID = target.GetGUID();
|
packet.MoverGUID = target.GetGUID();
|
||||||
|
|||||||
@@ -1603,7 +1603,7 @@ namespace Game.Entities
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player GetPlayerMovingMe() { return m_playerMovingMe; }
|
public Player GetPlayerMovingMe() { return m_playerMovingMe; }
|
||||||
|
|
||||||
public void AddUnitMovementFlag(MovementFlag f)
|
public void AddUnitMovementFlag(MovementFlag f)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user