Added more checks to death grip

This commit is contained in:
talamortis
2017-11-28 21:29:40 +00:00
parent ebb2ce6b38
commit 635f7831e1
+20 -8
View File
@@ -1545,12 +1545,16 @@ class spell_dk_death_grip : public SpellScriptLoader
{ {
PrepareSpellScript(spell_dk_death_grip_SpellScript); PrepareSpellScript(spell_dk_death_grip_SpellScript);
SpellCastResult CheckPvPRange() SpellCastResult CheckCast()
{ {
Unit* caster = GetCaster(); Unit* caster = GetCaster();
if (Unit* target = GetExplTargetUnit()) 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 (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; return SPELL_CAST_OK;
} }
@@ -1560,13 +1564,21 @@ class spell_dk_death_grip : public SpellScriptLoader
Unit* caster = GetCaster(); Unit* caster = GetCaster();
Unit* target = GetHitUnit(); Unit* target = GetHitUnit();
Unit* baseTarget = GetExplTargetUnit(); Unit* baseTarget = GetExplTargetUnit();
Creature* targetCreature;
if (caster != target) if (caster != target)
{ {
caster->CastSpell(target, 49560, true); if (targetCreature->isWorldBoss() || targetCreature->IsDungeonBoss())
const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(1766); // Rogue kick {
if (!target->IsImmunedToSpellEffect(spellInfo, EFFECT_0)) return;
target->InterruptNonMeleeSpells(true); }
else
{
caster->CastSpell(target, 49560, true);
const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(1766); // Rogue kick
if (!target->IsImmunedToSpellEffect(spellInfo, EFFECT_0))
target->InterruptNonMeleeSpells(true);
}
} }
else else
baseTarget->CastSpell(caster, 49560, true); baseTarget->CastSpell(caster, 49560, true);