From e95120861077b1eec3609dad922553d78a9ca55d Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 10 Jun 2022 01:28:57 +0200 Subject: [PATCH] fix(Scripts/ZulGurub): Gah'zranka's Slam should reset threat. (#11910) --- .../rev_1653826897656877600.sql | 4 ++ .../ZulGurub/boss_gahzranka.cpp | 38 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1653826897656877600.sql diff --git a/data/sql/updates/pending_db_world/rev_1653826897656877600.sql b/data/sql/updates/pending_db_world/rev_1653826897656877600.sql new file mode 100644 index 000000000..28f2eb3aa --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1653826897656877600.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id`=24326; +INSERT INTO `spell_script_names` VALUES +(24326,'spell_gahzranka_slam'); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index b75928c48..86e4c473d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -24,6 +24,7 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "zulgurub.h" enum Spells @@ -110,7 +111,44 @@ public: } }; +class spell_gahzranka_slam : public SpellScript +{ + PrepareSpellScript(spell_gahzranka_slam); + + void FilterTargets(std::list& targets) + { + if (Unit* caster = GetCaster()) + { + _wipeThreat = targets.size() < caster->GetThreatMgr().getThreatList().size(); + } + } + + void HandleWipeThreat(SpellEffIndex /*effIndex*/) + { + if (_wipeThreat) + { + if (Unit* caster = GetCaster()) + { + if (Unit* target = GetHitUnit()) + { + caster->GetThreatMgr().modifyThreatPercent(target, -100); + } + } + } + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gahzranka_slam::FilterTargets, EFFECT_1, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_gahzranka_slam::HandleWipeThreat, EFFECT_1, SPELL_EFFECT_KNOCK_BACK); + } + +private: + bool _wipeThreat = false; +}; + void AddSC_boss_gahzranka() { new boss_gahzranka(); + RegisterSpellScript(spell_gahzranka_slam); }