Added more checks to death grip

This commit is contained in:
talamortis
2017-11-28 21:29:40 +00:00
parent ebb2ce6b38
commit 635f7831e1
+14 -2
View File
@@ -1545,13 +1545,17 @@ 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) 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; 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,14 +1564,22 @@ 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)
{
if (targetCreature->isWorldBoss() || targetCreature->IsDungeonBoss())
{
return;
}
else
{ {
caster->CastSpell(target, 49560, true); caster->CastSpell(target, 49560, true);
const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(1766); // Rogue kick const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(1766); // Rogue kick
if (!target->IsImmunedToSpellEffect(spellInfo, EFFECT_0)) if (!target->IsImmunedToSpellEffect(spellInfo, EFFECT_0))
target->InterruptNonMeleeSpells(true); target->InterruptNonMeleeSpells(true);
} }
}
else else
baseTarget->CastSpell(caster, 49560, true); baseTarget->CastSpell(caster, 49560, true);
} }