From 016d9806dc7fc8166a36b8153f7d6a16c31cee20 Mon Sep 17 00:00:00 2001 From: Alethrion <54462221+Alethrion@users.noreply.github.com> Date: Fri, 1 Mar 2024 04:46:23 -0500 Subject: [PATCH] fix(Scripts/SerpentshrineCavern) Filter Watery Grave Target (#18463) Filter_Target --- .../SerpentShrine/boss_morogrim_tidewalker.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp index b365495ec85382..54b5d154a58e21 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp @@ -149,6 +149,23 @@ class spell_morogrim_tidewalker_watery_grave : public SpellScript return true; } + void FilterTargets(std::list& targets) + { + uint8 maxSize = 4; + Unit* caster = GetCaster(); + + targets.remove_if([caster](WorldObject const* target) -> bool + { + // Should not target current victim. + return caster->GetVictim() == target; + }); + + if (targets.size() > maxSize) + { + Acore::Containers::RandomResize(targets, maxSize); + } + } + void HandleDummy(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); @@ -159,6 +176,7 @@ class spell_morogrim_tidewalker_watery_grave : public SpellScript void Register() override { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_morogrim_tidewalker_watery_grave::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ENEMY); OnEffectHitTarget += SpellEffectFn(spell_morogrim_tidewalker_watery_grave::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); }