Plant
Requires the player to plant the specified seeds. Counts 1 per seed planted.
{ "type": "Plant", "title": "Plant hemp seeds", "description": "", "amountRequired": 10, "conditions": {}, "items": ["seed.hemp"], "genes": []}Fields
Section titled “Fields”| Field | Type | Description |
|---|---|---|
type | string | Exactly 'Plant'. |
title | string | Short, human-readable name. Must not be empty. |
description | string | A blurb of 1 to 3 sentences. May be empty if the title is self-explanatory. |
amountRequired | integer (≥ 1) | How many seeds the player must plant. |
cooldown | object | null | Optional pacing limit on how fast progress adds up: at most maxAmount units of progress count in any sliding window of windowSeconds. Absent means progress adds up freely. While the window's budget is used up, further progress is ignored and the player sees a countdown to the next available moment. |
burst | object | null | Optional clustering requirement: actions only count when they arrive clustered, at least amount units within one trailing window of windowSeconds forming one burst. When present, amountRequired counts completed bursts instead of raw actions. Actions that age out of the window without completing a burst never count. Absent means no clustering. |
conditions | map | Optional conditions that restrict when progress counts. Progress is recorded only when the objective's main requirement and all of these conditions are met. Use an empty map for none. |
hideDetails | boolean | When true, hides this objective's in-game condition strip and details popup, so the description is the only explanation players get. Title, description and progress still show. Absent means false. |
items | string[] | Seed item shortNames to plant (e.g. seed.corn, seed.hemp). Empty = any seed. |
genes | object[] | Optional gene filter: a list of { mode, composition } requirements where a plant counts if it matches at least one of these (OR). An empty or absent list (the default) counts any plant. composition is 1-6 letters from G/Y/H/W/X (Growth, Yield, Hardiness, Water, Empty) matched as a multiset (order ignored), and mode is 'Exact' (the full six-slot genome, short compositions padded with Empty) or 'AtLeast' (at least the listed count of each named type). |
- Progress increments by one each time a listed seed is planted.
- An empty
itemslist counts any seed. - See also Harvest for taking the yield and Cloning for taking cuttings.
Genes Property
Section titled “Genes Property”The optional genes field restricts the objective to specific gene
compositions. It is a list of requirements where any matching requirement counts (OR). An empty or absent list counts any gene composition (the default).
Each requirement is { mode: "Exact" | "AtLeast", composition: string }:
compositionis 1 to 6 letters drawn fromG(Growth),Y(Yield),H(Hardiness),W(Water),X(Empty). Order is ignored, only the count of each letter matters, soGGYYYY,YGYGYG, andYYYYGGare the same requirement.modecontrols how the composition is matched:Exact(default): the plant’s full six-slot genome must equal the composition. A composition shorter than six letters pads the remaining slots withX(Empty), soExact "GGYY"means exactlyGGYYXX. (2 Growth, 2 Yield, 2 Empty in any order)AtLeast: the plant must have at least the listed count of each named gene type; the other slots can be anything.AtLeast "YYYY"counts any plant with 4 or more Yield genes.
{ "type": "Plant", "title": "Plant high-yield corn", "amountRequired": 10, "items": ["seed.corn"], "genes": [{ "mode": "AtLeast", "composition": "YYYY" }]}A Plant objective matches against the seed’s own chosen genes, not the plant that later grows from it. Initial seeds with “Unknown” genes will never match a genes filter.
