aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-06-07 00:25:46 +0300
committerGitHub <noreply@github.com>2021-06-07 00:25:46 +0300
commit57d369dd6a58632679cd6efc2cfca4600c4ad9bb (patch)
treef8b8d3dcbd03bcb26935b0efe0cb1eadbb326a46 /src
parent483f24c5ed8238a9b3a1747f49191b7ba6f3c90e (diff)
Scripts/Instances: Update Slave Pens scripts to new register model (#26568)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp41
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp149
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp123
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp153
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h1
5 files changed, 212 insertions, 255 deletions
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
index 5b3cd1f7523..790d49e14ad 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
@@ -591,37 +591,26 @@ private:
uint8 _mySpot;
};
-class go_ahune_ice_stone : public GameObjectScript
+struct go_ahune_ice_stone : public GameObjectAI
{
-public:
- go_ahune_ice_stone() : GameObjectScript("go_ahune_ice_stone") { }
+ go_ahune_ice_stone(GameObject* go) : GameObjectAI(go), _instance(go->GetInstanceScript()) { }
- struct go_ahune_ice_stoneAI : public GameObjectAI
+ bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override
{
- go_ahune_ice_stoneAI(GameObject* go) : GameObjectAI(go), _instance(go->GetInstanceScript()) { }
+ ClearGossipMenuFor(player);
- bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override
- {
- ClearGossipMenuFor(player);
-
- if (Creature* ahuneBunny = _instance->GetCreature(DATA_AHUNE_BUNNY))
- ahuneBunny->AI()->DoAction(ACTION_START_EVENT);
-
- if (Creature* luma = _instance->GetCreature(DATA_LUMA_SKYMOTHER))
- luma->CastSpell(player, SPELL_SUMMONING_RHYME_AURA, true);
- CloseGossipMenuFor(player);
- me->Delete();
- return true;
- }
-
- private:
- InstanceScript* _instance;
- };
+ if (Creature* ahuneBunny = _instance->GetCreature(DATA_AHUNE_BUNNY))
+ ahuneBunny->AI()->DoAction(ACTION_START_EVENT);
- GameObjectAI* GetAI(GameObject* go) const override
- {
- return GetSlavePensAI<go_ahune_ice_stoneAI>(go);
+ if (Creature* luma = _instance->GetCreature(DATA_LUMA_SKYMOTHER))
+ luma->CastSpell(player, SPELL_SUMMONING_RHYME_AURA, true);
+ CloseGossipMenuFor(player);
+ me->Delete();
+ return true;
}
+
+private:
+ InstanceScript* _instance;
};
// 46430 - Synch Health
@@ -870,7 +859,7 @@ void AddSC_boss_ahune()
RegisterSlavePensCreatureAI(npc_frozen_core);
RegisterSlavePensCreatureAI(npc_earthen_ring_flamecaller);
RegisterSlavePensCreatureAI(npc_ahune_bunny);
- new go_ahune_ice_stone();
+ RegisterSlavePensGameObjectAI(go_ahune_ice_stone);
RegisterSpellScript(spell_ahune_synch_health);
RegisterSpellScript(spell_summoning_rhyme_aura);
RegisterSpellScript(spell_summon_ice_spear_delayer);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp
index d7acc1b12a4..715472ca760 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp
@@ -51,94 +51,83 @@ enum Events
EVENT_LIGHTNING_BOLT = 5
};
-class boss_mennu_the_betrayer : public CreatureScript
+struct boss_mennu_the_betrayer : public BossAI
{
- public:
- boss_mennu_the_betrayer() : CreatureScript("boss_mennu_the_betrayer") { }
-
- struct boss_mennu_the_betrayerAI : public BossAI
+ boss_mennu_the_betrayer(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER) { }
+
+ void Reset() override
+ {
+ _Reset();
+ }
+
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ Talk(SAY_DEATH);
+ }
+
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30s);
+ events.ScheduleEvent(EVENT_TAINTED_EARTHGRAB_TOTEM, 20s);
+ events.ScheduleEvent(EVENT_CORRUPTED_NOVA_TOTEM, 1min);
+ events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, 14s, 25s);
+ events.ScheduleEvent(EVENT_LIGHTNING_BOLT, 14s, 19s);
+ Talk(SAY_AGGRO);
+ }
+
+ void KilledUnit(Unit* /*victim*/) override
+ {
+ Talk(SAY_SLAY);
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
+
+ events.Update(diff);
+
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+
+ while (uint32 eventId = events.ExecuteEvent())
{
- boss_mennu_the_betrayerAI(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER) { }
-
- void Reset() override
- {
- _Reset();
- }
-
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- Talk(SAY_DEATH);
- }
-
- void JustEngagedWith(Unit* who) override
+ switch (eventId)
{
- BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30s);
- events.ScheduleEvent(EVENT_TAINTED_EARTHGRAB_TOTEM, 20s);
- events.ScheduleEvent(EVENT_CORRUPTED_NOVA_TOTEM, 1min);
- events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, 14s, 25s);
- events.ScheduleEvent(EVENT_LIGHTNING_BOLT, 14s, 19s);
- Talk(SAY_AGGRO);
+ case EVENT_TAINTED_STONESKIN_TOTEM:
+ if (HealthBelowPct(100))
+ DoCast(me, SPELL_TAINTED_STONESKIN_TOTEM);
+ events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30s);
+ break;
+ case EVENT_TAINTED_EARTHGRAB_TOTEM:
+ DoCast(me, SPELL_TAINTED_EARTHGRAB_TOTEM);
+ break;
+ case EVENT_CORRUPTED_NOVA_TOTEM:
+ DoCast(me, SPELL_CORRUPTED_NOVA_TOTEM);
+ break;
+ case EVENT_MENNUS_HEALING_WARD:
+ DoCast(me, SPELL_MENNUS_HEALING_WARD);
+ events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, 14s, 25s);
+ break;
+ case EVENT_LIGHTNING_BOLT:
+ DoCastVictim(SPELL_LIGHTNING_BOLT, true);
+ events.ScheduleEvent(EVENT_LIGHTNING_BOLT, 14s, 25s);
+ break;
+ default:
+ break;
}
- void KilledUnit(Unit* /*victim*/) override
- {
- Talk(SAY_SLAY);
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_TAINTED_STONESKIN_TOTEM:
- if (HealthBelowPct(100))
- DoCast(me, SPELL_TAINTED_STONESKIN_TOTEM);
- events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30s);
- break;
- case EVENT_TAINTED_EARTHGRAB_TOTEM:
- DoCast(me, SPELL_TAINTED_EARTHGRAB_TOTEM);
- break;
- case EVENT_CORRUPTED_NOVA_TOTEM:
- DoCast(me, SPELL_CORRUPTED_NOVA_TOTEM);
- break;
- case EVENT_MENNUS_HEALING_WARD:
- DoCast(me, SPELL_MENNUS_HEALING_WARD);
- events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, 14s, 25s);
- break;
- case EVENT_LIGHTNING_BOLT:
- DoCastVictim(SPELL_LIGHTNING_BOLT, true);
- events.ScheduleEvent(EVENT_LIGHTNING_BOLT, 14s, 25s);
- break;
- default:
- break;
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
- }
-
- DoMeleeAttackIfReady();
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetSlavePensAI<boss_mennu_the_betrayerAI>(creature);
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
}
+
+ DoMeleeAttackIfReady();
+ }
};
void AddSC_boss_mennu_the_betrayer()
{
- new boss_mennu_the_betrayer();
+ RegisterSlavePensCreatureAI(boss_mennu_the_betrayer);
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp
index 195cfb61883..197d2a73332 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp
@@ -42,86 +42,75 @@ enum Events
EVENT_POISON_BOLT_VOLLEY = 4
};
-class boss_quagmirran : public CreatureScript
+struct boss_quagmirran : public BossAI
{
- public:
- boss_quagmirran() : CreatureScript("boss_quagmirran") { }
+ boss_quagmirran(Creature* creature) : BossAI(creature, DATA_QUAGMIRRAN) { }
- struct boss_quagmirranAI : public BossAI
- {
- boss_quagmirranAI(Creature* creature) : BossAI(creature, DATA_QUAGMIRRAN) { }
+ void Reset() override
+ {
+ _Reset();
+ }
- void Reset() override
- {
- _Reset();
- }
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ }
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_ACID_SPRAY, 25s);
+ events.ScheduleEvent(EVENT_CLEAVE, 9s);
+ events.ScheduleEvent(EVENT_UPPERCUT, 20s);
+ events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 31s);
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_ACID_SPRAY, 25s);
- events.ScheduleEvent(EVENT_CLEAVE, 9s);
- events.ScheduleEvent(EVENT_UPPERCUT, 20s);
- events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 31s);
- }
+ void KilledUnit(Unit* /*victim*/) override { }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
+
+ events.Update(diff);
- void KilledUnit(Unit* /*victim*/) override { }
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- void UpdateAI(uint32 diff) override
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
{
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_ACID_SPRAY:
- DoCastAOE(SPELL_ACID_SPRAY);
- events.ScheduleEvent(EVENT_ACID_SPRAY, 20s, 25s);
- break;
- case EVENT_CLEAVE:
- DoCastVictim(SPELL_CLEAVE, true);
- events.ScheduleEvent(EVENT_CLEAVE, 18s, 34s);
- break;
- case EVENT_UPPERCUT:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 10.0f, true))
- DoCast(target, SPELL_UPPERCUT);
- events.ScheduleEvent(EVENT_UPPERCUT, 22s);
- break;
- case EVENT_POISON_BOLT_VOLLEY:
- DoCast(me, SPELL_POISON_BOLT_VOLLEY);
- events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 24s);
- break;
- default:
- break;
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
- }
-
- DoMeleeAttackIfReady();
+ case EVENT_ACID_SPRAY:
+ DoCastAOE(SPELL_ACID_SPRAY);
+ events.ScheduleEvent(EVENT_ACID_SPRAY, 20s, 25s);
+ break;
+ case EVENT_CLEAVE:
+ DoCastVictim(SPELL_CLEAVE, true);
+ events.ScheduleEvent(EVENT_CLEAVE, 18s, 34s);
+ break;
+ case EVENT_UPPERCUT:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 10.0f, true))
+ DoCast(target, SPELL_UPPERCUT);
+ events.ScheduleEvent(EVENT_UPPERCUT, 22s);
+ break;
+ case EVENT_POISON_BOLT_VOLLEY:
+ DoCast(me, SPELL_POISON_BOLT_VOLLEY);
+ events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 24s);
+ break;
+ default:
+ break;
}
- };
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetSlavePensAI<boss_quagmirranAI>(creature);
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
}
+
+ DoMeleeAttackIfReady();
+ }
};
void AddSC_boss_quagmirran()
{
- new boss_quagmirran();
+ RegisterSlavePensCreatureAI(boss_quagmirran);
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp
index 2603d809482..02cfb18bd55 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp
@@ -41,98 +41,87 @@ enum Events
EVENT_WATER_SPIT = 3
};
-class boss_rokmar_the_crackler : public CreatureScript
+struct boss_rokmar_the_crackler : public BossAI
{
- public:
- boss_rokmar_the_crackler() : CreatureScript("boss_rokmar_the_crackler") { }
-
- struct boss_rokmar_the_cracklerAI : public BossAI
+ boss_rokmar_the_crackler(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ rokmarFrenzy = false;
+ }
+
+ void Reset() override
+ {
+ _Reset();
+ Initialize();
+ }
+
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ }
+
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 10s);
+ events.ScheduleEvent(EVENT_ENSNARING_MOSS, 20s);
+ events.ScheduleEvent(EVENT_WATER_SPIT, 14s);
+ }
+
+ void KilledUnit(Unit* /*victim*/) override { }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
+
+ events.Update(diff);
+
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+
+ while (uint32 eventId = events.ExecuteEvent())
{
- boss_rokmar_the_cracklerAI(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER)
- {
- Initialize();
- }
-
- void Initialize()
- {
- rokmarFrenzy = false;
- }
-
- void Reset() override
- {
- _Reset();
- Initialize();
- }
-
- void JustDied(Unit* /*killer*/) override
+ switch (eventId)
{
- _JustDied();
+ case EVENT_GRIEVOUS_WOUND:
+ DoCastVictim(SPELL_GRIEVOUS_WOUND, true);
+ events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 20s, 30s);
+ break;
+ case EVENT_ENSNARING_MOSS:
+ DoCastAOE(SPELL_ENSNARING_MOSS);
+ events.ScheduleEvent(EVENT_ENSNARING_MOSS, 20s, 30s);
+ break;
+ case EVENT_WATER_SPIT:
+ DoCastAOE(SPELL_WATER_SPIT);
+ events.ScheduleEvent(EVENT_WATER_SPIT, 14s, 18s);
+ break;
+ default:
+ break;
}
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 10s);
- events.ScheduleEvent(EVENT_ENSNARING_MOSS, 20s);
- events.ScheduleEvent(EVENT_WATER_SPIT, 14s);
- }
-
- void KilledUnit(Unit* /*victim*/) override { }
-
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_GRIEVOUS_WOUND:
- DoCastVictim(SPELL_GRIEVOUS_WOUND, true);
- events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 20s, 30s);
- break;
- case EVENT_ENSNARING_MOSS:
- DoCastAOE(SPELL_ENSNARING_MOSS);
- events.ScheduleEvent(EVENT_ENSNARING_MOSS, 20s, 30s);
- break;
- case EVENT_WATER_SPIT:
- DoCastAOE(SPELL_WATER_SPIT);
- events.ScheduleEvent(EVENT_WATER_SPIT, 14s, 18s);
- break;
- default:
- break;
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
- }
-
- if (HealthBelowPct(10) && !rokmarFrenzy)
- {
- DoCast(me, SPELL_FRENZY);
- rokmarFrenzy = true;
- }
-
- DoMeleeAttackIfReady();
- }
-
- private:
- bool rokmarFrenzy;
- };
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+ }
- CreatureAI* GetAI(Creature* creature) const override
+ if (HealthBelowPct(10) && !rokmarFrenzy)
{
- return GetSlavePensAI<boss_rokmar_the_cracklerAI>(creature);
+ DoCast(me, SPELL_FRENZY);
+ rokmarFrenzy = true;
}
+
+ DoMeleeAttackIfReady();
+ }
+
+private:
+ bool rokmarFrenzy;
};
void AddSC_boss_rokmar_the_crackler()
{
- new boss_rokmar_the_crackler();
+ RegisterSlavePensCreatureAI(boss_rokmar_the_crackler);
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h
index 8873a7b2355..41ce07342e0 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h
@@ -73,5 +73,6 @@ inline AI* GetSlavePensAI(T* obj)
}
#define RegisterSlavePensCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetSlavePensAI)
+#define RegisterSlavePensGameObjectAI(ai_name) RegisterGameObjectAIWithFactory(ai_name, GetSlavePensAI)
#endif // SLAVE_PENS_H