饥荒

【配件】魔术回路

2019-07-23  本文已影响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.注意,上面的代码只是无视了玩家的护甲,并没有考虑到一些生物自带的伤害吸收。

上一篇下一篇

猜你喜欢

热点阅读