• 1811阅读
  • 1回复

伤害改变的机理 [复制链接]

上一主题 下一主题
离线铃铛
 

发帖
59624
金钱
6311
91币
0
信誉
0
资产
0 IST
在线时间
3431 小时
注册时间
2009-08-31
最后登录
2021-02-27
只看楼主 倒序阅读 使用道具 楼主  发表于: 2010-11-19 09:10:23
伤害改变的机理
1.10伤害研究系列之三:伤害改变的机理 by Pansesus
伤害改变的机理

编者:Tommi Gustafsson
译者:Pansesus

译者注:
1 表格我已经全力修改了,但错位难以避免。请大家原谅。
2 抗性的表面数值可以大于100,这主要是因为LR和Conviction的计算问题,请大家注意。
3 现在的神符Crescent Moon出现了魔法吸收属性(Magic Absorb )

一、伤害类型
D2中一共有6种不同的伤害类型:火、冰、电、毒、魔法和物理(实体)。虽然人物状况栏里只有4种抗性的数值,但每一种伤害类型都有相对应的抗性。

1.1 伤害类型的例子
火系伤害  大火球(女巫)和火焰箭(亚马逊
冰系伤害  冰封球(女巫)和冰冻箭(亚马逊)
电系伤害  新星(女巫)和闪电之怒(亚马逊)
毒系伤害  毒之新星(死灵法师)
魔法伤害  骨矛、骨灵(死灵法师)和狂战士(野蛮人
物理伤害  普通攻击伤害和大部分的其他非元素伤害

1.2 毒系伤害与中毒持续时间
与其他的伤害类型不同,毒系的最终伤害由两个变量决定:每帧的毒系伤害和中毒持续时间。总伤害的计算公式是:每帧毒系伤害 x 中毒持续时间(单位:帧,每25帧为1秒)因此,有两个相当于抗性的属性可作用于毒系伤害:毒系抗性(Poison Resistance)和减少中毒持续时间(Poison Length Reduction),前者影响每帧的毒系伤害量,而后者影响中毒时间。

二、可以改变伤害的参数

游戏中一共有8种可以改变伤害的参数

抗性(Resistances)
百分比吸收(Percentage absorb)
直接吸收(Direct absorb)
伤害减少X或魔法伤害减少X(Damage reduced by X and Magic damage reduced by X)
女巫的能量护盾(Energy Shield)
死灵法师的骨甲和德鲁伊的旋风甲(Bone Armor and Cyclone Armor)
因角色而造成的伤害改变(如PvP伤害的改变)
减少中毒持续时间(Poison Length Reduction)

2.1 伤害改变参数的属性

这些属性已列于下面的表格中。

———————————————————————————————————————————
伤害减少属性   简称     所影响的伤害类型  难度惩罚(4) 下限   上限
                         (噩梦/地狱)
———————————————————————————————————————————
                                      75%(1)
抗性+X%,四种   Resistance  冰/火/电/毒     -40%/-100%   -100%   95%(2)
不同类型                                  100%(3)
———————————————————————————————————————————
所有抗性+X    同上     冰、火、电、毒   同上      同上   同上
———————————————————————————————————————————
伤害减少X%    Resistance  物理        无       -100%   50%(5)
(物免)     和 DR%                          100%(3)
———————————————————————————————————————————
中毒持续时间   PLR     中毒持续时间    -40%/-100%    -100%   75%(1)
减少x%                                   100%(3)
———————————————————————————————————————————
伤害减少X     DR      物理        无       无    无
———————————————————————————————————————————
魔法伤害减少X   MDR     冰、火、电、魔法  无       无    无
———————————————————————————————————————————
吸收X%      Absorb%   冰/火/电      无       无    40%
三种不同类型
———————————————————————————————————————————
+X吸收      Absorb    冰/火/电      无       无    无
三种不同类型
———————————————————————————————————————————
能量盾,女巫   ES      物理、冰、火、电  无       无    无
                和魔法
———————————————————————————————————————————
骨甲,死灵法师  BA      物理        无       无    无
———————————————————————————————————————————
旋风甲,德鲁伊  CA      冰、火、电     无       无    无
———————————————————————————————————————————
因角色而造成
的伤害改变    XvX     所有伤害类型    无       无    无
———————————————————————————————————————————
(1)75%是玩家角色与佣兵一般情况下的上限
(2)95%是在穿上+最大抗性的装备(如守护天使Guardian Angel )后可能达到的上限。
(3)100%是绝对上限,无法超越的(注)。拥有100%抗性的怪物意味着对此伤害类型免疫。
(4)难度惩罚只作用于玩家和佣兵,对怪物、石魔(Golem)和属下(Minion)无效
(5)50%是玩家和佣兵正常情况下的上限


2.2 魔法伤害减少(MDR)对持续性(每帧伤害计算)法术的作用效果
在作用于一些特定的持续性魔法时,MDR的效果会被削弱。(详情请看我翻译的“1.10 里魔法伤害降低属性的改变对每帧伤害法术的影响”)

2.3 因角色而造成的伤害改变(XvX)
伤害会因为攻击者和防御者(称为XvX因素)的种类不同而发生改变,下表列出了所有可能的情况


┌─┬────────────────────────────────┐
│  │                            防御者                              │
├─┼─────┬───┬───┬─────┬──────┬─────┤
│  │ XvX 表格 │ 玩家 │ 佣兵 │石魔/部下 │  特殊Boss  │ 普通怪物 │
│攻├─────┼───┼───┼─────┼──────┼─────┤
│  │   玩家   │ 17%  │ 100% │   100%   │    100%    │   100%   │
│  ├─────┼───┼───┼─────┼──────┼─────┤
│  │   佣兵   │ 17%  │ 25%  │   100%   │50%/35%/25% │   100%   │
│击├─────┼───┼───┼─────┼──────┼─────┤
│  │石魔/部下 │ 17%  │ 100% │   100%   │    100%    │   100%   │
│  ├─────┼───┼───┼─────┼──────┼─────┤
│  │ 特殊Boss │ 100% │ 300% │300%/500% │     --     │   100%   │
│者├─────┼───┼───┼─────┼──────┼─────┤
│  │ 普通怪物 │ 100% │ 100% │   100%   │    100%    │   100%   │
└─┴─────┴───┴───┴─────┴──────┴─────┘


1. 部下指的是除了佣兵和石魔外玩家所能控制的生物
2. 特殊Boss指的是关底Boss和Monstats.txt文件里有eBoss=1这一项的怪物
3. 佣兵对特殊Boss的伤害为50%/35%/25%,分别对应普通/噩梦/地狱难度


2.4 从吸收属性中获得的生命值
吸收装备只会给你数值相当于其实际抵消伤害的生命值。角色从吸收属性中获得的生命值会直接加在玩家当前的生命值上。但总和不得超过其最大生命值。因此,即使你的吸收值很高,也依旧有可能遭受伤害。实际上,如果最终伤害超过了玩家的最大生命值,吸收装备是不能将角色从死神那里救回来的了。



三、抗性的计算

3.1 抗性计算的顺序与和改变伤害参数的影响
抗性会因为某些技能的影响或是难度惩罚而减少。以下是抗性计算的顺序:

1 抗性
确定需要计算的抗性种类,将装备上、技能上和其他有关属性上具有的该种抗性的数据加起来(求和)。

2 能够降低抗性的诅咒、灵气
减掉能够降低抗性的诅咒、灵气对抗性造成的影响,如果这些技能是作用于具有该项伤害免疫的怪物,那么效果要除以5。这些技能包括:

————————————————————————————————
技能                 影响的抗性        对抗性造成的影响(1)
                                     普通目标      免疫目标
————————————————————————————————
伤害加深(AD)       物理             -100          -20
审判(Conviction)   冰、火、电       -X            -X/5
衰老(Decrepify )   物理             -50           -10
降低抵抗(LR)       冰火电毒         -X            -X/5
————————————————————————————————
(1)X取决于技能对抗性的减少值


3 角色降低抗性的技能和魔法属性
再计算能够降低抗性,但不直接作用于目标的技能和魔法属性造成的影响。它们无法影响免疫怪物的抗性,但如果怪物在前一步骤中被破免,则这些技能和魔法属性将发挥全效。


————————————————————————————————
技能或魔法属性      所影响抗性         对抗性造成的影响(1)
                                    普通目标       免疫目标(2)
————————————————————————————————
冰系掌握(CM)      冰               -X             0
————————————————————————————————
-X% 敌人冰/火       冰/火/电/毒      -X             0         
/电/毒抗性
————————————————————————————————
(1)X取决于技能或魔法属性对抗性的减少值
(2)指的是到此步为止抗性依旧是100的怪物


4 难度惩罚
减去难度惩罚的数据,这一条只作用于玩家与佣兵,对怪物、石魔(Golem)和属下(Minion)无效。

5 上限与下限
根据上限与下限改变数据,注意怪物、石魔(Golem)和属下(Minion)的上下限同玩家、佣兵的不一样。

6 忽略抗性的影响
技能和魔法属性中“忽略抗性”(如圣骑士的避难所Sanctuary )在此步奏效,如果该步骤前抗性大于0,则将抗性设为0。如果抗性小于0,则本属性没有任何作用。这一影响只作用于数值计算上,计算机不会改变目标的实际抗性的。

3.2 抗性计算中需要注意的几点
那些能够降低毒系抗性的技能和物品属性同时也能降低“减少中毒持续时间”(PLR)对结果的影响。举个例子,-50%敌人毒系抗性减少50点毒系抗性和50点PLR。
天堂之拳(Fists of Heavens)的闪电攻击无法减少抗性。
ActV所得到的卷轴可以增加10%的冰、火、电、毒抗性。


四、计算顺序

4.1 伤害改变参数的影响:

伤害改变参数对最终伤害的影响有极为严格的顺序:

1 因角色而造成的伤害改变(XvX) 
2 女巫的能量护盾(Energy Shield)
3 死灵法师的骨甲和德鲁伊的旋风甲(Bone Armor and Cyclone Armor) 
4 伤害减少X或魔法伤害减少X(DR and MDR) 
5 抗性(Resistances) 
6 百分比吸收(% Absorb) 
7 直接吸收(Direct Absorb)

计算中的每一步都不能把伤害降到0以下的,得到的结果我称之为Damage Dealt(DD)。最后的三步计算如下所示:

1 将法力值减去(32 - 心灵传动Telekinesis基础等级) / 16 x 由ES所吸收的伤害
2 加入吸收所得到生命值
3 生命值再减掉DD的伤害

4.2 其他的影响

“伤害转换为魔法消耗”属性的影响在所有伤害改变参数计算完后计算
因为荆棘灵气(Thorns)、攻击反噬(Iron Maiden)和荆棘之灵(Spirit of the Barbs)所造成伤害的计算是基于对方所有伤害改变参数作用之后所得到的伤害值。

4.3 防御(Defense)与格挡(Blocking )与伤害改变之间的关系

防御与格挡是在to-hit(打击)一步中进行计算的,这一步骤发生于伤害计算之前。游戏中准确的计算顺序是这样的:

1 检查防御力
2 检查格挡几率(防御者跑动时减为原来的1/3,跑动的刺客武器格挡(Weapon Block)忽略不计)
3 决定攻击者是否造成伤害,是则击中目标
4 进行伤害的计算


五、伤害计算公式

5.1 Damage Dealt,获得生命(Life Gained)和失去法力(Mana Lost)的计算公式

假设每一步计算中伤害值都没有减到0,则我们可以得到得到下面三个关于Damage Dealt,获得生命和失去法力的计算公式:

Damage Dealt = (Damage * XvX / 100 * (1 - ES / 100) - ArmorSkill - DR) * (1 - Resistance / 100) * (1 - Absorb% / 100) - 

Absorb

Life Gained = (Damage * XvX / 100 * (1 - ES / 100) - ArmorSkill - DR) * (1 - Resistance / 100) * Absorb% + Absorb

Mana Lost = (32 - TelekinesisBaseLevel) / 16 * Damage * XvX / 100 * ES / 100 

此公式中的Resistance, Absorb%, XvX, 和ES都取的是整数,比如说50。

5.2 最终伤害

如果我们再假设获得的生命值全部加到了角色的生命条中(没有超过最大生命值),那么最终伤害如下所示(实际上就是将Damage Dealt伤害与吸收所得生命相减):

最终伤害 = Damage Dealt - Life Gained

将其他数据代入,我们得到:

最终伤害 = (Damage * XvX / 100 * (1 - ES / 100) - ArmorSkill - DR) * (1 - Resistance / 100) * (1 - 2 * Absorb% / 100) - 2 * 

Absorb

如果最终伤害为负数,你将得到生命值。

对公式的解释:

Damage:攻击者的初始伤害
XvX:因角色而造成的伤害改变,数值见上表
ES:女巫的能量护盾(减少除去毒系伤害的其他伤害)
ArmorSkill:死灵法师的骨甲(减少物理伤害)和德鲁伊的旋风甲(减少冰、火、电伤害)
DR:伤害减少X(减少物理伤害)或魔法伤害减少X (减少冰、火、电、魔法伤害)
Resistance:抗性(减少相对应的伤害类型)或伤害减少X%(减少物理伤害)
Absorb%:百分比吸收(减少相对应的伤害类型) 
Absorb:直接吸收(减少相对应的伤害类型)
TelekinesisBaseLevel:心灵传动Telekinesis基础等级(女巫电系魔法)

下面是声明,懒得译了,终于……吁——

Acknowledgements
Adamantine for pointing out several omissions and mistakes in an early version of the page updated to the 1.10 version of Diablo 2.
Adeyke for information about resistance calculations.
Jarulf for the application order of the damage modification effects and for the information about unit type modifications. 
Ruvanal for testing that MDR applies to fire, cold, lightning and magic damage but not poison damage.
Steve Estes for suggesting to add the application point of Damage Goes To Mana and how defense and blocking relate to damage modification effects.

离线铃铛

发帖
59624
金钱
6311
91币
0
信誉
0
资产
0 IST
在线时间
3431 小时
注册时间
2009-08-31
最后登录
2021-02-27
只看该作者 沙发  发表于: 2010-11-19 09:10:48
伤害改变的顺序和机理补充
感谢sd2099833

1.对物理攻击附带元素伤害,计算顺序为
魔法伤害减少(mdr) 
元素抗性
元素吸收
伤害减少(dr)
伤害减少%(dr%)

2.mdr对以物理伤害为载体的元素魔法伤害,不但能抵消元素,还能抵消物理伤害,顺序是先抵消元素伤害,然后物理
但当有和攻击方一样的元素吸收情况下,这时不抵消物理伤害,只抵消元素伤害,比如xx物理伤害附带xx火伤害,
这时带火吸收的物品时,mdr不再抵消物理伤害, 但换成其他吸收,如冰和电吸收时,mdr还能抵消物理伤害。

3.物理伤害减少(dr),对附加在物理伤害上元素或魔法攻击伤害同样有效,这时能抵消物理和元素伤害
顺序是先抵消物理伤害,然后抵消元素

4.mdr与dr都存在时2者不会发生冲突,mdr还能抵消元素然后物理伤害,dr也能抵消物理然后元素伤害。


以下是测试流程
测试环境 tcp/ip, 官方mod,普通难度
攻击者bar
防守方sor

 代码:测试1:
bar 带1000火伤害地sc,pvp也就是170伤害 
bar 普通攻击,169.xx~170物理+170火伤害对光pp sor造成340伤害,
然后当sor带起300物理伤害减少(dr)地小符后
sor血 掉血
4960     -40
4920     -40
4880     -40   
4840     -40
4801     -39
4761     -40
4721     -40
4681     -40
4641     -40
4601     -40
4562     -39

结论:dr对附加在物理伤害上的元素伤害有作用

 代码:测试1-A 
攻击者:普通攻击物理伤害400-401,魔法伤害500
防守者:HP 6093,DR 120 
受到伤害: 400-401×0.17 + 500×0.17 - 120 = 33-34
HP 
6093
1、6060——↓33 
2、6026——↓34 
3、5993——↓33 
4、5960——↓33 
5、5926——↓34

测试者:Louis-J

 代码:测试1-B 
[code]攻击者:普通攻击物理伤害400-401,魔法伤害500
防守者:HP 6093,DR 280 
受到伤害: 400-401×0.17 + 500×0.17 - 120 = 33-34
HP 
6093
1、6093——↓0
2、6093——↓0 
3、6093——↓0 
4、6093——↓0 
5、6093——↓0

结论:DR对附加在如普通攻击之类的物理伤害上的魔法伤害起作用。        
测试者:Louis-J

 代码:测试2
bar用狂战士, 499~500攻击, 狂战士200%增加伤害
对sor物理伤害(499~500)*(1+100%+200%)*17%=339.xx~340, 带1000火伤害小符对sor火伤害170
sor带300dr小符,
sor血     掉血
4054     510   
3544     510
3035     509
2525     510

结论:dr对附加在魔法伤害上的元素伤害无效

 代码:测试2-A 
攻击者:Berserk技能魔法伤害2070-2071,魔法伤害500
防守者:HP 6093,DR 280
受到伤害: 2070-2071×0.17 + 500×0.17 = 436.9-437.07 
HP 
6093
1、5655——↓438 
2、5216——↓439 
3、4779——↓437 
4、4341——↓438 
5、3903——↓438

结论:DR对附加在如Breserk之类的魔法伤害类型技能上的魔法伤害不起作用。    测试者:Louis-J

 代码:测试3
bar 170物理,170火伤害
sor dr300, 火吸收100, 
sor 血     加血
2913     100
3013     100
3113     100   
3213     100
3313     100
3413     100
3513     100
................都同上   
4013     100

结论:火焰吸收计算在dr前, 先吸收了100点火伤害加到血上, 剩下70点火伤害和169.xx~170点物理伤害全给dr抵消


 代码:测试4
sor换dr 180, 火吸收100,测试是不是先吸收了100火伤害加到血上,然后dr抵消剩下70点火伤害和110点物理伤伤害
剩下59.xx~60点伤害,每击总共+血40~40.xx
sor血 +血
4102     +40
4142     +40
4182     +40
4223     +41
4263     +40
4303     +40
4343     +40
4383     +40
4423     +40
4464     +41

结果完全相同,又换了冰冻,闪电,同样如此.
结论:元素吸收在dr之前计算

 代码:测试5
bar 不带dam小符, 基础攻击1~2对sor伤害0.xx, 火伤害170,冰伤害170
sor dr180,冰抗50% , 
如果抗性先起作用
sor血     掉血
4697     76
4622     75
4547     75
4471     76
4396     75
4320     76

后冰抗换成50%火抗也一样
以上数据看来,元素抗性计算在dr前,170*50% =85
85+170+0.xx -180dr=75.xx
结论:元素抗性计算在dr前

 代码:测试6
测试dr抵消顺序, 先抵消物理还是先抵消元素,
169.xx~170物理伤害,170火伤害,
sor dr 180, dr 50%
sor血     掉血
4290     160
4130     160
3970     160
3811     159
3651     160

如果先抵消物理伤害的话,掉血应该是,169.xx~170物理伤害全部给抵消,50%dr不起作用,
火伤害给抵消10~10.xx, 最后掉血 159.xx~160,
如果先抵消火伤害,那170点火伤害全部抵消, 再抵消10点物理伤害,剩下159.xx~160物理伤害,
50% dr%, 掉血应该79.xx~80
结论:dr先抵消的是物理伤害,后抵消元素伤害,由于决定元素伤害的抗性,吸收都在dr前计算,
所以无论那种元素先给dr抵消,不影响最后伤害


 代码:测试7
bar 不带dam小符, 基础攻击1~2对sor伤害0.xx, 火伤害170,冰伤害170
sor dr180,冰抗50%, 冰吸收100
sor血     加血
4405     85
4490     85
4575     85
4660     85
4745     85

符合170*50%=85, 吸收85冰伤害加到血上, 剩下都给180dr抵消。
结论:元素抵抗计算在吸收和dr前

 代码:测试8
bar 物理伤害169.xx~170, 火 170
sor 摸法伤害减少(mdr)300
sor血     掉血
4387     40
4347     40
4307     40
4267     40
4228     39

结论: 魔法伤害减少(MDR)对带元素伤害的物理攻击起作用,能抵消带元素伤害的物理攻击

 代码:测试9
bar 169.xx~170物理,170火伤害
sor mdr 300, 火吸收100
sor血 掉血
3208     170
3038     170
2869     169
2699     170

换成其他吸收100, 反而只掉40血
结论:当有与攻击方同种元素吸收情况下,mdr忽略抵消物理伤害,只抵消元素伤害


 代码:测试10
bar 169.xx~170物理,170火伤害
sor mdr 300, 火抗50%
sor血     掉血
3946     39
3906     40
3866     40
3826     40
3787     39

mdr计算在元素抗前,能降低物理伤害,并先抵消元素伤害,由于mdr对各元素和魔法伤害是同时抵消的
所以先抵消哪种元素抗无法影响最后伤害,比如170冰,170火, 170魔法伤害,1个170mdr就可抵消掉以上所有


 代码:测试11
bar 物理伤害169.xx~170, 火 170
sor dr 120, 魔法伤害减少(mdr)180
sor血     掉血
4705     40
4666     39
4626     40
4586     40
4546     40
4506     40
4466     40
4427     39

sor换成120 mdr, 180 dr结果也一样,区别只是一个看上去会有火焰的效果,一个没有
结论:dr和mdr在一起时都起作用

 代码:测试11-B
bar 物理伤害169.xx~170, 火 170
sor dr 180, mdr60 ,火抗50% 
按照以上测试的出的计算顺序, 先mdr抵消60点火伤害,剩下110点火伤害*50%抗=55
170物理+55 火-180dr=45血
sor血     掉血
193     45
148     45
103     45
58     45
13     45

符合计算顺序,并且mdr的存在不影响 dr抵消元素伤害
快速回复
限100 字节
 
上一个 下一个