From 09a90c4daf77e37bba9149fe52be0dfe1e38e704 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Wed, 20 Aug 2025 22:05:25 -0400 Subject: [PATCH] Core/Vehicles: Added new field CustomFlags to vehicle_template Port From (https://github.com/TrinityCore/TrinityCore/commit/00eed485156963cab5caa75b8e36dd7a332a423e) --- Source/Game/Entities/Vehicle.cs | 13 ++++++++++++- Source/Game/Globals/ObjectManager.cs | 5 +++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Source/Game/Entities/Vehicle.cs b/Source/Game/Entities/Vehicle.cs index f968351a0..1cf409e47 100644 --- a/Source/Game/Entities/Vehicle.cs +++ b/Source/Game/Entities/Vehicle.cs @@ -389,7 +389,11 @@ namespace Game.Entities // only for flyable vehicles if (unit.IsFlying()) - _me.CastSpell(unit, SharedConst.VehicleSpellParachute, true); + { + VehicleTemplate vehicleTemplate = Global.ObjectMgr.GetVehicleTemplate(this); + if (vehicleTemplate == null || !vehicleTemplate.CustomFlags.HasFlag(VehicleCustomFlags.DontForceParachuteOnExit)) + _me.CastSpell(unit, SharedConst.VehicleSpellParachute, true); + } if (_me.IsTypeId(TypeId.Unit) && _me.ToCreature().IsAIEnabled()) _me.ToCreature().GetAI().PassengerBoarded(unit, seat.Key, false); @@ -828,10 +832,17 @@ namespace Game.Entities public uint? RideSpellID; } + public enum VehicleCustomFlags + { + None = 0x0, + DontForceParachuteOnExit = 0x1 + } + public class VehicleTemplate { public TimeSpan DespawnDelay; public float? Pitch; + public VehicleCustomFlags CustomFlags; } public class VehicleSeatAddon diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 7d4c73594..e0508b6cc 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -11391,8 +11391,8 @@ namespace Game _vehicleTemplateStore.Clear(); - // 0 1 2 - SQLResult result = DB.World.Query("SELECT creatureId, despawnDelayMs, Pitch FROM vehicle_template"); + // 0 1 2 3 + SQLResult result = DB.World.Query("SELECT creatureId, despawnDelayMs, Pitch, CustomFlags FROM vehicle_template"); if (result.IsEmpty()) { Log.outInfo(LogFilter.ServerLoading, "Loaded 0 vehicle template. DB table `vehicle_template` is empty."); @@ -11418,6 +11418,7 @@ namespace Game VehicleTemplate vehicleTemplate = new(); vehicleTemplate.DespawnDelay = TimeSpan.FromMilliseconds(result.Read(1)); + vehicleTemplate.CustomFlags = (VehicleCustomFlags)result.Read(3); if (!result.IsNull(2)) {