From e4ecb086e767957581ac8d76139f71be5aa25a65 Mon Sep 17 00:00:00 2001
From: UltraNix <80540499+UltraNix@users.noreply.github.com>
Date: Tue, 25 Oct 2022 20:26:48 +0200
Subject: [PATCH] fix(DB/Spells): Spell Axe Flurry should target only one
player. (#13208)
* fix(DB/Spells): Spell Axe Flurry should target only one player.
Fixes #12525
* Update.
* Update.
---
.../rev_1664723236445660400.sql | 8 +++
.../EasternKingdoms/ZulGurub/zulgurub.cpp | 58 +++++++++++++++++++
.../eastern_kingdoms_script_loader.cpp | 2 +
3 files changed, 68 insertions(+)
create mode 100644 data/sql/updates/pending_db_world/rev_1664723236445660400.sql
create mode 100644 src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp
diff --git a/data/sql/updates/pending_db_world/rev_1664723236445660400.sql b/data/sql/updates/pending_db_world/rev_1664723236445660400.sql
new file mode 100644
index 000000000..6d0283f91
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1664723236445660400.sql
@@ -0,0 +1,8 @@
+--
+UPDATE `spell_dbc` SET `MaxTargets`=0 WHERE `id`=24019;
+
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=24071;
+
+DELETE FROM `spell_script_names` WHERE `spell_id`=24019;
+INSERT INTO `spell_script_names` VALUES
+(24019,'spell_axe_flurry');
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp
new file mode 100644
index 000000000..b8c390fe2
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp
@@ -0,0 +1,58 @@
+/*
+ * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License as published by the
+ * Free Software Foundation; either version 3 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+
+#include "GridNotifiers.h"
+#include "ScriptMgr.h"
+#include "SpellScript.h"
+
+enum Spells
+{
+ SPELL_AXE_FLURRY_STUN = 24020
+};
+
+class spell_axe_flurry : public SpellScript
+{
+ PrepareSpellScript(spell_axe_flurry);
+
+ void FilterTargets(std::list& targets)
+ {
+ targets.remove_if(Acore::UnitAuraCheck(true, SPELL_AXE_FLURRY_STUN));
+ Acore::Containers::RandomResize(targets, 1);
+ }
+
+ void HandleEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Unit* caster = GetCaster())
+ {
+ if (Unit* target = GetHitUnit())
+ {
+ caster->CastSpell(target, SPELL_AXE_FLURRY_STUN, true);
+ }
+ }
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_axe_flurry::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
+ OnEffectHitTarget += SpellEffectFn(spell_axe_flurry::HandleEffect, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
+void AddSC_zulgurub()
+{
+ RegisterSpellScript(spell_axe_flurry);
+}
diff --git a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
index e8cf955c9..8bd3f42b9 100644
--- a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
+++ b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
@@ -141,6 +141,7 @@ void AddSC_boss_hazzarah();
void AddSC_boss_renataki();
void AddSC_boss_wushoolay();
void AddSC_instance_zulgurub();
+void AddSC_zulgurub();
// void AddSC_alterac_mountains();
void AddSC_arathi_highlands();
void AddSC_blasted_lands();
@@ -292,6 +293,7 @@ void AddEasternKingdomsScripts()
AddSC_boss_renataki();
AddSC_boss_wushoolay();
AddSC_instance_zulgurub();
+ AddSC_zulgurub();
//AddSC_alterac_mountains();
AddSC_arathi_highlands();
AddSC_blasted_lands();