414 lines
6.8 KiB
Markdown
414 lines
6.8 KiB
Markdown
# 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.
|