美文网首页饥荒
【配件】魔术回路

【配件】魔术回路

作者: 能鸽善舞的小豪 | 来源:发表于2019-07-23 00:12 被阅读0次

    预制物名

    homura_weapon_buff_magic

    简介

    • 单机版

    魔术回路是一个增伤型的配件,合成它需要1颗悲叹之种、4颗紫宝石和6个噩梦燃料。它只对枪械生效。

    当安装了1个魔术回路后,枪射出的每一发子弹会被充入0.1的魔力值,并在击中敌人后额外造成10点伤害;如果安装了2个及以上的魔术回路,附加的伤害会提升至20,但魔力消耗量也一同翻倍。附加的魔法伤害可以无视敌人的护甲和伤害减免。

    被魔力充能的子弹会发出绚丽的紫光
    • 联机版

    在联机版中,只需要4颗紫宝石和6个噩梦燃料就可以制作这个配件,并且它不再消耗魔力,而是消耗理智值,安装1个和2个魔术回路的理智消耗分别为0.25和0.5/发子弹,如果玩家理智值低于15%,魔术回路的反噬和增伤效果都不会生效。

    在月岛区域,魔术回路的降san作用反而是有益的。

    基于无视护甲的特性,装配了魔术回路的枪在pvp模式中非常强大。

    画集

    1.魔术回路素材(画师:羽中)


    代码实现

    在饥荒中,想要完美实现“真实伤害”是很困难的,以下是一种代码量较少且兼容性较高的写法,欢迎大家提出更好的实现思路。

    1.修改护甲组件,使其无法抵挡真实伤害

    local function IgnoreArmor(self) 
        local old_can = self.CanResist
        function self:CanResist(attacker, weapon, ...)
            --对于带有“穿甲”标签的攻击者和武器, 返回假
            if (attacker and attacker:HasTag('homuraTag_ignorearmor')) or (weapon and weapon:HasTag('homuraTag_ignorearmor')) then
                return false
            else
                return old_can(self, attacker, weapon, ...)
            end
        end
    end
    
    AddComponentPostInit('armor', IgnoreArmor)
    

    2.在子弹击中目标时,给玩家添加“穿甲”标签,然后额外造成一次真实伤害

    --'HomuraProjectile'是晓美焰子弹的一个组件
    --这里只放了部分简化的代码, mod源码详见scripts/components/homura_projectile.lua
    
    function HomuraProjectile:OnHit(inst, owner, target)
        if not (target and target.components.health) then
            return
        end
    
        --[[......]]--
    
        if self.magic then --代表是否附加魔法伤害的变量
            owner:AddTag('homuraTag_ignorearmor') --添加标签
            local dmg = 10 
            target.components.combat:GetAttacked(owner, dmg, inst) --造成一次攻击
            owner:RemoveTag('homuraTag_ignorearmor') --移除标签
        end
        
        --[[......]]--
    end
    

    3.注意,上面的代码只是无视了玩家的护甲,并没有考虑到一些生物自带的伤害吸收。

    相关文章

      网友评论

        本文标题:【配件】魔术回路

        本文链接:https://www.haomeiwen.com/subject/frjckctx.html