if (roll option): Difference between revisions

From RPTools Wiki
Jump to navigation Jump to search
m (Example with conditionals and error with too many parenthesis)
m (Added ! (Not) as a boolean operator as no documentation on this.)
Line 32: Line 32:
* {{code|true}}
* {{code|true}}
* {{code|false}}
* {{code|false}}
* {{code|!}} - Not
It is important to note that the ''Equal to'' condition operator must be two equal signs({{code|{{=}}{{=}}}}). If you are checking for a text string, place quotes around the text.
It is important to note that the ''Equal to'' condition operator must be two equal signs({{code|{{=}}{{=}}}}). If you are checking for a text string, place quotes around the text.


Line 48: Line 49:
<source lang="mtmacro" line>
<source lang="mtmacro" line>
[h,if((val > 12 && val < 24) || val == 5): val=1 ; val=0]
[h,if((val > 12 && val < 24) || val == 5): val=1 ; val=0]
</source>
These examples perform the same function. If val is not a number, make val equal 0. 
<source lang="mtmacro" line>
[h, if (! isNumber(val)): val = 0)]
</source><source lang="mtmacro" line>
[h, if (isNumber(val) == 0): val = 0)]
</source><source lang="mtmacro" line>
[h, if (isNumber(val) == false): val = 0)]
</source>
</source>


Line 57: Line 67:


|also=
|also=
{{func|if}},  
{{func|if}},
{{func|isNumber}}, 
{{roll|code}},
{{roll|code}},
[[Introduction to Macro Branching]]
[[Introduction to Macro Branching]]
}}
}}
[[Category:Branching Roll Option]]
[[Category:Branching Roll Option]]

Revision as of 16:33, 23 November 2011

[if():] Roll Option

* Introduced in version 1.3b46

Branches the flow of the roll as determined by the condition.

Usage

[if(condition): true_body]
[if(condition): true_body; false_body]

Parameters

  • condition - The condition/s to check to determine which roll(true_body or false_body) is executed, if any. The condition/s can only contain one level of nested parenthesis.
  • true_body - The roll that is executed if the condition evaluates to true(1). To use complex rolls in the true_body, you must use the [code():] roll option in conjunction with this roll option.
  • false_body - The roll that is executed if the condition evaluates to false(0). If no false_body is given, there is no output if the condition evaluates to false(0). To use complex rolls in the false_body, you must use the [code():] roll option in conjunction with this roll option.

Operators
Operators are used to compare two variables, strings, literal numbers, expressions, or function outputs within a condition.

Conditional Operators:

  • > - Greater than
  • < - Less than
  • >= - Greater than or equal to
  • <= - Less than or equal to
  • == - Equal to
  • != or ne - Not equal

Logical Operators:

  • && - And
  • || - Or

Boolean Operators:

  • true
  • false
  • ! - Not

It is important to note that the Equal to condition operator must be two equal signs(==). If you are checking for a text string, place quotes around the text.

Note that currently

[r,if(val == something),CODE:{Print something}]

will produce extraneous single quotes in the output when the condition is false. The workaround for this is to add an empty block for the false side:

[r,if(val == something),CODE:{Print something};{}]

Example

Sets the variable newVal to 12*12 if the variable val equals 12.

[h:val=12]
[h,if(val == 12): newVal=12*12]
New Value = [r: newVal]

Returns New Value = 144

Example with logical operators:

[h,if((val > 12 && val < 24) || val == 5): val=1 ; val=0]

These examples perform the same function. If val is not a number, make val equal 0.

[h, if (! isNumber(val)): val = 0)]
[h, if (isNumber(val) == 0): val = 0)]
[h, if (isNumber(val) == false): val = 0)]

The following will generate an error:

[h,if(getName(getSelected()) == "Giant Rat"): val=1]  --- ERROR, too many parenthesis on condition!
[h,if(getName() == "Giant Rat")): val=1] ---  This is OK.

See Also

if(), isNumber(), [code():], Introduction to Macro Branching