diff options
-rw-r--r-- | sql/updates/world/3.3.5/2019_10_03_00_world.sql | 4 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp | 33 |
3 files changed, 43 insertions, 0 deletions
diff --git a/sql/updates/world/3.3.5/2019_10_03_00_world.sql b/sql/updates/world/3.3.5/2019_10_03_00_world.sql new file mode 100644 index 00000000000..105536af24a --- /dev/null +++ b/sql/updates/world/3.3.5/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 17ae674d3f9..ae1ccaaecf0 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4894,6 +4894,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_1].SpellClassMask[0] |= 0x00004000; // Drain soul }); + // Soul Sickness (Forge of Souls) + ApplySpellFix({ 69131 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_1].ApplyAuraName = SPELL_AURA_MOD_DECREASE_SPEED; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; 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 52044692d93..7ec562e238c 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp @@ -20,6 +20,8 @@ #include "Player.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" +#include "SpellAuras.h" +#include "SpellScript.h" enum Events { @@ -69,6 +71,11 @@ enum Phase PHASE_INTRO, }; +enum ForgeSpells +{ + SPELL_LETHARGY = 69133 +}; + class npc_sylvanas_fos : public CreatureScript { public: @@ -276,8 +283,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); } |