mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-25 19:31:59 +01:00
Scripts/Gundrak: Update Eck to new model (#26435)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user