Rappel : comment modifier le comportement normal d’une action

Dans la deuxième partie du tutoriel d’introduction à I7, nous avons vue qu’il existe trois façons de modifier le comportement d’une action : les règles before, instead et after.

  • Une règle before se déroule avant qu’une action ait lieu, mais n’empêche pas son déroulement ; l’action poursuivra son déroulement normal.
  • Une règle instead empêche le déroulement d’une action en faisant autre chose à la place.
  • Une règle after se déclenche après que l’action a réussi et fait son effet, mais avant que le message l’indiquant soit affiché. Par défaut, ce dernier ne le sera pas sauf si l’on écrit continuer l'action;.

Si vous ne vous en souvenez plus, n’hésitez pas à relire la section correspondante du tutoriel en lien.

Enfin, n’oubliez pas la syntaxe pour écrire une règle : le préambule directement dans la source et suivie d’un deux-points, des expressions indentées et séparées par des points-virgules, et un point à la fin :

La chambre est un endroit. Le bureau est un support. Le bureau est dans la chambre. Le stylo est une chose.

Instead of looking under le bureau when le stylo est hors scène:
	[« hors scène » veut dire que le stylo n'est dans aucun endroit.]
	maintenant le player porte le stylo;
	dire "Vous vous baissez et chercher sous votre bureau. Ah[_]! Le stylo qui vous a échappé est ici. Vous le récupérez.".

Voilà, maintenant que cela est dit, voyons comment créer ses propres actions, et comment définir leur comportement standard.

De nouvelles actions

Créer des actions

Commençons d’emblée par un exemple :

Smiling is an action applying to nothing.
Photographing is an action applying to one thing.
Photographing it with is an action applying to two things.

Ce code crée trois actions : l’action smiling (« sourire »), photographing (« photographier ») et photographing it with (« photographier quelque chose avec »).

Ici, la première ne concerne aucune chose (comme sauter), la deuxième, une seule (comme examiner) et la troisième, deux (comme déverrouiller quelque chose avec). Le mot it dans la dernière est important : il permet de montrer à Inform où doit se trouver le premier objet. Ainsi, on écrira Instead of photographing la fleur with le polaroid. De plus, il faut que le nom de l’action se termine en -ing (que ce soit un mot en anglais ou inventé ; on pourrait utiliser « souriring » si on le voulait).

Les deux dernières actions sont bien distinctes, malgré le fait qu’elles commencent par le même mot.

Vous pouvez maintenant compiler et tester tout ça… et vous vous rendrez compte qu’il n’y a aucun moyen d’effectuer ces actions !

Il faut en effet ajouter quelques lignes de compréhension.

Ajouter des commandes

Encore une fois, un exemple sera sûrement plus clair que de longues explications :

Comprendre "sourire" comme smiling.
Comprendre "photographier [quelque chose]" comme photographing.
Comprendre "photographier [quelque chose] avec [quelque chose]" comme photographing it with.

Ce qui est entre crochet représente les objets auxquels vont s’appliquer les actions. Testons ce code (en ajoutant des objets pour prendre des photos) :

>sourire
>photographier la fleur
>

Il ne se passe rien ! C’est normal : les actions ont bien eu lieu, mais elles ne font rien car nous n’avons pas écrit de règles pour elles.

Avant de passer à la suite, n’hésitez pas à ajouter d’autres commandes pour ces actions, comme « prendre en photo », afin de vérifier si vous avez bien compris.

Les règles définissant le comportement normal d’une action

Il existe trois livres de règles pour définir comment doit se dérouler une action : les règles check, carry out et report.

Pourquoi ne pas utiliser les règles que nous avons déjà vues, comme instead ou before ? La réponse est simple. Ces règles sont là pour créer des exceptions (si on prend une bombe, elle explose plutôt que d’aller dans l’inventaire). Les règles introduites dans cette section définissent le comportement normal, générique d’une action. Cela permet une séparation claire, avec moins de risques d’interférences entre les règles.

Les règles check

Les règles check doivent vérifier que certaines conditions sont remplies, et interrompre l’action en indiquant pourquoi si ce n’est pas le cas. Si tout va bien, on ne fait rien.

[On crée une propriété pour pouvoir savoir ce qui a été pris en photo.]
Une chose peut être photographié. Une chose est rarement photographié.

Check photographing:
	[Le noun est l'objet de l'action. Le deuxième objet, s'il y en a un, est le second noun.]
	si le noun est photographié, dire "Vous avez déjà pris [le noun] en photo." instead.

Ici, on vérifie si l’objet en question est photographié, et on affiche un message si c’est le cas. Le mot instead à la fin permet de faire arrêter l’action.

Ce mot instead n’a rien à voir avec la règle du même nom ! Il s’agit ici d’une indication qui dit à Inform d’arrêter l’action. Il faut la mettre à la fin d’une instruction, et elle ne s’utilise en général que dans les règles check.

À vous de jouer ! Testez tout d’abord la règle que nous venons d’écrire, puis créez d’autres règles pour vérifier si le joueur possède bien un appareil photo (qui pourra peut-être être un type d’objet), ou s’il essaie de photographier un appareil photo avec ce même appareil photo (pour l’action s’appliquant à un seul objet, il faut vérifier si le joueur a un autre appareil à disposition ou pas ; pour l’action s’appliquant à deux objets, il suffit de comparer le noun et le second noun).

Le mieux est de créer une nouvelle règle par condition, plutôt que d’utiliser une seule méga-règle qui vérifie tout. Vous ne devriez en général pas avoir à vous soucier de leur ordre.

Les règles carry out

Si l’action passe toutes les règles check (et qu’il n’y a pas de règles instead), elle est considérée comme ayant réussi, et les règles carry out sont exécutées.

Ces règles sont là pour appliquer les effets de l’action, pour modifier le monde en conséquence. Il ne faut cependant pas afficher de message.

Carry out photographing:
	maintenant le noun est photographié.

Vous pouvez vous amuser à ajouter d’autres choses, si vous avez d’autres idées (par exemple, faire diminuer le nombre de photos restantes de l’appareil utilisé — qui serait une propriété — ; il faudra encore une fois distinguer les deux actions permettant de photographier).

Les règles report

Les règles report sont exécutées après les règles carry out. Leur seul rôle est d’afficher un message au joueur, lui indiquant que l’action a bien eu lieu.

Report photographing:
	dire "Clic[_]! Vous prenez [le noun] en photo.".

Les règles report ne sont pas atteintes s’il y a eu une règle after auparavant (sauf si l’on écrit continuer l'action;). C’est pour cela que le message par défaut n’est pas affiché dans ce cas.

Quelques remarques générales

Une histoire de conventions

Est-il vraiment interdit d’afficher une réponse lors d’une règle carry out ? Bien sûr que non. Bien que ces règles ont toutes un usage bien spécifique, Inform ne force rien. Il ne s’agit que de conventions — qu’il vaut bien sûr mieux de respecter.

Parfois, c’est subjectif. Doit-on utiliser une règle instead ou carry out si l’on veut faire exploser une bombe quand on la prend ? Il s’agit bien d’une exception, puisque la bombe ne va pas dans l’inventaire, elle fait terminer la partie. Mais en même temps, c’est bien le comportement normal d’une bombe d’exploser… J’utiliserais ici une règle instead — sauf peut-être si une bombe est un type d’objet et que toutes les bombes se comportent comme cela — mais les deux fonctionnent. Mieux vous comprendrez les rouages d’Inform, plus vous saurez faire un bon choix.

Il n’est pas requis d’utiliser toutes les règles

Notre action de sourire n’a vraisemblablement pas besoin de règles check ou carry out : n’importe qui peut sourire, quand il veut, et cela ne fait rien de spécial. Une règle report suffira.

Le joueur ne peut pas deviner les commandes

Si vous créez de nouvelles actions, alors il faut trouver un moyen d’indiquer au joueur quelles commandes il peut utiliser. Cela peut se faire directement dans un texte d’aide, ou bien être suggéré plus subtilement par certains objets et descriptions. S’il y a un appareil photo dans le jeu, le joueur essaiera vraisemblablement de photographier des choses, même si l’objet n’était là que pour la décoration.

Pour aller plus loin

Le chapitre « Advanced Actions » de la documentation couvre la création d’actions (ainsi que d’autres choses, comme des actions effectuées par des PNJ). Il explique également d’autres notions, plus rarement utiles, comme les actions « hors du monde » (telles que sauvegarder) ou les variables d’action, ainsi que la notion de visibilité.

De plus, la section 17.6 explique comment créer une action s’appliquant à des valeurs, comme un nombre.

Amusez-vous bien !