converted all tabs to 4 spaces

This commit is contained in:
Yehonal
2016-06-26 19:23:57 +02:00
parent 52f305111c
commit f6eefedcd5
717 changed files with 132388 additions and 132388 deletions

View File

@@ -9,54 +9,54 @@ REWRITTEN BY XINEF
enum MillhouseSays
{
SAY_INTRO_1 = 0,
SAY_INTRO_2 = 1,
SAY_WATER = 2,
SAY_BUFFS = 3,
SAY_DRINK = 4,
SAY_READY = 5,
SAY_KILL = 6,
SAY_PYRO = 7,
SAY_ICEBLOCK = 8,
SAY_LOWHP = 9,
SAY_DEATH = 10,
SAY_COMPLETE = 11,
SAY_INTRO_3 = 12,
SAY_INTRO_4 = 13,
SAY_INTRO_1 = 0,
SAY_INTRO_2 = 1,
SAY_WATER = 2,
SAY_BUFFS = 3,
SAY_DRINK = 4,
SAY_READY = 5,
SAY_KILL = 6,
SAY_PYRO = 7,
SAY_ICEBLOCK = 8,
SAY_LOWHP = 9,
SAY_DEATH = 10,
SAY_COMPLETE = 11,
SAY_INTRO_3 = 12,
SAY_INTRO_4 = 13,
};
enum MillhouseSpells
{
SPELL_CONJURE_WATER = 36879,
SPELL_ARCANE_INTELLECT = 36880,
SPELL_ICE_ARMOR = 36881,
SPELL_ARCANE_MISSILES = 33832,
SPELL_CONE_OF_COLD = 12611,
SPELL_FIRE_BLAST = 13341,
SPELL_FIREBALL = 14034,
SPELL_FROSTBOLT = 15497,
SPELL_PYROBLAST = 33975,
SPELL_ICEBLOCK = 36911,
SPELL_CONJURE_WATER = 36879,
SPELL_ARCANE_INTELLECT = 36880,
SPELL_ICE_ARMOR = 36881,
SPELL_ARCANE_MISSILES = 33832,
SPELL_CONE_OF_COLD = 12611,
SPELL_FIRE_BLAST = 13341,
SPELL_FIREBALL = 14034,
SPELL_FROSTBOLT = 15497,
SPELL_PYROBLAST = 33975,
SPELL_ICEBLOCK = 36911,
};
enum MillhouseEvents
{
EVENT_MILLHOUSE_INTRO1 = 1,
EVENT_MILLHOUSE_INTRO2 = 2,
EVENT_MILLHOUSE_INTRO3 = 3,
EVENT_MILLHOUSE_INTRO4 = 4,
EVENT_MILLHOUSE_INTRO5 = 5,
EVENT_MILLHOUSE_INTRO6 = 6,
EVENT_MILLHOUSE_INTRO7 = 7,
EVENT_MILLHOUSE_INTRO8 = 8,
EVENT_MILLHOUSE_INTRO9 = 9,
EVENT_SEARCH_FIGHT = 10,
EVENT_TELEPORT_VISUAL = 11,
EVENT_MILLHOUSE_INTRO1 = 1,
EVENT_MILLHOUSE_INTRO2 = 2,
EVENT_MILLHOUSE_INTRO3 = 3,
EVENT_MILLHOUSE_INTRO4 = 4,
EVENT_MILLHOUSE_INTRO5 = 5,
EVENT_MILLHOUSE_INTRO6 = 6,
EVENT_MILLHOUSE_INTRO7 = 7,
EVENT_MILLHOUSE_INTRO8 = 8,
EVENT_MILLHOUSE_INTRO9 = 9,
EVENT_SEARCH_FIGHT = 10,
EVENT_TELEPORT_VISUAL = 11,
EVENT_MILL_CHECK_HEALTH = 20,
EVENT_MILL_PYROBLAST = 21,
EVENT_MILL_BASE_SPELL = 22,
EVENT_MILL_ICEBLOCK = 23
EVENT_MILL_CHECK_HEALTH = 20,
EVENT_MILL_PYROBLAST = 21,
EVENT_MILL_BASE_SPELL = 22,
EVENT_MILL_ICEBLOCK = 23
};
class npc_millhouse_manastorm : public CreatureScript
@@ -72,23 +72,23 @@ class npc_millhouse_manastorm : public CreatureScript
}
InstanceScript* instance;
EventMap events;
EventMap events2;
EventMap events;
EventMap events2;
void InitializeAI()
{
ScriptedAI::InitializeAI();
void InitializeAI()
{
ScriptedAI::InitializeAI();
me->SetReactState(REACT_PASSIVE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
events2.Reset();
events2.ScheduleEvent(EVENT_TELEPORT_VISUAL, 0);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO1, 3000);
}
me->SetReactState(REACT_PASSIVE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
events2.Reset();
events2.ScheduleEvent(EVENT_TELEPORT_VISUAL, 0);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO1, 3000);
}
void Reset()
{
events.Reset();
events.Reset();
}
void AttackStart(Unit* who)
@@ -107,124 +107,124 @@ class npc_millhouse_manastorm : public CreatureScript
Talk(SAY_DEATH);
}
void EnterCombat(Unit*)
{
events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1000);
events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 2000);
events.ScheduleEvent(EVENT_MILL_ICEBLOCK, 1000);
}
void EnterCombat(Unit*)
{
events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1000);
events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 2000);
events.ScheduleEvent(EVENT_MILL_ICEBLOCK, 1000);
}
void UpdateAI(uint32 diff)
{
events2.Update(diff);
switch (events2.ExecuteEvent())
{
case EVENT_TELEPORT_VISUAL:
me->CastSpell(me, SPELL_TELEPORT_VISUAL, true);
break;
case EVENT_MILLHOUSE_INTRO1:
Talk(SAY_INTRO_1);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO2, 18000);
break;
case EVENT_MILLHOUSE_INTRO2:
Talk(SAY_INTRO_2);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO3, 8000);
break;
case EVENT_MILLHOUSE_INTRO3:
Talk(SAY_INTRO_3);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO4, 6000);
break;
case EVENT_MILLHOUSE_INTRO4:
Talk(SAY_INTRO_4);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO5, 8000);
break;
case EVENT_MILLHOUSE_INTRO5:
Talk(SAY_WATER);
me->CastSpell(me, SPELL_CONJURE_WATER, false);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO6, 7000);
break;
case EVENT_MILLHOUSE_INTRO6:
Talk(SAY_BUFFS);
me->CastSpell(me, SPELL_ICE_ARMOR, false);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO7, 7000);
break;
case EVENT_MILLHOUSE_INTRO7:
Talk(SAY_DRINK);
me->CastSpell(me, SPELL_ARCANE_INTELLECT, false);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO8, 7000);
break;
case EVENT_MILLHOUSE_INTRO8:
Talk(SAY_READY);
me->GetMotionMaster()->MovePoint(1, 445.82f, -158.38f, 43.067f);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO9, 5000);
break;
case EVENT_MILLHOUSE_INTRO9:
me->SetFacingTo(M_PI*1.5f);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), M_PI*1.5f);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
me->SetReactState(REACT_AGGRESSIVE);
events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1000);
break;
case EVENT_SEARCH_FIGHT:
if (!me->IsInCombat() && !me->IsInEvadeMode())
if (Unit* target = me->SelectNearbyTarget(NULL, 30.0f))
AttackStart(target);
events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1000);
break;
events2.Update(diff);
switch (events2.ExecuteEvent())
{
case EVENT_TELEPORT_VISUAL:
me->CastSpell(me, SPELL_TELEPORT_VISUAL, true);
break;
case EVENT_MILLHOUSE_INTRO1:
Talk(SAY_INTRO_1);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO2, 18000);
break;
case EVENT_MILLHOUSE_INTRO2:
Talk(SAY_INTRO_2);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO3, 8000);
break;
case EVENT_MILLHOUSE_INTRO3:
Talk(SAY_INTRO_3);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO4, 6000);
break;
case EVENT_MILLHOUSE_INTRO4:
Talk(SAY_INTRO_4);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO5, 8000);
break;
case EVENT_MILLHOUSE_INTRO5:
Talk(SAY_WATER);
me->CastSpell(me, SPELL_CONJURE_WATER, false);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO6, 7000);
break;
case EVENT_MILLHOUSE_INTRO6:
Talk(SAY_BUFFS);
me->CastSpell(me, SPELL_ICE_ARMOR, false);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO7, 7000);
break;
case EVENT_MILLHOUSE_INTRO7:
Talk(SAY_DRINK);
me->CastSpell(me, SPELL_ARCANE_INTELLECT, false);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO8, 7000);
break;
case EVENT_MILLHOUSE_INTRO8:
Talk(SAY_READY);
me->GetMotionMaster()->MovePoint(1, 445.82f, -158.38f, 43.067f);
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO9, 5000);
break;
case EVENT_MILLHOUSE_INTRO9:
me->SetFacingTo(M_PI*1.5f);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), M_PI*1.5f);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
me->SetReactState(REACT_AGGRESSIVE);
events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1000);
break;
case EVENT_SEARCH_FIGHT:
if (!me->IsInCombat() && !me->IsInEvadeMode())
if (Unit* target = me->SelectNearbyTarget(NULL, 30.0f))
AttackStart(target);
events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1000);
break;
}
}
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.ExecuteEvent())
{
case EVENT_MILL_CHECK_HEALTH:
if (HealthBelowPct(20))
{
Talk(SAY_LOWHP);
break;
}
events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1000);
break;
case EVENT_MILL_PYROBLAST:
Talk(SAY_PYRO);
me->CastSpell(me->GetVictim(), SPELL_PYROBLAST, false);
events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000);
break;
case EVENT_MILL_ICEBLOCK:
if (me->GetDistance(me->GetVictim()) < 5.0f)
{
Talk(SAY_ICEBLOCK);
me->CastSpell(me, SPELL_ICEBLOCK, true);
break;
}
events.ScheduleEvent(EVENT_MILL_ICEBLOCK, 1000);
break;
case EVENT_MILL_BASE_SPELL:
switch (RAND(SPELL_FIREBALL, SPELL_ARCANE_MISSILES, SPELL_FROSTBOLT))
{
case SPELL_FIREBALL:
me->CastSpell(me->GetVictim(), SPELL_FIREBALL, false);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4000);
break;
case SPELL_ARCANE_MISSILES:
me->CastSpell(me->GetVictim(), SPELL_ARCANE_MISSILES, false);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 9000);
break;
case SPELL_FROSTBOLT:
me->CastSpell(me->GetVictim(), SPELL_FROSTBOLT, false);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4000);
break;
}
break;
switch (events.ExecuteEvent())
{
case EVENT_MILL_CHECK_HEALTH:
if (HealthBelowPct(20))
{
Talk(SAY_LOWHP);
break;
}
events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1000);
break;
case EVENT_MILL_PYROBLAST:
Talk(SAY_PYRO);
me->CastSpell(me->GetVictim(), SPELL_PYROBLAST, false);
events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000);
break;
case EVENT_MILL_ICEBLOCK:
if (me->GetDistance(me->GetVictim()) < 5.0f)
{
Talk(SAY_ICEBLOCK);
me->CastSpell(me, SPELL_ICEBLOCK, true);
break;
}
events.ScheduleEvent(EVENT_MILL_ICEBLOCK, 1000);
break;
case EVENT_MILL_BASE_SPELL:
switch (RAND(SPELL_FIREBALL, SPELL_ARCANE_MISSILES, SPELL_FROSTBOLT))
{
case SPELL_FIREBALL:
me->CastSpell(me->GetVictim(), SPELL_FIREBALL, false);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4000);
break;
case SPELL_ARCANE_MISSILES:
me->CastSpell(me->GetVictim(), SPELL_ARCANE_MISSILES, false);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 9000);
break;
case SPELL_FROSTBOLT:
me->CastSpell(me->GetVictim(), SPELL_FROSTBOLT, false);
events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4000);
break;
}
break;
}
}
DoMeleeAttackIfReady();
}
@@ -238,27 +238,27 @@ class npc_millhouse_manastorm : public CreatureScript
enum WardenSays
{
YELL_INTRO1 = 0,
YELL_INTRO2 = 1,
YELL_RELEASE1 = 2,
YELL_RELEASE2A = 3,
YELL_RELEASE2B = 4,
YELL_RELEASE3 = 5,
YELL_RELEASE4 = 6,
YELL_WELCOME = 7,
YELL_INTRO1 = 0,
YELL_INTRO2 = 1,
YELL_RELEASE1 = 2,
YELL_RELEASE2A = 3,
YELL_RELEASE2B = 4,
YELL_RELEASE3 = 5,
YELL_RELEASE4 = 6,
YELL_WELCOME = 7,
SAY_HARBINGER_INTRO = 0,
SAY_HARBINGER_INTRO = 0,
};
enum WardenUnits
{
NPC_TRICKSTER = 20905,
NPC_PH_HUNTER = 20906,
NPC_MILLHOUSE = 20977,
NPC_AKKIRIS = 20908,
NPC_SULFURON = 20909,
NPC_TW_DRAK = 20910,
NPC_BL_DRAK = 20911,
NPC_TRICKSTER = 20905,
NPC_PH_HUNTER = 20906,
NPC_MILLHOUSE = 20977,
NPC_AKKIRIS = 20908,
NPC_SULFURON = 20909,
NPC_TW_DRAK = 20910,
NPC_BL_DRAK = 20911,
};
enum WardenSpells
@@ -270,42 +270,42 @@ enum WardenSpells
SPELL_TARGET_OMEGA = 36852,
SPELL_BUBBLE_VISUAL = 36849,
SPELL_MIND_REND = 36859,
SPELL_QID10886 = 39564 // Trial of the Naaru: Tenacity
SPELL_MIND_REND = 36859,
SPELL_QID10886 = 39564 // Trial of the Naaru: Tenacity
};
enum WardenEvents
{
EVENT_WARDEN_CHECK_PLAYERS = 1,
EVENT_WARDEN_INTRO1 = 2,
EVENT_WARDEN_INTRO2,
EVENT_WARDEN_INTRO3,
EVENT_WARDEN_INTRO4,
EVENT_WARDEN_INTRO5,
EVENT_WARDEN_INTRO6,
EVENT_WARDEN_INTRO7,
EVENT_WARDEN_INTRO8,
EVENT_WARDEN_INTRO9,
EVENT_WARDEN_INTRO10,
EVENT_WARDEN_INTRO11,
EVENT_WARDEN_INTRO12,
EVENT_WARDEN_INTRO13,
EVENT_WARDEN_INTRO14,
EVENT_WARDEN_INTRO15,
EVENT_WARDEN_INTRO16,
EVENT_WARDEN_INTRO17,
EVENT_WARDEN_INTRO18,
EVENT_WARDEN_INTRO19,
EVENT_WARDEN_INTRO20,
EVENT_WARDEN_INTRO21,
EVENT_WARDEN_INTRO22,
EVENT_WARDEN_INTRO23,
EVENT_WARDEN_INTRO24,
EVENT_WARDEN_INTRO25,
EVENT_WARDEN_INTRO26,
EVENT_WARDEN_INTRO27,
EVENT_WARDEN_INTRO28,
EVENT_WARDEN_INTRO29
EVENT_WARDEN_CHECK_PLAYERS = 1,
EVENT_WARDEN_INTRO1 = 2,
EVENT_WARDEN_INTRO2,
EVENT_WARDEN_INTRO3,
EVENT_WARDEN_INTRO4,
EVENT_WARDEN_INTRO5,
EVENT_WARDEN_INTRO6,
EVENT_WARDEN_INTRO7,
EVENT_WARDEN_INTRO8,
EVENT_WARDEN_INTRO9,
EVENT_WARDEN_INTRO10,
EVENT_WARDEN_INTRO11,
EVENT_WARDEN_INTRO12,
EVENT_WARDEN_INTRO13,
EVENT_WARDEN_INTRO14,
EVENT_WARDEN_INTRO15,
EVENT_WARDEN_INTRO16,
EVENT_WARDEN_INTRO17,
EVENT_WARDEN_INTRO18,
EVENT_WARDEN_INTRO19,
EVENT_WARDEN_INTRO20,
EVENT_WARDEN_INTRO21,
EVENT_WARDEN_INTRO22,
EVENT_WARDEN_INTRO23,
EVENT_WARDEN_INTRO24,
EVENT_WARDEN_INTRO25,
EVENT_WARDEN_INTRO26,
EVENT_WARDEN_INTRO27,
EVENT_WARDEN_INTRO28,
EVENT_WARDEN_INTRO29
};
class npc_warden_mellichar : public CreatureScript
@@ -319,245 +319,245 @@ class npc_warden_mellichar : public CreatureScript
{
}
void JustSummoned(Creature* summon)
{
summons.Summon(summon);
}
void JustSummoned(Creature* summon)
{
summons.Summon(summon);
}
void SummonedCreatureDies(Creature* summon, Unit*)
{
if (summon->GetEntry() == NPC_HARBINGER_SKYRISS)
{
Unit::Kill(me, me);
me->setActive(false);
instance->SetBossState(DATA_WARDEN_MELLICHAR, DONE);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_MILLHOUSE))
{
instance->DoCastSpellOnPlayers(SPELL_QID10886);
creature->AI()->Talk(SAY_COMPLETE);
creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
}
}
void SummonedCreatureDies(Creature* summon, Unit*)
{
if (summon->GetEntry() == NPC_HARBINGER_SKYRISS)
{
Unit::Kill(me, me);
me->setActive(false);
instance->SetBossState(DATA_WARDEN_MELLICHAR, DONE);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_MILLHOUSE))
{
instance->DoCastSpellOnPlayers(SPELL_QID10886);
creature->AI()->Talk(SAY_COMPLETE);
creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
}
}
void MoveInLineOfSight(Unit*) { }
void AttackStart(Unit*) { }
void EnterCombat(Unit*) { }
void MoveInLineOfSight(Unit*) { }
void AttackStart(Unit*) { }
void EnterCombat(Unit*) { }
void JustDied(Unit*)
{
me->setActive(false);
}
void JustDied(Unit*)
{
me->setActive(false);
}
void Reset()
{
_Reset();
me->setActive(false);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
_Reset();
me->setActive(false);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), true);
instance->SetBossState(DATA_WARDEN_MELLICHAR, NOT_STARTED);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), true);
instance->SetBossState(DATA_WARDEN_MELLICHAR, NOT_STARTED);
}
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask)
{
if (attacker && IS_PLAYER_GUID(attacker->GetCharmerOrOwnerOrOwnGUID()) && damage > 0 && !me->isActiveObject())
{
me->setActive(true);
me->InterruptNonMeleeSpells(false);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
events.ScheduleEvent(EVENT_WARDEN_INTRO1, 1500);
events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1000);
instance->SetBossState(DATA_WARDEN_MELLICHAR, IN_PROGRESS);
}
damage = 0;
}
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask)
{
if (attacker && IS_PLAYER_GUID(attacker->GetCharmerOrOwnerOrOwnGUID()) && damage > 0 && !me->isActiveObject())
{
me->setActive(true);
me->InterruptNonMeleeSpells(false);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
events.ScheduleEvent(EVENT_WARDEN_INTRO1, 1500);
events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1000);
instance->SetBossState(DATA_WARDEN_MELLICHAR, IN_PROGRESS);
}
damage = 0;
}
void SetData(uint32 type, uint32 data)
{
if (data == FAIL)
{
CreatureAI::EnterEvadeMode();
return;
}
if (data != DONE)
return;
void SetData(uint32 type, uint32 data)
{
if (data == FAIL)
{
CreatureAI::EnterEvadeMode();
return;
}
if (data != DONE)
return;
switch (type)
{
case DATA_WARDEN_1:
events.ScheduleEvent(EVENT_WARDEN_INTRO8, 2000);
break;
case DATA_WARDEN_3:
events.ScheduleEvent(EVENT_WARDEN_INTRO19, 2000);
break;
case DATA_WARDEN_4:
events.ScheduleEvent(EVENT_WARDEN_INTRO24, 2000);
break;
}
}
switch (type)
{
case DATA_WARDEN_1:
events.ScheduleEvent(EVENT_WARDEN_INTRO8, 2000);
break;
case DATA_WARDEN_3:
events.ScheduleEvent(EVENT_WARDEN_INTRO19, 2000);
break;
case DATA_WARDEN_4:
events.ScheduleEvent(EVENT_WARDEN_INTRO24, 2000);
break;
}
}
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch (events.ExecuteEvent())
{
case EVENT_WARDEN_CHECK_PLAYERS:
if (!SelectTargetFromPlayerList(100.0f))
{
CreatureAI::EnterEvadeMode();
return;
}
events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1000);
break;
case EVENT_WARDEN_INTRO1:
Talk(YELL_INTRO1);
me->SetFacingTo(M_PI/2.0f);
me->CastSpell(me, SPELL_BUBBLE_VISUAL, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO2, 1400);
break;
case EVENT_WARDEN_INTRO2:
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), false);
events.ScheduleEvent(EVENT_WARDEN_INTRO3, 20000);
break;
case EVENT_WARDEN_INTRO3:
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch (events.ExecuteEvent())
{
case EVENT_WARDEN_CHECK_PLAYERS:
if (!SelectTargetFromPlayerList(100.0f))
{
CreatureAI::EnterEvadeMode();
return;
}
events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1000);
break;
case EVENT_WARDEN_INTRO1:
Talk(YELL_INTRO1);
me->SetFacingTo(M_PI/2.0f);
me->CastSpell(me, SPELL_BUBBLE_VISUAL, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO2, 1400);
break;
case EVENT_WARDEN_INTRO2:
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), false);
events.ScheduleEvent(EVENT_WARDEN_INTRO3, 20000);
break;
case EVENT_WARDEN_INTRO3:
Talk(YELL_INTRO2);
events.ScheduleEvent(EVENT_WARDEN_INTRO4, 5000);
break;
case EVENT_WARDEN_INTRO4:
me->SetFacingTo(0.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_ALPHA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO5, 2000);
break;
case EVENT_WARDEN_INTRO5:
instance->SetData(DATA_WARDEN_1, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO6, 3000);
break;
case EVENT_WARDEN_INTRO6:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO7, 5000);
break;
case EVENT_WARDEN_INTRO7:
events.ScheduleEvent(EVENT_WARDEN_INTRO4, 5000);
break;
case EVENT_WARDEN_INTRO4:
me->SetFacingTo(0.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_ALPHA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO5, 2000);
break;
case EVENT_WARDEN_INTRO5:
instance->SetData(DATA_WARDEN_1, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO6, 3000);
break;
case EVENT_WARDEN_INTRO6:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO7, 5000);
break;
case EVENT_WARDEN_INTRO7:
me->SummonCreature(RAND(NPC_TRICKSTER, NPC_PH_HUNTER), 478.326f, -148.505f, 42.56f, 3.19f, TEMPSUMMON_MANUAL_DESPAWN);
// Wait for kill
// Wait for kill
break;
case EVENT_WARDEN_INTRO8:
Talk(YELL_RELEASE1);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(2.6f);
events.ScheduleEvent(EVENT_WARDEN_INTRO10, 4000);
break;
case EVENT_WARDEN_INTRO10:
me->CastSpell((Unit*)NULL, SPELL_TARGET_BETA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO11, 2000);
break;
case EVENT_WARDEN_INTRO11:
Talk(YELL_RELEASE2A);
instance->SetData(DATA_WARDEN_2, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO12, 2000);
break;
case EVENT_WARDEN_INTRO12:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO13, 6000);
break;
case EVENT_WARDEN_INTRO13:
case EVENT_WARDEN_INTRO8:
Talk(YELL_RELEASE1);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(2.6f);
events.ScheduleEvent(EVENT_WARDEN_INTRO10, 4000);
break;
case EVENT_WARDEN_INTRO10:
me->CastSpell((Unit*)NULL, SPELL_TARGET_BETA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO11, 2000);
break;
case EVENT_WARDEN_INTRO11:
Talk(YELL_RELEASE2A);
instance->SetData(DATA_WARDEN_2, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO12, 2000);
break;
case EVENT_WARDEN_INTRO12:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO13, 6000);
break;
case EVENT_WARDEN_INTRO13:
me->SummonCreature(NPC_MILLHOUSE, 413.292f, -148.378f, 42.56f, 6.27f, TEMPSUMMON_MANUAL_DESPAWN);
events.ScheduleEvent(EVENT_WARDEN_INTRO14, 14000);
events.ScheduleEvent(EVENT_WARDEN_INTRO14, 14000);
break;
case EVENT_WARDEN_INTRO14:
Talk(YELL_RELEASE2B);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(3.3f);
events.ScheduleEvent(EVENT_WARDEN_INTRO15, 5000);
break;
case EVENT_WARDEN_INTRO15:
me->CastSpell((Unit*)NULL, SPELL_TARGET_DELTA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO16, 2000);
break;
case EVENT_WARDEN_INTRO16:
instance->SetData(DATA_WARDEN_3, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO17, 2000);
break;
case EVENT_WARDEN_INTRO17:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO18, 6000);
break;
case EVENT_WARDEN_INTRO18:
case EVENT_WARDEN_INTRO14:
Talk(YELL_RELEASE2B);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(3.3f);
events.ScheduleEvent(EVENT_WARDEN_INTRO15, 5000);
break;
case EVENT_WARDEN_INTRO15:
me->CastSpell((Unit*)NULL, SPELL_TARGET_DELTA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO16, 2000);
break;
case EVENT_WARDEN_INTRO16:
instance->SetData(DATA_WARDEN_3, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO17, 2000);
break;
case EVENT_WARDEN_INTRO17:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO18, 6000);
break;
case EVENT_WARDEN_INTRO18:
me->SummonCreature(RAND(NPC_AKKIRIS, NPC_SULFURON), 420.179f, -174.396f, 42.58f, 0.02f, TEMPSUMMON_MANUAL_DESPAWN);
// Wait for kill
break;
case EVENT_WARDEN_INTRO19:
Talk(YELL_RELEASE3);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(6.05f);
events.ScheduleEvent(EVENT_WARDEN_INTRO20, 4000);
break;
case EVENT_WARDEN_INTRO20:
me->CastSpell((Unit*)NULL, SPELL_TARGET_GAMMA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO21, 2000);
break;
case EVENT_WARDEN_INTRO21:
instance->SetData(DATA_WARDEN_4, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO22, 2000);
break;
case EVENT_WARDEN_INTRO22:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO23, 6000);
break;
case EVENT_WARDEN_INTRO23:
me->SummonCreature(RAND(NPC_TW_DRAK, NPC_BL_DRAK), 471.795f, -174.58f, 42.58f, 3.06f, TEMPSUMMON_MANUAL_DESPAWN);
// Wait for kill
break;
case EVENT_WARDEN_INTRO24:
instance->SetData(DATA_WARDEN_5, IN_PROGRESS);
Talk(YELL_RELEASE4);
me->InterruptNonMeleeSpells(false);
events.ScheduleEvent(EVENT_WARDEN_INTRO25, 8000);
break;
case EVENT_WARDEN_INTRO25:
if (Creature* cr = me->SummonCreature(NPC_HARBINGER_SKYRISS, 445.763f, -191.639f, 44.64f, 1.60f, TEMPSUMMON_MANUAL_DESPAWN))
{
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
cr->CastSpell(cr, SPELL_TELEPORT_VISUAL, true);
}
events.ScheduleEvent(EVENT_WARDEN_INTRO26, 1000);
break;
case EVENT_WARDEN_INTRO26:
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
creature->AI()->Talk(SAY_HARBINGER_INTRO);
events.ScheduleEvent(EVENT_WARDEN_INTRO27, 23000);
break;
case EVENT_WARDEN_INTRO27:
// Wait for kill
break;
case EVENT_WARDEN_INTRO19:
Talk(YELL_RELEASE3);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(6.05f);
events.ScheduleEvent(EVENT_WARDEN_INTRO20, 4000);
break;
case EVENT_WARDEN_INTRO20:
me->CastSpell((Unit*)NULL, SPELL_TARGET_GAMMA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO21, 2000);
break;
case EVENT_WARDEN_INTRO21:
instance->SetData(DATA_WARDEN_4, IN_PROGRESS);
events.ScheduleEvent(EVENT_WARDEN_INTRO22, 2000);
break;
case EVENT_WARDEN_INTRO22:
me->SetFacingTo(M_PI*1.5f);
me->CastSpell((Unit*)NULL, SPELL_TARGET_OMEGA, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO23, 6000);
break;
case EVENT_WARDEN_INTRO23:
me->SummonCreature(RAND(NPC_TW_DRAK, NPC_BL_DRAK), 471.795f, -174.58f, 42.58f, 3.06f, TEMPSUMMON_MANUAL_DESPAWN);
// Wait for kill
break;
case EVENT_WARDEN_INTRO24:
instance->SetData(DATA_WARDEN_5, IN_PROGRESS);
Talk(YELL_RELEASE4);
me->InterruptNonMeleeSpells(false);
events.ScheduleEvent(EVENT_WARDEN_INTRO25, 8000);
break;
case EVENT_WARDEN_INTRO25:
if (Creature* cr = me->SummonCreature(NPC_HARBINGER_SKYRISS, 445.763f, -191.639f, 44.64f, 1.60f, TEMPSUMMON_MANUAL_DESPAWN))
{
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
cr->CastSpell(cr, SPELL_TELEPORT_VISUAL, true);
}
events.ScheduleEvent(EVENT_WARDEN_INTRO26, 1000);
break;
case EVENT_WARDEN_INTRO26:
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
creature->AI()->Talk(SAY_HARBINGER_INTRO);
events.ScheduleEvent(EVENT_WARDEN_INTRO27, 23000);
break;
case EVENT_WARDEN_INTRO27:
Talk(YELL_WELCOME);
events.ScheduleEvent(EVENT_WARDEN_INTRO28, 5000);
break;
case EVENT_WARDEN_INTRO28:
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), true);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
creature->CastSpell((Unit*)NULL, SPELL_MIND_REND, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO29, 4000);
break;
case EVENT_WARDEN_INTRO29:
events.Reset();
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
{
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
if (Player* player = SelectTargetFromPlayerList(50.0f))
AttackStart(player);
}
break;
}
}
events.ScheduleEvent(EVENT_WARDEN_INTRO28, 5000);
break;
case EVENT_WARDEN_INTRO28:
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), true);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
creature->CastSpell((Unit*)NULL, SPELL_MIND_REND, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO29, 4000);
break;
case EVENT_WARDEN_INTRO29:
events.Reset();
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
{
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
if (Player* player = SelectTargetFromPlayerList(50.0f))
AttackStart(player);
}
break;
}
}
};
CreatureAI* GetAI(Creature* creature) const
@@ -575,22 +575,22 @@ public:
{
PrepareAuraScript(spell_arcatraz_soul_steal_AuraScript)
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_SOUL_STEAL, true);
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_SOUL_STEAL, true);
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
caster->RemoveAurasDueToSpell(SPELL_SOUL_STEAL);
if (Unit* caster = GetCaster())
caster->RemoveAurasDueToSpell(SPELL_SOUL_STEAL);
}
void Register()
{
OnEffectApply += AuraEffectApplyFn(spell_arcatraz_soul_steal_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_arcatraz_soul_steal_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_arcatraz_soul_steal_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, AURA_EFFECT_HANDLE_REAL);
}
};
@@ -605,5 +605,5 @@ void AddSC_arcatraz()
new npc_millhouse_manastorm();
new npc_warden_mellichar();
new spell_arcatraz_soul_steal();
new spell_arcatraz_soul_steal();
}

View File

@@ -8,11 +8,11 @@ REWRITTEN BY XINEF
enum DataTypes
{
// Encounter States/Boss GUIDs
DATA_ZEREKETH = 0,
DATA_DALLIAH = 1,
DATA_SOCCOTHRATES = 2,
DATA_WARDEN_MELLICHAR = 3,
MAX_ENCOUTER = 4,
DATA_ZEREKETH = 0,
DATA_DALLIAH = 1,
DATA_SOCCOTHRATES = 2,
DATA_WARDEN_MELLICHAR = 3,
MAX_ENCOUTER = 4,
// Additional Data
DATA_WARDEN_1 = 5, // used by SmartAI
@@ -28,7 +28,7 @@ enum CreatureIds
NPC_DALLIAH = 20885,
NPC_SOCCOTHRATES = 20886,
NPC_MELLICHAR = 20904,
NPC_HARBINGER_SKYRISS = 20912,
NPC_HARBINGER_SKYRISS = 20912,
NPC_ALPHA_POD_TARGET = 21436
};
@@ -46,8 +46,8 @@ enum GameObjectIds
enum SpellIds
{
SPELL_TELEPORT_VISUAL = 35517,
SPELL_SOUL_STEAL = 36782
SPELL_TELEPORT_VISUAL = 35517,
SPELL_SOUL_STEAL = 36782
};
#endif // ARCATRAZ_H

View File

@@ -37,7 +37,7 @@ enum Events
EVENT_SHADOW_WAVE = 4,
EVENT_ME_FIRST = 5,
EVENT_SOCCOTHRATES_DEATH = 6,
EVENT_CHECK_HEALTH = 7,
EVENT_CHECK_HEALTH = 7,
};
class boss_dalliah_the_doomsayer : public CreatureScript
@@ -52,16 +52,16 @@ class boss_dalliah_the_doomsayer : public CreatureScript
void Reset()
{
_Reset();
events2.Reset();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
events2.Reset();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
}
void InitializeAI()
{
BossAI::InitializeAI();
if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE)
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
}
void InitializeAI()
{
BossAI::InitializeAI();
if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE)
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
}
void JustDied(Unit* /*killer*/)
{
@@ -81,7 +81,7 @@ class boss_dalliah_the_doomsayer : public CreatureScript
events.ScheduleEvent(EVENT_GIFT_OF_THE_DOOMSAYER, urand(1000, 4000));
events.ScheduleEvent(EVENT_WHIRLWIND, urand(7000, 9000));
events.ScheduleEvent(EVENT_ME_FIRST, 6000);
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
if (IsHeroic())
events.ScheduleEvent(EVENT_SHADOW_WAVE, urand(11000, 16000));
@@ -89,8 +89,8 @@ class boss_dalliah_the_doomsayer : public CreatureScript
void KilledUnit(Unit* victim)
{
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_SLAY);
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_SLAY);
}
void SetData(uint32 /*type*/, uint32 data)
@@ -101,13 +101,13 @@ class boss_dalliah_the_doomsayer : public CreatureScript
void UpdateAI(uint32 diff)
{
events2.Update(diff);
switch (events2.ExecuteEvent())
{
case EVENT_SOCCOTHRATES_DEATH:
Talk(SAY_SOCCOTHRATES_DEATH);
break;
}
events2.Update(diff);
switch (events2.ExecuteEvent())
{
case EVENT_SOCCOTHRATES_DEATH:
Talk(SAY_SOCCOTHRATES_DEATH);
break;
}
if (!UpdateVictim())
return;
@@ -119,21 +119,21 @@ class boss_dalliah_the_doomsayer : public CreatureScript
switch (events.ExecuteEvent())
{
case EVENT_GIFT_OF_THE_DOOMSAYER:
me->CastSpell(me->GetVictim(), SPELL_GIFT_OF_THE_DOOMSAYER, false);
me->CastSpell(me->GetVictim(), SPELL_GIFT_OF_THE_DOOMSAYER, false);
events.ScheduleEvent(EVENT_GIFT_OF_THE_DOOMSAYER, urand(16000, 21000));
break;
case EVENT_WHIRLWIND:
me->CastSpell(me, SPELL_WHIRLWIND, false);
me->CastSpell(me, SPELL_WHIRLWIND, false);
Talk(SAY_WHIRLWIND);
events.ScheduleEvent(EVENT_WHIRLWIND, urand(19000, 21000));
events.ScheduleEvent(EVENT_HEAL, 6000);
break;
case EVENT_HEAL:
me->CastSpell(me, SPELL_HEAL, false);
me->CastSpell(me, SPELL_HEAL, false);
Talk(SAY_HEAL);
break;
case EVENT_SHADOW_WAVE:
me->CastSpell(me->GetVictim(), SPELL_SHADOW_WAVE, false);
me->CastSpell(me->GetVictim(), SPELL_SHADOW_WAVE, false);
events.ScheduleEvent(EVENT_SHADOW_WAVE, urand(11000, 16000));
break;
case EVENT_ME_FIRST:
@@ -141,16 +141,16 @@ class boss_dalliah_the_doomsayer : public CreatureScript
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
soccothrates->AI()->Talk(SAY_AGGRO_DALLIAH_FIRST);
break;
case EVENT_CHECK_HEALTH:
if (HealthBelowPct(25))
{
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SOCCOTHRATES)))
soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT);
break;
}
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
break;
}
case EVENT_CHECK_HEALTH:
if (HealthBelowPct(25))
{
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SOCCOTHRATES)))
soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT);
break;
}
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
break;
}
DoMeleeAttackIfReady();
}

View File

@@ -8,38 +8,38 @@ REWRITTEN BY XINEF
enum Says
{
SAY_INTRO = 0,
SAY_AGGRO = 1,
SAY_KILL = 2,
SAY_MIND = 3,
SAY_FEAR = 4,
SAY_IMAGE = 5,
SAY_DEATH = 6
SAY_INTRO = 0,
SAY_AGGRO = 1,
SAY_KILL = 2,
SAY_MIND = 3,
SAY_FEAR = 4,
SAY_IMAGE = 5,
SAY_DEATH = 6
};
enum Spells
{
SPELL_FEAR = 39415,
SPELL_MIND_REND = 36924,
SPELL_DOMINATION = 37162,
SPELL_MANA_BURN = 39020,
SPELL_66_ILLUSION = 36931,
SPELL_33_ILLUSION = 36932,
SPELL_FEAR = 39415,
SPELL_MIND_REND = 36924,
SPELL_DOMINATION = 37162,
SPELL_MANA_BURN = 39020,
SPELL_66_ILLUSION = 36931,
SPELL_33_ILLUSION = 36932,
SPELL_MIND_REND_IMAGE = 36929,
H_SPELL_MIND_REND_IMAGE = 39021
SPELL_MIND_REND_IMAGE = 36929,
H_SPELL_MIND_REND_IMAGE = 39021
};
enum Misc
{
NPC_HARBINGER_SKYRISS_66 = 21466,
NPC_HARBINGER_SKYRISS_66 = 21466,
EVENT_SUMMON_IMAGE1 = 1,
EVENT_SUMMON_IMAGE2 = 2,
EVENT_SPELL_MIND_REND = 3,
EVENT_SPELL_FEAR = 4,
EVENT_SPELL_DOMINATION = 5,
EVENT_SPELL_MANA_BURN = 6
EVENT_SUMMON_IMAGE1 = 1,
EVENT_SUMMON_IMAGE2 = 2,
EVENT_SPELL_MIND_REND = 3,
EVENT_SPELL_FEAR = 4,
EVENT_SPELL_DOMINATION = 5,
EVENT_SPELL_MANA_BURN = 6
};
class boss_harbinger_skyriss : public CreatureScript
@@ -51,53 +51,53 @@ class boss_harbinger_skyriss : public CreatureScript
{
boss_harbinger_skyrissAI(Creature* creature) : ScriptedAI(creature), summons(me)
{
instance = creature->GetInstanceScript();
instance = creature->GetInstanceScript();
}
InstanceScript* instance;
SummonList summons;
EventMap events;
InstanceScript* instance;
SummonList summons;
EventMap events;
void Reset()
{
events.Reset();
summons.DespawnAll();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
events.Reset();
summons.DespawnAll();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
}
void EnterCombat(Unit* /*who*/)
{
Talk(SAY_AGGRO);
me->SetInCombatWithZone();
{
Talk(SAY_AGGRO);
me->SetInCombatWithZone();
events.ScheduleEvent(EVENT_SUMMON_IMAGE1, 1000);
events.ScheduleEvent(EVENT_SUMMON_IMAGE2, 1000);
events.ScheduleEvent(EVENT_SPELL_MIND_REND, 10000);
events.ScheduleEvent(EVENT_SPELL_FEAR, 15000);
events.ScheduleEvent(EVENT_SPELL_DOMINATION, 30000);
if (IsHeroic())
events.ScheduleEvent(EVENT_SPELL_MANA_BURN, 25000);
}
events.ScheduleEvent(EVENT_SUMMON_IMAGE1, 1000);
events.ScheduleEvent(EVENT_SUMMON_IMAGE2, 1000);
events.ScheduleEvent(EVENT_SPELL_MIND_REND, 10000);
events.ScheduleEvent(EVENT_SPELL_FEAR, 15000);
events.ScheduleEvent(EVENT_SPELL_DOMINATION, 30000);
if (IsHeroic())
events.ScheduleEvent(EVENT_SPELL_MANA_BURN, 25000);
}
void JustDied(Unit* /*killer*/)
{
Talk(SAY_DEATH);
summons.DespawnAll();
summons.DespawnAll();
}
void JustSummoned(Creature* summon)
{
summon->SetHealth(summon->CountPctFromMaxHealth(summon->GetEntry() == NPC_HARBINGER_SKYRISS_66 ? 66 : 33));
summons.Summon(summon);
summon->SetInCombatWithZone();
me->UpdatePosition(*summon, true);
me->SendMovementFlagUpdate();
summon->SetHealth(summon->CountPctFromMaxHealth(summon->GetEntry() == NPC_HARBINGER_SKYRISS_66 ? 66 : 33));
summons.Summon(summon);
summon->SetInCombatWithZone();
me->UpdatePosition(*summon, true);
me->SendMovementFlagUpdate();
}
void KilledUnit(Unit* victim)
{
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_KILL);
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_KILL);
}
void UpdateAI(uint32 diff)
@@ -105,57 +105,57 @@ class boss_harbinger_skyriss : public CreatureScript
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.ExecuteEvent())
{
case EVENT_SUMMON_IMAGE1:
if (HealthBelowPct(67))
{
Talk(SAY_IMAGE);
me->CastSpell(me, SPELL_66_ILLUSION, false);
break;
}
events.ScheduleEvent(EVENT_SUMMON_IMAGE1, 1000);
break;
case EVENT_SUMMON_IMAGE2:
if (HealthBelowPct(34))
{
Talk(SAY_IMAGE);
me->CastSpell(me, SPELL_33_ILLUSION, false);
break;
}
events.ScheduleEvent(EVENT_SUMMON_IMAGE2, 1000);
break;
case EVENT_SPELL_MIND_REND:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f))
me->CastSpell(target, SPELL_MIND_REND, false);
events.ScheduleEvent(EVENT_SPELL_MIND_REND, 10000);
break;
case EVENT_SPELL_FEAR:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 20.0f))
{
Talk(SAY_FEAR);
me->CastSpell(target, SPELL_FEAR, false);
}
events.ScheduleEvent(EVENT_SPELL_FEAR, 25000);
break;
case EVENT_SPELL_DOMINATION:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 30.0f))
{
Talk(SAY_MIND);
me->CastSpell(target, SPELL_DOMINATION, false);
}
events.ScheduleEvent(EVENT_SPELL_DOMINATION, 30000);
break;
case EVENT_SPELL_MANA_BURN:
switch (events.ExecuteEvent())
{
case EVENT_SUMMON_IMAGE1:
if (HealthBelowPct(67))
{
Talk(SAY_IMAGE);
me->CastSpell(me, SPELL_66_ILLUSION, false);
break;
}
events.ScheduleEvent(EVENT_SUMMON_IMAGE1, 1000);
break;
case EVENT_SUMMON_IMAGE2:
if (HealthBelowPct(34))
{
Talk(SAY_IMAGE);
me->CastSpell(me, SPELL_33_ILLUSION, false);
break;
}
events.ScheduleEvent(EVENT_SUMMON_IMAGE2, 1000);
break;
case EVENT_SPELL_MIND_REND:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f))
me->CastSpell(target, SPELL_MIND_REND, false);
events.ScheduleEvent(EVENT_SPELL_MIND_REND, 10000);
break;
case EVENT_SPELL_FEAR:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 20.0f))
{
Talk(SAY_FEAR);
me->CastSpell(target, SPELL_FEAR, false);
}
events.ScheduleEvent(EVENT_SPELL_FEAR, 25000);
break;
case EVENT_SPELL_DOMINATION:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 30.0f))
{
Talk(SAY_MIND);
me->CastSpell(target, SPELL_DOMINATION, false);
}
events.ScheduleEvent(EVENT_SPELL_DOMINATION, 30000);
break;
case EVENT_SPELL_MANA_BURN:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, PowerUsersSelector(me, POWER_MANA, 40.0f, false)))
me->CastSpell(target, SPELL_MANA_BURN, false);
events.ScheduleEvent(EVENT_SPELL_MANA_BURN, 30000);
break;
}
me->CastSpell(target, SPELL_MANA_BURN, false);
events.ScheduleEvent(EVENT_SPELL_MANA_BURN, 30000);
break;
}
DoMeleeAttackIfReady();
}

View File

@@ -52,9 +52,9 @@ enum Events
EVENT_PREFIGHT_9 = 11,
EVENT_ME_FIRST = 12,
EVENT_DALLIAH_DEATH = 13,
EVENT_CHECK_HEALTH = 14,
EVENT_SPELL_CHARGE = 15,
EVENT_FELFIRE = 16,
EVENT_CHECK_HEALTH = 14,
EVENT_SPELL_CHARGE = 15,
EVENT_FELFIRE = 16,
};
class boss_wrath_scryer_soccothrates : public CreatureScript
@@ -65,24 +65,24 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
struct boss_wrath_scryer_soccothratesAI : public BossAI
{
boss_wrath_scryer_soccothratesAI(Creature* creature) : BossAI(creature, DATA_SOCCOTHRATES)
{
preFight = instance->GetBossState(DATA_DALLIAH) == DONE;
}
{
preFight = instance->GetBossState(DATA_DALLIAH) == DONE;
}
void Reset()
{
_Reset();
events2.Reset();
me->CastSpell(me, SPELL_FEL_IMMOLATION, true);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
events2.Reset();
me->CastSpell(me, SPELL_FEL_IMMOLATION, true);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
}
void InitializeAI()
{
BossAI::InitializeAI();
if (!preFight)
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
}
void InitializeAI()
{
BossAI::InitializeAI();
if (!preFight)
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
}
void JustDied(Unit* /*killer*/)
{
@@ -97,18 +97,18 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
events2.Reset();
events2.Reset();
events.ScheduleEvent(EVENT_FELFIRE_SHOCK, urand(12000, 14000));
events.ScheduleEvent(EVENT_KNOCK_AWAY, urand(11000, 12000));
events.ScheduleEvent(EVENT_ME_FIRST, 6000);
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
Talk(SAY_AGGRO);
}
void KilledUnit(Unit* victim)
{
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_SLAY);
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_SLAY);
}
void MoveInLineOfSight(Unit* who)
@@ -129,9 +129,9 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
void UpdateAI(uint32 diff)
{
events2.Update(diff);
switch (events2.ExecuteEvent())
{
events2.Update(diff);
switch (events2.ExecuteEvent())
{
case EVENT_PREFIGHT_1:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_1);
@@ -172,17 +172,17 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
{
dalliah->SetFacingToObject(me);
dalliah->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
dalliah->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
me->SetFacingToObject(dalliah);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
dalliah->SetHomePosition(dalliah->GetPositionX(), dalliah->GetPositionY(), dalliah->GetPositionZ(), 1.51737f);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 4.725722f);
}
break;
case EVENT_DALLIAH_DEATH:
case EVENT_DALLIAH_DEATH:
Talk(SAY_DALLIAH_DEATH);
break;
}
}
if (!UpdateVictim())
return;
@@ -194,42 +194,42 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
switch (events.ExecuteEvent())
{
case EVENT_FELFIRE_SHOCK:
me->CastSpell(me->GetVictim(), SPELL_FELFIRE_SHOCK, false);
me->CastSpell(me->GetVictim(), SPELL_FELFIRE_SHOCK, false);
events.ScheduleEvent(EVENT_FELFIRE_SHOCK, urand(12000, 14000));
break;
case EVENT_KNOCK_AWAY:
me->CastSpell(me, SPELL_KNOCK_AWAY, false);
me->CastSpell(me, SPELL_KNOCK_AWAY, false);
Talk(SAY_KNOCK_AWAY);
events.ScheduleEvent(EVENT_KNOCK_AWAY, urand(11000, 12000));
events.ScheduleEvent(EVENT_SPELL_CHARGE, 4600);
events.ScheduleEvent(EVENT_SPELL_CHARGE, 4600);
break;
case EVENT_SPELL_CHARGE:
me->CastSpell(me, SPELL_CHARGE, true);
me->CastSpell(me, SPELL_FELFIRE, true);
events.ScheduleEvent(EVENT_FELFIRE, 300);
events.ScheduleEvent(EVENT_FELFIRE, 600);
events.ScheduleEvent(EVENT_FELFIRE, 900);
events.ScheduleEvent(EVENT_FELFIRE, 1200);
events.ScheduleEvent(EVENT_FELFIRE, 1500);
events.ScheduleEvent(EVENT_FELFIRE, 1800);
break;
case EVENT_FELFIRE:
me->CastSpell(me, SPELL_FELFIRE, true);
break;
case EVENT_SPELL_CHARGE:
me->CastSpell(me, SPELL_CHARGE, true);
me->CastSpell(me, SPELL_FELFIRE, true);
events.ScheduleEvent(EVENT_FELFIRE, 300);
events.ScheduleEvent(EVENT_FELFIRE, 600);
events.ScheduleEvent(EVENT_FELFIRE, 900);
events.ScheduleEvent(EVENT_FELFIRE, 1200);
events.ScheduleEvent(EVENT_FELFIRE, 1500);
events.ScheduleEvent(EVENT_FELFIRE, 1800);
break;
case EVENT_FELFIRE:
me->CastSpell(me, SPELL_FELFIRE, true);
break;
case EVENT_ME_FIRST:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (dalliah->IsAlive() && !dalliah->IsInCombat())
dalliah->AI()->Talk(SAY_AGGRO_SOCCOTHRATES_FIRST);
break;
case EVENT_CHECK_HEALTH:
if (HealthBelowPct(25))
{
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
dalliah->AI()->Talk(SAY_SOCCOTHRATES_25_PERCENT);
break;
}
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
break;
case EVENT_CHECK_HEALTH:
if (HealthBelowPct(25))
{
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
dalliah->AI()->Talk(SAY_SOCCOTHRATES_25_PERCENT);
break;
}
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
break;
}
DoMeleeAttackIfReady();
@@ -237,7 +237,7 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
private:
bool preFight;
EventMap events2;
EventMap events2;
};
CreatureAI* GetAI(Creature* creature) const

View File

@@ -55,8 +55,8 @@ class boss_zereketh_the_unbound : public CreatureScript
void KilledUnit(Unit* victim)
{
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_SLAY);
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_SLAY);
}
void UpdateAI(uint32 diff)
@@ -72,18 +72,18 @@ class boss_zereketh_the_unbound : public CreatureScript
{
case EVENT_VOID_ZONE:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 60.0f, true))
me->CastSpell(target, SPELL_VOID_ZONE, false);
me->CastSpell(target, SPELL_VOID_ZONE, false);
events.ScheduleEvent(EVENT_VOID_ZONE, 15000);
break;
case EVENT_SHADOW_NOVA:
me->CastSpell(me, SPELL_SHADOW_NOVA, false);
if (roll_chance_i(50))
Talk(SAY_SHADOW_NOVA);
me->CastSpell(me, SPELL_SHADOW_NOVA, false);
if (roll_chance_i(50))
Talk(SAY_SHADOW_NOVA);
events.ScheduleEvent(EVENT_SHADOW_NOVA, 12000);
break;
case EVENT_SEED_OF_CORRUPTION:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30.0f, true))
me->CastSpell(target, SPELL_SEED_OF_CORRUPTION, false);
me->CastSpell(target, SPELL_SEED_OF_CORRUPTION, false);
events.ScheduleEvent(EVENT_SEED_OF_CORRUPTION, 16000);
break;
}

View File

@@ -102,10 +102,10 @@ class instance_arcatraz : public InstanceMapScript
case DATA_WARDEN_3:
case DATA_WARDEN_4:
case DATA_WARDEN_5:
if (data < FAIL)
HandleGameObject(StasisPodGUIDs[type - DATA_WARDEN_1], data == IN_PROGRESS);
if (Creature* warden = instance->GetCreature(MellicharGUID))
warden->AI()->SetData(type, data);
if (data < FAIL)
HandleGameObject(StasisPodGUIDs[type - DATA_WARDEN_1], data == IN_PROGRESS);
if (Creature* warden = instance->GetCreature(MellicharGUID))
warden->AI()->SetData(type, data);
break;
}
}
@@ -141,7 +141,7 @@ class instance_arcatraz : public InstanceMapScript
SetData(DATA_WARDEN_3, NOT_STARTED);
SetData(DATA_WARDEN_4, NOT_STARTED);
SetData(DATA_WARDEN_5, NOT_STARTED);
HandleGameObject(WardensShieldGUID, true);
HandleGameObject(WardensShieldGUID, true);
}
return true;