aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2021_12_18_45_world_2019_10_03_00_world.sql4
-rw-r--r--src/server/game/Spells/SpellMgr.cpp9
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp33
3 files changed, 46 insertions, 0 deletions
diff --git a/sql/updates/world/master/2021_12_18_45_world_2019_10_03_00_world.sql b/sql/updates/world/master/2021_12_18_45_world_2019_10_03_00_world.sql
new file mode 100644
index 00000000000..105536af24a
--- /dev/null
+++ b/sql/updates/world/master/2021_12_18_45_world_2019_10_03_00_world.sql
@@ -0,0 +1,4 @@
+--
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_forge_of_souls_soul_sickness';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(69131,'spell_forge_of_souls_soul_sickness');
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 532e9f3d90e..a9a9d78a638 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -4591,6 +4591,15 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->AttributesEx2 |= SPELL_ATTR2_CAN_TARGET_DEAD;
});
+ // Soul Sickness (Forge of Souls)
+ ApplySpellFix({ 69131 }, [](SpellInfo* spellInfo)
+ {
+ ApplySpellEffectFix(spellInfo, EFFECT_1, [](SpellEffectInfo* spellEffectInfo)
+ {
+ spellEffectInfo->ApplyAuraName = SPELL_AURA_MOD_DECREASE_SPEED;
+ });
+ });
+
//
// FIRELANDS SPELLS
//
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
index 33feba58a2f..a75c6d7da69 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
@@ -19,6 +19,8 @@
#include "forge_of_souls.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
+#include "SpellAuras.h"
+#include "SpellScript.h"
enum Events
{
@@ -68,6 +70,11 @@ enum Phase
PHASE_INTRO,
};
+enum ForgeSpells
+{
+ SPELL_LETHARGY = 69133
+};
+
class npc_sylvanas_fos : public CreatureScript
{
public:
@@ -269,8 +276,34 @@ public:
}
};
+// 69131 - Soul Sickness
+class spell_forge_of_souls_soul_sickness : public AuraScript
+{
+ PrepareAuraScript(spell_forge_of_souls_soul_sickness);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LETHARGY });
+ }
+
+ void HandleStun(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
+ {
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_LETHARGY, aurEff);
+ }
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_forge_of_souls_soul_sickness::HandleStun, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_forge_of_souls()
{
new npc_sylvanas_fos();
new npc_jaina_fos();
+ RegisterAuraScript(spell_forge_of_souls_soul_sickness);
}