public float priorityFor(Actor actor) {
    if (isDowned(target)) return 0 ;
    
    final boolean report = verbose && I.talkAbout == actor ;
    
    if (target instanceof Actor) {
      final Actor struck = (Actor) target ;
      float lossCost = PARAMOUNT, winReward = priorityMod ;
      if (begun()) lossCost = 0 ;
      
      float BP = combatPriority(actor, struck, winReward, lossCost, report) ;
      return BP <= 0 ? 0 : BP + ROUTINE ;
    }
    if (target instanceof Venue) {
      
      final Venue struck = (Venue) target ;
      float BP = priorityMod - (actor.mind.relationValue(struck) * ROUTINE) ;
      BP += ROUTINE ;
      
      //  TODO:  Factor this out.  Also repeated below.
      if (! begun()) {
        float danger = Retreat.dangerAtSpot(struck, actor, null) ;
        danger += Plan.dangerPenalty(struck, actor) ;
        BP += 0 - (danger * ROUTINE) ;
      }
      //  TODO:  Eliminate loss cost in a similar fashion to the above, if
      //  begun or in range, etc.
      
      ///I.sayAbout(actor, "Priority mod is: "+priorityMod) ;
      ///I.sayAbout(actor, "Relation is: "+actor.mind.relation(struck)) ;
      return BP ;// BP <= 0 ? 0 : BP + ROUTINE ;
    }
    return -1 ;
  }