@Override protected void runImpl() { final L2PcInstance player = getClient().getActiveChar(); if (player == null) return; final TradeList trade = player.getActiveTradeList(); if (trade == null) { _log.warning( "Character: " + player.getName() + " requested item:" + _objectId + " add without active tradelist:" + _tradeId); return; } final L2PcInstance partner = trade.getPartner(); if (partner == null || L2World.getInstance().getPlayer(partner.getObjectId()) == null || partner.getActiveTradeList() == null) { // Trade partner not found, cancel trade if (partner != null) _log.warning( "Character:" + player.getName() + " requested invalid trade object: " + _objectId); SystemMessage msg = new SystemMessage(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME); player.sendPacket(msg); player.cancelActiveTrade(); return; } if (trade.isConfirmed() || partner.getActiveTradeList().isConfirmed()) { player.sendPacket( new SystemMessage(SystemMessageId.CANNOT_ADJUST_ITEMS_AFTER_TRADE_CONFIRMED)); return; } if (!player.getAccessLevel().allowTransaction()) { player.sendMessage("Transactions are disable for your Access Level"); player.cancelActiveTrade(); return; } if (!player.validateItemManipulation(_objectId, "trade")) { player.sendPacket(new SystemMessage(SystemMessageId.NOTHING_HAPPENED)); return; } final TradeList.TradeItem item = trade.addItem(_objectId, _count); if (item != null) { player.sendPacket(new TradeOwnAdd(item)); trade.getPartner().sendPacket(new TradeOtherAdd(item)); } }