De l'or oui mais pas tout de suite

J’ai crée une fontaine dans un de mes jeux.

Ce que je voudrais faire, c’est que quand on examine la fontaine pour la première fois, le système affiche la description avec en plus « Il y a des pièces d’or ici », et que ça déclenche l’apparition d’un objet « pièces ».

J’avais bricolé un truc du genre (aux erreurs de syntaxe près)


after [,
examine "Il y a des pièces d'or ici"    move pieces to PlacedelaFontaine
],

mais le seul pb c’est que quand je ramassais les pièces, le simple fait de ré-éxaminer la fontaine ramenait des pièces supplémentaires…

comment faire pour que le déplacement ne se produise qu’une seule fois ?

ou bien dois-je utiliser la propriété Concealed sur mon objet pièces ?

merci d’avance

Il me semble qu’il y avait une propriété « first » ou « first time » dans inform 6, mais je n’en suis pas sûr et je n’ai pas retrouvé…

Maisen passant par des moyens détournés, on peut le faire, je pense. L’idée est de donner un marqueur à la pièce, qui indique si elle a été prise ou pas.

Ca donne quelque chose du genre :

[code]Object font « fontaine » PlacedelaFontaine
with description « Blabla »,
name ‹ fontaine ›,
after[; Examine: if (pieces.dep == 1) {rtrue;} else {print « Il y a des pièces d’or ici. »; move pieces to PlacedelaFontaine; pieces.dep++; rtrue;}],
has scenery;

Object pieces « pieces »
with dep 0,
{etc. pour les pièces}
[/code]

ll peut y avoir plus simple, faudrait demander aux autres.

Peut être aussi que tu peux l’inclure dans la description de l’objet, en fait (ce serait plus simple, peut-être) :

Object font "fontaine" PlacedelaFontaine
      with description [; print "Description de la fontaine."; if (pieces.dep == 1) {rtrue;} else {print "Il y a des pièces d'or ici."; move pieces to PlacedelaFontaine; pieces.dep++; rtrue;}],
name 'fontaine',
has scenery;

Object pieces "pieces"
with dep 0,
{etc. pour les pièces}

Quant à l’attribut « concealed », c’est juste quelque chose qui masque un objet, par exemple aux yeux de la commande « prendre tout » ; le joueur peut interagir quand même en le nommant. Ici, ça n’aurait pas servi, car ça aurait simplement caché de façon artificielle les pièces.

En espérant que ça t’aie servi… :wink:

A mon avis les pièces devaient disparaître de l’inventaire du joueur car c’est toujours le même objet qui se déplace.

Le marqueur pourrait être placé sur la fontaine plutôt que sur les pièces (enfin ça revient à peu près au même). De plus il existe un attribut appelé « general » qui peut servir à ce genre de choses.

Le chapitre 8 (surtout page 93) de inform-fiction.org/manual/IBG.pdf peut être intéressant.

Sinon il suffirait de tester le lieu de l’objet « pieces ». Ne le déplacer que s’il se trouve nulle part.

j’aurais dit pareil que JL ou Mule Hollandaise, il faut effectivement placer un marqueur sur la fontaine ou les pièces. Par contre il faut tester dans la propriété before, et non pas after. Il est également possible d’avoir, en copiant (et adaptant un peu) le code de notre jeu LieuxCommuns :

Object Cheminee31 "cheminée" Piece31 with name 'feu' 'foyer' 'cheminee' 'flammes' 'flamme', description "Une cheminée en pierres jaunes.", before [; Search: if (Cristal31 in self) { print "Il y avait une sorte de caillou dans les cendres.^" ; give Cristal31 ~concealed ; give self transparent ; rtrue ; } if (Cristal31 notin self) { print "Il n'y avait rien de notable ici à part des cendres qui me salissaient les mains.^" ; rtrue ; }

à toi d’adapter en fonction de ton jeu ! Par contre il faut bien voir qu’il vaut mieux essayer de trouver une solution globale en fonction de ce que peut faire le joueur ensuite. Par exemple s’il replace les pièces dans la fontaine, il faut qu’il puisse les ressortir une nouvelle fois. J’ai également utilisé le verbe fouiller (search), comme cela par exemple si on remet l’objet dans le conteneur, on le trouve simplement en regardant, et non pas en fouillant. Si on place autre chose que l’objet en question, on a juste « il n’y avait rien de notable ici… », ce qui n’est pas ultra réaliste, mais passe quand même. De plus maintenant en examinant la pièce, tout ce qui sera dans le conteneur sera visible (attribut transparent)