|
# Introduction
|
|
# Introduction
|
|
|
|
|
|
Stats are values that affect all kinds of mechanics across Players, Mobs, Items, Skills, and more. The Stats system can be complicated but learning them is worth the trouble for the powerful things you can do with them, such as combat changes, technical utilities, and game design elements.
|
|
Stats are values that affect all kinds of mechanics across Players, Mobs, Items, Skills, and more.
|
|
|
|
While Stats system can be complicated to learn at first, its versatility will enable you to do very advanced things, such as combat changes, technical utilities, and the creation of new game design elements.
|
|
Stats are defined in the file `stats.yml`. This file can exist in the root directory of MythicMobs (`/plugins/MythicMobs/`) or in a Pack folder. (`/plugins/MythicMobs/Packs/CoolPack`)
|
|
|
|
|
|
Stats are defined in the`stats.yml` file. This file can exist in the root directory of MythicMobs (`/plugins/MythicMobs/`) or in a [Pack](MythicMobs/-/wikis/Packs) folder.
|
|
# Configuring a Mob with Stats:
|
|
|
|
|
|
|
|
It's important to be aware that players get all of their base stat values from the `stats.yml` file, while mobs get only some of their base values from the `stats.yml` file.
|
|
# Custom Stat Options
|
|
|
|
Options that can be used in the Stat in order to better customize it
|
|
This example features `Some_Mob` and three configured stats: `CRITICAL_STRIKE_CHANCE` as configured in the `Stats:` section, but also its `Health` and `Damage`.
|
|
|
|
The Health and Damage stat types are natively handled in the typical format of a mob's configuration. Other stats that are configured on the mob are: `ATTACK_DAMAGE`, `ATTACK_SPEED`, and `MOVEMENT_SPEED`.
|
|
| Option |Description |
|
|
```yml
|
|
|----------------------|---------------------------------------------------------------------------------|
|
|
Some_Mob:
|
|
| Type | The [Type](Stats#custom-stat-types) of the stat |
|
|
Health: 50
|
|
| MinValue | Minimum value for the stat |
|
|
Damage: 10
|
|
| MaxValue | Max value for the stat |
|
|
Stats:
|
|
| Triggers | What triggers the stat effect. Usually just ATTACK or DAMAGED |
|
|
- CRITICAL_STRIKE_CHANCE 0.2
|
|
| ParentStats | A list of other stats that this stat relies on |
|
|
```
|
|
| Formula | A formula for the base value if this stat has parent stats |
|
|
|
|
| FormulaKey | A key you can use in formulas, when this stat is the parent of another |
|
|
|
|
| BaseValue | A static base value if it doesn't have parents |
|
|
# Custom Stat Types:
|
|
| ExecutionPoint | For stats that modify a trigger, can be `PRE` or `POST`. determines whether the stat is evaluated before or after any mechanics |
|
|
|Type|Description|
|
|
|
|
|-|-|
|
|
## Custom Stat Types:
|
|
|STATIC | a static value, does nothing. but can be referenced with placeholders |
|
|
The values that the `Type` Option can be set to
|
|
|DAMAGE_BONUS | this stat adds a flat amount of bonus damage. |
|
|
| Type |Description |
|
|
|DAMAGE_MODIFIER | modifies the damage using a formula |
|
|
|----------------------|---------------------------------------------------------------------------------|
|
|
|PROC | a chance to execute skills |
|
|
| `STATIC` | A static value. Does nothing on its own, but can be referenced via placeholders |
|
|
|
|
| `DAMAGE_BONUS` | This stat adds a flat amount of bonus damage |
|
|
# Custom Stat Type Options
|
|
| `DAMAGE_MODIFIER` | Modifies the damage using a formula |
|
|
|
|
| `PROC` | A chance to execute skills |
|
|
|
|
|
|
|
|
## Specific Type Options
|
|
|
|
A list of options only available if the specified type is used in the stat
|
|
|
|
|
|
### DAMAGE_MODIFIER
|
|
### DAMAGE_MODIFIER
|
|
|
|
|
|
|Type|Description|
|
|
| Option |Description |
|
|
|-|-|
|
|
|----------------------|---------------------------------------------------------------------------------|
|
|
|DamageType|specify a custom damage type|
|
|
| DamageType | Specify a custom damage type |
|
|
|Conditions|specify conditions which can affect the Modifier|
|
|
| Conditions | Specify conditions which can affect the Modifier |
|
|
|DamageFormula|define a formula for how the damage is modified. See [HERE](#FIRE_RESISTANCE) for an example of this.|
|
|
| DamageFormula | Define a formula for how the damage is modified. See [HERE](#FIRE_RESISTANCE) for an example of this |
|
|
|
|
|
|
### DAMAGE_BONUS
|
|
### DAMAGE_BONUS
|
|
|
|
|
|
|Type|Description|
|
|
| Option |Description |
|
|
|-|-|
|
|
|----------------------|---------------------------------------------------------------------------------|
|
|
|DamageType|specify a custom damage type|
|
|
| DamageType | Specify a custom damage type |
|
|
|
|
|
|
### All Stat Types
|
|
|
|
|Type|Description|
|
|
|
|
|-|-|
|
|
|
|
| MinValue | Minimum value for the stat|
|
|
|
|
| MaxValue | Max value for the stat|
|
|
|
|
| Triggers | what triggers the stat effect, usually just ATTACK or DAMAGED|
|
|
|
|
| FormulaKey | a key you can use in formulas when this stat is the parent of another|
|
|
|
|
| ParentStats | a list of other stats that this stat relies on|
|
|
|
|
| Formula | a formula for the base value if this stat has parent stats|
|
|
|
|
| BaseValue | a static base value if it doesn't have parents|
|
|
|
|
| ExecutionPoint | for stats that modify a trigger, can be PRE or POST. determines whether the stat is evaluated before or after any mechanics |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Modifiers
|
|
# Modifiers
|
|
Modifiers can be used to adjust stats after their base value is defined.
|
|
Modifiers can be used to adjust stats after their base value is defined.
|
|
|Modifier|Description|
|
|
| Modifier |Description |
|
|
|-|-|
|
|
|----------------------|---------------------------------------------------------------------------------|
|
|
|ADDITIVE|Adds to the base value of a stat|
|
|
| `ADDITIVE` | Adds to the base value of a stat |
|
|
|ADDITIVE_MULTIPLIER|adds a multiplier the base value of a stat|
|
|
| `ADDITIVE_MULTIPLIER`| Adds a multiplier the base value of a stat |
|
|
|COMPOUND_MULTIPLIER|multiplies the base value of a stat, then adds it to the base value.|
|
|
| `COMPOUND_MULTIPLIER`| Multiplies the base value of a stat, then adds it to the base value |
|
|
|SETTER|Overrides all modifiers and base values, and forces the stat to be what is defined.|
|
|
| `SETTER` | Overrides all modifiers and base values, and forces the stat to be what is defined |
|
|
|
|
|
|
Note that stat modifiers can be applied to/by mobs, players, items, enchants, and auras. For example, an item may add to or multiply its wielder's attack speed, while an attack may temporarily apply a COMPOUND MULTIPLIER to half a target's attack speed.
|
|
Note that stat modifiers can be applied to and by mobs, players, items, enchants, and auras. For example, an item may add to or multiply its wielder's attack speed, while an attack may temporarily apply a COMPOUND MULTIPLIER to half a target's attack speed.
|
|
|
|
|
|
<!--
|
|
<!--
|
|
TODO: define mechanics that can manipulate modifiers
|
|
TODO: define mechanics that can manipulate modifiers
|
|
-->
|
|
-->
|
|
The `ADDITIVE` modifiers are straightforward, they add to the base stat.
|
|
|
|
The `ADDITIVE_MULTIPLIER`s all pool together (i.e. additive multipliers of 2 and 3 becoming a multiplier of 5, NOT 6) to then multiply the base stat after additives.
|
|
|
|
Finally, the `COMPOUND_MULTIPLIER`multiplies all the ADDITIVE results afterwards - this is a great place for debuffs to apply, since it would typically be calculated after additive stat additions and multipliers.
|
|
|
|
|
|
|
|
|
|
##
|
|
|
|
|
|
|
|
#### `ADDITIVE`
|
|
|
|
The `ADDITIVE` modifiers are straightforward: they add to the base stat.
|
|
|
|
#### `ADDITIVE_MULTIPLIER`
|
|
|
|
The `ADDITIVE_MULTIPLIER` multiply the value of the base stat by the specified value.
|
|
|
|
They all pool together (i.e. additive multipliers of 2 and 3 becoming a multiplier of 5, NOT 6) to then multiply the base stat after additives.
|
|
|
|
#### `COMPOUND_MULTIPLIER`
|
|
|
|
Finally, the `COMPOUND_MULTIPLIER` multiplies all the ADDITIVE results afterwards - this is a great place for debuffs to apply, since it would typically be calculated after additive stat additions and multipliers.
|
|
|
|
|
|
|
|
##
|
|
|
|
|
|
|
|
## Application
|
|
The two `ADDITIVE_MULTIPLIER` and `COMPOUND_MULTIPLIER` modifiers can be easy to mix up; however, this example should make it a bit more clear:
|
|
The two `ADDITIVE_MULTIPLIER` and `COMPOUND_MULTIPLIER` modifiers can be easy to mix up; however, this example should make it a bit more clear:
|
|
|
|
|
|
Lets say you have these modifiers:
|
|
Lets say you have these modifiers:
|
... | @@ -96,15 +99,12 @@ Lets say you have these modifiers: |
... | @@ -96,15 +99,12 @@ Lets say you have these modifiers: |
|
Regular multipliers are additive, and compound multipliers are multiplicative. You can think of it as "+10%" for Additive Multipliers vs. "x10%" for Compound Multipliers.
|
|
Regular multipliers are additive, and compound multipliers are multiplicative. You can think of it as "+10%" for Additive Multipliers vs. "x10%" for Compound Multipliers.
|
|
|
|
|
|
|
|
|
|
|
|
# Built-In Stats
|
|
# Examples
|
|
|
|
|
|
|
|
## Built-In Stats
|
|
|
|
|
|
|
|
These stats are inherently supported by MythicMobs, and can be configured in the `stats.yml` file in the plugin's root directory (`/plugins/MythicMobs/`) or inside Pack folders. (`/plugins/MythicMobs/Packs/CoolPack/`)
|
|
These stats are inherently supported by MythicMobs, and can be configured in the `stats.yml` file in the plugin's root directory (`/plugins/MythicMobs/`) or inside Pack folders. (`/plugins/MythicMobs/Packs/CoolPack/`)
|
|
The player inherits the `BaseValue` of these stats, while Mobs are granted them in the `Stats:` sub-section of their config.
|
|
The player inherits the `BaseValue` of these stats, while Mobs are granted them in the `Stats:` sub-section of their config.
|
|
|
|
|
|
#### `ACCURACY`
|
|
#### `ACCURACY`
|
|
Chance for an attack to land damage. Reduces opponent's [DODGE_CHANCE](#dodge_chance).
|
|
Chance for an attack to land damage. Reduces opponent's [DODGE_CHANCE](#dodge_chance).
|
|
```yml
|
|
```yml
|
|
ACCURACY:
|
|
ACCURACY:
|
... | @@ -117,7 +117,7 @@ ACCURACY: |
... | @@ -117,7 +117,7 @@ ACCURACY: |
|
Compound: 'x<value> Accuracy'
|
|
Compound: 'x<value> Accuracy'
|
|
BaseValue: 0
|
|
BaseValue: 0
|
|
```
|
|
```
|
|
#### `ATTACK_DAMAGE`
|
|
#### `ATTACK_DAMAGE`
|
|
Base Damage Output
|
|
Base Damage Output
|
|
```yml
|
|
```yml
|
|
ATTACK_DAMAGE:
|
|
ATTACK_DAMAGE:
|
... | @@ -130,7 +130,7 @@ ATTACK_DAMAGE: |
... | @@ -130,7 +130,7 @@ ATTACK_DAMAGE: |
|
Compound: 'x<value> Damage'
|
|
Compound: 'x<value> Damage'
|
|
BaseValue: 1
|
|
BaseValue: 1
|
|
```
|
|
```
|
|
#### `ATTACK_SPEED`
|
|
#### `ATTACK_SPEED`
|
|
Attack cooldown frequency. Typically only used for Players.
|
|
Attack cooldown frequency. Typically only used for Players.
|
|
```yml
|
|
```yml
|
|
ATTACK_SPEED:
|
|
ATTACK_SPEED:
|
... | @@ -143,7 +143,7 @@ ATTACK_SPEED: |
... | @@ -143,7 +143,7 @@ ATTACK_SPEED: |
|
Compound: 'x<value> Attack Speed'
|
|
Compound: 'x<value> Attack Speed'
|
|
BaseValue: 4.0
|
|
BaseValue: 4.0
|
|
```
|
|
```
|
|
#### `BONUS_DAMAGE`
|
|
#### `BONUS_DAMAGE`
|
|
Additional Modifier for dealing extra damage
|
|
Additional Modifier for dealing extra damage
|
|
```yml
|
|
```yml
|
|
BONUS_DAMAGE:
|
|
BONUS_DAMAGE:
|
... | @@ -156,8 +156,8 @@ BONUS_DAMAGE: |
... | @@ -156,8 +156,8 @@ BONUS_DAMAGE: |
|
Compound: 'x<value> Bonus Damage'
|
|
Compound: 'x<value> Bonus Damage'
|
|
BaseValue: 0
|
|
BaseValue: 0
|
|
```
|
|
```
|
|
#### `CRITICAL_STRIKE_CHANCE`
|
|
#### `CRITICAL_STRIKE_CHANCE`
|
|
Chance to land a Critical Strike (Chance-based Crit)
|
|
Chance to land a Critical Strike (Chance-based Crit)
|
|
```yml
|
|
```yml
|
|
CRITICAL_STRIKE_CHANCE:
|
|
CRITICAL_STRIKE_CHANCE:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -172,8 +172,8 @@ CRITICAL_STRIKE_CHANCE: |
... | @@ -172,8 +172,8 @@ CRITICAL_STRIKE_CHANCE: |
|
Skills:
|
|
Skills:
|
|
- particles{p=crit;a=50;hS=1;y=1;s=1} @trigger
|
|
- particles{p=crit;a=50;hS=1;y=1;s=1} @trigger
|
|
```
|
|
```
|
|
#### `CRITICAL_STRIKE_DAMAGE`
|
|
#### `CRITICAL_STRIKE_DAMAGE`
|
|
Damage dealt via Critical Strike
|
|
Damage dealt via Critical Strike
|
|
```yml
|
|
```yml
|
|
CRITICAL_STRIKE_DAMAGE:
|
|
CRITICAL_STRIKE_DAMAGE:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -185,8 +185,8 @@ CRITICAL_STRIKE_DAMAGE: |
... | @@ -185,8 +185,8 @@ CRITICAL_STRIKE_DAMAGE: |
|
Compound: 'x<value> Critical Damage'
|
|
Compound: 'x<value> Critical Damage'
|
|
BaseValue: 1
|
|
BaseValue: 1
|
|
```
|
|
```
|
|
#### `CRITICAL_STRIKE_RESILIENCE`
|
|
#### `CRITICAL_STRIKE_RESILIENCE`
|
|
Resistance to Critical Strike
|
|
Resistance to Critical Strike
|
|
```yml
|
|
```yml
|
|
CRITICAL_STRIKE_RESILIENCE:
|
|
CRITICAL_STRIKE_RESILIENCE:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -198,8 +198,8 @@ CRITICAL_STRIKE_RESILIENCE: |
... | @@ -198,8 +198,8 @@ CRITICAL_STRIKE_RESILIENCE: |
|
Compound: 'x<value> Resilience'
|
|
Compound: 'x<value> Resilience'
|
|
BaseValue: 0
|
|
BaseValue: 0
|
|
```
|
|
```
|
|
#### `DAMAGE_REDUCTION`
|
|
#### `DAMAGE_REDUCTION`
|
|
Generic damage reduction
|
|
Generic damage reduction
|
|
```yml
|
|
```yml
|
|
DAMAGE_REDUCTION:
|
|
DAMAGE_REDUCTION:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -211,8 +211,8 @@ DAMAGE_REDUCTION: |
... | @@ -211,8 +211,8 @@ DAMAGE_REDUCTION: |
|
Compound: 'x<value> Damage Reduction'
|
|
Compound: 'x<value> Damage Reduction'
|
|
BaseValue: 0
|
|
BaseValue: 0
|
|
```
|
|
```
|
|
#### `DEFENSE`
|
|
#### `DEFENSE`
|
|
Defense
|
|
Defense
|
|
```yml
|
|
```yml
|
|
DEFENSE:
|
|
DEFENSE:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -238,7 +238,7 @@ DODGE_CHANCE: |
... | @@ -238,7 +238,7 @@ DODGE_CHANCE: |
|
BaseValue: 0
|
|
BaseValue: 0
|
|
Skills: []
|
|
Skills: []
|
|
```
|
|
```
|
|
#### `EXPERTISE`
|
|
#### `EXPERTISE`
|
|
Affects and lowers the [PARRY_CHANCE](#parry_chance) of the opponent.
|
|
Affects and lowers the [PARRY_CHANCE](#parry_chance) of the opponent.
|
|
```yml
|
|
```yml
|
|
EXPERTISE:
|
|
EXPERTISE:
|
... | @@ -251,8 +251,8 @@ EXPERTISE: |
... | @@ -251,8 +251,8 @@ EXPERTISE: |
|
Compound: 'x<value> Expertise'
|
|
Compound: 'x<value> Expertise'
|
|
BaseValue: 0
|
|
BaseValue: 0
|
|
```
|
|
```
|
|
#### `HEALTH`
|
|
#### `HEALTH`
|
|
Health values
|
|
Health values
|
|
```yml
|
|
```yml
|
|
HEALTH:
|
|
HEALTH:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -265,8 +265,8 @@ HEALTH: |
... | @@ -265,8 +265,8 @@ HEALTH: |
|
BaseValue: 20
|
|
BaseValue: 20
|
|
MinValue: 1
|
|
MinValue: 1
|
|
```
|
|
```
|
|
#### `HEALTH_REGENERATION`
|
|
#### `HEALTH_REGENERATION`
|
|
Rate of Health Regeneration
|
|
Rate of Health Regeneration
|
|
```yml
|
|
```yml
|
|
HEALTH_REGENERATION:
|
|
HEALTH_REGENERATION:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -281,8 +281,8 @@ HEALTH_REGENERATION: |
... | @@ -281,8 +281,8 @@ HEALTH_REGENERATION: |
|
MinValue: 0
|
|
MinValue: 0
|
|
Frequency: 60
|
|
Frequency: 60
|
|
```
|
|
```
|
|
#### `LIFESTEAL_CHANCE`
|
|
#### `LIFESTEAL_CHANCE`
|
|
Chance for damage dealt to heal the attacker
|
|
Chance for damage dealt to heal the attacker
|
|
```yml
|
|
```yml
|
|
LIFESTEAL_CHANCE:
|
|
LIFESTEAL_CHANCE:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -294,8 +294,8 @@ LIFESTEAL_CHANCE: |
... | @@ -294,8 +294,8 @@ LIFESTEAL_CHANCE: |
|
Compound: 'x<value> Lifesteal Chance'
|
|
Compound: 'x<value> Lifesteal Chance'
|
|
BaseValue: 0
|
|
BaseValue: 0
|
|
```
|
|
```
|
|
#### `LIFESTEAL_POWER`
|
|
#### `LIFESTEAL_POWER`
|
|
How much healing LifeSteal does.
|
|
How much healing LifeSteal does.
|
|
```yml
|
|
```yml
|
|
LIFESTEAL_POWER:
|
|
LIFESTEAL_POWER:
|
|
Enabled: true
|
|
Enabled: true
|
... | @@ -307,8 +307,8 @@ LIFESTEAL_POWER: |
... | @@ -307,8 +307,8 @@ LIFESTEAL_POWER: |
|
Compound: 'x<value> Lifesteal Power'
|
|
Compound: 'x<value> Lifesteal Power'
|
|
BaseValue: 0.1
|
|
BaseValue: 0.1
|
|
```
|
|
```
|
|
#### `MOVEMENT_SPEED`
|
|
#### `MOVEMENT_SPEED`
|
|
Movement Speed.
|
|
Movement Speed.
|
|
```yml
|
|
```yml
|
|
MOVEMENT_SPEED:
|
|
MOVEMENT_SPEED:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -323,8 +323,8 @@ MOVEMENT_SPEED: |
... | @@ -323,8 +323,8 @@ MOVEMENT_SPEED: |
|
Formula: '0.2 + (0.2 / (1 + e^(-0.005 * (SPD - 1000))))'
|
|
Formula: '0.2 + (0.2 / (1 + e^(-0.005 * (SPD - 1000))))'
|
|
|
|
|
|
```
|
|
```
|
|
#### `PARRY_CHANCE`
|
|
#### `PARRY_CHANCE`
|
|
Chance to mitigate and reflect damage from sources that melee you from the front.
|
|
Chance to mitigate and reflect damage from sources that melee you from the front.
|
|
```yml
|
|
```yml
|
|
PARRY_CHANCE:
|
|
PARRY_CHANCE:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -347,8 +347,8 @@ PARRY_CHANCE: |
... | @@ -347,8 +347,8 @@ PARRY_CHANCE: |
|
Skills: []
|
|
Skills: []
|
|
|
|
|
|
```
|
|
```
|
|
#### `PARRY_POWER`
|
|
#### `PARRY_POWER`
|
|
How much damage is mitigated by Parry.
|
|
How much damage is mitigated by Parry.
|
|
```yml
|
|
```yml
|
|
PARRY_POWER:
|
|
PARRY_POWER:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -361,8 +361,8 @@ PARRY_POWER: |
... | @@ -361,8 +361,8 @@ PARRY_POWER: |
|
Compound: 'x<value> Parry Power'
|
|
Compound: 'x<value> Parry Power'
|
|
|
|
|
|
```
|
|
```
|
|
#### `PARRY_COUNTERATTACK`
|
|
#### `PARRY_COUNTERATTACK`
|
|
How much damage is returned to the opponent when parrying.
|
|
How much damage is returned to the opponent when parrying.
|
|
```yml
|
|
```yml
|
|
PARRY_COUNTERATTACK:
|
|
PARRY_COUNTERATTACK:
|
|
Enabled: false
|
|
Enabled: false
|
... | @@ -376,6 +376,23 @@ PARRY_COUNTERATTACK: |
... | @@ -376,6 +376,23 @@ PARRY_COUNTERATTACK: |
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
# Configuring a Mob with Stats:
|
|
|
|
|
|
|
|
It's important to be aware that players get all of their base stat values from the `stats.yml` file, while mobs get only some of their base values from the `stats.yml` file.
|
|
|
|
|
|
|
|
This example features `Some_Mob` and three configured stats: `CRITICAL_STRIKE_CHANCE` as configured in the `Stats:` section, but also its `Health` and `Damage`.
|
|
|
|
The Health and Damage stat types are natively handled in the typical format of a mob's configuration. Other stats that are configured on the mob are: `ATTACK_DAMAGE`, `ATTACK_SPEED`, and `MOVEMENT_SPEED`.
|
|
|
|
```yml
|
|
|
|
Some_Mob:
|
|
|
|
Health: 50
|
|
|
|
Damage: 10
|
|
|
|
Stats:
|
|
|
|
- CRITICAL_STRIKE_CHANCE 0.2
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
# Examples
|
|
|
|
|
|
## Example Custom Stats
|
|
## Example Custom Stats
|
|
|
|
|
|
These stats are created by the end user. Included are some examples.
|
|
These stats are created by the end user. Included are some examples.
|
... | | ... | |