From c04731178864f2b9b9a84e46180d6d3fea313899 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Thu, 7 Apr 2022 18:28:12 +0200 Subject: [PATCH] Scripts/Spells: Suppression Aura should not hit stealthed units. (#11270) * Scripts/Spells: Suppression Aura should not hit stealthed units. Fixes #11249 * Update. * Update data/sql/updates/pending_db_world/rev_1648996451912542300.sql Co-authored-by: Nefertumm --- .../rev_1648996451912542300.sql | 5 +++++ .../boss_broodlord_lashlayer.cpp | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1648996451912542300.sql diff --git a/data/sql/updates/pending_db_world/rev_1648996451912542300.sql b/data/sql/updates/pending_db_world/rev_1648996451912542300.sql new file mode 100644 index 0000000000000..cf22e107a755b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1648996451912542300.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648996451912542300'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=22247; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(22247,'spell_suppression_aura'); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp index a30828e309bd3..d3f83d4a83767 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -21,6 +21,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "blackwing_lair.h" +#include "SpellScript.h" enum Say { @@ -247,8 +248,28 @@ class go_suppression_device : public GameObjectScript } }; +class spell_suppression_aura : public SpellScript +{ + PrepareSpellScript(spell_suppression_aura); + + void FilterTargets(std::list& targets) + { + targets.remove_if([&](WorldObject* target) -> bool + { + Unit* unit = target->ToUnit(); + return !unit || unit->HasAuraType(SPELL_AURA_MOD_STEALTH); + }); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_suppression_aura::FilterTargets, EFFECT_ALL, TARGET_UNIT_DEST_AREA_ENEMY); + } +}; + void AddSC_boss_broodlord() { new boss_broodlord(); new go_suppression_device(); + RegisterSpellScript(spell_suppression_aura); }