Tous les objets que nous manipulons dans Inform ont un type. Nous avons ainsi déjà vu la chose, la personne et le contenant, pour ne citer que ceux-ci. Il existe également des types plus abstraits, comme le texte ou le nombre.

Mais que faire si les types par défaut d’Inform ne sont pas suffisamment ? Il nous suffit de créer nos propres types.

Pourquoi créer des types ?

Il arrive régulièrement que nous voulions que toute une série d’objets dans notre jeu se comporte de la même façon et suive des règles communes. Par exemple, dans Inform, tous les contenants peuvent se fermer, s’ouvrir et contenir des objets ; les appareils peuvent être allumés ou éteints.

Créer des types d’objets « physiques »

Tous les objets qui constituent le monde virtuel du jeu et avec lesquels le joueur peut interagir sont du type objet (sans surprise). Ce type se ramifie en plusieurs sous-types : endroit, chose, direction et région. Les choses possèdent encore plus de sous-types.

Pour créer un nouveau type, il faut choisir de quel autre type il descend. Cela sera en général chose (ou plus précis).

Par exemple, si notre jeu contient de nombreux trésors et que nous voulons en piéger certains, nous pourrions spécifier les coffres piégés un à un, ou nous pourrions créer un nouveau type, qui servira de modèle à tous nos pièges :

A trapped chest is a kind of container.
A trapped chest translates into French as un coffre piégé.

Il est recommandé de créer son type en anglais, et d’en indiquer la traduction juste après. Cela permet à Inform de faire les accords comme il faut. Si nous avions écrit directement A cheval is a kind of thing, Inform appliquerait les règles de l’anglais et pensera que le pluriel est « chevals » plutôt que « chevaux ».

Maintenant, il nous est possible de créer des coffres piégés où nous le voulons :

Les Oubliettes sont un endroit.

La malle est un coffre piégé dans les Oubliettes.

Mais cela sert-il à quelque chose pour l’instant ? Eh bien non, car nous n’avons rien ajouté de spécifique à ce nouveau type de contenant. Il se comportera donc exactement comme un contenant normal.

Ajoutons donc quelques règles qui ne s’appliqueront qu’aux coffres piégés :

After opening un coffre piégé:
	dire "Alors que vous ouvrez le coffre, une explosion magique vous fait voir de toutes les couleurs[_]!".

Before examining un coffre piégé when le player porte la lentille magique:
	dire "[Le noun] semble avoir été piégé par un sortilège.".

Ajouter un when à la fin du préambule de la règle fait en sorte qu’elle ne s’exécutera que si la condition spécifiée est vraie.

Ainsi, tous nos contenants piégés se comporteront de la même façon.

Ajouter des propriétés

Comme nous l’avons déjà vu précédemment, il est possible d’ajouter des propriétés aux objets (comme l’attaque du div ou la propriété mort des personnes) :

Un coffre piégé peut être actif ou désamorcé. Un coffre est généralement actif. [Les coffres piégés sont soit actifs, soit désamorcés, et sont actifs par défaut.] 
Un coffre piégé has a number called puissance. La puissance d' un coffre piégé est généralement 1. [Les coffres auront tous un nombre appelé « puissance », qui sera mis à un sauf si indiqué autrement dans la source.]

N’oubliez pas qu’Inform ne sait pas (pour le moment) accorder les propriétés créées par l’auteur ! Il vous faudra toujours les écrire de la même façon, même au pluriel ou au féminin !

Modifions donc notre code précédent.

Use scoring. [Cette option indique à Inform que nous souhaitons du score dans notre jeu.]

[…]

La puissance de la malle est 5.

After opening un coffre piégé:
	[On pénalise le joueur.]
	diminuer le score de la puissance du noun;
	dire "Alors que vous ouvrez le coffre, une explosion magique vous fait voir de toutes les couleurs[_]!".

Before examining un coffre piégé when le player porte la lentille magique:
	si le noun est actif:
		dire "[Le noun] semble avoir été piégé par un sortilège.";
	sinon:
		dire "Le sortilège qui protégeait [le noun] a été contré.".

Rendu à ce stade, vous vous êtes peut-être posé la question suivante : pourquoi avoir créé un nouveau type de contenant plutôt que d’avoir créé une propriété piégé s’appliquant à tous les contenants ? Il n’y a pas de bonne réponse à cette question, tout dépend de votre projet. Si vous pensez qu’il s’agit d’un concept général, qui peut s’appliquer à beaucoup de choses différentes, alors une propriété peut mieux convenir. Si vous pensez qu’un coffre piégé est assez spécifique, mieux vaut créer un type.

Par exemple, avec ce que nous avons écrit, seuls les coffres piégés auront une puissance, alors que tous les contenants en auraient eu une si piégé avait été une simple propriété. C’est une économie de mémoire très négligeable, mais cela illustre la différence.

Les types « abstraits »

Il est également possible de créer des types qui ne représentent rien de physique, mais qui peuvent prendre une certaine valeur parmi une liste prédéfinie. Un exemple vaut mieux qu’un long discours :

Une taille is a kind of value.
[On devrait le créer en anglais et le traduire, mais ça ne change pas grand-chose ici.]
Les tailles sont minuscule, petit, moyen, gros, énorme.

Le code ci-dessus crée un type de valeur nommé taille, qui pourra prendre cinq valeurs distinctes.

Un contenant has a taille. Un contenant est généralement moyen.

After examining un contenant:
	dire "C'est [taille du noun].".

Instead of taking un contenant when la taille du noun est plus grande que moyen:
	dire "[Le noun] est bien trop gros.".

Les types de valeurs sont très utiles quand on veut exprimer avec des mots certains concepts. On aurait pu en effet utiliser un nombre plutôt qu’un nouveau type, mais il faut alors se souvenir quel nombre correspond à « gros », et il devient plus lourd à afficher une certaine taille ("C'est [si la taille est 0]minuscule[sinon si la taille est 1]petit[sinon si …").

Voici des exemples d’utilité pour les types de valeur : les jours de la semaine, les éléments (feu, air…), les couleurs… ; de manière générale, tout ce qui peut avoir un nombre fini de valeurs différentes.

Notons que l’ordre de déclaration des valeurs a une importance : en plus de pouvoir les comparer comme plus haut, il est possible de récupérer une valeur précédant ou suivant une autre avec les expressions :

	la taille avant gros; [énorme]
	la taille après gros; [moyen]

Pas très utile ci-dessus, plus utile quand on ne sait pas à l’avance la valeur recherchée (s’il s’agit d’une propriété d’un objet, par exemple).

Pour terminer, sachez que ces valeurs peuvent avoir leurs propres propriétés :

Une taille peut être invisible. Minuscule est invisible.

[Dans une certaine règle:]
	si la taille du noun est invisible:
		[…]

Conclusion

Voici pour ce bref tour sur la création des types dans Inform ! Le chapitre 4 du manuel entre plus en détail sur les types, si jamais vous voulez tout savoir sur cet aspect d’Inform.