mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
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,
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user