**Language / Langue :** **FR** | [[en:yaml:objets|EN]]
====== Objets et inventaire (YAML) ======
Les objets déclarés dans ''objets:'' sont ajoutés à la salle quand le joueur y entre. Ils utilisent les commandes natives du bot : ''prendre'', ''examiner'' et ''jeter''.
Important : les objets YAML ne possèdent pas de champ ''si:'' ni ''visible-si:''. Pour rendre un objet conditionnel, utilisez plutôt un événement, un choix, un tag, une salle différente, ou un objet avec ''retirer: true''.
===== Exemple complet =====
- id: bibliotheque
texte: |
Une table encombrée occupe la pièce.
Un vieux coffre repose contre le mur.
objets:
- nom: grimoire
endroit: table
desc_meuble: "Une vieille table en bois. Un grimoire poussiéreux y est posé."
description: "Un vieux grimoire aux pages jaunies."
msg_ramassage: "Vous prenez le grimoire sur la table."
reaction_meuble: "Examiner la table"
reaction_prise: "Prendre le grimoire"
reaction_objet: "Examiner le grimoire"
- nom: cle
endroit: invisible
description: "Une petite clé en argent."
msg_ramassage: "Vous ramassez la clé."
- nom: vieillepotion
retirer: true
endroit: invisible
msg_retrait: "La vieille potion disparaît de votre sac."
===== Champs disponibles =====
^ Champ ^ Effet ^
| ''nom:'' | Identifiant de l'objet. Obligatoire. |
| ''endroit:'' | Meuble ou lieu où se trouve l'objet. Défaut : ''invisible''. |
| ''description:'' | Texte affiché quand le joueur examine l'objet. |
| ''desc_meuble:'' | Texte affiché quand le joueur examine le meuble/l'endroit. Si absent, le moteur réutilise ''description:''. |
| ''msg_ramassage:'' | Texte affiché quand l'objet est pris. |
| ''retirer: true'' | Retire cet objet à l'entrée dans la salle, équivalent au préfixe ''-nom'' de l'ancienne syntaxe. |
| ''msg_retrait:'' | Texte utilisé lors du retrait si ''retirer: true''. |
| ''reaction_meuble:'' | Bouton affiché pour examiner le meuble. |
| ''reaction_prise:'' | Bouton affiché pour prendre l'objet. |
| ''reaction_objet:'' | Bouton affiché pour examiner l'objet. |
| ''limite-inventaire:'' | Nombre d'exemplaires que le joueur peut porter. Absente : un seul. ''0'' : illimité. |
| ''msg_limite-inventaire:'' | Texte facultatif affiché quand la limite est atteinte. |
| ''msg_jeter-absent:'' | Texte facultatif affiché quand le joueur jette un objet qu'il ne porte pas. |
===== Meuble, objet et inventaire =====
''endroit:'' définit le meuble visible. Exemple : avec ''endroit: coffre'', le joueur peut examiner ''coffre''. ''desc_meuble:'' décrit alors le coffre, tandis que ''description:'' décrit l'objet lui-même.
''endroit: invisible'' signifie que l'objet existe dans la salle mais n'est pas listé comme objet visible à prendre directement. C'est utile pour des états internes ou des objets manipulés par événement.
===== Plusieurs exemplaires d'un même objet =====
Déclarer plusieurs fois le même ''nom:'' représente désormais plusieurs **exemplaires réels**, y compris dans des meubles ou des salles différents. En prendre un ne masque plus les autres, qui gardent leur propre description dans le décor.
objets:
- nom: piece
endroit: coffre
description: "Une pièce d'argent usée."
- nom: piece
endroit: bourse
description: "Une pièce encore tiède."
L'inventaire les regroupe sous la forme ''piece × 2''. Jeter, utiliser ou retirer un objet ne consomme qu'une unité, et les conditions historiques ''objet'' / ''-objet'' conservent leur sens.
===== Combien d'exemplaires peut-on porter =====
''limite-inventaire:'' fixe le maximum. Sans elle, le joueur porte **un** exemplaire. ''0'' signifie illimité.
objets:
- nom: torche
endroit: mur
limite-inventaire: 3
msg_limite-inventaire: "Vous portez déjà trois torches."
Dépasser la limite est une réponse narrative normale, pas une erreur : le moteur indique combien d'exemplaires sont déjà portés et quelle est la limite, puis laisse les commandes disponibles. Les deux messages facultatifs acceptent le traitement de texte habituel, dont ''v_variable_v'' et ''t_variable_t''.
===== Tester un objet en condition =====
Dans les champs ''si:'', un objet se teste avec son nom directement :
si: "cle" # le joueur possède l'objet cle
si: "-cle" # le joueur ne possède pas l'objet cle
Les conditions d'objet utilisent le nom brut
===== Conditions de quantité =====
Une condition structurée compare le nombre d'exemplaires possédés.
evenements:
- si:
objet: piece
quantite: 3
operateur: ">="
texte: "Vous avez de quoi payer le passeur."
L'éditeur propose ce réglage dans son constructeur de conditions.
===== Ajouter ou retirer un objet via faire: =====
Forme recommandée :
evenements:
- si: ~
faire:
- objet: cle_rouillee
vers: inventaire
description: "Une vieille clé rouillée."
- objet: fausse_cle
vers: inventaire
retirer: true
texte: "Votre trousseau change."
La forme historique reste acceptée :
faire:
- "cle_rouillee&&inventaire&&Une vieille clé rouillée."
- "-fausse_cle&&inventaire&&null"
===== Médias dans les descriptions =====
''description:'' et ''desc_meuble:'' acceptent les mêmes médias que le texte narratif : images ''%%[[url]]%%'', sons ''%%<>%%'' et vidéos ''%%((url))%%''.
objets:
- nom: carte
endroit: table
description: "Une carte du royaume.\n[[https://exemple.com/images/carte.png]]"
msg_ramassage: "Vous prenez la carte."
Cliquer sur un objet dans l'inventaire déclenche automatiquement ''examiner ''.
===== Voir aussi =====
* [[fr:yaml:conditions|Conditions]]
* [[fr:yaml:actions|Actions personnalisées]]
* [[fr:yaml:medias|Sons, images et vidéos]]