【配件】魔术回路
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.注意,上面的代码只是无视了玩家的护甲,并没有考虑到一些生物自带的伤害吸收。