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)
|
||||
{
|
||||
if (dismiss)
|
||||
creature.GetMotionMaster().Initialize();
|
||||
creature.GetMotionMaster().Remove(MovementGeneratorType.Formation, MovementSlot.Default);
|
||||
else
|
||||
creature.GetMotionMaster().MoveIdle();
|
||||
Log.outDebug(LogFilter.Unit, $"CreatureGroup::FormationReset: Set {(dismiss ? "default" : "idle")} movement for member {creature.GetGUID()}");
|
||||
|
||||
@@ -1067,12 +1067,13 @@ namespace Game.Entities
|
||||
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
|
||||
CreatureGroup creatureGroup = vehicle.GetBase().ToCreature().GetFormation();
|
||||
CreatureGroup creatureGroup = vehicleBaseCreature.GetFormation();
|
||||
if (creatureGroup != null)
|
||||
creatureGroup.RemoveMember(vehicle.GetBase().ToCreature());
|
||||
FormationMgr.RemoveCreatureFromGroup(creatureGroup, vehicleBaseCreature);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user