Exemplo n.º 1
0
  @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);
  }