diff options
author | offl <11556157+offl@users.noreply.github.com> | 2021-04-20 17:37:56 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-20 17:37:56 +0300 |
commit | ebf05f1c4ecd1302253a5e166fef17f0e3a846aa (patch) | |
tree | cdc73ad0730f27ef93ac0068ce18c52523558e24 /src | |
parent | 6298af57d958bcebf1d0b13c4607bb13b02dd61d (diff) |
Scripts/Gundrak: Update Eck to new model (#26435)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/Gundrak/boss_eck.cpp | 127 |
1 files changed, 58 insertions, 69 deletions
diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index 30244f2007e..ba6e4ca0828 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<boss_eckAI>(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); } |