aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Turrado Ferrero <36899226+JorTurFer@users.noreply.github.com>2018-05-02 01:11:40 +0200
committerShauren <shauren.trinity@gmail.com>2021-09-26 15:49:18 +0200
commita9b97939a8f81fc9d51a889981d64574015f869f (patch)
treedfbf8890eeaae8c3704ef483278631bbfadc72ae
parent962833d86f5cc825c0d6c6c1f17e3773dac3c238 (diff)
Scripts/Ulduar: Fixed Vehicles when flame leviathan die(#21897)
(cherry picked from commit f13de8083469742d62c2d74a49a76e35469d8fb0)
-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 7dc1c678e3d..18456688ede 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -282,7 +282,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
@@ -1042,17 +1045,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->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- vehicleCreature->DespawnOrUnsummon(5 * MINUTE * IN_MILLISECONDS);
- }
- }
- }
+ DespawnLeviatanVehicle(vehicleCreature);
break;
case EVENT_LEVIATHAN_BREAK_DOOR:
if (Creature* leviathan = GetCreature(BOSS_LEVIATHAN))
@@ -1064,6 +1058,16 @@ class instance_ulduar : public InstanceMapScript
}
}
+ void DespawnLeviatanVehicle(Creature* vehicleCreature)
+ {
+ if (Vehicle* vehicle = vehicleCreature->GetVehicleKit())
+ {
+ vehicle->RemoveAllPassengers();
+ vehicleCreature->AddUnitFlag(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