public float priorityFor(Actor actor) {
    if (cost > actor.gear.credits() / 2f) return 0 ;
    
    final Employment work = actor.mind.work() ;
    float priority = ROUTINE * (1 - actor.health.moraleLevel()) ;
    if (work != null && work.personnel().onShift(actor)) {
      priority = IDLE ;
    }
    
    final float performValue = Performance.performValueFor(venue, this) ;
    priority *= rateComfort(venue, actor, this) / 10 ;
    priority = Visit.clamp(priority, 0, performValue) ;
    
    final Trait enjoyT[] = ENJOYMENT_TRAITS[type] ; for (Trait t : enjoyT) {
      priority += actor.traits.traitLevel(t) / enjoyT.length ;
    }
    priority -= actor.mind.greedFor((int) cost) ;
    priority -= Plan.rangePenalty(actor, venue) ;
    priority += priorityMod + enjoyBonus ;
    
    if (verbose) I.sayAbout(actor, "Relax priority for "+venue+": "+priority) ;
    return Visit.clamp(priority, 0, URGENT) ;
  }