Reference: Event Scripting > Control Flow
Conditionals
Regular:
- decomp
EVT_IF_EQ(A, B)
(equals)EVT_IF_NE(A, B)
(not equals)EVT_IF_LT(A, B)
(lower than)EVT_IF_GT(A, B)
(greater than)EVT_IF_LE(A, B)
(lower than or equal)EVT_IF_GE(A, B)
(greater than or equal)
- Star Rod
If A == B
(equals)If A != B
(not equals)If A < B
(lower than)If A > B
(greater than)If A <= B
(lower than or equal)If A >= B
(greater than or equal)
Conditional statements behave exactly as you might expect.
Flag bits related:
- decomp
EVT_IF_FLAG(A, B)
(bitwise check if bit B is set on value A)EVT_IF_NOT_FLAG(A, B)
(bitwise check if bit B is not set on value A)
- Star Rod
If ((A & B) != 0)
(bitwise check if bit B is set on value A)If ((A & B) == 0)
(bitwise check if bit B is not set on value A)
Note that the bitwise AND conditions treat the second argument as a constant. This means that they will not try to dereference script variables so you should NOT supply them with *Var[X], etc. They are intended to check whether certain flags are set for the first argument.
EVT_ELSE
(decomp) / Else
(Star Rod)
(optional) Begins the block to be executed if the above If condition is false.
EVT_END_IF
(decomp) / EndIf
(Star Rod)
Designates the end of an If..EndIf or If..Else..EndIf body.
Switch Case
EVT_SWITCH(A)
(decomp) / Switch VarA
(Star Rod)
Begins a switch statement using the given variable. Up to 8 switch statements may be nested within a single script.
EVT_SWITCH_CONST(A)
(decomp) / SwitchConst A
(Star Rod)
Begins a switch statement using the given constant.
- decomp
EVT_CASE_EQ(B)
(equals)EVT_CASE_NE(B)
(not equals)EVT_CASE_LT(B)
(lower than)EVT_CASE_GT(B)
(greater than)EVT_CASE_LE(B)
(lower than or equals)EVT_CASE_GE(B)
(greater than or equals)EVT_CASE_FLAG(B)
(bitwise AND not equals zero)EVT_CASE_RANGE(B, C)
(B <= SwitchVar <= C)
- Star Rod
Case == B
(equals)Case != B
(not equals)Case < B
(lower than)Case > B
(greater than)Case <= B
(lower than or equals)Case >= B
(greater than or equals)Case & B
(bitwise AND not equals zero)Case B to C
(B <= SwitchVar <= C)
Begins the block to be executed if the condition is true. Unlike the switch you might be used to, these cases do not support fallthrough.
EVT_CASE_OR_EQ(B)
(decomp) / CaseOR [COND] B
(Star Rod)
Several of these cases may appear in series. The clause is executed if any values are equal. These cases support fall-though, so every subsequent clause will be executed until a normal case or EndCaseGroup is encountered.
EVT_CASE_AND_EQ(B)
(decomp) / CaseAND [COND] B
(Star Rod)
Several of these cases may appear in series. All conditions must be satisfied for the clause to executed. Unused in the original code, intended use-case unknown. Potentially useful for SwitchConst blocks to check multiple variables against the constant.
EVT_END_CASE_GROUP
(decomp) / EndCaseGroup
(Star Rod)
Terminates a CaseOR
or CaseAND
fall-though/matching group.
EVT_CASE_DEFAULT
(decomp) / Default
(Star Rod)
Begins the block to be executed if no preceding conditions matched.
EVT_BREAK_SWITCH
(decomp) / BreakCase
(Star Rod)
Jumps out of a case clause to the end of the switch block.
EVT_END_SWITCH
(decomp) / EndSwitch
(Star Rod)
Ends a switch statement.
Jump and Goto Commands
EVT_JUMP(EvtSource)
(decomp) / Jump $EvtSource
(Star Rod)
Jumps to a given instruction pointer and begins execution from there. You can jump to a different EVT source and labels etc. will be loaded as expected. The timescale for the current thread is also reset to the global default.
EVT_LABEL(Label_ID)
(decomp) / Label Label_ID
(Star Rod)
Marks this point in the script as a EVT_GOTO target. Range: 0 <= Label_ID <= 0x16
EVT_GOTO(Label_ID)
(decomp) / Goto Label_ID
(Star Rod)
Moves execution to the given label.
Wait Commands
EVT_WAIT(A)
(decomp) / Wait A
(Star Rod)
Blocks the current thread for the given number of frames.
EVT_WAIT_SECS(A)
(decomp)
Blocks the current thread for the given number of seconds. Unused.
Loops
EVT_LOOP(A)
(decomp) / Loop A
(Star Rod)
Repeat the following commands a certain number of times. To create an infinite loop, use A = 0. Star Rod assumes the iteration count is zero if no argument is provided.
Note: passing a variable will decrement the variable after each iteration until it equals zero. If the variable is zero before the loop begins, the loop will be infinite; make sure it breaks or blocks to avoid a freeze.
Up to 8 loops may be nested within a single script.
EVT_BREAK_LOOP
(decomp) / BreakLoop
(Star Rod)
Immediately jump out of a loop and continue execution after the next EndLoop command.
EVT_END_LOOP
(decomp) / EndLoop
(Star Rod)
Designates the end of a loop body.