public void restore() { java.sql.Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement( "SELECT object_id FROM items WHERE owner_id=? AND (loc=? OR loc=?) " + "ORDER BY object_id DESC"); statement.setInt(1, getOwner().getObjectId()); statement.setString(2, getBaseLocation().name()); statement.setString(3, getEquipLocation().name()); ResultSet inv = statement.executeQuery(); L2ItemInstance item; while (inv.next()) { int objectId = inv.getInt(1); item = L2ItemInstance.restoreFromDb(objectId); if (item == null) continue; if(getOwner() instanceof L2PcInstance) { L2PcInstance player = (L2PcInstance)getOwner(); if(!player.isGM()) if (!player.isHero()) { int itemId = item.getItemId(); if ((itemId >= 6611 && itemId <= 6621) || itemId == 6842) item.setLocation(ItemLocation.INVENTORY); } } L2World.getInstance().storeObject(item); // If stackable item is found in inventory just add to current quantity if (item.isStackable() && getItemByItemId(item.getItemId()) != null) addItem("Restore", item, null, getOwner()); else addItem(item); } inv.close(); statement.close(); refreshWeight(); } catch (Exception e) { _log.warning("Could not restore inventory : " + e); } finally { try { con.close(); } catch (Exception e) {} } }