diff --git a/Source/Game/Entities/Creature/CreatureGroups.cs b/Source/Game/Entities/Creature/CreatureGroups.cs index 4b01c36ce..ce40cb18e 100644 --- a/Source/Game/Entities/Creature/CreatureGroups.cs +++ b/Source/Game/Entities/Creature/CreatureGroups.cs @@ -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()}"); diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 63b61c978..3a81bc213 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -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); } }