private float diagnoseBonus() {
    float manners = -5 ;
    manners += 5 * patient.mind.relationValue(actor) ;
    manners += 5 * actor.mind.relationValue(patient) ;
    manners /= 2 ;
    if (actor.aboard() != theatre) return manners ;
    
    Upgrade u = null ;
    if (type == TYPE_FIRST_AID  ) u = Sickbay.EMERGENCY_AID   ;
    if (type == TYPE_MEDICATION ) u = Sickbay.APOTHECARY      ;
    if (type == TYPE_PSYCH_EVAL ) {
      u = Sickbay.NEURAL_SCANNING ;
      manners *= 2 ;
    }
    if (type == TYPE_RECONSTRUCT) {
      u = Sickbay.INTENSIVE_CARE  ;
      manners = 0 ;
    }
    return (((1 + theatre.structure.upgradeBonus(u)) * 5) / 2f) + manners ;
  }