diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-03-19 10:58:39 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-03-19 10:58:39 +0100 |
commit | 3d46b7e32ef867f110bc8a8cbd2dfb0f08bf2877 (patch) | |
tree | c364d5c533021af621eca9e86cc3936d2007418d | |
parent | 1a4a618d81067969d7eec3725988a8bf0f845881 (diff) | |
parent | 6fd4debc7a18fdee97af0739d9d6f9b58b2dd004 (diff) |
Merge branch 'pr/n15_Supabad'
3 files changed, 41 insertions, 37 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp index 3e9f95591ad..f3cad27f043 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp @@ -250,6 +250,7 @@ public: void Reset() { _Reset(); + uiShutdown = 0; me->SetReactState(REACT_DEFENSIVE); if (me->GetVehicleKit()) { @@ -356,8 +357,10 @@ public: void UpdateAI(const uint32 diff) { - if (!me->getVictim()) - UpdateVictim(); + if (!UpdateVictim() || !CheckInRoom()) + return; + + events.Update(diff); if (uiShutdown == RAID_MODE(2,4)) { @@ -382,10 +385,7 @@ public: } if (me->HasUnitState(UNIT_STAT_CASTING)) - return; - - - events.Update(diff); + return; uint32 eventId = events.GetEvent(); diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp index 808bdab3815..f866bd3b746 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp @@ -18,21 +18,10 @@ #include "ScriptPCH.h" #include "ulduar.h" -enum eGameObjects +static const DoorData doorData[] = { - GO_KOLOGARN_CHEST_HERO = 195047, - GO_KOLOGARN_CHEST = 195046, - GO_KOLOGARN_BRIDGE = 194232, - GO_KOLOGARN_DOOR = 194553, - GO_THORIM_CHEST_HERO = 194315, - GO_THORIM_CHEST = 194314, - GO_HODIR_CHEST_HERO = 194308, - GO_HODIR_CHEST = 194307, - GO_FREYA_CHEST_HERO = 194325, - GO_FREYA_CHEST = 194324, - GO_LEVIATHAN_DOOR = 194905, - GO_LEVIATHAN_GATE = 194630, - GO_VEZAX_DOOR = 194750, + {GO_LEVIATHAN_DOOR, TYPE_LEVIATHAN, DOOR_TYPE_ROOM, BOUNDARY_S}, + {0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE} }; class instance_ulduar : public InstanceMapScript @@ -47,7 +36,7 @@ public: struct instance_ulduar_InstanceMapScript : public InstanceScript { - instance_ulduar_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); }; + instance_ulduar_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { Initialize(); }; uint32 uiEncounter[MAX_ENCOUNTER]; std::string m_strInstData; @@ -70,7 +59,6 @@ public: uint64 uiVezaxGUID; uint64 uiYoggSaronGUID; uint64 uiAlgalonGUID; - uint64 uiLeviathanDoor[7]; uint64 uiLeviathanGateGUID; uint64 uiVezaxDoorGUID; @@ -86,6 +74,7 @@ public: void Initialize() { SetBossNumber(MAX_ENCOUNTER); + LoadDoorData(doorData); uiIgnisGUID = 0; uiRazorscaleGUID = 0; uiExpCommanderGUID = 0; @@ -113,7 +102,6 @@ public: memset(&uiEncounter, 0, sizeof(uiEncounter)); memset(&uiAssemblyGUIDs, 0, sizeof(uiAssemblyGUIDs)); - memset(&uiLeviathanDoor, 0, sizeof(uiLeviathanDoor)); } bool IsEncounterInProgress() const @@ -236,18 +224,12 @@ public: uiFreyaChestGUID = go->GetGUID(); break; case GO_LEVIATHAN_DOOR: - uiLeviathanDoor[flag] = go->GetGUID(); - HandleGameObject(NULL, true, go); - flag++; - if (flag == 7) - flag =0; + AddDoor(go, true); break; case GO_LEVIATHAN_GATE: uiLeviathanGateGUID = go->GetGUID(); if (GetBossState(TYPE_LEVIATHAN) == DONE) go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); - else - HandleGameObject(NULL, false, go); break; case GO_VEZAX_DOOR: uiVezaxDoorGUID = go->GetGUID(); @@ -256,6 +238,18 @@ public: } } + void OnGameObjectRemove(GameObject* go) + { + switch (go->GetEntry()) + { + case GO_LEVIATHAN_DOOR: + AddDoor(go, false); + break; + default: + break; + } + } + void ProcessEvent(GameObject* /*go*/, uint32 eventId) { // Flame Leviathan's Tower Event triggers @@ -291,13 +285,6 @@ public: switch (type) { case TYPE_LEVIATHAN: - if (state == IN_PROGRESS) - for (uint8 uiI = 0; uiI < 7; ++uiI) - HandleGameObject(uiLeviathanDoor[uiI],false); - else - for (uint8 uiI = 0; uiI < 7; ++uiI) - HandleGameObject(uiLeviathanDoor[uiI],true); - break; case TYPE_IGNIS: case TYPE_RAZORSCALE: case TYPE_XT002: diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h index fdaa8545fa0..15276562197 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h +++ b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h @@ -77,6 +77,23 @@ enum eNPCs NPC_ALGALON = 32871, }; +enum eGameObjects +{ + GO_KOLOGARN_CHEST_HERO = 195047, + GO_KOLOGARN_CHEST = 195046, + GO_KOLOGARN_BRIDGE = 194232, + GO_KOLOGARN_DOOR = 194553, + GO_THORIM_CHEST_HERO = 194315, + GO_THORIM_CHEST = 194314, + GO_HODIR_CHEST_HERO = 194308, + GO_HODIR_CHEST = 194307, + GO_FREYA_CHEST_HERO = 194325, + GO_FREYA_CHEST = 194324, + GO_LEVIATHAN_DOOR = 194905, + GO_LEVIATHAN_GATE = 194630, + GO_VEZAX_DOOR = 194750, +}; + enum eTowerEvents { EVENT_TOWER_OF_STORM_DESTROYED = 21031, |