# INTEGER Signed integer number. ## Fields ### TOINI ``` BOOL TOINI ``` Controls whether the field's value is persisted to an INI file and restored on the next run. ### VALUE ``` INTEGER VALUE ``` The current value of the variable. ## Methods ### ABS ``` INTEGER ABS(INTEGER value) ``` Stores the absolute value of the argument in the variable and returns it. **Parameters** - `value` — the number whose absolute value will be stored. **Returns**: the new value of the variable. **Examples** ``` VARINT0^ABS(VARINT0); I_7^ABS(ARRFLDCLONES^GET(I_FIELD_INDEX)); ``` ### ADD ``` INTEGER ADD(INTEGER addend) ``` Adds the argument to the variable's current value, stores the result, and returns it. **Parameters** - `addend` — the value to add. **Returns**: the new value of the variable. **Examples** ``` VARIRADIUS^ADD([VARIMENUVISIBLE*16]); VARIKRETSTARTX^ADD(50); VARITEMP0^ADD(VARIRADIUS); ``` ### AND ``` INTEGER AND(INTEGER value) ``` Performs a bitwise AND between the variable's current value and the argument, stores the result, and returns it. **Parameters** - `value` — the value to combine with. **Returns**: the new value of the variable. **Examples** ``` VARITEMP2^AND(1); VARITEMP1^AND(ARRMASK^GET(ARRENEMYMASK^GET(VARENEMY))); ``` ### CLAMP ``` INTEGER CLAMP(INTEGER rangeMin, INTEGER rangeMax) ``` Clamps the variable's current value to the inclusive range `[rangeMin, rangeMax]`. Values outside the range are pinned to its bounds. **Parameters** - `rangeMin` — lower bound of the range (inclusive). - `rangeMax` — upper bound of the range (inclusive). **Returns**: the new value of the variable. **Examples** ``` VARIMENUX^CLAMP(92, 708); I1^CLAMP(0, IMIECZMAX); IFRAMER^CLAMP(IFRAMECENTER, IFRAMEMAX); ``` ### CLEAR ``` INTEGER CLEAR() ``` Sets the variable's value to `0` and returns it. **Returns**: `0`. ### DEC ``` INTEGER DEC() ``` Decrements the variable's value by `1`. **Returns**: the new value of the variable. **Examples** ``` VARITIMETOEXIT^DEC(); VARIWAIT^DEC(); ``` ### DIV ``` INTEGER DIV(INTEGER divisor) ``` Divides the variable's current value (integer division) by the argument, stores the result, and returns it. Division by zero leaves the variable unchanged. **Parameters** - `divisor` — the divisor. **Returns**: the new value of the variable (or the unchanged value if `divisor` was `0`). **Examples** ``` VARITEMP0^DIV(2); VARMOUSEDX^DIV(VARMOUSESPEED); ``` ### GET ``` INTEGER GET() ``` Returns the current value of the variable. **Returns**: the current value of the `VALUE` field. ### INC ``` INTEGER INC() ``` Increments the variable's value by `1`. **Returns**: the new value of the variable. **Examples** ``` VARINUMITEMS^INC(); VARITUTCOUNT^INC(); ``` ### LENGTH ``` INTEGER LENGTH(INTEGER x, INTEGER y) ``` Computes the Euclidean length of the vector `(x, y)` as `sqrt(x² + y²)`, truncates the result to an integer, stores it, and returns it. **Parameters** - `x` — the first vector component. - `y` — the second vector component. **Returns**: the vector length truncated to an integer. **Examples** ``` VARI_TMP1^LENGTH([VARI_TMPX-VARI_CARX], [VARI_TMPY-VARI_CARY]); I3^LENGTH(I3, 600); ``` ### MOD ``` INTEGER MOD(INTEGER divisor) ``` Stores in the variable the remainder of dividing its current value by the argument. Division by zero leaves the variable unchanged. **Parameters** - `divisor` — the divisor. **Returns**: the new value of the variable (or the unchanged value if `divisor` was `0`). **Examples** ``` VARITEMP4^MOD(8); IGC^MOD(ARLEVG^GETSIZE()); ``` ### MUL ``` INTEGER MUL(INTEGER multiplier) ``` Multiplies the variable's current value by the argument, stores the result, and returns it. **Parameters** - `multiplier` — the multiplier. **Returns**: the new value of the variable. **Examples** ``` VARITEMP0^MUL(34); I1^MUL(IGRID); ``` ### NOT ``` INTEGER NOT() ``` Performs a bitwise NOT (complement) on the variable's current value, stores the result, and returns it. **Returns**: the new value of the variable. ### OR ``` INTEGER OR(INTEGER value) ``` Performs a bitwise OR between the variable's current value and the argument, stores the result, and returns it. **Parameters** - `value` — the value to combine with. **Returns**: the new value of the variable. ### POWER ``` INTEGER POWER(INTEGER exponent) ``` Raises the variable's current value to the given power, rounds the result to an integer, stores it, and returns it. **Parameters** - `exponent` — the exponent. **Returns**: the new value of the variable. ### RANDOM ``` INTEGER RANDOM(INTEGER bound) INTEGER RANDOM(INTEGER min, INTEGER max) ``` Stores a pseudo-random number in the variable and returns it. - The one-argument form returns a value from `[0, bound)`. - The two-argument form returns a value from `[min, max]` (both ends inclusive). **Parameters** - `bound` — upper bound (exclusive). - `min`, `max` — range bounds (inclusive). **Returns**: the generated random value. **Examples** ``` VARITEMP0^RANDOM(0, 100); VARI_TMP3^RANDOM(VARI_TMP3); ``` ### RESETINI ``` INTEGER RESETINI() ``` Resets the variable's value to the reset value defined in the object's script attributes. The engine looks up the value in the following order: `DEFAULT` → `INIT_VALUE` → `VALUE`; the first one found is used. If none of them is set, the value is reset to `0`. **Returns**: the new value of the variable. ### SET ``` INTEGER SET(INTEGER value) ``` Sets the variable's value. **Parameters** - `value` — the new value. **Returns**: the new value of the variable. **Examples** ``` G_IPAGE^SET(800); VARITEMP1^SET($2); ITEMP^SET(STCBAZA|SRODEK); ``` ### SUB ``` INTEGER SUB(INTEGER subtrahend) ``` Subtracts the argument from the variable's current value, stores the result, and returns it. **Parameters** - `subtrahend` — the value to subtract. **Returns**: the new value of the variable. **Examples** ``` G_IPAGE^SUB(100); VARIPRIORITY^SUB(VARIBKGOFFSETY); ``` ### SWITCH ``` INTEGER SWITCH(INTEGER valueA, INTEGER valueB) ``` If the variable's current value equals `valueA`, assigns `valueB` to it; otherwise assigns `valueA`. Useful for alternating between two values. **Parameters** - `valueA` — the first value. - `valueB` — the second value. **Returns**: the new value of the variable. ### XOR ``` INTEGER XOR(INTEGER value) ``` Performs a bitwise XOR between the variable's current value and the argument, stores the result, and returns it. **Parameters** - `value` — the value to combine with. **Returns**: the new value of the variable. ## Signals ### ONCHANGED Fired when the variable's value is changed to one different from the previous one. ### ONBRUTALCHANGED Fired on every call that sets the value, regardless of whether the new value differs from the previous one. ### ONINIT Fired when the variable is initialised. ### ONSIGNAL Fired upon receiving a signal.