diff --git a/data/sql/updates/pending_db_world/rev_1636243951230286700.sql b/data/sql/updates/pending_db_world/rev_1636243951230286700.sql new file mode 100644 index 000000000..ae83f796b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1636243951230286700.sql @@ -0,0 +1,7 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1636243951230286700'); + +DELETE FROM `creature_formations` WHERE `leaderGUID` = 137971; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(137971, 137971, 0, 0, 515, 0, 0), +(137971, 90976, 0, 0, 515, 0, 0), +(137971, 90975, 0, 0, 515, 0, 0); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h index 5fb2739c3..225181b32 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h @@ -82,7 +82,8 @@ enum CreaturesIds NPC_UROK_MAGUS = 10602, NPC_UROK_ENFORCER = 10601, - NPC_FINKLE_EINHORN = 10776 + NPC_FINKLE_EINHORN = 10776, + NPC_CHROMATIC_ELITE_GUARD = 10814 }; enum AdditionalData diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp index 9226e8469..f666e9e24 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp @@ -53,9 +53,6 @@ enum ChromaticEliteGuardSpells SPELL_STRIKE = 15580 }; -constexpr uint32 ChromaticEliteGuardEntry = 10814; -constexpr uint32 GeneralDrakkisathEntry = 10814; - class boss_drakkisath : public CreatureScript { public: @@ -73,7 +70,6 @@ public: void EnterCombat(Unit* /*who*/) override { _EnterCombat(); - CallForHelp(); events.ScheduleEvent(EVENT_FLAMESTRIKE, 6000); events.ScheduleEvent(EVENT_CLEAVE, 8000); events.ScheduleEvent(EVENT_CONFLAGRATION, 15000); @@ -82,17 +78,6 @@ public: events.ScheduleEvent(EVENT_RAGE, 1000); } - // Will make his two adds engage combat - void CallForHelp() - { - std::list ChromaticEliteGuards; - me->GetCreaturesWithEntryInRange(ChromaticEliteGuards, 15.0f, ChromaticEliteGuardEntry); - for (std::list::const_iterator itr = ChromaticEliteGuards.begin(); itr != ChromaticEliteGuards.end(); ++itr) - { - (*itr)->ToCreature()->AI()->AttackStart(me->GetVictim()); - } - } - void JustDied(Unit* /*killer*/) override { _JustDied(); @@ -162,25 +147,12 @@ public: EventMap _events; - void EnterCombat(Unit* who) override + void EnterCombat(Unit* /*who*/) override { + _events.Reset(); _events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(5000, 12800)); _events.ScheduleEvent(EVENT_KNOCKDOWN, urand(5600, 15400)); _events.ScheduleEvent(EVENT_STRIKE, urand(12000, 20800)); - - std::list GeneralDrakkisath; - me->GetCreaturesWithEntryInRange(GeneralDrakkisath, 15.0f, GeneralDrakkisathEntry); - for (std::list::const_iterator itr = GeneralDrakkisath.begin(); itr != GeneralDrakkisath.end(); ++itr) - { - (*itr)->ToCreature()->AI()->AttackStart(who); - } - - std::list ChromaticEliteGuards; - me->GetCreaturesWithEntryInRange(ChromaticEliteGuards, 15.0f, ChromaticEliteGuardEntry); - for (std::list::const_iterator itr = ChromaticEliteGuards.begin(); itr != ChromaticEliteGuards.end(); ++itr) - { - (*itr)->ToCreature()->AI()->AttackStart(who); - } } void UpdateAI(uint32 diff) override @@ -190,20 +162,23 @@ public: _events.Update(diff); - switch (_events.ExecuteEvent()) + while (uint32 const eventId = _events.ExecuteEvent()) { - case EVENT_MORTAL_STRIKE: - DoCastVictim(SPELL_MORTAL_STRIKE); - _events.ScheduleEvent(EVENT_MORTAL_STRIKE, 13000); - break; - case EVENT_KNOCKDOWN: - DoCastVictim(SPELL_KNOCKDOWN); - _events.ScheduleEvent(EVENT_KNOCKDOWN, urand(11200, 25700)); - break; - case EVENT_STRIKE: - DoCastVictim(SPELL_STRIKE); - _events.ScheduleEvent(EVENT_STRIKE, 9000); - break; + switch (eventId) + { + case EVENT_MORTAL_STRIKE: + DoCastVictim(SPELL_MORTAL_STRIKE); + _events.ScheduleEvent(EVENT_MORTAL_STRIKE, 13000); + break; + case EVENT_KNOCKDOWN: + DoCastVictim(SPELL_KNOCKDOWN); + _events.ScheduleEvent(EVENT_KNOCKDOWN, urand(11200, 25700)); + break; + case EVENT_STRIKE: + DoCastVictim(SPELL_STRIKE); + _events.ScheduleEvent(EVENT_STRIKE, 9000); + break; + } } DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index b297a7a85..20d7f3686 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -56,6 +56,11 @@ enum Texts SAY_SOLAKAR_FIRST_HATCHER = 0 }; +MinionData const minionData[] = +{ + { NPC_CHROMATIC_ELITE_GUARD, DATA_GENERAL_DRAKKISATH } +}; + class instance_blackrock_spire : public InstanceMapScript { public: @@ -70,6 +75,7 @@ public: instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map) { SetBossNumber(EncounterCount); + LoadMinionData(minionData); CurrentSolakarWave = 0; SolakarState = NOT_STARTED; SolakarSummons.clear(); @@ -155,6 +161,9 @@ public: case NPC_FINKLE_EINHORN: creature->AI()->Talk(SAY_FINKLE_GANG); break; + case NPC_CHROMATIC_ELITE_GUARD: + AddMinion(creature, true); + break; } }