Core/Creatures: Only remove formation movement on formation remove instead of fully resetting MotionMaster
Port From (https://github.com/TrinityCore/TrinityCore/commit/67dd9a920fdabb26e6429432885345b1a1771b9a)
This commit is contained in:
@@ -247,7 +247,7 @@ namespace Game.Entities
|
|||||||
foreach (var (creature, _) in _members)
|
foreach (var (creature, _) in _members)
|
||||||
{
|
{
|
||||||
if (dismiss)
|
if (dismiss)
|
||||||
creature.GetMotionMaster().Initialize();
|
creature.GetMotionMaster().Remove(MovementGeneratorType.Formation, MovementSlot.Default);
|
||||||
else
|
else
|
||||||
creature.GetMotionMaster().MoveIdle();
|
creature.GetMotionMaster().MoveIdle();
|
||||||
Log.outDebug(LogFilter.Unit, $"CreatureGroup::FormationReset: Set {(dismiss ? "default" : "idle")} movement for member {creature.GetGUID()}");
|
Log.outDebug(LogFilter.Unit, $"CreatureGroup::FormationReset: Set {(dismiss ? "default" : "idle")} movement for member {creature.GetGUID()}");
|
||||||
|
|||||||
@@ -1067,12 +1067,13 @@ namespace Game.Entities
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vehicle.GetBase().IsCreature())
|
Creature vehicleBaseCreature = vehicle.GetBase().ToCreature();
|
||||||
|
if (vehicleBaseCreature != null)
|
||||||
{
|
{
|
||||||
// If a player entered a vehicle that is part of a formation, remove it from said formation
|
// If a player entered a vehicle that is part of a formation, remove it from said formation
|
||||||
CreatureGroup creatureGroup = vehicle.GetBase().ToCreature().GetFormation();
|
CreatureGroup creatureGroup = vehicleBaseCreature.GetFormation();
|
||||||
if (creatureGroup != null)
|
if (creatureGroup != null)
|
||||||
creatureGroup.RemoveMember(vehicle.GetBase().ToCreature());
|
FormationMgr.RemoveCreatureFromGroup(creatureGroup, vehicleBaseCreature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user