Conditional Structures
Conditional structures allow scripts to perform actions when specific conditions are met. These conditions can be checked with the relational operators summarized here:
Operator | Description | Example |
---|---|---|
| Equal to |
|
| Not equal to |
|
| Greater than |
|
| Less than |
|
| Greater than or equal to |
|
| Less than or equal to |
|
Conditional Tests
if — then
The basic if
—then
statement executes a block of code if a specific condition is true. For instance:
Note that Lua considers the “absence of true” as “false.” This means that both false
and nil
will evaluate as non-true:
elseif — then
Adding an elseif
—then
statement to an if
—then
structure lets you check if alternative conditions are true, assuming the preceding conditions are false. Lua will go from top to bottom, stop at the first true condition it encounters, and execute its block of code.
else
Finishing a conditional structure with else
lets you execute a block of code if none of its preceding conditions evaluate to true. In the following example, both 10 > 100
and 10 > 25
are false, so those blocks of code will not execute but the else
block will.
Conditional Loops
Conditional loops let you execute specific code while a condition is true, or repeat code until a condition becomes true.
while — do
The while
—do
loop evaluates if a condition is true or false. If false, the loop ends and the code following it continues to execute. If true, the code between do
and end
executes and the true/false condition is reevaluated afterward.
repeat — until
A repeat
—until
loop repeats until a certain condition is met. Note that the code between repeat
and until
is executed at least once because the conditional test is performed afterward.
Using Logical Operators
Multi-Condition Tests
To avoid repetitive conditional tests in a sequence, use the logical operators and
and or
to perform multi-condition tests. For example, the following structure tests that two conditions are true:
Logical operators can also be combined to perform more complex logical tests. For instance, the following code checks whether two conditions are true or a third condition is true:
Non-Truth Tests
While the relational operators can be “flipped” to test for non-truth conditions, the logical operator not
is useful for testing the “absence of true” (either false
or nil
).
The not
operator can also test for the opposite of an entire multi-condition statement. For example, the following code confirms that there are not more than 25 goblins nor is the player’s experience level less than 5.
Last updated