aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdder <d.rosenauer@googlemail.com>2021-05-11 09:56:32 +0200
committerShauren <shauren.trinity@gmail.com>2022-03-09 14:55:40 +0100
commit4dbacb69852e3324ddd9abb55a44d93b00679e36 (patch)
treeb7737dca9e164faaedfe9ccc72b6ca41264de844
parent9e6def8ae2119f2ab040698fb944f60b100410f8 (diff)
Core/Vehicle: Setting home position of creature passenger on AtEngage (#26482)
Co-authored-by: Edder <d.rosenauer@gmail.com> (cherry picked from commit fb88a1409ff60343edb0c539d406a961724fcc4e)
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index b431d0e1b19..90e239e9a5b 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -3464,8 +3464,20 @@ void Creature::AtEngage(Unit* target)
MovementGeneratorType const movetype = GetMotionMaster()->GetCurrentMovementGeneratorType();
if (movetype == WAYPOINT_MOTION_TYPE || movetype == POINT_MOTION_TYPE || (IsAIEnabled() && AI()->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
+ if (Vehicle* vehicle = GetVehicleKit())
+ {
+ for (auto seat = vehicle->Seats.begin(); seat != vehicle->Seats.end(); ++seat)
+ if (Unit* passenger = ObjectAccessor::GetUnit(*this, seat->second.Passenger.Guid))
+ if (Creature* creature = passenger->ToCreature())
+ creature->SetHomePosition(GetPosition());
+ }
+ }
+
if (CreatureAI* ai = AI())
ai->JustEngagedWith(target);
if (CreatureGroup* formation = GetFormation())