public boolean actionDisinfest(Actor actor, Crop crop) {
    final Item seed = actor.gear.bestSample(
      Item.asMatch(SAMPLES, crop.species), 0.1f
    ) ;
    int success = seed != null ? 2 : 0 ;
    if (actor.traits.test(CULTIVATION, MODERATE_DC, 1)) success++ ;
    if (actor.traits.test(CHEMISTRY  , ROUTINE_DC , 1)) success++ ;
    if (Rand.index(5) <= success) {
      crop.infested = false ;
      if (seed != null) actor.gear.removeItem(seed) ;
    }
    return true ;
  }