Doc Donjon FI (v3)

Éditeur de fictions interactives avec interpréteur

Outils pour utilisateurs

Outils du site


reference:routines:regle:avant

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
reference:routines:regle:avant [2026/04/21 21:38] jonathanreference:routines:regle:avant [2026/06/16 21:50] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Règle « avant » ====== ====== Règle « avant » ======
  
-Cette règle vous permet dexécuter des instructions //avant// qu’une [[reference:routines:action:start|action]] ait lieu.\\ +Une **règle avant** sexécute juste avant qu’une action ne se dérouleElle sert principalement à :
-Par défaut, l’action se déroulera normalement après l’exécution de votre règle //avant//.+
  
-La règle avant est utilisée pour : +  - **Conditionner** l’action (la laisser passer si tout va bien, la bloquer sinon). 
-  * Modifier l’état du jeu avant l’exécution d’une action. +  - **Modifier le décor** juste avant l’action (déplacer un objet, changer un état, afficher un texte cinématique)
-  * Empêcher l’exécution d’une action.+  **Réagir au démarrage** du jeu (''règle avant commencer le jeu'').
  
-===== Exemples =====+Voir [[reference:routines:regle:start|Règles (avant / après)]] pour les concepts généraux et la syntaxe des déclencheurs. 
 + 
 +===== Bloquer une action ===== 
 + 
 +==== refuser "message" ==== 
 + 
 +Affiche le message et **arrête** l’action :
  
 <code donjon> <code donjon>
 +règle avant prendre la statue:
 +  refuser "La statue est boulonnée au sol.".
 +fin règle
 +
 +règle avant prendre la pomme:
 +  si la pomme est pourrie:
 +    refuser "Cette pomme est pourrie.".
 +  fin si
 +fin règle
 +</code>
 +
 +==== refuser l’action (sans message) ====
 +
 +Pratique quand vous voulez d’abord afficher un texte contextuel avec ''dire'' :
 +
 +<code donjon>
 +règle avant prendre le vase Ming:
 +  dire "Le gardien lève les yeux et vous regarde fixement.".
 +  refuser l’action.
 +fin règle
 +
 +règle avant aller vers la sortie:
 +  si le badge de visiteur n’est pas possédé:
 +    dire "L’agent de sécurité vous barre le passage.".
 +    refuser l’action.
 +  fin si
 +fin règle
 +</code>
 +
 +<file donjon wiki_regles_refuser_prendre>
 +Le musée est un lieu.
 +
 +La statue est un objet ici.
 +Le souvenir est un objet ici.
 +
 +règle avant prendre la statue:
 +  refuser "La statue est boulonnée au sol.".
 +fin règle
 +
 +règle avant prendre le souvenir:
 +  dire "Le gardien lève les yeux et vous regarde fixement.".
 +  refuser l'action.
 +fin règle
 +
 règle avant commencer le jeu: règle avant commencer le jeu:
-  dire "Bienvenue dans << Le château de la terreur >>"+  dire "Essayez : {/prendre la statue/} et {/prendre le souvenir/}."
-  le joueur possède le marteau enchanté.+fin règle 
 +</file> 
 + 
 +[[djnc>wiki_regles_refuser_prendre|tester cet exemple]] 
 + 
 +==== arrêter l’action ==== 
 + 
 +Forme équivalente à ''refuser l’action'' utilisée historiquement dans plusieurs scénariosLes deux instructions stoppent l’action courante sans afficher de message supplémentaire : 
 + 
 +<code donjon> 
 +règle avant ouvrir la porte d’entrée ou ouvrir la porte du garage: 
 +  si le joueur ne porte pas la veste ou le pantalon ou le bonnet ou les bottes: 
 +    dire "Vous n’êtes pas suffisamment équipé pour le froid[si le joueur ne porte pas le pantalon] et de toute manière vous ne pouvez pas sortir dans cette tenue[fin si].". 
 +    arrêter l’action. 
 +  fin si
 fin règle fin règle
 </code> </code>
 +
 +===== Laisser passer l’action =====
 +
 +Si la règle avant ne refuse rien, l’action standard se déroule normalement. Si vous avez du code conditionnel et qu’une branche doit explicitement laisser passer, utilisez ''continuer l’action'' :
  
 <code donjon> <code donjon>
-règle avant ouvrir porte d'entrée ou ouvrir la porte du garage+règle avant prendre la pomme
-  si le joueur ne porte pas la veste ou le pantalon ou le bonnet ou les bottes +  si la pomme est pourrie
-    refuser "Vous n'êtes pas suffisamment équipé pour le froid[si le joueur ne porte pas le pantalon] et de toute manière vous ne pouvez pas sortir dans cette tenue[fin si].". +    refuser "Cette pomme est pourrie."
-  fin si.+  sinon 
 +    continuer l’action
 +  fin si 
 +fin règle
 </code> </code>
 +
 +===== Initialiser la partie =====
 +
 +Le déclencheur spécial ''commencer le jeu'' permet d’exécuter des instructions au tout début, avant que le joueur ne saisisse sa première commande :
  
 <code donjon> <code donjon>
-règle avant ouvrir porte d'entrée ou ouvrir la porte du garage+règle avant commencer le jeu
-  si le joueur ne porte pas la veste ou le pantalon ou le bonnet ou les bottes : +  changer le joueur possède la lampe. 
-    dire "Vous n'êtes pas suffisamment équipé pour le froid[si le joueur ne porte pas le pantalon] et de toute manière vous ne pouvez pas sortir dans cette tenue[fin si].". +  changer la porte n’est plus verrouillée. 
-    arrêter l'action. +  dire "Une voix vous murmure : << Bienvenue dans le labyrinthe… >>". 
-  fin si.+fin règle
 </code> </code>
 +
 +C’est l’endroit idéal pour :
 +
 +  * Initialiser l’inventaire du joueur
 +  * Modifier des états initiaux selon une condition
 +  * Afficher un texte d’introduction
 +  * Démarrer une musique (''jouer le son …'')
 +
 +<file donjon wiki_regles_init_partie>
 +Le labyrinthe est un lieu.
 +La lampe est un objet.
 +La porte de sortie est une porte verrouillée ici.
 +
 +règle avant commencer le jeu:
 +  changer le joueur possède la lampe.
 +  changer la porte de sortie n'est plus verrouillée.
 +  dire "Une voix murmure : « Bienvenue dans le labyrinthe… ». Vous tenez une lampe et la porte est désormais ouverte.".
 +fin règle
 +</file>
 +
 +[[djnc>wiki_regles_init_partie|tester cet exemple]]
 +
 +===== Tester la fois où la règle se déclenche =====
  
 <code donjon> <code donjon>
-avant manger un fruit:+règle avant manger un fruit:
   si la règle se déclenche pour la première fois:   si la règle se déclenche pour la première fois:
     dire "J’ai toujours voulu essayer de manger un fruit !".     dire "J’ai toujours voulu essayer de manger un fruit !".
-  fin si.+  fin si 
 +fin règle
 </code> </code>
  
-===== Empêcher l’exécution de l’action =====+===== Exemple complet ===== 
 + 
 +Voir le mini-scénario [[reference:routines:regle:apres#exemple_complet|Le journal intime]] qui combine règle avant (refuser de prendre le journal) et règle après (cinématique sur la 1ère lecture). 
 + 
 +===== Voir aussi ===== 
 + 
 +  * [[reference:routines:regle:start|Règles (avant / après) — index]] 
 +  * [[reference:routines:regle:apres|Règle après]] 
 +  * [[reference:instructions:arreter_action|Instruction « arrêter l’action »]] 
 +  * [[reference:routines:action:start|Actions personnalisées]] — pour créer un nouveau verbe (différent d’intercepter) 
 + 
 +{{tag>règle regle règle_avant regle_avant avant refuser arrêter arreter refuser_l_action bloquer commencer_le_jeu initialiser déclencheur declencheur continuer routine routines}}
  
-Voir [[reference:instructions:arreter_action|]]. 
reference/routines/regle/avant.1776800288.txt.gz · Dernière modification : de jonathan