From 6753b44b160790510b29b6471c511842c6e4334b Mon Sep 17 00:00:00 2001 From: p-tkachuk Date: Mon, 3 Feb 2025 17:47:38 +0100 Subject: [PATCH] fix(Scripts/Oculus): Prevent boss Urom teleportation to nowhere on fast kill (#21305) Co-authored-by: Hexadecimal --- .../Northrend/Nexus/Oculus/boss_urom.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp index 9807f0244a5964..217e1915d5fed4 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp @@ -107,7 +107,7 @@ class boss_urom : public CreatureScript InstanceScript* pInstance; EventMap events; - bool lock; + bool lock, inCenter; float x, y, z; int32 releaseLockTimer; @@ -134,6 +134,7 @@ class boss_urom : public CreatureScript me->CastSpell(me, SPELL_EVOCATION, true); events.Reset(); lock = false; + inCenter = false; x = 0.0f; y = 0.0f; z = 0.0f; @@ -222,9 +223,14 @@ class boss_urom : public CreatureScript { pInstance->SetData(DATA_UROM, DONE); } - me->SetCanFly(false); - me->SetDisableGravity(false); - me->NearTeleportTo(x, y, z, 0.0f); + + // Body teleportation required only when boss is flying in the center + if (inCenter) + { + me->SetCanFly(false); + me->SetDisableGravity(false); + me->NearTeleportTo(x, y, z, 0.0f); + } } void KilledUnit(Unit* /*victim*/) override @@ -281,6 +287,7 @@ class boss_urom : public CreatureScript me->SetCanFly(true); me->SetDisableGravity(true); me->NearTeleportTo(1103.69f, 1048.76f, 512.279f, 1.16f); + inCenter = true; Talk(SAY_ARCANE_EXPLOSION); Talk(EMOTE_ARCANE_EXPLOSION); @@ -356,6 +363,7 @@ class boss_urom : public CreatureScript me->SetControlled(false, UNIT_STATE_ROOT); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->GetMotionMaster()->MoveChase(me->GetVictim()); + inCenter = false; break; } } @@ -365,6 +373,7 @@ class boss_urom : public CreatureScript me->SetCanFly(false); me->SetDisableGravity(false); me->SetControlled(false, UNIT_STATE_ROOT); + inCenter = false; ScriptedAI::EnterEvadeMode(why); } };