diff options
7 files changed, 31 insertions, 32 deletions
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp index 52078ceef8c..b094eb45dca 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp @@ -48,11 +48,6 @@ class boss_maleki_the_pallid : public CreatureScript public: boss_maleki_the_pallid() : CreatureScript("boss_maleki_the_pallid") { } - CreatureAI* GetAI(Creature* creature) const override - { - return GetInstanceAI<boss_maleki_the_pallidAI>(creature); - } - struct boss_maleki_the_pallidAI : public ScriptedAI { boss_maleki_the_pallidAI(Creature* creature) : ScriptedAI(creature) @@ -85,6 +80,9 @@ public: _events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + while (uint32 eventId = _events.ExecuteEvent()) { switch (eventId) @@ -111,11 +109,16 @@ public: DoMeleeAttackIfReady(); } + private: EventMap _events; InstanceScript* instance; }; + CreatureAI* GetAI(Creature* creature) const override + { + return GetInstanceAI<boss_maleki_the_pallidAI>(creature); + } }; void AddSC_boss_maleki_the_pallid() diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp index 6d9ccc5e882..0b3fa2e7caa 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp @@ -55,7 +55,8 @@ enum Events class boss_postmaster_malown : public CreatureScript { - public: boss_postmaster_malown() : CreatureScript("boss_postmaster_malown") { } + public: + boss_postmaster_malown() : CreatureScript("boss_postmaster_malown") { } struct boss_postmaster_malownAI : public BossAI { @@ -120,13 +121,14 @@ class boss_postmaster_malown : public CreatureScript break; } } + DoMeleeAttackIfReady(); } }; CreatureAI* GetAI(Creature* creature) const override { - return new boss_postmaster_malownAI(creature); + return GetInstanceAI<boss_postmaster_malownAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h index cb1cd3829b7..be2f526892a 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h @@ -37,9 +37,9 @@ enum Data64 enum Data { - TYPE_GELIHAST, - TYPE_KELRIS, - TYPE_AKU_MAI, + DATA_GELIHAST, + DATA_KELRIS, + DATA_AKU_MAI, DATA_FIRE, DATA_EVENT }; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp index 99790e6d70b..46008244aa6 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp @@ -28,7 +28,7 @@ enum Spells enum Events { EVENT_POISON_CLOUD = 1, - EVENT_FRENZIED_RAGE, + EVENT_FRENZIED_RAGE }; class boss_aku_mai : public CreatureScript @@ -38,7 +38,7 @@ public: struct boss_aku_maiAI : public BossAI { - boss_aku_maiAI(Creature* creature) : BossAI(creature, TYPE_AKU_MAI) + boss_aku_maiAI(Creature* creature) : BossAI(creature, DATA_AKU_MAI) { Initialize(); } @@ -69,23 +69,17 @@ public: } } - void UpdateAI(uint32 diff) override + void ExecuteEvent(uint32 eventId) override { - if (!UpdateVictim()) - return; - - events.Update(diff); - - while (uint32 eventId = events.ExecuteEvent()) + switch (eventId) { - if (eventId == EVENT_POISON_CLOUD) - { + case EVENT_POISON_CLOUD: DoCastVictim(SPELL_POISON_CLOUD); events.ScheduleEvent(EVENT_POISON_CLOUD, urand(25000, 50000)); - } + break; + default: + break; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp index 4e31bf8d64f..a68558b9c2f 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp @@ -36,7 +36,7 @@ public: struct boss_gelihastAI : public BossAI { - boss_gelihastAI(Creature* creature) : BossAI(creature, TYPE_GELIHAST) { } + boss_gelihastAI(Creature* creature) : BossAI(creature, DATA_GELIHAST) { } void EnterCombat(Unit* /*who*/) override { diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp index 4aed860b3be..4bff75d8efc 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp @@ -45,7 +45,7 @@ public: struct boss_kelrisAI : public BossAI { - boss_kelrisAI(Creature* creature) : BossAI(creature, TYPE_KELRIS) { } + boss_kelrisAI(Creature* creature) : BossAI(creature, DATA_KELRIS) { } void EnterCombat(Unit* /*who*/) override { @@ -58,7 +58,7 @@ public: void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); - instance->SetData(TYPE_KELRIS, DONE); + _JustDied(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp index 77bb3421070..458539f1daa 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp @@ -96,16 +96,16 @@ public: break; case GO_SHRINE_OF_GELIHAST: shrineOfGelihastGUID = go->GetGUID(); - if (GetBossState(TYPE_GELIHAST) != DONE) + if (GetBossState(DATA_GELIHAST) != DONE) go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); break; case GO_ALTAR_OF_THE_DEEPS: altarOfTheDeepsGUID = go->GetGUID(); - if (GetBossState(TYPE_AKU_MAI) != DONE) + if (GetBossState(DATA_AKU_MAI) != DONE) go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); break; case GO_AKU_MAI_DOOR: - if (GetBossState(TYPE_AKU_MAI) == DONE) + if (GetBossState(DATA_AKU_MAI) == DONE) HandleGameObject(ObjectGuid::Empty, true, go); mainDoorGUID = go->GetGUID(); break; @@ -170,12 +170,12 @@ public: switch (type) { - case TYPE_GELIHAST: + case DATA_GELIHAST: if (state == DONE) if (GameObject* go = instance->GetGameObject(shrineOfGelihastGUID)) go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); break; - case TYPE_AKU_MAI: + case DATA_AKU_MAI: if (state == DONE) if (GameObject* go = instance->GetGameObject(altarOfTheDeepsGUID)) { |