sow no longer needs grain + add crop zone paint tools

Bug: pawns weren't replanting. _find_sow required a TYPE_GRAIN item
as seed, but Millstone's flour bill (FOREVER) consumed all grain
before sow could claim it. With CookingProvider now priority 6, grain
contention is fatal — TILLED crops sit forever.

Fix: removed the grain requirement. Sow is now Rimworld-style — the
designation triggers work; no input is consumed. _find_sow returns a
2-toil job (walk → interact). Crop.on_sow_tick just flips stage to
SOWN.

Feature: 4 new paint tools in BuildDrawer's new "Farm" section column
— TOOL_PAINT_CROP_WHEAT/POTATO/CORN/STRAWBERRY. Painting a grass
tile spawns a TILLED Crop entity that pawns then sow. World rejects
non-grass tiles, occupied tiles, and non-walkable terrain. 9 new
string keys, kind-specific thumbnail draws (gold/tan/yellow/red).

MCP verified: 12 forced-TILLED crops fully cycled TILLED → SOWN →
growth → READY within ~3000 ticks. Paint tool spawned wheat crop at
(35, 30); wall tile at (44, 23) correctly rejected.

Followup smell: cancelling a designation on a player-painted crop
will queue_free even if grown — Crop has no can_complete. Future
guard could skip crops past TILLED.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
megaproxy 2026-05-16 21:29:00 +01:00
parent 87a7beb22b
commit c6c88acc47
6 changed files with 107 additions and 54 deletions

View file

@ -183,6 +183,7 @@ const TABLE: Dictionary = {
&"ui.build_drawer.section.structures": "Structures",
&"ui.build_drawer.section.furniture": "Furniture",
&"ui.build_drawer.section.production": "Production",
&"ui.build_drawer.section.farm": "Farm",
&"tool.chop": "Chop trees",
&"tool.mine": "Mine rocks",
&"tool.dig_grave": "Dig grave",
@ -330,6 +331,15 @@ const TABLE: Dictionary = {
&"tooltip.tool.paint_quarry": "Paint a quarry on a stone outcrop",
&"tooltip.tool.paint_stockpile": "Paint a stockpile zone",
&"tooltip.tool.graveyard": "Paint a graveyard zone",
# Crop zone paint tools (no seed cost — pawns sow when free).
&"tool.paint_crop_wheat": "Wheat field",
&"tool.paint_crop_potato": "Potato field",
&"tool.paint_crop_corn": "Corn field",
&"tool.paint_crop_strawberry": "Berry patch",
&"tooltip.tool.paint_crop_wheat": "Paint a wheat field. Pawns will sow when free.",
&"tooltip.tool.paint_crop_potato": "Paint a potato field. Pawns will sow when free.",
&"tooltip.tool.paint_crop_corn": "Paint a corn field. Pawns will sow when free.",
&"tooltip.tool.paint_crop_strawberry": "Paint a strawberry patch. Pawns will sow when free.",
}