diff options
author | offl <11556157+offl@users.noreply.github.com> | 2021-06-07 00:25:46 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-07 00:25:46 +0300 |
commit | 57d369dd6a58632679cd6efc2cfca4600c4ad9bb (patch) | |
tree | f8b8d3dcbd03bcb26935b0efe0cb1eadbb326a46 /src | |
parent | 483f24c5ed8238a9b3a1747f49191b7ba6f3c90e (diff) |
Scripts/Instances: Update Slave Pens scripts to new register model (#26568)
Diffstat (limited to 'src')
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 |