Core/Vehicles: Added new field CustomFlags to vehicle_template (#31115)
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `vehicle_template`
|
||||
ADD `CustomFlags` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `Pitch`;
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user