public void onAction(L2PcInstance player) { // Check if the L2PcInstance already target the L2NpcInstance if (this != player.getTarget()) { if (Config.DEBUG) _log.fine("new target selected:"+getObjectId()); // Set the target of the L2PcInstance player player.setTarget(this); // Send a Server->Client packet MyTargetSelected to the L2PcInstance player // The player.getLevel() - getLevel() permit to display the correct color in the select window MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()); player.sendPacket(my); // Check if the player is attackable (without a forced attack) if (isAutoAttackable(player)) { // Send a Server->Client packet StatusUpdate of the L2NpcInstance to the L2PcInstance to update its HP bar StatusUpdate su = new StatusUpdate(getObjectId()); su.addAttribute(StatusUpdate.CUR_HP, (int)getCurrentHp() ); su.addAttribute(StatusUpdate.MAX_HP, getMaxHp() ); player.sendPacket(su); } // Send a Server->Client packet ValidateLocation to correct the L2NpcInstance position and heading on the client player.sendPacket(new ValidateLocation(this)); } else { if(this.isChampion() && TownManager.getInstance().checkIfInZone(this)) this.setChampion(false); // Send a Server->Client packet MyTargetSelected to the L2PcInstance player // The player.getLevel() - getLevel() permit to display the correct color MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()); player.sendPacket(my); // Check if the player is attackable (without a forced attack) and isn't dead if (isAutoAttackable(player) && !isAlikeDead()) { // Check the height difference if (Math.abs(player.getZ() - getZ()) < 400) // this max heigth difference might need some tweaking { // Set the L2PcInstance Intention to AI_INTENTION_ATTACK player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this); // player.startAttack(this); } else { // Send a Server->Client packet ActionFailed (target is out of attack range) to the L2PcInstance player player.sendPacket(new ActionFailed()); } }