aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2014-09-06 02:41:45 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2014-09-06 02:41:45 +0200
commitfe99efd6fa2ea879970d4984361edc6b29d949b5 (patch)
treeeb35a3453fcc88b88a7cf0c962d7b4b218bdd42d /src/server/scripts/Outland
parent9a4f062b266315c99d5d2f018abc5161b890f81f (diff)
parent7f93e1e56e205c974b7644c6efa80fec11a6a78b (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/scripts/Commands/cs_misc.cpp src/server/scripts/Events/childrens_week.cpp src/server/scripts/Kalimdor/boss_azuregos.cpp src/server/scripts/Kalimdor/zone_azshara.cpp src/server/scripts/Kalimdor/zone_darkshore.cpp src/server/scripts/Kalimdor/zone_durotar.cpp src/server/scripts/Kalimdor/zone_moonglade.cpp src/server/scripts/Kalimdor/zone_mulgore.cpp src/server/scripts/Kalimdor/zone_orgrimmar.cpp src/server/scripts/Kalimdor/zone_thousand_needles.cpp src/server/scripts/Kalimdor/zone_ungoro_crater.cpp src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp103
1 files changed, 54 insertions, 49 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp
index f7f901a9349..f3e2f61a6fb 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp
@@ -25,18 +25,26 @@ EndScriptData */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
+#include "mana_tombs.h"
-enum Pandemonius
+enum Texts
{
SAY_AGGRO = 0,
SAY_KILL = 1,
SAY_DEATH = 2,
- EMOTE_DARK_SHELL = 3,
+ EMOTE_DARK_SHELL = 3
+};
- SPELL_VOID_BLAST = 32325,
- H_SPELL_VOID_BLAST = 38760,
- SPELL_DARK_SHELL = 32358,
- H_SPELL_DARK_SHELL = 38759
+enum Spells
+{
+ SPELL_VOID_BLAST = 32325,
+ SPELL_DARK_SHELL = 32358
+};
+
+enum Events
+{
+ EVENT_VOID_BLAST = 1,
+ EVENT_DARK_SHELL
};
class boss_pandemonius : public CreatureScript
@@ -44,26 +52,17 @@ class boss_pandemonius : public CreatureScript
public:
boss_pandemonius() : CreatureScript("boss_pandemonius") { }
- CreatureAI* GetAI(Creature* creature) const override
+ struct boss_pandemoniusAI : public BossAI
{
- return new boss_pandemoniusAI(creature);
- }
-
- struct boss_pandemoniusAI : public ScriptedAI
- {
- boss_pandemoniusAI(Creature* creature) : ScriptedAI(creature)
+ boss_pandemoniusAI(Creature* creature) : BossAI(creature, DATA_PANDEMONIUS)
{
+ VoidBlastCounter = 0;
}
- uint32 VoidBlast_Timer;
- uint32 DarkShell_Timer;
- uint32 VoidBlast_Counter;
-
void Reset() override
{
- VoidBlast_Timer = 8000 + rand32() % 15000;
- DarkShell_Timer = 20000;
- VoidBlast_Counter = 0;
+ _Reset();
+ VoidBlastCounter = 0;
}
void JustDied(Unit* /*killer*/) override
@@ -78,48 +77,54 @@ public:
void EnterCombat(Unit* /*who*/) override
{
+ _EnterCombat();
Talk(SAY_AGGRO);
+ events.ScheduleEvent(EVENT_DARK_SHELL, 20000);
+ events.ScheduleEvent(EVENT_VOID_BLAST, urand(8000, 23000));
}
- void UpdateAI(uint32 diff) override
+ void ExecuteEvent(uint32 eventId) override
{
- if (!UpdateVictim())
- return;
-
- if (VoidBlast_Timer <= diff)
- {
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- {
- DoCast(target, SPELL_VOID_BLAST);
- VoidBlast_Timer = 500;
- ++VoidBlast_Counter;
- }
-
- if (VoidBlast_Counter == 5)
- {
- VoidBlast_Timer = 15000 + rand32() % 10000;
- VoidBlast_Counter = 0;
- }
- } else VoidBlast_Timer -= diff;
-
- if (!VoidBlast_Counter)
+ switch (eventId)
{
- if (DarkShell_Timer <= diff)
- {
+ case EVENT_VOID_BLAST:
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
+ {
+ DoCast(target, SPELL_VOID_BLAST);
+ ++VoidBlastCounter;
+ }
+
+ if (VoidBlastCounter == 5)
+ {
+ VoidBlastCounter = 0;
+ events.ScheduleEvent(EVENT_VOID_BLAST, urand(15000, 25000));
+ }
+ else
+ {
+ events.ScheduleEvent(EVENT_VOID_BLAST, 500);
+ events.DelayEvents(EVENT_DARK_SHELL, 500);
+ }
+ break;
+ case EVENT_DARK_SHELL:
if (me->IsNonMeleeSpellCast(false))
me->InterruptNonMeleeSpells(true);
-
Talk(EMOTE_DARK_SHELL);
-
DoCast(me, SPELL_DARK_SHELL);
- DarkShell_Timer = 20000;
- } else DarkShell_Timer -= diff;
+ events.ScheduleEvent(EVENT_DARK_SHELL, 20000);
+ break;
+ default:
+ break;
}
-
- DoMeleeAttackIfReady();
}
+
+ private:
+ uint32 VoidBlastCounter;
};
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetManaTombsAI<boss_pandemoniusAI>(creature);
+ }
};
void AddSC_boss_pandemonius()