aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index bbe2b972d27..9e4ef839c6e 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -281,7 +281,10 @@ class instance_ulduar : public InstanceMapScript
case NPC_SALVAGED_DEMOLISHER:
case NPC_SALVAGED_SIEGE_ENGINE:
case NPC_SALVAGED_CHOPPER:
- LeviathanVehicleGUIDs.push_back(creature->GetGUID());
+ if (GetBossState(BOSS_LEVIATHAN) == DONE)
+ DespawnLeviatanVehicle(creature);
+ else
+ LeviathanVehicleGUIDs.push_back(creature->GetGUID());
break;
// XT-002 Deconstructor
@@ -1037,17 +1040,8 @@ class instance_ulduar : public InstanceMapScript
// Eject all players from vehicles and make them untargetable.
// They will be despawned after a while
for (auto const& vehicleGuid : LeviathanVehicleGUIDs)
- {
if (Creature* vehicleCreature = instance->GetCreature(vehicleGuid))
- {
- if (Vehicle* vehicle = vehicleCreature->GetVehicleKit())
- {
- vehicle->RemoveAllPassengers();
- vehicleCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- vehicleCreature->DespawnOrUnsummon(5 * MINUTE * IN_MILLISECONDS);
- }
- }
- }
+ DespawnLeviatanVehicle(vehicleCreature);
break;
case EVENT_LEVIATHAN_BREAK_DOOR:
if (Creature* leviathan = GetCreature(BOSS_LEVIATHAN))
@@ -1059,6 +1053,16 @@ class instance_ulduar : public InstanceMapScript
}
}
+ void DespawnLeviatanVehicle(Creature* vehicleCreature)
+ {
+ if (Vehicle* vehicle = vehicleCreature->GetVehicleKit())
+ {
+ vehicle->RemoveAllPassengers();
+ vehicleCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ vehicleCreature->DespawnOrUnsummon(5 * MINUTE * IN_MILLISECONDS);
+ }
+ }
+
void UpdateDoorState(GameObject* door) override
{
// Leviathan doors are set to DOOR_TYPE_ROOM except the one it uses to enter the room