CoreLib 动作
EmakiSkills 启用后会向 CoreLib 动作注册表追加技能释放、等级、槽位、冷却和手动解锁段。它们可用于其他模块的奖励、触发器后续效果或 CoreLib 管道模板。
NOTE
本页只记录 EmakiSkills 注册的段;EmakiSkills 自己的原生技能脚本动作见 原生脚本系统,CoreLib 自带通用段见 CoreLib 动作系统。
段 ID 速查
十二个段的目标要求都是 REQUIRED_ENTITY。除 cast_skill 与 cast_mythic_skill 外,其余段只接受玩家目标,非玩家目标会跳过。
| 段 ID | 用途 |
|---|---|
cast_skill | 让目标释放一个 EmakiSkills 技能。 |
cast_mythic_skill | 让目标释放一个 MythicMobs 技能。 |
skill_set_level | 直接设置目标指定技能的等级。 |
skill_upgrade | 按升级服务尝试升级目标指定技能。 |
skill_equip | 把技能装备到指定技能槽。 |
skill_unequip | 清空指定技能槽。 |
skill_bind | 给指定技能槽绑定触发器。 |
skill_cooldown_clear | 清除指定技能或全部技能冷却。 |
skill_cooldown_set | 设置指定技能冷却。 |
skill_learn | 通过手动来源解锁技能。 |
skill_forget | 移除一个手动解锁技能。 |
skill_forget_all | 移除全部手动解锁技能。 |
旧 id 的对应关系:castskill 与 skill.cast 已不再注册,skill_setlevel 现在写作 skill_set_level,skill_clearcooldown 与 skill_setcooldown 现在写作 skill_cooldown_clear 与 skill_cooldown_set。skill_upgrade、skill_equip、skill_unequip、skill_bind、skill_learn、skill_forget、skill_forget_all 的 id 未变。
「作用于谁」由 source 决定:作用于执行者自己写 self,指定玩家用 player_by_name。
cast_skill
让目标作为施法者释放一个 EmakiSkills 技能。
NOTE
破坏性变更。 skill 参数接受的是 EmakiSkills 技能 id,不再是 MythicMobs 技能 id。原先在这里写 MythicMobs 技能名的配置必须改用 cast_mythic_skill。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
skill | STRING | 是 | — | EmakiSkills 技能 id。 |
bypass_cooldown | BOOLEAN | 否 | false | 跳过该技能自身冷却与全局冷却检查。 |
bypass_resource_check | BOOLEAN | 否 | false | 资源不足时也照样施放。 |
consume_resource | BOOLEAN | 否 | true | 施放成功后是否扣除资源消耗。 |
actions:
- 'self | cast_skill skill=fireball'
# 管理员测试:不吃冷却、不扣资源
- 'self | cast_skill skill=fireball bypass_cooldown=true consume_resource=false'
# 免费施放一次,即使资源不够
- 'self | cast_skill skill=heal bypass_resource_check=true consume_resource=false'这个段走 EmakiSkills 自己的施法流程,所以冷却、资源消耗、施放条件与前后置施法事件都会生效。
玩家与非玩家施法者
两条路径的行为不同,因为技能档案只对玩家存在:
- 玩家施法者:完整施法流程,上面三个开关全部有效。
- 其他实体施法者:只施放该技能的
mythicSkill部分。实体没有技能档案,既没有冷却可读也没有资源池可扣,所以三个开关在这条路径上无效;纯脚本技能(没有配置mythicSkill)会被拒绝而不是静默什么都不做。
结果判定
施法流程是异步的,而段必须同步给出结果,所以它检查一次已完成状态而不等待:调用返回时已经失败的施放是在同步关卡上被拦下的(冷却、资源、激活类型不符),这是管道可以据此分支的结果;仍在进行中的施放报告为成功,后续失败只写入 debug 日志。这与 start_task 的取舍一致:段保证的是这次施放已被接受,不是它已经完成。
skill 为空、技能 id 不存在都会以 INVALID_CONFIG 失败。
cast_mythic_skill
让目标释放一个 MythicMobs 技能。这个段本轮从 CoreLib 迁到 EmakiSkills,注册分类是 integration。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
skill | STRING | 是 | — | MythicMobs 技能 id。 |
actions:
- 'self | cast_mythic_skill skill=FireballSkill'
# 让准星上的实体释放
- 'looking_at range=20 | cast_mythic_skill skill=ExplodeSkill'任何实体都可以作为施法者,这也是这个段与 cast_skill 分开的理由。MythicMobs 是可选依赖:未安装或桥接初始化失败时该段以 OWNER_DISABLED 失败,不会把管道带下去。skill 值不做 id 归一化,按 MythicMobs 的原样写法传入。
技能等级
skill_set_level
直接写入等级,不检查升级材料也不摇成功率。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
skill | STRING | 是 | — | 技能 id。 |
level | INTEGER | 是 | — | 目标等级。 |
skill_upgrade
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
skill | STRING | 是 | — | 技能 id。 |
actions:
- 'self | skill_set_level skill=fireball level=3'
- 'self | skill_upgrade skill=fireball'skill_upgrade 会走 EmakiSkills 的升级服务,因此仍会检查升级材料、经济、成功率并执行升级动作。技能 id 不存在时以 INVALID_CONFIG 失败。
技能槽
| 段 ID | 参数 | 说明 |
|---|---|---|
skill_equip | slot(INTEGER,必填)、skill(STRING,必填) | 将技能装备到指定槽位。 |
skill_unequip | slot(INTEGER,必填) | 清空指定槽位。 |
skill_bind | slot(INTEGER,必填)、trigger(STRING,必填) | 将触发器绑定到指定槽位。 |
actions:
- 'self | skill_equip slot=0 skill=fireball'
- 'self | skill_bind slot=0 trigger=right_click'
- 'self | skill_unequip slot=0'槽位校验全部在 PlayerSkillStateService 内完成:它掌握已解锁技能集合、触发器冲突表和槽位变更事件。slot 读不出来时按 -1 处理,会被状态服务拒绝,所以写错的值会明确失败而不是打到 0 号槽。
冷却
skill_cooldown_clear
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
skill | STRING | 否 | "" | 技能 id;为空时清除全部冷却与施法延迟。 |
skill_cooldown_set
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
skill | STRING | 是 | — | 技能 id。 |
duration_ticks | TIME | 是 | — | 冷却时间;小于等于 0 时等效于清除该技能冷却。 |
actions:
- 'self | skill_cooldown_set skill=fireball duration_ticks=5s'
- 'self | skill_cooldown_clear skill=fireball'
- 'self | skill_cooldown_clear'手动解锁
手动解锁来源会写入玩家技能档案,GUI 中会显示为「手动解锁」。遗忘技能后,EmakiSkills 会校验并清理无效槽位绑定。
| 段 ID | 参数 | 说明 |
|---|---|---|
skill_learn | skill(STRING,必填) | 将技能加入玩家的手动解锁来源。 |
skill_forget | skill(STRING,必填) | 移除一个手动解锁技能。 |
skill_forget_all | 无 | 移除全部手动解锁技能。 |
actions:
- 'self | skill_learn skill=fireball'
- 'self | skill_forget skill=fireball'
- 'self | skill_forget_all'这三个段只处理手动来源。装备或其他来源授予的技能在别处收集,无法通过它们遗忘。
skill_learn 对一个已解锁的技能按跳过处理而不是失败:管道的意图已经达成了。
使用提示
cast_skill与cast_mythic_skill接受任意实体作为施法者,其余十个段只接受玩家目标。cast_mythic_skill需要 MythicMobs 已安装并启用,且skill指向的技能存在。- 技能 id 在传入前会做归一化(大小写与分隔符),MythicMobs 技能 id 不做归一化。
- 相关服务尚未就绪时,段以
MISSING_CONTEXT失败而不是静默跳过。