8. 体力值相关事件#
8.1. 体力值变化事件#
以该角色为承担者,触发“体力值变化前”
(若在触发本时机技能的on_use函数中return true则导致本事件与后续此事件流程终止)
fk.BeforeHpChanged @体力值变化前
若因为伤害而触发本事件:
若该角色横置,则将场上所有横置的其他角色按行动顺序记录为该伤害的[chain_table](连环表),用于稍后的铁索连环结算
将本事件的护甲扣减量``shield_lost``设定为(该角色护甲值的相反数和体力值变化量的最小值)
将本事件的体力值变化量加上本事件的护甲扣减量
以该角色为承担者,触发“体力值变化时”
fk.BeforeHpChanged @体力值变化时
若本事件的体力值变化量和护甲扣减量均为0,则视为本事件被防止
若本事件被防止,结束本事件的流程
若因为伤害而触发本事件且该伤害不为虚拟伤害且护甲扣减量不为0,则
将该角色的护甲减去护甲扣减量
将该角色的体力值加上体力值变化量
以该角色为承担者,触发“体力值变化后”
fk.HpChanged @体力值变化后
然后若该角色的体力值小于1,则
若体力值变化量小于0,且不防止进入濒死结算,则
进行该角色的濒死结算
否则若该角色正处于濒死状态,则
该角色脱离濒死状态
体力变化相关时机的data为HpChangedData,继承HpChangedDataSpec
在《三国杀官方规则集V2.2》中:
并不存在“体力值变化事件”,你在官服看到的“体力值减少”、“体力值变化”是扣减体力事件的内容。 具体实现因服务器和具体武将的不同,可能会有所差异。
8.2. 体力上限变化事件#
以该角色为承担者,触发“体力上限变化前”
fk.BeforeMaxHpChanged @体力上限变化前
将该角色的体力上限加上体力上限变化量
若体力上限变为0,则杀死角色
若体力值大于体力上限,则直接修改体力值为体力上限
以该角色为承担者,触发“体力上限变化后”
fk.MaxHpChanged @体力上限变化后
体力上限改变相关时机的data为MaxHpChangedData,继承MaxHpChangedDataSpec
在《三国杀官方规则集V2.2》中:
关于体力上限的变化被分成了两个事件:“加体力上限事件”和“减体力上限事件”。 相关的时机也被分离。
8.3. 失去体力事件#
以该角色为承担者,触发“失去体力前”
fk.PreHpLost @失去体力前
以失去体力为原因,触发一个因本事件将该角色体力值减少[num]点的体力值变化事件
以该角色为承担者,触发“失去体力后”
fk.HpLost @失去体力后
失去体力相关时机的data为HpLostData,继承HpLostDataSpec
在《三国杀官方规则集V2.2》中:
“失去体力结算开始前” 对应 “失去体力前”
“失去体力后” 对应 “失去体力后”
“失去体力结算结束后” 在新月杀没有对应。 原规则集亦未将此时机给OL服务器技能使用。
8.4. 回复体力事件#
以该角色为承担者,触发“回复体力前”
fk.PreHpRecover @回复体力前
以回复体力为原因,触发一个因本事件将该角色体力增加[num]点的体力值变化事件
以该角色为承担者,触发“回复体力后”
fk.HpRecover @回复体力后
回复体力相关时机的data为RecoverData,继承RecoverDataSpec
在《三国杀官方规则集V2.2》中:
“回复体力前” 对应 “回复体力前”
“回复体力后” 对应 “回复体力后”
“回复体力结算结束后” 在新月杀没有对应。 原规则集亦未将此时机给OL服务器技能使用。
8.5. 伤害事件#
(主效果)
以伤害来源为承担者,触发“伤害发生前”
fk.PreDamage @准备造成伤害
以伤害来源为承担者,触发“造成伤害时”和“造成核定伤害时”
fk.DamageCaused @造成伤害时
fk.DetermineDamageCaused @造成核定伤害时
以受伤者为承担者,触发“受到伤害时”和“受到核定伤害时”
fk.DamageInflicted @受到伤害时
fk.DetermineDamageInflicted @受到核定伤害时
若是属性伤害且受伤者处于连环状态,则重置受伤者
以伤害为原因,借由体力值改变事件修改受伤者的体力值
以伤害来源为承担者,触发“造成伤害后”
fk.Damage @造成伤害后
以受伤者为承担者,触发“受到伤害后”
fk.Damaged @受到伤害后
提示
“造成伤害时”和“造成核定伤害时”、“受到伤害时”和“造成核定伤害时”本质上分别是对描述中“造成伤害时”、“受到伤害时”的细化划分。
其中:
“造成伤害时”和“受到伤害时”指的是在伤害数值尚未确定时的时机,允许通过修改伤害数据来影响最终伤害数值;
“造成核定伤害时”和“受到核定伤害时”指的是在伤害数值已经确定后的时机, 原则上,只有此时才能判断诸如“受到几点伤害”、“将伤害固定为X”等确定最终数值的相关内容。 因为“防止伤害”=“将伤害固定为0”,所以“防止伤害”类效果应在此时机处理。
在《三国杀官方规则集V2.2》中:
“造成伤害时①” 对应 “造成伤害时”
“造成伤害时②” 对应 “造成核定伤害时”
“受到伤害时①” 对应 “受到伤害时”
“受到伤害时②” 对应 “受到核定伤害时”
(后续效果)
以伤害来源为承担者,触发“伤害结算完成后”
fk.DamageFinished @伤害流程完毕后
若受伤者是连环传导起点,则
从当前行动者开始,对所有处于连环状态的角色依次造成等量、属性相同的传导伤害
伤害相关时机的data为DamageData,继承DamageDataSpec