Je ne comprends pas vraiment ta question. Cependant, ta conception de la lumière dans Inform est erronée. Quand tu allumes ta lampe, l’endroit reste dark et ne devient pas lighted. C’est une propriété de l’endroit, qui en général ne change pas. Elle signifie simplement que l’endroit ne possède pas de source de lumière intrinsèque, c’est-à-dire qu’elle est sombre en l’absence de source de lumière externe.
En présence de la lampe, Inform voit qu’il y a une source de lumière, et fait en sorte que le joueur voit ce que l’emplacement contient, même s’il est dark. Si on éteint la lampe, Inform voit que l’emplacement est dark et qu’il n’y a plus de source de lumière, alors on se retrouve dans l’obscurité.
(En fait, dans le code Inform 6 sous-jacent, il n’y a qu’une seule sorte d’éclairage : un objet, que ce soit un endroit ou une chose, peut être lumineux. Si le joueur est en présence d’un objet lumineux, que ce soit l’emplacement ou une chose, alors il peut voir. Sinon il est dans le noir.)
Je pense deviner que tu l’as mal codé, et que tu mets la propriété « lighted » à tous les endroits quand le joueur allume la lampe, plutôt que d’ajouter la propriété « lit » à la lampe. Si c’est le cas, cela revient à dire que les endroits possèdent maintenant une source de lumière intrinsèque plutôt que de dire que la lampe devient une source de lumière. Et là, en plus que c’est conceptuellement faux, il faudrait stocker une liste des endroits sombres quelque part pour pouvoir revenir en arrière quand la lampe est éteinte.
Minimalement, ton code devrait ressembler à cela :
[code]La montagne is a room. La lampe is a switched off device in la montagne.
La grotte is inside from la montagne. La grotte is dark.
Carry out switching on la lampe:
now la lampe is lit.
Carry out switching off la lampe:
now la lampe is not lit.[/code]