@Override public String onAttack( L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill) { final L2Playable playable = (isSummon) ? attacker.getSummon() : attacker; final int longRangeGuardRate = npc.getTemplate().getParameters().getInt("LongRangeGuardRate"); final double distance = Util.calculateDistance(npc, playable, true, false); if (npc.isAffectedBySkill(ULTIMATE_DEFENSE.getSkillId()) && (distance <= MIN_DISTANCE)) { npc.stopSkillEffects(true, ULTIMATE_DEFENSE.getSkillId()); } else if ((distance > MIN_DISTANCE) && !npc.isSkillDisabled(ULTIMATE_DEFENSE.getSkillId()) && !((skill != null) && Util.contains(NOT_ALLOWED_SKILLS, skill.getId())) && (getRandom(100) < longRangeGuardRate)) { npc.setTarget(npc); npc.doCast(ULTIMATE_DEFENSE.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon, skill); }