mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-30 17:13:47 +00:00
refactor(Scripts/TheNexus): Update Command Kolurg script (#20783)
This commit is contained in:
@@ -27,15 +27,6 @@ enum Spells
|
|||||||
SPELL_WHIRLWIND = 38618
|
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
|
enum Says
|
||||||
{
|
{
|
||||||
SAY_AGGRO = 0,
|
SAY_AGGRO = 0,
|
||||||
@@ -45,32 +36,40 @@ enum Says
|
|||||||
|
|
||||||
struct boss_commander_stoutbeard : public BossAI
|
struct boss_commander_stoutbeard : public BossAI
|
||||||
{
|
{
|
||||||
boss_commander_stoutbeard(Creature* creature) : BossAI(creature, DATA_COMMANDER_EVENT) {}
|
boss_commander_stoutbeard(Creature* creature) : BossAI(creature, DATA_COMMANDER_EVENT) { }
|
||||||
|
|
||||||
void Reset() override
|
|
||||||
{
|
|
||||||
BossAI::Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
void JustEngagedWith(Unit* who) override
|
void JustEngagedWith(Unit* who) override
|
||||||
{
|
{
|
||||||
BossAI::JustEngagedWith(who);
|
BossAI::JustEngagedWith(who);
|
||||||
Talk(SAY_AGGRO);
|
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();
|
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
|
void KilledUnit(Unit*) override
|
||||||
{
|
{
|
||||||
if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
|
Talk(SAY_KILL);
|
||||||
{
|
|
||||||
Talk(SAY_KILL);
|
|
||||||
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* killer) override
|
void JustDied(Unit* killer) override
|
||||||
@@ -78,39 +77,6 @@ struct boss_commander_stoutbeard : public BossAI
|
|||||||
BossAI::JustDied(killer);
|
BossAI::JustDied(killer);
|
||||||
Talk(SAY_DEATH);
|
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()
|
void AddSC_boss_commander_stoutbeard()
|
||||||
|
|||||||
Reference in New Issue
Block a user