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
|
// only for flyable vehicles
|
||||||
if (unit->IsFlying())
|
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())
|
if (_me->GetTypeId() == TYPEID_UNIT && _me->ToCreature()->IsAIEnabled())
|
||||||
_me->ToCreature()->AI()->PassengerBoarded(unit, seat->first, false);
|
_me->ToCreature()->AI()->PassengerBoarded(unit, seat->first, false);
|
||||||
|
|||||||
@@ -15,13 +15,14 @@
|
|||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TRINITY_VEHICLEDEFINES_H
|
#ifndef TRINITYCORE_VEHICLE_DEFINES_H
|
||||||
#define __TRINITY_VEHICLEDEFINES_H
|
#define TRINITYCORE_VEHICLE_DEFINES_H
|
||||||
|
|
||||||
#include "Define.h"
|
#include "Define.h"
|
||||||
#include "Duration.h"
|
#include "Duration.h"
|
||||||
#include <vector>
|
#include "EnumFlag.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
class Map;
|
class Map;
|
||||||
class WorldObject;
|
class WorldObject;
|
||||||
@@ -86,6 +87,14 @@ enum class VehicleExitParameters
|
|||||||
VehicleExitParamMax
|
VehicleExitParamMax
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class VehicleCustomFlags : uint32
|
||||||
|
{
|
||||||
|
None = 0x0,
|
||||||
|
DontForceParachuteOnExit = 0x1
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_ENUM_FLAG(VehicleCustomFlags);
|
||||||
|
|
||||||
struct PassengerInfo
|
struct PassengerInfo
|
||||||
{
|
{
|
||||||
ObjectGuid Guid;
|
ObjectGuid Guid;
|
||||||
@@ -145,6 +154,7 @@ struct VehicleTemplate
|
|||||||
{
|
{
|
||||||
Milliseconds DespawnDelay = Milliseconds::zero();
|
Milliseconds DespawnDelay = Milliseconds::zero();
|
||||||
Optional<float> Pitch;
|
Optional<float> Pitch;
|
||||||
|
EnumFlag<VehicleCustomFlags> CustomFlags = VehicleCustomFlags::None;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::vector<VehicleAccessory> VehicleAccessoryList;
|
typedef std::vector<VehicleAccessory> VehicleAccessoryList;
|
||||||
|
|||||||
@@ -3512,8 +3512,8 @@ void ObjectMgr::LoadVehicleTemplate()
|
|||||||
|
|
||||||
_vehicleTemplateStore.clear();
|
_vehicleTemplateStore.clear();
|
||||||
|
|
||||||
// 0 1 2
|
// 0 1 2 3
|
||||||
QueryResult result = WorldDatabase.Query("SELECT creatureId, despawnDelayMs, Pitch FROM vehicle_template");
|
QueryResult result = WorldDatabase.Query("SELECT creatureId, despawnDelayMs, Pitch, CustomFlags FROM vehicle_template");
|
||||||
|
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
@@ -3543,6 +3543,7 @@ void ObjectMgr::LoadVehicleTemplate()
|
|||||||
VehicleTemplate& vehicleTemplate = _vehicleTemplateStore[creatureId];
|
VehicleTemplate& vehicleTemplate = _vehicleTemplateStore[creatureId];
|
||||||
vehicleTemplate.DespawnDelay = Milliseconds(fields[1].GetInt32());
|
vehicleTemplate.DespawnDelay = Milliseconds(fields[1].GetInt32());
|
||||||
vehicleTemplate.Pitch = fields[2].GetFloatOrNull();
|
vehicleTemplate.Pitch = fields[2].GetFloatOrNull();
|
||||||
|
vehicleTemplate.CustomFlags = VehicleCustomFlags(fields[3].GetInt32());
|
||||||
|
|
||||||
if (vehicleTemplate.Pitch)
|
if (vehicleTemplate.Pitch)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user