游戏之家 > 游戏库 > 永恒之柱

永恒之柱 战斗系统详解 攻击强度和伤害计算一览

 永恒之柱 战斗系统详解 攻击强度和伤害计算一览

当攻击判定的过程结束之后,将会进入伤害计算阶段,有效的攻击会被划分为擦伤(Graze)、击中(Hit)、暴击(Crit)三个强度,这三个强度分类会作为修正值加入伤害计算的过程。这里的“伤害”可以分为直接伤害和状态伤害两大类,直接伤害以损伤目标的耐力值和生命值为目的,状态伤害可以使目标受到负面效果影响。

在POE中,伤害计算以攻击来源的基础数据为准,所有的修正值以相加的方式累计,然后作用于基础数据之上,那么攻击来源的基础数据是什么?

对于直接伤害来说,攻击来源的基础数据指的就是武器、法术、或者物品的基础伤害值。上面三张图片分别给出了劲弩(Arbalest)、烈焰之扇(Fan of Flames)、箭矢陷阱(Arrow Trap)的描述文字,基础数据就是上图中蓝圈部分划出的数值。第一张图片中的“(base 22-32)”代表劲弩的基础伤害数值。第二张图片中的“(base 40-55)”代表法术烈焰之扇的基础伤害数值。第三张图片中的“(base 20-27)”代表箭矢陷阱的基础伤害数值。直接伤害的计算以这些数据为基准。这里需要特别指出,武器攻击的伤害计算以白板武器的数据为准。

对于状态法术来说,攻击来源的基础数据指的是法术效果的持续时间,上图中蓝圈部分代表了油滑术的基础持续时间,状态伤害的计算以这些数据为基准。

在介绍伤害计算公式之前,首先说明擦伤(Graze)、击中(Hit)、暴击(Crit)的具体作用

擦伤(Graze):擦伤可以为攻击来源的基础数据提供 -50% 的伤害修正

击中(Hit):击中不提供任何伤害修正

暴击(Crit):暴击可以为攻击来源的基础数据提供 +50% 的伤害修正

在了解以上基本的概念之后,首先介绍状态伤害的计算方法。

Duration = BaseDuration * ( 1 + IntBonus ) * ( 1 + Special )

Duration代表法术效果的实际持续时间,BaseDuration代表法术效果的基础持续时间,IntBonus代表智力提供的加值,Special在这里特指擦伤、击中、暴击这三种伤害强度。下面以具体的示例来说明计算过程:

智力18的法师对敌人施放油滑术(Slicken)并且打出暴击,那么敌人会跌倒多长时间呢?

油滑术的基础效果时间4秒

18智力可以提供40%加成

暴击可以提供50%加成

根据以上数据可以算出

Duration = 4 * ( 1 + 40% )* ( 1 + 50% ) = 8.4

下面是实际测试截图,可以看到计算结果无误

直接伤害的计算由于有大量的天赋、武器、技能等加值,所以计算的复杂度比状态伤害要高很多。直接伤害计算可以划分为两个阶段,第一阶段:攻方伤害修正,第二阶段:守方伤害修正,第三阶段:最终伤害的确认。具体的流程是:

攻方发起一次直接伤害攻击,然后根据攻击来源的基础数据和自身的各种修正条件计算出一个伤害期望值,并且在满足条件时提出附加转化伤害的要求。

守方在此伤害期望值的基础上根据自身的伤害减免状况对该伤害作出修正,并得出减免之后的伤害值。如果攻方提出附加转化伤害的要求,守方还要根据攻方转化的伤害类型对伤害期望值进行单独修正。

攻方以减免之后伤害值为基础计算攻击伤害和附加伤害,最终得出实际伤害值。

一、攻方伤害修正

在POE中,伤害的修正方式有“倍乘修正”和“叠加修正”两种描述形式,下面两张图片分别给出描述的具体实例:

第一张图片中以“x 1.2 Damage”的形式描述伤害修正,这就是倍乘修正,我用Multiple来表示这种形式的修正值。在直接伤害计算的过程中,倍乘修正以( Multiple -1 )的形式参与计算。

第二张图片中以“+ 30% Damage”的形式描述伤害修正,这就是叠加修正,我用Addition来表示这种形式的修正值。在直接伤害计算的过程中,叠加修正无需改动直接以相加的形式参与计算。

根据以上提供的修正值参与方式,攻方伤害期望值的计算公式如下:

ExpDamage = BaseDamage * [ 1 + ∑(Multiple -1) + ∑Addition + Special ]

其中ExpDamage代表攻方的伤害期望值,BaseDamage代表攻击来源的基础伤害数据,∑(Multiple -1)代表所有倍乘修正值减1之后的总和,∑Addition代表所有叠加修正值的总和,Special特指擦伤、击中、暴击这三种攻击强度。

由于POE中的直接伤害都是范围取值,所以我们只能根据武器、法术或者物品的伤害上下限计算出伤害的浮动范围作为参考,对于某次伤害的具体数值是无法进行预测和计算的。下面就用一个完整的攻击实例来说明伤害范围的计算过程

上面三张图片给出一个7级战士的状态信息、包括他的武器、天赋、属性等等,那么当这个战士开启“Savage Attack”进行攻击时,他的伤害期望值是多少呢?下面是分析计算的过程

这个战士使用短矛(Spear)进行攻击,因此攻击来源的基础数据就是短矛的基础伤害值,注意!以同类型的白板武器为准,也就是11-16,而不是第一张图中蓝圈部分标注的13-18,这是精确计算伤害的前提。

短矛本身带有“Fine”附魔,提供“x 1.15 Damage”的伤害加成

该战士学习了平民武器精通“Weapon Specialization:Peasant”,因此在使用短矛时获得“x 1.15 Damage”的伤害加成

开启“Savage Attack”技能可以获得“x 1.2 Damage”的伤害加成

威力(Might)20,可以提供 + 30% 的伤害加成

我们以MinExpDamage来表示最小伤害期望值,以MaxExpDamage来表示最大伤害期望值,然后分别计算擦伤、击中、暴击的伤害浮动范围

当攻击判定为擦伤时:

MinExpDamage = 11 * [ 1 + ( 1.15 - 1 ) + ( 1.15 - 1 ) + ( 1.2 - 1 ) + 30% + ( -50% )] = 14.3

MaxExpDamage = 16 * [ 1 + ( 1.15 - 1 ) + ( 1.15 - 1 ) + ( 1.2 - 1 ) + 30% + ( -50% )] = 20.8

当攻击判定为击中时:

MinExpDamage = 11 * [ 1 + ( 1.15 - 1 ) + ( 1.15 - 1 ) + ( 1.2 - 1 ) + 30% ] = 19.8

MaxExpDamage = 16 * [ 1 + ( 1.15 - 1 ) + ( 1.15 - 1 ) + ( 1.2 - 1 ) + 30% ] = 28.8

当攻击判定为暴击时:

MinExpDamage = 11 * [ 1 + ( 1.15 - 1 ) + ( 1.15 - 1 ) + ( 1.2 - 1 ) + 30% + ( +50% )] = 25.3

MaxExpDamage = 16 * [ 1 + ( 1.15 - 1 ) + ( 1.15 - 1 ) + ( 1.2 - 1 ) + 30% + ( +50% )] = 36.8

根据以上计算,该战士在对没有任何伤害减免能力的敌人进行武器攻击时,擦伤伤害范围14.3~20.8,击中伤害范围19.8~28.8,暴击伤害范围25.3~36.8,因为POE采用浮点数进行运算,所以小数部分由于取舍规则的限定可能存在 ± 0.1 的误差……

通过以上计算,我们可以得知这个战士的伤害期望值范围,在正常情况下,游戏会根据实际战斗情况从这个范围里随机选择一个数值作为伤害期望值,然后提交给守方进行伤害修正。但是,我们可以看到武器上存在“Shacking Lash: + 25% Shock Damage”的附魔,因为短矛属于穿刺伤害类型的武器,它不能造成冲击伤害,所以这个 + 25% 是不能作为修正值列入基本伤害计算过程的。但是在使用该武器进行攻击时,攻方可以根据这条附魔属性向守方提出附加转化伤害的要求。在POE中该过程的流程如下:

第一步、攻方在可能的伤害范围内随机选择一个数值作为伤害期望值

第二步、伤害期望值确定之后,攻方首先根据武器的伤害类型将该数值提交给守方进行修正,此时守方收到一个穿刺类型的伤害值。

第三步、攻方根据“Shocking Lash”这条附魔属性将上一步的伤害期望值全部转变为冲击伤害,然后再次提交给守方进行修正,同时要求守方将修正结果的25%加入最终伤害。此时守方收到一个冲击类型的伤害值,数值等于伤害期望值。

二、守方伤害修正

我们继续上面的示例,假设守方是一个穿着板甲的人物,那么他的伤害减免能力应该如下图所示

图中的蓝圈部分列出了守方的伤害减免能力,“Damage Reduction:12”是通用伤害减免,这表示他可以将Raw伤害之外的所有类型的伤害降低12点。下面是三项特定伤害减免,其中对挥砍伤害减免15点、对穿刺伤害减免15点、对冲击伤害减免6点。注意,特定伤害减免与通用伤害减免不是叠加关系,而是替代关系,特定伤害减免的优先级高于通用伤害减免。那么我们可以这样描述这个人物的伤害减免能力:

除了Raw伤害之外,该人物对挥砍伤害减免15点、对穿刺伤害减免15点、对冲击伤害减免6点、对其他类型的伤害减免12点。

在攻方伤害修正的计算过程中,我们给出了一个战士攻击时的具体实例,那么在攻方伤害修正的过程结束之后,守方收到了一个穿刺类型的伤害值,我们用PierceDamage来表示。守方同时还收到了一个冲击类型的伤害值,我们以ShockDamage来表示。在守方进行伤害修正之前,PierceDamage和ShockDamage在数值上是相等的,那么守方如何对这些伤害进行修正呢?

很简单,守方将根据自身的伤害减免能力,使用同类型的伤害减免数值进行修正。计算过程也非常简单:修正之后的伤害值 = 攻方伤害值 - 守方减免值。那么:

( PierceDamage - 15 ) 就是修正过后的穿刺类型伤害值

( ShockDamage - 6 ) 就是修正过后的冲击类型伤害值

由于攻方对于冲击伤害值有25%的转化率,所以守方实际需要承受的冲击伤害为 ( ShockDamage - 6 ) * 0.25

那么经过守方的伤害修正之后,攻方的整体伤害值就变为

( PierceDamage - 15 ) + ( ShockDamage - 6 ) * 0.25

如果没有特殊情况的话,这就是伤害计算的最终值。但是,假如守方拥有极强的伤害减免能力,那么很可能会让攻方的伤害变得极低,甚至削减成负值。如果攻方的攻击不但不能伤害对方,反而会给对方加血,那显然是不合理的,所以在POE中规定:

A、对于任何有效的攻击,伤害减免之后的数据不可以是负值。

B、对于任何有效的攻击,主体伤害至少可以造成攻方修正值的20%伤害。

这又是什么意思,我们举例来说明:

在刚才的示例当中,假设守方依靠自身的伤害减免能力将 PierceDamage 和 ShockDamage 全部降为负值。那么由于穿刺类型的伤害直接源自攻方的武器,因此将被视为主体伤害,冲击伤害由主体伤害转化而来,所以视为附加伤害。根据上面两条规则的限制,穿刺伤害的最终修正值将变为 PierceDamage * 20% ,而 ShockDamage 将被减免为零。此时,游戏中的战斗记录会在修正伤害值的末尾加上(MIN)的标识加以区分,我把这个过程称为伤害最小值限定修正。如下图蓝圈部分所示:

我们可以用( PierceDamage - 15 ) < PierceDamage * 20% 这个不等式来计算发生伤害最小值限定修正的临界点,计算结果为 PierceDamage < 18.75,也就是说,如果攻方提供的伤害期望值小于18.75,那么经过守方伤害减免之后就会出现伤害最小值限定修正。

根据以上的各种计算,在我们所举出的示例当中,攻方对守方发动武器攻击之后,经过双方修正之后的最终伤害值范围如下,计算过程略过:

当攻击判定为擦伤时,伤害浮动范围是 5.0~9.5

当攻击判定为击中时,伤害浮动范围是 8.3~19.5

当攻击判定为暴击时,伤害浮动范围是 15.2~29.5


点此进入PKVS《永 恒之 柱》游戏论坛专区