From 24301682634720f38d711ed318a5f851d14df24c Mon Sep 17 00:00:00 2001 From: sogladev Date: Sun, 17 May 2026 19:22:47 +0200 Subject: [PATCH] fix(Core/Vehicle): parachute on vehicle exit (#25848) --- src/server/game/Entities/Vehicle/Vehicle.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 794016405..2a64aab3c 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -506,6 +506,9 @@ void Vehicle::RemovePassenger(Unit* unit) seat->second.Passenger.Reset(); + // RemoveCharmedBy() clears MOVEMENTFLAG_FLYING, so cache this before uncharm. + bool wasFlying = _me->IsFlying(); + if (_me->IsCreature() && unit->IsPlayer() && seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_CAN_CONTROL) _me->RemoveCharmedBy(unit); @@ -521,7 +524,7 @@ void Vehicle::RemovePassenger(Unit* unit) } // only for flyable vehicles - if (_me->IsFlying() && !_me->GetInstanceId() && unit->IsPlayer() && !(unit->ToPlayer()->GetDelayedOperations() & DELAYED_VEHICLE_TELEPORT) && _me->GetEntry() != 30275 /*NPC_WILD_WYRM*/) + if (wasFlying && !_me->GetInstanceId() && unit->IsPlayer() && !(unit->ToPlayer()->GetDelayedOperations() & DELAYED_VEHICLE_TELEPORT) && _me->GetEntry() != 30275 /*NPC_WILD_WYRM*/) _me->CastSpell(unit, VEHICLE_SPELL_PARACHUTE, true); if (_me->IsCreature())