From 561cc47a0021d23d2a2f3106002a8ef44735ec65 Mon Sep 17 00:00:00 2001 From: Nyeriah Date: Wed, 10 Sep 2014 03:45:44 -0300 Subject: Scripts/AV: Captain Galvangar updated to EventMaps --- .../AlteracValley/boss_galvangar.cpp | 133 ++++++++++----------- 1 file changed, 65 insertions(+), 68 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp index e422975bd1a..0c029537add 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp @@ -27,11 +27,20 @@ enum Spells SPELL_MORTAL_STRIKE = 16856 }; -enum Yells +enum Texts { - YELL_AGGRO = 0, - YELL_EVADE = 1, - YELL_BUFF = 2 + SAY_AGGRO = 0, + SAY_EVADE = 1, + SAY_BUFF = 2 +}; + +enum Events +{ + EVENT_CLEAVE = 1, + EVENT_FRIGHTENING_SHOUT, + EVENT_WHIRLWIND1, + EVENT_WHIRLWIND2, + EVENT_MORTAL_STRIKE }; enum Action @@ -46,97 +55,85 @@ public: struct boss_galvangarAI : public ScriptedAI { - boss_galvangarAI(Creature* creature) : ScriptedAI(creature) - { - Initialize(); - } - - void Initialize() - { - CleaveTimer = urand(1 * IN_MILLISECONDS, 9 * IN_MILLISECONDS); - FrighteningShoutTimer = urand(2 * IN_MILLISECONDS, 19 * IN_MILLISECONDS); - Whirlwind1Timer = urand(1 * IN_MILLISECONDS, 13 * IN_MILLISECONDS); - Whirlwind2Timer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS); - MortalStrikeTimer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS); - ResetTimer = 5 * IN_MILLISECONDS; - } - - uint32 CleaveTimer; - uint32 FrighteningShoutTimer; - uint32 Whirlwind1Timer; - uint32 Whirlwind2Timer; - uint32 MortalStrikeTimer; - uint32 ResetTimer; + boss_galvangarAI(Creature* creature) : ScriptedAI(creature) { } void Reset() override { - Initialize(); + events.Reset(); } void EnterCombat(Unit* /*who*/) override { - Talk(YELL_AGGRO); - } - - void JustRespawned() override - { - Reset(); + Talk(SAY_AGGRO); + events.ScheduleEvent(EVENT_CLEAVE, urand(1 * IN_MILLISECONDS, 9 * IN_MILLISECONDS)); + events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, urand(2 * IN_MILLISECONDS, 19 * IN_MILLISECONDS)); + events.ScheduleEvent(EVENT_WHIRLWIND1, urand(1 * IN_MILLISECONDS, 13 * IN_MILLISECONDS)); + events.ScheduleEvent(EVENT_WHIRLWIND2, urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS)); + events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS)); } void DoAction(int32 actionId) override { if (actionId == ACTION_BUFF_YELL) - Talk(YELL_BUFF); + Talk(SAY_BUFF); } - void UpdateAI(uint32 diff) override + bool CheckInRoom() { - if (!UpdateVictim()) - return; - - if (CleaveTimer <= diff) + if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) { - DoCastVictim(SPELL_CLEAVE); - CleaveTimer = urand(10 * IN_MILLISECONDS, 16 * IN_MILLISECONDS); - } else CleaveTimer -= diff; + EnterEvadeMode(); + Talk(SAY_EVADE); + return false; + } - if (FrighteningShoutTimer <= diff) - { - DoCastVictim(SPELL_FRIGHTENING_SHOUT); - FrighteningShoutTimer = urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS); - } else FrighteningShoutTimer -= diff; + return true; + } - if (Whirlwind1Timer <= diff) - { - DoCastVictim(SPELL_WHIRLWIND1); - Whirlwind1Timer = urand(6 * IN_MILLISECONDS, 10 * IN_MILLISECONDS); - } else Whirlwind1Timer -= diff; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim() || !CheckInRoom()) + return; - if (Whirlwind2Timer <= diff) - { - DoCastVictim(SPELL_WHIRLWIND2); - Whirlwind2Timer = urand(10 * IN_MILLISECONDS, 25 * IN_MILLISECONDS); - } else Whirlwind2Timer -= diff; + events.Update(diff); - if (MortalStrikeTimer <= diff) - { - DoCastVictim(SPELL_MORTAL_STRIKE); - MortalStrikeTimer = urand(10 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); - } else MortalStrikeTimer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - // check if creature is not outside of building - if (ResetTimer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) + switch (eventId) { - EnterEvadeMode(); - Talk(YELL_EVADE); + case EVENT_CLEAVE: + DoCastVictim(SPELL_CLEAVE); + events.ScheduleEvent(EVENT_CLEAVE, urand(10 * IN_MILLISECONDS, 16 * IN_MILLISECONDS)); + break; + case EVENT_FRIGHTENING_SHOUT: + DoCastVictim(SPELL_FRIGHTENING_SHOUT); + events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS)); + break; + case EVENT_WHIRLWIND1: + DoCastVictim(SPELL_WHIRLWIND1); + events.ScheduleEvent(EVENT_WHIRLWIND1, urand(6 * IN_MILLISECONDS, 10 * IN_MILLISECONDS)); + break; + case EVENT_WHIRLWIND2: + DoCastVictim(SPELL_WHIRLWIND2); + events.ScheduleEvent(EVENT_WHIRLWIND2, urand(10 * IN_MILLISECONDS, 25 * IN_MILLISECONDS)); + break; + case EVENT_MORTAL_STRIKE: + DoCastVictim(SPELL_MORTAL_STRIKE); + events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(10 * IN_MILLISECONDS, 30 * IN_MILLISECONDS)); + break; + default: + break; } - ResetTimer = 5 * IN_MILLISECONDS; - } else ResetTimer -= diff; + } DoMeleeAttackIfReady(); } + + private: + EventMap events; }; CreatureAI* GetAI(Creature* creature) const override -- cgit v1.2.3 From b35edcabb6023683a3459112ce76214cad095277 Mon Sep 17 00:00:00 2001 From: Nyeriah Date: Thu, 11 Sep 2014 03:25:15 -0300 Subject: Scripts/AV: Drekthar updated to EventMaps --- .../AlteracValley/boss_drekthar.cpp | 130 +++++++++++---------- 1 file changed, 66 insertions(+), 64 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp index 49c5a61b7d0..d9b0c1490b5 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp @@ -30,12 +30,21 @@ enum Spells SPELL_STORMPIKE = 51876 // not sure }; -enum Yells +enum Texts { - YELL_AGGRO = 0, - YELL_EVADE = 1, - YELL_RESPAWN = 2, - YELL_RANDOM = 3 + SAY_AGGRO = 0, + SAY_EVADE = 1, + SAY_RESPAWN = 2, + SAY_RANDOM = 3 +}; + +enum Events +{ + EVENT_WHIRLWIND = 1, + EVENT_WHIRLWIND2, + EVENT_KNOCKDOWN, + EVENT_FRENZY, + EVENT_RANDOM_YELL }; class boss_drekthar : public CreatureScript @@ -45,92 +54,85 @@ public: struct boss_drektharAI : public ScriptedAI { - boss_drektharAI(Creature* creature) : ScriptedAI(creature) - { - Initialize(); - } - - void Initialize() - { - WhirlwindTimer = urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS); - Whirlwind2Timer = urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS); - KnockdownTimer = 12 * IN_MILLISECONDS; - FrenzyTimer = 6 * IN_MILLISECONDS; - ResetTimer = 5 * IN_MILLISECONDS; - YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds - } - - uint32 WhirlwindTimer; - uint32 Whirlwind2Timer; - uint32 KnockdownTimer; - uint32 FrenzyTimer; - uint32 YellTimer; - uint32 ResetTimer; + boss_drektharAI(Creature* creature) : ScriptedAI(creature) { } void Reset() override { - Initialize(); + events.Reset(); } void EnterCombat(Unit* /*who*/) override { - Talk(YELL_AGGRO); + Talk(SAY_AGGRO); + events.ScheduleEvent(EVENT_WHIRLWIND, urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS)); + events.ScheduleEvent(EVENT_WHIRLWIND2, urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS)); + events.ScheduleEvent(EVENT_KNOCKDOWN, 12 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_FRENZY, 6 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_RANDOM_YELL, urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS)); //20 to 30 seconds } void JustRespawned() override { Reset(); - Talk(YELL_RESPAWN); + Talk(SAY_RESPAWN); } - void UpdateAI(uint32 diff) override + bool CheckInRoom() { - if (!UpdateVictim()) - return; - - if (WhirlwindTimer <= diff) + if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) { - DoCastVictim(SPELL_WHIRLWIND); - WhirlwindTimer = urand(8 * IN_MILLISECONDS, 18 * IN_MILLISECONDS); - } else WhirlwindTimer -= diff; + EnterEvadeMode(); + Talk(SAY_EVADE); + return false; + } - if (Whirlwind2Timer <= diff) - { - DoCastVictim(SPELL_WHIRLWIND2); - Whirlwind2Timer = urand(7 * IN_MILLISECONDS, 25 * IN_MILLISECONDS); - } else Whirlwind2Timer -= diff; + return true; + } - if (KnockdownTimer <= diff) - { - DoCastVictim(SPELL_KNOCKDOWN); - KnockdownTimer = urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS); - } else KnockdownTimer -= diff; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim() || !CheckInRoom()) + return; - if (FrenzyTimer <= diff) - { - DoCastVictim(SPELL_FRENZY); - FrenzyTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); - } else FrenzyTimer -= diff; + events.Update(diff); - if (YellTimer <= diff) - { - Talk(YELL_RANDOM); - YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds - } else YellTimer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - // check if creature is not outside of building - if (ResetTimer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) + switch (eventId) { - EnterEvadeMode(); - Talk(YELL_EVADE); + case EVENT_WHIRLWIND: + DoCastVictim(SPELL_WHIRLWIND); + events.ScheduleEvent(EVENT_WHIRLWIND, urand(8 * IN_MILLISECONDS, 18 * IN_MILLISECONDS)); + break; + case EVENT_WHIRLWIND2: + DoCastVictim(SPELL_WHIRLWIND2); + events.ScheduleEvent(EVENT_WHIRLWIND2, urand(7 * IN_MILLISECONDS, 25 * IN_MILLISECONDS)); + break; + case EVENT_KNOCKDOWN: + DoCastVictim(SPELL_KNOCKDOWN); + events.ScheduleEvent(EVENT_KNOCKDOWN, urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS)); + break; + case EVENT_FRENZY: + DoCastVictim(SPELL_FRENZY); + events.ScheduleEvent(EVENT_FRENZY, urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS)); + break; + case EVENT_RANDOM_YELL: + Talk(SAY_RANDOM); + events.ScheduleEvent(EVENT_RANDOM_YELL, urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS)); + break; + default: + break; } - ResetTimer = 5 * IN_MILLISECONDS; - } else ResetTimer -= diff; + } DoMeleeAttackIfReady(); } + + private: + EventMap events; }; CreatureAI* GetAI(Creature* creature) const override -- cgit v1.2.3 From 1e3aa97098bb04e8f1312dc40e692d1a2f90b5ae Mon Sep 17 00:00:00 2001 From: MitchesD Date: Thu, 11 Sep 2014 15:12:28 +0200 Subject: Scripts/Misc: some small changes after recent commits --- .../EasternKingdoms/AlteracValley/boss_balinda.cpp | 2 +- .../EasternKingdoms/Scholomance/boss_jandice_barov.cpp | 4 ++-- .../Scholomance/boss_ras_frostwhisper.cpp | 2 +- .../scripts/EasternKingdoms/Scholomance/boss_vectus.cpp | 1 - src/server/scripts/Northrend/Gundrak/boss_eck.cpp | 17 ++++++++--------- .../scripts/Northrend/Gundrak/instance_gundrak.cpp | 4 ++-- .../Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp | 3 +-- .../HellfireCitadel/BloodFurnace/boss_broggok.cpp | 1 - 8 files changed, 15 insertions(+), 19 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp index ca46ff36079..651e487522d 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp @@ -72,7 +72,7 @@ public: void Reset() override { Initialize(); - + events.Reset(); summons.DespawnAll(); } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp index b218e3f2978..c5f7a5da6d7 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp @@ -21,7 +21,7 @@ enum Spells { SPELL_CURSE_OF_BLOOD = 24673, - SPELL_ILLUSION = 17773, + SPELL_ILLUSION = 17773 }; enum Events @@ -113,7 +113,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_jandicebarovAI(creature); + return GetInstanceAI(creature); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp index 897799a708c..348e2212870 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp @@ -81,7 +81,7 @@ public: events.ScheduleEvent(EVENT_ICE_ARMOR, 180000); break; case EVENT_FROSTBOLT: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true)) DoCast(target, SPELL_FROSTBOLT); events.ScheduleEvent(EVENT_FROSTBOLT, 8000); break; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp index 792649f2998..dcb212eead8 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp @@ -106,7 +106,6 @@ public: EventMap events; }; - CreatureAI* GetAI(Creature* creature) const override { return new boss_vectusAI(creature); diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index 4803cb4934f..9f8cc818958 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -44,6 +44,11 @@ public: struct boss_eckAI : public BossAI { boss_eckAI(Creature* creature) : BossAI(creature, DATA_ECK_THE_FEROCIOUS_EVENT) + { + Initialize(); + } + + void Initialize() { Berserk = false; } @@ -51,7 +56,7 @@ public: void Reset() override { _Reset(); - Berserk = false; + Initialize(); } void EnterCombat(Unit* /*who*/) override @@ -85,9 +90,8 @@ public: events.ScheduleEvent(EVENT_SPIT, urand(6 * IN_MILLISECONDS, 14 * IN_MILLISECONDS)); break; case EVENT_SPRING: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) - if (target->GetTypeId() == TYPEID_PLAYER) - DoCast(target, RAND(SPELL_ECK_SPRING_1, SPELL_ECK_SPRING_2)); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 35.0f, true)) + DoCast(target, RAND(SPELL_ECK_SPRING_1, SPELL_ECK_SPRING_2)); events.ScheduleEvent(EVENT_SPRING, urand(5 * IN_MILLISECONDS, 10 * IN_MILLISECONDS)); break; case EVENT_BERSERK: @@ -99,11 +103,6 @@ public: } } - void JustDied(Unit* /*killer*/) override - { - _JustDied(); - } - private: bool Berserk; }; diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp index ee3069b5eb2..388d43e8dca 100644 --- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp +++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp @@ -31,7 +31,7 @@ 4 - Eck the Ferocious */ -static Position EckSpawnPoint = {1643.877930f, 936.278015f, 107.204948f, 0.668432f}; +Position const EckSpawnPoint = { 1643.877930f, 936.278015f, 107.204948f, 0.668432f }; class instance_gundrak : public InstanceMapScript { @@ -136,7 +136,7 @@ public: memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); } - bool IsEncounterInProgress() const override + bool IsEncounterInProgress() const override { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (m_auiEncounter[i] == IN_PROGRESS) diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp index d9a66f7b420..8bc0ba1722a 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp @@ -39,7 +39,6 @@ enum Events EVENT_DARK_SHELL }; - class boss_pandemonius : public CreatureScript { public: @@ -81,7 +80,7 @@ public: switch (eventId) { case EVENT_VOID_BLAST: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true)) { DoCast(target, SPELL_VOID_BLAST); ++VoidBlastCounter; diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index bd16fe9edd2..15c660b4ad7 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -114,7 +114,6 @@ class boss_broggok : public CreatureScript break; } } - }; CreatureAI* GetAI(Creature* creature) const override -- cgit v1.2.3