diff options
Diffstat (limited to 'src')
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() |