====== The variables ======
First of all, a variable is an element of the game whose value can be changed. Take for example the number of lives in an RPG: the variable could have the name "life_points" and its value 5, or life_points = 5.
You can count wounds, a number of rounds, a number of keys, etc. Anything is possible.
Now here's how to include and use a variable in the bot:
[...]
*********************
2 First_jet
You roll a 6 die. If you roll 5 or 6, go to room (3), otherwise (1).
of_six|variable|%=1:6|You get v_result_v|A 6-sided die.
1|v_of_six_v.in.1-4|Your result is too good to start again let's see! Go and get your medal (3)! You go back to the beginning to start again...
3|v_of_six_v.in.5-6|Your result is too bad to continue, go back to the beginning (1)!|Congratulations, you will receive a medal for that!
*********************
[...]
Variables are declared in the same way as objects, on the same line in a room. Ignore for now the lines in black.
Let's look at each part in detail:
* Variable name: with no spaces or accents.
* "variable" is the **keyword telling the bot that this is a variable** (this is similar to how "invisible" works)
* Assign or modify the value of the variable:
* "**=X**": The variable has the value X
* "**%=X:Y**" : The variable has a random value between X and Y (in our example, des_six will have a value between 1 and 6, like a classic dice)
* "**%+X:Y**": A random number between X and Y is added to the variable.
* "**%-X:Y**": A random number between X and Y is subtracted from the variable.
* "**+X**": Adds X to the current value of the variable.
* "**-X**": Subtracts X from the current value of the variable (it can be negative)
* Sentence to be displayed. You can display nothing (you then put "null"), and you can display the value of a variable in the sentence by surrounding it with "v_". For example "v_result_v" will display the value of the random.
* "**v_result_v**", "**v_value_v**", "**v_response_v**" are variables pre-defined by the bot.
* "**v_result_v**": Is equal to the result of the last **random** used (for example "**%=1.6**")
* "**v_value_v**": Equals the last "code" or "bet" indicated in a command "**!advance [box] [code]**".
* "**v_response_v**": Is used with the command "**j!repondre**"
* Variable description (the value of a variable can be included with "v_variable_name")
===== Textual variables: =====
Textual variables have a word or phrase as their value. They are declared/modified on the same line as classic variables, objects, states, etc., in the form :
variable_name|variable_t|Value|Phrase displayed when modified by player|Description
* Variable name: without spaces or accents.
* "variable_t" is the **keyword** telling the bot that this is a **textual variable** (this is similar to how "**variable**" works)
* Assigning or modifying the value of the variable (a word or text)
* This sentence will only be displayed when the player changes the value via "**I!rep value**"
* Description displayed if the player examines the variable
To display this variable in a text, you need to surround it with "**t_**" and "**_t**". For example "Nice to meet you **t_heros_name_t**"
It can be modified by the player using the command "**j!answer Value**" (the Value can be a word, or a sentence if it is surrounded by inverted commas). This command can only be used if the variable is declared in this room.
This may allow you to request a character name for example.
To make a textual variable non-modifiable, you just have to declare it, then automatically go to a next room with an event 997 for example.
The scenario [[http://cyril-fiesta.fr/jdr-bot/scripts/train.txt|train.txt]] is a good example (several numerical and textual variables, including requesting and using the character's name).
**Find us on the [[https://discord.gg/Z63DtVV|discord Make&Play]]**