This manual explains all the brf-commands, how they work, and how you can use them to create random effects to your own BVE-route, whether it is of RW- or CSV-base.
BRR only reads the brf-route you have written (input file), and creates the processed route in a temporary file (output file), which it then passes to BVE. BRR starts reading the input file from the beginning, searching for BRF-commands. When it finds one, it does something, depending on the command of course. There are two types of commands: text-returning commands, and controlling commands.
When BRR finds a text-returning command, the command returns some kind of text to BRR. BRR then writes this text to the output file, or passes it as a parameter for another command. Controlling commands don't return any text to BRR, but e.g. control how BRR proceeds in reading the input file.
All commands start with hash character "#" and have brackets at the end, even if they don't use any parameters. You can either use "{" and "}" as the brackets, or "<" and ">". For html-technical reasons, "{}" are used in this document.
#notes{} and #endnotes{}BRR reads the route description from between these two commands. Only the first #notes block is shown as the description. When BRR finds a #notes block, it excludes it from the output file. This way you can add comment out some parts of the route code.
#if{[boolean]} , #elseif{[boolean]} , #else{} and #endif{}You can use these commands to make BRR skip or choose between some parts of the file. If [boolean] is "1", it means that it's true. "0" means false. To make #if structures useful, you should use a text-returning command (which returns either "1" or "0") as the [boolean]. Each #if structure must have #if and #endif commands, #elseif and #else are optional.
Example:
#if{#chance{30}}
There's a 30% chance that this text will be processed by BRR.
Everything else before #endif will be skipped.
#elseif{#train{cl313}}
If the [boolean] in the #if wasn't true, then BRR checks if the selected
train is "cl313". If it is, this text will be processed.
#else{}
If the train wasn't "cl313", this text will be processed.
#endif{}
#setvalue{[name],[number]}Stores [number] to a value called [name]. You can use up to 64 values with different names. [name] can be up to 31 characters long.
#setword{[name],[text]}Stores [text] to a word called [name]. You can use up to 64 words with different names. [name] can be up to 31 characters long.
#definerndset{[name],[text1],[text2],...,}Stores [text1], [text2] and so on to a randomset called [name]. You can store 1 - 32 pieces of text. Each piece of text can be up to 15 characters long. [name] can be up to 31 characters long.
#repeat{} , #endrepeat{} and #breakrepeat{}BRR repeats processing a part of the file, defined with #repeat and #endrepeat commands. #breakrepeat stops this repeat.
Example (adds trees until the repeat stops, 10% chance on every add to stop):
#repeat{}
(Add tree)
#if{#chance{10}}
#breakrepeat{}
#endif{}
#endrepeat{}
#definemacro{[name]} and #endmacro{}A macro called [name] is defined between #definemacro and #endmacro commands.
Up to 8191 characters long text can be stored.
#chance{[percent]}There's a [percent] chance, that "1" is returned. If not, "0" is returned instead. [percent] can be 0 - 100.
#rnd{[number1],[number2]}Returns a random (integer) number between [number1] and [number2]. Both [numbers] must be 0 or greater.
#rnd25{[number1],[number2]}Same as #rnd, but the number is divisible by 25, like 0, 25, 50, 75, 100...
#train{[train]}If the selected train is [train] (the folder name), "1" is returned. "0" is returned otherwise.
#value{[name]}Returns the number that is stored in the value called [name].
#word{[name]}Returns the text that is stored in the word called [name].
#dv{[name],[number]}Returns the sum of [number] and the value stored in [name].
#time{[hours],[minutes],[seconds]}Returns a clock time, that is understood by BVE.
Example:
#time{14,30,120}
Returns "14.3200", note how 120 seconds is converted to 2 minutes.
#rndset{[name]}Returns a randomly-selected piece of text from those stored in the randomset called [name].
#add{[number1],[number2]}Returns the sum of [number1] and [number2].
#sub{[number1],[number2]}Returns the remainder of [number1] and [number2].
#mul{[number1],[number2]}Returns the product of [number1] and [number2].
#div{[number1],[number2]}Returns the quotient of [number1] and [number2].
#equal{[number1],[number2]}Returns "1", if [number1] is equal to [number2], else returns "0".
#not{[number1],[number2]}Returns "1", if [number1] isn't equal to [number2], else returns "0".
#greater{[number1],[number2]}Returns "1", if [number1] is greater than [number2], else returns "0".
#less{[number1],[number2]}Returns "1", if [number1] is less than [number2], else returns "0".
#macro{[name]}Returns the text stored to macro [name].
#include{[name]}Same as #macro, but the text is retrieved from file called [name]. [name] can also contain folder names, like myfolder\myfile.txt.
#choice{[question]}Asks the user a [question]. If user responds "Yes", command returns "1", otherwise "0".