**Language / Langue :** **FR** | [[en:yaml:syntaxe-base|EN]]
====== Syntaxe YAML — Base ======
Le format YAML est le format moderne de JDR-Bot. Il est plus lisible, plus puissant et plus flexible que l'ancien format .txt.
===== Structure d'un fichier .yaml =====
titre: "Mon scénario"
description: "Une aventure courte pour découvrir JDR-Bot."
markdown: story
police: serif
vars:
pv:
valeur: 10
description: "Points de vie"
salles:
- id: debut
texte: |
Vous vous réveillez dans une forêt sombre.
Une lueur brille au loin.
choix:
- commande: avancer
bouton: "Avancer vers la lueur"
vers: clairiere
- commande: rester
bouton: "Rester sur place"
vers: fin_attente
- id: clairiere
texte: "Vous débouchez dans une clairière baignée de lumière."
evenements:
- si: ~
fin: victoire
texte: "Vous avez trouvé la sortie !"
- id: fin_attente
texte: "La nuit tombe. Vous n'avez pas bougé."
evenements:
- si: ~
fin: defaite
texte: "Perdu dans la nuit..."
===== Clés racines =====
^ Clé ^ Description ^ Obligatoire ^
| ''titre:'' | Titre du scénario. | oui |
| ''description:'' | Description affichée dans le catalogue et l'export standalone. | non |
| ''markdown:'' | Rendu global du texte : ''none'', ''fix'', ''bold'', ''italic'', ''quote'', ''story'' ou langage de bloc code. | non |
| ''taille:'' | Taille de texte par défaut, en pixels. | non |
| ''police:'' | Police par défaut : ''serif'', ''monospace'', ''cursive'', ''Georgia'', etc. | non |
| ''fond:'' | Fond par défaut des blocs de texte web/desktop. | non |
| ''couleur-texte:'' | Couleur de texte par défaut web/desktop. | non |
| ''vars:'' | Variables numériques globales. | non |
| ''vars_texte:'' | Variables textuelles globales. | non |
| ''vars_online:'' | Variables persistées entre parties. | non |
| ''options:'' | Boutons permanents de toolbar. | non |
| ''alias_globaux:'' | Labels de boutons réutilisables. | non |
| ''tags:'' | Groupes de comportements réutilisables. | non |
| ''modeles:'' | Salles modèles réutilisables. | non |
| ''evenements_globaux:'' | Événements disponibles dans toutes les salles. | non |
| ''actions_globales:'' | Actions personnalisées disponibles partout. | non |
| ''timers_globaux:'' | Timers autonomes persistants entre salles. | non |
| ''997_globaux:'' | Ordre d'exécution des événements globaux : ''avant'' ou ''apres''. | non |
| ''salles:'' | Liste des salles du scénario. | oui |
===== Structure d'une salle =====
- id: nom_salle # identifiant unique
num: 3 # optionnel : numéro explicite, croissant dans le YAML
bouton: "Accueil" # label hérité par les choix vers cette salle
texte: "..." # texte affiché au joueur
fond: "#111827" # fond local optionnel
couleur-texte: "#f5f0d8"
init:
- var: de
valeur: "%=1:6"
objets:
- nom: cle
endroit: table
description: "Une vieille clé rouillée."
msg_ramassage: "Vous prenez la clé."
evenements:
- si: "v_pv_v <= 0"
vers: game_over
texte: "Vous tombez au sol."
choix:
- commande: aller
bouton: "Aller là-bas"
vers: destination
si: ~
actions:
- verbe: examiner
cible: coffre
si: ~
texte_ok: "Un vieux coffre fermé."
encadre:
position: haut
texte: "PV : v_pv_v"
===== Numéros de salles =====
Par défaut, les salles sont numérotées dans l'ordre du YAML. ''num:'' permet de fixer un numéro historique, mais les numéros doivent rester strictement croissants dans le document. Dans l'éditeur, réordonner les salles dans la liste modifie justement cet ordre d'export.
===== Fins de partie =====
evenements:
- si: ~
fin: victoire
texte: "Fin gagnante."
- si: ~
fin: defaite
texte: "Fin perdante."
===== Règles importantes =====
* Les IDs de salles doivent être uniques.
* Les variables utilisées en conditions doivent être déclarées dans ''vars:'', ''vars_texte:'', ''vars_online:'' ou ''init:''.
* ''~'' signifie toujours vrai.
* Les événements sont évalués dans l'ordre ; le premier qui redirige avec ''vers:'' stoppe les suivants.
* Les objets en condition s'écrivent ''cle'' ou ''-cle'', pas ''o_cle_o''.
===== Voir aussi =====
* [[fr:yaml:texte|Texte et formatage]]
* [[fr:yaml:variables|Variables]]
* [[fr:yaml:evenements|Événements]]
* [[fr:yaml:choix|Choix et boutons]]
* [[fr:yaml:objets|Objets]]