Scripts/Instances: Follow-up to #16346. Fix Illidan and Northrend Beasts.

(cherry picked from commit 4e922a5146)

# Conflicts:
#	src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
This commit is contained in:
treeston
2016-06-03 22:14:09 +02:00
committed by joschiwald
parent 20ef64c8d8
commit 8b4435c96c
2 changed files with 230 additions and 228 deletions

View File

@@ -191,7 +191,7 @@ class boss_gormok : public CreatureScript
{
case 0:
instance->DoUseDoorOrButton(instance->GetGuidData(GO_MAIN_GATE_DOOR));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC);
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
break;
@@ -595,7 +595,7 @@ struct boss_jormungarAI : public BossAI
case EVENT_SUMMON_ACIDMAW:
if (Creature* acidmaw = me->SummonCreature(NPC_ACIDMAW, ToCCommonLoc[9].GetPositionX(), ToCCommonLoc[9].GetPositionY(), ToCCommonLoc[9].GetPositionZ(), 5, TEMPSUMMON_MANUAL_DESPAWN))
{
acidmaw->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
acidmaw->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC);
acidmaw->SetReactState(REACT_AGGRESSIVE);
acidmaw->SetInCombatWithZone();
acidmaw->CastSpell(acidmaw, SPELL_EMERGE);
@@ -752,7 +752,7 @@ class boss_dreadscale : public CreatureScript
{
case 0:
instance->DoCloseDoorOrButton(instance->GetGuidData(GO_MAIN_GATE_DOOR));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC);
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
break;
@@ -925,7 +925,7 @@ class boss_icehowl : public CreatureScript
break;
case 2:
instance->DoUseDoorOrButton(instance->GetGuidData(GO_MAIN_GATE_DOOR));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC);
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
break;

View File

@@ -539,6 +539,7 @@ public:
void EnterCombat(Unit* /*who*/) override
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->setActive(true);
DoZoneInCombat();
}
@@ -585,7 +586,7 @@ public:
void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override
{
if (spell->Id == SPELL_GLAIVE_RETURNS) // Re-equip our warblades!
if (spell->Id == SPELL_GLAIVE_RETURNS) // Re-equip our warglaives!
{
if (!me->GetVirtualItemId(0))
SetEquipmentSlots(false, EQUIP_ID_MAIN_HAND, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
@@ -673,7 +674,7 @@ public:
Timer[EVENT_TALK_SEQUENCE] = 100;
me->RemoveAllAuras();
me->InterruptNonMeleeSpells(false);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->GetMotionMaster()->Clear(false);
me->AttackStop();
break;
@@ -791,99 +792,99 @@ public:
{
switch (FlightCount)
{
case 1: // lift off
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
me->SetDisableGravity(true);
me->StopMoving();
Talk(SAY_ILLIDAN_TAKEOFF);
Timer[EVENT_FLIGHT_SEQUENCE] = 3000;
break;
case 2: // move to center
me->GetMotionMaster()->MovePoint(0, CENTER_X + 5, CENTER_Y, CENTER_Z); // +5, for SPELL_THROW_GLAIVE bug
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 3: // throw one glaive
{
uint8 i=1;
Creature* Glaive = me->SummonCreature(BLADE_OF_AZZINOTH, GlaivePosition[i].x, GlaivePosition[i].y, GlaivePosition[i].z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
if (Glaive)
case 1: // lift off
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
me->SetDisableGravity(true);
me->StopMoving();
Talk(SAY_ILLIDAN_TAKEOFF);
Timer[EVENT_FLIGHT_SEQUENCE] = 3000;
break;
case 2: // move to center
me->GetMotionMaster()->MovePoint(0, CENTER_X + 5, CENTER_Y, CENTER_Z); // +5, for SPELL_THROW_GLAIVE bug
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 3: // throw one glaive
{
GlaiveGUID[i] = Glaive->GetGUID();
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Glaive->SetDisplayId(MODEL_INVISIBLE);
Glaive->setFaction(me->getFaction());
DoCast(Glaive, SPELL_THROW_GLAIVE2);
}
}
Timer[EVENT_FLIGHT_SEQUENCE] = 700;
break;
case 4: // throw another
SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
{
uint8 i=0;
Creature* Glaive = me->SummonCreature(BLADE_OF_AZZINOTH, GlaivePosition[i].x, GlaivePosition[i].y, GlaivePosition[i].z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
if (Glaive)
{
GlaiveGUID[i] = Glaive->GetGUID();
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Glaive->SetDisplayId(MODEL_INVISIBLE);
Glaive->setFaction(me->getFaction());
DoCast(Glaive, SPELL_THROW_GLAIVE, true);
}
}
Timer[EVENT_FLIGHT_SEQUENCE] = 5000;
break;
case 5: // summon flames
SummonFlamesOfAzzinoth();
Timer[EVENT_FLIGHT_SEQUENCE] = 3000;
break;
case 6: // fly to hover point
me->GetMotionMaster()->MovePoint(0, HoverPosition[HoverPoint].x, HoverPosition[HoverPoint].y, HoverPosition[HoverPoint].z);
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 7: // return to center
me->GetMotionMaster()->MovePoint(0, CENTER_X, CENTER_Y, CENTER_Z);
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 8: // glaive return
for (uint8 i = 0; i < 2; ++i)
{
if (!GlaiveGUID[i].IsEmpty())
{
Unit* Glaive = ObjectAccessor::GetUnit(*me, GlaiveGUID[i]);
uint8 i=1;
Creature* Glaive = me->SummonCreature(BLADE_OF_AZZINOTH, GlaivePosition[i].x, GlaivePosition[i].y, GlaivePosition[i].z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
if (Glaive)
{
Glaive->CastSpell(me, SPELL_GLAIVE_RETURNS, false); // Make it look like the Glaive flies back up to us
Glaive->SetDisplayId(MODEL_INVISIBLE); // disappear but not die for now
GlaiveGUID[i] = Glaive->GetGUID();
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Glaive->SetDisplayId(MODEL_INVISIBLE);
Glaive->setFaction(me->getFaction());
DoCast(Glaive, SPELL_THROW_GLAIVE2);
}
}
}
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
break;
case 9: // land
me->SetDisableGravity(false);
me->StopMoving();
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
for (uint8 i = 0; i < 2; ++i)
{
if (!GlaiveGUID[i].IsEmpty())
Timer[EVENT_FLIGHT_SEQUENCE] = 700;
break;
case 4: // throw another
SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
{
if (Creature* glaive = ObjectAccessor::GetCreature(*me, GlaiveGUID[i]))
glaive->DespawnOrUnsummon();
GlaiveGUID[i].Clear();
uint8 i=0;
Creature* Glaive = me->SummonCreature(BLADE_OF_AZZINOTH, GlaivePosition[i].x, GlaivePosition[i].y, GlaivePosition[i].z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
if (Glaive)
{
GlaiveGUID[i] = Glaive->GetGUID();
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Glaive->SetDisplayId(MODEL_INVISIBLE);
Glaive->setFaction(me->getFaction());
DoCast(Glaive, SPELL_THROW_GLAIVE, true);
}
}
}
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
break;
case 10: // attack
DoResetThreat();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE);
me->SetSheath(SHEATH_STATE_MELEE);
EnterPhase(PHASE_NORMAL_2);
break;
default:
break;
Timer[EVENT_FLIGHT_SEQUENCE] = 5000;
break;
case 5: // summon flames
SummonFlamesOfAzzinoth();
Timer[EVENT_FLIGHT_SEQUENCE] = 3000;
break;
case 6: // fly to hover point
me->GetMotionMaster()->MovePoint(0, HoverPosition[HoverPoint].x, HoverPosition[HoverPoint].y, HoverPosition[HoverPoint].z);
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 7: // return to center
me->GetMotionMaster()->MovePoint(0, CENTER_X, CENTER_Y, CENTER_Z);
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 8: // glaive return
for (uint8 i = 0; i < 2; ++i)
{
if (!GlaiveGUID[i].IsEmpty())
{
Unit* Glaive = ObjectAccessor::GetUnit(*me, GlaiveGUID[i]);
if (Glaive)
{
Glaive->CastSpell(me, SPELL_GLAIVE_RETURNS, false); // Make it look like the Glaive flies back up to us
Glaive->SetDisplayId(MODEL_INVISIBLE); // disappear but not die for now
}
}
}
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
break;
case 9: // land
me->SetDisableGravity(false);
me->StopMoving();
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
for (uint8 i = 0; i < 2; ++i)
{
if (!GlaiveGUID[i].IsEmpty())
{
if (Creature* glaive = ObjectAccessor::GetCreature(*me, GlaiveGUID[i]))
glaive->DespawnOrUnsummon();
GlaiveGUID[i].Clear();
}
}
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
break;
case 10: // attack
DoResetThreat();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE);
me->SetSheath(SHEATH_STATE_MELEE);
EnterPhase(PHASE_NORMAL_2);
break;
default:
break;
}
++FlightCount;
}
@@ -913,23 +914,23 @@ public:
switch (TransformCount)
{
case 2:
DoResetThreat();
break;
case 4:
EnterPhase(PHASE_DEMON);
break;
case 7:
DoResetThreat();
break;
case 9:
if (!MaievGUID.IsEmpty())
EnterPhase(PHASE_NORMAL_MAIEV); // Depending on whether we summoned Maiev, we switch to either phase 5 or 3
else
EnterPhase(PHASE_NORMAL_2);
break;
default:
break;
case 2:
DoResetThreat();
break;
case 4:
EnterPhase(PHASE_DEMON);
break;
case 7:
DoResetThreat();
break;
case 9:
if (!MaievGUID.IsEmpty())
EnterPhase(PHASE_NORMAL_MAIEV); // Depending on whether we summoned Maiev, we switch to either phase 5 or 3
else
EnterPhase(PHASE_NORMAL_2);
break;
default:
break;
}
if (Phase == PHASE_TRANSFORM_SEQUENCE)
Timer[EVENT_TRANSFORM_SEQUENCE] = DemonTransformation[TransformCount].timer;
@@ -957,37 +958,37 @@ public:
switch (Phase)
{
case PHASE_NORMAL:
if (HealthBelowPct(65))
EnterPhase(PHASE_FLIGHT_SEQUENCE);
break;
case PHASE_NORMAL:
if (HealthBelowPct(65))
EnterPhase(PHASE_FLIGHT_SEQUENCE);
break;
case PHASE_NORMAL_2:
if (HealthBelowPct(30))
EnterPhase(PHASE_TALK_SEQUENCE);
break;
case PHASE_NORMAL_2:
if (HealthBelowPct(30))
EnterPhase(PHASE_TALK_SEQUENCE);
break;
case PHASE_NORMAL_MAIEV:
if (HealthBelowPct(1))
EnterPhase(PHASE_TALK_SEQUENCE);
break;
case PHASE_NORMAL_MAIEV:
if (HealthBelowPct(1))
EnterPhase(PHASE_TALK_SEQUENCE);
break;
case PHASE_TALK_SEQUENCE:
if (Event == EVENT_TALK_SEQUENCE)
HandleTalkSequence();
break;
case PHASE_TALK_SEQUENCE:
if (Event == EVENT_TALK_SEQUENCE)
HandleTalkSequence();
break;
case PHASE_FLIGHT_SEQUENCE:
if (Event == EVENT_FLIGHT_SEQUENCE)
HandleFlightSequence();
break;
case PHASE_FLIGHT_SEQUENCE:
if (Event == EVENT_FLIGHT_SEQUENCE)
HandleFlightSequence();
break;
case PHASE_TRANSFORM_SEQUENCE:
if (Event == EVENT_TRANSFORM_SEQUENCE)
HandleTransformSequence();
break;
default:
break;
case PHASE_TRANSFORM_SEQUENCE:
if (Event == EVENT_TRANSFORM_SEQUENCE)
HandleTransformSequence();
break;
default:
break;
}
if (me->IsNonMeleeSpellCast(false))
@@ -998,63 +999,63 @@ public:
switch (Event)
{
// PHASE_NORMAL
case EVENT_BERSERK:
Talk(SAY_ILLIDAN_ENRAGE);
DoCast(me, SPELL_BERSERK, true);
Timer[EVENT_BERSERK] = 5000; // The buff actually lasts forever.
break;
case EVENT_BERSERK:
Talk(SAY_ILLIDAN_ENRAGE);
DoCast(me, SPELL_BERSERK, true);
Timer[EVENT_BERSERK] = 5000; // The buff actually lasts forever.
break;
case EVENT_TAUNT:
Talk(SAY_ILLIDAN_TAUNT);
Timer[EVENT_TAUNT] = urand(25000, 35000);
break;
case EVENT_TAUNT:
Talk(SAY_ILLIDAN_TAUNT);
Timer[EVENT_TAUNT] = urand(25000, 35000);
break;
case EVENT_SHEAR:
// no longer exists in 3.0f.2
// DoCastVictim(SPELL_SHEAR);
Timer[EVENT_SHEAR] = 25000 + (rand32() % 16 * 1000);
break;
case EVENT_SHEAR:
// no longer exists in 3.0f.2
// DoCastVictim(SPELL_SHEAR);
Timer[EVENT_SHEAR] = 25000 + (rand32() % 16 * 1000);
break;
case EVENT_FLAME_CRASH:
DoCastVictim(SPELL_FLAME_CRASH);
Timer[EVENT_FLAME_CRASH] = urand(30000, 40000);
break;
case EVENT_FLAME_CRASH:
DoCastVictim(SPELL_FLAME_CRASH);
Timer[EVENT_FLAME_CRASH] = urand(30000, 40000);
break;
case EVENT_PARASITIC_SHADOWFIEND:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true))
DoCast(target, SPELL_PARASITIC_SHADOWFIEND, true);
Timer[EVENT_PARASITIC_SHADOWFIEND] = urand(35000, 45000);
}
break;
case EVENT_PARASITIC_SHADOWFIEND:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true))
DoCast(target, SPELL_PARASITIC_SHADOWFIEND, true);
Timer[EVENT_PARASITIC_SHADOWFIEND] = urand(35000, 45000);
}
break;
case EVENT_PARASITE_CHECK:
Timer[EVENT_PARASITE_CHECK] = 0;
break;
case EVENT_PARASITE_CHECK:
Timer[EVENT_PARASITE_CHECK] = 0;
break;
case EVENT_DRAW_SOUL:
DoCastVictim(SPELL_DRAW_SOUL);
Timer[EVENT_DRAW_SOUL] = urand(50000, 60000);
break;
case EVENT_DRAW_SOUL:
DoCastVictim(SPELL_DRAW_SOUL);
Timer[EVENT_DRAW_SOUL] = urand(50000, 60000);
break;
// PHASE_NORMAL_2
case EVENT_AGONIZING_FLAMES:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_AGONIZING_FLAMES);
Timer[EVENT_AGONIZING_FLAMES] = 0;
break;
// PHASE_NORMAL_2
case EVENT_AGONIZING_FLAMES:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_AGONIZING_FLAMES);
Timer[EVENT_AGONIZING_FLAMES] = 0;
break;
case EVENT_TRANSFORM_NORMAL:
EnterPhase(PHASE_TRANSFORM_SEQUENCE);
break;
case EVENT_TRANSFORM_NORMAL:
EnterPhase(PHASE_TRANSFORM_SEQUENCE);
break;
// PHASE_NORMAL_MAIEV
case EVENT_ENRAGE:
DoCast(me, SPELL_ENRAGE);
Timer[EVENT_ENRAGE] = 0;
break;
// PHASE_NORMAL_MAIEV
case EVENT_ENRAGE:
DoCast(me, SPELL_ENRAGE);
Timer[EVENT_ENRAGE] = 0;
break;
default:
break;
default:
break;
}
DoMeleeAttackIfReady();
}
@@ -1063,32 +1064,32 @@ public:
{
switch (Event)
{
case EVENT_FIREBALL:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_FIREBALL);
Timer[EVENT_FIREBALL] = 3000;
break;
case EVENT_FIREBALL:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_FIREBALL);
Timer[EVENT_FIREBALL] = 3000;
break;
case EVENT_DARK_BARRAGE:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_DARK_BARRAGE);
Timer[EVENT_DARK_BARRAGE] = 0;
break;
case EVENT_DARK_BARRAGE:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_DARK_BARRAGE);
Timer[EVENT_DARK_BARRAGE] = 0;
break;
case EVENT_EYE_BLAST:
CastEyeBlast();
Timer[EVENT_EYE_BLAST] = 0;
break;
case EVENT_EYE_BLAST:
CastEyeBlast();
Timer[EVENT_EYE_BLAST] = 0;
break;
case EVENT_MOVE_POINT:
Phase = PHASE_FLIGHT_SEQUENCE;
Timer[EVENT_FLIGHT_SEQUENCE] = 0; // do not start Event when changing hover point
HoverPoint += (rand32() % 3 + 1);
if (HoverPoint > 3)
HoverPoint -= 4;
me->GetMotionMaster()->MovePoint(0, HoverPosition[HoverPoint].x, HoverPosition[HoverPoint].y, HoverPosition[HoverPoint].z);
break;
case EVENT_MOVE_POINT:
Phase = PHASE_FLIGHT_SEQUENCE;
Timer[EVENT_FLIGHT_SEQUENCE] = 0; // do not start Event when changing hover point
HoverPoint += (rand32() % 3 + 1);
if (HoverPoint > 3)
HoverPoint -= 4;
me->GetMotionMaster()->MovePoint(0, HoverPosition[HoverPoint].x, HoverPosition[HoverPoint].y, HoverPosition[HoverPoint].z);
break;
default:
break;
default:
break;
}
}
@@ -1096,29 +1097,29 @@ public:
{
switch (Event)
{
case EVENT_SHADOW_BLAST:
me->GetMotionMaster()->Clear(false);
if (me->GetVictim() && (!me->IsWithinDistInMap(me->GetVictim(), 50) || !me->IsWithinLOSInMap(me->GetVictim())))
me->GetMotionMaster()->MoveChase(me->GetVictim(), 30);
else
me->GetMotionMaster()->MoveIdle();
DoCastVictim(SPELL_SHADOW_BLAST);
Timer[EVENT_SHADOW_BLAST] = 4000;
break;
case EVENT_SHADOWDEMON:
DoCast(me, SPELL_SUMMON_SHADOWDEMON);
Timer[EVENT_SHADOWDEMON] = 0;
Timer[EVENT_FLAME_BURST] += 10000;
break;
case EVENT_FLAME_BURST:
DoCast(me, SPELL_FLAME_BURST);
Timer[EVENT_FLAME_BURST] = 15000;
break;
case EVENT_TRANSFORM_DEMON:
EnterPhase(PHASE_TRANSFORM_SEQUENCE);
break;
default:
break;
case EVENT_SHADOW_BLAST:
me->GetMotionMaster()->Clear(false);
if (me->GetVictim() && (!me->IsWithinDistInMap(me->GetVictim(), 50) || !me->IsWithinLOSInMap(me->GetVictim())))
me->GetMotionMaster()->MoveChase(me->GetVictim(), 30);
else
me->GetMotionMaster()->MoveIdle();
DoCastVictim(SPELL_SHADOW_BLAST);
Timer[EVENT_SHADOW_BLAST] = 4000;
break;
case EVENT_SHADOWDEMON:
DoCast(me, SPELL_SUMMON_SHADOWDEMON);
Timer[EVENT_SHADOWDEMON] = 0;
Timer[EVENT_FLAME_BURST] += 10000;
break;
case EVENT_FLAME_BURST:
DoCast(me, SPELL_FLAME_BURST);
Timer[EVENT_FLAME_BURST] = 15000;
break;
case EVENT_TRANSFORM_DEMON:
EnterPhase(PHASE_TRANSFORM_SEQUENCE);
break;
default:
break;
}
}
}
@@ -1148,7 +1149,7 @@ public:
/********************************** End of Illidan AI* *****************************************/
/******* Functions and vars for Akama's AI* *****/
/******* Functions and vars for Maiev's AI* *****/
class boss_maiev_shadowsong : public CreatureScript
{
public:
@@ -1377,6 +1378,7 @@ public:
}
};
/******* Functions and vars for Akama's AI* *****/
class npc_akama_illidan : public CreatureScript
{
public: