diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 3ef0e2071..c55af0698 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -713,13 +713,6 @@ void Creature::Update(uint32 diff) m_vehicleKit->Reset(); } - if (_triggerVehicleKitInit) - { - _triggerVehicleKitInit = false; - if (m_vehicleKit) - m_vehicleKit->Reset(); - } - switch (m_deathState) { case DeathState::JustRespawned: @@ -1120,10 +1113,9 @@ bool Creature::AIM_Initialize(CreatureAI* ai) IsAIEnabled = true; i_AI->InitializeAI(); - // Defer vehicle kit init to the next Creature::Update tick so accessories - // install after visibility sync. - if (GetVehicleKit()) - _triggerVehicleKitInit = true; + // Xinef: Initialize vehicle if it is not summoned! + if (GetVehicleKit() && m_spawnId) + GetVehicleKit()->Reset(); return true; } diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 147435a7d..c0eb2a753 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -536,9 +536,6 @@ private: // Formation variable CreatureGroup* m_formation; bool TriggerJustRespawned; - // Deferred vehicle init: set in AIM_Initialize, consumed on the next - // Creature::Update tick so accessories install after visibility sync. - bool _triggerVehicleKitInit = false; // Shared timer between mobs who assist another. // Damaging one extends leash range on all of them. diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index d75b89a11..57b18d5f4 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -346,6 +346,11 @@ bool Map::AddToMap(T* obj, bool checkTransport) //also, trigger needs to cast spell, if not update, cannot see visual obj->UpdateObjectVisibility(true); + // Xinef: little hack for vehicles, accessories have to be added after visibility update so they wont fall off the vehicle, moved from Creature::AIM_Initialize + // Initialize vehicle, this is done only for summoned npcs, DB creatures are handled by grid loaders + if (obj->IsCreature()) + if (Vehicle* vehicle = obj->ToCreature()->GetVehicleKit()) + vehicle->Reset(); return true; }