切换语言: Deutsch English Español Français 한국어 Русский Українська

伤害

From Official Factorio Wiki
Revision as of 15:33, 9 July 2018 by Quadnucyard (talk | contribs) (Update.)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

概述

在Factorio,实体有生命,可以死亡/被破坏,有抗性。伤害被定义为通过使用攻击来降低实体的生命的概念,例如用枪对它射击,或者食人虫咬它。一个实体的抗性将确切地定义实体将从任意攻击中减免多少伤害。

玩家的的最大生命值是250(没有能量盾)。其他实体的生命值被列在它们各自的条目中。

成就

伤害的概念直接与下列成就有关:

Run-forrest-run-achievement.png 你确定你有驾照?

撞倒树木一百棵(100)。

Pyromaniac-achievement.png 放火烧山,牢底坐穿!

烧毁树木一万棵(10k)。

Steamrolled-achievement.png 摧枯拉朽之势

撞毁虫巢十个(10)。

Golem-achievement.png 金钟罩铁布衫

单次受到500点以上伤害并存活下来。

Watch-your-step-achievement.png 迷之归西

被行进中的机车撞死。

伤害类型

伤害类型 用于
物理伤害 手枪、冲锋枪子弹(标准弹匣/穿甲弹匣/贫铀弹匣),霰弹枪 (标准霰弹/穿甲霰弹),食人虫,斧头 (铁斧镐/钢斧镐),防御无人机
碰撞伤害 碰撞(内燃机车/汽车的)
火焰伤害 火焰喷射器
腐蚀伤害 沙虫喷吐虫
毒性伤害 剧毒胶囊
爆炸伤害 标准火箭弹爆炸火箭弹标准手雷],集束手雷
激光伤害 激光炮塔, 掩护机器人/进攻机器人, 个人激光防御模块

穿透力

穿透力存在于坦克弹药和穿甲霰弹。它决定了在不能够继续前进之前,发射物能对敌人HP敌人造成多少伤害。为了穿透敌人,敌人必须被发射物杀死,杀死的伤害必须小于当前的穿透力。[1] 所处理的伤害也降低穿透力。例如,用一个有300穿透力的炮弹攻击一个有75生命值的中型食人虫,意味着炮弹将穿透4个中型食人虫,杀死它们,并且仍能摧毁/伤害又一个目标。

抗性

抗性有两方面:

减少,或"flat"抗性

减少抗性减少了指定数值的伤害,只要造成的伤害不会小于1。如果结果伤害会小于1,则使用另一个公式。 设R表示flat抗性,D表示输入伤害,m为计算flat抗性后修正伤害。然后

如果 R+1<D

M=D-R

否则如果 D>1

M=1/(R-D+2)

否则

M=1/(R+1).

如果flat抗性匹配或超过原始伤害,则修正伤害渐近为0,如下面的示例表所示:

伤害 flat抗性 修正伤害(有着0%抗性)
5 0 5
5 1 4
5 2 3
5 3 2
5 4 1
5 5 1/2
5 6 1/3
5 7 1/4
5 8 1/5
... ... ...

百分位抗性

百分位抗性减少了指定百分比的伤害。当两种抗性都存在时它被应用于flat抗性之后,从而改变上面的“修正伤害”值,将其降低指定的百分比。如果该值为100%,则该实体免疫伤害。作为一个例子,一个拥有25%物理伤害抗性的实体被用100物理伤害的一颗子弹击中,会受到75伤害而不是100。 设M表示从上述适用公式导出的修正伤害,P表示百分数抗性(以小数形式,所以25%=0.25),F表示最终伤害,然后

F=M*(1-P)

在Factorio,抗性以下列方式显示:

减免抗性/百分比抗性

所以,一个显示10/20%的火焰抗性的实体意味着该实体具有10的flat抗性和20%百分位火焰抗性。因此,如果所说的实体要受到30火焰伤害,那么在应用抗性后之后,它们会受到16伤害。

计算如下:

D=30, R=10, 所以 R+1=21<D=30, 然后我们对M使用上面第一个公式:

M=30-10=20

然后因为 P=20%=0.2, 我们获得

F=20*(1-0.2)=20*0.8=16

组合公式

用D表示原始输入伤害(适用类型的),R表示flat抗性(对适用类型的伤害),P表示小数形式的百分数抗性(对相同类型的伤害)(例如20%=0.2),并用F表示对目标的最终伤害(适用类型的)。

如果 R+1<D

F = (D - R) * (1 - P)

否则如果 D>1

F = (1 - P) / (R-D+2)

否则

F = (1 - P) / (R+1)