@Override
	public void updateLot(List<String> optPlayerList)
	{
		final Environmental EV=affected;
		if(!(EV instanceof Room))
			return;
		Room R=(Room)EV;
		boolean didAnything=false;
		try
		{
			List<Runnable> postWork=new ArrayList<Runnable>();
			synchronized(("SYNC"+R.roomID()).intern())
			{
				R=CMLib.map().getRoom(R);
				lastItemNums=updateLotWithThisData(R,this,true,scheduleReset,optPlayerList,lastItemNums);

				if(getOwnerName().length()==0)
				{
					didAnything = retractRooms(R,postWork) || didAnything;
				}
				else
				if(canGenerateAdjacentRooms(R))
				{
					didAnything = expandRooms(R,postWork) || didAnything;
				}
			}
			for(Runnable run : postWork)
				run.run();
			scheduleReset=false;
		}
		finally
		{
			if(didAnything)
				getConnectedPropertyRooms(); // recalculates the unique id for this lot of rooms
		}
	}