Table des matières

Programmer une routine (après un délai)

Une routine simple peut être déclenchée automatiquement après un délai en temps réel (pas en tours de jeu).

Cela permet de poser une bombe à retardement, déclencher l’apparition d’un PNJ après quelques secondes, faire « bip » toutes les minutes, etc.

Syntaxe

exécuter la routine X dans N <unité>s.

Les unités acceptées sont seconde, minute et heure (au singulier ou au pluriel). Le moteur convertit la durée en millisecondes et active un chronomètre interne.

Exemple minimal : bombe qui explose après 10 secondes

wiki_temps_boom_simple
Le lieu de test est un lieu.
 
routine boom:
  dire "La bombe a explosé !".
  terminer le jeu.
fin routine
 
règle après commencer le jeu:
  dire "Attendez 10 secondes…".
  exécuter la routine boom dans 10 secondes.
fin règle

tester cet exemple

Programmer une routine avec des arguments

Si la routine attend des paramètres (routine paramétrée), passez-les à la suite du nom, avant le délai :

exécuter la routine X avec <arguments> dans N secondes.

Les arguments sont résolus au moment du déclenchement (pas à la programmation) : un compteur ou une propriété lue ainsi reflète sa valeur quand la routine se déclenche, et la surcharge est choisie comme pour un appel immédiat.

wiki_temps_routine_avec_args
Le poste de garde est un lieu.
 
routine alerter:
  définitions:
    ceci est un texte.
    cela est un nombre.
  exécution:
    dire "{N}ALERTE niveau [c cela] : [ceci] !".
fin routine
 
action armer:
  dire "Surveillance activée : alerte dans 5 secondes...".
  exécuter la routine alerter avec "intrus détecté" et 3 dans 5 secondes.
fin action
 
règle avant commencer le jeu:
  dire "Essayez : {/armer/}, puis patientez 5 secondes.".
fin règle

tester cet exemple

Annuler l’exécution programmée

wiki_temps_annuler_routine
Le lieu de test est un lieu.
La bombe est un objet vu ici.
 
routine boom:
  dire "La bombe a explosé !".
  terminer le jeu.
fin routine
 
action désamorcer ceci:
  si ceci est la bombe:
    annuler la routine boom.
    dire "Bravo ! La bombe a été désamorcée.".
    terminer le jeu.
  fin si
fin action
 
règle après commencer le jeu:
  exécuter la routine boom dans 30 secondes.
fin règle
 
règle avant commencer le jeu:
  dire "Essayez : {/désamorcer la bombe/} en moins de 30 secondes.".
fin règle

tester cet exemple

L’annulation retire la programmation de la file d’attente du moteur. Si la routine a déjà été exécutée, l’annulation est sans effet.

Pause

Le joueur peut entrer la commande pause pour suspendre temporairement la partie. Tant que la partie est en pause, les routines programmées ne se déclenchent pas ; le décompte reprend là où il en était à la sortie de la pause.

Sauvegarde et reprise

À la sauvegarde d’une partie en cours, Donjon FI enregistre :

Conséquence : si une routine a été programmée mais n’a pas encore eu le temps de se déclencher au moment de la sauvegarde, elle sera perdue à la reprise. Pour des scénarios qui exigent un comptage déterministe, préférez :

Exemple plus consistant : bombe à retardement

Un mini-jeu d’illustration : bombe à retardement — 60 secondes pour désamorcer la bombe, ou taper pause pour suspendre le décompte.

Voir aussi