C’est normal, parce qu’Inform ne peut pas créer d’objets à la volée, en cours de jeu, donc il essaie de prendre un monstre au hasard parmi tous les monstres du jeu, mais comme il n’y en a pas, il ne prend rien, d’où l’erreur.
(Bon, en fait, il y a une extension pour créer des objets en jeu, mais encore une fois, ça peut te compliquer la vie si tu peux faire autrement. C’est utile par contre si tu fais un RPG ou un roguelike avancé, mais il faut vraiment être sûr de ce que l’on fait.)
Donc oui, il faut créer une réserve de monstre pour chaque type, comme ça :
[code]There are 50 goblins. There are 50 gnolls.
Before going to la salle:
let M be a random off-stage monster;
if M is a monster: [c’est-à-dire si M n’est pas rien]
now M is in la salle;
else:
say « BUG : il n’y a plus de monstres en réserve ! »;[/code]
Et il ne faut pas oublier de recycler les monstres : quand il y en a un qui meurt, ou que le joueur est très loin de son emplacement, il faut le retirer du jeu et le réinitialiser (lui rendre ses points de vie, etc.), sinon le joueur finira par ne plus en rencontrer.
C’est là que ça devient compliqué si on utilise l’extension mentionnée plus haut. Dans ce cas, il faut créer un objet-prototype pour chaque type de monstre, et quand on en veut un nouveau, il faut d’abord vérifier s’il n’y en a pas un hors-jeu qu’on peut réutiliser. Si ce n’est pas le cas, alors on peut cloner le prototype pour faire un nouveau monstre. Ça devient vite complexe : est-ce qu’il faut aussi garder les propriétés et les relations du prototype ? Et il ne faut surtout pas oublier de les recycler, sinon le jeu finira avec des centaines de monstres qui prennent de la mémoire inutilement.
Aussi, pour gérer les proportions, je ne conseille pas de mettre un nombre différent pour chaque type de monstre dans la réserve. Je pense qu’il vaut mieux le calculer soi-même.
if a random chance of 2 in 3 succeeds:
[on met un gobelin comme montré plus haut];
else:
[on met un gnoll];
Encore une fois, il doit y avoir un moyen de gérer ça plus facilement, avec des tableaux, des activités ou des relations (tout dépend de comment tu gères les monstres).
(note technique : la tournure « a random [truc] » ne prend pas en argument des types ou des objets. Elle prend une description (voir le chapitre 6). Pour faire court, il s’agit d’un ensemble d’objet ayant certaines caractéristiques. C’était la même chose dans la boucle « repeat ».)