Skip to content

MythicMobs Integration

EmakiAttribute integrates with MythicMobs for attribute damage mechanics, attribute conditions, and mob attribute configuration.

NOTE

MythicMobs is a soft dependency. If it is not installed, related features are skipped.

Skill mechanic: emaki_damage

Aliases: emakiattribute_damage, attribute_damage.

ParameterTypeDefaultDescription
damagedoubleskill powerBase damage.
damage_typestringDamage type id, such as physical or spell.
allow_criticalbooleantrueWhether critical hits are allowed.
allow_target_dodgebooleanfalseWhether target dodge is allowed.
calculate_target_defensebooleantrueWhether target defense is calculated.
trigger_mythic_on_damagedbooleanfalseWhether MythicMobs on-damaged behavior is triggered.

Example:

yaml
FireBlast:
  Skills:
    - emaki_damage{damage=50;damage_type=spell;allow_critical=true} @target

Skill mechanics: temporary attributes

These mechanics target skill targets (@target, @self, etc.) and work on both players and mobs. Temporary attributes are removed automatically on expiry and are not persisted (they are lost on restart).

Upgrade notes: timed attribute behaviour changes

  1. emaki_attribute_add_tag no longer produces composite effect IDs. effect_prefix=poison used to write one separate poison:<attributeId> record per matched attribute; they now all join a single poison effect group. Configuration deleting a composite ID no longer matches — use emaki_attribute_remove{effect_id=poison} instead, which previously removed nothing and now works.
  2. Multi-group SET (set=true) on the same attribute now has a defined winner: the last write, no longer dependent on internal hash-map iteration order.

Single-attribute skill configuration is unaffected. Also note that low-level refusals (unregistered attribute, invalid stack_mode, NaN) used to still return SUCCESS; they now return INVALID_CONFIG and log a console warning.

emaki_attribute_add

Alias: emakiattribute_add. Adds one temporary attribute to the target.

ParameterTypeDefaultDescription
effect_idstringEffect group id. Several attributes can share one id: they coexist and emaki_attribute_remove clears the whole group. The stack mode only applies when the same attribute is re-applied inside the same group. Aliases: effectid, id.
attributestringAttribute id. An unregistered id returns INVALID_CONFIG and logs a warning. Aliases: attribute_id, attributeid.
valuedouble0Temporary value. NaN / ±Inf return INVALID_CONFIG. Aliases: amount, v.
durationintDuration in ticks, must be greater than 0. Aliases: duration_ticks, ticks, d.
stack_modestringattribute defaultREPLACE or STACK. Falls back to the attribute's temporary_stack_mode; any other value returns INVALID_CONFIG instead of silently falling back. Aliases: stackmode, mode.
setbooleanfalseWhen true, uses overwrite (SET) instead of additive (ADD). Alias: override_value.

A target that is not a LivingEntity returns INVALID_TARGET.

emaki_attribute_remove

Alias: emakiattribute_remove. Clears every temporary attribute inside the effect_id group.

ParameterTypeDescription
effect_idstringEffect group id to clear; every attribute in that group is removed. Returns CONDITION_FAILED when the target carries no such group, and INVALID_TARGET when the target is not a LivingEntity. Aliases: effectid, id.

emaki_attribute_add_tag

Alias: emakiattribute_add_tag. Adds a temporary attribute for every attribute whose tags contain the given tag, placing them all into one effect group, so emaki_attribute_remove with that group id clears the whole set at once.

ParameterTypeDefaultDescription
tagstringAttribute tag (e.g. DEBUFF), case-insensitive. Aliases: tags, t.
valuedouble0Value applied to every matching attribute. Aliases: amount, v.
durationintDuration in ticks, must be greater than 0. Aliases: duration_ticks, ticks, d.
effect_prefixstringtag:<tag>Effect group id that every matched attribute joins. Aliases: effectprefix, prefix.
stack_modestringper-attribute defaultREPLACE or STACK. Falls back to each attribute's temporary_stack_mode; any other value returns INVALID_CONFIG. Aliases: stackmode, mode.

A target that is not a LivingEntity returns INVALID_TARGET.

emaki_attribute_clear_tag

Alias: emakiattribute_clear_tag. Clears every temporary attribute whose attribute carries the given tag.

ParameterTypeDescription
tagstringAttribute tag, case-insensitive. Aliases: tags, t. A target that is not a LivingEntity returns INVALID_TARGET.

Example:

yaml
CurseStrike:
  Skills:
    - emaki_attribute_add{effect_id=curse_slow;attribute=movement_speed;value=-2;duration=100} @target
    - emaki_attribute_add_tag{tag=DEBUFF;value=-10;duration=100;stack_mode=STACK} @target
Purify:
  Skills:
    - emaki_attribute_clear_tag{tag=DEBUFF} @target

Condition: emaki_attribute

Aliases: emakiattribute_attribute, attribute_value, attribute_resource.

ParameterDescription
attributeAttribute id when checking an attribute value.
resourceResource id when checking a resource value. Players only.
fieldResource field: current (aliases current_value, value), max (alias current_max), default (alias default_max), bonus (alias bonus_max), or percent. Defaults to current.
operatorComparison operator.
valueComparison value.
value_2Second value for between.
OperatorAliasesDescription
>gtGreater than.
>=gteGreater than or equal (default).
<ltLess than.
<=lteLess than or equal.
!=<>, neNot equal.
betweenBetween value and value_2, inclusive and order-independent.

NOTE

Omitting operator or supplying an unrecognized one falls back to >=. There is no dedicated equality operator.

yaml
Conditions:
  - emaki_attribute{resource=health;field=percent;operator=<;value=30} true

Mob attributes

MythicMobs mobs can define an EmakiAttribute section:

yaml
FireDragon:
  Type: ENDER_DRAGON
  Health: 500
  EmakiAttribute:
    - "physical_attack: 100"
    - "physical_defense: 50"
    - "spell_attack: 80"
    - "health: 500"

Every entry must be quoted

EmakiAttribute is a string list. Written unquoted as - physical_attack: 100, YAML parses each entry as a mapping instead of a string, the whole section is skipped, the mob receives no attributes, and nothing is logged.

To check: run /ea debug on and enter combat, then look for your attribute IDs in the attacker snapshot. Seeing only default_profile entries means the section was not read.

Attributes are synchronized when Mythic mobs spawn, and active Mythic mobs are resynced after MythicMobs reloads.