aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-07-13 05:16:32 +0300
committerGitHub <noreply@github.com>2021-07-13 05:16:32 +0300
commit661e7cca00ac863849ee05677e5d001c90bed0cc (patch)
treef9e4633faf1126187322dd83777099e2590ee895
parentdb1ec411cc91ea8b0caeb75e635077121d7dfa2c (diff)
Scripts/MT: Update scripts to new register model (#26679)
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp436
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp127
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h2
3 files changed, 256 insertions, 309 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
index a27f04d4890..c42902b6085 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
@@ -71,123 +71,112 @@ enum Events
EVENT_FROST_NOVA
};
-class boss_nexusprince_shaffar : public CreatureScript
+struct boss_nexusprince_shaffar : public BossAI
{
- public:
- boss_nexusprince_shaffar() : CreatureScript("boss_nexusprince_shaffar") { }
+ boss_nexusprince_shaffar(Creature* creature) : BossAI(creature, DATA_NEXUSPRINCE_SHAFFAR)
+ {
+ _hasTaunted = false;
+ }
- struct boss_nexusprince_shaffarAI : public BossAI
- {
- boss_nexusprince_shaffarAI(Creature* creature) : BossAI(creature, DATA_NEXUSPRINCE_SHAFFAR)
- {
- _hasTaunted = false;
- }
+ void Reset() override
+ {
+ _Reset();
- void Reset() override
- {
- _Reset();
+ float dist = 8.0f;
+ float posX, posY, posZ, angle;
+ me->GetHomePosition(posX, posY, posZ, angle);
- float dist = 8.0f;
- float posX, posY, posZ, angle;
- me->GetHomePosition(posX, posY, posZ, angle);
+ me->SummonCreature(NPC_BEACON, posX - dist, posY - dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2h);
+ me->SummonCreature(NPC_BEACON, posX - dist, posY + dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2h);
+ me->SummonCreature(NPC_BEACON, posX + dist, posY, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2h);
+ }
- me->SummonCreature(NPC_BEACON, posX - dist, posY - dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2h);
- me->SummonCreature(NPC_BEACON, posX - dist, posY + dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2h);
- me->SummonCreature(NPC_BEACON, posX + dist, posY, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2h);
- }
+ void MoveInLineOfSight(Unit* who) override
+ {
+ if (!_hasTaunted && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f))
+ {
+ Talk(SAY_INTRO);
+ _hasTaunted = true;
+ }
+ }
- void MoveInLineOfSight(Unit* who) override
- {
- if (!_hasTaunted && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f))
- {
- Talk(SAY_INTRO);
- _hasTaunted = true;
- }
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ Talk(SAY_AGGRO);
+ BossAI::JustEngagedWith(who);
- void JustEngagedWith(Unit* who) override
- {
- Talk(SAY_AGGRO);
- BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_BEACON, 10s);
+ events.ScheduleEvent(EVENT_FIREBALL, 8s);
+ events.ScheduleEvent(EVENT_FROSTBOLT, 4s);
+ events.ScheduleEvent(EVENT_FROST_NOVA, 15s);
+ }
- events.ScheduleEvent(EVENT_BEACON, 10s);
- events.ScheduleEvent(EVENT_FIREBALL, 8s);
- events.ScheduleEvent(EVENT_FROSTBOLT, 4s);
- events.ScheduleEvent(EVENT_FROST_NOVA, 15s);
- }
+ void JustSummoned(Creature* summoned) override
+ {
+ if (summoned->GetEntry() == NPC_BEACON)
+ {
+ summoned->CastSpell(summoned, SPELL_ETHEREAL_BEACON_VISUAL, false);
- void JustSummoned(Creature* summoned) override
- {
- if (summoned->GetEntry() == NPC_BEACON)
- {
- summoned->CastSpell(summoned, SPELL_ETHEREAL_BEACON_VISUAL, false);
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
+ summoned->AI()->AttackStart(target);
+ }
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
- summoned->AI()->AttackStart(target);
- }
+ summons.Summon(summoned);
+ }
- summons.Summon(summoned);
- }
+ void KilledUnit(Unit* victim) override
+ {
+ if (victim->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
+ }
- void KilledUnit(Unit* victim) override
- {
- if (victim->GetTypeId() == TYPEID_PLAYER)
- Talk(SAY_SLAY);
- }
+ void JustDied(Unit* /*killer*/) override
+ {
+ Talk(SAY_DEAD);
+ _JustDied();
+ }
- void JustDied(Unit* /*killer*/) override
- {
- Talk(SAY_DEAD);
- _JustDied();
- }
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
+ {
+ case EVENT_BLINK:
+ if (me->IsNonMeleeSpellCast(false))
+ me->InterruptNonMeleeSpells(true);
- void ExecuteEvent(uint32 eventId) override
- {
- switch (eventId)
- {
- case EVENT_BLINK:
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(true);
-
- // expire movement, will prevent from running right back to victim after cast
- // (but should MoveChase be used again at a certain time or should he not move?)
- me->GetMotionMaster()->Clear(MOTION_PRIORITY_NORMAL);
-
- DoCast(me, SPELL_BLINK);
- break;
- case EVENT_BEACON:
- if (!urand(0, 3))
- Talk(SAY_SUMMON);
-
- DoCast(me, SPELL_ETHEREAL_BEACON, true);
- events.ScheduleEvent(EVENT_BEACON, 10s);
- break;
- case EVENT_FIREBALL:
- DoCastVictim(SPELL_FROSTBOLT);
- events.ScheduleEvent(EVENT_FIREBALL, 4500ms, 6s);
- break;
- case EVENT_FROSTBOLT:
- DoCastVictim(SPELL_FROSTBOLT);
- events.ScheduleEvent(EVENT_FROSTBOLT, 4500ms, 6s);
- break;
- case EVENT_FROST_NOVA:
- DoCast(me, SPELL_FROSTNOVA);
- events.ScheduleEvent(EVENT_FROST_NOVA, 17500ms, 25s);
- events.ScheduleEvent(EVENT_BLINK, 1500ms);
- break;
- default:
- break;
- }
- }
+ // expire movement, will prevent from running right back to victim after cast
+ // (but should MoveChase be used again at a certain time or should he not move?)
+ me->GetMotionMaster()->Clear(MOTION_PRIORITY_NORMAL);
- private:
- bool _hasTaunted;
- };
+ DoCast(me, SPELL_BLINK);
+ break;
+ case EVENT_BEACON:
+ if (!urand(0, 3))
+ Talk(SAY_SUMMON);
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetManaTombsAI<boss_nexusprince_shaffarAI>(creature);
+ DoCast(me, SPELL_ETHEREAL_BEACON, true);
+ events.ScheduleEvent(EVENT_BEACON, 10s);
+ break;
+ case EVENT_FIREBALL:
+ DoCastVictim(SPELL_FROSTBOLT);
+ events.ScheduleEvent(EVENT_FIREBALL, 4500ms, 6s);
+ break;
+ case EVENT_FROSTBOLT:
+ DoCastVictim(SPELL_FROSTBOLT);
+ events.ScheduleEvent(EVENT_FROSTBOLT, 4500ms, 6s);
+ break;
+ case EVENT_FROST_NOVA:
+ DoCast(me, SPELL_FROSTNOVA);
+ events.ScheduleEvent(EVENT_FROST_NOVA, 17500ms, 25s);
+ events.ScheduleEvent(EVENT_BLINK, 1500ms);
+ break;
+ default:
+ break;
}
+ }
+
+private:
+ bool _hasTaunted;
};
enum EtherealBeacon
@@ -196,71 +185,60 @@ enum EtherealBeacon
EVENT_ARCANE_BOLT
};
-class npc_ethereal_beacon : public CreatureScript
+struct npc_ethereal_beacon : public ScriptedAI
{
- public:
- npc_ethereal_beacon() : CreatureScript("npc_ethereal_beacon") { }
+ npc_ethereal_beacon(Creature* creature) : ScriptedAI(creature) { }
- struct npc_ethereal_beaconAI : public ScriptedAI
- {
- npc_ethereal_beaconAI(Creature* creature) : ScriptedAI(creature) { }
+ void Reset() override
+ {
+ _events.Reset();
+ }
- void Reset() override
- {
- _events.Reset();
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ if (Creature* shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100.0f))
+ if (!shaffar->IsInCombat())
+ shaffar->AI()->AttackStart(who);
- void JustEngagedWith(Unit* who) override
- {
- if (Creature* shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100.0f))
- if (!shaffar->IsInCombat())
- shaffar->AI()->AttackStart(who);
+ _events.ScheduleEvent(EVENT_APPRENTICE, DUNGEON_MODE(20s, 10s));
+ _events.ScheduleEvent(EVENT_ARCANE_BOLT, 1s);
+ }
- _events.ScheduleEvent(EVENT_APPRENTICE, DUNGEON_MODE(20s, 10s));
- _events.ScheduleEvent(EVENT_ARCANE_BOLT, 1s);
- }
+ void JustSummoned(Creature* summoned) override
+ {
+ summoned->AI()->AttackStart(me->GetVictim());
+ }
- void JustSummoned(Creature* summoned) override
- {
- summoned->AI()->AttackStart(me->GetVictim());
- }
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- _events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = _events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_APPRENTICE:
- DoCast(me, SPELL_ETHEREAL_APPRENTICE, true);
- me->DespawnOrUnsummon();
- break;
- case EVENT_ARCANE_BOLT:
- DoCastVictim(SPELL_ARCANE_BOLT);
- _events.ScheduleEvent(EVENT_ARCANE_BOLT, 2s, 4500ms);
- break;
- default:
- break;
- }
- }
- }
+ _events.Update(diff);
- private:
- EventMap _events;
- };
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- CreatureAI* GetAI(Creature* creature) const override
+ while (uint32 eventId = _events.ExecuteEvent())
{
- return GetManaTombsAI<npc_ethereal_beaconAI>(creature);
+ switch (eventId)
+ {
+ case EVENT_APPRENTICE:
+ DoCast(me, SPELL_ETHEREAL_APPRENTICE, true);
+ me->DespawnOrUnsummon();
+ break;
+ case EVENT_ARCANE_BOLT:
+ DoCastVictim(SPELL_ARCANE_BOLT);
+ _events.ScheduleEvent(EVENT_ARCANE_BOLT, 2s, 4500ms);
+ break;
+ default:
+ break;
+ }
}
+ }
+
+private:
+ EventMap _events;
};
enum EtherealApprentice
@@ -271,61 +249,50 @@ enum EtherealApprentice
EVENT_ETHEREAL_APPRENTICE_FROSTBOLT
};
-class npc_ethereal_apprentice : public CreatureScript
+struct npc_ethereal_apprentice : public ScriptedAI
{
- public:
- npc_ethereal_apprentice() : CreatureScript("npc_ethereal_apprentice") { }
+ npc_ethereal_apprentice(Creature* creature) : ScriptedAI(creature) { }
- struct npc_ethereal_apprenticeAI : public ScriptedAI
- {
- npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature) { }
+ void Reset() override
+ {
+ _events.Reset();
+ }
- void Reset() override
- {
- _events.Reset();
- }
+ void JustEngagedWith(Unit* /*who*/) override
+ {
+ _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3s);
+ }
- void JustEngagedWith(Unit* /*who*/) override
- {
- _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3s);
- }
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- _events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = _events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_ETHEREAL_APPRENTICE_FIREBOLT:
- DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true);
- _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FROSTBOLT, 3s);
- break;
- case EVENT_ETHEREAL_APPRENTICE_FROSTBOLT:
- DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true);
- _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3s);
- break;
- default:
- break;
- }
- }
- }
+ _events.Update(diff);
- private:
- EventMap _events;
- };
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- CreatureAI* GetAI(Creature* creature) const override
+ while (uint32 eventId = _events.ExecuteEvent())
{
- return GetManaTombsAI<npc_ethereal_apprenticeAI>(creature);
+ switch (eventId)
+ {
+ case EVENT_ETHEREAL_APPRENTICE_FIREBOLT:
+ DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true);
+ _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FROSTBOLT, 3s);
+ break;
+ case EVENT_ETHEREAL_APPRENTICE_FROSTBOLT:
+ DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true);
+ _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3s);
+ break;
+ default:
+ break;
+ }
}
+ }
+
+private:
+ EventMap _events;
};
enum Yor
@@ -334,60 +301,49 @@ enum Yor
EVENT_DOUBLE_BREATH = 1
};
-class npc_yor : public CreatureScript
+struct npc_yor : public ScriptedAI
{
-public:
- npc_yor() : CreatureScript("npc_yor") { }
+ npc_yor(Creature* creature) : ScriptedAI(creature) { }
- struct npc_yorAI : public ScriptedAI
+ void Reset() override { }
+
+ void JustEngagedWith(Unit* /*who*/) override
{
- npc_yorAI(Creature* creature) : ScriptedAI(creature) { }
+ _events.ScheduleEvent(EVENT_DOUBLE_BREATH, 6s, 9s);
+ }
- void Reset() override { }
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- void JustEngagedWith(Unit* /*who*/) override
- {
- _events.ScheduleEvent(EVENT_DOUBLE_BREATH, 6s, 9s);
- }
+ _events.Update(diff);
- void UpdateAI(uint32 diff) override
+ while (uint32 eventId = _events.ExecuteEvent())
{
- if (!UpdateVictim())
- return;
-
- _events.Update(diff);
-
- while (uint32 eventId = _events.ExecuteEvent())
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_DOUBLE_BREATH:
- if (me->IsWithinDist(me->GetVictim(), ATTACK_DISTANCE))
- DoCastVictim(SPELL_DOUBLE_BREATH);
- _events.ScheduleEvent(EVENT_DOUBLE_BREATH, 6s, 9s);
- break;
- default:
- break;
- }
+ case EVENT_DOUBLE_BREATH:
+ if (me->IsWithinDist(me->GetVictim(), ATTACK_DISTANCE))
+ DoCastVictim(SPELL_DOUBLE_BREATH);
+ _events.ScheduleEvent(EVENT_DOUBLE_BREATH, 6s, 9s);
+ break;
+ default:
+ break;
}
-
- DoMeleeAttackIfReady();
}
- private:
- EventMap _events;
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetManaTombsAI<npc_yorAI>(creature);
+ DoMeleeAttackIfReady();
}
+
+ private:
+ EventMap _events;
};
void AddSC_boss_nexusprince_shaffar()
{
- new boss_nexusprince_shaffar();
- new npc_ethereal_beacon();
- new npc_ethereal_apprentice();
- new npc_yor();
+ RegisterManaTombsCreatureAI(boss_nexusprince_shaffar);
+ RegisterManaTombsCreatureAI(npc_ethereal_beacon);
+ RegisterManaTombsCreatureAI(npc_ethereal_apprentice);
+ RegisterManaTombsCreatureAI(npc_yor);
}
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp
index 2e37a268f26..7e27d248182 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp
@@ -41,87 +41,76 @@ enum Events
uint32 constexpr DARK_SHELL_EVENT_GROUP = 1;
-class boss_pandemonius : public CreatureScript
+struct boss_pandemonius : public BossAI
{
-public:
- boss_pandemonius() : CreatureScript("boss_pandemonius") { }
-
- struct boss_pandemoniusAI : public BossAI
+ boss_pandemonius(Creature* creature) : BossAI(creature, DATA_PANDEMONIUS)
{
- boss_pandemoniusAI(Creature* creature) : BossAI(creature, DATA_PANDEMONIUS)
- {
- VoidBlastCounter = 0;
- }
+ VoidBlastCounter = 0;
+ }
- void Reset() override
- {
- _Reset();
- VoidBlastCounter = 0;
- }
+ void Reset() override
+ {
+ _Reset();
+ VoidBlastCounter = 0;
+ }
- void JustDied(Unit* /*killer*/) override
- {
- Talk(SAY_DEATH);
- }
+ void JustDied(Unit* /*killer*/) override
+ {
+ Talk(SAY_DEATH);
+ }
- void KilledUnit(Unit* /*victim*/) override
- {
- Talk(SAY_KILL);
- }
+ void KilledUnit(Unit* /*victim*/) override
+ {
+ Talk(SAY_KILL);
+ }
- void JustEngagedWith(Unit* who) override
- {
- BossAI::JustEngagedWith(who);
- Talk(SAY_AGGRO);
- events.ScheduleEvent(EVENT_DARK_SHELL, 20s, DARK_SHELL_EVENT_GROUP);
- events.ScheduleEvent(EVENT_VOID_BLAST, 8s, 23s);
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ BossAI::JustEngagedWith(who);
+ Talk(SAY_AGGRO);
+ events.ScheduleEvent(EVENT_DARK_SHELL, 20s, DARK_SHELL_EVENT_GROUP);
+ events.ScheduleEvent(EVENT_VOID_BLAST, 8s, 23s);
+ }
- void ExecuteEvent(uint32 eventId) override
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
{
- switch (eventId)
- {
- case EVENT_VOID_BLAST:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
- {
- DoCast(target, SPELL_VOID_BLAST);
- ++VoidBlastCounter;
- }
-
- if (VoidBlastCounter == 5)
- {
- VoidBlastCounter = 0;
- events.ScheduleEvent(EVENT_VOID_BLAST, 15s, 25s);
- }
- else
- {
- events.ScheduleEvent(EVENT_VOID_BLAST, 500ms);
- events.DelayEvents(500ms, DARK_SHELL_EVENT_GROUP);
- }
- break;
- case EVENT_DARK_SHELL:
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(true);
- Talk(EMOTE_DARK_SHELL);
- DoCast(me, SPELL_DARK_SHELL);
- events.ScheduleEvent(EVENT_DARK_SHELL, 20s, DARK_SHELL_EVENT_GROUP);
- break;
- default:
- break;
- }
+ case EVENT_VOID_BLAST:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
+ {
+ DoCast(target, SPELL_VOID_BLAST);
+ ++VoidBlastCounter;
+ }
+
+ if (VoidBlastCounter == 5)
+ {
+ VoidBlastCounter = 0;
+ events.ScheduleEvent(EVENT_VOID_BLAST, 15s, 25s);
+ }
+ else
+ {
+ events.ScheduleEvent(EVENT_VOID_BLAST, 500ms);
+ events.DelayEvents(500ms, DARK_SHELL_EVENT_GROUP);
+ }
+ break;
+ case EVENT_DARK_SHELL:
+ if (me->IsNonMeleeSpellCast(false))
+ me->InterruptNonMeleeSpells(true);
+ Talk(EMOTE_DARK_SHELL);
+ DoCast(me, SPELL_DARK_SHELL);
+ events.ScheduleEvent(EVENT_DARK_SHELL, 20s, DARK_SHELL_EVENT_GROUP);
+ break;
+ default:
+ break;
}
-
- private:
- uint32 VoidBlastCounter;
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetManaTombsAI<boss_pandemoniusAI>(creature);
}
+
+ private:
+ uint32 VoidBlastCounter;
};
void AddSC_boss_pandemonius()
{
- new boss_pandemonius();
+ RegisterManaTombsCreatureAI(boss_pandemonius);
}
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h b/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h
index 2b6844017f0..6c982df370b 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h
@@ -40,4 +40,6 @@ inline AI* GetManaTombsAI(T* obj)
return GetInstanceAI<AI>(obj, MTScriptName);
}
+#define RegisterManaTombsCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetManaTombsAI)
+
#endif // MANA_TOMBS_H_