aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-04-08 18:06:26 +0200
committerShauren <shauren.trinity@gmail.com>2022-04-08 18:06:26 +0200
commit09204159f856a89e397bfadfbafd8fb3603302e5 (patch)
tree53fb189d9a1f355d698161a7bdb7d6ac70a5d8a6 /src
parent5a20861565c6de3ed0312bb82fbf5bb048f0f8f4 (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.cpp6
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);