fix(DB/Creature): Rework Mechanolift 304-A spawns and waypoints. (#24959)

This commit is contained in:
Rocco Silipo
2026-03-02 02:49:16 +01:00
committed by GitHub
parent 1f91ccf758
commit 1a85244cf0
2 changed files with 1189 additions and 55 deletions
File diff suppressed because it is too large Load Diff
@@ -90,7 +90,6 @@ enum GosNpcs
{ {
NPC_FLAME_LEVIATHAN_TURRET = 33139, NPC_FLAME_LEVIATHAN_TURRET = 33139,
NPC_SEAT = 33114, NPC_SEAT = 33114,
NPC_MECHANOLIFT = 33214,
NPC_LIQUID = 33189, NPC_LIQUID = 33189,
// Starting event // Starting event
@@ -116,14 +115,13 @@ enum Events
EVENT_MISSILE = 2, EVENT_MISSILE = 2,
EVENT_VENT = 3, EVENT_VENT = 3,
EVENT_SPEED = 4, EVENT_SPEED = 4,
EVENT_SUMMON = 5, EVENT_REINSTALL = 5,
EVENT_REINSTALL = 6, EVENT_HODIRS_FURY = 6,
EVENT_HODIRS_FURY = 7, EVENT_FREYA = 7,
EVENT_FREYA = 8, EVENT_MIMIRONS_INFERNO = 8,
EVENT_MIMIRONS_INFERNO = 9, EVENT_THORIMS_HAMMER = 9,
EVENT_THORIMS_HAMMER = 10, EVENT_SOUND_BEGINNING = 10,
EVENT_SOUND_BEGINNING = 11, EVENT_POSITION_CHECK = 11,
EVENT_POSITION_CHECK = 12,
}; };
enum Texts enum Texts
@@ -413,13 +411,6 @@ struct boss_flame_leviathan : public BossAI
me->CastSpell(me, SPELL_FLAME_VENTS, false); me->CastSpell(me, SPELL_FLAME_VENTS, false);
events.Repeat(20s); events.Repeat(20s);
return; return;
case EVENT_SUMMON:
if (summons.size() < 20)
if (Creature* lift = DoSummonFlyer(NPC_MECHANOLIFT, me, 30.0f, 50.0f, 0))
lift->GetMotionMaster()->MoveRandom(100);
events.Repeat(4s);
return;
case EVENT_SOUND_BEGINNING: case EVENT_SOUND_BEGINNING:
if (_towersCount) if (_towersCount)
Talk(FLAME_LEVIATHAN_SAY_HARDMODE); Talk(FLAME_LEVIATHAN_SAY_HARDMODE);
@@ -591,7 +582,6 @@ void boss_flame_leviathan::ScheduleEvents()
events.RescheduleEvent(EVENT_MISSILE, 5s); events.RescheduleEvent(EVENT_MISSILE, 5s);
events.RescheduleEvent(EVENT_VENT, 20s); events.RescheduleEvent(EVENT_VENT, 20s);
events.RescheduleEvent(EVENT_SPEED, 15s); events.RescheduleEvent(EVENT_SPEED, 15s);
events.RescheduleEvent(EVENT_SUMMON, 10s);
events.RescheduleEvent(EVENT_SOUND_BEGINNING, 10s); events.RescheduleEvent(EVENT_SOUND_BEGINNING, 10s);
events.RescheduleEvent(EVENT_POSITION_CHECK, 5s); events.RescheduleEvent(EVENT_POSITION_CHECK, 5s);
@@ -1240,43 +1230,6 @@ struct boss_flame_leviathan_safety_container : public NullCreatureAI
} }
}; };
struct npc_mechanolift : public NullCreatureAI
{
npc_mechanolift(Creature* c) : NullCreatureAI(c)
{
me->SetSpeed(MOVE_RUN, rand_norm() + 0.5f);
}
int32 _startTimer;
uint32 _evadeTimer;
void Reset() override
{
_startTimer = urand(1, 5000);
_evadeTimer = 0;
}
void UpdateAI(uint32 diff) override
{
if (_startTimer)
{
_startTimer -= diff;
if (_startTimer <= 0)
{
me->GetMotionMaster()->MoveWaypoint(3000000 + urand(0, 11), true);
_startTimer = 0;
}
}
_evadeTimer += diff;
if (_evadeTimer >= 10000)
{
_EnterEvadeMode();
_evadeTimer = 0;
}
}
};
class go_ulduar_tower : public GameObjectScript class go_ulduar_tower : public GameObjectScript
{ {
public: public:
@@ -1880,7 +1833,6 @@ void AddSC_boss_flame_leviathan()
RegisterUlduarCreatureAI(npc_brann_radio); RegisterUlduarCreatureAI(npc_brann_radio);
RegisterUlduarCreatureAI(npc_storm_beacon_spawn); RegisterUlduarCreatureAI(npc_storm_beacon_spawn);
RegisterUlduarCreatureAI(boss_flame_leviathan_safety_container); RegisterUlduarCreatureAI(boss_flame_leviathan_safety_container);
RegisterUlduarCreatureAI(npc_mechanolift);
// GOs // GOs
new go_ulduar_tower(); new go_ulduar_tower();