diff options
author | Manuel <manue.l@live.com.ar> | 2011-01-24 18:57:32 -0300 |
---|---|---|
committer | Manuel <manue.l@live.com.ar> | 2011-01-24 18:57:32 -0300 |
commit | 177e3903e5dbd4bd3bc353290566a631e65b9c3f (patch) | |
tree | d4801ecec88f6bb739df155aaf3e05f099ab506c /src | |
parent | 70a45be1594c43e09f7103c910f11a0476f88b52 (diff) |
Core/Scripts/Oculus: Improved Arcane Beam ability of Azure Ring Captain (Varos Encounter)
Signed-off-by: Manuel <manue.l@live.com.ar>
Diffstat (limited to 'src')
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 |