diff options
| author | Jorge Turrado Ferrero <36899226+JorTurFer@users.noreply.github.com> | 2018-05-02 01:11:40 +0200 | 
|---|---|---|
| committer | Keader <keader.android@gmail.com> | 2018-05-01 20:11:40 -0300 | 
| commit | f13de8083469742d62c2d74a49a76e35469d8fb0 (patch) | |
| tree | 39ca99a60416d8cd688e0096ceb3faf1d0998d19 /src/server/scripts | |
| parent | b5aeca6c933a5f00a7c2b02e988f728885be19ca (diff) | |
Scripts/Ulduar: Fixed Vehicles when flame leviathan die(#21897)
Diffstat (limited to 'src/server/scripts')
| -rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp | 26 | 
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 | 
