aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorManuel <manue.l@live.com.ar>2011-01-24 18:56:26 -0300
committerManuel <manue.l@live.com.ar>2011-01-24 18:56:26 -0300
commit0197c4e322effe6b3468c30d749f8d3e1988e02f (patch)
tree4fd2777f83f06d30cae6872bc680b4b52d1519fa /src
parentfb950c00ee64860ca818465ea93abb144fbaafc6 (diff)
Core/Scripts/Oculus: Implemented worldstates related to Varos.
Signed-off-by: Manuel <manue.l@live.com.ar>
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp5
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp50
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.h13
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