aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-04-15 15:19:16 +0300
committerGitHub <noreply@github.com>2021-04-15 14:19:16 +0200
commit747333149d096fc7600d57c37768a09b80b1b3b1 (patch)
tree8221aea62f43a94aed8b962a8d058053ba181845 /src
parentae7dd5bd18536648d319186cdde071414059c4e8 (diff)
Scripts/BRS: Update scripts to new model (1/3) (#26416)
Co-authored-by: offl <offl@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp107
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp99
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp191
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp113
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp88
5 files changed, 271 insertions, 327 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp
index 0e71c3c111b..5a919367ed1 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp
@@ -35,80 +35,69 @@ enum Events
EVENT_THUNDERCLAP = 4,
};
-class boss_drakkisath : public CreatureScript
+struct boss_drakkisath : public BossAI
{
-public:
- boss_drakkisath() : CreatureScript("boss_drakkisath") { }
+ boss_drakkisath(Creature* creature) : BossAI(creature, DATA_GENERAL_DRAKKISATH) { }
- struct boss_drakkisathAI : public BossAI
+ void Reset() override
{
- boss_drakkisathAI(Creature* creature) : BossAI(creature, DATA_GENERAL_DRAKKISATH) { }
-
- void Reset() override
- {
- _Reset();
- }
+ _Reset();
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_FIRE_NOVA, 6s);
- events.ScheduleEvent(EVENT_CLEAVE, 8s);
- events.ScheduleEvent(EVENT_CONFLIGURATION, 15s);
- events.ScheduleEvent(EVENT_THUNDERCLAP, 17s);
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_FIRE_NOVA, 6s);
+ events.ScheduleEvent(EVENT_CLEAVE, 8s);
+ events.ScheduleEvent(EVENT_CONFLIGURATION, 15s);
+ events.ScheduleEvent(EVENT_THUNDERCLAP, 17s);
+ }
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- }
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ }
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- events.Update(diff);
+ events.Update(diff);
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_FIRE_NOVA:
- DoCastVictim(SPELL_FIRENOVA);
- events.ScheduleEvent(EVENT_FIRE_NOVA, 10s);
- break;
- case EVENT_CLEAVE:
- DoCastVictim(SPELL_CLEAVE);
- events.ScheduleEvent(EVENT_CLEAVE, 8s);
- break;
- case EVENT_CONFLIGURATION:
- DoCastVictim(SPELL_CONFLIGURATION);
- events.ScheduleEvent(EVENT_CONFLIGURATION, 18s);
- break;
- case EVENT_THUNDERCLAP:
- DoCastVictim(SPELL_THUNDERCLAP);
- events.ScheduleEvent(EVENT_THUNDERCLAP, 20s);
- break;
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ case EVENT_FIRE_NOVA:
+ DoCastVictim(SPELL_FIRENOVA);
+ events.ScheduleEvent(EVENT_FIRE_NOVA, 10s);
+ break;
+ case EVENT_CLEAVE:
+ DoCastVictim(SPELL_CLEAVE);
+ events.ScheduleEvent(EVENT_CLEAVE, 8s);
+ break;
+ case EVENT_CONFLIGURATION:
+ DoCastVictim(SPELL_CONFLIGURATION);
+ events.ScheduleEvent(EVENT_CONFLIGURATION, 18s);
+ break;
+ case EVENT_THUNDERCLAP:
+ DoCastVictim(SPELL_THUNDERCLAP);
+ events.ScheduleEvent(EVENT_THUNDERCLAP, 20s);
+ break;
}
- DoMeleeAttackIfReady();
- }
- };
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetBlackrockSpireAI<boss_drakkisathAI>(creature);
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+ }
+ DoMeleeAttackIfReady();
}
};
void AddSC_boss_drakkisath()
{
- new boss_drakkisath();
+ RegisterBlackrockSpireCreatureAI(boss_drakkisath);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp
index 4b5775c6c7a..877d4dc23b7 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp
@@ -40,77 +40,66 @@ enum Events
EVENT_FRENZY = 3
};
-class boss_gizrul_the_slavener : public CreatureScript
+struct boss_gizrul_the_slavener : public BossAI
{
-public:
- boss_gizrul_the_slavener() : CreatureScript("boss_gizrul_the_slavener") { }
+ boss_gizrul_the_slavener(Creature* creature) : BossAI(creature, DATA_GIZRUL_THE_SLAVENER) { }
- struct boss_gizrul_the_slavenerAI : public BossAI
+ void Reset() override
{
- boss_gizrul_the_slavenerAI(Creature* creature) : BossAI(creature, DATA_GIZRUL_THE_SLAVENER) { }
-
- void Reset() override
- {
- _Reset();
- }
+ _Reset();
+ }
- void IsSummonedBy(WorldObject* /*summoner*/) override
- {
- me->GetMotionMaster()->MovePath(GIZRUL_PATH, false);
- }
+ void IsSummonedBy(WorldObject* /*summoner*/) override
+ {
+ me->GetMotionMaster()->MovePath(GIZRUL_PATH, false);
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_FATAL_BITE, 17s, 20s);
- events.ScheduleEvent(EVENT_INFECTED_BITE, 10s, 12s);
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_FATAL_BITE, 17s, 20s);
+ events.ScheduleEvent(EVENT_INFECTED_BITE, 10s, 12s);
+ }
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- }
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ }
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- events.Update(diff);
+ events.Update(diff);
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_FATAL_BITE:
- DoCastVictim(SPELL_FATAL_BITE);
- events.ScheduleEvent(EVENT_FATAL_BITE, 8s, 10s);
- break;
- case EVENT_INFECTED_BITE:
- DoCast(me, SPELL_INFECTED_BITE);
- events.ScheduleEvent(EVENT_FATAL_BITE, 8s, 10s);
- break;
- default:
- break;
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ case EVENT_FATAL_BITE:
+ DoCastVictim(SPELL_FATAL_BITE);
+ events.ScheduleEvent(EVENT_FATAL_BITE, 8s, 10s);
+ break;
+ case EVENT_INFECTED_BITE:
+ DoCast(me, SPELL_INFECTED_BITE);
+ events.ScheduleEvent(EVENT_FATAL_BITE, 8s, 10s);
+ break;
+ default:
+ break;
}
- DoMeleeAttackIfReady();
- }
- };
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetBlackrockSpireAI<boss_gizrul_the_slavenerAI>(creature);
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+ }
+ DoMeleeAttackIfReady();
}
};
void AddSC_boss_gizrul_the_slavener()
{
- new boss_gizrul_the_slavener();
+ RegisterBlackrockSpireCreatureAI(boss_gizrul_the_slavener);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp
index 79c52bb8f3e..1de8cfcd416 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp
@@ -49,141 +49,130 @@ enum Events
EVENT_SUMMONED_2 = 6
};
-class boss_gyth : public CreatureScript
+struct boss_gyth : public BossAI
{
-public:
- boss_gyth() : CreatureScript("boss_gyth") { }
-
- struct boss_gythAI : public BossAI
+ boss_gyth(Creature* creature) : BossAI(creature, DATA_GYTH)
{
- boss_gythAI(Creature* creature) : BossAI(creature, DATA_GYTH)
- {
- Initialize();
- }
+ Initialize();
+ }
- void Initialize()
- {
- SummonedRend = false;
- }
+ void Initialize()
+ {
+ SummonedRend = false;
+ }
- bool SummonedRend;
+ bool SummonedRend;
- void Reset() override
+ void Reset() override
+ {
+ Initialize();
+ if (instance->GetBossState(DATA_GYTH) == IN_PROGRESS)
{
- Initialize();
- if (instance->GetBossState(DATA_GYTH) == IN_PROGRESS)
- {
- instance->SetBossState(DATA_GYTH, DONE);
- me->DespawnOrUnsummon();
- }
+ instance->SetBossState(DATA_GYTH, DONE);
+ me->DespawnOrUnsummon();
}
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_CORROSIVE_ACID, 8s, 16s);
- events.ScheduleEvent(EVENT_FREEZE, 8s, 16s);
- events.ScheduleEvent(EVENT_FLAME_BREATH, 8s, 16s);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 12s, 18s);
- }
+ events.ScheduleEvent(EVENT_CORROSIVE_ACID, 8s, 16s);
+ events.ScheduleEvent(EVENT_FREEZE, 8s, 16s);
+ events.ScheduleEvent(EVENT_FLAME_BREATH, 8s, 16s);
+ events.ScheduleEvent(EVENT_KNOCK_AWAY, 12s, 18s);
+ }
+
+ void JustDied(Unit* /*killer*/) override
+ {
+ instance->SetBossState(DATA_GYTH, DONE);
+ }
- void JustDied(Unit* /*killer*/) override
+ void SetData(uint32 /*type*/, uint32 data) override
+ {
+ switch (data)
{
- instance->SetBossState(DATA_GYTH, DONE);
+ case 1:
+ events.ScheduleEvent(EVENT_SUMMONED_1, 1s);
+ break;
+ default:
+ break;
}
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
- void SetData(uint32 /*type*/, uint32 data) override
+ if (!SummonedRend && HealthBelowPct(5))
{
- switch (data)
- {
- case 1:
- events.ScheduleEvent(EVENT_SUMMONED_1, 1s);
- break;
- default:
- break;
- }
+ DoCast(me, SPELL_SUMMON_REND);
+ me->RemoveAura(SPELL_REND_MOUNTS);
+ SummonedRend = true;
}
- void UpdateAI(uint32 diff) override
+ if (!UpdateVictim())
{
-
- if (!SummonedRend && HealthBelowPct(5))
- {
- DoCast(me, SPELL_SUMMON_REND);
- me->RemoveAura(SPELL_REND_MOUNTS);
- SummonedRend = true;
- }
-
- if (!UpdateVictim())
- {
- events.Update(diff);
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_SUMMONED_1:
- me->AddAura(SPELL_REND_MOUNTS, me);
- if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 40.0f))
- portcullis->UseDoorOrButton();
- if (Creature* victor = me->FindNearestCreature(NPC_LORD_VICTOR_NEFARIUS, 75.0f, true))
- victor->AI()->SetData(1, 1);
- events.ScheduleEvent(EVENT_SUMMONED_2, 2s);
- break;
- case EVENT_SUMMONED_2:
- me->GetMotionMaster()->MovePath(GYTH_PATH_1, false);
- break;
- default:
- break;
- }
- }
- return;
- }
-
events.Update(diff);
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
{
- case EVENT_CORROSIVE_ACID:
- DoCast(me, SPELL_CORROSIVE_ACID);
- events.ScheduleEvent(EVENT_CORROSIVE_ACID, 10s, 16s);
+ case EVENT_SUMMONED_1:
+ me->AddAura(SPELL_REND_MOUNTS, me);
+ if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 40.0f))
+ portcullis->UseDoorOrButton();
+ if (Creature* victor = me->FindNearestCreature(NPC_LORD_VICTOR_NEFARIUS, 75.0f, true))
+ victor->AI()->SetData(1, 1);
+ events.ScheduleEvent(EVENT_SUMMONED_2, 2s);
break;
- case EVENT_FREEZE:
- DoCast(me, SPELL_FREEZE);
- events.ScheduleEvent(EVENT_FREEZE, 10s, 16s);
- break;
- case EVENT_FLAME_BREATH:
- DoCast(me, SPELL_FLAMEBREATH);
- events.ScheduleEvent(EVENT_FLAME_BREATH, 10s, 16s);
- break;
- case EVENT_KNOCK_AWAY:
- DoCastVictim(SPELL_KNOCK_AWAY);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 14s, 20s);
+ case EVENT_SUMMONED_2:
+ me->GetMotionMaster()->MovePath(GYTH_PATH_1, false);
break;
default:
break;
}
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
}
- DoMeleeAttackIfReady();
+ return;
}
- };
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetBlackrockSpireAI<boss_gythAI>(creature);
+ events.Update(diff);
+
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_CORROSIVE_ACID:
+ DoCast(me, SPELL_CORROSIVE_ACID);
+ events.ScheduleEvent(EVENT_CORROSIVE_ACID, 10s, 16s);
+ break;
+ case EVENT_FREEZE:
+ DoCast(me, SPELL_FREEZE);
+ events.ScheduleEvent(EVENT_FREEZE, 10s, 16s);
+ break;
+ case EVENT_FLAME_BREATH:
+ DoCast(me, SPELL_FLAMEBREATH);
+ events.ScheduleEvent(EVENT_FLAME_BREATH, 10s, 16s);
+ break;
+ case EVENT_KNOCK_AWAY:
+ DoCastVictim(SPELL_KNOCK_AWAY);
+ events.ScheduleEvent(EVENT_KNOCK_AWAY, 14s, 20s);
+ break;
+ default:
+ break;
+ }
+
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+ }
+ DoMeleeAttackIfReady();
}
};
void AddSC_boss_gyth()
{
- new boss_gyth();
+ RegisterBlackrockSpireCreatureAI(boss_gyth);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp
index 40b1a071382..e53093eb601 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp
@@ -38,85 +38,74 @@ enum Events
const Position SummonLocation = { -167.9561f, -411.7844f, 76.23057f, 1.53589f };
-class boss_halycon : public CreatureScript
+struct boss_halycon : public BossAI
{
-public:
- boss_halycon() : CreatureScript("boss_halycon") { }
-
- struct boss_halyconAI : public BossAI
+ boss_halycon(Creature* creature) : BossAI(creature, DATA_HALYCON)
{
- boss_halyconAI(Creature* creature) : BossAI(creature, DATA_HALYCON)
- {
- Initialize();
- }
+ Initialize();
+ }
- void Initialize()
- {
- Summoned = false;
- }
+ void Initialize()
+ {
+ Summoned = false;
+ }
- void Reset() override
- {
- _Reset();
- Initialize();
- }
+ void Reset() override
+ {
+ _Reset();
+ Initialize();
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_REND, 17s, 20s);
- events.ScheduleEvent(EVENT_THRASH, 10s, 12s);
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_REND, 17s, 20s);
+ events.ScheduleEvent(EVENT_THRASH, 10s, 12s);
+ }
- void JustDied(Unit* /*killer*/) override
- {
- me->SummonCreature(NPC_GIZRUL_THE_SLAVENER, SummonLocation, TEMPSUMMON_TIMED_DESPAWN, 5min);
- Talk(EMOTE_DEATH);
+ void JustDied(Unit* /*killer*/) override
+ {
+ me->SummonCreature(NPC_GIZRUL_THE_SLAVENER, SummonLocation, TEMPSUMMON_TIMED_DESPAWN, 5min);
+ Talk(EMOTE_DEATH);
- Summoned = true;
- }
+ Summoned = true;
+ }
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- events.Update(diff);
+ events.Update(diff);
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_REND:
- DoCastVictim(SPELL_REND);
- events.ScheduleEvent(EVENT_REND, 8s, 10s);
- break;
- case EVENT_THRASH:
- DoCast(me, SPELL_THRASH);
- break;
- default:
- break;
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ case EVENT_REND:
+ DoCastVictim(SPELL_REND);
+ events.ScheduleEvent(EVENT_REND, 8s, 10s);
+ break;
+ case EVENT_THRASH:
+ DoCast(me, SPELL_THRASH);
+ break;
+ default:
+ break;
}
- DoMeleeAttackIfReady();
- }
- private:
- bool Summoned;
- };
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetBlackrockSpireAI<boss_halyconAI>(creature);
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+ }
+ DoMeleeAttackIfReady();
}
+ private:
+ bool Summoned;
};
void AddSC_boss_halycon()
{
- new boss_halycon();
+ RegisterBlackrockSpireCreatureAI(boss_halycon);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp
index a8753a17c5c..05f0502ec42 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp
@@ -31,73 +31,61 @@ enum Events
EVENT_KNOCK_AWAY = 2
};
-class boss_highlord_omokk : public CreatureScript
+struct boss_highlord_omokk : public BossAI
{
-public:
- boss_highlord_omokk() : CreatureScript("boss_highlord_omokk") { }
+ boss_highlord_omokk(Creature* creature) : BossAI(creature, DATA_HIGHLORD_OMOKK) { }
- CreatureAI* GetAI(Creature* creature) const override
+ void Reset() override
{
- return GetBlackrockSpireAI<boss_highlordomokkAI>(creature);
+ _Reset();
}
- struct boss_highlordomokkAI : public BossAI
+ void JustEngagedWith(Unit* who) override
{
- boss_highlordomokkAI(Creature* creature) : BossAI(creature, DATA_HIGHLORD_OMOKK) { }
+ BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_FRENZY, 20s);
+ events.ScheduleEvent(EVENT_KNOCK_AWAY, 18s);
+ }
- void Reset() override
- {
- _Reset();
- }
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_FRENZY, 20s);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 18s);
- }
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- }
+ events.Update(diff);
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- events.Update(diff);
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_FRENZY:
+ DoCastVictim(SPELL_FRENZY);
+ events.ScheduleEvent(EVENT_FRENZY, 1min);
+ break;
+ case EVENT_KNOCK_AWAY:
+ DoCastVictim(SPELL_KNOCK_AWAY);
+ events.ScheduleEvent(EVENT_KNOCK_AWAY, 12s);
+ break;
+ default:
+ break;
+ }
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_FRENZY:
- DoCastVictim(SPELL_FRENZY);
- events.ScheduleEvent(EVENT_FRENZY, 1min);
- break;
- case EVENT_KNOCK_AWAY:
- DoCastVictim(SPELL_KNOCK_AWAY);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 12s);
- break;
- default:
- break;
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
- }
- DoMeleeAttackIfReady();
}
- };
-
+ DoMeleeAttackIfReady();
+ }
};
void AddSC_boss_highlordomokk()
{
- new boss_highlord_omokk();
+ RegisterBlackrockSpireCreatureAI(boss_highlord_omokk);
}