From b242ca48ed13253c6e484a7884fcd02b632cd1b7 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Fri, 14 Jan 2022 18:46:43 +0100 Subject: [PATCH] Scripts/BH: fixed a crash in Occu'thar's target selection script for Focused Fire --- .../BaradinHold/boss_occuthar.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp index c8855cd880b..6c9a7024851 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp @@ -235,13 +235,16 @@ class spell_occuthar_focused_fire : public SpellScriptLoader { void FilterTargets(std::list& targets) { - if (targets.empty()) + if (targets.size() < 2) return; - targets.remove_if(FocusedFireTargetSelector(GetCaster()->ToCreature(), GetCaster()->GetVictim())); - WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets); - targets.clear(); - targets.push_back(target); + targets.remove_if([&](WorldObject const* target) + { + return GetCaster()->GetVictim() == target; + }); + + if (targets.size() >= 2) + Trinity::Containers::RandomResize(targets, 1); } void Register() override @@ -279,9 +282,7 @@ class spell_occuthar_eyes_of_occuthar : public SpellScriptLoader if (targets.empty()) return; - WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets); - targets.clear(); - targets.push_back(target); + Trinity::Containers::RandomResize(targets, 1); } void HandleScript(SpellEffIndex /*effIndex*/)