@Override
  public String onSkillSee(
      L2Npc npc, L2PcInstance caster, L2Skill skill, L2Object[] targets, boolean isPet) {
    if (caster == null) {
      return null;
    }
    if (!(npc instanceof L2Attackable)) {
      return null;
    }

    L2Attackable attackable = (L2Attackable) npc;

    int skillAggroPoints = skill.getAggroPoints();

    if (caster.getPet() != null) {
      if (targets.length == 1 && contains(targets, caster.getPet())) skillAggroPoints = 0;
    }

    if (skillAggroPoints > 0) {
      if (attackable.hasAI() && (attackable.getAI().getIntention() == AI_INTENTION_ATTACK)) {
        L2Object npcTarget = attackable.getTarget();
        for (L2Object skillTarget : targets) {
          if (npcTarget == skillTarget || npc == skillTarget) {
            L2Character originalCaster = isPet ? caster.getPet() : caster;
            attackable.addDamageHate(
                originalCaster, 0, (skillAggroPoints * 150) / (attackable.getLevel() + 7));
          }
        }
      }
    }

    return null;
  }