- tools/mutation-check.mjs with tools/mutants.json: thirteen mutants against the Module 12 TypeScript reference (the eight of Module 13's first table, plus Armor before redirect, conditions at parse time, no defender priority, and the summon seam's noun check); all killed. - tools/run-scenario.mjs with tools/scenario/run.ts: a designer's cards, words and seam words as data, played on the Module 10 TypeScript reference. - course/10-spellgrid/designer-capstone.md and designer-example/ (output.txt is checked against the tool's output in the tools tests). - CI: diff-tracks (300 seeds), mutation-check, verify-levels. - Module 13: the mutation table is the tool's output; differential testing, undo and the solver sections describe the repository as it is. Lesson 10 says what the level proofs prove for levels 6, 8 and 9. - schema.mjs: a value that matches no oneOf branch is reported against the branch its const fields pick. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
168 lines
2.7 KiB
JSON
168 lines
2.7 KiB
JSON
{
|
|
"cards": [
|
|
{
|
|
"name": "Ash Totem",
|
|
"type": "minion",
|
|
"cost": 2,
|
|
"attack": 0,
|
|
"health": 6,
|
|
"noun": "ROCK",
|
|
"split": 0,
|
|
"text": [
|
|
{
|
|
"kind": "trigger",
|
|
"on": "selfDamaged"
|
|
},
|
|
{
|
|
"kind": "effect",
|
|
"effect": {
|
|
"type": "dealDamage",
|
|
"target": "enemyHero",
|
|
"amount": 1
|
|
}
|
|
}
|
|
],
|
|
"game": "spellgrid"
|
|
},
|
|
{
|
|
"name": "Thorn Idol",
|
|
"type": "minion",
|
|
"cost": 3,
|
|
"attack": 0,
|
|
"health": 3,
|
|
"noun": "SKULL",
|
|
"split": 2,
|
|
"text": [
|
|
{
|
|
"kind": "trigger",
|
|
"on": "selfDamaged"
|
|
},
|
|
{
|
|
"kind": "effect",
|
|
"effect": {
|
|
"type": "dealDamage",
|
|
"target": "allOtherMinions",
|
|
"amount": 1
|
|
}
|
|
},
|
|
{
|
|
"kind": "trigger",
|
|
"on": "deathrattle"
|
|
},
|
|
{
|
|
"kind": "effect",
|
|
"effect": {
|
|
"type": "spawnText",
|
|
"word": "WIN",
|
|
"at": "self"
|
|
}
|
|
}
|
|
],
|
|
"game": "spellgrid"
|
|
},
|
|
{
|
|
"name": "Scorch",
|
|
"type": "spell",
|
|
"cost": 1,
|
|
"split": 0,
|
|
"text": [
|
|
{
|
|
"kind": "effect",
|
|
"effect": {
|
|
"type": "dealDamage",
|
|
"target": "allMinions",
|
|
"amount": 1
|
|
}
|
|
}
|
|
],
|
|
"game": "spellgrid"
|
|
}
|
|
],
|
|
"words": [
|
|
{
|
|
"name": "WOUND",
|
|
"role": "noun"
|
|
}
|
|
],
|
|
"seams": {
|
|
"triggerWords": {
|
|
"WOUND": "selfDamaged"
|
|
}
|
|
},
|
|
"level": {
|
|
"width": 6,
|
|
"height": 6,
|
|
"objects": [
|
|
{
|
|
"kind": "text:BABA",
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
{
|
|
"kind": "text:IS",
|
|
"x": 1,
|
|
"y": 0
|
|
},
|
|
{
|
|
"kind": "text:YOU",
|
|
"x": 2,
|
|
"y": 0
|
|
},
|
|
{
|
|
"kind": "text:WOUND",
|
|
"x": 0,
|
|
"y": 1
|
|
},
|
|
{
|
|
"kind": "text:IS",
|
|
"x": 1,
|
|
"y": 1
|
|
},
|
|
{
|
|
"kind": "text:DOUBLE",
|
|
"x": 2,
|
|
"y": 2
|
|
},
|
|
{
|
|
"kind": "baba",
|
|
"x": 2,
|
|
"y": 3
|
|
},
|
|
{
|
|
"kind": "text:BABA",
|
|
"x": 0,
|
|
"y": 5
|
|
},
|
|
{
|
|
"kind": "text:IS",
|
|
"x": 1,
|
|
"y": 5
|
|
}
|
|
],
|
|
"cards": [
|
|
{
|
|
"card": "Ash Totem",
|
|
"x": 4,
|
|
"y": 3
|
|
},
|
|
{
|
|
"card": "Thorn Idol",
|
|
"x": 2,
|
|
"y": 5
|
|
}
|
|
],
|
|
"hand": [
|
|
"Scorch",
|
|
"Scorch",
|
|
"Scorch"
|
|
]
|
|
},
|
|
"inputs": [
|
|
"c Scorch",
|
|
"w",
|
|
"c Scorch",
|
|
"c Scorch",
|
|
"d"
|
|
]
|
|
}
|