aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp98
1 files changed, 35 insertions, 63 deletions
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp
index 53680739e55..67e09ba4ac9 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,13 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_The_Maker
-SD%Complete: 80
-SDComment: Mind control no support
-SDCategory: Hellfire Citadel, Blood Furnace
-EndScriptData */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "blood_furnace.h"
@@ -42,6 +34,14 @@ enum Spells
SPELL_DOMINATION = 25772
};
+enum Events
+{
+ EVENT_ACID_SPRAY = 1,
+ EVENT_EXPLODING_BREAKER,
+ EVENT_DOMINATION,
+ EVENT_KNOCKDOWN
+};
+
class boss_the_maker : public CreatureScript
{
public:
@@ -51,24 +51,15 @@ class boss_the_maker : public CreatureScript
{
boss_the_makerAI(Creature* creature) : BossAI(creature, DATA_THE_MAKER) { }
- uint32 AcidSpray_Timer;
- uint32 ExplodingBreaker_Timer;
- uint32 Domination_Timer;
- uint32 Knockdown_Timer;
-
- void Reset() override
- {
- _Reset();
- AcidSpray_Timer = 15000;
- ExplodingBreaker_Timer = 6000;
- Domination_Timer = 120000;
- Knockdown_Timer = 10000;
- }
-
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
Talk(SAY_AGGRO);
+
+ events.ScheduleEvent(EVENT_ACID_SPRAY, 15000);
+ events.ScheduleEvent(EVENT_EXPLODING_BREAKER, 6000);
+ events.ScheduleEvent(EVENT_DOMINATION, 120000);
+ events.ScheduleEvent(EVENT_KNOCKDOWN, 10000);
}
void KilledUnit(Unit* who) override
@@ -83,49 +74,31 @@ class boss_the_maker : public CreatureScript
Talk(SAY_DIE);
}
- void UpdateAI(uint32 diff) override
+ void ExecuteEvent(uint32 eventId) override
{
- if (!UpdateVictim())
- return;
-
- if (AcidSpray_Timer <= diff)
- {
- DoCastVictim(SPELL_ACID_SPRAY);
- AcidSpray_Timer = 15000 + rand32() % 8000;
- }
- else
- AcidSpray_Timer -=diff;
-
- if (ExplodingBreaker_Timer <= diff)
+ switch (eventId)
{
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_EXPLODING_BREAKER);
- ExplodingBreaker_Timer = 4000 + rand32() % 8000;
+ case EVENT_ACID_SPRAY:
+ DoCastVictim(SPELL_ACID_SPRAY);
+ events.ScheduleEvent(EVENT_ACID_SPRAY, urand(15000, 23000));
+ break;
+ case EVENT_EXPLODING_BREAKER:
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30.0f, true))
+ DoCast(target, SPELL_EXPLODING_BREAKER);
+ events.ScheduleEvent(EVENT_EXPLODING_BREAKER, urand(4000, 12000));
+ break;
+ case EVENT_DOMINATION:
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true))
+ DoCast(target, SPELL_DOMINATION);
+ events.ScheduleEvent(EVENT_DOMINATION, 120000);
+ break;
+ case EVENT_KNOCKDOWN:
+ DoCastVictim(SPELL_KNOCKDOWN);
+ events.ScheduleEvent(EVENT_KNOCKDOWN, urand(4000, 12000));
+ break;
+ default:
+ break;
}
- else
- ExplodingBreaker_Timer -=diff;
-
- /* // Disabled until Core Support for mind control
- if (domination_timer_timer <= diff)
- {
- Unit* target;
- target = SelectUnit(SELECT_TARGET_RANDOM, 0);
-
- DoCast(target, SPELL_DOMINATION);
-
- domination_timer = 120000;
- } else domination_timer -=diff;
- */
-
- if (Knockdown_Timer <= diff)
- {
- DoCastVictim(SPELL_KNOCKDOWN);
- Knockdown_Timer = 4000 + rand32() % 8000;
- }
- else
- Knockdown_Timer -=diff;
-
- DoMeleeAttackIfReady();
}
};
@@ -139,4 +112,3 @@ void AddSC_boss_the_maker()
{
new boss_the_maker();
}
-