**Language / Langue :** **FR** | [[en:yaml:choix|EN]]
====== Choix et boutons (YAML) ======
Les choix définissent les sorties disponibles depuis une salle - navigation, conditions d'accès et boutons affichés au joueur.
===== Syntaxe minimale =====
La forme la plus simple : une destination, rien d'autre.
choix:
- vers: foret
- vers: village
La salle ''foret'' est accessible en tapant ''avancer foret''. Aucun bouton n'est affiché.
===== Ajouter un bouton =====
''bouton:'' affiche un bouton cliquable sous le texte de la salle.
choix:
- bouton: "⬆️ Aller au nord"
vers: foret
- bouton: "🏠 Retour au village"
vers: village
===== Commande textuelle =====
''commande:'' définit le mot-clé que le joueur peut taper (en plus du bouton).
choix:
- commande: nord
bouton: "⬆️ Aller au nord"
vers: foret
Le joueur peut cliquer le bouton **ou** taper ''nord'' ou ''avancer nord''. Sans ''commande:'', utilisez l'identifiant de destination, par exemple ''avancer foret''.
Avec les [[fr:yaml:texte#liste_des_choix_dans_le_texte|listes de choix dans le texte]], un choix sans alias utilise son numéro dans la liste. Un alias numérique explicite prime sur un numéro de salle ou un raccourci automatique de bouton.
Voir [[fr:yaml:alias|Alias et commandes]] pour les raccourcis globaux et les alias d'action.
===== Bouton hérité de la salle =====
Si la salle de destination possède un ''bouton:'', les choix qui pointent vers elle sans ''bouton:'' propre héritent de ce label automatiquement.
salles:
- id: laboratoire
bouton: "⚗️ Laboratoire"
texte: "..."
- id: couloir
choix:
- vers: laboratoire # affiche "⚗️ Laboratoire" sans le répéter ici
===== vers: precedent =====
''vers: precedent'' retourne à la salle d'où le joueur vient.
choix:
- commande: retour
bouton: "↩️ Retour"
vers: precedent
===== Condition d'accès (si:) =====
''texte:'' accompagne la tentative, même si ''si:'' est refusée. ''texte_ok:'' et ''texte_ko:'' donnent le résultat de cette condition.
choix:
- commande: entrer
bouton: Entrer
vers: salle_secrete
texte: "Vous poussez la porte."
si: "cle"
texte_ok: "La serrure cède."
texte_ko: "La porte reste verrouillée."
^ Situation ^ Textes affichés ^ Effet et déplacement ^
| Sans ''si:'' | ''texte'' | Oui |
| Condition remplie | ''texte'' et ''texte_ok'' | Oui |
| Condition refusée | ''texte'' et ''texte_ko'' | Non |
| ''texte_ok'' sans ''si:'' | Aucun texte OK | Oui |
| Bouton grisé | Aucun | Non |
Les textes suivent leur ordre dans le YAML. Dans l'éditeur, les boutons de déplacement des champs permettent de changer cet ordre ; un nouveau choix commence par le champ Texte.
''effet:'' s'exécute après la vérification de ''si:'', avant les textes et le déplacement. Les textes lisent donc les valeurs modifiées par l'effet, même si ''effet:'' est écrit après eux.
Cette règle concerne les choix. Une action utilise ''texte_ok:'' en cas de réussite, même sans condition. Un événement utilise ''texte:'' quand il se déclenche ; ce texte ne s'affiche pas si sa condition échoue.
===== Bouton conditionnel (visible-si / grise-si) =====
choix:
- commande: expert
bouton: "🏆 Mode expert"
vers: salle_expert
visible-si: "v_score_v > 50" # bouton masqué si score <= 50
- commande: avancer
bouton: "💀 Avancer"
vers: salle_suivante
grise-si: "v_pv_v <= 0" # bouton visible mais inactif si PV = 0
* ''visible-si:'' - le bouton n'apparaît pas si la condition est fausse
* ''grise-si:'' - le bouton reste visible mais ne peut pas être cliqué
===== Effet au clic (effet:) =====
''effet:'' exécute une action **avant** le déplacement.
choix:
- commande: acheter
bouton: "🪙 Acheter (-10 pièces)"
vers: boutique
si: "v_or_v >= 10"
effet: "or.-.10"
===== Supprimer des encadrés au clic =====
choix:
- commande: retour
bouton: "↩️ Retour"
vers: accueil
supprimer-encadre:
- all # supprime tous les HUD actifs