public float priorityFor(Actor actor) {
    if (actor == subject) return 0 ;
    
    float priority = actor.mind.greedFor(rewardAmount(actor)) * ROUTINE ;
    priority -= Plan.dangerPenalty(subject, actor) ;
    priority -= duration() * 0.5f / World.STANDARD_DAY_LENGTH ;
    if (subject instanceof Actor) {
      priority += actor.mind.relationValue((Actor) subject) * ROUTINE ;
    }
    if (subject instanceof Venue) {
      priority += actor.mind.relationValue((Venue) subject) * ROUTINE ;
    }
    
    //
    //  Modify by possession of combat and surveillance skills-
    float ability = 1 ;
    ability *= actor.traits.useLevel(SURVEILLANCE) / 10f ;
    ability *= Combat.combatStrength(actor, null) * 1.5f ;
    ability = Visit.clamp(ability, 0.5f, 1.5f) ;
    priority = Visit.clamp(priority * ability, 0, PARAMOUNT) ;
    
    if (verbose && I.talkAbout == actor) {
      ///I.say("Security priority for "+actor+" is "+priority) ;
    }
    return priority ;
  }