Added more checks to death grip
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user