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

View File

@@ -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);

View File

@@ -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);