refactor(Scripts/CavernsOfTime): Mass struct/model update (#16268)

init
This commit is contained in:
Eddy Vega
2023-05-28 13:30:30 -06:00
committed by GitHub
parent b5f311bf56
commit be622fa720
7 changed files with 369 additions and 376 deletions
@@ -19,29 +19,27 @@
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "old_hillsbrad.h" #include "old_hillsbrad.h"
enum CaptainSkarloc enum Text
{ {
SAY_ENTER = 0, SAY_ENTER = 0,
SAY_TAUNT = 1, SAY_TAUNT = 1,
SAY_SLAY = 2, SAY_SLAY = 2,
SAY_DEATH = 3, SAY_DEATH = 3
};
enum Spells
{
SPELL_HOLY_LIGHT = 29427, SPELL_HOLY_LIGHT = 29427,
SPELL_CLEANSE = 29380, SPELL_CLEANSE = 29380,
SPELL_HAMMER_OF_JUSTICE = 13005, SPELL_HAMMER_OF_JUSTICE = 13005,
SPELL_HOLY_SHIELD = 31904, SPELL_HOLY_SHIELD = 31904,
SPELL_DEVOTION_AURA = 8258, SPELL_DEVOTION_AURA = 8258,
SPELL_CONSECRATION = 38385, SPELL_CONSECRATION = 38385
};
WAYPOINTS_COUNT = 4, enum Misc
{
EVENT_INITIAL_TALK = 1, WAYPOINTS_COUNT = 4
EVENT_START_FIGHT = 2,
EVENT_SPELL_CLEANSE = 10,
EVENT_SPELL_HAMMER = 11,
EVENT_SPELL_HOLY_LIGHT = 12,
EVENT_SPELL_HOLY_SHIELD = 13,
EVENT_SPELL_CONSECRATION = 14
}; };
const Position startPath[WAYPOINTS_COUNT] = const Position startPath[WAYPOINTS_COUNT] =
@@ -52,26 +50,21 @@ const Position startPath[WAYPOINTS_COUNT] =
{2058.77f, 236.04f, 63.92f, 0.0f} {2058.77f, 236.04f, 63.92f, 0.0f}
}; };
class boss_captain_skarloc : public CreatureScript struct boss_captain_skarloc : public BossAI
{ {
public: boss_captain_skarloc(Creature* creature) : BossAI(creature, DATA_CAPTAIN_SKARLOC), summons(me)
boss_captain_skarloc() : CreatureScript("boss_captain_skarloc") { }
CreatureAI* GetAI(Creature* creature) const override
{ {
return GetOldHillsbradAI<boss_captain_skarlocAI>(creature); scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
} }
struct boss_captain_skarlocAI : public ScriptedAI
{
boss_captain_skarlocAI(Creature* creature) : ScriptedAI(creature), summons(me) { }
EventMap events;
SummonList summons; SummonList summons;
void Reset() override void Reset() override
{ {
events.Reset(); _Reset();
summons.DespawnAll(); summons.DespawnAll();
} }
@@ -79,27 +72,32 @@ public:
{ {
summons.Summon(summon); summons.Summon(summon);
if (Creature* thrall = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_THRALL_GUID))) if (Creature* thrall = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_THRALL_GUID)))
{
thrall->AI()->JustSummoned(summon); thrall->AI()->JustSummoned(summon);
}
summon->SetImmuneToAll(true); summon->SetImmuneToAll(true);
if (summon->GetEntry() == NPC_SKARLOC_MOUNT) if (summon->GetEntry() == NPC_SKARLOC_MOUNT)
return; return;
if (summons.size() == 1) if (summons.size() == 1)
{
summon->GetMotionMaster()->MovePoint(0, 2060.788f, 237.301f, 63.999f); summon->GetMotionMaster()->MovePoint(0, 2060.788f, 237.301f, 63.999f);
}
else else
{
summon->GetMotionMaster()->MovePoint(0, 2056.870f, 234.853f, 63.839f); summon->GetMotionMaster()->MovePoint(0, 2056.870f, 234.853f, 63.839f);
} }
}
void InitializeAI() override void InitializeAI() override
{ {
ScriptedAI::InitializeAI(); ScriptedAI::InitializeAI();
Movement::PointsArray path; Movement::PointsArray path;
path.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ())); path.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
for (uint8 i = 0; i < WAYPOINTS_COUNT; ++i) for (uint8 i = 0; i < WAYPOINTS_COUNT; ++i)
{
path.push_back(G3D::Vector3(startPath[i].GetPositionX(), startPath[i].GetPositionY(), startPath[i].GetPositionZ())); path.push_back(G3D::Vector3(startPath[i].GetPositionX(), startPath[i].GetPositionY(), startPath[i].GetPositionZ()));
}
me->GetMotionMaster()->MoveSplinePath(&path); me->GetMotionMaster()->MoveSplinePath(&path);
me->SetImmuneToAll(true); me->SetImmuneToAll(true);
me->Mount(SKARLOC_MOUNT_MODEL); me->Mount(SKARLOC_MOUNT_MODEL);
@@ -121,8 +119,12 @@ public:
me->Dismount(); me->Dismount();
me->SetWalk(true); me->SetWalk(true);
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr) for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
{
if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr)) if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
{
summon->SetWalk(true); summon->SetWalk(true);
}
}
if (Creature* mount = me->SummonCreature(NPC_SKARLOC_MOUNT, 2049.12f, 252.31f, 62.855f, me->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN)) if (Creature* mount = me->SummonCreature(NPC_SKARLOC_MOUNT, 2049.12f, 252.31f, 62.855f, me->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN))
{ {
mount->SetImmuneToNPC(true); mount->SetImmuneToNPC(true);
@@ -155,14 +157,38 @@ public:
void JustEngagedWith(Unit* /*who*/) override void JustEngagedWith(Unit* /*who*/) override
{ {
me->CastSpell(me, SPELL_DEVOTION_AURA, true); _JustEngagedWith();
DoCastSelf(SPELL_DEVOTION_AURA);
scheduler.Schedule(15s, [this](TaskContext context)
{
DoCastSelf(SPELL_HOLY_LIGHT);
context.Repeat(20s);
}).Schedule(6s, [this](TaskContext context)
{
if (roll_chance_i(33))
{
Talk(SAY_TAUNT);
}
DoCastSelf(SPELL_CLEANSE);
context.Repeat(10s);
}).Schedule(20s, [this](TaskContext context)
{
DoCastVictim(SPELL_HAMMER_OF_JUSTICE);
context.Repeat(30s);
}).Schedule(10s, [this](TaskContext context)
{
DoCastSelf(SPELL_HOLY_SHIELD);
context.Repeat(30s);
});
events.ScheduleEvent(EVENT_SPELL_HOLY_LIGHT, 15000);
events.ScheduleEvent(EVENT_SPELL_CLEANSE, 6000);
events.ScheduleEvent(EVENT_SPELL_HAMMER, 20000);
events.ScheduleEvent(EVENT_SPELL_HOLY_SHIELD, 10000);
if (IsHeroic()) if (IsHeroic())
events.ScheduleEvent(EVENT_SPELL_CONSECRATION, 1000); {
scheduler.Schedule(1s, [this](TaskContext context)
{
DoCastSelf(SPELL_CONSECRATION);
context.Repeat(20s);
});
}
} }
void KilledUnit(Unit* /*victim*/) override void KilledUnit(Unit* /*victim*/) override
@@ -172,6 +198,7 @@ public:
void JustDied(Unit* /*killer*/) override void JustDied(Unit* /*killer*/) override
{ {
_JustDied();
Talk(SAY_DEATH); Talk(SAY_DEATH);
me->GetInstanceScript()->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_SKARLOC_KILLED); me->GetInstanceScript()->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_SKARLOC_KILLED);
me->GetInstanceScript()->SetData(DATA_THRALL_ADD_FLAG, 0); me->GetInstanceScript()->SetData(DATA_THRALL_ADD_FLAG, 0);
@@ -182,42 +209,15 @@ public:
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
events.Update(diff); scheduler.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING)) if (me->HasUnitState(UNIT_STATE_CASTING))
return; return;
switch (events.ExecuteEvent())
{
case EVENT_SPELL_HOLY_LIGHT:
me->CastSpell(me, SPELL_HOLY_LIGHT, false);
events.ScheduleEvent(EVENT_SPELL_HOLY_LIGHT, 20000);
break;
case EVENT_SPELL_CLEANSE:
if (roll_chance_i(33))
Talk(SAY_TAUNT);
me->CastSpell(me, SPELL_CLEANSE, false);
events.ScheduleEvent(EVENT_SPELL_CLEANSE, 10000);
break;
case EVENT_SPELL_HAMMER:
me->CastSpell(me->GetVictim(), SPELL_HAMMER_OF_JUSTICE, false);
events.ScheduleEvent(EVENT_SPELL_HAMMER, 30000);
break;
case EVENT_SPELL_HOLY_SHIELD:
me->CastSpell(me, SPELL_HOLY_SHIELD, false);
events.ScheduleEvent(SPELL_HOLY_SHIELD, 30000);
break;
case EVENT_SPELL_CONSECRATION:
me->CastSpell(me, SPELL_CONSECRATION, false);
events.ScheduleEvent(EVENT_SPELL_CONSECRATION, 20000);
break;
}
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
};
}; };
void AddSC_boss_captain_skarloc() void AddSC_boss_captain_skarloc()
{ {
new boss_captain_skarloc(); RegisterOldHillsbradCreatureAI(boss_captain_skarloc);
} }
@@ -19,52 +19,62 @@
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "old_hillsbrad.h" #include "old_hillsbrad.h"
enum EpochHunter enum Text
{ {
SAY_AGGRO = 5, SAY_AGGRO = 5,
SAY_SLAY = 6, SAY_SLAY = 6,
SAY_BREATH = 7, SAY_BREATH = 7,
SAY_DEATH = 8, SAY_DEATH = 8
};
enum Spells
{
SPELL_SAND_BREATH = 31914, SPELL_SAND_BREATH = 31914,
SPELL_IMPENDING_DEATH = 31916, SPELL_IMPENDING_DEATH = 31916,
SPELL_MAGIC_DISRUPTION_AURA = 33834, SPELL_MAGIC_DISRUPTION_AURA = 33834,
SPELL_WING_BUFFET = 31475, SPELL_WING_BUFFET = 31475
EVENT_SPELL_SAND_BREATH = 1,
EVENT_SPELL_IMPENDING_DEATH = 2,
EVENT_SPELL_DISRUPTION = 3,
EVENT_SPELL_WING_BUFFET = 4
}; };
class boss_epoch_hunter : public CreatureScript struct boss_epoch_hunter : public BossAI
{ {
public: boss_epoch_hunter(Creature* creature) : BossAI(creature, DATA_EPOCH_HUNTER)
boss_epoch_hunter() : CreatureScript("boss_epoch_hunter") { }
CreatureAI* GetAI(Creature* creature) const override
{ {
return GetOldHillsbradAI<boss_epoch_hunterAI>(creature); scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
} }
struct boss_epoch_hunterAI : public ScriptedAI
{
boss_epoch_hunterAI(Creature* creature) : ScriptedAI(creature) { }
EventMap events;
void Reset() override void Reset() override
{ {
_Reset();
} }
void JustEngagedWith(Unit* /*who*/) override void JustEngagedWith(Unit* /*who*/) override
{ {
_JustEngagedWith();
Talk(SAY_AGGRO); Talk(SAY_AGGRO);
scheduler.Schedule(8s, [this](TaskContext context)
events.ScheduleEvent(EVENT_SPELL_SAND_BREATH, 8000); {
events.ScheduleEvent(EVENT_SPELL_IMPENDING_DEATH, 2000); if (roll_chance_i(50))
events.ScheduleEvent(EVENT_SPELL_DISRUPTION, 20000); {
events.ScheduleEvent(EVENT_SPELL_WING_BUFFET, 14000); Talk(SAY_BREATH);
}
DoCastVictim(SPELL_SAND_BREATH);
context.Repeat(20s);
}).Schedule(2s, [this](TaskContext context)
{
DoCastVictim(SPELL_IMPENDING_DEATH);
context.Repeat(30s);
}).Schedule(20s, [this](TaskContext context)
{
DoCastSelf(SPELL_MAGIC_DISRUPTION_AURA);
context.Repeat(30s);
}).Schedule(14s, [this](TaskContext context)
{
DoCastSelf(SPELL_WING_BUFFET);
context.Repeat(30s);
});
} }
void KilledUnit(Unit* victim) override void KilledUnit(Unit* victim) override
@@ -77,49 +87,30 @@ public:
{ {
if (killer && killer == me) if (killer && killer == me)
return; return;
_JustDied();
Talk(SAY_DEATH); Talk(SAY_DEATH);
me->GetInstanceScript()->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_EPOCH_KILLED); me->GetInstanceScript()->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_EPOCH_KILLED);
if (Creature* taretha = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_TARETHA_GUID))) if (Creature* taretha = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_TARETHA_GUID)))
{
taretha->AI()->DoAction(me->GetEntry()); taretha->AI()->DoAction(me->GetEntry());
} }
}
void UpdateAI(uint32 diff) override void UpdateAI(uint32 diff) override
{ {
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
events.Update(diff); scheduler.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING)) if (me->HasUnitState(UNIT_STATE_CASTING))
return; return;
switch (events.ExecuteEvent())
{
case EVENT_SPELL_SAND_BREATH:
if (roll_chance_i(50))
Talk(SAY_BREATH);
me->CastSpell(me->GetVictim(), SPELL_SAND_BREATH, false);
events.ScheduleEvent(EVENT_SPELL_SAND_BREATH, 20000);
break;
case EVENT_SPELL_IMPENDING_DEATH:
me->CastSpell(me->GetVictim(), SPELL_IMPENDING_DEATH, false);
events.ScheduleEvent(EVENT_SPELL_IMPENDING_DEATH, 30000);
break;
case EVENT_SPELL_WING_BUFFET:
me->CastSpell(me, SPELL_WING_BUFFET, false);
events.ScheduleEvent(EVENT_SPELL_WING_BUFFET, 30000);
break;
case EVENT_SPELL_DISRUPTION:
me->CastSpell(me, SPELL_MAGIC_DISRUPTION_AURA, false);
events.ScheduleEvent(EVENT_SPELL_DISRUPTION, 30000);
break;
}
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
};
}; };
void AddSC_boss_epoch_hunter() void AddSC_boss_epoch_hunter()
{ {
new boss_epoch_hunter(); RegisterOldHillsbradCreatureAI(boss_epoch_hunter);
} }
@@ -21,42 +21,33 @@
#include "SmartScriptMgr.h" #include "SmartScriptMgr.h"
#include "old_hillsbrad.h" #include "old_hillsbrad.h"
enum LieutenantDrake enum Text
{ {
SAY_ENTER = 0, SAY_ENTER = 0,
SAY_AGGRO = 1, SAY_AGGRO = 1,
SAY_SLAY = 2, SAY_SLAY = 2,
SAY_MORTAL = 3, SAY_MORTAL = 3,
SAY_SHOUT = 4, SAY_SHOUT = 4,
SAY_DEATH = 5, SAY_DEATH = 5
};
enum Spells
{
SPELL_WHIRLWIND = 31909, SPELL_WHIRLWIND = 31909,
SPELL_EXPLODING_SHOT = 33792, SPELL_EXPLODING_SHOT = 33792,
SPELL_HAMSTRING = 9080, SPELL_HAMSTRING = 9080,
SPELL_MORTAL_STRIKE = 31911, SPELL_MORTAL_STRIKE = 31911,
SPELL_FRIGHTENING_SHOUT = 33789, SPELL_FRIGHTENING_SHOUT = 33789
EVENT_WHIRLWIND = 1,
EVENT_FRIGHTENING_SHOUT = 2,
EVENT_MORTAL_STRIKE = 3,
EVENT_HAMSTRING = 4,
EVENT_EXPLODING_SHOT = 5
}; };
class boss_lieutenant_drake : public CreatureScript struct boss_lieutenant_drake : public BossAI
{ {
public: boss_lieutenant_drake(Creature* creature) : BossAI(creature, DATA_LIEUTENANT_DRAKE)
boss_lieutenant_drake() : CreatureScript("boss_lieutenant_drake") { }
CreatureAI* GetAI(Creature* creature) const override
{ {
return GetOldHillsbradAI<boss_lieutenant_drakeAI>(creature); scheduler.SetValidator([this]
}
struct boss_lieutenant_drakeAI : public ScriptedAI
{
boss_lieutenant_drakeAI(Creature* creature) : ScriptedAI(creature)
{ {
return !me->HasUnitState(UNIT_STATE_CASTING);
});
} }
void InitializeAI() override void InitializeAI() override
@@ -68,32 +59,64 @@ public:
void Reset() override void Reset() override
{ {
events.Reset(); _Reset();
} }
void JustEngagedWith(Unit* /*who*/) override void JustEngagedWith(Unit* /*who*/) override
{ {
_JustEngagedWith();
Talk(SAY_AGGRO); Talk(SAY_AGGRO);
scheduler.Schedule(4s, [this](TaskContext context)
events.ScheduleEvent(EVENT_WHIRLWIND, 4000); {
events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, 14000); DoCastSelf(SPELL_WHIRLWIND);
events.ScheduleEvent(EVENT_MORTAL_STRIKE, 9000); context.Repeat(25s);
events.ScheduleEvent(EVENT_HAMSTRING, 18000); }).Schedule(14s, [this](TaskContext context)
events.ScheduleEvent(EVENT_EXPLODING_SHOT, 1000); {
if (roll_chance_i(40))
{
Talk(SAY_SHOUT);
}
DoCastSelf(SPELL_FRIGHTENING_SHOUT);
context.Repeat(25s);
}).Schedule(9s, [this](TaskContext context)
{
if (roll_chance_i(40))
{
Talk(SAY_MORTAL);
}
DoCastVictim(SPELL_MORTAL_STRIKE);
context.Repeat(10s);
}).Schedule(18s, [this](TaskContext context)
{
DoCastVictim(SPELL_HAMSTRING);
context.Repeat(25s);
}).Schedule(1s, [this](TaskContext context)
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 40.0f))
{
DoCast(target, SPELL_EXPLODING_SHOT);
}
context.Repeat(25s);
});
} }
void KilledUnit(Unit* victim) override void KilledUnit(Unit* victim) override
{ {
if (victim->GetTypeId() == TYPEID_PLAYER) if (victim->GetTypeId() == TYPEID_PLAYER)
{
Talk(SAY_SLAY); Talk(SAY_SLAY);
} }
}
void JustDied(Unit* /*killer*/) override void JustDied(Unit* /*killer*/) override
{ {
_JustDied();
Talk(SAY_DEATH); Talk(SAY_DEATH);
if (InstanceScript* instance = me->GetInstanceScript()) if (InstanceScript* instance = me->GetInstanceScript())
{
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_DRAKE_KILLED); instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_DRAKE_KILLED);
} }
}
void MovementInform(uint32 type, uint32 point) override void MovementInform(uint32 type, uint32 point) override
{ {
@@ -130,50 +153,19 @@ public:
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
events.Update(diff); scheduler.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING)) if (me->HasUnitState(UNIT_STATE_CASTING))
return; return;
switch (events.ExecuteEvent())
{
case EVENT_WHIRLWIND:
me->CastSpell(me, SPELL_WHIRLWIND, false);
events.ScheduleEvent(EVENT_WHIRLWIND, 25000);
break;
case EVENT_EXPLODING_SHOT:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 40.0f))
me->CastSpell(target, SPELL_EXPLODING_SHOT, false);
events.ScheduleEvent(EVENT_EXPLODING_SHOT, 25000);
break;
case EVENT_MORTAL_STRIKE:
if (roll_chance_i(40))
Talk(SAY_MORTAL);
me->CastSpell(me->GetVictim(), SPELL_MORTAL_STRIKE, false);
events.ScheduleEvent(EVENT_MORTAL_STRIKE, 10000);
break;
case EVENT_FRIGHTENING_SHOUT:
if (roll_chance_i(40))
Talk(SAY_SHOUT);
me->CastSpell(me, SPELL_FRIGHTENING_SHOUT, false);
events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, 25000);
break;
case EVENT_HAMSTRING:
me->CastSpell(me->GetVictim(), SPELL_HAMSTRING, false);
events.ScheduleEvent(EVENT_HAMSTRING, 25000);
break;
}
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
private: private:
EventMap events;
uint32 pathId; uint32 pathId;
bool runSecondPath; bool runSecondPath;
};
}; };
void AddSC_boss_lieutenant_drake() void AddSC_boss_lieutenant_drake()
{ {
new boss_lieutenant_drake(); RegisterOldHillsbradCreatureAI(boss_lieutenant_drake);
} }
@@ -27,6 +27,9 @@
enum DataIds enum DataIds
{ {
DATA_ESCORT_PROGRESS = 0, DATA_ESCORT_PROGRESS = 0,
DATA_LIEUTENANT_DRAKE = 1,
DATA_CAPTAIN_SKARLOC = 2,
DATA_EPOCH_HUNTER = 3,
DATA_BOMBS_PLACED = 10, DATA_BOMBS_PLACED = 10,
DATA_THRALL_REPOSITION = 11, DATA_THRALL_REPOSITION = 11,
@@ -95,4 +98,6 @@ inline AI* GetOldHillsbradAI(T* obj)
return GetInstanceAI<AI>(obj, OldHillsbradScriptName); return GetInstanceAI<AI>(obj, OldHillsbradScriptName);
} }
#define RegisterOldHillsbradCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetOldHillsbradAI)
#endif #endif
@@ -19,14 +19,17 @@
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "the_black_morass.h" #include "the_black_morass.h"
enum Enums enum Text
{ {
SAY_AGGRO = 1, SAY_AGGRO = 1,
SAY_BANISH = 2, SAY_BANISH = 2,
SAY_SLAY = 3, SAY_SLAY = 3,
SAY_DEATH = 4, SAY_DEATH = 4,
EMOTE_FRENZY = 5, EMOTE_FRENZY = 5
};
enum Spells
{
SPELL_CLEAVE = 40504, SPELL_CLEAVE = 40504,
SPELL_TIME_STOP = 31422, SPELL_TIME_STOP = 31422,
SPELL_ENRAGE = 37605, SPELL_ENRAGE = 37605,
@@ -19,19 +19,21 @@
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "the_black_morass.h" #include "the_black_morass.h"
enum Enums enum Text
{ {
SAY_AGGRO = 1, SAY_AGGRO = 1,
SAY_BANISH = 2, SAY_BANISH = 2,
SAY_SLAY = 3, SAY_SLAY = 3,
SAY_DEATH = 4, SAY_DEATH = 4
};
enum Spells
{
SPELL_ARCANE_BLAST = 31457, SPELL_ARCANE_BLAST = 31457,
SPELL_ARCANE_DISCHARGE = 31472, SPELL_ARCANE_DISCHARGE = 31472,
SPELL_TIME_LAPSE = 31467, SPELL_TIME_LAPSE = 31467,
SPELL_ATTRACTION = 38540, SPELL_ATTRACTION = 38540,
SPELL_BANISH_DRAGON_HELPER = 31550
SPELL_BANISH_DRAGON_HELPER = 31550,
}; };
struct boss_chrono_lord_deja : public BossAI struct boss_chrono_lord_deja : public BossAI
@@ -19,13 +19,16 @@
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "the_black_morass.h" #include "the_black_morass.h"
enum Enums enum Text
{ {
SAY_AGGRO = 1, SAY_AGGRO = 1,
SAY_BANISH = 2, SAY_BANISH = 2,
SAY_SLAY = 3, SAY_SLAY = 3,
SAY_DEATH = 4, SAY_DEATH = 4
};
enum Spells
{
SPELL_HASTEN = 31458, SPELL_HASTEN = 31458,
SPELL_MORTAL_WOUND = 31464, SPELL_MORTAL_WOUND = 31464,
SPELL_WING_BUFFET = 31475, SPELL_WING_BUFFET = 31475,
@@ -46,7 +49,6 @@ struct boss_temporus : public BossAI
void JustEngagedWith(Unit* /*who*/) override void JustEngagedWith(Unit* /*who*/) override
{ {
_JustEngagedWith(); _JustEngagedWith();
scheduler.Schedule(12s, [this](TaskContext context) scheduler.Schedule(12s, [this](TaskContext context)
{ {
DoCastSelf(SPELL_HASTEN); DoCastSelf(SPELL_HASTEN);
@@ -69,7 +71,6 @@ struct boss_temporus : public BossAI
context.Repeat(30s); context.Repeat(30s);
}); });
} }
OwnTalk(SAY_AGGRO); OwnTalk(SAY_AGGRO);
} }
@@ -98,7 +99,6 @@ struct boss_temporus : public BossAI
return; return;
} }
} }
ScriptedAI::MoveInLineOfSight(who); ScriptedAI::MoveInLineOfSight(who);
} }
}; };