aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMalcrom <malcromdev@gmail.com>2013-07-10 00:13:36 -0230
committerMalcrom <malcromdev@gmail.com>2013-07-10 00:13:36 -0230
commit81d8739d68e2ca2b537e5d4f81f8efff4f4b58e6 (patch)
tree19711b38a8c866b5668c58210d6dbc05581ce1b9 /src
parentea49f9817026bf7a0e50058af02b43f6d6bd3f01 (diff)
Core/Scripting: Converted Watchkeeper Gargolmar to use events.
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp83
1 files changed, 43 insertions, 40 deletions
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
index fe9e8013f6b..c3499c7e756 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
@@ -45,6 +45,13 @@ enum Spells
SPELL_RETALIATION = 22857
};
+enum Events
+{
+ EVENT_MORTAL_WOUND = 1,
+ EVENT_SURGE = 2,
+ EVENT_RETALIATION = 3
+};
+
class boss_watchkeeper_gargolmar : public CreatureScript
{
public:
@@ -56,19 +63,17 @@ class boss_watchkeeper_gargolmar : public CreatureScript
void Reset() OVERRIDE
{
- Surge_Timer = 5000;
- MortalWound_Timer = 4000;
- Retaliation_Timer = 0;
-
- HasTaunted = false;
- YelledForHeal = false;
-
+ hasTaunted = false;
+ yelledForHeal = false;
+ retaliation = false;
_Reset();
}
void EnterCombat(Unit* /*who*/) OVERRIDE
{
Talk(SAY_AGGRO);
+ events.ScheduleEvent(EVENT_MORTAL_WOUND, 5000);
+ events.ScheduleEvent(EVENT_SURGE, 4000);
_EnterCombat();
}
@@ -86,10 +91,10 @@ class boss_watchkeeper_gargolmar : public CreatureScript
//who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
AttackStart(who);
}
- else if (!HasTaunted && me->IsWithinDistInMap(who, 60.0f))
+ else if (!hasTaunted && me->IsWithinDistInMap(who, 60.0f))
{
Talk(SAY_TAUNT);
- HasTaunted = true;
+ hasTaunted = true;
}
}
}
@@ -110,43 +115,44 @@ class boss_watchkeeper_gargolmar : public CreatureScript
if (!UpdateVictim())
return;
- if (MortalWound_Timer <= diff)
+ while (uint32 eventId = events.ExecuteEvent())
{
- DoCastVictim(SPELL_MORTAL_WOUND);
- MortalWound_Timer = 5000+rand()%8000;
- }
- else
- MortalWound_Timer -= diff;
-
- if (Surge_Timer <= diff)
- {
- Talk(SAY_SURGE);
-
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_SURGE);
-
- Surge_Timer = 5000+rand()%8000;
+ switch (eventId)
+ {
+ case EVENT_MORTAL_WOUND:
+ DoCastVictim(SPELL_MORTAL_WOUND);
+ events.ScheduleEvent(EVENT_MORTAL_WOUND, urand (5000, 13000));
+ break;
+ case EVENT_SURGE:
+ Talk(SAY_SURGE);
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_SURGE);
+ events.ScheduleEvent(EVENT_SURGE, urand (5000, 13000));
+ break;
+ case EVENT_RETALIATION:
+ DoCast(me, SPELL_RETALIATION);
+ events.ScheduleEvent(EVENT_RETALIATION, 30000);
+ break;
+ default:
+ break;
+ }
}
- else
- Surge_Timer -= diff;
- if (HealthBelowPct(20))
+ if (!retaliation)
{
- if (Retaliation_Timer <= diff)
+ if (HealthBelowPct(20))
{
- DoCast(me, SPELL_RETALIATION);
- Retaliation_Timer = 30000;
+ events.ScheduleEvent(EVENT_RETALIATION, 1000);
+ retaliation = true;
}
- else
- Retaliation_Timer -= diff;
}
- if (!YelledForHeal)
+ if (!yelledForHeal)
{
if (HealthBelowPct(40))
{
Talk(SAY_HEAL);
- YelledForHeal = true;
+ yelledForHeal = true;
}
}
@@ -154,12 +160,9 @@ class boss_watchkeeper_gargolmar : public CreatureScript
}
private:
- uint32 Surge_Timer;
- uint32 MortalWound_Timer;
- uint32 Retaliation_Timer;
-
- bool HasTaunted;
- bool YelledForHeal;
+ bool hasTaunted;
+ bool yelledForHeal;
+ bool retaliation;
};
CreatureAI* GetAI(Creature* creature) const OVERRIDE