aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp29
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp71
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp10
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp10
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp9
6 files changed, 63 insertions, 72 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp
index 44a27e6938f..38e930b8533 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp
@@ -75,9 +75,9 @@ public:
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- events.ScheduleEvent(EVENT_FIRENOVA, 6 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_FLAMEBUFFET, 3 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_PYROBLAST, 14 * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_FIRENOVA, 6000);
+ events.ScheduleEvent(EVENT_FLAMEBUFFET, 3000);
+ events.ScheduleEvent(EVENT_PYROBLAST, 14000);
}
void JustDied(Unit* /*killer*/)
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
index e0aede6cd1b..1edc669e548 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
@@ -93,17 +93,13 @@ class boss_akilzon : public CreatureScript
void Reset()
{
- if (instance)
- instance->SetData(DATA_AKILZONEVENT, NOT_STARTED);
+ _Reset();
TargetGUID = 0;
CloudGUID = 0;
CycloneGUID = 0;
- DespawnSummons();
memset(BirdGUIDs, 0, sizeof(BirdGUIDs));
-
StormCount = 0;
-
isRaining = false;
SetWeather(WEATHER_STATE_FINE, 0.0f);
@@ -127,9 +123,7 @@ class boss_akilzon : public CreatureScript
void JustDied(Unit* /*killer*/)
{
Talk(SAY_DEATH);
- if (instance)
- instance->SetData(DATA_AKILZONEVENT, DONE);
- DespawnSummons();
+ _JustDied();
}
void KilledUnit(Unit* /*victim*/)
@@ -137,19 +131,6 @@ class boss_akilzon : public CreatureScript
Talk(SAY_KILL);
}
- void DespawnSummons()
- {
- for (uint8 i = 0; i < 8; ++i)
- {
- Unit* bird = Unit::GetUnit(*me, BirdGUIDs[i]);
- if (bird && bird->IsAlive())
- {
- bird->SetVisible(false);
- bird->setDeathState(JUST_DIED);
- }
- }
- }
-
void SetWeather(uint32 weather, float grade)
{
Map* map = me->GetMap();
@@ -187,7 +168,8 @@ class boss_akilzon : public CreatureScript
cell.Visit(p, world_unit_searcher, *me->GetMap(), *me, SIZE_OF_GRIDS);
cell.Visit(p, grid_unit_searcher, *me->GetMap(), *me, SIZE_OF_GRIDS);
}
- //dealdamege
+
+ // deal damage
for (std::list<Unit*>::const_iterator i = tempUnitMap.begin(); i != tempUnitMap.end(); ++i)
{
if (Unit* target = (*i))
@@ -196,6 +178,7 @@ class boss_akilzon : public CreatureScript
Cloud->CastCustomSpell(target, SPELL_ZAP, &bp0, NULL, NULL, true, 0, 0, me->GetGUID());
}
}
+
// visual
float x, y, z;
z = me->GetPositionZ();
@@ -214,7 +197,9 @@ class boss_akilzon : public CreatureScript
}
}
}
+
++StormCount;
+
if (StormCount > 10)
{
StormCount = 0; // finish
diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp
index 535d9a4425b..525f71b7d01 100644
--- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp
+++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp
@@ -21,8 +21,14 @@
enum Spells
{
- SPELL_POISON_CLOUD = 3815,
- SPELL_FRENZIED_RAGE = 3490
+ SPELL_POISON_CLOUD = 3815,
+ SPELL_FRENZIED_RAGE = 3490
+};
+
+enum Events
+{
+ EVENT_POISON_CLOUD = 1,
+ EVENT_FRENZIED_RAGE = 2
};
class boss_aku_mai : public CreatureScript
@@ -30,41 +36,25 @@ class boss_aku_mai : public CreatureScript
public:
boss_aku_mai() : CreatureScript("boss_aku_mai") { }
- CreatureAI* GetAI(Creature* creature) const
+ struct boss_aku_maiAI : public BossAI
{
- return new boss_aku_maiAI (creature);
- }
-
- struct boss_aku_maiAI : public ScriptedAI
- {
- boss_aku_maiAI(Creature* creature) : ScriptedAI(creature)
- {
- instance = creature->GetInstanceScript();
- }
-
- uint32 poisonCloudTimer;
- bool IsEnraged;
-
- InstanceScript* instance;
+ boss_aku_maiAI(Creature* creature) : BossAI(creature, TYPE_AKU_MAI) { }
void Reset()
{
- poisonCloudTimer = urand(5000, 9000);
IsEnraged = false;
- if (instance)
- instance->SetData(TYPE_AKU_MAI, NOT_STARTED);
+ _Reset();
}
void EnterCombat(Unit* /*who*/)
{
- if (instance)
- instance->SetData(TYPE_AKU_MAI, IN_PROGRESS);
+ events.ScheduleEvent(EVENT_POISON_CLOUD, urand(5000, 9000));
+ _EnterCombat();
}
void JustDied(Unit* /*killer*/)
{
- if (instance)
- instance->SetData(TYPE_AKU_MAI, DONE);
+ _JustDied();
}
void UpdateAI(uint32 diff)
@@ -72,21 +62,38 @@ public:
if (!UpdateVictim())
return;
- if (poisonCloudTimer < diff)
- {
- DoCastVictim(SPELL_POISON_CLOUD);
- poisonCloudTimer = urand(25000, 50000);
- } else poisonCloudTimer -= diff;
+ events.Update(diff);
if (!IsEnraged && HealthBelowPct(30))
+ events.ScheduleEvent(EVENT_FRENZIED_RAGE, 100);
+
+ while (uint32 eventId = events.ExecuteEvent())
{
- DoCast(me, SPELL_FRENZIED_RAGE);
- IsEnraged = true;
+ switch (eventId)
+ {
+ case EVENT_POISON_CLOUD:
+ DoCastVictim(SPELL_POISON_CLOUD);
+ events.ScheduleEvent(EVENT_POISON_CLOUD, urand(25000, 50000));
+ break;
+ case EVENT_FRENZIED_RAGE:
+ DoCast(me, SPELL_FRENZIED_RAGE);
+ IsEnraged = true;
+ break;
+ default:
+ break;
+ }
}
-
DoMeleeAttackIfReady();
}
+
+ private:
+ bool IsEnraged;
};
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_aku_maiAI (creature);
+ }
};
void AddSC_boss_aku_mai()
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp
index 498a4368168..39428e07fd8 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp
@@ -135,12 +135,12 @@ public:
}
DoMeleeAttackIfReady();
}
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new boss_aeonusAI (creature);
- }
};
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_aeonusAI (creature);
+ }
};
void AddSC_boss_aeonus()
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp
index d02dc0dd359..bd217ce51ee 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp
@@ -140,12 +140,12 @@ public:
DoMeleeAttackIfReady();
}
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new boss_chrono_lord_dejaAI (creature);
- }
};
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_chrono_lord_dejaAI (creature);
+ }
};
void AddSC_boss_chrono_lord_deja()
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp
index 8ded2388083..f679fa4ee62 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp
@@ -138,13 +138,12 @@ public:
}
DoMeleeAttackIfReady();
}
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new boss_temporusAI (creature);
- }
};
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_temporusAI (creature);
+ }
};
void AddSC_boss_temporus()