diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-04-08 18:06:26 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-04-08 18:06:26 +0200 |
commit | 09204159f856a89e397bfadfbafd8fb3603302e5 (patch) | |
tree | 53fb189d9a1f355d698161a7bdb7d6ac70a5d8a6 /src | |
parent | 5a20861565c6de3ed0312bb82fbf5bb048f0f8f4 (diff) |
Core/Vehicles: Capture vehicle collision height for exit spline init function (prevent accessing no longer valid vehicle pointer)
Diffstat (limited to 'src')
-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 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<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(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); |