@Override
  protected void runImpl() {
    L2PcInstance player = getClient().getActiveChar();
    if (player == null || !(player.getPet().isPet)) return;

    // Alt game - Karma punishment
    if (!Config.ALT_GAME_KARMA_PLAYER_CAN_TRADE && player.getKarma() > 0) return;

    if (player.getPrivateStoreType() != 0) {
      player.sendMessage("Cannot exchange items while trading");
      return;
    }

    if (player.isCastingNow()) {
      return;
    }

    if (player.getActiveEnchantItem() != null) {
      Util.handleIllegalPlayerAction(
          player,
          "Player " + player.getName() + " Tried To Use Enchant Exploit! Ban This Player",
          Config.DEFAULT_PUNISH);
      return;
    }

    if (player.InventoryMoreLimit()) {
      return;
    }

    // Exploit Fix for Hero weapons Uses pet Inventory to buy New One.
    // [L2Scoria]
    L2ItemInstance item = player.getInventory().getItemByObjectId(_objectId);

    if (item == null) return;

    if (item.isAugmented()) return;

    if (!item.isDropable() || !item.isDestroyable() || !item.isTradeable()) {
      sendPacket(new SystemMessage(SystemMessageId.ITEM_NOT_FOR_PETS));
      return;
    }

    if (item.isTimeLimitedItem()) {
      sendPacket(new SystemMessage(SystemMessageId.ITEM_NOT_FOR_PETS));
      return;
    }

    L2PetInstance pet = (L2PetInstance) player.getPet();

    if (pet.isDead()) {
      sendPacket(new SystemMessage(SystemMessageId.CANNOT_GIVE_ITEMS_TO_DEAD_PET));
      return;
    }

    if (_amount < 0) return;

    if (player.transferItem("Transfer", _objectId, _amount, pet.getInventory(), pet) == null) {
      _log.warn(
          "Invalid item transfer request: " + pet.getName() + "(pet) --> " + player.getName());
    }
  }