Chessistics/Data/campaigns/campaign_01.json
Samuel Bouchet 2d1aea0a7a Snapshot campaign system progress before automation harness
Bundles in-flight work on the campaign/missions system (CampaignDef,
MissionDef, TerrainPatch, TransformerDef, MissionChecker, CampaignLoader,
FlavorBanner, transformer rules), plan files, and matching tests. Baseline
commit so the upcoming automation testing harness lands on a clean tree.
2026-04-16 21:22:49 +02:00

227 lines
9.8 KiB
JSON

{
"name": "La Quête du Roi",
"initialWidth": 4,
"initialHeight": 4,
"missions": [
{
"id": 1,
"name": "Premier Convoi",
"description": "Les pions découvrent une scierie. Acheminez le bois au dépôt.",
"flavor": "« Allez les gars, on porte ce bois ! Premier jour, on y croit ! » — Pion enthousiaste",
"terrainPatch": {
"newWidth": 4,
"newHeight": 4,
"cells": [
{ "col": 0, "row": 0, "type": "production", "production": { "name": "Scierie", "cargo": "wood", "amount": 4 } },
{ "col": 3, "row": 0, "type": "demand", "demand": { "name": "Dépôt Royal", "cargo": "wood", "amount": 3 } }
]
},
"unlockedPieces": ["pawn"],
"unlockedLevels": [{ "kind": "pawn", "level": 1 }],
"stock": [
{ "kind": "pawn", "count": 4 }
]
},
{
"id": 2,
"name": "Forger les Tours",
"description": "Les pions forgent des Tours. Le territoire s'étend et une carrière apparaît.",
"flavor": "« Des Tours ! Enfin des collègues qui bossent en ligne droite. » — Pion impressionné",
"terrainPatch": {
"newWidth": 6,
"newHeight": 6,
"cells": [
{ "col": 4, "row": 0, "type": "empty" },
{ "col": 4, "row": 1, "type": "empty" },
{ "col": 4, "row": 2, "type": "empty" },
{ "col": 4, "row": 3, "type": "empty" },
{ "col": 4, "row": 4, "type": "empty" },
{ "col": 4, "row": 5, "type": "empty" },
{ "col": 5, "row": 0, "type": "demand", "demand": { "name": "Caserne", "cargo": "wood", "amount": 4 } },
{ "col": 5, "row": 1, "type": "empty" },
{ "col": 5, "row": 2, "type": "empty" },
{ "col": 5, "row": 3, "type": "empty" },
{ "col": 5, "row": 4, "type": "empty" },
{ "col": 5, "row": 5, "type": "production", "production": { "name": "Carrière", "cargo": "stone", "amount": 4 } },
{ "col": 0, "row": 4, "type": "empty" },
{ "col": 0, "row": 5, "type": "demand", "demand": { "name": "Entrepôt de Pierre", "cargo": "stone", "amount": 4 } },
{ "col": 1, "row": 4, "type": "empty" },
{ "col": 1, "row": 5, "type": "empty" },
{ "col": 2, "row": 4, "type": "empty" },
{ "col": 2, "row": 5, "type": "empty" },
{ "col": 3, "row": 4, "type": "empty" },
{ "col": 3, "row": 5, "type": "empty" }
]
},
"unlockedPieces": ["rook"],
"unlockedLevels": [{ "kind": "rook", "level": 1 }],
"stock": [
{ "kind": "pawn", "count": 2 },
{ "kind": "rook", "count": 4 }
]
},
{
"id": 3,
"name": "Le Col",
"description": "Un mur bloque le passage. Les Cavaliers sautent par-dessus les obstacles.",
"flavor": "« Moi, les murs, je les enjambe. C'est ça, la classe. » — Cavalier fanfaron",
"terrainPatch": {
"newWidth": 8,
"newHeight": 6,
"cells": [
{ "col": 6, "row": 0, "type": "wall" },
{ "col": 6, "row": 1, "type": "wall" },
{ "col": 6, "row": 2, "type": "wall" },
{ "col": 6, "row": 3, "type": "empty" },
{ "col": 6, "row": 4, "type": "empty" },
{ "col": 6, "row": 5, "type": "empty" },
{ "col": 7, "row": 0, "type": "demand", "demand": { "name": "Avant-Poste du Col", "cargo": "wood", "amount": 4 } },
{ "col": 7, "row": 1, "type": "empty" },
{ "col": 7, "row": 2, "type": "empty" },
{ "col": 7, "row": 3, "type": "empty" },
{ "col": 7, "row": 4, "type": "empty" },
{ "col": 7, "row": 5, "type": "empty" }
]
},
"unlockedPieces": ["knight"],
"unlockedLevels": [{ "kind": "knight", "level": 1 }],
"stock": [
{ "kind": "rook", "count": 2 },
{ "kind": "knight", "count": 2 }
]
},
{
"id": 4,
"name": "Le Carrefour",
"description": "Le territoire s'agrandit. Un carrefour central rend les routes plus complexes.",
"flavor": "« Diagonales, mes amies ! En avant toute ! » — Fou enthousiaste",
"terrainPatch": {
"newWidth": 8,
"newHeight": 8,
"cells": [
{ "col": 0, "row": 6, "type": "empty" },
{ "col": 0, "row": 7, "type": "demand", "demand": { "name": "Fort du Sud", "cargo": "stone", "amount": 3 } },
{ "col": 1, "row": 6, "type": "empty" },
{ "col": 1, "row": 7, "type": "empty" },
{ "col": 2, "row": 6, "type": "empty" },
{ "col": 2, "row": 7, "type": "empty" },
{ "col": 3, "row": 6, "type": "wall" },
{ "col": 3, "row": 7, "type": "empty" },
{ "col": 4, "row": 6, "type": "wall" },
{ "col": 4, "row": 7, "type": "empty" },
{ "col": 5, "row": 6, "type": "empty" },
{ "col": 5, "row": 7, "type": "empty" },
{ "col": 6, "row": 6, "type": "empty" },
{ "col": 6, "row": 7, "type": "empty" },
{ "col": 7, "row": 6, "type": "production", "production": { "name": "Carrière Est", "cargo": "stone", "amount": 4 } },
{ "col": 7, "row": 7, "type": "empty" },
{ "col": 5, "row": 7, "type": "demand", "demand": { "name": "Château", "cargo": "wood", "amount": 2 } }
]
},
"unlockedPieces": ["bishop"],
"unlockedLevels": [{ "kind": "bishop", "level": 1 }],
"stock": [
{ "kind": "pawn", "count": 4 },
{ "kind": "rook", "count": 2 },
{ "kind": "bishop", "count": 2 },
{ "kind": "knight", "count": 1 }
]
},
{
"id": 5,
"name": "La Forge",
"description": "La Forge transforme le bois en outils. La Dame entre en jeu pour les longues distances.",
"flavor": "« Du bois qui rentre, des outils qui sortent. La magie de l'industrie ! » — Tour pragmatique",
"terrainPatch": {
"newWidth": 8,
"newHeight": 8,
"cells": [
{ "col": 6, "row": 3, "type": "transformer", "transformer": { "name": "Forge", "inputCargo": "wood", "inputRequired": 2, "outputCargo": "tools", "outputAmount": 1 } },
{ "col": 7, "row": 5, "type": "demand", "demand": { "name": "Atelier", "cargo": "tools", "amount": 3 } }
]
},
"unlockedPieces": ["queen"],
"unlockedLevels": [{ "kind": "queen", "level": 1 }],
"stock": [
{ "kind": "rook", "count": 4 },
{ "kind": "queen", "count": 1 }
]
},
{
"id": 6,
"name": "L'Armurerie",
"description": "Le territoire s'étend. L'Armurerie transforme la pierre en armes pour la Garnison.",
"flavor": "« De la pierre brute aux lames acérées… on ne rigole plus ! » — Cavalier guerrier",
"terrainPatch": {
"newWidth": 10,
"newHeight": 10,
"cells": [
{ "col": 8, "row": 0, "type": "empty" },
{ "col": 8, "row": 1, "type": "transformer", "transformer": { "name": "Armurerie", "inputCargo": "stone", "inputRequired": 2, "outputCargo": "arms", "outputAmount": 1 } },
{ "col": 8, "row": 2, "type": "empty" },
{ "col": 8, "row": 3, "type": "wall" },
{ "col": 8, "row": 4, "type": "empty" },
{ "col": 8, "row": 5, "type": "empty" },
{ "col": 8, "row": 6, "type": "empty" },
{ "col": 8, "row": 7, "type": "empty" },
{ "col": 8, "row": 8, "type": "empty" },
{ "col": 8, "row": 9, "type": "empty" },
{ "col": 9, "row": 0, "type": "empty" },
{ "col": 9, "row": 1, "type": "empty" },
{ "col": 9, "row": 2, "type": "demand", "demand": { "name": "Garnison", "cargo": "arms", "amount": 3 } },
{ "col": 9, "row": 3, "type": "wall" },
{ "col": 9, "row": 4, "type": "empty" },
{ "col": 9, "row": 5, "type": "empty" },
{ "col": 9, "row": 6, "type": "empty" },
{ "col": 9, "row": 7, "type": "empty" },
{ "col": 9, "row": 8, "type": "empty" },
{ "col": 9, "row": 9, "type": "empty" },
{ "col": 0, "row": 8, "type": "empty" },
{ "col": 0, "row": 9, "type": "empty" },
{ "col": 1, "row": 8, "type": "empty" },
{ "col": 1, "row": 9, "type": "empty" },
{ "col": 2, "row": 8, "type": "empty" },
{ "col": 2, "row": 9, "type": "empty" },
{ "col": 3, "row": 8, "type": "empty" },
{ "col": 3, "row": 9, "type": "empty" },
{ "col": 4, "row": 8, "type": "wall" },
{ "col": 4, "row": 9, "type": "empty" },
{ "col": 5, "row": 8, "type": "wall" },
{ "col": 5, "row": 9, "type": "empty" },
{ "col": 6, "row": 8, "type": "empty" },
{ "col": 6, "row": 9, "type": "empty" },
{ "col": 7, "row": 8, "type": "empty" },
{ "col": 7, "row": 9, "type": "empty" }
]
},
"unlockedPieces": [],
"unlockedLevels": [],
"stock": [
{ "kind": "rook", "count": 4 },
{ "kind": "knight", "count": 2 },
{ "kind": "pawn", "count": 4 }
]
},
{
"id": 7,
"name": "Le Couronnement",
"description": "Le Comptoir transforme les outils en or. Livrez l'or au Trésor Royal pour couronner le Roi.",
"flavor": "« De l'or ! Le Roi sera content. Enfin… s'il reste du budget pour nous payer. » — Dame sceptique",
"terrainPatch": {
"newWidth": 10,
"newHeight": 10,
"cells": [
{ "col": 4, "row": 9, "type": "transformer", "transformer": { "name": "Comptoir", "inputCargo": "tools", "inputRequired": 2, "outputCargo": "gold", "outputAmount": 1 } },
{ "col": 9, "row": 9, "type": "demand", "demand": { "name": "Trésor Royal", "cargo": "gold", "amount": 2 } }
]
},
"unlockedPieces": [],
"unlockedLevels": [],
"stock": [
{ "kind": "queen", "count": 1 },
{ "kind": "rook", "count": 4 },
{ "kind": "bishop", "count": 2 }
]
}
]
}