Core/Scripts/Oculus: Improved Arcane Beam ability of Azure Ring Captain (Varos Encounter)

Signed-off-by: Manuel <[email protected]>
This commit is contained in:
Manuel
2011-01-24 18:57:32 -03:00
parent 70a45be159
commit 177e3903e5
3 changed files with 16 additions and 31 deletions
@@ -37,7 +37,9 @@ enum Spells
SPELL_CALL_AZURE_RING_CAPTAIN_4 = 51008, //Effect Send Event (18455)*/ SPELL_CALL_AZURE_RING_CAPTAIN_4 = 51008, //Effect Send Event (18455)*/
SPELL_CALL_AMPLIFY_MAGIC = 51054, 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 enum Events
@@ -62,7 +64,7 @@ public:
{ {
boss_varosAI(Creature* creature) : BossAI(creature, DATA_VAROS_EVENT) 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); DoCast(me,SPELL_CENTRIFUGE_SHIELD);
} }
@@ -175,14 +177,17 @@ class npc_azure_ring_captain : public CreatureScript
{ {
targetGUID = 0; targetGUID = 0;
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING); me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING + MOVEMENTFLAG_FLYING);
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
} }
void SpellHitTarget(Unit* target, SpellEntry const* spell) void SpellHitTarget(Unit* target, SpellEntry const* spell)
{ {
if (spell->Id == SPELL_ICE_BEAM) if (spell->Id == SPELL_ICE_BEAM)
EnterEvadeMode(); {
target->CastSpell(target,SPELL_SUMMON_ARCANE_BEAM,true);
me->DespawnOrUnsummon();
}
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -226,6 +231,7 @@ class npc_azure_ring_captain : public CreatureScript
break; break;
} }
} }
private: private:
uint64 targetGUID; uint64 targetGUID;
InstanceScript* instance; InstanceScript* instance;
@@ -86,31 +86,13 @@ public:
if (eventId != EVENT_CALL_DRAGON) if (eventId != EVENT_CALL_DRAGON)
return; return;
if (azureDragonsList.empty())
return;
Creature* nearestDragon = NULL;
Creature* varos = instance->GetCreature(varosGUID); Creature* varos = instance->GetCreature(varosGUID);
for (std::list<uint64>::const_iterator itr = azureDragonsList.begin(); itr != azureDragonsList.end(); ++itr) if (!varos)
{ return;
if (Creature* dragon = instance->GetCreature(*itr))
{
if (!dragon->isAlive() && dragon->isInCombat())
continue;
if (!nearestDragon) if (Creature* drake = varos->SummonCreature(NPC_AZURE_RING_GUARDIAN,varos->GetPositionX(),varos->GetPositionY(),varos->GetPositionZ()+40))
nearestDragon = dragon; drake->AI()->DoAction(ACTION_CALL_DRAGON_EVENT);
else if (varos)
{
if (nearestDragon->GetExactDist(varos) > dragon->GetExactDist(varos))
nearestDragon = dragon;
}
}
}
if (nearestDragon)
nearestDragon->AI()->DoAction(ACTION_CALL_DRAGON_EVENT);
} }
void OnCreatureCreate(Creature* creature) void OnCreatureCreate(Creature* creature)
@@ -129,9 +111,6 @@ public:
case NPC_EREGOS: case NPC_EREGOS:
eregosGUID = creature->GetGUID(); eregosGUID = creature->GetGUID();
break; break;
case NPC_AZURE_RING_GUARDIAN:
azureDragonsList.push_back(creature->GetGUID());
break;
case NPC_CENTRIFUGE_CONSTRUCT: case NPC_CENTRIFUGE_CONSTRUCT:
if (creature->isAlive()) if (creature->isAlive())
DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT,++centrifugueConstructCounter); DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT,++centrifugueConstructCounter);
@@ -42,8 +42,8 @@ enum Bosses
NPC_UROM = 27655, NPC_UROM = 27655,
NPC_EREGOS = 27656, NPC_EREGOS = 27656,
NPC_AZURE_RING_GUARDIAN = 27638, NPC_AZURE_RING_GUARDIAN = 28236,
NPC_CENTRIFUGE_CONSTRUCT = 27641 NPC_CENTRIFUGE_CONSTRUCT = 27641,
}; };
enum GameObjects enum GameObjects