diff options
author | offl <11556157+offl@users.noreply.github.com> | 2021-04-20 17:34:47 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-20 17:34:47 +0300 |
commit | 055784d097435166d06dd75577f59024a90c6694 (patch) | |
tree | c77d5f5eeb78532b43ff463ae844fb4b7feee01a /src | |
parent | 463765ebaeba032fbb1aaac9dc67ff86c11c5cb4 (diff) |
Scripts/HoS: Update Maiden to new model (#26432)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp | 151 |
1 files changed, 70 insertions, 81 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp index 713356ae7dc..c651439bb15 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp @@ -49,103 +49,92 @@ enum Achievements ACHIEV_GOOD_GRIEF_START_EVENT = 20383, }; -class boss_maiden_of_grief : public CreatureScript +struct boss_maiden_of_grief : public BossAI { - public: - boss_maiden_of_grief() : CreatureScript("boss_maiden_of_grief") { } + boss_maiden_of_grief(Creature* creature) : BossAI(creature, DATA_MAIDEN_OF_GRIEF) { } - struct boss_maiden_of_griefAI : public BossAI - { - boss_maiden_of_griefAI(Creature* creature) : BossAI(creature, DATA_MAIDEN_OF_GRIEF) { } + void Reset() override + { + _Reset(); - void Reset() override - { - _Reset(); + if (IsHeroic()) + events.ScheduleEvent(EVENT_PARTING_SORROW, 25s, 30s); + events.ScheduleEvent(EVENT_STORM_OF_GRIEF, 10s); + events.ScheduleEvent(EVENT_SHOCK_OF_SORROW, 20s, 25s); + events.ScheduleEvent(EVENT_PILLAR_OF_WOE, 5s, 15s); - if (IsHeroic()) - events.ScheduleEvent(EVENT_PARTING_SORROW, 25s, 30s); - events.ScheduleEvent(EVENT_STORM_OF_GRIEF, 10s); - events.ScheduleEvent(EVENT_SHOCK_OF_SORROW, 20s, 25s); - events.ScheduleEvent(EVENT_PILLAR_OF_WOE, 5s, 15s); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); + } - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); - } + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + Talk(SAY_AGGRO); - void JustEngagedWith(Unit* who) override - { - BossAI::JustEngagedWith(who); - Talk(SAY_AGGRO); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); + } - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); - } + void KilledUnit(Unit* who) override + { + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); + } - void KilledUnit(Unit* who) override - { - if (who->GetTypeId() == TYPEID_PLAYER) - Talk(SAY_SLAY); - } + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(SAY_DEATH); + } - void JustDied(Unit* /*killer*/) override - { - _JustDied(); - Talk(SAY_DEATH); - } + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - void UpdateAI(uint32 diff) override + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - while (uint32 eventId = events.ExecuteEvent()) - { - switch (eventId) - { - case EVENT_PARTING_SORROW: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true)) - DoCast(target, SPELL_PARTING_SORROW); - events.ScheduleEvent(EVENT_PARTING_SORROW, 30s, 40s); - break; - case EVENT_STORM_OF_GRIEF: - DoCastVictim(SPELL_STORM_OF_GRIEF, true); - events.ScheduleEvent(EVENT_STORM_OF_GRIEF, 15s, 20s); - break; - case EVENT_SHOCK_OF_SORROW: - ResetThreatList(); - Talk(SAY_STUN); - DoCastAOE(SPELL_SHOCK_OF_SORROW); - events.ScheduleEvent(EVENT_SHOCK_OF_SORROW, 20s, 30s); - break; - case EVENT_PILLAR_OF_WOE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true)) - DoCast(target, SPELL_PILLAR_OF_WOE); - else - DoCastVictim(SPELL_PILLAR_OF_WOE); - events.ScheduleEvent(EVENT_PILLAR_OF_WOE, 5s, 25s); - break; - default: - break; - } - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - } - - DoMeleeAttackIfReady(); + case EVENT_PARTING_SORROW: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true)) + DoCast(target, SPELL_PARTING_SORROW); + events.ScheduleEvent(EVENT_PARTING_SORROW, 30s, 40s); + break; + case EVENT_STORM_OF_GRIEF: + DoCastVictim(SPELL_STORM_OF_GRIEF, true); + events.ScheduleEvent(EVENT_STORM_OF_GRIEF, 15s, 20s); + break; + case EVENT_SHOCK_OF_SORROW: + ResetThreatList(); + Talk(SAY_STUN); + DoCastAOE(SPELL_SHOCK_OF_SORROW); + events.ScheduleEvent(EVENT_SHOCK_OF_SORROW, 20s, 30s); + break; + case EVENT_PILLAR_OF_WOE: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true)) + DoCast(target, SPELL_PILLAR_OF_WOE); + else + DoCastVictim(SPELL_PILLAR_OF_WOE); + events.ScheduleEvent(EVENT_PILLAR_OF_WOE, 5s, 25s); + break; + default: + break; } - }; - CreatureAI* GetAI(Creature* creature) const override - { - return GetHallsOfStoneAI<boss_maiden_of_griefAI>(creature); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; } + + DoMeleeAttackIfReady(); + } }; void AddSC_boss_maiden_of_grief() { - new boss_maiden_of_grief(); + RegisterHallsOfStoneCreatureAI(boss_maiden_of_grief); } |