Ajoute les extensions et Harmonies : Crescendo
Validation du contenu / validate (push) Successful in 43s
Validation du contenu / validate (push) Successful in 43s
- Format expansions/<bggId>-<nom>/ (expansion.json, rules.fr.json), schémas expansion et expansion-rules, guide de contribution - Harmonies : choix de la face des plateaux personnels (A/B), module Esprits de la nature renommé - Crescendo (472690) : modules Sanctuaires et Murmures, faces C et D, fiche de règles résumée Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,6 +47,58 @@ relue avant publication. Le CI vérifie automatiquement les fichiers.
|
|||||||
ligne autorisés. **Rédigez avec vos propres mots** : pas de copier-coller
|
ligne autorisés. **Rédigez avec vos propres mots** : pas de copier-coller
|
||||||
du livret de l'éditeur.
|
du livret de l'éditeur.
|
||||||
|
|
||||||
|
## Ajouter une extension
|
||||||
|
|
||||||
|
Une **variante incluse dans la boîte** du jeu (mode alternatif, règle
|
||||||
|
optionnelle) est une **option** dans `scoring.json`. Un **produit vendu à
|
||||||
|
part, avec sa propre fiche BoardGameGeek**, est une **extension** :
|
||||||
|
|
||||||
|
```
|
||||||
|
games/414317-harmonies/
|
||||||
|
expansions/
|
||||||
|
472690-crescendo/ # <bggId de l'extension>-<nom>
|
||||||
|
expansion.json # obligatoire
|
||||||
|
rules.fr.json # facultatif : seulement ce qui change
|
||||||
|
```
|
||||||
|
|
||||||
|
`expansion.json` décrit uniquement ce que l'extension **ajoute** au modèle du
|
||||||
|
jeu de base :
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"$schema": "../../../../schemas/expansion.schema.json",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"bggId": 472690,
|
||||||
|
"name": "Crescendo",
|
||||||
|
"adds": {
|
||||||
|
"options": [
|
||||||
|
{ "type": "boolean", "id": "murmures", "label": "Module Murmures", "default": true }
|
||||||
|
],
|
||||||
|
"choices": [
|
||||||
|
{ "optionId": "plateau", "values": [{ "value": "C", "label": "Face C" }] }
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
{ "id": "murmures", "label": "Murmures", "requiresOption": "murmures", "after": "animaux" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `options` : chaque **module** de l'extension devient une option, que les
|
||||||
|
joueurs cochent au lancement de la partie.
|
||||||
|
- `choices` : nouvelles valeurs pour un choix existant du jeu de base.
|
||||||
|
- `categories` : nouvelles catégories de score, placées après `after` (sinon
|
||||||
|
à la fin) ; `requiresOption` les lie au module correspondant.
|
||||||
|
- `players` / `end` : remplacent le nombre de joueurs ou la fin de partie.
|
||||||
|
|
||||||
|
Le CI vérifie que l'extension s'applique au jeu de base, et que toutes les
|
||||||
|
extensions d'un jeu peuvent être jouées ensemble (pas deux fois le même
|
||||||
|
identifiant, pas deux extensions qui changent la même règle).
|
||||||
|
|
||||||
|
La fiche de règles d'une extension (`rules.fr.json`, schéma
|
||||||
|
`expansion-rules.schema.json`) n'exige que `summary` : décrivez ce qui change
|
||||||
|
(mise en place, déroulement, décompte), pas tout le jeu.
|
||||||
|
|
||||||
## Vérifier avant d'envoyer
|
## Vérifier avant d'envoyer
|
||||||
|
|
||||||
Avec un éditeur qui comprend les schémas JSON (VS Code…), la clé `$schema`
|
Avec un éditeur qui comprend les schémas JSON (VS Code…), la clé `$schema`
|
||||||
|
|||||||
@@ -17,6 +17,10 @@ games/
|
|||||||
scoring.json # modèle de score (comment compter les points)
|
scoring.json # modèle de score (comment compter les points)
|
||||||
rules.fr.json # fiche de règles en français
|
rules.fr.json # fiche de règles en français
|
||||||
README.md # notes libres (facultatif)
|
README.md # notes libres (facultatif)
|
||||||
|
expansions/ # extensions vendues à part (une par dossier)
|
||||||
|
<bggId>-<nom>/
|
||||||
|
expansion.json # ce que l'extension ajoute au jeu de base
|
||||||
|
rules.fr.json # ce qui change dans les règles
|
||||||
schemas/ # schémas JSON (autocomplétion dans l'éditeur)
|
schemas/ # schémas JSON (autocomplétion dans l'éditeur)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../../../../schemas/expansion.schema.json",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"bggId": 472690,
|
||||||
|
"name": "Crescendo",
|
||||||
|
"adds": {
|
||||||
|
"options": [
|
||||||
|
{ "type": "boolean", "id": "sanctuaires", "label": "Module Sanctuaires", "default": true },
|
||||||
|
{ "type": "boolean", "id": "murmures", "label": "Module Murmures", "default": true }
|
||||||
|
],
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"optionId": "plateau",
|
||||||
|
"values": [
|
||||||
|
{ "value": "C", "label": "Face C (Crescendo)" },
|
||||||
|
{ "value": "D", "label": "Face D (Crescendo)" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"id": "sanctuaires",
|
||||||
|
"label": "Sanctuaires",
|
||||||
|
"icon": "Castle",
|
||||||
|
"color": "#0e7490",
|
||||||
|
"requiresOption": "sanctuaires",
|
||||||
|
"after": "animaux"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "murmures",
|
||||||
|
"label": "Murmures",
|
||||||
|
"icon": "Gem",
|
||||||
|
"color": "#a855f7",
|
||||||
|
"requiresOption": "murmures"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../../../../schemas/expansion-rules.schema.json",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"locale": "fr",
|
||||||
|
"summary": "Trois modules indépendants, à combiner entre eux et avec les modules du jeu de base : les Sanctuaires, de nouveaux plateaux personnels (faces C et D) et les Murmures.",
|
||||||
|
"setup": "Choisissez ensemble les modules utilisés avant de commencer.\nSanctuaires : mélangez les tuiles en pioche, face « en cours » visible, et révélez-en 2 à côté (3 tuiles visibles avec celle de la pioche).\nNouveaux plateaux : tous les joueurs jouent la même face, C ou D, avec la carte d'aide correspondante.\nMurmures : ajoutez les cartes Murmure au paquet Animaux avant de le mélanger, et gardez les cubes violets à portée de main.",
|
||||||
|
"turn": "Sanctuaires : en plus de vos actions, vous pouvez prendre une tuile Sanctuaire visible. Elle compte comme une carte (4 au maximum au-dessus du plateau) et autorise une pile de jetons normalement interdite, selon le motif indiqué. Une fois le motif terminé, retournez la tuile : le dernier cube d'une carte Animal de l'une de ses deux couleurs peut alors être posé sur ce Sanctuaire.\nFace C : la case centrale n'existe pas.\nFace D : certaines cases sont sèches au départ ; une case sèche devient ordinaire dès qu'elle touche de l'eau.\nMurmures : une carte Murmure se prend à la place d'une carte Animal. On pose ses 2 cubes violets sur le motif réalisé ; un cube Murmure peut partager une case avec un cube Animal ou Esprit.",
|
||||||
|
"scoring": "Sanctuaires : chaque Sanctuaire terminé rapporte 3 points par case voisine dont le jeton du dessus est de l'une de ses deux couleurs. Un Sanctuaire ne compte pour aucun paysage (rivière, montagne, champ).\nFace C : un Bâtiment rapporte 8 points s'il est entouré d'au moins 4 couleurs différentes, sinon rien.\nFace D : Arbres et Champs rapportent davantage sur les cases ordinaires, et rien sur une case restée sèche à la fin. Un Champ d'au moins 2 jetons jaunes rapporte 6 points si l'un d'eux est sur une case ordinaire.\nMurmures : 2 points par case avec un cube Murmure seul, 5 points si la case contient aussi un cube Animal ou Esprit.",
|
||||||
|
"tips": "Pour découvrir l'extension progressivement : Sanctuaires seuls (face A), puis Murmures (face D), puis les deux (face C), et enfin tout avec les Esprits de la nature (face B)."
|
||||||
|
}
|
||||||
@@ -21,8 +21,24 @@
|
|||||||
{
|
{
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"id": "esprits_nature",
|
"id": "esprits_nature",
|
||||||
"label": "Extension : Esprits de la nature",
|
"label": "Module Esprits de la nature",
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "select",
|
||||||
|
"id": "plateau",
|
||||||
|
"label": "Face des plateaux personnels",
|
||||||
|
"default": "A",
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"value": "A",
|
||||||
|
"label": "Face A"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "B",
|
||||||
|
"label": "Face B"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"categories": [
|
"categories": [
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"$schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schemaVersion": {
|
||||||
|
"type": "number",
|
||||||
|
"const": 1
|
||||||
|
},
|
||||||
|
"locale": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"fr"
|
||||||
|
],
|
||||||
|
"default": "fr"
|
||||||
|
},
|
||||||
|
"summary": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 300,
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"goal": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 1000
|
||||||
|
},
|
||||||
|
"setup": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 3000
|
||||||
|
},
|
||||||
|
"turn": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 5000
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 2000
|
||||||
|
},
|
||||||
|
"scoring": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 3000
|
||||||
|
},
|
||||||
|
"tips": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 2000
|
||||||
|
},
|
||||||
|
"officialRulesUrl": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri",
|
||||||
|
"pattern": "^https\\:\\/\\/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"schemaVersion",
|
||||||
|
"summary"
|
||||||
|
],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "Fiche de règles d'une extension (rules.fr.json)"
|
||||||
|
}
|
||||||
@@ -0,0 +1,412 @@
|
|||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"$schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schemaVersion": {
|
||||||
|
"type": "number",
|
||||||
|
"const": 1
|
||||||
|
},
|
||||||
|
"bggId": {
|
||||||
|
"type": "integer",
|
||||||
|
"exclusiveMinimum": 0
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60
|
||||||
|
},
|
||||||
|
"officialRulesUrl": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri",
|
||||||
|
"pattern": "^https\\:\\/\\/"
|
||||||
|
},
|
||||||
|
"adds": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"options": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "boolean"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 80
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"visibleWhen": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"optionId": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"equals": {
|
||||||
|
"type": [
|
||||||
|
"boolean",
|
||||||
|
"number",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"optionId",
|
||||||
|
"equals"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"id",
|
||||||
|
"label",
|
||||||
|
"default"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "number"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 80
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"min": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"max": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"visibleWhen": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"optionId": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"equals": {
|
||||||
|
"type": [
|
||||||
|
"boolean",
|
||||||
|
"number",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"optionId",
|
||||||
|
"equals"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"id",
|
||||||
|
"label",
|
||||||
|
"default"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "select"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 80
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"value": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 80
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"value",
|
||||||
|
"label"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"minItems": 1
|
||||||
|
},
|
||||||
|
"visibleWhen": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"optionId": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"equals": {
|
||||||
|
"type": [
|
||||||
|
"boolean",
|
||||||
|
"number",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"optionId",
|
||||||
|
"equals"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"id",
|
||||||
|
"label",
|
||||||
|
"default",
|
||||||
|
"choices"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": []
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"optionId": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"value": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 80
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"value",
|
||||||
|
"label"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"minItems": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"optionId",
|
||||||
|
"values"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"default": []
|
||||||
|
},
|
||||||
|
"categories": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 80
|
||||||
|
},
|
||||||
|
"icon": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 40
|
||||||
|
},
|
||||||
|
"color": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^#[0-9a-fA-F]{6}$"
|
||||||
|
},
|
||||||
|
"requiresOption": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"label"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"default": []
|
||||||
|
},
|
||||||
|
"players": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"min": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 30
|
||||||
|
},
|
||||||
|
"max": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"min",
|
||||||
|
"max"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"target": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "fixed"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"value"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "option"
|
||||||
|
},
|
||||||
|
"optionId": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
},
|
||||||
|
"customValue": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"customOptionId": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 60,
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"optionId"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"targetCondition": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"reaches",
|
||||||
|
"exceeds"
|
||||||
|
],
|
||||||
|
"default": "reaches"
|
||||||
|
},
|
||||||
|
"rounds": {
|
||||||
|
"type": "integer",
|
||||||
|
"exclusiveMinimum": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false,
|
||||||
|
"default": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"schemaVersion",
|
||||||
|
"bggId",
|
||||||
|
"name"
|
||||||
|
],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "Extension Skori (expansion.json)"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user