English
CoreLib Actions
EmakiSkills registers these stages into the CoreLib action registry, with the purpose and parameters of each, ready to call from your pipelines
Prerequisite: EmakiSkills is enabled. Once loaded, the registry gains skill cast, level, slot, cooldown, and manual-unlock stages. Use them in other modules' rewards, trigger follow-up effects, or CoreLib pipeline templates
NOTE
Scope: only the stages registered by EmakiSkills are covered. EmakiSkills' own native skill script actions are documented in Native Script System, and CoreLib built-in stages in CoreLib Actions
Stage ID reference
Target requirement: all twelve stages declare REQUIRED_ENTITY. Apart from cast_skill and cast_mythic_skill, they accept only player targets and skip anything else. By registration category, cast_mythic_skill is integration and the other eleven are skills
| Stage ID | Purpose |
|---|---|
cast_skill | Casts an EmakiSkills skill with the target as the caster |
cast_mythic_skill | Casts a MythicMobs skill with the target as the caster |
skill_set_level | Sets one of the target's skill levels directly |
skill_upgrade | Upgrades one of the target's skills through the upgrade service |
skill_equip | Equips a skill into one of the target's skill slots |
skill_unequip | Clears one of the target's skill slots |
skill_bind | Binds a trigger to one of the target's skill slots |
skill_cooldown_clear | Clears one or all of the target's skill cooldowns |
skill_cooldown_set | Sets one of the target's skill cooldowns |
skill_learn | Unlocks a skill through the manual skill source |
skill_forget | Removes one manually unlocked skill |
skill_forget_all | Removes all manually unlocked skills |
Old ID migration map: castskill and skill.cast are no longer registered, skill_setlevel is now skill_set_level, and skill_clearcooldown / skill_setcooldown are now skill_cooldown_clear / skill_cooldown_set. The IDs of skill_upgrade, skill_equip, skill_unequip, skill_bind, skill_learn, skill_forget, and skill_forget_all are unchanged
The target entity comes from the source: use self for the caster, or player_by_name for a named player
cast_skill
Casts an EmakiSkills skill with the target as the caster
NOTE
Breaking change. The skill parameter takes an EmakiSkills skill id, not a MythicMobs skill id. Configuration that used to pass a MythicMobs skill name here must move to cast_mythic_skill
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
skill | STRING | Yes | — | EmakiSkills skill id |
bypass_cooldown | BOOLEAN | No | false | Skips the per-skill and global cooldown checks |
bypass_resource_check | BOOLEAN | No | false | Casts even when the caster cannot afford it |
consume_resource | BOOLEAN | No | true | Whether a successful cast bills its resource costs |
yaml
actions:
- 'self | cast_skill skill=fireball'
# Admin testing: no cooldown, no resource cost
- 'self | cast_skill skill=fireball bypass_cooldown=true consume_resource=false'
# One free cast even when resources are short
- 'self | cast_skill skill=heal bypass_resource_check=true consume_resource=false'This stage goes through EmakiSkills' own cast flow, so cooldowns, resource costs, cast conditions, and the pre/post cast events all apply. Verify: after a successful cast the skill is on cooldown and resources are deducted as defined
Player and non-player casters
The two paths behave differently; the prerequisite is that a skill profile exists only for players:
- Player caster: the full cast flow, with all three switches above in effect
- Any other entity: only the skill's
mythicSkillcomponent is cast. A mob has no profile, so there is no cooldown to read and no resource pool to bill; the three switches are inert on this path, and a script-only skill (one with nomythicSkillconfigured) fails rather than silently doing nothing
How the outcome is decided
The cast flow is asynchronous but the stage must answer synchronously, so it inspects the settled state once without waiting: a cast that already failed by the time the call returns was stopped at a synchronous gate (cooldown, resource, wrong activation type), and that is a result the pipeline can branch on. A cast still in progress is reported as success, with any later failure going to the debug log only. This matches the tradeoff start_task makes: the stage guarantees the cast was accepted, not that it finished
Error handling: a blank skill or an unknown skill id fails with INVALID_CONFIG
cast_mythic_skill
Casts a MythicMobs skill with the target as the caster. This stage moved from CoreLib to EmakiSkills in this round; its registered category is integration
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
skill | STRING | Yes | — | MythicMobs skill id |
yaml
actions:
- 'self | cast_mythic_skill skill=FireballSkill'
# Make the entity under the crosshair cast it
- 'looking_at range=20 | cast_mythic_skill skill=ExplodeSkill'Any entity can be the caster, which is why this stage is separate from cast_skill. MythicMobs is an optional dependency: when it is not installed or the bridge fails to initialise, the stage fails with OWNER_DISABLED instead of taking the pipeline down. The skill value is not id-normalised; it is passed through exactly as MythicMobs spells it
Skill levels
skill_set_level
Writes the level directly, ignoring upgrade costs and success rolls
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
skill | STRING | Yes | — | Skill id |
level | INTEGER | Yes | — | Target level |
skill_upgrade
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
skill | STRING | Yes | — | Skill id |
yaml
actions:
- 'self | skill_set_level skill=fireball level=3'
- 'self | skill_upgrade skill=fireball'skill_upgrade goes through EmakiSkills' upgrade service, so upgrade materials, economy costs, success rates, and upgrade actions all still apply. Error handling: an unknown skill id fails with INVALID_CONFIG
Skill slots
| Stage ID | Parameters | Description |
|---|---|---|
skill_equip | slot (INTEGER, required), skill (STRING, required) | Equips a skill into the given slot |
skill_unequip | slot (INTEGER, required) | Clears the given slot |
skill_bind | slot (INTEGER, required), trigger (STRING, required) | Binds a trigger to the given slot |
yaml
actions:
- 'self | skill_equip slot=0 skill=fireball'
- 'self | skill_bind slot=0 trigger=right_click'
- 'self | skill_unequip slot=0'Slot validation stays entirely inside PlayerSkillStateService, which owns the unlocked-skill set, the trigger conflict table, and the slot-change event. An unreadable slot falls back to -1, which the state service rejects, so a bad value fails loudly instead of hitting slot 0. Verify: on a validation failure the stage reports failure and the slot content is unchanged
Cooldowns
skill_cooldown_clear
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
skill | STRING | No | "" | Skill id. Empty clears every cooldown and cast delay |
skill_cooldown_set
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
skill | STRING | Yes | — | Skill id |
duration_ticks | DURATION | Yes | — | Cooldown duration. Zero or less removes that skill's cooldown |
yaml
actions:
- 'self | skill_cooldown_set skill=fireball duration_ticks=5s'
- 'self | skill_cooldown_clear skill=fireball'
- 'self | skill_cooldown_clear'Manual unlocks
The manual skill source is written into the player's skill profile and shows as "manually unlocked" in the GUI. After a skill is forgotten, EmakiSkills revalidates and cleans up invalid slot bindings
| Stage ID | Parameters | Description |
|---|---|---|
skill_learn | skill (STRING, required) | Adds the skill to the player's manual source |
skill_forget | skill (STRING, required) | Removes one manually unlocked skill |
skill_forget_all | none | Removes all manually unlocked skills |
yaml
actions:
- 'self | skill_learn skill=fireball'
- 'self | skill_forget skill=fireball'
- 'self | skill_forget_all'Scope: these three stages only touch the manual source. Skills granted by equipment or other sources are collected elsewhere and cannot be forgotten through them
skill_learn on an already unlocked skill is skipped rather than failed: the pipeline's intent is already satisfied
Notes
cast_skillandcast_mythic_skillaccept any entity as the caster; the other ten stages accept only player targetscast_mythic_skillrequires MythicMobs to be installed and enabled, with the skill named byskillpresent- Skill ids are normalised (case and separators) before use; MythicMobs skill ids are not
- When the relevant service is not ready, the stage fails with
MISSING_CONTEXTrather than skipping silently