diff options
author | Peter Keresztes Schmidt <carbenium@outlook.com> | 2020-08-01 23:12:54 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-01-24 21:54:10 +0100 |
commit | 0c65abe7a03dd8e51268829ac85e8b33334741f1 (patch) | |
tree | 702b0928bde44019146c32922a290e24e3c89445 /src | |
parent | 7e0fb710adeb692dc5cc28c03e83e08bc77fd67f (diff) |
Scripts/MoltenCore: Update Golemagg encounter to current coding standards (#25183)
* Scripts/MoltenCore: Update Golemagg to current coding standards
* no functional changes
* Scripts/MoltenCore: Update Core Ranger to current coding standards
* no functional changes
(cherry picked from commit c88234727b47c037557eba6db8ae8ef1dee4eed7)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp | 209 |
1 files changed, 91 insertions, 118 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp index c45e3e8eb8e..b7661629ae5 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp @@ -52,148 +52,121 @@ enum Events EVENT_EARTHQUAKE = 2, }; -class boss_golemagg : public CreatureScript +struct boss_golemagg : public BossAI { - public: - boss_golemagg() : CreatureScript("boss_golemagg") { } + boss_golemagg(Creature* creature) : BossAI(creature, BOSS_GOLEMAGG_THE_INCINERATOR) { } - struct boss_golemaggAI : public BossAI - { - boss_golemaggAI(Creature* creature) : BossAI(creature, BOSS_GOLEMAGG_THE_INCINERATOR) - { - } + void Reset() override + { + BossAI::Reset(); + DoCast(me, SPELL_MAGMASPLASH, true); + } - void Reset() override - { - BossAI::Reset(); - DoCast(me, SPELL_MAGMASPLASH, true); - } + void JustEngagedWith(Unit* victim) override + { + BossAI::JustEngagedWith(victim); + events.ScheduleEvent(EVENT_PYROBLAST, 7s); + } - void JustEngagedWith(Unit* victim) override - { - BossAI::JustEngagedWith(victim); - events.ScheduleEvent(EVENT_PYROBLAST, 7s); - } + void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override + { + if (!HealthBelowPct(10) || me->HasAura(SPELL_ENRAGE)) + return; - void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override - { - if (!HealthBelowPct(10) || me->HasAura(SPELL_ENRAGE)) - return; + DoCast(me, SPELL_ENRAGE, true); + events.ScheduleEvent(EVENT_EARTHQUAKE, 3s); + } - DoCast(me, SPELL_ENRAGE, true); - events.ScheduleEvent(EVENT_EARTHQUAKE, 3s); - } + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); - void UpdateAI(uint32 diff) override + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + 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_PYROBLAST: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - DoCast(target, SPELL_PYROBLAST); - events.ScheduleEvent(EVENT_PYROBLAST, 7s); - break; - case EVENT_EARTHQUAKE: - DoCastVictim(SPELL_EARTHQUAKE); - events.ScheduleEvent(EVENT_EARTHQUAKE, 3s); - break; - default: - break; - } - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - } - - DoMeleeAttackIfReady(); + case EVENT_PYROBLAST: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) + DoCast(target, SPELL_PYROBLAST); + events.ScheduleEvent(EVENT_PYROBLAST, 7s); + break; + case EVENT_EARTHQUAKE: + DoCastVictim(SPELL_EARTHQUAKE); + events.ScheduleEvent(EVENT_EARTHQUAKE, 3s); + break; + default: + break; } - }; - CreatureAI* GetAI(Creature* creature) const override - { - return GetMoltenCoreAI<boss_golemaggAI>(creature); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; } + + DoMeleeAttackIfReady(); + } }; -class npc_core_rager : public CreatureScript +struct npc_core_rager : public ScriptedAI { - public: - npc_core_rager() : CreatureScript("npc_core_rager") { } - - struct npc_core_ragerAI : public ScriptedAI + npc_core_rager(Creature* creature) : ScriptedAI(creature) + { + _instance = creature->GetInstanceScript(); + } + + void Reset() override + { + _scheduler.CancelAll(); + } + + void JustEngagedWith(Unit* /*who*/) override + { + _scheduler.Schedule(7s, [this](TaskContext task) // These times are probably wrong { - npc_core_ragerAI(Creature* creature) : ScriptedAI(creature) - { - Initialize(); - instance = creature->GetInstanceScript(); - } - - void Initialize() - { - mangleTimer = 7 * IN_MILLISECONDS; // These times are probably wrong - } - - void Reset() override - { - Initialize(); - } + DoCastVictim(SPELL_MANGLE); + task.Repeat(10s); + }); + } - void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override - { - if (HealthAbovePct(50) || !instance) - return; - - if (Creature* pGolemagg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_GOLEMAGG_THE_INCINERATOR))) - { - if (pGolemagg->IsAlive()) - { - me->AddAura(SPELL_GOLEMAGG_TRUST, me); - Talk(EMOTE_LOWHP); - me->SetFullHealth(); - } - } - } + void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override + { + if (HealthAbovePct(50) || !_instance) + return; - void UpdateAI(uint32 diff) override + if (Creature* pGolemagg = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_GOLEMAGG_THE_INCINERATOR))) + { + if (pGolemagg->IsAlive()) { - if (!UpdateVictim()) - return; - - // Mangle - if (mangleTimer <= diff) - { - DoCastVictim(SPELL_MANGLE); - mangleTimer = 10*IN_MILLISECONDS; - } - else - mangleTimer -= diff; - - DoMeleeAttackIfReady(); + me->AddAura(SPELL_GOLEMAGG_TRUST, me); + Talk(EMOTE_LOWHP); + me->SetFullHealth(); } + } + } - private: - InstanceScript* instance; - uint32 mangleTimer; - }; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - CreatureAI* GetAI(Creature* creature) const override + _scheduler.Update(diff, [this] { - return GetMoltenCoreAI<npc_core_ragerAI>(creature); - } + DoMeleeAttackIfReady(); + }); + } + +private: + InstanceScript* _instance; + TaskScheduler _scheduler; }; void AddSC_boss_golemagg() { - new boss_golemagg(); - new npc_core_rager(); + RegisterMoltenCoreCreatureAI(boss_golemagg); + RegisterMoltenCoreCreatureAI(npc_core_rager); } |