From 404a568bef8bba6f29762249449ae52b49478cc6 Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Sun, 15 Feb 2026 17:42:54 +0100 Subject: [PATCH] fix(Script/ObsidianSanctum): Lava Strike event now starts correctly. (#24723) --- .../updates/pending_db_world/lava_strike.sql | 3 ++ .../ObsidianSanctum/boss_sartharion.cpp | 47 +++++++------------ 2 files changed, 19 insertions(+), 31 deletions(-) create mode 100644 data/sql/updates/pending_db_world/lava_strike.sql diff --git a/data/sql/updates/pending_db_world/lava_strike.sql b/data/sql/updates/pending_db_world/lava_strike.sql new file mode 100644 index 000000000..327c2b7c4 --- /dev/null +++ b/data/sql/updates/pending_db_world/lava_strike.sql @@ -0,0 +1,3 @@ + +-- Move the text in its own group. +UPDATE `creature_text` SET `GroupID` = 10, `ID` = 0 WHERE (`CreatureID` = 28860) AND (`GroupID` = 7) AND (`ID` = 3); diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index 8df23ba82..962007d02 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -32,9 +32,9 @@ enum Says SAY_SARTHARION_CALL_TENEBRON = 4, SAY_SARTHARION_CALL_VESPERON = 5, SAY_SARTHARION_DEATH = 6, - SAY_SARTHARION_SPECIAL = 7, + SAY_SARTHARION_CYCLONE = 7, SAY_SARTHARION_SLAY = 8, - SAY_SARTHARION_SPECIAL_4 = 10, // 9 is whisper + SAY_SARTHARION_LAVA = 10, SAY_DRAKE_RESPOND = 4, @@ -356,12 +356,12 @@ struct boss_sartharion : public BossAI // Combat events events.ScheduleEvent(EVENT_SARTHARION_CAST_CLEAVE, 7s); - events.ScheduleEvent(EVENT_SARTHARION_CAST_FLAME_BREATH, 15s); + events.ScheduleEvent(EVENT_SARTHARION_CAST_FLAME_BREATH, 6s); events.ScheduleEvent(EVENT_SARTHARION_CAST_TAIL_LASH, 11s); // Extra events extraEvents.ScheduleEvent(EVENT_SARTHARION_SUMMON_LAVA, 20s); - extraEvents.ScheduleEvent(EVENT_SARTHARION_LAVA_STRIKE, 5s); + extraEvents.ScheduleEvent(EVENT_SARTHARION_LAVA_STRIKE, 15s); extraEvents.ScheduleEvent(EVENT_SARTHARION_BERSERK, 15min); // Store dragons @@ -512,8 +512,7 @@ struct boss_sartharion : public BossAI { case EVENT_SARTHARION_SUMMON_LAVA: { - if (!urand(0, 3)) - Talk(SAY_SARTHARION_SPECIAL); + Talk(SAY_SARTHARION_LAVA); SummonLavaWaves(); extraEvents.Repeat(25s); @@ -553,6 +552,16 @@ struct boss_sartharion : public BossAI break; } + case EVENT_SARTHARION_LAVA_STRIKE: + { + Talk(SAY_SARTHARION_CYCLONE); + summons.RemoveNotExisting(); + if (auto summon = summons.GetRandomCreatureWithEntry(NPC_FIRE_CYCLONE)) + summon->CastSpell(summon, SPELL_CYCLONE_AURA_PERIODIC, true); + + extraEvents.Repeat((below11PctReached ? randtime(1400ms, 2s) : 25s)); + break; + } default: break; } @@ -577,7 +586,7 @@ struct boss_sartharion : public BossAI case EVENT_SARTHARION_CAST_FLAME_BREATH: { DoCastVictim(SPELL_SARTHARION_FLAME_BREATH, false); - events.Repeat(20s); + events.Repeat(10s); break; } case EVENT_SARTHARION_CAST_TAIL_LASH: @@ -586,30 +595,6 @@ struct boss_sartharion : public BossAI events.Repeat(18s); break; } - case EVENT_SARTHARION_LAVA_STRIKE: - { - if (!urand(0, 2)) - Talk(SAY_SARTHARION_SPECIAL_4); - - summons.RemoveNotExisting(); - uint8 rand = urand(0, MAX_CYCLONE_COUNT - 1); // 5 - number of cyclones - uint8 iter = 0; - if (!summons.empty()) - { - for (ObjectGuid const& summonGuid : summons) - { - Creature* summon = ObjectAccessor::GetCreature(*me, summonGuid); - if (summon && summon->GetEntry() == NPC_FIRE_CYCLONE && iter == rand) - { - summon->CastSpell(summon, SPELL_CYCLONE_AURA_PERIODIC, true); - ++iter; - } - } - } - - events.Repeat((below11PctReached ? randtime(1400ms, 2s) : randtime(5s, 20s))); - break; - } case EVENT_SARTHARION_BERSERK: { summons.DespawnEntry(NPC_SAFE_AREA_TRIGGER);