@Override public boolean set(Skill skill) { skill.setFirstTargetProperty(value); switch (value) { case ME: skill.setFirstTarget(skill.getEffector()); break; case TARGETORME: if (skill.getFirstTarget() == null) skill.setFirstTarget(skill.getEffector()); break; case TARGET: if (skill.getFirstTarget() == null || skill.getFirstTarget() == skill.getEffector()) return false; break; case MYPET: Creature effector = skill.getEffector(); if (effector instanceof Player) { Summon summon = ((Player) effector).getSummon(); if (summon != null) skill.setFirstTarget(summon); else return false; } else return false; break; case PASSIVE: skill.setFirstTarget(skill.getEffector()); break; case TARGET_MYPARTY_NONVISIBLE: if (!(skill.getFirstTarget() instanceof Player)) return false; Player effected = (Player) skill.getFirstTarget(); if (effected == null || !GroupService.getInstance().isGroupMember(effected.getObjectId()) || skill.getEffector().getWorldId() != effected.getWorldId()) return false; skill.setFirstTargetRangeCheck(false); break; case POINT: skill.setFirstTarget(null); break; } if (skill.getFirstTarget() != null) skill.getEffectedList().add(new CreatureWithDistance(skill.getFirstTarget(), 0)); return true; }