diff options
Diffstat (limited to 'src')
5 files changed, 149 insertions, 214 deletions
diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp index 3dd27aa8ad1..d61a7b3b482 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp @@ -35,53 +35,31 @@ enum Spells const Position HomePosition = {-815.817f, -145.299f, -25.870f, 0}; -class go_blackfathom_altar : public GameObjectScript +struct go_blackfathom_altar : public GameObjectAI { - public: - go_blackfathom_altar() : GameObjectScript("go_blackfathom_altar") { } + go_blackfathom_altar(GameObject* go) : GameObjectAI(go) { } - struct go_blackfathom_altarAI : public GameObjectAI - { - go_blackfathom_altarAI(GameObject* go) : GameObjectAI(go) { } - - bool OnGossipHello(Player* player) override - { - if (!player->HasAura(SPELL_BLESSING_OF_BLACKFATHOM)) - player->AddAura(SPELL_BLESSING_OF_BLACKFATHOM, player); - return true; - } - }; - - GameObjectAI* GetAI(GameObject* go) const override - { - return GetBlackfathomDeepsAI<go_blackfathom_altarAI>(go); - } + bool OnGossipHello(Player* player) override + { + if (!player->HasAura(SPELL_BLESSING_OF_BLACKFATHOM)) + player->AddAura(SPELL_BLESSING_OF_BLACKFATHOM, player); + return true; + } }; -class go_blackfathom_fire : public GameObjectScript +struct go_blackfathom_fire : public GameObjectAI { - public: - go_blackfathom_fire() : GameObjectScript("go_blackfathom_fire") { } + go_blackfathom_fire(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { } - struct go_blackfathom_fireAI : public GameObjectAI - { - go_blackfathom_fireAI(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { } - - InstanceScript* instance; - - bool OnGossipHello(Player* /*player*/) override - { - me->SetGoState(GO_STATE_ACTIVE); - me->AddFlag(GO_FLAG_NOT_SELECTABLE); - instance->SetData(DATA_FIRE, instance->GetData(DATA_FIRE) + 1); - return true; - } - }; + InstanceScript* instance; - GameObjectAI* GetAI(GameObject* go) const override - { - return GetBlackfathomDeepsAI<go_blackfathom_fireAI>(go); - } + bool OnGossipHello(Player* /*player*/) override + { + me->SetGoState(GO_STATE_ACTIVE); + me->AddFlag(GO_FLAG_NOT_SELECTABLE); + instance->SetData(DATA_FIRE, instance->GetData(DATA_FIRE) + 1); + return true; + } }; enum Events @@ -189,45 +167,34 @@ enum Morridune SAY_MORRIDUNE_2 = 1 }; -class npc_morridune : public CreatureScript +struct npc_morridune : public EscortAI { -public: - npc_morridune() : CreatureScript("npc_morridune") { } + npc_morridune(Creature* creature) : EscortAI(creature) { } - struct npc_morriduneAI : public EscortAI + void Reset() override { - npc_morriduneAI(Creature* creature) : EscortAI(creature) { } - - void Reset() override - { - Talk(SAY_MORRIDUNE_1); - me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); - Start(false); - } - - void WaypointReached(uint32 waypointId, uint32 /*pathId*/) override - { - switch (waypointId) - { - case 4: - SetEscortPaused(true); - me->SetFacingTo(1.775791f); - me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP); - Talk(SAY_MORRIDUNE_2); - break; - } - } + Talk(SAY_MORRIDUNE_1); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + Start(false); + } - bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override + void WaypointReached(uint32 waypointId, uint32 /*pathId*/) override + { + switch (waypointId) { - DoCast(player, SPELL_TELEPORT_DARNASSUS); - return false; + case 4: + SetEscortPaused(true); + me->SetFacingTo(1.775791f); + me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP); + Talk(SAY_MORRIDUNE_2); + break; } - }; + } - CreatureAI* GetAI(Creature* creature) const override + bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override { - return GetBlackfathomDeepsAI<npc_morriduneAI>(creature); + DoCast(player, SPELL_TELEPORT_DARNASSUS); + return false; } }; @@ -262,9 +229,9 @@ public: void AddSC_blackfathom_deeps() { - new go_blackfathom_altar(); - new go_blackfathom_fire(); + RegisterBlackfathomDeepsGameObjectAI(go_blackfathom_altar); + RegisterBlackfathomDeepsGameObjectAI(go_blackfathom_fire); RegisterBlackfathomDeepsCreatureAI(npc_blackfathom_deeps_event); - new npc_morridune(); + RegisterBlackfathomDeepsCreatureAI(npc_morridune); new spell_subjugator_korul_darkness_calls(); } diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h index 659f918782e..21d4338de3e 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h @@ -77,5 +77,6 @@ inline AI* GetBlackfathomDeepsAI(T* obj) } #define RegisterBlackfathomDeepsCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetBlackfathomDeepsAI) +#define RegisterBlackfathomDeepsGameObjectAI(ai_name) RegisterGameObjectAIWithFactory(ai_name, GetBlackfathomDeepsAI) #endif // BFD_H_ diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp index 3e0020feca8..cd62b3e03d4 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp @@ -31,68 +31,57 @@ enum Events EVENT_FRENZIED_RAGE }; -class boss_aku_mai : public CreatureScript +struct boss_aku_mai : public BossAI { -public: - boss_aku_mai() : CreatureScript("boss_aku_mai") { } - - struct boss_aku_maiAI : public BossAI + boss_aku_mai(Creature* creature) : BossAI(creature, DATA_AKU_MAI) { - boss_aku_maiAI(Creature* creature) : BossAI(creature, DATA_AKU_MAI) - { - Initialize(); - } + Initialize(); + } - void Initialize() - { - IsEnraged = false; - } + void Initialize() + { + IsEnraged = false; + } - void Reset() override - { - Initialize(); - _Reset(); - } + void Reset() override + { + Initialize(); + _Reset(); + } - void JustEngagedWith(Unit* who) override - { - BossAI::JustEngagedWith(who); - events.ScheduleEvent(EVENT_POISON_CLOUD, 5s, 9s); - } + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + events.ScheduleEvent(EVENT_POISON_CLOUD, 5s, 9s); + } - void DamageTaken(Unit* /*atacker*/, uint32 &damage) override + void DamageTaken(Unit* /*atacker*/, uint32 &damage) override + { + if (!IsEnraged && me->HealthBelowPctDamaged(30, damage)) { - if (!IsEnraged && me->HealthBelowPctDamaged(30, damage)) - { - DoCast(me, SPELL_FRENZIED_RAGE); - IsEnraged = true; - } + DoCast(me, SPELL_FRENZIED_RAGE); + IsEnraged = true; } + } - void ExecuteEvent(uint32 eventId) override + void ExecuteEvent(uint32 eventId) override + { + switch (eventId) { - switch (eventId) - { - case EVENT_POISON_CLOUD: - DoCastVictim(SPELL_POISON_CLOUD); - events.ScheduleEvent(EVENT_POISON_CLOUD, 25s, 50s); - break; - default: - break; - } + case EVENT_POISON_CLOUD: + DoCastVictim(SPELL_POISON_CLOUD); + events.ScheduleEvent(EVENT_POISON_CLOUD, 25s, 50s); + break; + default: + break; } - - private: - bool IsEnraged; - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetBlackfathomDeepsAI<boss_aku_maiAI>(creature); } + + private: + bool IsEnraged; }; void AddSC_boss_aku_mai() { - new boss_aku_mai(); + RegisterBlackfathomDeepsCreatureAI(boss_aku_mai); } diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp index f3a5f80aec1..f9d836b0d6f 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp @@ -29,48 +29,37 @@ enum Events EVENT_THROW_NET = 1 }; -class boss_gelihast : public CreatureScript +struct boss_gelihast : public BossAI { -public: - boss_gelihast() : CreatureScript("boss_gelihast") { } + boss_gelihast(Creature* creature) : BossAI(creature, DATA_GELIHAST) { } - struct boss_gelihastAI : public BossAI + void JustEngagedWith(Unit* who) override { - boss_gelihastAI(Creature* creature) : BossAI(creature, DATA_GELIHAST) { } - - void JustEngagedWith(Unit* who) override - { - BossAI::JustEngagedWith(who); - events.ScheduleEvent(EVENT_THROW_NET, 2s, 4s); - } + BossAI::JustEngagedWith(who); + events.ScheduleEvent(EVENT_THROW_NET, 2s, 4s); + } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - events.Update(diff); + events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) + while (uint32 eventId = events.ExecuteEvent()) + { + if (eventId == EVENT_THROW_NET) { - if (eventId == EVENT_THROW_NET) - { - DoCastVictim(SPELL_NET); - events.ScheduleEvent(EVENT_THROW_NET, 4s, 7s); - } + DoCastVictim(SPELL_NET); + events.ScheduleEvent(EVENT_THROW_NET, 4s, 7s); } - - DoMeleeAttackIfReady(); } - }; - CreatureAI* GetAI(Creature* creature) const override - { - return GetBlackfathomDeepsAI<boss_gelihastAI>(creature); + DoMeleeAttackIfReady(); } }; void AddSC_boss_gelihast() { - new boss_gelihast(); + RegisterBlackfathomDeepsCreatureAI(boss_gelihast); } diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp index f0f1a31eee7..3fa44b79ef0 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp @@ -39,87 +39,76 @@ enum Events EVENT_SLEEP }; -class boss_kelris : public CreatureScript +struct boss_kelris : public BossAI { -public: - boss_kelris() : CreatureScript("boss_kelris") { } + boss_kelris(Creature* creature) : BossAI(creature, DATA_KELRIS) { } - struct boss_kelrisAI : public BossAI + void Reset() override { - boss_kelrisAI(Creature* creature) : BossAI(creature, DATA_KELRIS) { } - - void Reset() override - { - _Reset(); - DoCastSelf(SPELL_BLACKFATHOM_CHANNELING); - } + _Reset(); + DoCastSelf(SPELL_BLACKFATHOM_CHANNELING); + } - void JustReachedHome() override - { - _JustReachedHome(); - DoCastSelf(SPELL_BLACKFATHOM_CHANNELING); - } + void JustReachedHome() override + { + _JustReachedHome(); + DoCastSelf(SPELL_BLACKFATHOM_CHANNELING); + } - void JustEngagedWith(Unit* who) override - { - BossAI::JustEngagedWith(who); - Talk(SAY_AGGRO); - me->RemoveAurasDueToSpell(SPELL_BLACKFATHOM_CHANNELING); - events.ScheduleEvent(EVENT_MIND_BLAST, 2s, 5s); - events.ScheduleEvent(EVENT_SLEEP, 9s, 12s); - } + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + Talk(SAY_AGGRO); + me->RemoveAurasDueToSpell(SPELL_BLACKFATHOM_CHANNELING); + events.ScheduleEvent(EVENT_MIND_BLAST, 2s, 5s); + events.ScheduleEvent(EVENT_SLEEP, 9s, 12s); + } - void JustDied(Unit* /*killer*/) override - { - Talk(SAY_DEATH); - _JustDied(); - } + void JustDied(Unit* /*killer*/) override + { + Talk(SAY_DEATH); + _JustDied(); + } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - events.Update(diff); + events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - while (uint32 eventId = events.ExecuteEvent()) + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - switch (eventId) - { - case EVENT_MIND_BLAST: - DoCastVictim(SPELL_MIND_BLAST); - events.ScheduleEvent(EVENT_MIND_BLAST, 7s, 9s); - break; - case EVENT_SLEEP: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true)) - { - Talk(SAY_SLEEP); - DoCast(target, SPELL_SLEEP); - } - events.ScheduleEvent(EVENT_SLEEP, 15s, 20s); - break; - default: - break; - } - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; + case EVENT_MIND_BLAST: + DoCastVictim(SPELL_MIND_BLAST); + events.ScheduleEvent(EVENT_MIND_BLAST, 7s, 9s); + break; + case EVENT_SLEEP: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true)) + { + Talk(SAY_SLEEP); + DoCast(target, SPELL_SLEEP); + } + events.ScheduleEvent(EVENT_SLEEP, 15s, 20s); + break; + default: + break; } - DoMeleeAttackIfReady(); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; } - }; - CreatureAI* GetAI(Creature* creature) const override - { - return GetBlackfathomDeepsAI<boss_kelrisAI>(creature); + DoMeleeAttackIfReady(); } }; void AddSC_boss_kelris() { - new boss_kelris(); + RegisterBlackfathomDeepsCreatureAI(boss_kelris); } |