diff options
author | Edder <d.rosenauer@googlemail.com> | 2021-05-11 09:56:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-11 09:56:32 +0200 |
commit | fb88a1409ff60343edb0c539d406a961724fcc4e (patch) | |
tree | 74a4a094d62ebdebd4da9f5eecfa5118b5b2d110 /src | |
parent | 6c12f45f3b7d7eab32ed29860d2261fc8a512f0e (diff) |
Core/Vehicle: Setting home position of creature passenger on AtEngage (#26482)
Co-authored-by: Edder <d.rosenauer@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 12 |
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 6aaf5dbcac7..d318a941784 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -3343,8 +3343,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()) |