aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2015_02_02_00_world.sql5
-rw-r--r--src/server/scripts/Spells/spell_dk.cpp46
2 files changed, 51 insertions, 0 deletions
diff --git a/sql/updates/world/2015_02_02_00_world.sql b/sql/updates/world/2015_02_02_00_world.sql
new file mode 100644
index 00000000000..7cf4f5c3a3b
--- /dev/null
+++ b/sql/updates/world/2015_02_02_00_world.sql
@@ -0,0 +1,5 @@
+DELETE FROM `spell_script_names` WHERE `spell_id`=49576;
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(49576, 'spell_dk_death_grip_initial');
+
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 49576;
diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp
index 65b25564401..7b2459ee1bf 100644
--- a/src/server/scripts/Spells/spell_dk.cpp
+++ b/src/server/scripts/Spells/spell_dk.cpp
@@ -46,6 +46,7 @@ enum DeathKnightSpells
SPELL_DK_DEATH_COIL_BARRIER = 115635,
SPELL_DK_DEATH_COIL_DAMAGE = 47632,
SPELL_DK_DEATH_COIL_HEAL = 47633,
+ SPELL_DK_DEATH_GRIP = 49560,
SPELL_DK_DEATH_STRIKE_HEAL = 45470,
SPELL_DK_ENHANCED_DEATH_COIL = 157343,
SPELL_DK_FROST_FEVER = 55095,
@@ -1119,6 +1120,50 @@ class spell_dk_will_of_the_necropolis : public SpellScriptLoader
}
};
+// 49576 - Death Grip Initial
+class spell_dk_death_grip_initial : public SpellScriptLoader
+{
+public:
+ spell_dk_death_grip_initial() : SpellScriptLoader("spell_dk_death_grip_initial") { }
+
+ class spell_dk_death_grip_initial_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dk_death_grip_initial_SpellScript);
+
+ SpellCastResult CheckCast()
+ {
+ Unit* caster = GetCaster();
+ // Death Grip should not be castable while jumping/falling
+ if (caster->HasUnitState(UNIT_STATE_JUMPING) || caster->HasUnitMovementFlag(MOVEMENTFLAG_FALLING))
+ return SPELL_FAILED_MOVING;
+
+ // Patch 3.3.3 (2010-03-23): Minimum range has been changed to 8 yards in PvP.
+ Unit* target = GetExplTargetUnit();
+ if (target && target->GetTypeId() == TYPEID_PLAYER)
+ if (caster->GetDistance(target) < 8.f)
+ return SPELL_FAILED_TOO_CLOSE;
+
+ return SPELL_CAST_OK;
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_DK_DEATH_GRIP, true);
+ }
+
+ void Register() override
+ {
+ OnCheckCast += SpellCheckCastFn(spell_dk_death_grip_initial_SpellScript::CheckCast);
+ OnEffectHitTarget += SpellEffectFn(spell_dk_death_grip_initial_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dk_death_grip_initial_SpellScript();
+ }
+};
+
void AddSC_deathknight_spell_scripts()
{
new spell_dk_anti_magic_shell();
@@ -1143,4 +1188,5 @@ void AddSC_deathknight_spell_scripts()
new spell_dk_unholy_blight();
new spell_dk_vampiric_blood();
new spell_dk_will_of_the_necropolis();
+ new spell_dk_death_grip_initial();
}