====== Règles (avant / après / remplacer) ====== Une **règle** est une [[reference:routines:start|routine]] déclenchée par une action — soit **avant** que l’action s’exécute (pour la conditionner ou la bloquer), soit **après** (pour ajouter une réaction), soit **à la place de** l’action pour la réécrire entièrement. Contrairement à une [[reference:routines:action:start|action personnalisée]], une règle ne crée pas de nouveau verbe : elle vient se greffer sur un verbe existant pour en modifier le comportement. ===== Les trois types ===== * [[reference:routines:regle:avant|Règle avant]] — exécutée **avant** l’action. Peut empêcher l’action via ''refuser "msg"'' ou ''refuser l’action''. * [[reference:routines:regle:apres|Règle après]] — exécutée **après** l’action. Remplace par défaut la sortie standard ; on peut la réintroduire avec ''continuer l’action avant'' ou ''continuer l’action après''. * [[reference:routines:regle:remplacer|Règle remplacer]] — **écrase intégralement** une action existante (phases, balises, etc.). ===== Syntaxe générale ===== règle avant : -- instructions fin règle règle après : -- instructions fin règle règle remplacer : -- phases qui remplacent intégralement l’action d’origine fin règle Les trois variantes se ferment par ''fin règle''. ===== Déclencheurs ===== ==== Une action ciblée sur un objet précis ==== règle avant prendre la pomme: si la pomme est pourrie: refuser "Cette pomme est pourrie.". fin si fin règle ==== Plusieurs actions combinées (« ou ») ==== La même règle réagit à plusieurs actions : règle après donner l’anneau au roi, donner l’anneau au prince ou donner l’anneau à la reine: dire "<< Grâce à vous le royaume est sauvé ! >>". fin règle ==== Une classe d’objets (générique) ==== Pour appliquer la règle à **tous** les objets d’un type, utilisez l’article indéfini : règle après parler à un chien: dire "<< Wouf ! >>". fin règle Cette règle se déclenche pour //n’importe quel chien// présent dans la partie. ==== Un déplacement (lieu ou direction) ==== Une règle sur ''aller'' peut cibler le **lieu de destination** ou la **direction** empruntée : règle après aller dans le jardin: dire "Vous voilà dans le jardin.". fin règle règle après aller vers le nord: dire "Vous progressez vers le nord.". fin règle Les deux formes se déclenchent quelle que soit la commande tapée par le joueur (''aller au nord'', ''nord'', ''n''…). Si une règle « lieu » et une règle « direction » correspondent au même déplacement, les deux se déclenchent. Voir aussi les cibles ''origine'', ''destination'' et ''orientation'' des [[reference:texte:balises_dynamiques#cibles_speciales|balises dynamiques]]. ==== Au démarrage du jeu ==== règle avant commencer le jeu: changer le joueur possède la lampe. changer la porte n’est plus verrouillée. dire "Une voix vous murmure : << Bienvenue dans le labyrinthe… >>". fin règle ===== Tester si la règle s’est déjà déclenchée ===== si la règle se déclenche pour la première fois: ... sinonsi la règle se déclenche pour la deuxième fois: ... sinon ... fin si -- Forme négative si la règle ne se déclenche pas pour la première fois: dire "Encore ?". fin si Pratique pour afficher une cinématique uniquement à la première rencontre, puis se contenter du texte standard ensuite. Voir un exemple complet sur [[reference:routines:regle:apres|Règle après]]. **À ne pas confondre avec la [[reference:routines:action:start|phase prérequis]] d’une action personnalisée.** Si vous écrivez **votre** action, mettez les conditions de blocage dans ''phase prérequis''. Si vous voulez intercepter une action **existante** (''prendre'', ''aller'', ''examiner'', …) sans la réécrire, utilisez une règle avant. ===== Voir aussi ===== * [[reference:routines:regle:avant|Règle avant — détails]] * [[reference:routines:regle:apres|Règle après — détails]] * [[reference:routines:regle:remplacer|Règle remplacer — détails]] * [[reference:routines:action:start|Actions personnalisées]] — créer un nouveau verbe (à distinguer) * [[reference:routines:start|Routines]] — vue d’ensemble (action / règle / réaction / routine simple) {{tag>règle regle règles regles avant après apres remplacer déclencheur declencheur refuser continuer commencer_le_jeu intercepter routine routines}}