mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 09:17:18 +00:00
refactor(Scripts/TheNexus): Update Command Kolurg script (#20783)
This commit is contained in:
@@ -27,15 +27,6 @@ enum Spells
|
||||
SPELL_WHIRLWIND = 38618
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_BATTLE_SHOUT = 1,
|
||||
EVENT_FRIGHTENING_SHOUT = 2,
|
||||
EVENT_WHIRLWIND = 3,
|
||||
EVENT_COMMANDER_CHARGE = 4,
|
||||
EVENT_KILL_TALK = 5
|
||||
};
|
||||
|
||||
enum Says
|
||||
{
|
||||
SAY_AGGRO = 0,
|
||||
@@ -45,32 +36,40 @@ enum Says
|
||||
|
||||
struct boss_commander_stoutbeard : public BossAI
|
||||
{
|
||||
boss_commander_stoutbeard(Creature* creature) : BossAI(creature, DATA_COMMANDER_EVENT) {}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
BossAI::Reset();
|
||||
}
|
||||
boss_commander_stoutbeard(Creature* creature) : BossAI(creature, DATA_COMMANDER_EVENT) { }
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
{
|
||||
BossAI::JustEngagedWith(who);
|
||||
Talk(SAY_AGGRO);
|
||||
|
||||
events.ScheduleEvent(EVENT_BATTLE_SHOUT, 0ms);
|
||||
events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, 10s);
|
||||
events.ScheduleEvent(EVENT_WHIRLWIND, 15s);
|
||||
events.ScheduleEvent(EVENT_COMMANDER_CHARGE, 1s);
|
||||
me->RemoveAllAuras();
|
||||
|
||||
ScheduleTimedEvent(1s, [&]
|
||||
{
|
||||
DoCastSelf(SPELL_BATTLE_SHOUT, true);
|
||||
}, 2min);
|
||||
|
||||
ScheduleTimedEvent(10s, [&]
|
||||
{
|
||||
DoCastVictim(SPELL_FRIGHTENING_SHOUT);
|
||||
}, 15s, 20s);
|
||||
|
||||
ScheduleTimedEvent(15s, [&]
|
||||
{
|
||||
DoCastAOE(SPELL_WHIRLWIND);
|
||||
}, 16s);
|
||||
|
||||
ScheduleTimedEvent(1s, [&]
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 25.0f))
|
||||
DoCast(target, SPELL_CHARGE);
|
||||
}, 20s);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit*) override
|
||||
{
|
||||
if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
|
||||
{
|
||||
Talk(SAY_KILL);
|
||||
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
|
||||
}
|
||||
Talk(SAY_KILL);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
@@ -78,39 +77,6 @@ struct boss_commander_stoutbeard : public BossAI
|
||||
BossAI::JustDied(killer);
|
||||
Talk(SAY_DEATH);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_BATTLE_SHOUT:
|
||||
me->CastSpell(me, SPELL_BATTLE_SHOUT, true);
|
||||
events.ScheduleEvent(EVENT_BATTLE_SHOUT, 2min);
|
||||
break;
|
||||
case EVENT_FRIGHTENING_SHOUT:
|
||||
me->CastSpell(me->GetVictim(), SPELL_FRIGHTENING_SHOUT, false);
|
||||
events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, 15s, 20s);
|
||||
break;
|
||||
case EVENT_WHIRLWIND:
|
||||
me->CastSpell(me, SPELL_WHIRLWIND, false);
|
||||
events.ScheduleEvent(EVENT_WHIRLWIND, 16s);
|
||||
break;
|
||||
case EVENT_COMMANDER_CHARGE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 25.0f))
|
||||
me->CastSpell(target, SPELL_CHARGE, false);
|
||||
events.ScheduleEvent(EVENT_COMMANDER_CHARGE, 20s);
|
||||
break;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_commander_stoutbeard()
|
||||
|
||||
Reference in New Issue
Block a user