aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp14
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp29
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.h4
3 files changed, 16 insertions, 31 deletions
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index f96c781ff45..6a67aabfb8b 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -37,7 +37,9 @@ enum Spells
SPELL_CALL_AZURE_RING_CAPTAIN_4 = 51008, //Effect Send Event (18455)*/
SPELL_CALL_AMPLIFY_MAGIC = 51054,
- SPELL_ICE_BEAM = 49549
+ SPELL_ICE_BEAM = 49549,
+ SPELL_ARCANE_BEAM_PERIODIC = 51019,
+ SPELL_SUMMON_ARCANE_BEAM = 51017
};
enum Events
@@ -62,7 +64,7 @@ public:
{
boss_varosAI(Creature* creature) : BossAI(creature, DATA_VAROS_EVENT)
{
- if (instance->GetData(DATA_DRAKOS_EVENT) != DONE)
+ if (instance->GetBossState(DATA_DRAKOS_EVENT) != DONE)
DoCast(me,SPELL_CENTRIFUGE_SHIELD);
}
@@ -175,14 +177,17 @@ class npc_azure_ring_captain : public CreatureScript
{
targetGUID = 0;
- me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING + MOVEMENTFLAG_FLYING);
me->SetReactState(REACT_AGGRESSIVE);
}
void SpellHitTarget(Unit* target, SpellEntry const* spell)
{
if (spell->Id == SPELL_ICE_BEAM)
- EnterEvadeMode();
+ {
+ target->CastSpell(target,SPELL_SUMMON_ARCANE_BEAM,true);
+ me->DespawnOrUnsummon();
+ }
}
void UpdateAI(const uint32 diff)
@@ -226,6 +231,7 @@ class npc_azure_ring_captain : public CreatureScript
break;
}
}
+
private:
uint64 targetGUID;
InstanceScript* instance;
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
index c99fd117008..325e8706886 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
@@ -86,31 +86,13 @@ public:
if (eventId != EVENT_CALL_DRAGON)
return;
- if (azureDragonsList.empty())
- return;
-
- Creature* nearestDragon = NULL;
Creature* varos = instance->GetCreature(varosGUID);
- for (std::list<uint64>::const_iterator itr = azureDragonsList.begin(); itr != azureDragonsList.end(); ++itr)
- {
- if (Creature* dragon = instance->GetCreature(*itr))
- {
- if (!dragon->isAlive() && dragon->isInCombat())
- continue;
-
- if (!nearestDragon)
- nearestDragon = dragon;
- else if (varos)
- {
- if (nearestDragon->GetExactDist(varos) > dragon->GetExactDist(varos))
- nearestDragon = dragon;
- }
- }
- }
+ if (!varos)
+ return;
- if (nearestDragon)
- nearestDragon->AI()->DoAction(ACTION_CALL_DRAGON_EVENT);
+ if (Creature* drake = varos->SummonCreature(NPC_AZURE_RING_GUARDIAN,varos->GetPositionX(),varos->GetPositionY(),varos->GetPositionZ()+40))
+ drake->AI()->DoAction(ACTION_CALL_DRAGON_EVENT);
}
void OnCreatureCreate(Creature* creature)
@@ -129,9 +111,6 @@ public:
case NPC_EREGOS:
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);
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
index eda127345e3..19e47af305c 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
@@ -42,8 +42,8 @@ enum Bosses
NPC_UROM = 27655,
NPC_EREGOS = 27656,
- NPC_AZURE_RING_GUARDIAN = 27638,
- NPC_CENTRIFUGE_CONSTRUCT = 27641
+ NPC_AZURE_RING_GUARDIAN = 28236,
+ NPC_CENTRIFUGE_CONSTRUCT = 27641,
};
enum GameObjects