From 896f762cceceb322b54fc318f0feaf41b2125bf0 Mon Sep 17 00:00:00 2001 From: sogladev Date: Sat, 7 Feb 2026 00:58:05 +0100 Subject: [PATCH] fix(Scripts/Spells): some LW drums cannot affect targets lvl80 or higher (#24611) --- .../rev_1770159397406092393.sql | 10 ++++++++ src/server/scripts/Spells/spell_generic.cpp | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1770159397406092393.sql diff --git a/data/sql/updates/pending_db_world/rev_1770159397406092393.sql b/data/sql/updates/pending_db_world/rev_1770159397406092393.sql new file mode 100644 index 000000000..012eb15d8 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1770159397406092393.sql @@ -0,0 +1,10 @@ +-- +-- 35475 Drums of War +-- 35476 Drums of Battle +-- 35478 Drums of Restoration +-- 'Cannot affect targets level 80 or higher.' +DELETE FROM `spell_script_names` WHERE `spell_id` IN (35475, 35476, 35478); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(35475, 'spell_gen_filter_party_level_80'), +(35476, 'spell_gen_filter_party_level_80'), +(35478, 'spell_gen_filter_party_level_80'); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index f5ff6e968..55186ba5e 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -5696,6 +5696,28 @@ class spell_gen_whisper_to_controller : public SpellScript } }; +// 35475 Drums of War +// 35476 Drums of Battle +// 35478 Drums of Restoration +class spell_gen_filter_party_level_80 : public SpellScript +{ + PrepareSpellScript(spell_gen_filter_party_level_80); + + void FilterTargets(std::list& targets) + { + targets.remove_if([&](WorldObject* target) -> bool + { + Unit* unit = target->ToUnit(); + return unit && unit->GetLevel() >= 80; + }); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gen_filter_party_level_80::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_PARTY); + } +}; + void AddSC_generic_spell_scripts() { RegisterSpellScript(spell_silithyst); @@ -5871,4 +5893,5 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_bm_on); RegisterSpellScript(spell_gen_bm_off); RegisterSpellScript(spell_gen_whisper_to_controller); + RegisterSpellScript(spell_gen_filter_party_level_80); }