Scripts/Gundrak: Update Eck to new model (#26435)

This commit is contained in:
offl
2021-04-20 17:37:56 +03:00
committed by GitHub
parent 6298af57d9
commit ebf05f1c4e

View File

@@ -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
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 DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
if (!_berserk && me->HealthBelowPctDamaged(20, damage))
{
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 DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
if (!_berserk && me->HealthBelowPctDamaged(20, damage))
{
events.RescheduleEvent(EVENT_BERSERK, 1s);
_berserk = true;
}
}
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;
}
}
private:
bool _berserk;
};
CreatureAI* GetAI(Creature* creature) const override
{
return GetGundrakAI<boss_eckAI>(creature);
events.RescheduleEvent(EVENT_BERSERK, 1s);
_berserk = true;
}
}
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;
}
}
private:
bool _berserk;
};
void AddSC_boss_eck()
{
new boss_eck();
RegisterGundrakCreatureAI(boss_eck);
}