fix(Script/ObsidianSanctum): Lava Strike event now starts correctly. (#24723)

This commit is contained in:
Rocco Silipo
2026-02-15 17:42:54 +01:00
committed by GitHub
parent d9807742e5
commit 404a568bef
2 changed files with 19 additions and 31 deletions
@@ -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);
@@ -32,9 +32,9 @@ enum Says
SAY_SARTHARION_CALL_TENEBRON = 4, SAY_SARTHARION_CALL_TENEBRON = 4,
SAY_SARTHARION_CALL_VESPERON = 5, SAY_SARTHARION_CALL_VESPERON = 5,
SAY_SARTHARION_DEATH = 6, SAY_SARTHARION_DEATH = 6,
SAY_SARTHARION_SPECIAL = 7, SAY_SARTHARION_CYCLONE = 7,
SAY_SARTHARION_SLAY = 8, SAY_SARTHARION_SLAY = 8,
SAY_SARTHARION_SPECIAL_4 = 10, // 9 is whisper SAY_SARTHARION_LAVA = 10,
SAY_DRAKE_RESPOND = 4, SAY_DRAKE_RESPOND = 4,
@@ -356,12 +356,12 @@ struct boss_sartharion : public BossAI
// Combat events // Combat events
events.ScheduleEvent(EVENT_SARTHARION_CAST_CLEAVE, 7s); 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); events.ScheduleEvent(EVENT_SARTHARION_CAST_TAIL_LASH, 11s);
// Extra events // Extra events
extraEvents.ScheduleEvent(EVENT_SARTHARION_SUMMON_LAVA, 20s); 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); extraEvents.ScheduleEvent(EVENT_SARTHARION_BERSERK, 15min);
// Store dragons // Store dragons
@@ -512,8 +512,7 @@ struct boss_sartharion : public BossAI
{ {
case EVENT_SARTHARION_SUMMON_LAVA: case EVENT_SARTHARION_SUMMON_LAVA:
{ {
if (!urand(0, 3)) Talk(SAY_SARTHARION_LAVA);
Talk(SAY_SARTHARION_SPECIAL);
SummonLavaWaves(); SummonLavaWaves();
extraEvents.Repeat(25s); extraEvents.Repeat(25s);
@@ -553,6 +552,16 @@ struct boss_sartharion : public BossAI
break; 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: default:
break; break;
} }
@@ -577,7 +586,7 @@ struct boss_sartharion : public BossAI
case EVENT_SARTHARION_CAST_FLAME_BREATH: case EVENT_SARTHARION_CAST_FLAME_BREATH:
{ {
DoCastVictim(SPELL_SARTHARION_FLAME_BREATH, false); DoCastVictim(SPELL_SARTHARION_FLAME_BREATH, false);
events.Repeat(20s); events.Repeat(10s);
break; break;
} }
case EVENT_SARTHARION_CAST_TAIL_LASH: case EVENT_SARTHARION_CAST_TAIL_LASH:
@@ -586,30 +595,6 @@ struct boss_sartharion : public BossAI
events.Repeat(18s); events.Repeat(18s);
break; 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: case EVENT_SARTHARION_BERSERK:
{ {
summons.DespawnEntry(NPC_SAFE_AREA_TRIGGER); summons.DespawnEntry(NPC_SAFE_AREA_TRIGGER);