Files
Patryk Gensch df6cf2f3d3
Some checks failed
docs / deploy (push) Has been cancelled
docs / build (push) Has been cancelled
Added part of docs
2026-05-19 20:51:59 +02:00

3.5 KiB

BEHAVIOUR

A procedure. Executes the code stored in the CODE field, optionally guarded by the condition named in the CONDITION field. Call-site arguments are available inside the code as $1, $2, …; see Procedure arguments for details.

Fields

CODE

STRING CODE

The body of the procedure — a code block in curly braces following the syntax described in Scripts.

Example:

BEHGOTOTITLE:CODE={BEHSETSCENE^RUN();G_SARCADESCENE^SET("EGIPTLEJ");BEHCSSTART^RUN();}

CONDITION

STRING CONDITION

The name of a CONDITION or COMPLEXCONDITION variable, used by RUNC as a gate and by RUNLOOPED as a per-iteration loop guard. If the field is not set, the methods run unconditionally.

Methods

RUN

mixed RUN([mixed param1, ..., mixed paramN])

Executes the procedure's code. The arguments are exposed inside the body as $1, $2, …. The return value is whatever @RETURN sets in the body, or NULL if @RETURN is not invoked.

Parameters

  • param1, …, paramN — procedure arguments (optional, of any type).

Returns: the value returned by the procedure or NULL.

Examples

__LOAD_SETTINGS__^RUN();
BEHSELECTOBJ^RUN(VARITER);
BEHADDITEM^RUN(SOBJECT|SPARAM0, VARITER);
BEHENTERRABBIT^RUN("ANNHILL0", -1);

RUNC

mixed RUNC([mixed param1, ..., mixed paramN])

Calls the procedure only when the condition named in CONDITION is satisfied. If CONDITION is not set, behaves like RUN. Arguments and return value are the same as in RUN.

Parameters

  • param1, …, paramN — procedure arguments.

Returns: the value returned by the procedure, or NULL (including the case when the condition was not satisfied).

Examples

BEHREMOVEMENUITEM^RUNC("CHOMIK");
BEHREMOVEMENUITEM^RUNC(VARSTRINGTEMP);
BEH_HERO_FINISHED_0^RUNC();

RUNLOOPED

void RUNLOOPED(INTEGER start, INTEGER length)
void RUNLOOPED(INTEGER start, INTEGER length, INTEGER step, [mixed extraArg1, ..., mixed extraArgN])

Runs the procedure in a for loop with the counter passed as $1. Extra arguments (from the fourth argument onwards) are forwarded to the procedure as $2, $3, … . If the CONDITION field is set, its condition is checked before every iteration — when it is not satisfied, the loop ends.

The loop is equivalent to the following pseudocode:

for (int i = start; i < start + length; i += step) {
    // call procedure with $1 = i, $2..$N = extraArgs
}

If step is omitted or passed as 0, the value 1 is used. The @BREAK operator inside the procedure terminates the RUNLOOPED loop (but not the calling procedure).

Parameters

  • start — initial counter value.
  • length — number of iterations (startVal < endVal equals startVal + length).
  • step — (optional) counter step. Defaults to 1.
  • extraArg1, …, extraArgN — (optional) extra arguments forwarded to the procedure.

Examples

BEHSHOWMENU^RUNLOOPED(0, ARRAYWARSZTATMENUPRZEDMIOTY^GETSIZE());
BEHSHOWPIONEK^RUNLOOPED(1, 9);
BEHINITZASLONAX^RUNLOOPED(0, 7, 1, "[80*$1]");

Signals

ONINIT

Fired when the procedure is initialised.

ONDONE

Fired after a procedure invocation completes.

ONSIGNAL

Fired when a signal arrives (see Events and signals).