Core/Vehicles: Added new field CustomFlags to vehicle_template (#31115)

This commit is contained in:
Meji
2025-07-23 14:14:03 +02:00
committed by GitHub
parent 4bf74d9d04
commit 00eed48515
4 changed files with 23 additions and 6 deletions
@@ -0,0 +1,2 @@
ALTER TABLE `vehicle_template`
ADD `CustomFlags` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `Pitch`;
+5 -1
View File
@@ -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);
@@ -15,13 +15,14 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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 <vector>
#include "EnumFlag.h"
#include <map>
#include <vector>
class Map;
class WorldObject;
@@ -86,6 +87,14 @@ enum class VehicleExitParameters
VehicleExitParamMax
};
enum class VehicleCustomFlags : uint32
{
None = 0x0,
DontForceParachuteOnExit = 0x1
};
DEFINE_ENUM_FLAG(VehicleCustomFlags);
struct PassengerInfo
{
ObjectGuid Guid;
@@ -145,6 +154,7 @@ struct VehicleTemplate
{
Milliseconds DespawnDelay = Milliseconds::zero();
Optional<float> Pitch;
EnumFlag<VehicleCustomFlags> CustomFlags = VehicleCustomFlags::None;
};
typedef std::vector<VehicleAccessory> VehicleAccessoryList;
+3 -2
View File
@@ -3512,8 +3512,8 @@ void ObjectMgr::LoadVehicleTemplate()
_vehicleTemplateStore.clear();
// 0 1 2
QueryResult result = WorldDatabase.Query("SELECT creatureId, despawnDelayMs, Pitch FROM vehicle_template");
// 0 1 2 3
QueryResult result = WorldDatabase.Query("SELECT creatureId, despawnDelayMs, Pitch, CustomFlags FROM vehicle_template");
if (!result)
{
@@ -3543,6 +3543,7 @@ void ObjectMgr::LoadVehicleTemplate()
VehicleTemplate& vehicleTemplate = _vehicleTemplateStore[creatureId];
vehicleTemplate.DespawnDelay = Milliseconds(fields[1].GetInt32());
vehicleTemplate.Pitch = fields[2].GetFloatOrNull();
vehicleTemplate.CustomFlags = VehicleCustomFlags(fields[3].GetInt32());
if (vehicleTemplate.Pitch)
{