Outils pour utilisateurs

Outils du site


en:yaml:objets

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
en:yaml:objets [2026/10/20 22:11] – Mod?les sur_place, port?e des encadr?s et objets 4.17 cyrilfiestaen:yaml:objets [2026/11/04 21:34] (Version actuelle) – Documentation 4.17 : objets, evenements et mise en page verifies cyrilfiesta
Ligne 3: Ligne 3:
 ====== Objects and Inventory (YAML) ====== ====== Objects and Inventory (YAML) ======
  
-Objects declared in ''objects:'' are added when the player enters the room. They use the native bot commands: ''take'', ''examine'' and ''drop''.+Declarations in ''objects:'' define items and their initial locations in the room. They use the native bot commands: ''take'', ''inspect'' and ''drop''.
  
 Important: YAML objects do not support ''if:'' or ''visible-if:'' directly. To make an object conditional, use another room, an event, a choice, a tag, or an object with ''remove: true''. Important: YAML objects do not support ''if:'' or ''visible-if:'' directly. To make an object conditional, use another room, an event, a choice, a tag, or an object with ''remove: true''.
Ligne 38: Ligne 38:
  
 ^ Field ^ Effect ^ ^ Field ^ Effect ^
-| ''name:'' | Object identifier. Required. |+| ''name:'' | Object identifier. Optional for empty furniture, required for an item or removal. |
 | ''display_name:'' | Player-facing name, without changing the identifier. | | ''display_name:'' | Player-facing name, without changing the identifier. |
-| ''secret: true'' | Scenery accessible only through its furniture. |+| ''empty-furniture: true'' | Scenery accessible only through its furniture. |
 | ''location:'' | Furniture or place where the object is located. Default: ''invisible''. | | ''location:'' | Furniture or place where the object is located. Default: ''invisible''. |
 | ''description:'' | Text shown when the player examines the object. | | ''description:'' | Text shown when the player examines the object. |
 | ''furniture_description:'' | Text shown when the player examines the furniture/location. If missing, the engine falls back to ''description:''. | | ''furniture_description:'' | Text shown when the player examines the furniture/location. If missing, the engine falls back to ''description:''. |
 | ''pickup_text:'' | Text shown when the object is taken. | | ''pickup_text:'' | Text shown when the object is taken. |
 +| ''absent: true'' | Declares an initially empty slot that can be activated. |
 | ''remove: true'' | Removes this object when entering the room, equivalent to the legacy ''-name'' prefix. | | ''remove: true'' | Removes this object when entering the room, equivalent to the legacy ''-name'' prefix. |
 | ''remove_text:'' | Text used on removal when ''remove: true''. | | ''remove_text:'' | Text used on removal when ''remove: true''. |
Ligne 50: Ligne 51:
 | ''pickup_reaction:'' | Button shown to take the object. | | ''pickup_reaction:'' | Button shown to take the object. |
 | ''object_reaction:'' | Button shown to examine the object. | | ''object_reaction:'' | Button shown to examine the object. |
-| ''inventory-limit:'' | How many copies the player may hold. Absent: one copy. ''0'': unlimited. |+| ''inventory-limit:'' | How many copies the player may hold. Without a retained limit: one copy. ''0'': unlimited. |
 | ''inventory-limit-message:'' | Optional text shown when the limit is reached. | | ''inventory-limit-message:'' | Optional text shown when the limit is reached. |
 | ''throw-missing-message:'' | Optional text shown when the player throws an object they do not carry. | | ''throw-missing-message:'' | Optional text shown when the player throws an object they do not carry. |
Ligne 78: Ligne 79:
 ===== How many copies can be held ===== ===== How many copies can be held =====
  
-''inventory-limit:'' sets the maximum. Without it, the player holds **one** copy. ''0'' means unlimited.+''inventory-limit:'' sets the maximum. Without a limit retained from a previous declaration, the player holds **one** copy. ''0'' means unlimited.
  
 <code yaml> <code yaml>
Ligne 194: Ligne 195:
 The effect changes the display name without changing the identifier or quantities. Saves retain it. Setting ''value: ""'' restores the identifier ''workshop_key'', even if the original declaration supplied another display name. This effect is not allowed inside loop bodies. In the editor, use **Rename an item**, with the object and its new display name. French syntax: ''nom_affiche'' and ''valeur''. The effect changes the display name without changing the identifier or quantities. Saves retain it. Setting ''value: ""'' restores the identifier ''workshop_key'', even if the original declaration supplied another display name. This effect is not allowed inside loop bodies. In the editor, use **Rename an item**, with the object and its new display name. French syntax: ''nom_affiche'' and ''valeur''.
  
-===== Secret scenery and empty furniture =====+===== Scenery and empty furniture =====
  
-''secret: true'' reserves an entry for its furniture description. The player can examine the furniture, but cannot take or examine the secret object itself. Its object description, display name, pickup text and object/pickup buttons are ignored; use ''furniture_description'' and optionally ''furniture_reaction''.+''empty-furniture: true'' describes furniture without an item to take. Players can inspect the furniture, but cannot take or inspect this scenery as an item. Its ''name:'' is optional: the engine then creates an internal identity. Use ''furniture_description:'' and, if needed, ''furniture_reaction:''. Pickup, item inspection, display name and inventory limit fields provide no item interaction for this scenery.
  
 <code yaml> <code yaml>
Ligne 206: Ligne 207:
     description: A small iron key.     description: A small iron key.
   - name: empty_table   - name: empty_table
-    secret: true+    empty-furniture: true
     location: table     location: table
     furniture_description: The table is empty.     furniture_description: The table is empty.
   - name: statue_scenery   - name: statue_scenery
-    secret: true+    empty-furniture: true
     location: statue     location: statue
     furniture_description: An old stone statue.     furniture_description: An old stone statue.
Ligne 218: Ligne 219:
 Place an empty-furniture entry **after** the ordinary objects on that furniture. The first object still present supplies its description; after taking the key, ''examine table'' shows "The table is empty." The statue illustrates permanent scenery. Place an empty-furniture entry **after** the ordinary objects on that furniture. The first object still present supplies its description; after taking the key, ''examine table'' shows "The table is empty." The statue illustrates permanent scenery.
  
-''secret'' differs from ''location: invisible'', which retains the object's historical uses. Do not combine ''secret: true'' and ''remove: true'': removal takes priority and the linter reports that secret is ignored. The editor hides unused secret fields while preserving their values, and allows contradictory imports to be corrected. French syntax: ''secret: true'', ''endroit'', ''desc_meuble'' and ''reaction_meuble''.+''location: invisible'' keeps the historical uses of a hidden item; it is not empty furniture. With ''remove: true'', removal takes priority: an item name is required and the linter warns that ''empty-furniture'' is ignored. The editor preserves hidden field values and lets you correct contradictory settings. The linter rejects the ''secret'' key on objects; secret achievements keep their own setting. French syntax: ''meuble-vide: true'', ''endroit'', ''desc_meuble'' and ''reaction_meuble''. 
 + 
 +===== Reversible items and commands (4.17) ===== 
 + 
 +Taking an item deactivates one declared instance in its furniture. ''put'' and ''place'' return it to an available declaration of the same item. These forms are equivalent: ''put piece in coffre'', ''place piece on coffre'' and ''put piece coffre''. Without furniture, ''put piece'' finds an available slot. A custom action with the same name takes priority. A refused deposit removes nothing from the inventory. 
 + 
 +Different items can share furniture. Inspecting furniture uses the first declaration with an item still present. Items are taken in declaration order; deposits fill free slots in reverse order. 
 + 
 +<code yaml> 
 +title: 'Wiki 4.17: stacks' 
 +vars: 
 +  capacite: 2 
 +rooms: 
 +- id: atelier 
 +  text: A chest and a table. 
 +  objects: 
 +  - name: piece 
 +    location: coffre 
 +    description: First coin. 
 +    inventory_limit: v_capacite_v 
 +  - name: piece 
 +    location: coffre 
 +    description: Second coin. 
 +  - name: cle 
 +    location: coffre 
 +    description: A key. 
 +  - empty-furniture: true 
 +    location: coffre 
 +    furniture_description: The chest is empty. 
 +  choices: 
 +  - command: rester 
 +    button: Stay 
 +    to: atelier 
 +</code> 
 + 
 +Here, ''piece'' can be taken twice. After putting one back in ''coffre'', the second declaration becomes present first. ''inspect_from coffre'' inspects the first item currently in that furniture; ''take_from coffre'' takes it. These commands target the slot, even if the same identifier exists elsewhere. French: ''examiner_objet_dans coffre'' and ''prendre_dans coffre''. 
 + 
 +===== Absent declarations, transfers and activation ===== 
 + 
 +''absent: true'' reserves an initially empty slot. It can be filled after taking, transferring or activating an item. 
 + 
 +<code yaml> 
 +title: 'Wiki 4.17: activation' 
 +rooms: 
 +- id: atelier 
 +  text: A table, a chest and a box. 
 +  objects: 
 +  - name: cle 
 +    location: table 
 +  - name: cle 
 +    location: coffre 
 +    absent: true 
 +  - name: bille 
 +    location: boite 
 +    absent: true 
 +  actions: 
 +  - verb: ranger 
 +    target: all 
 +    button: Store the key 
 +    do: 
 +      object: cle 
 +      to: coffre 
 +  - verb: apparition 
 +    target: all 
 +    button: Reveal the marble 
 +    do: 
 +      object: bille 
 +      activate: boite 
 +  choices: 
 +  - command: rester 
 +    button: Stay 
 +    to: atelier 
 +</code> 
 + 
 +After ''take cle'', ''{object: cle, to: coffre}'' transfers one carried unit into the chest. ''{object: bille, activate: boite}'' activates an absent declaration without consuming inventory. A ''room:'' field can target another room. Test presence with ''if: {object: bille, in: boite, quantity: 1, operator: ">="}''. 
 + 
 +===== Inventory limit selection ===== 
 + 
 +The first active declaration specifying a limit is used in the current room. If none specifies it, the last encountered limit is retained; otherwise the default is 1. A reference such as ''v_capacite_v'' is read again when adding an item. ''0'' means unlimited. Lowering the limit does not remove already carried units.
  
en/yaml/objets.1792527111.txt.gz · Dernière modification : de cyrilfiesta