aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/3.3.5/2019_03_02_02_world.sql4
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp44
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);
}