From 635f7831e1efa4030365aac0ee7531a75ca8e604 Mon Sep 17 00:00:00 2001 From: talamortis Date: Tue, 28 Nov 2017 21:29:40 +0000 Subject: [PATCH] Added more checks to death grip --- src/scripts/Spells/spell_dk.cpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/scripts/Spells/spell_dk.cpp b/src/scripts/Spells/spell_dk.cpp index 4dc3e13ee..b1b129acd 100644 --- a/src/scripts/Spells/spell_dk.cpp +++ b/src/scripts/Spells/spell_dk.cpp @@ -1545,12 +1545,16 @@ class spell_dk_death_grip : public SpellScriptLoader { PrepareSpellScript(spell_dk_death_grip_SpellScript); - SpellCastResult CheckPvPRange() + SpellCastResult CheckCast() { Unit* caster = GetCaster(); - if (Unit* target = GetExplTargetUnit()) - if (target->GetTypeId() == TYPEID_PLAYER && caster->GetExactDist(target) < 8.0f) // xinef: should be 8.0f, but we have to add target size (1.5f) - return SPELL_FAILED_TOO_CLOSE; + Unit* target = GetExplTargetUnit(); + + if (target->GetTypeId() == TYPEID_PLAYER && caster->GetExactDist(target) < 8.0f) // xinef: should be 8.0f, but we have to add target size (1.5f) + return SPELL_FAILED_TOO_CLOSE; + + if (caster->HasUnitState(UNIT_STATE_JUMPING) || caster->HasUnitMovementFlag(MOVEMENTFLAG_FALLING)) + return SPELL_FAILED_MOVING; return SPELL_CAST_OK; } @@ -1560,13 +1564,21 @@ class spell_dk_death_grip : public SpellScriptLoader Unit* caster = GetCaster(); Unit* target = GetHitUnit(); Unit* baseTarget = GetExplTargetUnit(); + Creature* targetCreature; if (caster != target) - { - caster->CastSpell(target, 49560, true); - const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(1766); // Rogue kick - if (!target->IsImmunedToSpellEffect(spellInfo, EFFECT_0)) - target->InterruptNonMeleeSpells(true); + { + if (targetCreature->isWorldBoss() || targetCreature->IsDungeonBoss()) + { + return; + } + else + { + caster->CastSpell(target, 49560, true); + const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(1766); // Rogue kick + if (!target->IsImmunedToSpellEffect(spellInfo, EFFECT_0)) + target->InterruptNonMeleeSpells(true); + } } else baseTarget->CastSpell(caster, 49560, true);