FreeKill/docs/diy/event/hp.rst

120 lines
2.6 KiB
ReStructuredText
Raw Normal View History

.. SPDX-License-Identifier: GFDL-1.3-or-later
与体力值相关的事件
==================
以下列出了一些和体力值改变有关的事件。
改变体力
--------
涉及的类如下:
.. lua:autoclass:: HpChangedData
事件流程如下:
.. code:: lua
local data = HpChangedData
local player = xxx -- 体力变动的那位角色
-- 先触发“体力变化前”时机 ** 可中断 **
logic:trigger(fk.BeforeHpChanged, player, data)
-- 然后对player的hp作出修改
-- 最后触发“体力变化后”时机
logic:trigger(fk.HpChanged, player, data)
-- 如果体力变化之后玩家的hp < 1
-- 并且这次体力变化的变化量是负数,那么进入濒死阶段
伤害
----
涉及的类如下:
.. lua:autoclass:: DamageStruct
在整个伤害事件中触发时机时候传递的data都是DamageStruct类型。
事件的流程如下:
.. code:: lua
local data = DamageStruct
-- 下面的data.from是伤害来源data.to是伤害目标
-- 在处理过程中,如果伤害目标死了,事件就结束。
-- 触发时机“伤害结算开始前” ** 可中断 **
logic:trigger(fk.PreDamage, data.from, data)
-- 触发时机“造成伤害时” ** 可中断 **
logic:trigger(fk.DamageCaused, data.from, data)
-- 触发时机“受到伤害时” ** 可中断 **
logic:trigger(fk.DamageInflicted, data.to, data)
-- 进行一个“改变体力”事件,以修改伤害目标的体力
-- 触发时机“造成伤害后”
logic:trigger(fk.Damage, data.from, data)
-- 触发时机“受到伤害后”
logic:trigger(fk.Damaged, data.to, data)
-- 触发时机“伤害结算完成后”
logic:trigger(fk.DamageFinished, data.from, data)
失去体力
--------
涉及的类如下:
.. lua:autoclass:: HpLostData
流程如下:
.. code:: lua
local data = HpLostData
local player = xxx -- 失去体力的那位角色
-- 触发时机“失去体力前” ** 可中断 **
logic:trigger(fk.PreHpLost, player, data)
-- 进行一次“改变体力”事件以更新受害者的hp
-- 触发时机“失去体力后”
logic:trigger(fk.HpLost, player, data)
回复体力
--------
涉及的类如下:
.. lua:autoclass:: RecoverStruct
流程如下:
.. code:: lua
local data = HpLostData
local player = xxx -- 失去体力的那位角色
-- 触发时机“回复体力前” ** 可中断 **
logic:trigger(fk.PreHpRecover, player, data)
-- 进行一次“改变体力”事件以更新回复者的hp
-- 触发时机“回复体力后”
logic:trigger(fk.HpRecover, player, data)
改变体力上限
-------------
TODO