From 0e389fa3ea0f839f559cbbda157411f635086f51 Mon Sep 17 00:00:00 2001 From: offl <11556157+offl@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:37:56 +0300 Subject: Scripts/Gundrak: Update Eck to new model (#26435) (cherry picked from commit ebf05f1c4ecd1302253a5e166fef17f0e3a846aa) --- src/server/scripts/Northrend/Gundrak/boss_eck.cpp | 127 ++++++++++------------ 1 file changed, 58 insertions(+), 69 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index a0a5646993a..b4d1b3ecd7d 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -41,85 +41,74 @@ enum Events EVENT_BERSERK }; -class boss_eck : public CreatureScript +struct boss_eck : public BossAI { - public: - boss_eck() : CreatureScript("boss_eck") { } + boss_eck(Creature* creature) : BossAI(creature, DATA_ECK_THE_FEROCIOUS) + { + Initialize(); + Talk(EMOTE_SPAWN); + } - struct boss_eckAI : public BossAI - { - boss_eckAI(Creature* creature) : BossAI(creature, DATA_ECK_THE_FEROCIOUS) - { - Initialize(); - Talk(EMOTE_SPAWN); - } - - void Initialize() - { - _berserk = false; - } - - void Reset() override - { - _Reset(); - Initialize(); - } - - void JustEngagedWith(Unit* who) override - { - BossAI::JustEngagedWith(who); - events.ScheduleEvent(EVENT_BITE, 5s); - events.ScheduleEvent(EVENT_SPIT, 10s); - events.ScheduleEvent(EVENT_SPRING, 8s); - events.ScheduleEvent(EVENT_BERSERK, 60s, 90s); // 60-90 secs according to wowwiki - } + void Initialize() + { + _berserk = false; + } - void DamageTaken(Unit* /*attacker*/, uint32& damage) override - { - if (!_berserk && me->HealthBelowPctDamaged(20, damage)) - { - events.RescheduleEvent(EVENT_BERSERK, 1s); - _berserk = true; - } - } + void Reset() override + { + _Reset(); + Initialize(); + } - void ExecuteEvent(uint32 eventId) override - { - switch (eventId) - { - case EVENT_BITE: - DoCastVictim(SPELL_ECK_BITE); - events.ScheduleEvent(EVENT_BITE, 8s, 12s); - break; - case EVENT_SPIT: - DoCastVictim(SPELL_ECK_SPIT); - events.ScheduleEvent(EVENT_SPIT, 6s, 14s); - break; - case EVENT_SPRING: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 35.0f, true)) - DoCast(target, RAND(SPELL_ECK_SPRING_1, SPELL_ECK_SPRING_2)); - events.ScheduleEvent(EVENT_SPRING, 5s, 10s); - break; - case EVENT_BERSERK: - DoCast(me, SPELL_ECK_BERSERK); - _berserk = true; - break; - default: - break; - } - } + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + events.ScheduleEvent(EVENT_BITE, 5s); + events.ScheduleEvent(EVENT_SPIT, 10s); + events.ScheduleEvent(EVENT_SPRING, 8s); + events.ScheduleEvent(EVENT_BERSERK, 60s, 90s); // 60-90 secs according to wowwiki + } - private: - bool _berserk; - }; + void DamageTaken(Unit* /*attacker*/, uint32& damage) override + { + if (!_berserk && me->HealthBelowPctDamaged(20, damage)) + { + events.RescheduleEvent(EVENT_BERSERK, 1s); + _berserk = true; + } + } - CreatureAI* GetAI(Creature* creature) const override + void ExecuteEvent(uint32 eventId) override + { + switch (eventId) { - return GetGundrakAI(creature); + case EVENT_BITE: + DoCastVictim(SPELL_ECK_BITE); + events.ScheduleEvent(EVENT_BITE, 8s, 12s); + break; + case EVENT_SPIT: + DoCastVictim(SPELL_ECK_SPIT); + events.ScheduleEvent(EVENT_SPIT, 6s, 14s); + break; + case EVENT_SPRING: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 35.0f, true)) + DoCast(target, RAND(SPELL_ECK_SPRING_1, SPELL_ECK_SPRING_2)); + events.ScheduleEvent(EVENT_SPRING, 5s, 10s); + break; + case EVENT_BERSERK: + DoCast(me, SPELL_ECK_BERSERK); + _berserk = true; + break; + default: + break; } + } + +private: + bool _berserk; }; void AddSC_boss_eck() { - new boss_eck(); + RegisterGundrakCreatureAI(boss_eck); } -- cgit v1.2.3