T08 iter 4: GROUND-OU/ND choices and Support consent
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>
This commit is contained in:
parent
27016af216
commit
290ad06c31
5 changed files with 512 additions and 13 deletions
57
scenarios/ground/gr-a05-support-response.yaml
Normal file
57
scenarios/ground/gr-a05-support-response.yaml
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
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]
|
||||
43
scenarios/ground/gr-a11-ground-ou.yaml
Normal file
43
scenarios/ground/gr-a11-ground-ou.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
scenario: ground/gr-a11-ground-ou
|
||||
description: >
|
||||
GROUND—OU restores a Denied Problem (GR-A11), and a Denied Problem is
|
||||
not otherwise revealable (GR-P02). A mode's sub-choice must belong to
|
||||
that mode (GR-A10).
|
||||
covers: [GR-A11, GR-P02, GR-P01]
|
||||
provisional: false
|
||||
seed: 42
|
||||
setup:
|
||||
players: 3
|
||||
preset: standard-3p
|
||||
patch:
|
||||
"lead": 0
|
||||
"problems.2.denied": true
|
||||
commands:
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args: { action: GROUND }
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 3 }
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 3 }
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
# GR-A10: GROUND—GR takes no sub-choice.
|
||||
- actor: P1
|
||||
cmd: choose_ground_mode
|
||||
args: { mode: GR, choice: restore_problem, problem: 2 }
|
||||
- actor: P1
|
||||
cmd: choose_ground_mode
|
||||
args: { mode: OU, choice: restore_problem, problem: 2 }
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
expect:
|
||||
events:
|
||||
- kind: ProblemRestored
|
||||
problem: 2
|
||||
state:
|
||||
"problems.2.denied": false
|
||||
"problems.2.face_up": true
|
||||
rejects: [4]
|
||||
47
scenarios/ground/gr-a12-ground-nd.yaml
Normal file
47
scenarios/ground/gr-a12-ground-nd.yaml
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
scenario: ground/gr-a12-ground-nd
|
||||
description: >
|
||||
GROUND—ND removes a Blame token from its player (GR-A12, GR-T02). The
|
||||
choice must name a token that is actually there, and a relation break
|
||||
must name a relation that exists.
|
||||
covers: [GR-A12, GR-T02, GR-T03]
|
||||
provisional: false
|
||||
seed: 42
|
||||
setup:
|
||||
players: 3
|
||||
preset: standard-3p
|
||||
patch:
|
||||
"lead": 0
|
||||
"players.0.blame_from": [1]
|
||||
commands:
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args: { action: GROUND }
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 3 }
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 3 }
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
# GR-T02: P3 has no Blame token in front of P1.
|
||||
- actor: P1
|
||||
cmd: choose_ground_mode
|
||||
args: { mode: ND, choice: remove_blame, seat: 2 }
|
||||
# GR-A12: no relation with P2 exists to break.
|
||||
- actor: P1
|
||||
cmd: choose_ground_mode
|
||||
args: { mode: ND, choice: break_relation, seat: 1 }
|
||||
- actor: P1
|
||||
cmd: choose_ground_mode
|
||||
args: { mode: ND, choice: remove_blame, seat: 1 }
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
expect:
|
||||
events:
|
||||
- kind: BlameRemoved
|
||||
player: 0
|
||||
owner: 1
|
||||
state:
|
||||
"players.0.blame_from": []
|
||||
rejects: [4, 5]
|
||||
Loading…
Add table
Add a link
Reference in a new issue