diff options
3 files changed, 58 insertions, 10 deletions
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp index 38db5bdd30e..97f4e80e3eb 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp @@ -35,8 +35,6 @@ enum Spells SPELL_CALL_AZURE_RING_CAPTAIN_4 = 51008, //Effect Send Event (18455)*/ SPELL_CALL_AMPLIFY_MAGIC = 51054, - SPELL_CENTRIFUGE_SHIELD = 50053, - SPELL_ICE_BEAM = 49549 }; @@ -61,7 +59,8 @@ public: { boss_varosAI(Creature* creature) : BossAI(creature, DATA_VAROS_EVENT) { - DoCast(me,SPELL_CENTRIFUGE_SHIELD); + if (instance->GetData(DATA_DRAKOS_EVENT) != DONE) + DoCast(me,SPELL_CENTRIFUGE_SHIELD); } void Reset() diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp index 32119d16d01..790d961788b 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp @@ -45,14 +45,40 @@ public: drakosGUID = 0; varosGUID = 0; uromGUID = 0; - eregosGUIDs = 0; + eregosGUID = 0; platformUrom = 0; + centrifugueConstructCounter = 0; azureDragonsList.clear(); gameObjectList.clear(); } + void OnCreatureDeath(Creature* creature) + { + if (creature->GetEntry() != NPC_CENTRIFUGE_CONSTRUCT) + return; + + DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT,--centrifugueConstructCounter); + + if (!centrifugueConstructCounter) + if (Creature* varos = instance->GetCreature(varosGUID)) + varos->RemoveAllAuras(); + } + + void OnPlayerEnter(Player* player) + { + if (GetData(DATA_DRAKOS_EVENT) == DONE && GetData(DATA_VAROS_EVENT) != DONE) + { + player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW,1); + player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT,centrifugueConstructCounter); + } else + { + player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW,0); + player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT,0); + } + } + void ProcessEvent(Unit* /*unit*/, uint32 eventId) { if (eventId != EVENT_CALL_DRAGON) @@ -100,11 +126,15 @@ public: uromGUID = creature->GetGUID(); break; case NPC_EREGOS: - eregosGUIDs = creature->GetGUID(); + eregosGUID = creature->GetGUID(); break; case NPC_AZURE_RING_GUARDIAN: azureDragonsList.push_back(creature->GetGUID()); break; + case NPC_CENTRIFUGE_CONSTRUCT: + if (creature->isAlive()) + DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT,++centrifugueConstructCounter); + break; } } @@ -128,10 +158,16 @@ public: case DATA_DRAKOS_EVENT: encounter[0] = data; if (data == DONE) + { + DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW,1); + DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT,centrifugueConstructCounter); OpenCageDoors(); + } break; case DATA_VAROS_EVENT: encounter[1] = data; + if (encounter[1] == DONE) + DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW,0); break; case DATA_UROM_EVENT: encounter[2] = data; @@ -144,8 +180,9 @@ public: break; } - if (data == DONE) - SaveToDB(); + if (type <= DATA_EREGOS_EVENT) + if (data == DONE) + SaveToDB(); } uint32 GetData(uint32 type) @@ -169,7 +206,7 @@ public: case DATA_DRAKOS: return drakosGUID; case DATA_VAROS: return varosGUID; case DATA_UROM: return uromGUID; - case DATA_EREGOS: return eregosGUIDs; + case DATA_EREGOS: return eregosGUID; } return 0; @@ -235,9 +272,10 @@ public: uint64 drakosGUID; uint64 varosGUID; uint64 uromGUID; - uint64 eregosGUIDs; + uint64 eregosGUID; uint8 platformUrom; + uint8 centrifugueConstructCounter; uint16 encounter[MAX_ENCOUNTER]; std::string str_data; diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h index be942292c45..eda127345e3 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h @@ -42,7 +42,8 @@ enum Bosses NPC_UROM = 27655, NPC_EREGOS = 27656, - NPC_AZURE_RING_GUARDIAN = 27638 + NPC_AZURE_RING_GUARDIAN = 27638, + NPC_CENTRIFUGE_CONSTRUCT = 27641 }; enum GameObjects @@ -60,4 +61,14 @@ enum CreatureActions ACTION_CALL_DRAGON_EVENT = 1 }; +enum OculusWorldStates +{ + WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW = 3524, + WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT = 3486 +}; + +enum OculusSpells +{ + SPELL_CENTRIFUGE_SHIELD = 50053 +}; #endif |