private Action nextSomaOrderFor(Actor actor) {
    if (stocks.amountOf(SOMA) <= 0) return null ;
    if (actor.traits.traitLevel(SOMA_HAZE) > 0) return null ;
    final float price = priceFor(SOMA) / 10f ;
    if ((price > actor.gear.credits() / 2) || ! isManned()) return null ;
    
    final Action drops = new Action(
      actor, this,
      this, "actionDropSoma",
      Action.FALL, "Dropping Soma"
    ) ;
    float priority = Action.ROUTINE ;
    priority += actor.traits.traitLevel(DEBAUCHED) / 2f ;
    priority += actor.traits.traitLevel(SOCIABLE)  / 2f ;
    priority += actor.traits.traitLevel(APPETITE)  / 2f ;
    priority -= actor.mind.greedFor((int) price) * Action.ROUTINE ;
    drops.setPriority(priority) ;
    return drops ;
  }