From 09204159f856a89e397bfadfbafd8fb3603302e5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 8 Apr 2022 18:06:26 +0200 Subject: Core/Vehicles: Capture vehicle collision height for exit spline init function (prevent accessing no longer valid vehicle pointer) --- src/server/game/Entities/Unit/Unit.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 953eaca00f2..a7f9c4ae169 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12750,12 +12750,12 @@ void Unit::_ExitVehicle(Position const* exitPosition) } } - std::function initializer = [=](Movement::MoveSplineInit& init) + std::function 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(GetPhaseMask(), pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ() + vehicle->GetBase()->GetCollisionHeight(), &height)) + if (GetTypeId() == TYPEID_UNIT && !CanFly() && height > GetMap()->GetWaterOrGroundLevel(GetPhaseMask(), pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ() + vehicleCollisionHeight, &height)) init.SetFall(); init.MoveTo(pos.GetPositionX(), pos.GetPositionY(), height, false); -- cgit v1.2.3