aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp115
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h1
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp85
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp47
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp115
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);
}