Table des matières

Les classes d’éléments (types)

Chaque élément de votre jeu appartient à un type (on dit aussi une classe) : un lieu, un objet, un animal, un contenant… Le type détermine le comportement par défaut de l’élément (un contenant peut s’ouvrir, un support reçoit des objets sur lui, un animal est vivant, etc.).

Les types intégrés

Le moteur fournit une hiérarchie de types. Les plus spécifiques héritent des plus généraux : un animal est aussi un objet, donc tout ce qui vaut pour un objet vaut pour un animal.

Type Hérite de Rôle
lieu un endroit où l’on se déplace
objet toute chose manipulable ou décrite
vivant objet base des êtres vivants
animal vivant une créature
personne vivant un personnage (PNJ)
contenant objet contient des objets dans lui
support objet reçoit des objets sur lui
porte objet sépare deux lieux, s’ouvre / se ferme
obstacle objet bloque un passage
fond objet un décor présent dans plusieurs lieux (voir Fonds)
La cuisine est un lieu.
Le couteau est un objet dans la cuisine.
Le chat est un animal dans la cuisine.
Le placard est un contenant dans la cuisine.

Créer son propre type

Vous pouvez définir un type personnalisé qui hérite d’un type existant, avec la formule Un X est un <type>. Tous les éléments de ce type partagent alors le comportement du type parent — et tout ce que vous déclarez sur le type devient le défaut de ses instances.

Un familier est un animal.
Un familier est affamé.            -- défaut : tout familier est affamé…

L’état affamé utilisé ci-dessus est un état personnalisé : il doit être déclaré avant (ici une bascule affamé / repu).

Héritage en chaîne

Un type personnalisé peut lui-même servir de parent à un autre. L’héritage se propage sur toute la chaîne, et on peut poser un défaut directement dans la déclaration du sous-type :

Un chaton est un familier affamé.

Un chaton est alors aussi un familier, un animal (et un objet), et il est affamé par défaut.

Utiliser un type

Le nom du type sert ensuite à viser tous ses éléments à la fois : compter (''%%[nombre de familiers]%%''), tester si X est un familier, ou écrire une règle avant examiner un familier.

wiki_definitions_classe_personnalisee
affamé et repu forment une bascule.
 
Un familier est un animal.
Un familier est affamé.
 
Un chaton est un familier.
 
La maison est un lieu.
Le chat est un familier dans la maison.
Le chien est un familier dans la maison.
Le chien est repu.
Le minou est un chaton dans la maison.
Le joueur est dans la maison.
 
action recenser:
  dire "Familiers : [nombre de familiers].".
  si le chat est affamé, dire "Le chat est affamé (défaut du type).".
  si le chien est repu, dire "Le chien est repu (défini sur l'instance).".
  si le minou est un familier, dire "Le minou (chaton) est aussi un familier.".
  si le minou est affamé, dire "Le minou est affamé (défaut hérité en chaîne).".
fin action
 
règle avant commencer le jeu:
  dire "Essayez : {/recenser/}.".
fin règle

tester cet exemple

Voir aussi