Dans le cadre des bugs firthworks.com/roger/downloads/scenic.h ), qui permet d’ajouter des descriptions sur des éléments du décor dans une propriété « scenic » de la salle dans laquelle on les voit.
Exemple :
Object forest "Forest"
with description "The forest...",
name 'forest' 'wood',
scenic 'tree' 'trees' 0 "The trees tower over you."
'shrub' 'shrubs' 0 "The shrubs don't."
'moss' 0 "The moss cowers under everything.",
etc... ;
Cela permet d’ajouter de nombreux détails sans nécessiter la création d’un objet par élément du décor !
Autre avantage de cette extension, on peut en bonus taper « examine forest » qui aura le même effet que « look ». Normalement, en inform, la propriété name d’un lieu contient tous les objets sans importance, donc dans notre exemple, sans l’extension scenic.h, « examine forest » nous renverrait « You don’t need to refer to that ».
Malheureusement, l’extension se limite aux descriptions visuelles et ne permet pas d’utiliser le même mécanisme pour les autres sens (ouïe, toucher, odorat, goût). J’ai donc amélioré l’extension de base en une nouvelle extension « scenic5sens », que je propose d’intégrer au projet Lieux Communs (en fait c’est déjà fait, il ne me reste qu’à faire le commit).
Voici un exemple de code, tiré de lieux communs :
Object rive "Le long de la rivière." class Lieu
with
name 'rive',
scenic_all
'nuee' 'nuees' 'volutes' 'tentacules' 'engoulevent' 'insecte' 'insectes' 'ombre' 'ombres' 'oree' 'bois' 'houe' 'houes' 'peinture' 'motif' 'motifs' 'sable' 0 NULL,
scenic_look
'flot' 'flots' 'eau' 'eaux' 'riviere' 'fleuve' 0 "Alors que regarder l'eau couler avait jusqu'ici toujours eu un effet apaisant sur mon esprit, cette eau là avait sur moi un effet différent : étrange, presque effrayant."
'couchant' 'soleil' 'crepuscule' 0 "La nuit n'allait pas tarder à tomber.",
scenic_smell
'fruit' 'fruits' 'murs' 'pourris' 0 "Une odeur suave, sucrée, qui m'aurait presque donné envie d'y goûter."
'mer' 'ocean' 'rumeur' 'saline' 0 "L'odeur de la mer était imprécise, noyée dans les autres odeurs de cet endroit. Etait-ce mon imagination qui me la faisait sentir ?",
scenic_listen
'flot' 'flots' 'eau' 'eaux' 'riviere' 'fleuve' 0 "Curieusement, cette eau ne produisait aucun bruit en coulant."
'chien' 'chiens' 0 "Les aboiements étaient lointains, mais inquiétants.",
scenic_touch
'flot' 'flots' 'eau' 'eaux' 'riviere' 'fleuve' 0 "Je glissai ma main dans l'eau. Elle était fraiche et agréable, mais quelque chose m'invitait à ne pas m'éterniser. Je la retirai à regret."
'sable' 0 "J'avais trop peur d'en voir sortir un serpent pour oser y promener ma main.",
scenic_taste
'fruit' 'fruits' 'murs' 'pourris' 0 "J'avais faim, certes, mais pas au point de manger ces fruits pourris !",
description [;
Affiche(1);Joue(2);"^Voici où nous mènent nos pas, lorsqu'on les confie à nos pensées dérivantes...^^Las d'un voyage
où seules les parts obscures de mon imagination en étaient les étapes, je me trouvai malgré moi loin de tout, sur les rives d'un fleuve
charriant des eaux sombres vers un Océan dont la rumeur saline me parvenait indistinctement.";
],
...
et voici un exemple de transcript :
Quelques remarques :
- la propriété name des objets de lieux doit ne contenir que les mots qui désignent directement le lieu (dans notre exemple, c’est « rive », donc « regarder rive » sera équivalent à juste « regarder »),
- les descriptions des éléments du décor cités dans scenic_all sont les mêmes quel que soit le verbe de « sens », sauf si une description est présente dans un autre scenic_xxx plus précis,
- il est possible de remplacer les descriptions par des appels à des fonctions (fonctions à créer en dehors de l’objet),
- Lorsqu’il y a « NULL » au lieu d’une description, c’est le message standard « Cela n’avait pas la moindre importance » (message MISC 39) qui est affiché,
- un élément « scenic » ne peut contenir que 32 éléments maximum (la limite est vite atteinte !),
- toute action sur un objet visible présent dans scenic_all, scenic_look, scenic_touch ou scenic_taste (pour listen et smell, je considère que l’objet n’est pas forcément visible, voir ci-dessous) ne provoquant pas l’affichage d’une description, provoquera l’affichage du message standard « Cela n’avait pas la moindre importance »,
- un objet que l’on peut sentir (respectivement entendre), mais non cité dans « scenic_all » ou « scenic_look » ou « scenic_touch » ou « scenic_taste », sera considéré comme absent pour toute autre action que sentir (respectivement entendre) et on aura donc un message « Nulle chose de ce nom ne se trouvait ici ». C’est le cas dans l’exemple ci dessus pour l’océan et les chiens.
- Les « 0 » ne sont là que comme séparateurs entre les mots et la description.
[b]Je propose donc l’intégration définitive de cette extension dans le projet Lieux Communs et son utilisation pour tous les objets de type « lieu ».
Mais avant cela, j’ai besoin de vos remarques, parce que c’est tout de même une modification assez intrusive (quoique en même temps simple).[/b]