diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-04-08 18:06:26 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-06-10 16:19:14 +0200 |
commit | c8e26e1962395ef14004dd4beb1b3b75e0e6d228 (patch) | |
tree | b87106e5e2f17d452d9ffba048bfea3a14e7910e | |
parent | 6d805a653b17ab31dd0db611f737d19cc6324a8d (diff) |
Core/Vehicles: Capture vehicle collision height for exit spline init function (prevent accessing no longer valid vehicle pointer)
(cherry picked from commit 09204159f856a89e397bfadfbafd8fb3603302e5)
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 07a5fb86fe6..73fbce8b840 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12181,12 +12181,12 @@ void Unit::_ExitVehicle(Position const* exitPosition) } } - std::function<void(Movement::MoveSplineInit&)> initializer = [=](Movement::MoveSplineInit& init) + std::function<void(Movement::MoveSplineInit&)> initializer = [=, vehicleCollisionHeight = vehicle->GetBase()->GetCollisionHeight()](Movement::MoveSplineInit& init) { - float height = pos.GetPositionZ() + vehicle->GetBase()->GetCollisionHeight(); + float height = pos.GetPositionZ() + vehicleCollisionHeight; // Creatures without inhabit type air should begin falling after exiting the vehicle - if (GetTypeId() == TYPEID_UNIT && !CanFly() && height > GetMap()->GetWaterOrGroundLevel(GetPhaseShift(), pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ() + vehicle->GetBase()->GetCollisionHeight(), &height)) + if (GetTypeId() == TYPEID_UNIT && !CanFly() && height > GetMap()->GetWaterOrGroundLevel(GetPhaseShift(), pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ() + vehicleCollisionHeight, &height)) init.SetFall(); init.MoveTo(pos.GetPositionX(), pos.GetPositionY(), height, false); |