On est aléatoire ou on ne l'est pas

Bon, j’avance dans mon jeu systématique. Aux routines de combat, maintenant ! Elles marchent, mais ça, ça ne marche pas :

Every turn when location is in Donjon1:
	if goblin1 is in location:
		understand "gobelin" as goblin1;
		say "Un gobelin vous attaque en hurlant !";

Pourquoi ? Parce que je ne peux pas dire « Understand « gobelin » as goblin1 when location is Duschmurf; ».
Et pourquoi ?
Parce que je ne sais pas où est location !
Et pourquoi ? parce que j’ai positionné goblin1 de manière aléatoire !
Et il faut pourtant que je puisse dire « frapper gobelin » !
Et ensuite, quid si j’ai non pas un goblin mais quatorze ?
Ouin !

Merci d’avance.

Encore une fois, je ne suis pas certain de comprendre.

Déjà, on ne peut pas dire « understand » dans une règle. C’est une commande qui tient toute seule, qui est générale. Et oui tu peux écrire :

Understand "gobelin" as le goblin1 when la location is in Donjon1.

étant donné que la location est défini comme étant l’endroit où se situe le joueur. Si le joueur et le goblin1 sont dans un même endroit, qui n’est pas dans le Donjon1, le joueur ne pourra pas appeler le goblin1 « gobelin ». Si l’endroit est dans le Donjon1, alors il le pourra. Si les deux ne sont pas au même endroit, le joueur ne pourra pas faire référence au goblin1 de toute façon. Et si tu voulais qu’en fait ce soit l’emplacement du gobelin et pas du joueur qui soit pris en compte, alors c’est :

Understand "gobelin" as le goblin1 when la location of le goblin1 is in Donjon1.

Sauf si j’ai mal compris ce que tu voulais. Mais de toute façon, pourquoi le joueur ne pourrait appeler le goblin1 « gobelin » que dans des endroits spécifiques ? Pourquoi ne pas tout simplement mettre :

Understand "gobelin" as le goblin1.

Pour la multiplicité des gobelins : comment les as-tu définis ? Pas comme ça j’espère :

Le goblin1 is a person. Le goblin2 is a person. Le goblin3 is a person. [et ainsi de suite…]

Déjà, c’est long, et s’il y a plusieurs gobelins au même endroit :

Et le joueur se retrouve bloqué parce qu’il n’y a aucun moyen de les différencier.

Le mieux c’est de créer un type de personne, et de faire une réserve de gobelins génériques.

[code]A goblin is a kind of person.

Understand « gobelin » as a goblin.
[OU]
Understand « gobelin » as a goblin when la location is in Donjon1.
[OU]
Understand "gobelin as a goblin when la location of le item described is in Donjon1. [Ici il faut utiliser item described parce qu’on ne parle pas d’un gobelin en particulier.

[On crée la réserve de gobelins, qui commenceront hors du jeu.]
There are 20 goblins.

[Et pour amener un gobelin]
When play begin:
if a goblin (called G) is off-stage:
now G is in [l’endroit que tu veux];
else:
say « Bug : la réserve de gobelin est vide. »[/code]
Si le joueur essaie d’interagir avec l’un d’entre eux, Inform va en choisir un au hasard puisqu’il sont considérés identiques. Pour modifier cela, on peut utilise un « does the player mean », par exemple pour toujours favoriser un gobelin avec moins de points de vie lors d’une attaque.