From bb40bf772701ae5fba2f79bf67a8772a636649a1 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Mon, 21 Oct 2024 22:00:15 -0400 Subject: [PATCH] fix(Scripts/BlackTemple): Properly randomize Illidan initial Eye Beam and order. (#20264) Init. --- .../scripts/Outland/BlackTemple/boss_illidan.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index c468b0440..1e1e0935b 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -207,7 +207,7 @@ struct boss_illidan_stormrage : public BossAI _canTalk = true; _dying = false; _inCutscene = false; - beamPosId = RAND(0, int(MAX_EYE_BEAM_POS)); + beamPosId = urand(0, MAX_EYE_BEAM_POS); me->ReplaceAllUnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->SetDisableGravity(false); me->SetHover(false); @@ -513,7 +513,7 @@ struct boss_illidan_stormrage : public BossAI scheduler.CancelAll(); me->InterruptNonMeleeSpells(false); me->SetControlled(false, UNIT_STATE_ROOT); - beamPosId = (beamPosId + 1) % MAX_EYE_BEAM_POS; + CycleBeamPos(beamPosId); me->GetMotionMaster()->MovePoint(POINT_ILLIDAN_HOVER, airHoverPos[beamPosId], false, true); }, 20s, GROUP_PHASE_FLYING); }); @@ -685,6 +685,15 @@ private: bool _dying; bool _inCutscene; uint8 beamPosId; + + void CycleBeamPos(uint8 &beamPosId) + { + uint8 _incumbentBeamPos = urand(0, MAX_EYE_BEAM_POS); + if (_incumbentBeamPos == beamPosId) + CycleBeamPos(beamPosId); + else + beamPosId = _incumbentBeamPos; + } }; enum Akama