From 8faaa7731917ee5a313911614ef9c5abaed8a23b Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Mon, 18 Mar 2024 22:04:49 +0100 Subject: [PATCH] fix(Scripts/TheEye): fix Kael progress bug and some other issues (#18580) * init * some fixes --- .../pending_db_world/weapons_flags.sql | 2 ++ .../Outland/TempestKeep/Eye/boss_kaelthas.cpp | 26 ++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 data/sql/updates/pending_db_world/weapons_flags.sql diff --git a/data/sql/updates/pending_db_world/weapons_flags.sql b/data/sql/updates/pending_db_world/weapons_flags.sql new file mode 100644 index 000000000..fd92e3f24 --- /dev/null +++ b/data/sql/updates/pending_db_world/weapons_flags.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `unit_flags` = `unit_flags`& ~33554432 & ~2 WHERE `entry` BETWEEN 21268 AND 21274; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index 07bf60423..eb3107533 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -151,8 +151,9 @@ enum Misc PHASE_NONE = 0, PHASE_SINGLE_ADVISOR = 1, PHASE_WEAPONS = 2, - PHASE_ALL_ADVISORS = 3, - PHASE_FINAL = 4, + PHASE_TRANSITION = 3, + PHASE_ALL_ADVISORS = 4, + PHASE_FINAL = 5, EVENT_PREFIGHT_PHASE11 = 1, EVENT_PREFIGHT_PHASE12 = 2, @@ -352,6 +353,8 @@ struct boss_kaelthas : public BossAI summons.Summon(summon); if (summon->GetEntry() == NPC_NETHER_VAPOR) summon->GetMotionMaster()->MoveRandom(20.0f); + if (summon->GetEntry() >= NPC_NETHERSTRAND_LONGBOW && summon->GetEntry() <= NPC_STAFF_OF_DISINTEGRATION) + summon->SetReactState(REACT_PASSIVE); } void DoAction(int32 action) override @@ -380,7 +383,7 @@ struct boss_kaelthas : public BossAI { if (!summonedCreature->GetSpawnId()) { - summonedCreature->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE); + summonedCreature->SetReactState(REACT_AGGRESSIVE); summonedCreature->SetInCombatWithZone(); if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) { @@ -678,13 +681,14 @@ struct boss_kaelthas : public BossAI void PhaseAllAdvisorsExecute() { + _phase = PHASE_TRANSITION; scheduler.CancelGroup(GROUP_PROGRESS_PHASE); - _phase = PHASE_ALL_ADVISORS; Talk(SAY_PHASE3_ADVANCE); ScheduleUniqueTimedEvent(6s, [&]{ DoCastSelf(SPELL_RESURRECTION); }, EVENT_PREFIGHT_PHASE62); ScheduleUniqueTimedEvent(12s, [&]{ + _phase = PHASE_ALL_ADVISORS; summons.DoForAllSummons([&](WorldObject* summon) { if (Creature* summonedCreature = summon->ToCreature()) @@ -743,18 +747,16 @@ struct boss_kaelthas : public BossAI DoCastSelf(SPELL_ARCANE_DISRUPTION); }); }, 50s); - ScheduleTimedEvent(40s, [&] + ScheduleTimedEvent(43s, [&] { + if (roll_chance_i(50)) + Talk(SAY_MINDCONTROL); + me->CastCustomSpell(SPELL_MIND_CONTROL, SPELLVALUE_MAX_TARGETS, 3, me, false); scheduler.Schedule(3s, [this](TaskContext) - { - if (roll_chance_i(50)) - Talk(SAY_MINDCONTROL); - me->CastCustomSpell(SPELL_MIND_CONTROL, SPELLVALUE_MAX_TARGETS, 3, me, false); - }).Schedule(6s, [this](TaskContext) { DoCastSelf(SPELL_ARCANE_DISRUPTION); }); - }, 50s); + }, 53s); ScheduleTimedEvent(60s, [&] { Talk(SAY_PYROBLAST); @@ -1041,7 +1043,7 @@ struct npc_thaladred : public ScriptedAI { DoCastVictim(SPELL_REND); }, 15700ms, 48900ms); - ScheduleTimedEvent(3000ms,6050ms, [&] + ScheduleTimedEvent(3000ms, 6050ms, [&] { if (Unit* victim = me->GetVictim()) {