aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-04-12 16:01:52 +0300
committerShauren <shauren.trinity@gmail.com>2022-03-08 16:08:19 +0100
commitdb601a92b57a41ecf0291ea477802e1291db4657 (patch)
tree84392ecda0651424e8079ad9d0f30343e2467102 /src
parent90eaa5fcb67b8cd9ef89e8eda53626df638ef80d (diff)
Scripts/Utgarde Pinnacle: Update Gortok Palehoof to new model (#26370)
* Scripts/Utgarde Pinnacle: Update Gortok Palehoof to new model * RegisterGameObjectAI > RegisterUtgardePinnacleGameObjectAI Co-authored-by: offl <offl@users.noreply.github.com> (cherry picked from commit ba7f11c5f68cff714aacc54f0afb86fd0fe78ba3)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp669
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h3
2 files changed, 283 insertions, 389 deletions
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index 4d0b52018a5..5944b1c3dc2 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -188,138 +188,127 @@ private:
Unit* _owner;
};
-class boss_palehoof : public CreatureScript
+struct boss_palehoof : public BossAI
{
-public:
- boss_palehoof() : CreatureScript("boss_palehoof") { }
+ boss_palehoof(Creature* creature) : BossAI(creature, DATA_GORTOK_PALEHOOF), _dungeonMode(DUNGEON_MODE(2, 4)), _encountersCount(0) { }
- struct boss_palehoofAI : public BossAI
+ void Reset() override
{
- boss_palehoofAI(Creature* creature) : BossAI(creature, DATA_GORTOK_PALEHOOF), _dungeonMode(DUNGEON_MODE(2, 4)), _encountersCount(0) { }
+ _Reset();
+ _orb.Clear();
+ me->SummonCreatureGroup(SUMMON_MINIBOSSES_GROUP);
+ _encountersCount = 0;
- void Reset() override
+ if (GameObject* go = instance->GetGameObject(DATA_GORTOK_PALEHOOF_SPHERE))
{
- _Reset();
- _orb.Clear();
- me->SummonCreatureGroup(SUMMON_MINIBOSSES_GROUP);
- _encountersCount = 0;
-
- if (GameObject* go = instance->GetGameObject(DATA_GORTOK_PALEHOOF_SPHERE))
- {
- go->SetGoState(GO_STATE_READY);
- go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
- }
+ go->SetGoState(GO_STATE_READY);
+ go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
+ }
- void JustSummoned(Creature* summon) override
- {
- BossAI::JustSummoned(summon);
+ void JustSummoned(Creature* summon) override
+ {
+ BossAI::JustSummoned(summon);
- if (summon->GetEntry() == NPC_PALEHOOF_ORB)
- _orb = summon->GetGUID();
- }
+ if (summon->GetEntry() == NPC_PALEHOOF_ORB)
+ _orb = summon->GetGUID();
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- Talk(SAY_AGGRO);
- events.ScheduleEvent(EVENT_ARCING_SMASH, 7s);
- events.ScheduleEvent(EVENT_IMPALE, 11s);
- events.ScheduleEvent(EVENT_WITHERING_ROAR, 12s);
- instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ Talk(SAY_AGGRO);
+ events.ScheduleEvent(EVENT_ARCING_SMASH, 7s);
+ events.ScheduleEvent(EVENT_IMPALE, 11s);
+ events.ScheduleEvent(EVENT_WITHERING_ROAR, 12s);
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
+ }
- void ExecuteEvent(uint32 eventId) override
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_ARCING_SMASH:
- DoCastVictim(SPELL_ARCING_SMASH);
- events.Repeat(Seconds(7));
- break;
- case EVENT_IMPALE:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
- DoCast(target, SPELL_IMPALE);
- events.Repeat(Seconds(10), Seconds(15));
- break;
- case EVENT_WITHERING_ROAR:
- DoCastSelf(SPELL_WITHERING_ROAR);
- events.Repeat(Seconds(11));
- break;
- default:
- break;
- }
+ case EVENT_ARCING_SMASH:
+ DoCastVictim(SPELL_ARCING_SMASH);
+ events.Repeat(Seconds(7));
+ break;
+ case EVENT_IMPALE:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
+ DoCast(target, SPELL_IMPALE);
+ events.Repeat(Seconds(10), Seconds(15));
+ break;
+ case EVENT_WITHERING_ROAR:
+ DoCastSelf(SPELL_WITHERING_ROAR);
+ events.Repeat(Seconds(11));
+ break;
+ default:
+ break;
}
+ }
- void JustDied(Unit* /*killer*/) override
- {
- events.Reset();
- instance->SetBossState(DATA_GORTOK_PALEHOOF, DONE);
- DoPlaySoundToSet(me, PALEHOOF_SOUND_DEATH);
- instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
- }
+ void JustDied(Unit* /*killer*/) override
+ {
+ events.Reset();
+ instance->SetBossState(DATA_GORTOK_PALEHOOF, DONE);
+ DoPlaySoundToSet(me, PALEHOOF_SOUND_DEATH);
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
+ }
- void EnterEvadeMode(EvadeReason /*why*/) override
- {
- instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
- events.Reset();
- summons.DespawnAll();
- _DespawnAtEvade();
- }
+ void EnterEvadeMode(EvadeReason /*why*/) override
+ {
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
+ events.Reset();
+ summons.DespawnAll();
+ _DespawnAtEvade();
+ }
- 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 DoAction(int32 actionId) override
+ void DoAction(int32 actionId) override
+ {
+ switch (actionId)
{
- switch (actionId)
+ case ACTION_NEXT_PHASE:
{
- case ACTION_NEXT_PHASE:
+ Creature* orb = ObjectAccessor::GetCreature(*me, _orb);
+ if (!orb)
+ return;
+
+ _encountersCount++;
+ if (_encountersCount == _dungeonMode)
+ orb->CastSpell(orb, SPELL_AWAKEN_GORTOK, true);
+ else
+ orb->CastSpell(orb, SPELL_AWAKEN_SUBBOSS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_MAX_TARGETS, 1));
+ break;
+ }
+ case ACTION_START_FIGHT:
+ me->RemoveAurasDueToSpell(SPELL_FREEZE);
+ me->SetImmuneToPC(false);
+ DoZoneInCombat();
+ if (Creature* orb = ObjectAccessor::GetCreature(*me, _orb))
+ orb->DespawnOrUnsummon(1s);
+ break;
+ case ACTION_START_ENCOUNTER:
+ if (Creature* orb = ObjectAccessor::GetCreature(*me, _orb))
{
- Creature* orb = ObjectAccessor::GetCreature(*me, _orb);
- if (!orb)
- return;
-
- _encountersCount++;
- if (_encountersCount == _dungeonMode)
- orb->CastSpell(orb, SPELL_AWAKEN_GORTOK, true);
- else
- orb->CastSpell(orb, SPELL_AWAKEN_SUBBOSS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_MAX_TARGETS, 1));
- break;
+ orb->CastSpell(orb, SPELL_ORB_VISUAL, true);
+ orb->m_Events.AddEvent(new OrbAirPositionEvent(orb), orb->m_Events.CalculateTime(3s));
+ orb->m_Events.AddEvent(new OrbFlyEvent(orb), orb->m_Events.CalculateTime(6s));
}
- case ACTION_START_FIGHT:
- me->RemoveAurasDueToSpell(SPELL_FREEZE);
- me->SetImmuneToPC(false);
- DoZoneInCombat();
- if (Creature* orb = ObjectAccessor::GetCreature(*me, _orb))
- orb->DespawnOrUnsummon(1s);
- break;
- case ACTION_START_ENCOUNTER:
- if (Creature* orb = ObjectAccessor::GetCreature(*me, _orb))
- {
- orb->CastSpell(orb, SPELL_ORB_VISUAL, true);
- orb->m_Events.AddEvent(new OrbAirPositionEvent(orb), orb->m_Events.CalculateTime(3s));
- orb->m_Events.AddEvent(new OrbFlyEvent(orb), orb->m_Events.CalculateTime(6s));
- }
- break;
- default:
- break;
- }
+ break;
+ default:
+ break;
}
-
- private:
- uint8 _dungeonMode;
- uint8 _encountersCount;
- ObjectGuid _orb;
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUtgardePinnacleAI<boss_palehoofAI>(creature);
}
+
+ private:
+ uint8 _dungeonMode;
+ uint8 _encountersCount;
+ ObjectGuid _orb;
};
struct PalehoofMinionsBossAI : public BossAI
@@ -363,361 +352,263 @@ struct PalehoofMinionsBossAI : public BossAI
}
};
-class boss_ravenous_furbolg : public CreatureScript
+struct boss_ravenous_furbolg : public PalehoofMinionsBossAI
{
-public:
- boss_ravenous_furbolg() : CreatureScript("boss_ravenous_furbolg") { }
+ boss_ravenous_furbolg(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_RAVENOUS_FURBOLG) { }
- struct boss_ravenous_furbolgAI : public PalehoofMinionsBossAI
+ void ScheduleTasks() override
{
- boss_ravenous_furbolgAI(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_RAVENOUS_FURBOLG) { }
-
- void ScheduleTasks() override
- {
- events.ScheduleEvent(EVENT_CRAZED, 10s);
- events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 12s);
- events.ScheduleEvent(EVENT_TERRIFYING_ROAR, 22s);
- }
+ events.ScheduleEvent(EVENT_CRAZED, 10s);
+ events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 12s);
+ events.ScheduleEvent(EVENT_TERRIFYING_ROAR, 22s);
+ }
- void ExecuteEvent(uint32 eventId) override
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_CRAZED:
- DoCastSelf(SPELL_CRAZED);
- events.Repeat(Seconds(20), Seconds(25));
- break;
- case EVENT_CHAIN_LIGHTNING:
- DoCastVictim(SPELL_CHAIN_LIGHTNING);
- events.Repeat(Seconds(11));
- break;
- case EVENT_TERRIFYING_ROAR:
- DoCastSelf(SPELL_TERRIFYING_ROAR);
- events.Repeat(Seconds(18));
- break;
- default:
- break;
- }
+ case EVENT_CRAZED:
+ DoCastSelf(SPELL_CRAZED);
+ events.Repeat(Seconds(20), Seconds(25));
+ break;
+ case EVENT_CHAIN_LIGHTNING:
+ DoCastVictim(SPELL_CHAIN_LIGHTNING);
+ events.Repeat(Seconds(11));
+ break;
+ case EVENT_TERRIFYING_ROAR:
+ DoCastSelf(SPELL_TERRIFYING_ROAR);
+ events.Repeat(Seconds(18));
+ break;
+ default:
+ break;
}
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUtgardePinnacleAI<boss_ravenous_furbolgAI>(creature);
}
};
-class boss_frenzied_worgen : public CreatureScript
+struct boss_frenzied_worgen : public PalehoofMinionsBossAI
{
-public:
- boss_frenzied_worgen() : CreatureScript("boss_frenzied_worgen") { }
+ boss_frenzied_worgen(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_FRENZIED_WORGEN) { }
- struct boss_frenzied_worgenAI : public PalehoofMinionsBossAI
+ void ScheduleTasks() override
{
- boss_frenzied_worgenAI(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_FRENZIED_WORGEN) { }
-
- void ScheduleTasks() override
- {
- events.ScheduleEvent(EVENT_MORTAL_WOUND, 6s);
- events.ScheduleEvent(EVENT_ENRAGE, 16s);
- events.ScheduleEvent(EVENT_ENRAGE_2, Minutes(1) + Seconds(30));
- }
+ events.ScheduleEvent(EVENT_MORTAL_WOUND, 6s);
+ events.ScheduleEvent(EVENT_ENRAGE, 16s);
+ events.ScheduleEvent(EVENT_ENRAGE_2, Minutes(1) + Seconds(30));
+ }
- void ExecuteEvent(uint32 eventId) override
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_MORTAL_WOUND:
- DoCastVictim(SPELL_MORTAL_WOUND);
- events.Repeat(Seconds(6));
- break;
- case EVENT_ENRAGE:
- DoCastSelf(SPELL_ENRAGE_1);
- events.Repeat(Seconds(25));
- break;
- case EVENT_ENRAGE_2:
- DoCastSelf(SPELL_ENRAGE_2);
- break;
- default:
- break;
- }
+ case EVENT_MORTAL_WOUND:
+ DoCastVictim(SPELL_MORTAL_WOUND);
+ events.Repeat(Seconds(6));
+ break;
+ case EVENT_ENRAGE:
+ DoCastSelf(SPELL_ENRAGE_1);
+ events.Repeat(Seconds(25));
+ break;
+ case EVENT_ENRAGE_2:
+ DoCastSelf(SPELL_ENRAGE_2);
+ break;
+ default:
+ break;
}
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUtgardePinnacleAI<boss_frenzied_worgenAI>(creature);
}
};
-class boss_ferocious_rhino : public CreatureScript
+struct boss_ferocious_rhino : public PalehoofMinionsBossAI
{
-public:
- boss_ferocious_rhino() : CreatureScript("boss_ferocious_rhino") { }
+ boss_ferocious_rhino(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_FEROCIOUS_RHINO) { }
- struct boss_ferocious_rhinoAI : public PalehoofMinionsBossAI
+ void ScheduleTasks() override
{
- boss_ferocious_rhinoAI(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_FEROCIOUS_RHINO) { }
-
- void ScheduleTasks() override
- {
- events.ScheduleEvent(EVENT_GORE, 10s);
- events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 12s);
- events.ScheduleEvent(EVENT_STOMP, 5s);
- }
+ events.ScheduleEvent(EVENT_GORE, 10s);
+ events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 12s);
+ events.ScheduleEvent(EVENT_STOMP, 5s);
+ }
- void ExecuteEvent(uint32 eventId) override
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_GORE:
- DoCastVictim(SPELL_GORE);
- events.Repeat(Seconds(19));
- break;
- case EVENT_GRIEVOUS_WOUND:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
- DoCast(target, SPELL_GRIEVOUS_WOUND);
- events.Repeat(Seconds(18));
- break;
- case EVENT_STOMP:
- DoCastSelf(SPELL_STOMP);
- events.Repeat(Seconds(10), Seconds(15));
- break;
- default:
- break;
- }
+ case EVENT_GORE:
+ DoCastVictim(SPELL_GORE);
+ events.Repeat(Seconds(19));
+ break;
+ case EVENT_GRIEVOUS_WOUND:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
+ DoCast(target, SPELL_GRIEVOUS_WOUND);
+ events.Repeat(Seconds(18));
+ break;
+ case EVENT_STOMP:
+ DoCastSelf(SPELL_STOMP);
+ events.Repeat(Seconds(10), Seconds(15));
+ break;
+ default:
+ break;
}
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUtgardePinnacleAI<boss_ferocious_rhinoAI>(creature);
}
};
-class boss_massive_jormungar : public CreatureScript
+struct boss_massive_jormungar : public PalehoofMinionsBossAI
{
-public:
- boss_massive_jormungar() : CreatureScript("boss_massive_jormungar") { }
+ boss_massive_jormungar(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_MASSIVE_JORMUNGAR) { }
- struct boss_massive_jormungarAI : public PalehoofMinionsBossAI
+ void ScheduleTasks() override
{
- boss_massive_jormungarAI(Creature* creature) : PalehoofMinionsBossAI(creature, DATA_MASSIVE_JORMUNGAR) { }
-
- void ScheduleTasks() override
- {
- events.ScheduleEvent(EVENT_ACID_SPIT, 6s);
- events.ScheduleEvent(EVENT_ACID_SPLATTER, 16s);
- events.ScheduleEvent(EVENT_POISON_BREATH, 13s);
- }
-
- void JustSummoned(Creature* summon) override
- {
- if (summon->GetEntry() == NPC_JORMUNGAR_WORM)
- {
- summon->m_Events.AddEvent(new WormAttackEvent(summon->ToTempSummon()), summon->m_Events.CalculateTime(2s));
- summon->GetMotionMaster()->MoveRandom(5.0f);
- }
- }
+ events.ScheduleEvent(EVENT_ACID_SPIT, 6s);
+ events.ScheduleEvent(EVENT_ACID_SPLATTER, 16s);
+ events.ScheduleEvent(EVENT_POISON_BREATH, 13s);
+ }
- void ExecuteEvent(uint32 eventId) override
+ void JustSummoned(Creature* summon) override
+ {
+ if (summon->GetEntry() == NPC_JORMUNGAR_WORM)
{
- switch (eventId)
- {
- case EVENT_ACID_SPIT:
- DoCastVictim(SPELL_ACID_SPIT);
- events.Repeat(Seconds(7));
- break;
- case EVENT_ACID_SPLATTER:
- DoCastSelf(SPELL_ACID_SPLATTER);
- events.Repeat(Seconds(16));
- break;
- case EVENT_POISON_BREATH:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
- DoCast(target, SPELL_POISON_BREATH);
- events.Repeat(Seconds(14));
- break;
- default:
- break;
- }
+ summon->m_Events.AddEvent(new WormAttackEvent(summon->ToTempSummon()), summon->m_Events.CalculateTime(2s));
+ summon->GetMotionMaster()->MoveRandom(5.0f);
}
+ }
- void EnterEvadeMode(EvadeReason why) override
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
{
- summons.DespawnAll();
- PalehoofMinionsBossAI::EnterEvadeMode(why);
+ case EVENT_ACID_SPIT:
+ DoCastVictim(SPELL_ACID_SPIT);
+ events.Repeat(Seconds(7));
+ break;
+ case EVENT_ACID_SPLATTER:
+ DoCastSelf(SPELL_ACID_SPLATTER);
+ events.Repeat(Seconds(16));
+ break;
+ case EVENT_POISON_BREATH:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
+ DoCast(target, SPELL_POISON_BREATH);
+ events.Repeat(Seconds(14));
+ break;
+ default:
+ break;
}
- };
+ }
- CreatureAI* GetAI(Creature* creature) const override
+ void EnterEvadeMode(EvadeReason why) override
{
- return GetUtgardePinnacleAI<boss_massive_jormungarAI>(creature);
+ summons.DespawnAll();
+ PalehoofMinionsBossAI::EnterEvadeMode(why);
}
};
-class go_palehoof_sphere : public GameObjectScript
+struct go_palehoof_sphere : public GameObjectAI
{
-public:
- go_palehoof_sphere() : GameObjectScript("go_palehoof_sphere") { }
+ go_palehoof_sphere(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { }
- struct go_palehoof_sphereAI : public GameObjectAI
- {
- go_palehoof_sphereAI(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { }
-
- InstanceScript* instance;
+ InstanceScript* instance;
- bool OnGossipHello(Player* /*player*/) override
+ bool OnGossipHello(Player* /*player*/) override
+ {
+ if (Creature* palehoof = instance->GetCreature(DATA_GORTOK_PALEHOOF))
{
- if (Creature* palehoof = instance->GetCreature(DATA_GORTOK_PALEHOOF))
+ if (palehoof->IsAlive() && instance->GetBossState(DATA_GORTOK_PALEHOOF) != DONE)
{
- if (palehoof->IsAlive() && instance->GetBossState(DATA_GORTOK_PALEHOOF) != DONE)
- {
- me->SetFlags(GO_FLAG_NOT_SELECTABLE);
- me->SetGoState(GO_STATE_ACTIVE);
- palehoof->AI()->DoAction(ACTION_START_ENCOUNTER);
- }
+ me->AddFlag(GO_FLAG_NOT_SELECTABLE);
+ me->SetGoState(GO_STATE_ACTIVE);
+ palehoof->AI()->DoAction(ACTION_START_ENCOUNTER);
}
- return true;
}
- };
-
- GameObjectAI* GetAI(GameObject* go) const override
- {
- return GetUtgardePinnacleAI<go_palehoof_sphereAI>(go);
+ return true;
}
};
// 48139 - Crazed
-class spell_palehoof_crazed : public SpellScriptLoader
+class spell_palehoof_crazed : public AuraScript
{
- public:
- spell_palehoof_crazed() : SpellScriptLoader("spell_palehoof_crazed") { }
-
- class spell_palehoof_crazed_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_palehoof_crazed_AuraScript);
+ PrepareAuraScript(spell_palehoof_crazed);
- void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- GetTarget()->RemoveAurasDueToSpell(SPELL_CRAZED_TAUNT);
- }
-
- void Register() override
- {
- OnEffectRemove += AuraEffectRemoveFn(spell_palehoof_crazed_AuraScript::OnRemove, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
- }
- };
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_CRAZED_TAUNT);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_palehoof_crazed_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectRemove += AuraEffectRemoveFn(spell_palehoof_crazed::OnRemove, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
+ }
};
-class spell_palehoof_crazed_effect : public SpellScriptLoader
+class spell_palehoof_crazed_effect : public SpellScript
{
- public: spell_palehoof_crazed_effect() : SpellScriptLoader("spell_palehoof_crazed_effect") { }
-
- class spell_palehoof_crazed_effect_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_palehoof_crazed_effect_SpellScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_CRAZED_TAUNT });
- }
+ PrepareSpellScript(spell_palehoof_crazed_effect);
- void HandleScriptEffect(SpellEffIndex /* effIndex */)
- {
- GetHitUnit()->CastSpell(GetCaster(), SPELL_CRAZED_TAUNT, true);
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_CRAZED_TAUNT });
+ }
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_palehoof_crazed_effect_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
- }
- };
+ void HandleScriptEffect(SpellEffIndex /* effIndex */)
+ {
+ GetHitUnit()->CastSpell(GetCaster(), SPELL_CRAZED_TAUNT, true);
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_palehoof_crazed_effect_SpellScript();
- }
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_palehoof_crazed_effect::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
};
// 47669 - Awaken Subbos
-class spell_palehoof_awaken_subboss : public SpellScriptLoader
+class spell_palehoof_awaken_subboss : public SpellScript
{
- public:
- spell_palehoof_awaken_subboss() : SpellScriptLoader("spell_palehoof_awaken_subboss") { }
-
- class spell_palehoof_awaken_subboss_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_palehoof_awaken_subboss_SpellScript);
+ PrepareSpellScript(spell_palehoof_awaken_subboss);
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_ORB_CHANNEL });
- }
-
- void HandleScript(SpellEffIndex /*effIndex*/)
- {
- Unit* target = GetHitUnit();
- GetCaster()->CastSpell(target, SPELL_ORB_CHANNEL);
- target->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- target->m_Events.AddEvent(new CombatStartEvent(target), target->m_Events.CalculateTime(8500ms));
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ORB_CHANNEL });
+ }
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_palehoof_awaken_subboss_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
- }
- };
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* target = GetHitUnit();
+ GetCaster()->CastSpell(target, SPELL_ORB_CHANNEL);
+ target->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ target->m_Events.AddEvent(new CombatStartEvent(target), target->m_Events.CalculateTime(8500ms));
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_palehoof_awaken_subboss_SpellScript();
- }
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_palehoof_awaken_subboss::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
+ }
};
// 47670 - Awaken Gortok
-class spell_palehoof_awaken_gortok : public SpellScriptLoader
+class spell_palehoof_awaken_gortok : public SpellScript
{
- public:
- spell_palehoof_awaken_gortok() : SpellScriptLoader("spell_palehoof_awaken_gortok") { }
-
- class spell_palehoof_awaken_gortok_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_palehoof_awaken_gortok_SpellScript);
+ PrepareSpellScript(spell_palehoof_awaken_gortok);
- void HandleDummy(SpellEffIndex /*effIndex*/)
- {
- Unit* target = GetHitUnit();
- target->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- target->m_Events.AddEvent(new CombatStartEvent(target), target->m_Events.CalculateTime(8s));
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_palehoof_awaken_gortok_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
- }
- };
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ Unit* target = GetHitUnit();
+ target->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ target->m_Events.AddEvent(new CombatStartEvent(target), target->m_Events.CalculateTime(8s));
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_palehoof_awaken_gortok_SpellScript();
- }
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_palehoof_awaken_gortok::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
};
void AddSC_boss_palehoof()
{
- new boss_palehoof();
- new boss_ravenous_furbolg();
- new boss_frenzied_worgen();
- new boss_ferocious_rhino();
- new boss_massive_jormungar();
- new go_palehoof_sphere();
- new spell_palehoof_crazed();
- new spell_palehoof_crazed_effect();
- new spell_palehoof_awaken_subboss();
- new spell_palehoof_awaken_gortok();
+ RegisterUtgardePinnacleCreatureAI(boss_palehoof);
+ RegisterUtgardePinnacleCreatureAI(boss_ravenous_furbolg);
+ RegisterUtgardePinnacleCreatureAI(boss_frenzied_worgen);
+ RegisterUtgardePinnacleCreatureAI(boss_ferocious_rhino);
+ RegisterUtgardePinnacleCreatureAI(boss_massive_jormungar);
+ RegisterUtgardePinnacleGameObjectAI(go_palehoof_sphere);
+ RegisterSpellScript(spell_palehoof_crazed);
+ RegisterSpellScript(spell_palehoof_crazed_effect);
+ RegisterSpellScript(spell_palehoof_awaken_subboss);
+ RegisterSpellScript(spell_palehoof_awaken_gortok);
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
index c5566d9d940..685c27ca511 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
@@ -103,4 +103,7 @@ inline AI* GetUtgardePinnacleAI(T* obj)
return GetInstanceAI<AI>(obj, UPScriptName);
}
+#define RegisterUtgardePinnacleCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetUtgardePinnacleAI)
+#define RegisterUtgardePinnacleGameObjectAI(ai_name) RegisterGameObjectAIWithFactory(ai_name, GetUtgardePinnacleAI)
+
#endif // UTGARDE_PINNACLE_H_