public void updateAsScheduled(int numUpdates) {
    super.updateAsScheduled(numUpdates) ;
    if (! structure.intact()) return ;
    //
    //  Provide power and life support-
    final float condition = (structure.repairLevel() + 1f) / 2 ;
    final int SB = structure.upgradeLevel(SECURITY_MEASURES) ;
    int powerLimit = 20 + (SB * 10), lifeSLimit = 10 + (SB * 5) ;
    powerLimit *= condition ;
    lifeSLimit *= condition ;
    if (stocks.amountOf(POWER) < powerLimit) {
      stocks.addItem(Item.withAmount(POWER, 1)) ;
    }
    if (stocks.amountOf(LIFE_SUPPORT) < lifeSLimit) {
      stocks.addItem(Item.withAmount(LIFE_SUPPORT, 1)) ;
    }
    //
    //  Demand provisions-
    final int foodNeed = personnel.residents().size() + 5 ;
    stocks.forceDemand(CARBS  , foodNeed * 1.5f, VenueStocks.TIER_CONSUMER) ;
    stocks.forceDemand(PROTEIN, foodNeed * 1.0f, VenueStocks.TIER_CONSUMER) ;
    stocks.forceDemand(GREENS , foodNeed * 1.0f, VenueStocks.TIER_CONSUMER) ;
    stocks.forceDemand(SPICE  , foodNeed * 0.5f, VenueStocks.TIER_CONSUMER) ;
    //
    //  Modify maximum integrity based on upgrades-
    final int BB = structure.upgradeLevel(BLAST_SHIELDS) ;
    structure.updateStats(650 + 250 * BB, 15 + 5 * BB, 0) ;
    
    int ambience = structure.numUpgrades() / 4 ;
    if (ambience == 3) ambience = 10 ;
    if (ambience == 2) ambience = 5 ;
    if (ambience == 1) ambience = 2 ;
    ambience += structure.upgradeLevel(GUEST_QUARTERS) ;
    ambience += structure.upgradeLevel(NOBLE_QUARTERS) ;
    structure.setAmbienceVal(ambience) ;
  }