diff options
-rw-r--r-- | sql/updates/world/3.3.5/2019_03_02_02_world.sql | 4 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 44 |
2 files changed, 48 insertions, 0 deletions
diff --git a/sql/updates/world/3.3.5/2019_03_02_02_world.sql b/sql/updates/world/3.3.5/2019_03_02_02_world.sql new file mode 100644 index 00000000000..c87f5892462 --- /dev/null +++ b/sql/updates/world/3.3.5/2019_03_02_02_world.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName` ='spell_freezing_circle'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(34779,'spell_freezing_circle'); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index e5d5d67b87b..e8c1b3438ff 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -4126,6 +4126,49 @@ class spell_corrupting_plague_aura : public AuraScript } }; +// 34779 - Freezing Circle +enum FreezingCircleSpells +{ + SPELL_FREEZING_CIRCLE_PIT_OF_SARON_NORMAL = 69574, + SPELL_FREEZING_CIRCLE_PIT_OF_SARON_HEROIC = 70276, + SPELL_FREEZING_CIRCLE = 34787, +}; + +class spell_freezing_circle : public SpellScript +{ + PrepareSpellScript(spell_freezing_circle); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_FREEZING_CIRCLE_PIT_OF_SARON_NORMAL, + SPELL_FREEZING_CIRCLE_PIT_OF_SARON_HEROIC, + SPELL_FREEZING_CIRCLE + }); + } + + void HandleDamage(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + uint32 spellId = 0; + Map* map = caster->GetMap(); + + if (map->IsDungeon()) + spellId = map->IsHeroic() ? SPELL_FREEZING_CIRCLE_PIT_OF_SARON_HEROIC : SPELL_FREEZING_CIRCLE_PIT_OF_SARON_NORMAL; + else + spellId = SPELL_FREEZING_CIRCLE; + + if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId)) + SetHitDamage(spellInfo->Effects[EFFECT_0].CalcValue()); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_freezing_circle::HandleDamage, EFFECT_1, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + void AddSC_generic_spell_scripts() { RegisterAuraScript(spell_gen_absorb0_hitlimit1); @@ -4246,4 +4289,5 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_clear_debuffs); RegisterAuraScript(spell_gen_pony_mount_check); RegisterAuraScript(spell_corrupting_plague_aura); + RegisterSpellScript(spell_freezing_circle); } |