fix(Scripts/ObsidianSanctum): Correct Flame Tsunami spawns according to sniffed data. (#24218)
This commit is contained in:
@@ -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);
|
||||||
@@ -139,8 +139,8 @@ enum Misc
|
|||||||
LAVA_RIGHT_SIDE = 1,
|
LAVA_RIGHT_SIDE = 1,
|
||||||
|
|
||||||
// Counters
|
// Counters
|
||||||
MAX_LEFT_LAVA_TSUNAMIS = 3,
|
MAX_LEFT_LAVA_TSUNAMIS = 9,
|
||||||
MAX_RIGHT_LAVA_TSUNAMIS = 2,
|
MAX_RIGHT_LAVA_TSUNAMIS = 6,
|
||||||
MAX_DRAGONS = 3,
|
MAX_DRAGONS = 3,
|
||||||
MAX_AREA_TRIGGER_COUNT = 2,
|
MAX_AREA_TRIGGER_COUNT = 2,
|
||||||
MAX_CYCLONE_COUNT = 5,
|
MAX_CYCLONE_COUNT = 5,
|
||||||
@@ -224,7 +224,7 @@ const Position AreaTriggerSummonPos[MAX_AREA_TRIGGER_COUNT] =
|
|||||||
{ 3242.84f, 553.979f, 58.8272f, 0.0f },
|
{ 3242.84f, 553.979f, 58.8272f, 0.0f },
|
||||||
};
|
};
|
||||||
|
|
||||||
const float SartharionBoundary[MAX_BOUNDARY_POSITIONS] =
|
float const SartharionBoundary[MAX_BOUNDARY_POSITIONS] =
|
||||||
{
|
{
|
||||||
3218.86f, // South X
|
3218.86f, // South X
|
||||||
3275.69f, // North X
|
3275.69f, // North X
|
||||||
@@ -232,6 +232,19 @@ const float SartharionBoundary[MAX_BOUNDARY_POSITIONS] =
|
|||||||
572.4f // West Y
|
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 Position bigIslandMiddlePos = { 3242.822754f, 477.279816f, 57.430473f };
|
||||||
|
|
||||||
const uint32 dragons[MAX_DRAGONS] = { DATA_TENEBRON, DATA_VESPERON, DATA_SHADRON };
|
const uint32 dragons[MAX_DRAGONS] = { DATA_TENEBRON, DATA_VESPERON, DATA_SHADRON };
|
||||||
@@ -620,15 +633,18 @@ public:
|
|||||||
{
|
{
|
||||||
summons.RemoveNotExisting();
|
summons.RemoveNotExisting();
|
||||||
Talk(WHISPER_LAVA_CHURN);
|
Talk(WHISPER_LAVA_CHURN);
|
||||||
extraEvents.ScheduleEvent(EVENT_SARTHARION_START_LAVA, 2s);
|
extraEvents.ScheduleEvent(EVENT_SARTHARION_START_LAVA, 3600ms);
|
||||||
extraEvents.ScheduleEvent(EVENT_SARTHARION_FINISH_LAVA, 9s);
|
extraEvents.ScheduleEvent(EVENT_SARTHARION_FINISH_LAVA, 11s);
|
||||||
|
|
||||||
// Send wave from left
|
// Send wave from left
|
||||||
if (lastLavaSide == LAVA_RIGHT_SIDE)
|
if (lastLavaSide == LAVA_RIGHT_SIDE)
|
||||||
{
|
{
|
||||||
for (uint8 i = 0; i < MAX_LEFT_LAVA_TSUNAMIS; ++i)
|
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;
|
lastLavaSide = LAVA_LEFT_SIDE;
|
||||||
@@ -638,7 +654,10 @@ public:
|
|||||||
{
|
{
|
||||||
for (uint8 i = 0; i < MAX_RIGHT_LAVA_TSUNAMIS; ++i)
|
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;
|
lastLavaSide = LAVA_RIGHT_SIDE;
|
||||||
@@ -648,24 +667,22 @@ public:
|
|||||||
void SendLavaWaves(bool start)
|
void SendLavaWaves(bool start)
|
||||||
{
|
{
|
||||||
if (summons.empty())
|
if (summons.empty())
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
for (ObjectGuid const& guid : summons)
|
for (ObjectGuid const& guid : summons)
|
||||||
{
|
{
|
||||||
Creature* tsunami = ObjectAccessor::GetCreature(*me, guid);
|
Creature* tsunami = ObjectAccessor::GetCreature(*me, guid);
|
||||||
if (!tsunami || tsunami->GetEntry() != NPC_FLAME_TSUNAMI)
|
if (!tsunami || tsunami->GetEntry() != NPC_FLAME_TSUNAMI)
|
||||||
{
|
|
||||||
continue;
|
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
|
else
|
||||||
{
|
{
|
||||||
|
tsunami->RemoveAura(SPELL_FLAME_TSUNAMI_DAMAGE_AURA);
|
||||||
tsunami->SetObjectScale(0.1f);
|
tsunami->SetObjectScale(0.1f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user