MemeMayhem / ModExamples

11 stars 3 forks source link

子弹命中的回调函数和behavior该如何使用 #58

Closed Nagasoyo closed 2 months ago

Nagasoyo commented 2 months ago

我看到似乎很多能力卡的设计都需要用到子弹命中的回调函数,在挂debuff时需要用到behavior,然而我并不会使用这两个

Nagasoyo commented 2 months ago

在#44中我看到可以用behavior实现类似冰块和吸血鬼的效果,但是在示例中挂dot的能力卡又似乎没有用到behavior

Ill-cat commented 2 months ago

试试这个?

--一个能力
    Api:RegisterPerk("perk_id", {
        id = "perk_id",
        display_name = "能力名称",
        description = "现在石头"
        .. "命中时有<color=#2fc107>30%</color>使敌人在<color=#2fc107>1</color>秒内降低<color=#2fc107>3%</color>"
        .. Api.GameMechanicTags.TAG.attack_speed,
        flavor_text = "小字吐槽",
        icon = DCEI.Texture("flat_icon_emoji_rock_1faa8_ipick"),--图标
        perk_type = "perk",--子弹/能力
        rarity = "rare",--稀有度

        --能力的附加行为
        behavior = {
            is_positive = false,--是否正面效果
            --这里是降低攻速的效果
            description = "降低<color=#2fc107>3%</color>"
            .. Api.GameMechanicTags.TAG.attack_speed
            .. ",持续<color=#2fc107>1</color>秒",
            buff_bar_icon = DCEI.Texture("flat_icon_emoji_rock_1faa8_ipick"),--buff图标
            --属性修正效果
            modify_attributes = {
                attack_speed = -0.03,
            },
            --持续时间
            duration = 1,
        },
    },

    --能力行为
    function(combat_unit)
        local name = "perk_id"
        --子弹命中触发
        combat_unit.Attack:RegisterOnMissileImpactCallback(name, function(level, attack_data, caster, target)
            --命中效果
            if attack_data.missile_id == "attack_rock"
            then
                --lua随机数
                if math.random() < 0.3
                then
                    for i = 1 , level do
                          --施加效果给对手,如果给自己把target换成caster
                          Api.PerkBehaviorSystem:ApplyPerkBehaviorToSelf(target, name)
                    end
                end
            end
        end)
    end)

如果是挂dot可能是直接给对面负回血的属性修正了,看你需要用哪种

Nagasoyo commented 2 months ago

可以使用,谢谢