fix(Scripts/ObsidianSanctum): Correct Flame Tsunami spawns according to sniffed data. (#24218)

This commit is contained in:
Benjamin Jackson
2025-12-28 23:12:03 -05:00
committed by GitHub
parent 61880e2246
commit 4331cdf335
2 changed files with 35 additions and 13 deletions

View File

@@ -0,0 +1,5 @@
UPDATE `creature_template_addon` SET `auras` = '' WHERE `entry` = 30616;
DELETE FROM `creature_template_movement` WHERE `CreatureId` = 30616;
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
(30616, 2, 0, 2, 0, 0, 0, NULL);

View File

@@ -139,8 +139,8 @@ enum Misc
LAVA_RIGHT_SIDE = 1,
// Counters
MAX_LEFT_LAVA_TSUNAMIS = 3,
MAX_RIGHT_LAVA_TSUNAMIS = 2,
MAX_LEFT_LAVA_TSUNAMIS = 9,
MAX_RIGHT_LAVA_TSUNAMIS = 6,
MAX_DRAGONS = 3,
MAX_AREA_TRIGGER_COUNT = 2,
MAX_CYCLONE_COUNT = 5,
@@ -224,7 +224,7 @@ const Position AreaTriggerSummonPos[MAX_AREA_TRIGGER_COUNT] =
{ 3242.84f, 553.979f, 58.8272f, 0.0f },
};
const float SartharionBoundary[MAX_BOUNDARY_POSITIONS] =
float const SartharionBoundary[MAX_BOUNDARY_POSITIONS] =
{
3218.86f, // South X
3275.69f, // North X
@@ -232,6 +232,19 @@ const float SartharionBoundary[MAX_BOUNDARY_POSITIONS] =
572.4f // West Y
};
float const FlameTsunamiLeftOffsets[MAX_LEFT_LAVA_TSUNAMIS] =
{
476.0f, 484.0f, 492.0f,
524.0f, 532.0f, 540.0f,
572.0f, 580.0f, 588.0f
};
float const FlameTsunamiRightOffsets[MAX_RIGHT_LAVA_TSUNAMIS] =
{
500.0f, 508.0f, 516.0f,
548.0f, 556.0f, 564.0f
};
const Position bigIslandMiddlePos = { 3242.822754f, 477.279816f, 57.430473f };
const uint32 dragons[MAX_DRAGONS] = { DATA_TENEBRON, DATA_VESPERON, DATA_SHADRON };
@@ -620,15 +633,18 @@ public:
{
summons.RemoveNotExisting();
Talk(WHISPER_LAVA_CHURN);
extraEvents.ScheduleEvent(EVENT_SARTHARION_START_LAVA, 2s);
extraEvents.ScheduleEvent(EVENT_SARTHARION_FINISH_LAVA, 9s);
extraEvents.ScheduleEvent(EVENT_SARTHARION_START_LAVA, 3600ms);
extraEvents.ScheduleEvent(EVENT_SARTHARION_FINISH_LAVA, 11s);
// Send wave from left
if (lastLavaSide == LAVA_RIGHT_SIDE)
{
for (uint8 i = 0; i < MAX_LEFT_LAVA_TSUNAMIS; ++i)
{
me->SummonCreature(NPC_FLAME_TSUNAMI, 3208.44f, 580.0f - (i * 50.0f), 55.8f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 12000);
Creature* tsunami = me->SummonCreature(NPC_FLAME_TSUNAMI, 3211.0f, FlameTsunamiLeftOffsets[i], 57.083332f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 13500);
if (((i - 2) % 3 == 0) && tsunami) // If center of wave
tsunami->CastSpell(tsunami, SPELL_FLAME_TSUNAMI_VISUAL, true);
}
lastLavaSide = LAVA_LEFT_SIDE;
@@ -638,7 +654,10 @@ public:
{
for (uint8 i = 0; i < MAX_RIGHT_LAVA_TSUNAMIS; ++i)
{
me->SummonCreature(NPC_FLAME_TSUNAMI, 3283.44f, 555.0f - (i * 50.0f), 55.8f, 3.14f, TEMPSUMMON_TIMED_DESPAWN, 12000);
Creature* tsunami = me->SummonCreature(NPC_FLAME_TSUNAMI, 3286.0f, FlameTsunamiRightOffsets[i], 57.083332f, 3.14f, TEMPSUMMON_TIMED_DESPAWN, 13500);
if (((i - 2) % 3 == 0) && tsunami) // If center of wave
tsunami->CastSpell(tsunami, SPELL_FLAME_TSUNAMI_VISUAL, true);
}
lastLavaSide = LAVA_RIGHT_SIDE;
@@ -648,24 +667,22 @@ public:
void SendLavaWaves(bool start)
{
if (summons.empty())
{
return;
}
for (ObjectGuid const& guid : summons)
{
Creature* tsunami = ObjectAccessor::GetCreature(*me, guid);
if (!tsunami || tsunami->GetEntry() != NPC_FLAME_TSUNAMI)
{
continue;
}
if (start)
if (start) // Movement possibly simplified from official, ideally reevaluate in the future.
{
tsunami->GetMotionMaster()->MovePoint(0, ((tsunami->GetPositionX() < 3250.0f) ? 3283.44f : 3208.44f), tsunami->GetPositionY(), tsunami->GetPositionZ());
tsunami->CastSpell(tsunami, SPELL_FLAME_TSUNAMI_DAMAGE_AURA, true);
tsunami->GetMotionMaster()->MovePoint(0, ((tsunami->GetPositionX() < 3250.0f) ? 3286.0f : 3211.0f), tsunami->GetPositionY(), tsunami->GetPositionZ());
}
else
{
tsunami->RemoveAura(SPELL_FLAME_TSUNAMI_DAMAGE_AURA);
tsunami->SetObjectScale(0.1f);
}
}