aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-04-20 17:37:56 +0300
committerShauren <shauren.trinity@gmail.com>2022-03-08 23:27:17 +0100
commit0e389fa3ea0f839f559cbbda157411f635086f51 (patch)
tree23d33e05b7bf1b7d4320b5e62349b5bbae501e4f /src
parentd719b081a6bf79a3ddf61ef73f6ce74b4bfc87f1 (diff)
Scripts/Gundrak: Update Eck to new model (#26435)
(cherry picked from commit ebf05f1c4ecd1302253a5e166fef17f0e3a846aa)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_eck.cpp127
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 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<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);
}