protected Behaviour nextAssault() {
    if (! (mind.home() instanceof Venue)) return null ;
    final Venue lair = (Venue) mind.home() ;
    final Batch <Venue> sampled = new Batch <Venue> () ;
    world.presences.sampleFromKey(this, world, 10, sampled, Venue.class) ;
    
    final int SS = World.SECTOR_SIZE ;
    Venue toAssault = null ;
    float bestRating = 0 ;
    
    for (Venue venue : sampled) {
      if (venue.base() == this.base()) continue ;
      final float dist = Spacing.distance(venue, lair) ;
      float rating = SS / (SS + dist) ;
      rating += 1 - mind.relationValue(venue) ;
      if (rating > bestRating) { bestRating = rating ; toAssault = venue ; }
    }
    
    if (toAssault == null) return null ;
    final Combat siege = new Combat(this, toAssault) ;
    
    //
    //  TODO:  Base priority on proximity to your lair, along with total
    //  settlement size.
    return siege ;
  }