|
|
|
Variables (v4.6+)
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
Variables are a new system for storing information added in v4.6. Using
|
|
|
|
the variables system, you can store and manipulate values that you can
|
|
|
|
use in placeholders or conditions later. These values can be either
|
|
|
|
permanent or temporary.
|
|
|
|
|
|
|
|
### Variable Types
|
|
|
|
|
|
|
|
Variables can be one of several types, which is defined when the
|
|
|
|
variable is initialized using the
|
|
|
|
[setVariable](/skills/mechanics/setvariable) mechanic. Types are
|
|
|
|
generally interchangeable and MythicMobs will do its best to apply
|
|
|
|
certain variables to whatever situation is asked, however it will throw
|
|
|
|
an error if you try to use a variable type for something that makes no
|
|
|
|
sense.
|
|
|
|
|
|
|
|
**Current Types**:
|
|
|
|
|
|
|
|
| **Type** | **Description** |
|
|
|
|
|----------|----------------------------------|
|
|
|
|
| INTEGER | A number with no decimal places. |
|
|
|
|
| FLOAT | A number with decimal places. |
|
|
|
|
| STRING | A word or sentence. |
|
|
|
|
|
|
|
|
### Variable Scopes
|
|
|
|
|
|
|
|
A variable's "scope" is **where** that variable exists. Not all scopes
|
|
|
|
are applicable for all situations (e.g. a condition may not have a
|
|
|
|
caster, rather the caster is the target of the condition).
|
|
|
|
|
|
|
|
**Variable Scopes**:
|
|
|
|
|
|
|
|
| **Type** | **Where It Goes** |
|
|
|
|
|----------|----------------------------------------------------------------------------------------------------|
|
|
|
|
| SKILL | On the current skill tree. Always temporary and will vanish when the current queue of skills ends. |
|
|
|
|
| CASTER | On the casting mob. |
|
|
|
|
| TARGET | On the target of the mechanic/condition. |
|
|
|
|
| WORLD | The current world. |
|
|
|
|
| GLOBAL | The server. |
|
|
|
|
|
|
|
|
### Usage
|
|
|
|
|
|
|
|
All variable mechanics and conditions accept **var=** and **scope=**
|
|
|
|
attributes to determine what variable you're wanting to work with and
|
|
|
|
where. You can also shorthand the scope using
|
|
|
|
**var=scope.variable\_name**. The following examples would return the
|
|
|
|
same thing:
|
|
|
|
|
|
|
|
setvariable{var=target.somevariable; ...}
|
|
|
|
setvariable{var=somevariable;scope=target; ...}
|
|
|
|
|
|
|
|
### Variable Mechanics
|
|
|
|
|
|
|
|
Variable mechanics are special mechanics that utilize variables. They
|
|
|
|
can target entities, locations, or nothing, but the target can affect
|
|
|
|
the outcome depending on what scope you're using. For example, trying to
|
|
|
|
get a target-scope'd variable will obviously fail if you're not
|
|
|
|
targeting en entity.
|
|
|
|
|
|
|
|
| Mechanic | Description |
|
|
|
|
|--------------------------------------------------------|--------------------------------------------------|
|
|
|
|
| [VariableSet](/skills/mechanics/setvariable) | Initializes and sets a variable. |
|
|
|
|
| [VariableAdd](/skills/mechanics/variableadd) | Adds to a numeric variable. |
|
|
|
|
| [VariableSubtract](/skills/mechanics/variablesubtract) | Subtracts from a numeric variable. |
|
|
|
|
| [VariableMath](/skills/mechanics/variablemath) | Lets you do calculations with numeric variables. |
|
|
|
|
|
|
|
|
### Variable Conditions
|
|
|
|
|
|
|
|
| Condition | Description |
|
|
|
|
|--------------------------------------------------|------------------------------------------------|
|
|
|
|
| [Variable Equals](/conditions/variableequals) | Checks if a variable equals a given value. |
|
|
|
|
| [Variable Is Set](/conditions/variableisset) | Checks if a variable is set. |
|
|
|
|
| [Variable In Range](/conditions/variableinrange) | Checks if a number variable is within a range. |
|
|
|
|
|
|
|
|
### Variable Placeholders
|
|
|
|
|
|
|
|
Variables can be referenced in any MythicMobs mechanics or values that
|
|
|
|
allow placeholders. This is usually done using the format
|
|
|
|
**<scope.var.\[variable\]>**.
|
|
|
|
|
|
|
|
When using placeholder variables, you can also specify a "default" value
|
|
|
|
that will be used if the variable is undefined by using the syntax
|
|
|
|
**<scope.var.\[variable\]\|\[default\]>**.
|
|
|
|
|
|
|
|
message{m="Hello there, <target.var.title|wanderer>"} @trigger ~onInteract
|
|
|
|
|
|
|
|
In this example, the NPC would reply with "Hello there, wanderer" if
|
|
|
|
right-clicked by somebody who had no "title" variable set on them.
|
|
|
|
However, if we did this:
|
|
|
|
|
|
|
|
setVariable{var=target.title;value="Sir"} @trigger ~onInteract
|
|
|
|
|
|
|
|
...somewhere along the line, even with a different mob, the first mob
|
|
|
|
would say "Hello there, Sir". |