Closes the three rules deferred in iter 2 and 3 because each needed a decision from a player rather than a default I would have invented: - GR-A11 GROUND-OU: restore a Denied Problem, protect a face-up one from Deny, or cancel an Attack aimed at the chooser. - GR-A12 GROUND-ND: remove a Blame token, break a relation involving the chooser, or reject a Reverse. - GR-L02 / GR-A05: the Support target answers after Reveal — accept or decline a Bond where no relation exists, flip or break an existing Rivalry. A Bond can no longer form without consent. Each choice is validated against the state it claims to act on: a restore needs a Denied Problem, a cancel needs an Attack actually aimed at the chooser, a Blame removal needs that token present, a break needs that relation to exist. GR takes no sub-choice, and OU and ND may only use choices from their own list. GR-A09 ordering follows the U8 default: an OU cancellation is chosen at step 1 and applies first, so a Protection token is spent only when it is what actually cancels. 14 scenarios pass; AM-1 coverage 41/58 (70%), up from 34/58. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
57 lines
1.5 KiB
YAML
57 lines
1.5 KiB
YAML
scenario: ground/gr-a05-support-response
|
|
description: >
|
|
A Support target answers after Reveal: through a Rivalry they flip it
|
|
to a Bond or break it (GR-A05); with no relation a Bond forms only if
|
|
they accept (GR-L02). A player not receiving Support cannot answer.
|
|
covers: [GR-A05, GR-L02, GR-A03]
|
|
provisional: false
|
|
seed: 42
|
|
setup:
|
|
players: 3
|
|
preset: standard-3p
|
|
patch:
|
|
"lead": 0
|
|
"relations.0-1": Rivalry
|
|
commands:
|
|
- actor: P1
|
|
cmd: select_action
|
|
args: { action: SUPPORT, target: P2 }
|
|
- actor: P2
|
|
cmd: select_action
|
|
args: { action: SUPPORT, target: P3 }
|
|
- actor: P3
|
|
cmd: select_action
|
|
args: { action: INVESTIGATE, problem: 3 }
|
|
- actor: SYSTEM
|
|
cmd: reveal
|
|
# GR-A05: P2 is supported through a Rivalry, so it may flip.
|
|
- actor: P2
|
|
cmd: respond_to_support
|
|
args: { response: flip_to_bond }
|
|
# GR-L02: P3 has no relation with its supporter, so it accepts.
|
|
- actor: P3
|
|
cmd: respond_to_support
|
|
args: { response: accept_bond }
|
|
# P1 received no Support this round.
|
|
- actor: P1
|
|
cmd: respond_to_support
|
|
args: { response: accept_bond }
|
|
# GR-A05: a flip is not available where no relation exists.
|
|
- actor: P3
|
|
cmd: respond_to_support
|
|
args: { response: flip_to_bond }
|
|
- actor: SYSTEM
|
|
cmd: resolve
|
|
expect:
|
|
events:
|
|
- kind: SupportAnswered
|
|
player: 1
|
|
response: FlipToBond
|
|
- kind: RelationFormed
|
|
relation: Bond
|
|
state:
|
|
"relations.0-1": Bond
|
|
"relations.1-2": Bond
|
|
"players.1.stress": 1
|
|
"players.2.stress": 1
|
|
rejects: [6, 7]
|