Table des matières
Language / Langue : FR | EN
Variables (YAML)
Declaring variables
Numeric variables belong in vars::
vars: score: 0 hp: value: 10 description: "Health points"
Text variables belong in text_vars::
text_vars: hero_name: value: "Adventurer" description: "Hero name"
The description is shown when the player examines the variable or when it is attached to a permanent option. Use v_score_v for a numeric value inside text and t_hero_name_t for a text value.
Scope: regular, persistent or online
The suffix in the variable name determines its scope. All three kinds still belong in vars: or text_vars:.
| Name | Scope | Storage |
|---|---|---|
score | Current game | Removed with that game |
record_p | Local persistent | Kept on this device between games |
record_o | Online | Shared by players loading the same scenario source |
id: my-scenario vars: score: 0 best_score_p: 0 world_record_o: 0 text_vars: last_ending_p: "none" shared_message_o: "Welcome"
online_vars: remains supported for older scenarios, but it is now legacy syntax. New _o variables should be declared in vars: or text_vars:.
Persistent _p variables
A _p variable belongs to the scenario id:, not to a game save. It survives a victory, defeat, give-up and new game. It is useful for records, collections, previously seen endings and counters shared by several playthroughs.
A root id: is required as soon as a scenario uses a _p variable. Keep it stable after publishing. Two translations with the same ID share their persistent variables.
An existing value is loaded when the scenario starts. The first fixed assignment in init: does not overwrite it; a relative operation such as +1 is still applied to the stored value.
Reset clears the current scenario's _p variables and achievements, then starts a new game.
Online _o variables
For a scenario source authorised by the server, an _o variable is shared between players. It belongs to the scenario URL or path, not to its id:. Outside these sources, it stays local to the game.
vars: high_score_o: value: 0 description: "Shared high score"
nb_parties_o is created automatically and increases whenever a game starts. In a standalone export, _o variables become local to that standalone and do not contact a shared server.
Variables in init:
init: can declare a variable when entering a room:
init: - var: die value: "%=1:6" description: "Die roll" - text_var: state value: "resting"
A relative operation on an unknown name starts from 0. Giving the variable an explicit initial value first is usually clearer.
Free-form answers
In a room's init:, reply: true lets the player enter a value:
init: - text_var: hero_name value: "Adventurer" reply: true
Room names, aliases and known actions still take priority. A numeric answer is stored without a technical message; use an event to show the feedback intended for the player.
Value modifiers
| Syntax | Effect |
|---|---|
0 | Set the value to 0 |
“+1” | Add 1 |
“-3” | Subtract 3 |
“%=1:6” | Draw a number between 1 and 6 |
“%+1:3” | Add a number drawn between 1 and 3 |
“%=v_min_v:v_max_v” | Use variables as bounds |
System variables and display
| Variable | Value |
|---|---|
v_resultat_v | Result of the last %=X:Y draw |
v_valeur_v | Last code entered through go room code |
v_reponse_v | Value entered with reply |
v_timer_name_v | Seconds left on the timer_name timer |
The system names above also work in English scenarios. For a declared turn variable, v_turn_v|pad2 displays 7 as 07.
A common trap
Event text is prepared before the action from that same event. To announce a new record, display the source variable:
events: - if: "v_score_v > v_record_o_v" do: "record_o.=.v_score_v" text: "New record: v_score_v"
Paths and spaced effects (4.17)
Lists and collections add paths such as hero.health, bag[0] or party[v_position_v].health. The markers remain v_…_v and t_…_t.
In do:, health + 10 is equivalent to health.+.10. Operators: = + - * / // ** %% and random %. / rounds ties to even, truncates towards zero and %% is modulo. Division by zero is an error.
<code yaml>
do:
- hero.health + 10
- score + %1:6
- score + %2:70,5:30
</code>
The last example draws 2 with weight 70 or 5 with weight 30. result holds the drawn number before the operator is applied. Older forms remain accepted.
init: also accepts var: hero.health or text_var: hero.name, with modifiable: true or reply: true. These input paths must cross collections only and target an existing simple property; list indices are excluded.
===== Describing structured data =====
Lists, collections, properties and elements can have descriptions separate from their values, in data_info: (French: infos_donnees:). examine hero.health shows the value and its description. Roots can also be bound to tags to reset their whole contents. See Structured data descriptions and tags.
In the editor, online variables remain grouped with numbers or text according to their type. Declare an _o number in vars and an _o text variable in text_vars. Historical vars_online'' declarations remain readable on import.
