diff --git a/sql/updates/world/master/2025_07_23_00_world.sql b/sql/updates/world/master/2025_07_23_00_world.sql
new file mode 100644
index 0000000000..2b3bc3c5a3
--- /dev/null
+++ b/sql/updates/world/master/2025_07_23_00_world.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `vehicle_template`
+ ADD `CustomFlags` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `Pitch`;
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index 6c435583b0..d7537f878d 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -533,7 +533,11 @@ Vehicle* Vehicle::RemovePassenger(WorldObject* passenger)
// only for flyable vehicles
if (unit->IsFlying())
- _me->CastSpell(unit, VEHICLE_SPELL_PARACHUTE, true);
+ {
+ VehicleTemplate const* vehicleTemplate = sObjectMgr->GetVehicleTemplate(this);
+ if (!vehicleTemplate || !vehicleTemplate->CustomFlags.HasFlag(VehicleCustomFlags::DontForceParachuteOnExit))
+ _me->CastSpell(unit, VEHICLE_SPELL_PARACHUTE, true);
+ }
if (_me->GetTypeId() == TYPEID_UNIT && _me->ToCreature()->IsAIEnabled())
_me->ToCreature()->AI()->PassengerBoarded(unit, seat->first, false);
diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h
index 764a039bbd..fd012bdc53 100644
--- a/src/server/game/Entities/Vehicle/VehicleDefines.h
+++ b/src/server/game/Entities/Vehicle/VehicleDefines.h
@@ -15,13 +15,14 @@
* with this program. If not, see .
*/
-#ifndef __TRINITY_VEHICLEDEFINES_H
-#define __TRINITY_VEHICLEDEFINES_H
+#ifndef TRINITYCORE_VEHICLE_DEFINES_H
+#define TRINITYCORE_VEHICLE_DEFINES_H
#include "Define.h"
#include "Duration.h"
-#include
+#include "EnumFlag.h"
#include