Controls & camera

Point and click adventure verb coin

point-and-click-adventure-verb-coin · an adoption of Pointer command, version 2

Tests included

Use in your package

The first button opens the authoring tool with these answers and numbers already filled in. You still add the rules and tuning of your own game.

What is in the zip file

The zip file holds the adoption and its acceptance tests. In the authoring tool, choose Add contract and pick this zip file. If you edit your package outside the authoring tool, unpack the zip file in your package folder. The files of the zip file go into contracts/.

The contract that this adoption uses

This contract covers pointer gestures that select things in the world and issue commands to or at the world. It records direct world orders, chosen abilities and verbs, orders added to a queue, and cancellation. This contract does not cover physical bindings, the camera view, displayed information, pathfinding, unit AI, or formations. The Control options contract covers physical bindings, the Camera framing contract covers the camera view, and the Fact list contract covers displayed information.

Read the full Pointer command contract →

Questions

The supplied answer is marked on each question. Pick other answers to see what changes. Nothing is saved here: the zip file and the authoring tool use the supplied answers.

Who receives a command made by pointing at the world?

Choices for Who receives a command made by pointing at the world?
Supplied answer One fixed actor or party receives every world command. An ARPG hero moves wherever the ground is clicked.

Every proposed command names the actor or party fixed by its cited command rule. No world selection is required to supply a receiver.

The current world selection receives every command. An RTS order moves the selected squad.

The receiver set is the complete current selection. An empty set is refused as a receiver.

The command belongs to the place or object under the pointer, without a selected actor. A colony work order marks one ore tile for any worker.

A proposed command names its world target and no selected receiver. The cited game rule owns any later choice of actor, worker, structure, or world system that carries it out.

Why this is asked

A pointer command may control one fixed actor, the current selection, or the place the pointer is on.

When the pointer just misses a target, what can it choose?

Choices for When the pointer just misses a target, what can it choose?
Supplied answer Only the exact place or object under the pointer counts. A click beside a chest does not choose it.

Candidate lookup uses the exact pointer point and applies no near-miss reach.

The nearest candidate inside the game's declared reach counts. A click beside a small lever can choose it.

Candidate lookup chooses the nearest selectable candidate inside the cited reach and uses the cited complete tie-break.

Why this is asked

The game can require the exact point or choose the nearest candidate inside a declared reach.

The player clicks or drags to select units, and nothing is there. What happens to the current selection?

Asked when
the selection gestures list has at least one row.
If not asked
No pointer gesture changes the current world selection.
Choices for The player clicks or drags to select units, and nothing is there. What happens to the current selection?
The current selection is cleared. A tactics click on open ground leaves no unit selected.

An empty result empties the current selection.

The current selection stays. A colony drag across bare ground leaves the chosen workers selected.

An empty result keeps the current selection.

Why this is asked

An empty click or box can clear the selection or leave the current selection in place. The answer applies only to selection gestures whose change is replace. When no such row exists, the answer has no effect.

The player points at an invalid target for the chosen ability or verb. Does the game keep waiting for another target?

Asked when
the targeted verbs list has at least one row.
If not asked
No chosen ability or verb waits for a world target from the pointer.
Choices for The player points at an invalid target for the chosen ability or verb. Does the game keep waiting for another target?
The game keeps waiting for another point. An ARPG fire spell still waits after the player points outside its range.

After an invalid target, the same chosen verb stays active.

Supplied answer The game stops waiting after the invalid point. A tower placement returns to ordinary pointing after a blocked tile.

After an invalid target, the chosen verb is cleared.

Why this is asked

The game can wait for the player to point again, or it can return to ordinary pointing.

The player holds the key that adds an order to the queue. Where does the new order go?

Asked when
the queue modifiers list has at least one row.
If not asked
No pointer modifier adds a command to a queue.
Choices for The player holds the key that adds an order to the queue. Where does the new order go?
The new order goes to the end of the queue. An RTS shift-order adds a final waypoint.

The declared placement is after every waiting command for the same plan owner.

The new order becomes the next order after the current one. A colony emergency repair runs before work already waiting.

The declared placement is before every waiting command for the same plan owner.

Why this is asked

The new order may wait at the end of the queue, or become the next order after the current one.

A new order arrives while another order is waiting. The player does not hold the key that adds an order to the queue. What happens?

Asked when
the context commands list has at least one row, or the targeted verbs list has at least one row.
If not asked
No pointer command can enter a queue.
Choices for A new order arrives while another order is waiting. The player does not hold the key that adds an order to the queue. What happens?
Supplied answer The new order replaces every order waiting in its owner's queue. A hero turns toward the newest clicked destination.

The unmodified placement clears waiting pointer commands for the same plan owner.

The new order goes to the end of its owner's queue. A colony keeps each new work mark.

The unmodified placement is after every waiting pointer command for the same plan owner.

The new order is refused while its owner has an order waiting. A build tool accepts no second placement until the first is no longer waiting.

An unmodified proposal is refused while its plan owner has a waiting pointer command.

Why this is asked

An order given without that key can replace the orders that wait in the queue, join the end of the queue, or be refused while its owner has an order waiting.

Numbersno numbers

This contract has no numbers to set.

Rulesno rules

A rule is a check between the numbers. Validation reports a rule that fails.

This contract has no rules between its numbers.

Lists5 lists

Each list holds the rows this adoption supplies. A list can be empty.

Selection gestures

selection-gestures

This adoption declares no selection gestures.

Context commands

context-commands

IdGestureResolves onTarget kindCommandGesture declared inTarget declared inArea declared inReceiver conditionCommand declared in
walk-on-groundworld-actionpressgroundwalk-tocontrols.world-actionscene.pointer-target-kinds——protagonist.walk-to-command

Targeted verbs

targeted-verbs

IdVerbOrderConfirm styleTarget gestureConfirm gestureResolves onAfter dispatchStarts when declared inTarget gesture declared inConfirm gesture declared inTargets declared inArea declared inCommand declared in
use-key-on-dooruse-keytarget-firstat-entry-positionopen-verb-coin—pressleave-targetingscene.choose-verb-coin-actioncontrols.open-verb-coin—puzzles.key-targets—puzzles.use-key-command

Queue modifiers

queue-modifiers

This adoption declares no queue modifiers.

Cancellations

cancellations

IdActionResolves onActive stateResultAction declared inState declared in
cancel-inventory-verbcancel-pointer-statepresstargetingends-targetingcontrols.cancel-pointer-stateinventory.chosen-verb-state
Test inputsscope and seeds

Some tests need a scope or seeds from the adoption before they can run.

This adoption supplies no test inputs. Every test uses its default inputs.

Acceptance tests37 tests apply

The contract comes with 64 tests. A test that runs once per row is counted once for each row. Tests that do not apply to these answers are still listed, with the reason.

pointer-command-vocabulary

pointer command uses actions, phases, snapshots, and states

scenarioonce

Applies to point-and-click-adventure-verb-coin.

A game-facing pointer action arrives after physical input mapping. Its pointer phase is a press, release, completed drag, or canceled drag, and its pointer snapshot is the world point and classified object at that phase. A cited non-pointer action has one completion phase. A selection drag and a targeting state begin and end only as the contract states. This test checks nothing about device identity, several simultaneous pointers, or camera view or follow behavior.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and its cited pointer, action, selection, and command rules

When
  • the contract's state and records are identified before a pointer phase is resolved
Then
  • a game-facing pointer action is received after physical input mapping and a pointer phase is its press, release, completed drag, or canceled drag
  • a pointer snapshot is the world point and classified object under the pointer at that phase
  • a cited non-pointer action that supplies a verb, confirmation, or cancellation has one completion phase, recorded as press unless its cited rule names release
  • a selection drag begins when its cited gesture rule crosses the drag threshold and ends when that action completes or cancels
  • a targeting state holds one chosen verb or one target-first snapshot waiting for the verb
  • device identity, several simultaneous pointers, and camera view or follow behavior are outside this contract, and this test checks nothing about them
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-targeting-state

selection-proposal-and-plan-vocabulary

selection, proposals, and waiting plans keep distinct meanings

scenarioonce

Applies to point-and-click-adventure-verb-coin.

The current selection is one set and starts empty unless a cited load or scene-entry rule supplies it. It persists until a cited rule changes it. A command proposal contains one command, receiver shape, exact world target, and queue placement. A waiting plan contains pointer commands accepted for later execution for its cited plan owner.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption with distinguishable selection, proposal, and waiting-plan records

When
  • a selection change and a pointer command are each followed through their declared route
Then
  • the current selection is one set of world objects and begins empty unless a cited load or scene-entry rule supplies it
  • the selection persists until a cited pointer, control-group recall, death, roster, scene-entry, or load rule changes it
  • one command proposal contains one command, its receiver shape, its exact world target, and its queue placement
  • one waiting plan contains pointer commands accepted for later execution for the plan owner named by the cited command rule
Diagnostics
  • point-and-click-adventure-verb-coin-selection-state
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-plan-state

selection-gesture-resolves-at-declared-phase

selection gesture Row.id resolves at its declared phase

scenarioper selection-gestures row

Does not apply to point-and-click-adventure-verb-coin: selection-gestures has no rows.

context-gesture-resolves-at-declared-phase · walk-on-ground

context command walk-on-ground resolves at its declared phase

scenarioper context-commands row

Applies to the walk-on-ground row.

Context row walk-on-ground matches action world-action and resolves immediately from the press snapshot; a later drag or release is not inferred from that press under controls.world-action. Where that cited rule emits repeated completed phases while held, each emitted phase produces exactly one walk-to proposal; where it emits none, this test checks nothing about repeated phases. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

context row walk-on-ground and the gesture rule at controls.world-action

When
  • game-facing pointer action world-action is performed through its declared press, movement, and release
Then
  • walk-on-ground resolves immediately from the press snapshot; a later drag or release is not inferred from that press
  • the row matches only its declared game-facing pointer action and resolving phase
  • where controls.world-action emits repeated completed phases while held, each emitted phase produces exactly one walk-to proposal; where it emits none, this test checks nothing in this line
  • the test leaves recognition, thresholds, and geometry to controls.world-action and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-proposal-log

targeted-verb-resolves-at-declared-phase · use-key-on-door

targeted verb use-key-on-door resolves at its declared phase

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

Targeted verb use-key-on-door uses the pointer snapshot at its declared press completion. One completed phase is recorded before validity is tested, and an incomplete phase creates no command proposal.

Test steps and diagnostics
Given

targeted-verb row use-key-on-door in its declared targeting route

When
  • its capture or confirmation reaches press
Then
  • use-key-on-door uses the pointer snapshot at its declared press completion
  • one completed phase is recorded before validity is tested
  • an incomplete phase creates no command proposal
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-proposal-log

gesture-rule-alone-classifies-motion

the cited gesture rule alone classifies motion

scenarioonce

Applies to point-and-click-adventure-verb-coin.

The cited gesture rule alone decides whether movement stays a point gesture, becomes a drag, or cancels. Its distance, duration, geometry, coordinate space, and boundary rule are read directly; this adoption contributes no number.

Test steps and diagnostics
Given

each pointer action the point-and-click-adventure-verb-coin adoption can perform, including positions on either side of every cited gesture boundary

When
  • the action moves and ends
Then
  • the cited gesture rule alone decides point, drag, or cancel
  • the result follows the cited distance, duration, geometry, coordinate space, and boundary rule
  • the adoption contributes no gesture quantity of its own
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-snapshot-log

one-physical-sequence-one-result

one physical sequence produces one pointer result

scenarioonce

Applies to point-and-click-adventure-verb-coin.

One physical sequence produces a point result or a drag result, never both. If the cited rule creates two distinct game-facing pointer actions, each has its own result; otherwise this test checks nothing about that exception.

Test steps and diagnostics
Given

each physical pointer sequence the point-and-click-adventure-verb-coin adoption can recognize

When
  • the sequence passes through press, movement, and release
Then
  • the sequence produces a point result or a drag result, never both
  • where the cited gesture rule creates two distinct game-facing pointer actions, each action has its own result; otherwise this test checks nothing in this line
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result

repeated-completed-phases-stay-distinct

each repeated completed command phase produces one proposal

scenarioonce

Applies to point-and-click-adventure-verb-coin.

Where a cited gesture rule emits repeated completed command phases while held, each phase has its own result and produces exactly one proposal. A held interval with no repeated phase produces no extra proposal. Where no rule emits repeated phases, this test checks nothing.

Test steps and diagnostics
Given

a held control whose cited gesture rule emits repeated completed command phases, where the adoption has one

When
  • the control remains held through two cited completed phases
Then
  • each emitted completed phase has its own pointer result
  • each completed command phase produces exactly one command proposal
  • a held interval that emits no repeated completed phase produces no extra proposal
  • where no cited rule emits repeated completed phases, this test checks nothing
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-proposal-log

cancellation-applies-before-other-rows · cancel-inventory-verb

cancellation cancel-inventory-verb applies before any other row

scenarioper cancellations row

Applies to the cancel-inventory-verb row.

Cancellation cancel-inventory-verb matches action cancel-pointer-state, its press phase, and the holding state in inventory.chosen-verb-state before any other row. It ends the targeting state, proposes no command, changes no selection beyond empties-selection, and ends the phase. Where more than one cancellation row could match, the contract checks the holding state in the order targeting, selection-drag, queued-commands, selection. A mismatch does not apply this row, and this test checks nothing about another cancellation row. This test checks nothing about an area cancellation.

Test steps and diagnostics
Given

cancellation row cancel-inventory-verb, action cancel-pointer-state, and the cited state at inventory.chosen-verb-state

When
  • a targeting state is active and cancel-pointer-state reaches press
  • the most similar case that does not match in action, phase, or holding state is also checked
Then
  • the complete match is checked before selection, context-command, or targeting rows and ends the targeting state
  • the matched phase proposes no command, changes no selection beyond empties-selection, and ends immediately
  • where more than one cancellation row could match, the holding state is checked in the order targeting, selection-drag, queued-commands, selection
  • the mismatch does not apply cancel-inventory-verb, and this test checks nothing about another cancellation row that matches
  • this test checks nothing about an area cancellation, if the game has one, because this row has no dragged cancellation region
Diagnostics
  • point-and-click-adventure-verb-coin-cancellation-log
  • point-and-click-adventure-verb-coin-targeting-state
  • point-and-click-adventure-verb-coin-selection-state
  • point-and-click-adventure-verb-coin-plan-state
  • point-and-click-adventure-verb-coin-proposal-log

verb-first-begins-targeting

verb-first row Row.id begins from its cited action

scenarioper targeted-verbs row

Does not apply to point-and-click-adventure-verb-coin: no row in targeted-verbs matches order verb first.

target-first-captures-before-verb · use-key-on-door

target-first row use-key-on-door captures its target before the verb

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

Target-first row use-key-on-door captures the classified target through open-verb-coin at controls.open-verb-coin, then scene.choose-verb-coin-action supplies use-key. A later entry does not replace an active state unless the start rule explicitly does so. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

targeted-verb row use-key-on-door, capture action open-verb-coin, and the rules at controls.open-verb-coin and scene.choose-verb-coin-action

When
  • open-verb-coin reaches press on a classified snapshot with no active targeting state
  • the cited game action then supplies verb use-key
  • another entry is attempted while the state is active
Then
  • the capture stores that exact world target in a target-first state before the verb arrives
  • the cited start action supplies use-key to the stored target
  • the later entry does not replace the active state unless scene.choose-verb-coin-action explicitly replaces it
  • the test leaves recognition and the start action to the two cited rules and restates nothing from them
Diagnostics
  • point-and-click-adventure-verb-coin-targeting-state
  • point-and-click-adventure-verb-coin-snapshot-log

separate-confirmation-reads-completion-snapshot

Row.id reads the target when confirmation completes

scenarioper targeted-verbs row

Does not apply to point-and-click-adventure-verb-coin: no row in targeted-verbs matches confirm-style separate gesture.

entry-position-confirmation-keeps-entry-snapshot · use-key-on-door

use-key-on-door confirms from its entry snapshot

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

At-entry-position row use-key-on-door confirms from the world target already captured before the verb arrives. A later pointer position does not replace that snapshot.

Test steps and diagnostics
Given

targeted-verb row use-key-on-door with distinguishable entry and later pointer snapshots

When
  • the row captures its declared entry-time snapshot and the pointer later occupies another position
Then
  • confirmation reads the world target already captured before the verb arrives
  • the later pointer position does not replace that snapshot
Diagnostics
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-targeting-state

targeted-drag-uses-cited-region

dragged verb Row.id uses its cited region

scenarioper targeted-verbs row

Does not apply to point-and-click-adventure-verb-coin: no row in targeted-verbs matches resolves-on drag complete.

targeted-verb-tests-candidate-and-validity · use-key-on-door

use-key-on-door resolves a candidate and tests validity

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

Targeted verb use-key-on-door applies near-miss resolution and validity through puzzles.key-targets. The result record distinguishes a valid target from an invalid one. The test names the address and restates nothing from it. This test checks nothing for a verb that needs several separately confirmed points.

Test steps and diagnostics
Given

targeted-verb row use-key-on-door with one cited valid target and one cited invalid target under puzzles.key-targets

When
  • each target reaches the row's confirmation route
Then
  • candidate lookup applies the adoption's near-miss-resolution answer through puzzles.key-targets
  • the cited validity test records valid for the valid target and invalid for the invalid target
  • the test leaves target kinds, reach, tie-break, and validity content to puzzles.key-targets and restates nothing from it
  • this test checks nothing for a verb that needs several separately confirmed points
Diagnostics
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-targeting-state

invalid-target-keeps-targeting

an invalid target keeps targeting

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: invalid target is leave targeting, not keep targeting.

invalid-target-leaves-targeting

an invalid target leaves targeting

scenarioonce

Applies to point-and-click-adventure-verb-coin.

An invalid target creates no command proposal and clears the chosen verb. The same phase is never matched against a context-command row. The result records invalid target rather than a refused proposal.

Test steps and diagnostics
Given

each targeted verb in point-and-click-adventure-verb-coin with an invalid target under its cited target rule

When
  • the verb reaches confirmation and the target fails validity
Then
  • no command proposal is created
  • the chosen verb is cleared
  • no context-command row runs from the same phase
  • the pointer result records invalid target rather than a refused proposal
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-targeting-state
  • point-and-click-adventure-verb-coin-proposal-log

valid-target-creates-one-proposal · use-key-on-door

a valid target creates one use-key-on-door proposal

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

A valid target for use-key-on-door creates one proposal carrying the exact target, the command from puzzles.use-key-command, and the receiver selected by the command-receiver answer. It ends targeting after the proposal is dispatched, placed, or refused. A refused command remains a dispatched proposal, and the refusal does not restore the earlier targeting instance. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

targeted-verb row use-key-on-door with a valid resolved target under puzzles.key-targets

When
  • the row completes confirmation and its proposal reaches placement
Then
  • one command proposal is created with the command from puzzles.use-key-command, the receiver selected by the command-receiver answer, the validated exact target, and a placement outcome
  • the proposal preserves the row result that ends targeting after the proposal is dispatched, placed, or refused
  • a refused command remains a dispatched proposal, and the refusal does not restore the earlier targeting instance
  • the test leaves permission, cost, range, path, unreachable result, effect, and refusal to puzzles.use-key-command and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-targeting-state
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-plan-state

targeting-suppresses-selection-and-context · use-key-on-door

use-key-on-door targeting suppresses ordinary selection and context rows

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

While the targeting state for use-key-on-door is active, an ordinary selection or context gesture has no meaning. If the same action and phase matches a cancellation row in the holding state, only the cancellation applies. Where the adoption cannot construct one of the two cases, this test checks nothing for that case.

Test steps and diagnostics
Given

targeted-verb row use-key-on-door's active targeting state and a game-facing pointer action that would match a selection or context row with no targeting state

When
  • the action completes while targeting is active, first without and then with a matching cancellation row where one exists
Then
  • without a matching cancellation row, the action changes no selection and creates no context-command proposal
  • with a matching cancellation row, only that cancellation result applies and the phase ends
  • where one of the two cases cannot be constructed, this test checks nothing for that case
Diagnostics
  • point-and-click-adventure-verb-coin-targeting-state
  • point-and-click-adventure-verb-coin-selection-state
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-cancellation-log

selection-or-context-row-match

one selection or context row matches without targeting

scenarioonce

Applies to point-and-click-adventure-verb-coin.

With no active targeting state, if a selection or context row matches action, phase, and classification, exactly one proceeds. A target-first capture gesture is resolved at targeting entry and is neither a selection or context row match nor an unmatched classification. If no row matches, no world-command state changes and the unmatched classification is recorded. Where no unmatched classification can be constructed, this test checks nothing for that case.

Test steps and diagnostics
Given

no active targeting state and each classified pointer snapshot the point-and-click-adventure-verb-coin adoption can produce, including an unmatched classification where one can be constructed

When
  • the game-facing pointer action reaches a completed phase
Then
  • where a row matches, exactly one selection or context row proceeds from its action, phase, and classification
  • a target-first capture gesture is resolved at targeting entry and is neither a selection or context row match nor an unmatched classification
  • where no row matches, no world-command state changes and the result records the unmatched classification
  • where every classification that can be constructed matches a row, this test checks nothing for the unmatched case
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-selection-state
  • point-and-click-adventure-verb-coin-proposal-log

receiver-conditioned-context-match

Row.id also matches its cited receiver class

scenarioper context-commands row

Does not apply to point-and-click-adventure-verb-coin: no matching row in context-commands has every field this test uses (receiver-condition).

selection-row-uses-complete-candidate-set

selection row Row.id commits its complete candidate set once

scenarioper selection-gestures row

Does not apply to point-and-click-adventure-verb-coin: selection-gestures has no rows.

empty-replace-clears-selection

an empty replacement clears the selection

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: empty selection is not asked for point-and-click-adventure-verb-coin.

empty-replace-keeps-selection

an empty replacement keeps the selection

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: empty selection is not asked for point-and-click-adventure-verb-coin.

context-row-copies-target-and-creates-proposal · walk-on-ground

context row walk-on-ground copies its target into one proposal

scenarioper context-commands row

Applies to the walk-on-ground row.

Context row walk-on-ground copies the classified ground point or object from scene.pointer-target-kinds as its exact target. One proposal is created with command walk-to and the receiver shape selected by the command-receiver answer; its Fixed command rule is at protagonist.walk-to-command. The copied target and receiver do not change before placement. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

context row walk-on-ground and a classified ground snapshot under scene.pointer-target-kinds

When
  • world-action completes at press with no active targeting state
Then
  • the row copies the classified point or object as the exact target
  • one proposal is created with command walk-to and the receiver shape selected by the command-receiver answer
  • the proposal proceeds to queue placement without changing the copied target or receiver
  • the test leaves classification, reach, and tie-break to scene.pointer-target-kinds and command content to protagonist.walk-to-command and restates nothing from them
Diagnostics
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-pointer-result

context-drag-uses-cited-region

dragged context row Row.id uses its cited region

scenarioper context-commands row

Does not apply to point-and-click-adventure-verb-coin: no row in context-commands matches resolves-on drag complete.

fixed-actor-receives-command

the cited fixed actor receives each command

scenarioonce

Applies to point-and-click-adventure-verb-coin.

Every command proposal copies the fixed actor or party from its cited command rule. No current selection supplies the receiver, and placement does not change it.

Test steps and diagnostics
Given

each matching context command and valid targeted verb in point-and-click-adventure-verb-coin

When
  • the command proposal is created
Then
  • the proposal copies the fixed actor or party from its cited command rule
  • no current selection is required to supply the receiver
  • the proposal proceeds through placement with that receiver unchanged
Diagnostics
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-selection-state
  • point-and-click-adventure-verb-coin-plan-state

current-selection-receives-command

the complete current selection receives each command

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: command receiver is fixed actor, not current selection.

world-target-owns-command

the exact world target owns each command

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: command receiver is fixed actor, not world target.

exact-point-only-resolves-candidates

candidate lookup uses the exact pointer point

scenarioonce

Applies to point-and-click-adventure-verb-coin.

Every candidate lookup uses only the exact pointer point. No near-miss reach adds a candidate; the cited row rule still owns target kinds, point inclusion, and validity.

Test steps and diagnostics
Given

each candidate lookup in point-and-click-adventure-verb-coin, with one point on a cited target and one point just outside it

When
  • the pointer snapshot is classified through the row's candidate or target rule
Then
  • only the exact pointer point is used
  • no near-miss reach adds a candidate
  • the cited rule still owns target kinds, point inclusion, and validity
Diagnostics
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-pointer-result

nearest-within-reach-resolves-candidates

candidate lookup chooses the cited nearest candidate

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: near miss resolution is exact point only, not nearest within reach.

queue-modifier-appends-at-end

queue modifier Row.id appends a matching proposal

scenarioper queue-modifiers row

Does not apply to point-and-click-adventure-verb-coin: queued command placement is not asked for point-and-click-adventure-verb-coin.

queue-modifier-inserts-next

queue modifier Row.id inserts a matching proposal next

scenarioper queue-modifiers row

Does not apply to point-and-click-adventure-verb-coin: queued command placement is not asked for point-and-click-adventure-verb-coin.

unmodified-command-replaces-waiting

an unmodified command replaces waiting pointer commands

scenarioonce

Applies to point-and-click-adventure-verb-coin.

With no matching queue modifier, the proposal clears every waiting pointer command for the same owner and is placed once. Whether a command already being carried out stops belongs to the cited command rule. The plan record distinguishes replacement from an append with the same visible count. This test checks nothing about placement differences between rows, because the answer applies to the whole adoption.

Test steps and diagnostics
Given

an unmodified proposal in point-and-click-adventure-verb-coin for a plan owner with distinguishable waiting pointer commands

When
  • the proposal reaches placement with no matching queue modifier
Then
  • every waiting pointer command for the same owner is cleared
  • the new proposal is placed once and proceeds to its cited command rule
  • the command already being carried out stops only if the cited command rule says so
  • the plan record distinguishes replacement from an append that leaves one visible entry
  • this test checks nothing about placement differences between rows, because the answer applies to the whole adoption
Diagnostics
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-plan-state
  • point-and-click-adventure-verb-coin-pointer-result

unmodified-command-always-appends

an unmodified command appends after waiting commands

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: unmodified command is replaces waiting, not always appends.

unmodified-command-rejects-while-busy

an unmodified command is accepted only when its plan is not busy

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: unmodified command is replaces waiting, not rejected while busy.

proposal-count-and-targeting-result

one completed phase creates no duplicate proposal

scenarioonce

Applies to point-and-click-adventure-verb-coin.

Each completed phase that creates a proposal creates exactly one. A held modifier or update adds no copy. For a targeted verb, the row's after-dispatch result applies after placement or refusal; for a context command, this test checks nothing about that result.

Test steps and diagnostics
Given

each completed pointer phase in point-and-click-adventure-verb-coin that creates a proposal, including one with a held queue modifier where available

When
  • the proposal is created, placed or refused, and any targeted-verb result is applied
Then
  • the completed phase creates exactly one proposal
  • a held modifier or update creates no second copy within that phase
  • for a targeted verb, its after-dispatch result applies after placement or refusal; for a context command, this test checks nothing in this line
Diagnostics
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-targeting-state
  • point-and-click-adventure-verb-coin-plan-state

proposal-submission-stops-at-command-rule

dispatch stops at the cited command rule

scenarioonce

Applies to point-and-click-adventure-verb-coin.

Each placed proposal is submitted once to its cited Fixed command rule at its declared place. Permission, cost, range, path, the unreachable case, effect, refusal, and whether a current command stops belong to that rule. Event resolution owns same-instant order. This test checks nothing about a paired Action legibility adoption.

Test steps and diagnostics
Given

each placed proposal in point-and-click-adventure-verb-coin, including one queued proposal when the adoption can create one

When
  • the proposal reaches its declared place and is submitted
Then
  • the proposal is submitted once to its cited Fixed command rule at its declared place
  • the pointer contract makes no claim about permission, cost, range, path, the unreachable case, effect, refusal, or whether a current command stops after submission
  • when several proposals share one instant, their order is left to Event resolution
  • this test checks nothing about a paired Action legibility adoption
Diagnostics
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-plan-state
  • point-and-click-adventure-verb-coin-pointer-result

pointer-result-record-is-complete

the pointer result records the completed phase

scenarioonce

Applies to point-and-click-adventure-verb-coin.

Every pointer result records its gesture, phase, snapshot, targeting states, changed selection, proposed command and receiver, target, placement outcome, cancellation, tested target validity, unmatched classification, and available cited game-rule result. Where the adoption cannot construct an optional circumstance, this test checks nothing for that circumstance.

Test steps and diagnostics
Given

each completed pointer phase in point-and-click-adventure-verb-coin, including every optional circumstance the adoption can construct

When
  • the pointer result is read after resolution
Then
  • the result records gesture id, resolving phase, pointer snapshot, prior and final targeting state, and prior and final selection when changed
  • it records command and receiver when proposed, target, queue modifier or unmodified placement outcome, cancellation when used, and target validity for every targeted verb that reached validity
  • it records no-matching-row when applicable and the cited game-rule result when available
  • where the adoption cannot construct an optional circumstance, this test checks nothing for that circumstance
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result

authority-order-preserves-copies

later steps preserve the earlier snapshot and receiver

scenarioonce

Applies to point-and-click-adventure-verb-coin.

The contract's order of the steps is physical mapping, gesture recognition, cancellation, targeting entry, confirmation, selection or context classification, receiver snapshot, placement, dispatch, game rule, and same-instant event order. Later steps never change an earlier snapshot or receiver; classification can read receiver class without copying the set. The questions and rows supply choices and cited game rules. They do not change the order.

Test steps and diagnostics
Given

each completed pointer phase in point-and-click-adventure-verb-coin with distinguishable snapshot, receiver, placement, and game-rule data

When
  • the phase proceeds through every step it reaches
Then
  • physical mapping precedes gesture recognition, cancellation, targeting entry, target confirmation, selection or context classification, receiver snapshot, queue placement, command dispatch, game rule, and same-instant event order
  • a later step never changes the pointer snapshot or receiver copied earlier
  • classification can read receiver class without copying the receiver set
  • the questions and rows supply choices and cited game rules, and they do not change the order
Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-plan-state

empty-collections-and-unasked-questions

absent rows and unasked questions keep their declared meaning

scenarioonce

Applies to point-and-click-adventure-verb-coin.

This check reads the adoption shape. Each empty row set has exactly its when-empty meaning. Each gated question the adoption does not answer has exactly its otherwise meaning: without empty-selection, no pointer gesture changes the current world selection; without invalid-target, no chosen ability or verb waits for a world target from the pointer; without queued-command-placement, no pointer modifier adds a command to a queue; without unmodified-command, no pointer command can enter a queue. When the adoption answers a question or fills a row set, this test checks nothing for that question or row set.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption document, including each empty and non-empty row set and each gated question it does or does not answer

When
  • a reviewer compares the adoption shape with every row-set when-empty sentence and every gated-question otherwise sentence
Then
  • an empty selection-gestures set means no pointer gesture changes the current selection; when non-empty, this test checks nothing in this line
  • an empty context-commands set means no pointer gesture chooses a command directly from its world target; when non-empty, this test checks nothing in this line
  • an empty targeted-verbs set means no chosen verb waits for a pointer target; when non-empty, this test checks nothing in this line
  • an empty queue-modifiers set means no pointer modifier adds a command to a queue; when non-empty, this test checks nothing in this line
  • an empty cancellations set means no action has a separate cancellation meaning in this adoption; when non-empty, this test checks nothing in this line
  • when the adoption does not answer empty-selection, no pointer gesture changes the current world selection; when it answers, this test checks nothing in this line
  • when the adoption does not answer invalid-target, no chosen ability or verb waits for a world target from the pointer; when it answers, this test checks nothing in this line
  • when the adoption does not answer queued-command-placement, no pointer modifier adds a command to a queue; when it answers, this test checks nothing in this line
  • when the adoption does not answer unmodified-command, no pointer command can enter a queue; when it answers, this test checks nothing in this line
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

selection-and-context-rows-are-disjoint

declaration check: selection and context rows are disjoint

scenarioonce

Applies to point-and-click-adventure-verb-coin.

This declaration check reads the adoption, not the running game. Under the contract's mutually exclusive classifications, no selection and context row, two selection rows, or target-first capture and selection or context row can match the same game-facing action, phase, and classification. No two cancellation rows match the same game-facing action and phase in one holding state under the contract's targeting, selection-drag, queued-commands, selection order. Context target kinds for one action and phase, together with any cited receiver class, must be mutually exclusive. One completed phase selects or commands, never both. Any other shape makes the adoption invalid, and this test fails.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption, not the running game

When
  • a reviewer compares every selection row, context row, target-first capture gesture, and cancellation row by its contract matching terms
Then
  • no selection row and context row match the same game-facing action, phase, and classification
  • no two selection rows match the same game-facing action, phase, and classification
  • no target-first capture gesture matches the same game-facing action, phase, and classification as a selection or context row
  • no two cancellation rows match the same game-facing action and phase in one holding state
  • for one context action and phase, target-kind values together with any cited receiver class are mutually exclusive
  • one completed phase therefore selects or commands, never both
  • any other shape makes the adoption invalid, and this test fails
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

queue-modifier-targets-declared-rows

declaration check: modifier Row.id names only declared commands, and at least one

scenarioper queue-modifiers row

Does not apply to point-and-click-adventure-verb-coin: queue-modifiers has no rows.

cancellation-state-can-exist · cancel-inventory-verb

declaration check: cancellation cancel-inventory-verb names a state this adoption can hold

scenarioper cancellations row

Applies to the cancel-inventory-verb row.

This declaration check reads the adoption, not the running game. For cancellation cancel-inventory-verb in targeting, the adoption has a targeted-verb row, and its result must match that state. Any other shape makes the adoption invalid, and this test fails.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and cancellation row cancel-inventory-verb, not the running game

When
  • a reviewer compares its active state with the adoption's rows and answers
Then
  • for active state targeting, the adoption has a targeted-verb row
  • the result matches that state: targeting with ends-targeting, selection-drag with ends-drag, queued-commands with empties-queue, or selection with empties-selection
  • any other shape makes the adoption invalid, and this test fails
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

current-selection-has-a-source

declaration check: current selection has a declared source

scenarioonce

Does not apply to point-and-click-adventure-verb-coin: command receiver is fixed actor, not current selection.

targeted-verb-has-exit · use-key-on-door

declaration check: targeted verb use-key-on-door has a way to leave targeting

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

This declaration check reads the adoption, the contract's targeted-verbs description, and scene.choose-verb-coin-action, not the running game. The description requires every targeting state to be left through leave-targeting, a targeting cancellation row, or the cited start rule. Targeted verb use-key-on-door must therefore have leave-targeting as its applicable invalid-target answer or after-dispatch value, a targeting cancellation row, or an exit in that cited start rule. Any other shape makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption, the contract's targeted-verbs description, targeted-verb row use-key-on-door, its start rule, and its cancellation rows, not the running game

When
  • a reviewer checks every route by which this targeting state can end
Then
  • the targeted-verbs description requires every targeting state to be left through leave-targeting, a targeting cancellation row, or the cited start rule
  • for use-key-on-door, the applicable invalid-target answer or after-dispatch value is leave-targeting, or the adoption has a targeting cancellation row, or scene.choose-verb-coin-action states an exit
  • any other shape makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

selection-gesture-citation-duty

declaration check: Row.id gesture citation states its duty

scenarioper selection-gestures row

Does not apply to point-and-click-adventure-verb-coin: selection-gestures has no rows.

selection-candidates-citation-duty

declaration check: Row.id candidate citation states its duty

scenarioper selection-gestures row

Does not apply to point-and-click-adventure-verb-coin: selection-gestures has no rows.

context-gesture-citation-duty · walk-on-ground

declaration check: walk-on-ground gesture citation states its duty

scenarioper context-commands row

Applies to the walk-on-ground row.

This declaration check reads the adoption and controls.world-action, not the running game. The citation must satisfy this duty: it recognizes the game-facing pointer action and its completion phase. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and controls.world-action, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.world-action recognizes the game-facing pointer action and its completion phase
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

context-target-citation-duty · walk-on-ground

declaration check: walk-on-ground target citation states its duty

scenarioper context-commands row

Applies to the walk-on-ground row.

This declaration check reads the adoption and scene.pointer-target-kinds, not the running game. The citation must satisfy this duty: it classifies the pointer snapshot, names the exact target, and states reach and a complete tie-break for nearest-within-reach. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and scene.pointer-target-kinds, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • scene.pointer-target-kinds classifies the pointer snapshot, names the exact target, and states reach and a complete tie-break for nearest-within-reach
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

context-area-citation-duty

declaration check: Row.id area citation states its duty

scenarioper context-commands row

Does not apply to point-and-click-adventure-verb-coin: no row in context-commands matches resolves-on drag complete.

context-receiver-condition-citation-duty

declaration check: Row.id receiver-condition citation states its duty

scenarioper context-commands row

Does not apply to point-and-click-adventure-verb-coin: no matching row in context-commands has every field this test uses (receiver-condition).

context-command-citation-duty · walk-on-ground

declaration check: walk-on-ground command citation states its duty

scenarioper context-commands row

Applies to the walk-on-ground row.

This declaration check reads the adoption and protagonist.walk-to-command, not the running game. The citation must satisfy this duty: it names the command, receiver, target, per-target plan owner, permission, unreachable-target result, and complete accepted or refused effect. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and protagonist.walk-to-command, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • protagonist.walk-to-command names the command, receiver, target, per-target plan owner, permission, unreachable-target result, and complete accepted or refused effect
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

targeted-start-citation-duty · use-key-on-door

declaration check: use-key-on-door start citation states its duty

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

This declaration check reads the adoption and scene.choose-verb-coin-action, not the running game. The citation must satisfy this duty: it names the game action that supplies the verb and any targeting-state replacement or exit it owns. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and scene.choose-verb-coin-action, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • scene.choose-verb-coin-action names the game action that supplies the verb and any targeting-state replacement or exit it owns
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

targeted-target-gesture-citation-duty · use-key-on-door

declaration check: use-key-on-door target-gesture citation states its duty

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

This declaration check reads the adoption and controls.open-verb-coin, not the running game. The citation must satisfy this duty: it recognizes the target-first pointer action and its capture phase. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and controls.open-verb-coin, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.open-verb-coin recognizes the target-first pointer action and its capture phase
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

targeted-confirm-gesture-citation-duty

declaration check: Row.id confirmation citation states its duty

scenarioper targeted-verbs row

Does not apply to point-and-click-adventure-verb-coin: no row in targeted-verbs matches confirm-style separate gesture.

targeted-targets-citation-duty · use-key-on-door

declaration check: use-key-on-door targets citation states its duty

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

This declaration check reads the adoption and puzzles.key-targets, not the running game. The citation must satisfy this duty: it names target capture, every valid target, near-miss reach and tie-break when used, and the complete invalid-target test. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and puzzles.key-targets, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • puzzles.key-targets names target capture, every valid target, near-miss reach and tie-break when used, and the complete invalid-target test
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

targeted-area-citation-duty

declaration check: Row.id area citation states its duty

scenarioper targeted-verbs row

Does not apply to point-and-click-adventure-verb-coin: no row in targeted-verbs matches resolves-on drag complete.

targeted-command-citation-duty · use-key-on-door

declaration check: use-key-on-door command citation states its duty

scenarioper targeted-verbs row

Applies to the use-key-on-door row.

This declaration check reads the adoption and puzzles.use-key-command, not the running game. The citation must satisfy this duty: it names the command, receiver, per-target plan owner, permission, cost, unreachable-target result, and complete effect or refusal. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and puzzles.use-key-command, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • puzzles.use-key-command names the command, receiver, per-target plan owner, permission, cost, unreachable-target result, and complete effect or refusal
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

queue-modifier-citation-duty

declaration check: Row.id modifier citation states its duty

scenarioper queue-modifiers row

Does not apply to point-and-click-adventure-verb-coin: queue-modifiers has no rows.

queue-applicability-citation-duty

declaration check: Row.id applicability citation states its duty

scenarioper queue-modifiers row

Does not apply to point-and-click-adventure-verb-coin: queue-modifiers has no rows.

cancellation-action-citation-duty · cancel-inventory-verb

declaration check: cancel-inventory-verb action citation states its duty

scenarioper cancellations row

Applies to the cancel-inventory-verb row.

This declaration check reads the adoption and controls.cancel-pointer-state, not the running game. The citation must satisfy this duty: it recognizes the cancellation action and its completion phase. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and controls.cancel-pointer-state, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.cancel-pointer-state recognizes the cancellation action and its completion phase
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

cancellation-state-citation-duty · cancel-inventory-verb

declaration check: cancel-inventory-verb state citation states its duty

scenarioper cancellations row

Applies to the cancel-inventory-verb row.

This declaration check reads the adoption and inventory.chosen-verb-state, not the running game. The citation must satisfy this duty: it names when the affected targeting, selection-drag, waiting-plan, or selection state exists. A missing duty makes the adoption invalid, and this test fails. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the point-and-click-adventure-verb-coin adoption and inventory.chosen-verb-state, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • inventory.chosen-verb-state names when the affected targeting, selection-drag, waiting-plan, or selection state exists
  • a missing duty makes the adoption invalid, and this test fails
  • the test names the address and restates nothing from it
Diagnostics
  • point-and-click-adventure-verb-coin-declaration-record

pointer-command-holds

pointer command holds for the whole run

generalonce

Applies to point-and-click-adventure-verb-coin.

Across every completed pointer phase of the audited run in every state the adoption can be in, every completed phase matches at most one row in the contract's precedence; every selection change commits once from the complete candidate set; every proposal keeps its copied snapshot and receiver to its declared place; every cancellation clears only its declared state; every targeting state ends only as declared; and no phase produces two proposals.

Test steps and diagnostics
Holds

every completed pointer phase matched at most one row in the precedence the contract fixes; every selection change committed once from the complete candidate set; every command proposal carried its copied snapshot and receiver unchanged to its declared place; every cancellation cleared only its declared state; every targeting state ended only as declared; no phase produced two proposals

Seeds

["audit-a","audit-b"]

Scope

every completed pointer phase of the audited run in every state the adoption can be in

Diagnostics
  • point-and-click-adventure-verb-coin-pointer-result
  • point-and-click-adventure-verb-coin-snapshot-log
  • point-and-click-adventure-verb-coin-selection-state
  • point-and-click-adventure-verb-coin-targeting-state
  • point-and-click-adventure-verb-coin-proposal-log
  • point-and-click-adventure-verb-coin-plan-state
  • point-and-click-adventure-verb-coin-cancellation-log
JSONthe adoption as one file

Answers you try on this page do not change this file. To change an adoption, open it in the authoring tool.

{
  "contract": "pointer-command",
  "version": 2,
  "summary": "This contract covers pointer gestures that select things in the world and issue commands to or at the world. It records direct world orders, chosen abilities and verbs, orders added to a queue, and cancellation. This contract does not cover physical bindings, the camera view, displayed information, pathfinding, unit AI, or formations. The Control options contract covers physical bindings, the Camera framing contract covers the camera view, and the Fact list contract covers displayed information.",
  "questions": {
    "command-receiver": {
      "asks": "Who receives a command made by pointing at the world?",
      "rationale": "A pointer command may control one fixed actor, the current selection, or the place the pointer is on.",
      "options": {
        "fixed-actor": {
          "meaning": "One fixed actor or party receives every world command. An ARPG hero moves wherever the ground is clicked.",
          "semantics": "Every proposed command names the actor or party fixed by its cited command rule. No world selection is required to supply a receiver."
        },
        "current-selection": {
          "meaning": "The current world selection receives every command. An RTS order moves the selected squad.",
          "semantics": "The receiver set is the complete current selection. An empty set is refused as a receiver."
        },
        "world-target": {
          "meaning": "The command belongs to the place or object under the pointer, without a selected actor. A colony work order marks one ore tile for any worker.",
          "semantics": "A proposed command names its world target and no selected receiver. The cited game rule owns any later choice of actor, worker, structure, or world system that carries it out."
        }
      }
    },
    "near-miss-resolution": {
      "asks": "When the pointer just misses a target, what can it choose?",
      "rationale": "The game can require the exact point or choose the nearest candidate inside a declared reach.",
      "options": {
        "exact-point-only": {
          "meaning": "Only the exact place or object under the pointer counts. A click beside a chest does not choose it.",
          "semantics": "Candidate lookup uses the exact pointer point and applies no near-miss reach."
        },
        "nearest-within-reach": {
          "meaning": "The nearest candidate inside the game's declared reach counts. A click beside a small lever can choose it.",
          "semantics": "Candidate lookup chooses the nearest selectable candidate inside the cited reach and uses the cited complete tie-break."
        }
      }
    },
    "empty-selection": {
      "asks": "The player clicks or drags to select units, and nothing is there. What happens to the current selection?",
      "rationale": "An empty click or box can clear the selection or leave the current selection in place. The answer applies only to selection gestures whose change is replace. When no such row exists, the answer has no effect.",
      "when": {
        "row-count": {
          "selection-gestures": "non-empty"
        }
      },
      "otherwise": "No pointer gesture changes the current world selection.",
      "options": {
        "clear-selection": {
          "meaning": "The current selection is cleared. A tactics click on open ground leaves no unit selected.",
          "semantics": "An empty result empties the current selection."
        },
        "keep-selection": {
          "meaning": "The current selection stays. A colony drag across bare ground leaves the chosen workers selected.",
          "semantics": "An empty result keeps the current selection."
        }
      }
    },
    "invalid-target": {
      "asks": "The player points at an invalid target for the chosen ability or verb. Does the game keep waiting for another target?",
      "rationale": "The game can wait for the player to point again, or it can return to ordinary pointing.",
      "when": {
        "row-count": {
          "targeted-verbs": "non-empty"
        }
      },
      "otherwise": "No chosen ability or verb waits for a world target from the pointer.",
      "options": {
        "keep-targeting": {
          "meaning": "The game keeps waiting for another point. An ARPG fire spell still waits after the player points outside its range.",
          "semantics": "After an invalid target, the same chosen verb stays active."
        },
        "leave-targeting": {
          "meaning": "The game stops waiting after the invalid point. A tower placement returns to ordinary pointing after a blocked tile.",
          "semantics": "After an invalid target, the chosen verb is cleared."
        }
      }
    },
    "queued-command-placement": {
      "asks": "The player holds the key that adds an order to the queue. Where does the new order go?",
      "rationale": "The new order may wait at the end of the queue, or become the next order after the current one.",
      "when": {
        "row-count": {
          "queue-modifiers": "non-empty"
        }
      },
      "otherwise": "No pointer modifier adds a command to a queue.",
      "options": {
        "append-at-end": {
          "meaning": "The new order goes to the end of the queue. An RTS shift-order adds a final waypoint.",
          "semantics": "The declared placement is after every waiting command for the same plan owner."
        },
        "insert-next": {
          "meaning": "The new order becomes the next order after the current one. A colony emergency repair runs before work already waiting.",
          "semantics": "The declared placement is before every waiting command for the same plan owner."
        }
      }
    },
    "unmodified-command": {
      "asks": "A new order arrives while another order is waiting. The player does not hold the key that adds an order to the queue. What happens?",
      "rationale": "An order given without that key can replace the orders that wait in the queue, join the end of the queue, or be refused while its owner has an order waiting.",
      "when": {
        "any": [
          {
            "row-count": {
              "context-commands": "non-empty"
            }
          },
          {
            "row-count": {
              "targeted-verbs": "non-empty"
            }
          }
        ]
      },
      "otherwise": "No pointer command can enter a queue.",
      "options": {
        "replaces-waiting": {
          "meaning": "The new order replaces every order waiting in its owner's queue. A hero turns toward the newest clicked destination.",
          "semantics": "The unmodified placement clears waiting pointer commands for the same plan owner."
        },
        "always-appends": {
          "meaning": "The new order goes to the end of its owner's queue. A colony keeps each new work mark.",
          "semantics": "The unmodified placement is after every waiting pointer command for the same plan owner."
        },
        "rejected-while-busy": {
          "meaning": "The new order is refused while its owner has an order waiting. A build tool accepts no second placement until the first is no longer waiting.",
          "semantics": "An unmodified proposal is refused while its plan owner has a waiting pointer command."
        }
      }
    }
  },
  "declares": {
    "values": {},
    "rows": {
      "selection-gestures": {
        "description": "Pointer gestures that replace, add, remove, or toggle actors or world objects in the current selection.",
        "when-empty": "No pointer gesture changes the current world selection.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A short name in your game's words, such as point-select or box-select."
          },
          "gesture": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The pointer action that the game receives after physical input mapping, such as select-point or select-area."
          },
          "resolves-on": {
            "type": "string",
            "required": true,
            "options": [
              "press",
              "release",
              "drag-complete"
            ],
            "description": "The pointer phase that settles the selection. A tactics point may settle on release; an RTS box settles when its drag completes."
          },
          "shape": {
            "type": "string",
            "required": true,
            "options": [
              "point",
              "area"
            ],
            "description": "Whether the gesture tests one pointer point or the cited dragged area."
          },
          "change": {
            "type": "string",
            "required": true,
            "options": [
              "replace",
              "add",
              "remove",
              "toggle"
            ],
            "description": "How the selectable results change the current selection. A strategy box may replace it while a modified click adds one unit."
          },
          "gesture-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say how the game recognizes this press, release, or drag. The rules include any drag threshold and the geometry of the area."
          },
          "candidates-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say which kinds of target can be selected. The rules say when the pointer point or the dragged area includes a target. They give the near-miss reach, when the game uses one. They give a complete tie-break. A point rule may return several candidates, as in double-click select-type."
          }
        }
      },
      "context-commands": {
        "description": "Commands chosen directly from the classified world target under a pointer gesture, such as moving on ground or attacking an enemy.",
        "when-empty": "No pointer gesture chooses a command directly from what lies under it.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A short name in your game's words, such as move-on-ground or attack-enemy."
          },
          "gesture": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The pointer action that the game receives after physical input mapping, such as world-command or context-order."
          },
          "resolves-on": {
            "type": "string",
            "required": true,
            "options": [
              "press",
              "release",
              "drag-complete"
            ],
            "description": "The pointer phase that proposes the command. An action RPG may move on release while a colony designation completes as a drag."
          },
          "target-kind": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The mutually exclusive world classification that selects this row, such as ground, enemy, door, or buildable-tile."
          },
          "command": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The game command proposed by this row, such as move, basic-attack, open-door, or place-tower."
          },
          "gesture-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say how the game recognizes the pointer action and which phase completes it."
          },
          "target-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say how the game classifies what is under the pointer and what the exact target is. For nearest-within-reach, the rules also give the reach and the tie-break."
          },
          "area-declared-in": {
            "type": "citation",
            "when": {
              "row": {
                "resolves-on": [
                  "drag-complete"
                ]
              }
            },
            "description": "Where your game's rules say what the dragged region is, whether its boundary is included, and how the region becomes the command target."
          },
          "receiver-condition": {
            "type": "citation",
            "description": "Where your game's rules say which receiver class this row is limited to, such as worker or soldier. This field is optional."
          },
          "command-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say what the command is. The rules name its receiver. They name its target. They say who owns the queue for each target. They say when the command is permitted. They say what happens when the target cannot be reached. They give the complete effect of the command when it is accepted and when it is refused."
          }
        }
      },
      "targeted-verbs": {
        "description": "Abilities and verbs that use a pointer-captured world target, whether the verb or the target arrives first. Every targeting state can be left: through leave-targeting, a targeting cancellation row, or the cited start rule.",
        "when-empty": "No chosen ability or verb waits for a world target from the pointer.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A short name in your game's words, such as artillery-target or use-key-on-door."
          },
          "verb": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The chosen ability or verb applied to the captured world target."
          },
          "order": {
            "type": "string",
            "required": true,
            "options": [
              "verb-first",
              "target-first"
            ],
            "description": "Whether the verb starts before target capture or arrives from a cited game action after the pointer captures the target."
          },
          "confirm-style": {
            "type": "string",
            "required": true,
            "options": [
              "separate-gesture",
              "at-entry-position"
            ],
            "description": "Whether confirmation needs another pointer gesture or uses the pointer snapshot captured when this verb entry begins."
          },
          "target-gesture": {
            "type": "string",
            "pattern": "kebab-case",
            "when": {
              "row": {
                "order": [
                  "target-first"
                ]
              }
            },
            "description": "The pointer action that captures the world target before the verb arrives."
          },
          "confirm-gesture": {
            "type": "string",
            "pattern": "kebab-case",
            "when": {
              "row": {
                "confirm-style": [
                  "separate-gesture"
                ]
              }
            },
            "description": "The action that separately confirms this target. It may be a pointer gesture or a cited non-pointer action, such as releasing the held ability key."
          },
          "resolves-on": {
            "type": "string",
            "required": true,
            "options": [
              "press",
              "release",
              "drag-complete"
            ],
            "description": "The phase that this row uses. With a separate confirmation, it is the phase of the confirming gesture. For a target-first row, it is the phase that captures the target. For a verb-first row that confirms at the entry position, it is the phase that completes the cited entry action. A row that resolves on a completed drag also cites its region rule."
          },
          "after-dispatch": {
            "type": "string",
            "required": true,
            "options": [
              "leave-targeting",
              "keep-targeting"
            ],
            "description": "Whether a valid dispatched command ends targeting or keeps the same verb ready for another target. A tower tool may remain active for repeated placement."
          },
          "starts-when-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say which game action supplies the verb. For a target-first row, this action arrives after the target is captured."
          },
          "target-gesture-declared-in": {
            "type": "citation",
            "when": {
              "row": {
                "order": [
                  "target-first"
                ]
              }
            },
            "description": "Where your game's rules say how the game recognizes the target-first pointer action and in which phase it captures the target."
          },
          "confirm-gesture-declared-in": {
            "type": "citation",
            "when": {
              "row": {
                "confirm-style": [
                  "separate-gesture"
                ]
              }
            },
            "description": "Where your game's rules say how the game recognizes the confirmation gesture and which phase completes it."
          },
          "targets-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say how a target is captured. The rules name every valid target. They give the near-miss reach and the tie-break, when the game uses them. They give the complete test for an invalid target."
          },
          "area-declared-in": {
            "type": "citation",
            "when": {
              "row": {
                "resolves-on": [
                  "drag-complete"
                ]
              }
            },
            "description": "Where your game's rules say what the dragged region is, whether its boundary is included, and how the region becomes the target of the verb."
          },
          "command-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say what the command is. The rules name its receiver. They say who owns the queue for each target. They say when the command is permitted. They say what the command costs. They say what happens when the target cannot be reached. They give the complete effect of the command, or its refusal."
          }
        }
      },
      "queue-modifiers": {
        "description": "Modifier actions that add matching pointer commands to a queue.",
        "when-empty": "No pointer modifier adds a command to a queue.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A short name in your game's words, such as queue-orders or urgent-work-next."
          },
          "modifier-action": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The mapped game action held or active when the pointer command completes."
          },
          "modifier-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say when this modifier action is active, what the capacity of the queue is, if it has one, and what happens when the queue has no free place."
          },
          "applies-to-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say to which context commands and targeted verbs this modifier applies. The rules name every one of them, and they name at least one row of this adoption."
          }
        }
      },
      "cancellations": {
        "description": "Actions that end targeting, abort a selection drag, clear the orders waiting in a queue, or clear the current selection without proposing another command.",
        "when-empty": "No action has a separate cancellation meaning in this adoption.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A short name in your game's words, such as cancel-ability-target or abort-box-select."
          },
          "action": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The pointer action or other game action that has a cancellation meaning in the cited state."
          },
          "resolves-on": {
            "type": "string",
            "required": true,
            "options": [
              "press",
              "release",
              "drag-cancel"
            ],
            "description": "The phase of the action that applies the cancellation."
          },
          "active-state": {
            "type": "string",
            "required": true,
            "options": [
              "targeting",
              "selection-drag",
              "queued-commands",
              "selection"
            ],
            "description": "The state in which this row applies. The state named selection exists while the current selection is not empty. A cancel of an ability uses targeting. An RTS gesture that clears planned orders uses queued-commands."
          },
          "result": {
            "type": "string",
            "required": true,
            "options": [
              "ends-targeting",
              "ends-drag",
              "empties-queue",
              "empties-selection"
            ],
            "description": "The state change made without another world command. The result matches the row's active state; empties-queue clears the queue named at state-declared-in."
          },
          "action-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say how the game recognizes the cancellation action and which phase completes it."
          },
          "state-declared-in": {
            "type": "citation",
            "required": true,
            "description": "Where your game's rules say when the affected state exists: the targeting state, the selection drag, the queue, or the selection."
          }
        }
      }
    }
  },
  "rules": {},
  "origin": "https://opengdd.org/contracts/pointer-command-2",
  "mechanism": [
    "This text decides the order of the steps for what a pointer press, drag, or release over the world means; how selection, context command, and targeting states advance; where a queue modifier places a command; and what a cancellation clears. The questions and rows supply choices and cited game rules. They do not change the order.",
    "A **game-facing pointer action** is the action received after Control options maps a mouse, touch, or stick-driven cursor input. A **pointer phase** is its press, release, completed drag, or canceled drag. A **pointer snapshot** is the world point and classified object under the pointer at that phase. The broader **game-facing action** also includes a cited non-pointer action that supplies a verb, confirmation, or cancellation; a non-pointer action has one completion phase, recorded as its press unless its cited rule names release. The **current selection** is one set of world objects. It starts empty unless a cited load or scene-entry rule supplies it, lasts until a rule changes it, and may also change through cited control-group recall, unit death, roster change, scene entry, or load. A **selection drag** starts when its cited gesture rule crosses the drag threshold and lasts until that same gesture completes or cancels. A **targeting state** holds one chosen ability or verb, or a target-first snapshot while it waits for the verb. A **command proposal** contains one command, its receiver shape, exact world target, and queue placement. A **waiting plan** contains pointer commands accepted for later execution for the owner named by the cited command rule. The questions and field descriptions call a waiting plan a queue, and call its commands orders. The game's Fixed command rules own whether a proposal is accepted and what it does.",
    "### Recognize the gesture",
    "1. Control options maps physical input to one game-facing pointer action. The matching cited gesture rule observes its press, movement, and release. This contract does not inspect device identity.",
    "2. On press, record the pointer snapshot needed by the cited gesture rule. A row that resolves on press proceeds immediately, and no later drag or release result is inferred from that press for this contract.",
    "3. While the pointer moves, the cited rule alone decides whether it remains a point gesture, becomes a drag, or is canceled. Its cited distance, duration, geometry, coordinate space, and boundary rule are read directly; this adoption contributes no number. A cited gesture rule may emit repeated completed phases while a control is held.",
    "4. On release, create the final pointer snapshot. A release row resolves now. A recognized drag creates one `drag-complete` phase; an aborted drag creates one `drag-cancel` phase belonging to that drag's own game-facing action. One physical sequence cannot produce both a point result and a drag result unless the cited rule creates two distinct game-facing actions.",
    "### Resolve cancellation and targeting",
    "5. At each completed action phase, check cancellation before any other row. A cancellation row matches on three terms of its own: the game-facing action, its resolving phase, and the currently holding active state, checked in this order: targeting, selection-drag, queued-commands, selection. Apply its declared result and end this phase. It proposes no command and performs no selection change beyond `empties-selection`.",
    "6. For `verb-first`, a game action named by `starts-when-declared-in` supplies the verb and begins its targeting entry. For `target-first`, the capture gesture — matched on its game-facing action, phase, and classified snapshot — captures the world target and begins a target-first state; then the cited game action — a verb coin, pie menu, or command card — supplies the verb. A second entry does not change the active targeting state unless the cited start rule explicitly replaces it.",
    "7. While targeting is active, ordinary selection and direct-command rows do not run. Under `separate-gesture`, a matching confirmation action reads the pointer snapshot at its completion moment — for a non-pointer confirmation such as a key release, the pointer's position at that release. Under `at-entry-position`, confirmation reads the entry-time snapshot: the pointer position when a verb-first entry begins or the already captured target for target-first. A `drag-complete` row also reads its cited region rule, and validity is tested on that region. Apply `near-miss-resolution` through `targets-declared-in`, then test validity. A non-matching pointer action has no meaning here unless it matches a cancellation row.",
    "8. For an invalid target, propose no command. Under `keep-targeting`, preserve the active verb. Under `leave-targeting`, clear it. The same pointer phase is not then matched against the context-command rows.",
    "9. For a valid target, create one command proposal from the targeted row and its cited rules; under `current-selection` an empty selection makes it one refused proposal, as in step 12. Preserve the row's `after-dispatch` result with the proposal. A refused command is still a dispatched proposal, so refusal does not restore targeting unless the cited game rule starts a new instance.",
    "### Resolve selection or a context command",
    "10. With no active targeting state, find the one selection or context row that matches the game-facing action, pointer phase, and classified pointer snapshot. A context row with `receiver-condition` also matches the receiver class named by that citation; receiver class therefore participates in classification when a row cites it. A receiver-conditioned adoption keeps its receiver set homogeneous for that action: when rows cite different receiver classes for one action, phase, and target kind, the selection holds one class at a time under the receiver-condition citation. This version cannot express different commands for the members of one mixed selection. For one game-facing action and phase, selection rows, context rows, and target-first capture gestures have mutually exclusive classifications. Apply `near-miss-resolution` through the row's cited target or candidate rule. If no row matches, change no world-command state and record the unmatched classification in step 16.",
    "11. For a selection row, compute its complete candidate set from the cited point or area rule. With an empty result, a `replace` row applies `empty-selection`; an `add`, `remove`, or `toggle` row always keeps the current selection, because an empty result gives such a row nothing to add, remove, or toggle. With a non-empty result, apply `replace`, `add`, `remove`, or `toggle` to the complete set. Commit the new selection once and end this pointer phase.",
    "12. For a context row, copy its classified point or object as the command target. Under `fixed-actor`, read the fixed receiver from the cited command rule. Under `current-selection`, copy the complete current selection. An empty copy creates one refused proposal with no world effect and ends at this step; it never reaches queue placement or dispatch. Under `world-target`, attach no selected receiver and read that exact target's plan owner from the cited command rule. Create one command proposal and continue.",
    "### Place and dispatch the command",
    "13. Read queue modifiers only after the command, receiver, and target are fixed. A matching modifier changes placement, not meaning. Under `append-at-end`, place the proposal after every waiting pointer command for the same waiting-plan owner. Under `insert-next`, place it before those waiting commands and after the command already being carried out. The cited modifier rule owns plan capacity and the complete result of the refusal when no place is available; this contract never drops another command implicitly.",
    "14. With a matching modifier, add the proposal at the position from step 13. Without one, read `unmodified-command`: `replaces-waiting` clears waiting pointer commands for the same owner, `always-appends` places the proposal after them, and `rejected-while-busy` records a refusal and stops when one is waiting. A proposal exists once per completed phase; a held modifier or update cannot add another copy within that phase. After a targeted proposal is dispatched, placed, or refused at this step, apply its row's `after-dispatch` result: `leave-targeting` ends the state and `keep-targeting` preserves it.",
    "15. Submit each dispatched proposal to its cited Fixed command rule. That rule owns permission, cost, range, path request, the unreachable-destination case, effect, refusal, and whether the command already being carried out stops. A queued proposal is submitted when it reaches its declared place. Event resolution owns the order when several proposals share one instant.",
    "16. Record the pointer result: gesture id, resolving phase, pointer snapshot, prior and final targeting state, prior and final selection when changed, command and receiver when proposed, target, queue modifier or unmodified placement outcome, cancellation when used, target validity for every targeted verb that reached a validity test, a no-matching-row result when applicable, and the cited game-rule result when available.",
    "The order of the steps is: physical mapping, gesture recognition, cancellation, targeting entry, target confirmation, selection or context classification, receiver snapshot, queue placement, command dispatch, game rule, and same-instant event order. A later step never changes the pointer snapshot or receiver copied by an earlier step; classification may read receiver class without copying the receiver set."
  ],
  "pack": "sha256:e5103351d21ef47e6f90b1e34ceba968cf5bf77ec393a38413f80aa8e442eee1",
  "answers": {
    "command-receiver": "fixed-actor",
    "near-miss-resolution": "exact-point-only",
    "invalid-target": "leave-targeting",
    "unmodified-command": "replaces-waiting"
  },
  "values": {},
  "rows": {
    "selection-gestures": [],
    "context-commands": [
      {
        "id": "walk-on-ground",
        "gesture": "world-action",
        "resolves-on": "press",
        "target-kind": "ground",
        "command": "walk-to",
        "gesture-declared-in": "controls.world-action",
        "target-declared-in": "scene.pointer-target-kinds",
        "command-declared-in": "protagonist.walk-to-command"
      }
    ],
    "targeted-verbs": [
      {
        "id": "use-key-on-door",
        "verb": "use-key",
        "order": "target-first",
        "confirm-style": "at-entry-position",
        "target-gesture": "open-verb-coin",
        "resolves-on": "press",
        "after-dispatch": "leave-targeting",
        "starts-when-declared-in": "scene.choose-verb-coin-action",
        "target-gesture-declared-in": "controls.open-verb-coin",
        "targets-declared-in": "puzzles.key-targets",
        "command-declared-in": "puzzles.use-key-command"
      }
    ],
    "queue-modifiers": [],
    "cancellations": [
      {
        "id": "cancel-inventory-verb",
        "action": "cancel-pointer-state",
        "resolves-on": "press",
        "active-state": "targeting",
        "result": "ends-targeting",
        "action-declared-in": "controls.cancel-pointer-state",
        "state-declared-in": "inventory.chosen-verb-state"
      }
    ]
  }
}