跳到主要内容

curse_type(诅咒类型)

curse_type​

诅咒定义顶层的 type 从这一族里选一个 ID:type 只决定这份定义怎么走完一生,持续多久由定义自己的 duration_ticks 决定。四种类型由模组注册,数据包只能选用,不能新增。

定义在世界加载时解码一次:type 与它自己的字段(mxt:triggered 的 triggers)都在那时读出来,常量时长也在加载期校验。公式时长要等实际施加时才求值,所以那种写法只会在那一次施加时被拒。

duration_ticks 与 tick_interval 是诅咒定义自己的字段,写在诅咒定义那一页;下面只讲各类型怎么读它们。

type到期周期行为
mxt:timedduration_ticks 之后按 tick_interval 驱动
mxt:permanent永不到期,duration_ticks 不参与按 tick_interval 驱动
mxt:triggered写了正的 duration_ticks 就按时到期,非正或不写就永不到期由 triggers 的信号驱动,tick_interval 不参与
mxt:empty永不到期,duration_ticks 不参与不跑任何行为

mxt:timed​

在 duration_ticks 之后到期。这是唯一要求时长必须为正的类型:非正数的常量时长在加载期就被拒,公式在求值那一刻判定,判定不了就拒绝这次施加,而不是抛异常。周期行为按 tick_interval 驱动。它没有自己的字段。

{"type": "mxt:timed", "duration_ticks": 600}

mxt:permanent​

永不到期,duration_ticks 不参与。周期行为按 tick_interval 驱动。它没有自己的字段。

{"type": "mxt:permanent"}

mxt:triggered​

写了正的 duration_ticks 就按时到期,非正或不写就永不到期。周期行为不由 tick_interval 驱动,而由信号驱动:triggers 里任一 Trigger 匹配到的信号到达时,对持有者执行一次 on_tick。

字段类型默认说明
triggers数组[]让这条诅咒发作的信号;写法与技能触发器一致
{
"type": "mxt:triggered",
"triggers": [{"type": "mxt:hurt"}],
"on_tick": {"type": "mxt:damage", "amount": 1}
}

这就是"每次受击发作一次"。加载期会拒绝 triggers 为空的 mxt:triggered。

mxt:empty​

永不到期,duration_ticks 不参与,也不产生任何行为:on_apply / on_tick / on_expire / on_cleanse 一律不执行。它只作为占位或标记存在。它没有自己的字段。

{"type": "mxt:empty"}