From 5eee6bc383b6cb69fa1e5c08d36f46b44713e1c7 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 19 Mar 2025 08:52:37 -0300 Subject: [PATCH] =?UTF-8?q?fix(Scripts/SunwellPlateau):=20Increase=20delay?= =?UTF-8?q?=20before=20choosing=20lane=20and=20=E2=80=A6=20(#21733)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SunwellPlateau/boss_felmyst.cpp | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index d5572a2c6..dc13e2873 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -106,20 +106,29 @@ const Position LandingPos = { 1476.77f, 665.094f, 20.6423f }; class CorruptTriggers : public BasicEvent { public: - CorruptTriggers(Unit* caster) : _caster(caster) { } + CorruptTriggers(Unit* caster, uint8 currentLane) : _caster(caster), _currentLane(currentLane) { } bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override { std::list creatureList; _caster->GetCreaturesWithEntryInRange(creatureList, 70.0f, NPC_FOG_TRIGGER); for (auto const& creature : creatureList) + { if (_caster->GetExactDist2d(creature) <= 11.0f) + { creature->CastSpell(creature, SPELL_FOG_OF_CORRUPTION, true); + continue; + } + + if (!_currentLane && creature->GetPositionX() > 1510.0f) + creature->CastSpell(creature, SPELL_FOG_OF_CORRUPTION, true); + } return true; } private: Unit* _caster; + uint8 _currentLane; }; struct boss_felmyst : public BossAI @@ -283,20 +292,20 @@ struct boss_felmyst : public BossAI me->GetMotionMaster()->MovePoint(POINT_LANE, RightSideLanes[_currentLane], false); else me->GetMotionMaster()->MovePoint(POINT_LANE, LeftSideLanes[_currentLane], false); - }, 2s); + }, 5s); break; case POINT_LANE: Talk(EMOTE_BREATH); me->m_Events.AddEventAtOffset([&] { - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(0)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(500)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(1000)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(1500)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(2000)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(2500)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(3000)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(3500)); - me->m_Events.AddEvent(new CorruptTriggers(me), me->m_Events.CalculateTime(4000)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(0)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(500)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(1000)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(1500)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(2000)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(2500)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(3000)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(3500)); + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(4000)); }, 5s); me->m_Events.AddEventAtOffset([&] {