Doc Donjon FI (v3)

Éditeur de fictions interactives avec interpréteur

Outils pour utilisateurs

Outils du site


reference:routines:action:start

Action (personnalisée)

Une action est une routine qui s’exécute lorsque le joueur entre une commande durant une partie.

💡 Si vous souhaitez consulter les actions de base, voir cette page.

Exemple d’action simple

Cette action va s’exécuter lorsque le joueur entrera la commande sauter.
Le texte « Vous sautez sur place. » sera alors ajouté à la sortie du jeu.

action sauter:
  dire "Vous sautez sur place.".
fin action

Exemple d’action complète

💡 ceci correspond à l’objet avec lequel le joueur interagit.

action pousser ceci:
 
  phase prérequis:
    si ceci n’est pas accessible, refuser "Je n’y ai pas accès.".
    si ceci est le joueur, refuser "Je suis dans le chemin ?".
 
  phase exécution:
    changer ceci est déplacé.
 
  phase épilogue:
    dire "Je [l’ ceci]ai poussé[es ceci] mais ça n’a servi à rien.".
 
fin action

Les phases d’une action

Ainsi que vous pouvez le voir dans l’exemple ci-dessus, une action se compose de 3 phases : prérequis, exécution et épilogue. Elles s’exécutent dans cet ordre. Si la phase prérequis refuse l’action, les phases suivantes (exécution et épilogue) ne sont pas exécutées.

Phase prérequis

Cette phase permet de refuser l’exécution de l’action si les critères d’acceptation ne sont pas remplis. Par exemple on ne peut pas prendre un objet qui n’est pas accessible.

Phase exécution

Cette phase permet de modifier l’état du jeu en fonction de l’action qui est exécutée. Par exemple on peut déplacer un objet ou changer sa description.

Phase épilogue

Cette phase permet d’informer le joueur du résultat de l’action qui s’est exécutée. Par exemple on décrit au joueur le lieu dans lequel il s’est déplacé.

Refuser une action

Vous pouvez interrompre une action depuis la phase prérequis (ou depuis une règle avant). Deux formes :

refuser "message"

Affiche le message au joueur et stoppe l’action :

si ceci n’est pas accessible, refuser "Je n’y ai pas accès.".

refuser l’action

Stoppe l’action sans afficher de message — utile quand vous avez déjà affiché un texte contextuel avec dire juste avant :

règle avant prendre le vase Ming:
  dire "Le gardien lève les yeux et vous regarde fixement.".
  refuser l’action.
fin règle

Un refus stoppe l’action complètement : les phases exécution et épilogue ne sont pas exécutées.

Définition des compléments variables d'une action

Il est possible de spécifier 1 ou 2 compléments pour une action. Par convention, le premier sera toujours nommé « ceci » et le second « cela ».

Si vous n'écrivez pas de définition pour les compléments, il leur sera attribué une définition par défaut « ceci est un objet visible et accessible. »

Action sans complément

action sauter:
  dire "Vous sautez.".
fin action

Action avec 1 complément (ceci)

action sauter sur ceci:
  définition:
    ceci est un support.
  phase épilogue:
    dire "vous sautez sur [intitulé ceci].".
fin action

Action avec 2 compléments (ceci et cela)

action combiner ceci avec cela:
  définitions:
    ceci est un objet visible et accessible.
    cela est un objet visible et accessible.
  phase épilogue:
    dire "Ça n'a rien donné.".
fin action

Types de cibles

À l’intérieur de définition (ou définitions au pluriel quand il y a deux compléments), vous précisez ce que le moteur doit chercher pour identifier ceci / cela :

ceci est un objet.                       -- n'importe quel objet
ceci est un objet visible.               -- objet présent et visible
ceci est un objet vu et visible.         -- objet déjà vu au moins une fois
ceci est un support.                     -- objet sur lequel on peut poser
ceci est un contenant.                   -- objet dans lequel on peut mettre
ceci est une personne.                   -- élément vivant
ceci est un lieu.                        -- pour une action de déplacement
ceci est une direction.                  -- nord, sud, en haut, …
ceci est un intitulé.                    -- n'importe quel élément ou direction

Les épithètes se combinent ; l’ordre n’a pas d’importance :

ceci est un objet vu, visible et accessible.
cela est une personne visible.

Priorité (prioritairement)

Si vous souhaitez donner la priorité à certains objets par rapport à d’autres vous pouvez utiliser le mot clé « prioritairement ».

Exemple concret

En cours de jeu, le joueur possède une pomme dans son inventaire tandis qu’une autre pomme se trouve encore sur la table.

Voici 2 commandes que le joueur pourrait entrer:

1) prendre la pomme: l’action prendre donne la priorité à la pomme qui est encore disponible sur la table (contrairement à celle qui est déjà possédée par le joueur).

action prendre ceci:
  définitions:
    ceci est un objet visible et accessible prioritairement disponible.
(...)
fin action

2) lâcher la pomme: l’action lâcher donne la priorité à la pomme est est possédée par le joueur (contrairement à celle qui est encore disponible sur la table).

action lâcher ceci:
  définitions:
    ceci est prioritairement possédé.
(...)
fin action

Plus d’informations : États personnalisés et Visibilité et accessibilité.

Définition d'une action qui déplace le joueur

En ajoutant la phrase L’action déplace le joueur vers ceci. vous aurez accès aux variables source et destination dans vos règles.

action aller vers ceci:
 
  définitions:
    Ceci est un lieu.
    L’action déplace le joueur vers ceci.
 
  phase prérequis:
    si le joueur se trouve dans ceci, refuser "Vous y êtes déjà.".
 
  phase exécution:
    déplacer le joueur vers ceci.
 
  phase épilogue:
    exécuter l’action regarder.
fin action
 
-- modifier l’action « aller »
--   remarque: avec une action qui déplace le joueur (aller), on peut utiliser les
--   variables « origine », « destination » et « orientation ».
règle avant aller vers un lieu:
  -- si le joueur tente d’aller là où il se trouve déjà
  si le joueur se trouve dans destination:
    dire "Vous y êtes déjà !".
  -- sinon déplacer le joueur vers la destination.
  sinon
    dire "{/Vous disparaissez de [intitulé origine]… et vous apparaissez dans [intitulé destination] !/}".
    changer le joueur se trouve dans destination.
    -- décrire le nouveau lieu où se trouve le joueur
    dire "{p}{_{*[titre ici]*}_}".
    dire "{n}[description ici][décrire objets ici]".
  fin si
  arrêter l’action.
fin règle

Aide contextuelle

Vous pouvez fournir une aide affichée quand le joueur tape aide nomAction :

L’aide pour l’action mélanger est "{*mélanger X avec Y*}{n}Verse une potion dans une autre. Les deux potions doivent être des potions distinctes.".

Remplacer une action existante

Page dédiée : Règle remplacer (syntaxe, correspondance par signature, exemples testables).

Pour écraser une action déjà définie (par exemple une action de base héritée du moteur), utilisez un bloc règle remplacer <signature>:. Le bloc remplace intégralement l’action d’origine : description, phases, balises d’aide, etc. Les synonymes ne sont pas hérités — recopiez-les si vous voulez les conserver. Le bloc se ferme par fin règle. Le mot action est facultatif après remplacer : règle remplacer sauter et règle remplacer action sauter sont équivalents.

règle remplacer sauter:
  phase épilogue:
    dire "Vous bondissez comme un cabri.".
fin règle

Correspondance par signature

La signature doit correspondre exactement à l’action ciblée : verbe, prépositions et présence de ceci / cela. Un bloc règle remplacer sauter ne touche pas action sauter sur ceci et vice-versa.

règle remplacer sauter sur ceci:
  phase épilogue:
    dire "Hop, vous voilà perché sur [le ceci].".
fin règle

Désambiguïsation par définitions

Plusieurs actions du moteur partagent le même infinitif et la même arité. Le fichier actions.djn définit par exemple quatre action examiner ceci distinctes, une pour chaque type de cible : direction, lieu, objet, spécial.

Pour cibler la bonne version, reproduisez le bloc définitions de la version visée — seul le type de la cible (objet, lieu, direction…) est utilisé pour identifier l’action ; les épithètes (visible, vu, prioritairement…) n’interviennent pas dans la sélection.

règle remplacer examiner ceci:
  définitions:
    ceci est un objet prioritairement visible et mentionné.
  phase épilogue:
    dire "Rien d’intéressant à signaler sur [le ceci].".
fin règle

Recopiez tout de même les épithètes et la priorité de l’action originale (ici prioritairement visible et mentionné). Comme le remplacement est total, ces critères sont aussi remplacés ; si vous les omettez, le résolveur de commandes peut ne plus sélectionner votre version au profit d’une autre action concurrente.

Si plusieurs actions correspondent à la signature fournie sans pouvoir être désambiguïsées, une erreur de compilation est émise. Si aucune action existante ne correspond, un avertissement non bloquant est affiché dans l’éditeur Donjon FI et la règle crée une nouvelle action.

Doublons d’actions

Deux blocs action <signature>: avec exactement la même signature (même infinitif, même arité ceci/cela, mêmes prépositions, même type de cible via définitions:) sont refusés. Le compilateur émet une erreur et vous invite à utiliser règle remplacer si l’intention était de modifier le comportement existant. De même, deux blocs règle remplacer qui ciblent la même action sont refusés : une seule règle de remplacement est autorisée par action.

Voir aussi

reference/routines/action/start.txt · Dernière modification : de 127.0.0.1