From 530e8dbd3623851935634501d5796c9857b9b670 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sun, 1 Sep 2024 15:26:19 -0400 Subject: [PATCH] Core/Creatures: Only remove formation movement on formation remove instead of fully resetting MotionMaster Port From (https://github.com/TrinityCore/TrinityCore/commit/67dd9a920fdabb26e6429432885345b1a1771b9a) --- Source/Game/Entities/Creature/CreatureGroups.cs | 2 +- Source/Game/Entities/Unit/Unit.cs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) 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); } }