aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTrisjdc <trisjdc@gmail.com>2014-06-15 14:57:04 +0100
committerTrisjdc <trisjdc@gmail.com>2014-06-15 14:57:04 +0100
commit4e81e3c194d74e0330812c9da7dd9b1863941c6e (patch)
tree37cbd3ee100bcada3c9b4274bf49848fb8ecb749 /src
parent4615aa60a55bd6e117e2907869ee91a86427dad4 (diff)
Core/Vehicles: Define and implement VEHICLE_SEAT_FLAG_B_KEEP_PET
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DBCEnums.h1
-rwxr-xr-xsrc/server/game/Entities/Vehicle/Vehicle.cpp6
2 files changed, 5 insertions, 2 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index ec048e167ac..8e186e9d094 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -442,6 +442,7 @@ enum VehicleSeatFlagsB
VEHICLE_SEAT_FLAG_B_EJECTABLE = 0x00000020, // ejectable
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 = 0x00000040,
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3 = 0x00000100,
+ VEHICLE_SEAT_FLAG_B_KEEP_PET = 0x00020000,
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4 = 0x02000000,
VEHICLE_SEAT_FLAG_B_CAN_SWITCH = 0x04000000,
VEHICLE_SEAT_FLAG_B_VEHICLE_PLAYERFRAME_UI = 0x80000000 // Lua_UnitHasVehiclePlayerFrameUI - actually checked for flagsb &~ 0x80000000
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index f3b4e6de70c..915e6016e22 100755
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -779,6 +779,8 @@ bool VehicleJoinEvent::Execute(uint64, uint32)
Passenger->InterruptNonMeleeSpells(false);
Passenger->RemoveAurasByType(SPELL_AURA_MOUNTED);
+ VehicleSeatEntry const* veSeat = Seat->second.SeatInfo;
+
Player* player = Passenger->ToPlayer();
if (player)
{
@@ -789,14 +791,14 @@ bool VehicleJoinEvent::Execute(uint64, uint32)
player->StopCastingCharm();
player->StopCastingBindSight();
player->SendOnCancelExpectedVehicleRideAura();
- player->UnsummonPetTemporaryIfAny();
+ if (!(veSeat->m_flagsB & VEHICLE_SEAT_FLAG_B_KEEP_PET))
+ player->UnsummonPetTemporaryIfAny();
}
if (Seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE)
Passenger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Passenger->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
- VehicleSeatEntry const* veSeat = Seat->second.SeatInfo;
Passenger->m_movementInfo.transport.pos.Relocate(veSeat->m_attachmentOffsetX, veSeat->m_attachmentOffsetY, veSeat->m_attachmentOffsetZ);
Passenger->m_movementInfo.transport.time = 0;
Passenger->m_movementInfo.transport.seat = Seat->first;