跳到主要内容

伤害对象

伤害结算的说明见这里

创建

使用[attack:add_damage]或[skill:add_damage]来创建一个伤害对象,并立即结算此伤害。

skill:add_damage
{
source = source,
target = target,
damage = 100,
}

属性

属性可以在创建时传入。

source

来源

伤害的来源(unit)。

target

目标

伤害的目标(unit)。

skill

关联技能

如果伤害是通过[attack:add_damage]创建的,那么关联技能即为attack。如果伤害是通过[skill:add_damage]创建的,那么关联技能即为skill

damage

伤害值

类型为(number)。这个属性应该在创建时传入。

current_damage

当前伤害值

类型为(number)。该属性会初始化为伤害,之后你可以修改当前伤害,最终会使用当前伤害来扣除生命。

angle

伤害方向

类型为(number)。客户端会根据伤害方向决定受击特效的方向。如果不填,则会使用[来源]到[目标]的方向。

自定义属性

你可以在创建时给伤害添加任何自定义的属性(当然不能重名),之后便可以从伤害对象中将其读出,以便实现自定义功能。

事件

一次伤害流程会触发若干[全局事件],这些事件按照以下顺序依次触发:

伤害初始化

  • 事件对象
    • damage (damage) - 伤害对象
  • 事件参数
    • damage (damage) - 伤害对象

用于实现[法球]。使用触发器接收事件:

damage:event('伤害初始化', function (trg, damage)
-- 你的代码
end)

造成伤害开始

  • 事件对象
    • source (unit) - 伤害来源
  • 事件参数
    • damage (damage) - 伤害对象

在事件中返回false可以阻止本次伤害。使用触发器接收事件:

source:event('造成伤害开始', function (trg, damage)
-- 返回false以阻止伤害
return false
end)

受到伤害开始

  • 事件对象
    • target (unit) - 伤害目标
  • 事件参数
    • damage (damage) - 伤害对象

在事件中返回false可以阻止本次伤害。使用触发器接收事件:

target:event('受到伤害开始', function (trg, damage)
-- 返回false以阻止伤害
return false
end)

造成伤害

  • 事件对象
    • source (unit) - 伤害来源
  • 事件参数
    • damage (damage) - 伤害对象

此时[护甲]等效果已经结算完毕。使用触发器接收事件:

target:event('造成伤害', function (trg, damage)
-- 你的代码
end)

受到伤害

  • 事件对象
    • target (unit) - 伤害目标
  • 事件参数
    • damage (damage) - 伤害对象

此时[护甲]等效果已经结算完毕。使用触发器接收事件:

target:event('受到伤害', function (trg, damage)
-- 你的代码
end)

伤害前效果

  • 事件对象
    • damage (damage) - 伤害对象
  • 事件参数
    • damage (damage) - 伤害对象

用于实现[法球]。使用触发器接收事件:

damage:event('伤害前效果', function (trg, damage)
-- 你的代码
end)

方法

get_angle

获取伤害方向

如果创建时传入了[angle]属性,则返回该值。否则,返回当前[来源]的位置到[目标]位置的方向。

get_damage

获取伤害值

返回伤害值。

get_current_damage

获取当前伤害值

返回当前伤害值。[护甲]或用户可以在[伤害事件]中修改伤害值。