chooseNumber
Sent when the engine needs the player to choose an integer — for example, how many times to replicate a spell, or a value for an “X” choice that isn’t part of a mana cost.
Arguments
Section titled “Arguments”input.type is "chooseNumber". The remaining fields:
interface ChooseNumberInput { presentation: PromptPresentation; min: number; max: number;}#[serde(rename_all = "camelCase")]pub struct ChooseNumberInput { pub presentation: PromptPresentation, pub min: i32, pub max: i32,}
References: PromptPresentation
Rendering
Section titled “Rendering”How the field is presented depends on the size of the range — both forms send
the same numberDecision response.

For a small range the client enumerates every legal value as a button. The player taps one and the choice is sent immediately — no confirm step.

For a large range it falls back to a free-entry stepper: the player types or steps to a value
within [min, max], then confirms.
Response
Section titled “Response”type ChooseNumberOutput = { type: "numberDecision"; chosenNumber: number | null };chosenNumber is null only if the choice is cancelled where cancelling is
legal; otherwise return the chosen integer in [min, max].
Example
Section titled “Example”{ "promptId": 7, "decidingPlayerId": "player-0", "input": { "type": "chooseNumber", "presentation": { "title": "Replicate", "description": "Choose how many times to copy this spell.", "text": "Pay {2} for each replicate.", "targets": [] }, "min": 0, "max": 5 }}{ "promptId": 7, "output": { "type": "numberDecision", "chosenNumber": 3 } }