Introduction
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 thestats.yml
file. This file can exist in the root directory of MythicMobs (/plugins/MythicMobs/
) or in a Pack folder.
Custom Stat Options
Options that can be used in the Stat in order to better customize it
Option | Description |
---|---|
Type | The Type of the stat |
MinValue | Minimum value for the stat |
MaxValue | Max value for the stat |
Triggers | What triggers the stat effect. Usually just ATTACK or DAMAGED |
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 |
ExecutionPoint | For stats that modify a trigger, can be PRE or POST . determines whether the stat is evaluated before or after any mechanics |
Custom Stat Types:
The values that the Type
Option can be set to
Type | Description |
---|---|
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 |
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
Option | Description |
---|---|
DamageType | Specify a custom damage type |
Conditions | Specify conditions which can affect the Modifier |
DamageFormula | Define a formula for how the damage is modified. See HERE for an example of this |
DAMAGE_BONUS
Option | Description |
---|---|
DamageType | Specify a custom damage type |
Modifiers
Modifiers can be used to adjust stats after their base value is defined.
Modifier | Description |
---|---|
ADDITIVE |
Adds to 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 |
SETTER |
Overrides all modifiers and base values, and forces the stat to be what is defined |
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.
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:
Lets say you have these modifiers:
8 base value
10 additive
2 additive
5 multiply
3 multiply
2 compound (effectively x2)
0.4 compound (effectively -60%)
...the resulting math MythicMobs would calculate this is as follows:
(8 + 10 + 2) * (5 + 3) * (2 * 0.4) = 128
(base + additive + additive) * (additive_multiplier + additive_multiplier) * (compound_multiplier * compound_multiplier) = final stat
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
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.
ACCURACY
Chance for an attack to land damage. Reduces opponent's DODGE_CHANCE.
ACCURACY:
Enabled: false
AlwaysActive: false
Display: 'Accuracy'
Tooltips:
Additive: '+<value> Accuracy'
Multiply: '+<value> Accuracy'
Compound: 'x<value> Accuracy'
BaseValue: 0
ATTACK_DAMAGE
Base Damage Output
ATTACK_DAMAGE:
Enabled: true
AlwaysActive: false
Display: 'Damage'
Tooltips:
Additive: '+<value> Damage'
Multiply: '+<value> Damage'
Compound: 'x<value> Damage'
BaseValue: 1
ATTACK_SPEED
Attack cooldown frequency. Typically only used for Players.
ATTACK_SPEED:
Enabled: true
AlwaysActive: false
Display: 'Attack Speed'
Tooltips:
Additive: '+<value> Attack Speed'
Multiply: '+<value> Attack Speed'
Compound: 'x<value> Attack Speed'
BaseValue: 4.0
BONUS_DAMAGE
Additional Modifier for dealing extra damage
BONUS_DAMAGE:
Enabled: false
AlwaysActive: false
Display: 'Bonus Damage'
Tooltips:
Additive: '+<value> Bonus Damage'
Multiply: '+<value> Bonus Damage'
Compound: 'x<value> Bonus Damage'
BaseValue: 0
CRITICAL_STRIKE_CHANCE
Chance to land a Critical Strike (Chance-based Crit)
CRITICAL_STRIKE_CHANCE:
Enabled: false
AlwaysActive: false
Display: 'Critical Strike'
Tooltips:
Additive: '+<value> Critical Strike'
Multiply: '+<value> Critical Strike'
Compound: 'x<value> Critical Strike'
BaseValue: 0
MinValue: 0
Skills:
- particles{p=crit;a=50;hS=1;y=1;s=1} @trigger
CRITICAL_STRIKE_DAMAGE
Damage dealt via Critical Strike
CRITICAL_STRIKE_DAMAGE:
Enabled: false
AlwaysActive: true
Display: 'Critical Damage'
Tooltips:
Additive: '+<value> Critical Damage'
Multiply: '+<value> Critical Damage'
Compound: 'x<value> Critical Damage'
BaseValue: 1
CRITICAL_STRIKE_RESILIENCE
Resistance to Critical Strike
CRITICAL_STRIKE_RESILIENCE:
Enabled: false
Display: 'Resilience'
AlwaysActive: false
Tooltips:
Additive: '+<value> Resilience'
Multiply: '+<value> Resilience'
Compound: 'x<value> Resilience'
BaseValue: 0
DAMAGE_REDUCTION
Generic damage reduction
DAMAGE_REDUCTION:
Enabled: false
AlwaysActive: false
Display: 'Damage Reduction'
Tooltips:
Additive: '+<value> Damage Reduction'
Multiply: '+<value> Damage Reduction'
Compound: 'x<value> Damage Reduction'
BaseValue: 0
DEFENSE
Defense
DEFENSE:
Enabled: false
AlwaysActive: false
Display: 'Defense'
Tooltips:
Additive: '+<value> Defense'
Multiply: '+<value> Defense'
Compound: 'x<value> Defense'
BaseValue: 0
DODGE_CHANCE
Chance for an attack to fail when attempting to damage. Reduces opponent's ACCURACY.
DODGE_CHANCE:
Enabled: false
AlwaysActive: false
Display: 'Dodge'
Tooltips:
Additive: '+<value> Dodge Chance'
Multiply: '+<value> Dodge Chance'
Compound: 'x<value> Dodge Chance'
BaseValue: 0
Skills: []
EXPERTISE
Affects and lowers the PARRY_CHANCE of the opponent.
EXPERTISE:
Enabled: false
AlwaysActive: false
Display: 'Expertise'
Tooltips:
Additive: '+<value> Expertise'
Multiply: '+<value> Expertise'
Compound: 'x<value> Expertise'
BaseValue: 0
HEALTH
Health values
HEALTH:
Enabled: false
AlwaysActive: true
Display: 'Health'
Tooltips:
Additive: '+<value> Health'
Multiply: '+<value> Health'
Compound: 'x<value> Health'
BaseValue: 20
MinValue: 1
HEALTH_REGENERATION
Rate of Health Regeneration
HEALTH_REGENERATION:
Enabled: false
AlwaysActive: false
Display: 'Health Regeneration'
Tooltips:
Additive: '+<value> Regeneration'
Multiply: '+<value> Regeneration'
Compound: 'x<value> Regeneration'
BaseValue: 0
MaxValue: 1000000
MinValue: 0
Frequency: 60
LIFESTEAL_CHANCE
Chance for damage dealt to heal the attacker
LIFESTEAL_CHANCE:
Enabled: false
AlwaysActive: false
Display: 'Lifesteal Chance'
Tooltips:
Additive: '+<value> Lifesteal Chance'
Multiply: '+<value> Lifesteal Chance'
Compound: 'x<value> Lifesteal Chance'
BaseValue: 0
LIFESTEAL_POWER
How much healing LifeSteal does.
LIFESTEAL_POWER:
Enabled: true
AlwaysActive: false
Display: 'Lifesteal Power'
Tooltips:
Additive: '+<value> Lifesteal Power'
Multiply: '+<value> Lifesteal Power'
Compound: 'x<value> Lifesteal Power'
BaseValue: 0.1
MOVEMENT_SPEED
Movement Speed.
MOVEMENT_SPEED:
Enabled: false
AlwaysActive: true
Display: 'Movement Speed'
Tooltips:
Additive: '+<value> Movement Speed'
Multiply: '+<value>% Movement Speed'
Compound: 'x<value>% Movement Speed'
ParentStats:
- SPEED
Formula: '0.2 + (0.2 / (1 + e^(-0.005 * (SPD - 1000))))'
PARRY_CHANCE
Chance to mitigate and reflect damage from sources that melee you from the front.
PARRY_CHANCE:
Enabled: false
AlwaysActive: false
Display: 'Parry Chance'
BaseValue: 0
Priority: 0
Tooltips:
Additive: '+<value> Parry Chance'
Multiply: '+<value> Parry Chance'
Compound: 'x<value> Parry Chance'
FrontAngle: 180
UsableMaterials:
- WOODEN_SWORD
- STONE_SWORD
- GOLDEN_SWORD
- IRON_SWORD
- DIAMOND_SWORD
- NETHERITE_SWORD
Skills: []
PARRY_POWER
How much damage is mitigated by Parry.
PARRY_POWER:
Enabled: false
AlwaysActive: false
Display: 'Parry Power'
BaseValue: 0.5
Tooltips:
Additive: '+<value> Parry Power'
Multiply: '+<value> Parry Power'
Compound: 'x<value> Parry Power'
PARRY_COUNTERATTACK
How much damage is returned to the opponent when parrying.
PARRY_COUNTERATTACK:
Enabled: false
AlwaysActive: false
Display: 'Parry Counterattack'
BaseValue: 1
Tooltips:
Additive: '+<value> Parry Counterattack'
Multiply: '+<value> Parry Counterattack'
Compound: 'x<value> 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
.
Some_Mob:
Health: 50
Damage: 10
Stats:
- CRITICAL_STRIKE_CHANCE 0.2
Examples
Example Custom Stats
These stats are created by the end user. Included are some examples.
ARMOR_GENERIC
Generic Armor based damage reduction. can be applied to gear.
ARMOR_GENERIC:
Enabled: false
AlwaysActive: false
Type: DAMAGE_MODIFIER
Triggers:
- DAMAGED
ExecutionPoint: PRE
Display: 'Generic Armor'
DamageFormula: 'd - v'
BaseValue: 0
Tooltips:
Additive: '+<value> Generic Armor'
Multiply: '+<value> Generic Armor'
Compound: 'x<value> Generic Armor'
ARMOR_BLUNT
Armor based damage reduction based on the BLUNT
DamageType.
ARMOR_BLUNT:
Enabled: false
AlwaysActive: false
Type: DAMAGE_MODIFIER
Triggers:
- DAMAGED
ExecutionPoint: PRE
Display: 'Blunt Armor'
DamageType: BLUNT
DamageFormula: 'd - v'
BaseValue: 0
Tooltips:
Additive: '+<value> Blunt Armor'
Multiply: '+<value> Blunt Armor'
Compound: 'x<value> Blunt Armor'
ARMOR_SHARP
Armor based damage reduction based on the SHARP
DamageType.
ARMOR_SHARP:
Enabled: false
AlwaysActive: false
Type: DAMAGE_MODIFIER
Triggers:
- DAMAGED
ExecutionPoint: PRE
Display: 'Sharp Armor'
DamageType: SHARP
DamageFormula: 'd - v'
BaseValue: 0
Tooltips:
Additive: '+<value> Sharp Armor'
Multiply: '+<value> Sharp Armor'
Compound: 'x<value> Sharp Armor'
DAMAGE_BLUNT
Damage Output for the BLUNT
DamageType.
DAMAGE_BLUNT:
Enabled: false
AlwaysActive: false
Type: DAMAGE_BONUS
Priority: 1
Triggers:
- ATTACK
ExecutionPoint: PRE
Display: 'Blunt Damage'
DamageType: BLUNT
BaseValue: 0
Tooltips:
Additive: '+<value> Blunt Damage'
Multiply: '+<value> Blunt Damage'
Compound: 'x<value> Blunt Damage'
DAMAGE_SHARP
Damage Output for the SHARP
DamageType.
DAMAGE_SHARP:
Enabled: false
AlwaysActive: false
Type: DAMAGE_BONUS
Priority: 2
Triggers:
- ATTACK
ExecutionPoint: PRE
Display: 'Sharp Damage'
DamageType: SHARP
BaseValue: 0
Tooltips:
Additive: '+<value> Sharp Damage'
Multiply: '+<value> Sharp Damage'
Compound: 'x<value> Sharp Damage'
FIRE_RESISTANCE
Configured to grant resistance to the FIRE, FIRE_TICK DamageCause.
FIRE_RESISTANCE:
Enabled: false
AlwaysActive: false
Display: 'Fire Resistance'
Tooltips:
Additive: '+<value> Fire Resistance'
Multiply: '+<value> Fire Resistance'
Compound: 'x<value> Fire Resistance'
Type: DAMAGE_MODIFIER
Triggers:
- DAMAGED
Conditions:
- (damageCause FIRE || damageCause FIRE_TICK)
ExecutionPoint: PRE
DamageFormula: 'd * (1 - v)'
MaxValue: 1
MinValue: 0
SPEED
May be used in the MOVEMENT_SPEED stat calculation to affect speed with a formula.
SPEED:
Enabled: true
AlwaysActive: false
Type: STATIC
FormulaKey: 'SPD'
Tooltips:
Additive: '+<value> Speed'
Multiply: '+<value>% Speed'
Compound: 'x<value>% Speed'