From aae2b14bc6ef55bbed949a020185a65c4cb2189f Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 26 May 2022 16:55:32 -0400 Subject: [PATCH] Core/Vehicle: Setting home position of creature passenger on AtEngage Port From (https://github.com/TrinityCore/TrinityCore/commit/4dbacb69852e3324ddd9abb55a44d93b00679e36) --- Source/Game/Entities/Creature/Creature.cs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index eaf619618..33466eb0e 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -1066,7 +1066,7 @@ namespace Game.Entities return ai.IsEngaged(); return false; } - + public override void AtEngage(Unit target) { base.AtEngage(target); @@ -1085,7 +1085,25 @@ namespace Game.Entities MovementGeneratorType movetype = GetMotionMaster().GetCurrentMovementGeneratorType(); if (movetype == MovementGeneratorType.Waypoint || movetype == MovementGeneratorType.Point || (IsAIEnabled() && GetAI().IsEscorted())) + { SetHomePosition(GetPosition()); + // if its a vehicle, set the home positon of every creature passenger at engage + // so that they are in combat range if hostile + Vehicle vehicle = GetVehicleKit(); + if (vehicle != null) + { + foreach (var (_, seat) in vehicle.Seats) + { + Unit passenger = Global.ObjAccessor.GetUnit(this, seat.Passenger.Guid); + if (passenger != null) + { + Creature creature = passenger.ToCreature(); + if (creature != null) + creature.SetHomePosition(GetPosition()); + } + } + } + } CreatureAI ai = GetAI(); if (ai != null)