public boolean actionPlant(Actor actor, Crop crop) {
    //
    //  Initial seed quality has a substantial impact on crop health.
    final Item seed = actor.gear.bestSample(
      Item.asMatch(SAMPLES, crop.species), 0.1f
    ) ;
    float plantDC = ROUTINE_DC ;
    if (seed != null) {
      crop.health = 0.5f + (seed.quality / 2f) ;
      actor.gear.removeItem(seed) ;
    }
    else {
      if (GameSettings.hardCore) return false ;
      plantDC += 5 ;
      crop.health = 0 ;
    }
    //
    //  So does expertise and elbow grease.
    crop.health += actor.traits.test(CULTIVATION, plantDC, 1) ? 1 : 0 ;
    crop.health += actor.traits.test(HARD_LABOUR, ROUTINE_DC, 1) ? 1 : 0 ;
    crop.health = Visit.clamp(crop.health, 0, 5) ;
    crop.growStage = Crop.MIN_GROWTH ;
    crop.species = Plantation.pickSpecies(crop.tile, nursery.belongs) ;
    //
    //  Update and return-
    crop.parent.refreshCropSprites() ;
    crop.parent.checkCropStates() ;
    return true ;
  }