public void loadState(Session s) throws Exception {
    
    final int hID = s.loadInt() ;
    homeworld = hID == -1 ? null : (System) Background.ALL_BACKGROUNDS[hID] ;
    for (int n = s.loadInt() ; n-- > 0 ;) {
      partners.add((System) Background.ALL_BACKGROUNDS[s.loadInt()]) ;
    }
    
    for (int i = NUM_J ; i-- > 0 ;) {
      jobSupply[i] = s.loadFloat() ;
      jobDemand[i] = s.loadFloat() ;
    }
    
    shortages.loadState(s) ;
    surpluses.loadState(s) ;
    for (Service type : ALL_COMMODITIES) {
      importPrices.put(type, s.loadFloat()) ;
      exportPrices.put(type, s.loadFloat()) ;
    }
    
    s.loadObjects(candidates) ;
    s.loadObjects(migrantsIn) ;
    ship = (Dropship) s.loadObject() ;
    nextVisitTime = s.loadFloat() ;
  }