void updateHealth(int numUpdates) {
    //
    //  Define primary attributes-
    ageMultiple = calcAgeMultiple() ;
    maxHealth = baseBulk * ageMultiple * (DEFAULT_HEALTH +
      (actor.traits.traitLevel(VIGOUR) / 3f) +
      (actor.traits.traitLevel(BRAWN ) / 3f)
    ) ;
    if (numUpdates < 0) return ;
    //
    //  Deal with injury, fatigue and stress.
    stressCache = -1 ;
    final int oldState = state ;
    checkStateChange() ;
    updateStresses() ;
    advanceAge(numUpdates) ;
    //
    //  Check for disease or sudden death due to senescence.
    if (oldState != state && state != STATE_ACTIVE) {
      if (state < STATE_DYING && ! organic()) state = STATE_DYING ;
      I.say(actor+" has entered a non-active state: "+stateDesc()) ;
      actor.enterStateKO(Action.FALL) ;
    }
    if (state <= STATE_RESTING && metabolism == HUMAN_METABOLISM) {
      Condition.checkContagion(actor) ;
    }
  }