aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-04-15 15:11:59 +0300
committerGitHub <noreply@github.com>2021-04-15 14:11:59 +0200
commit3dd0a13a4c32213946b93aaf9b93d2fee6cddec6 (patch)
tree017059b6856167b5c2b17c1a1e4e6c77c83fda97
parent8afe80bce3567aa6fa1603bcbfb58ef44cc04b4d (diff)
Scripts/Utgarde Keep: Update Skarvald to new model (#26410)
Co-authored-by: offl <offl@users.noreply.github.com>
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp194
1 files changed, 86 insertions, 108 deletions
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
index 696c80126c5..f3b9fd377d6 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
@@ -168,135 +168,113 @@ struct generic_boss_controllerAI : public BossAI
bool IsInGhostForm;
};
-class boss_skarvald_the_constructor : public CreatureScript
+struct boss_skarvald_the_constructor : public generic_boss_controllerAI
{
- public:
- boss_skarvald_the_constructor() : CreatureScript("boss_skarvald_the_constructor") { }
-
- struct boss_skarvald_the_constructorAI : public generic_boss_controllerAI
- {
- boss_skarvald_the_constructorAI(Creature* creature) : generic_boss_controllerAI(creature)
- {
- OtherBossData = DATA_DALRONN;
- Enraged = false;
- }
-
- void Reset() override
- {
- Enraged = false;
- generic_boss_controllerAI::Reset();
- }
+ boss_skarvald_the_constructor(Creature* creature) : generic_boss_controllerAI(creature)
+ {
+ OtherBossData = DATA_DALRONN;
+ Enraged = false;
+ }
- void JustEngagedWith(Unit* who) override
- {
- generic_boss_controllerAI::JustEngagedWith(who);
+ void Reset() override
+ {
+ Enraged = false;
+ generic_boss_controllerAI::Reset();
+ }
- if (!IsInGhostForm)
- Talk(SAY_AGGRO);
+ void JustEngagedWith(Unit* who) override
+ {
+ generic_boss_controllerAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_SKARVALD_CHARGE, 5s);
- events.ScheduleEvent(EVENT_STONE_STRIKE, 10s);
- }
+ if (!IsInGhostForm)
+ Talk(SAY_AGGRO);
- void ExecuteEvent(uint32 eventId) override
- {
- switch (eventId)
- {
- case EVENT_SKARVALD_CHARGE:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, SkarvaldChargePredicate(me)))
- DoCast(target, SPELL_CHARGE);
- events.ScheduleEvent(EVENT_CHARGE, 5s, 10s);
- break;
- case EVENT_STONE_STRIKE:
- DoCastVictim(SPELL_STONE_STRIKE);
- events.ScheduleEvent(EVENT_STONE_STRIKE, 5s, 10s);
- break;
- default:
- generic_boss_controllerAI::ExecuteEvent(eventId);
- break;
- }
- }
+ events.ScheduleEvent(EVENT_SKARVALD_CHARGE, 5s);
+ events.ScheduleEvent(EVENT_STONE_STRIKE, 10s);
+ }
- void DamageTaken(Unit* /*attacker*/, uint32& damage) override
- {
- if (!Enraged && !IsInGhostForm && me->HealthBelowPctDamaged(15, damage))
- {
- Enraged = true;
- DoCast(me, SPELL_ENRAGE);
- }
- }
- private:
- bool Enraged;
- };
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
+ {
+ case EVENT_SKARVALD_CHARGE:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, SkarvaldChargePredicate(me)))
+ DoCast(target, SPELL_CHARGE);
+ events.ScheduleEvent(EVENT_CHARGE, 5s, 10s);
+ break;
+ case EVENT_STONE_STRIKE:
+ DoCastVictim(SPELL_STONE_STRIKE);
+ events.ScheduleEvent(EVENT_STONE_STRIKE, 5s, 10s);
+ break;
+ default:
+ generic_boss_controllerAI::ExecuteEvent(eventId);
+ break;
+ }
+ }
- CreatureAI* GetAI(Creature* creature) const override
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) override
+ {
+ if (!Enraged && !IsInGhostForm && me->HealthBelowPctDamaged(15, damage))
{
- return GetUtgardeKeepAI<boss_skarvald_the_constructorAI>(creature);
+ Enraged = true;
+ DoCast(me, SPELL_ENRAGE);
}
+ }
+ private:
+ bool Enraged;
};
-class boss_dalronn_the_controller : public CreatureScript
+struct boss_dalronn_the_controller : public generic_boss_controllerAI
{
- public:
- boss_dalronn_the_controller() : CreatureScript("boss_dalronn_the_controller") { }
-
- struct boss_dalronn_the_controllerAI : public generic_boss_controllerAI
- {
- boss_dalronn_the_controllerAI(Creature* creature) : generic_boss_controllerAI(creature)
- {
- OtherBossData = DATA_SKARVALD;
- }
-
- void JustEngagedWith(Unit* who) override
- {
- generic_boss_controllerAI::JustEngagedWith(who);
+ boss_dalronn_the_controller(Creature* creature) : generic_boss_controllerAI(creature)
+ {
+ OtherBossData = DATA_SKARVALD;
+ }
- events.ScheduleEvent(EVENT_SHADOW_BOLT, 1s);
- events.ScheduleEvent(EVENT_DEBILITATE, 5s);
+ void JustEngagedWith(Unit* who) override
+ {
+ generic_boss_controllerAI::JustEngagedWith(who);
- if (!IsInGhostForm)
- events.ScheduleEvent(EVENT_DELAYED_AGGRO_SAY, 5s);
+ events.ScheduleEvent(EVENT_SHADOW_BOLT, 1s);
+ events.ScheduleEvent(EVENT_DEBILITATE, 5s);
- if (IsHeroic())
- events.ScheduleEvent(EVENT_SUMMON_SKELETONS, 10s);
- }
+ if (!IsInGhostForm)
+ events.ScheduleEvent(EVENT_DELAYED_AGGRO_SAY, 5s);
- void ExecuteEvent(uint32 eventId) override
- {
- switch (eventId)
- {
- case EVENT_SHADOW_BOLT:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 45.0f, true))
- DoCast(target, SPELL_SHADOW_BOLT);
- events.ScheduleEvent(EVENT_SHADOW_BOLT, 2100ms); //give a 100ms pause to try cast other spells
- break;
- case EVENT_DEBILITATE:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
- DoCast(target, SPELL_DEBILITATE);
- events.ScheduleEvent(EVENT_DEBILITATE, 5s, 10s);
- break;
- case EVENT_SUMMON_SKELETONS:
- DoCast(me, SPELL_SUMMON_SKELETONS);
- events.ScheduleEvent(EVENT_SUMMON_SKELETONS, 10s, 30s);
- break;
- case EVENT_DELAYED_AGGRO_SAY:
- Talk(SAY_AGGRO);
- break;
- default:
- generic_boss_controllerAI::ExecuteEvent(eventId);
- break;
- }
- }
- };
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_SUMMON_SKELETONS, 10s);
+ }
- CreatureAI* GetAI(Creature* creature) const override
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
{
- return GetUtgardeKeepAI<boss_dalronn_the_controllerAI>(creature);
+ case EVENT_SHADOW_BOLT:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 45.0f, true))
+ DoCast(target, SPELL_SHADOW_BOLT);
+ events.ScheduleEvent(EVENT_SHADOW_BOLT, 2100ms); //give a 100ms pause to try cast other spells
+ break;
+ case EVENT_DEBILITATE:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
+ DoCast(target, SPELL_DEBILITATE);
+ events.ScheduleEvent(EVENT_DEBILITATE, 5s, 10s);
+ break;
+ case EVENT_SUMMON_SKELETONS:
+ DoCast(me, SPELL_SUMMON_SKELETONS);
+ events.ScheduleEvent(EVENT_SUMMON_SKELETONS, 10s, 30s);
+ break;
+ case EVENT_DELAYED_AGGRO_SAY:
+ Talk(SAY_AGGRO);
+ break;
+ default:
+ generic_boss_controllerAI::ExecuteEvent(eventId);
+ break;
}
+ }
};
void AddSC_boss_skarvald_dalronn()
{
- new boss_skarvald_the_constructor();
- new boss_dalronn_the_controller();
+ RegisterUtgardeKeepCreatureAI(boss_skarvald_the_constructor);
+ RegisterUtgardeKeepCreatureAI(boss_dalronn_the_controller);
}