y3doc/uplib/buff

魔法效果是一种对单位的持续影响,一般会被用来制作dot伤害或者异常状态(需要注意它与单位状态的区别)。

事件

失去魔法效果事件

--unit为失去魔法效果的单位 buff为失去的魔法效果
up.game:event('魔法效果-失去',function(_,unit,buff)

end)

方法

给单位添加魔法效果

unit:add_buff(buff_id,data)
-- data 是数据表,包含以下参数
--   source     来源单位
--   skill      来源技能
--   time       持续时间
--   updata     循环周期
--   stack      层数

-- 示例
local buff = unit:add_buff(buff_id,{
    source = source_unit,
    skill = source_skill,
    time = 5
})

遍历单位身上的魔法效果

for buff in unit:each_buff() do
    buff:remove()
end

移除单位身上某种类型的魔法效果

unit:remove_buff(buff_id)

移除魔法效果

buff:remove()

构建魔法效果示例

--声明魔法效果类型 134225487是物体编辑器中魔法效果ID
local mt = up.buff[134225487]

--获得魔法效果时触发
function mt:on_add()

end

--失去魔法效果时触发
function mt:on_remove()

end

--循环周期触发
function mt:on_pulse()
    --魔法效果来源
    local unit = self.source
    up.particle{
        model = 100711,
        target = unit:get_point(),
        speed = 2,
        time = 1,
    }
    --对周围敌人造成伤害
    local damage = unit:get'物理攻击'
    for _,target in up.selector()
        :in_range(unit:get_point(),400)
        :is_enemy(unit)
        :ipairs()
    do
        up.particle{
            model = 101873,
            target = target,
            socket = 'hit_point',
            time = 1,
        }
        unit:damage{
            target = target,
            damage = damage,
            type = '物理',
        }
    end
end

Last updated