aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.cpp2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp10
2 files changed, 9 insertions, 3 deletions
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index f68486d7439..0b8b3b20af5 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -52,7 +52,7 @@ UsableSeatNum(0), _me(unit), _vehicleInfo(vehInfo), _creatureEntry(creatureEntry
// Set or remove correct flags based on available seats. Will overwrite db data (if wrong).
if (UsableSeatNum)
_me->SetNpcFlag((_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
- else
+ else if (!unit->m_unitData->InteractSpellID)
_me->RemoveNpcFlag((_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
InitMovementInfoForBase();
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 37d938dd7e7..f2386904dff 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -5309,13 +5309,19 @@ void AuraEffect::HandleAuraSetVehicle(AuraApplication const* aurApp, uint8 mode,
uint32 vehicleId = GetMiscValue();
+ target->RemoveVehicleKit();
+
if (apply)
{
if (!target->CreateVehicleKit(vehicleId, 0))
return;
}
- else if (target->GetVehicleKit())
- target->RemoveVehicleKit();
+ else
+ {
+ if (Creature* creature = target->ToCreature())
+ if (uint32 originalVehicleId = creature->GetCreatureTemplate()->VehicleId)
+ creature->CreateVehicleKit(originalVehicleId, creature->GetEntry());
+ }
if (target->GetTypeId() != TYPEID_PLAYER)
return;