【精品贴】DotA2里的伤害计算过程


老规矩,1080P大图镇楼

楼主 康猩猩  发布于 2014-04-09 16:44:00 +0800 CST  
dota中有各种减少伤害和增加伤害的设定,例如闪避、护甲、魔抗、魔免、虚无、主动减伤技能、被动减伤技能、主动加伤技能、被动加伤技能等等。当这些东西全部都集中在一个单位身上时,究竟先计算哪一个,就是一个值得研究和探讨的问题。
让我们来考验一下智商吧!
智商大考验:幽鬼装备穷鬼盾,升级了满级折射,小精灵链接了幽鬼,并且开启了满级过载,亚巴顿再给幽鬼一个满级无光之盾,队友船长给幽鬼幽灵船的船油减伤,大树再给幽鬼一个活体护甲,这时敌方祸乱之源用满级蚀脑贴身啄了幽鬼一口,那幽鬼到底是受到多少伤害呢?祸乱之源会受到多少折射伤害呢?

看完智商大考验,是不是瞬间感觉自己根本就不会玩dota?

没关系,本文将对dota里所有减伤和加伤进行研究,只要耐心读完,就能够显著提高你的智商

楼主 康猩猩  发布于 2014-04-09 16:48:00 +0800 CST  
目录:
一、护甲

二、魔法抗性

三、闪避

四、虚无

五、魔法免疫

六、减伤技能

七、加伤技能




楼主 康猩猩  发布于 2014-04-09 16:49:00 +0800 CST  
一、护甲

护甲包括护甲类型和护甲值,提到护甲类型,就必须提到攻击类型,dota沿袭war3的攻防伤害系数的体系,但系数做了细微调整。
详细系数见下表


*普通攻击是一种攻击类型,而不是泛指我们常常说的普攻
*攻击类型和护甲类型是相对的。




楼主 康猩猩  发布于 2014-04-09 16:51:00 +0800 CST  
当一个单位受到了物理攻击,在未考虑到其他减伤因素的前提下,其受到的伤害首先需要计算攻防系数,然后还要计算护甲值减伤,即物理抗性,这才是这个单位受到的物理攻击伤害。

为什么要有攻防系数和护甲值这两个设定呢?

作为游戏设计者,一方面为了丰富游戏内容,一方面为了更加真实,体现武器与防御的相生相克,肯定有些武器打某些防御好使,打另一些防御效果很差,在游戏里,就变成了攻击类型和护甲类型,有了不同的攻击类型和护甲类型,肯定就有不同的伤害系数。

另一个设定便是任何单位都有的防御力——护甲值。你可能会想,既然有了护甲值,想要体现某个单位防御力高,直接设定护甲值高不就行了吗,还需要攻防系数干什么。问题就出现在dota,也就是war3的护甲值减伤并非攻击力减护甲值这么简单的加减运算,而是一次函数运算。
这个公式是当护甲值为x时,护甲值减少的物理伤害y=0.06x/(1+0.06x),即受到的物理伤害z=1/(1+0.06x)。

所以,当游戏中出现加甲和减甲时,要体现某个单位天生防御力高,单纯的给其设定很高的护甲值就无法体现出其中的区别,必须提前设定这个单位的护甲类型就是比较硬,受到的攻击伤害比较低。
当然为了游戏平衡以及体现相生相克,并没有哪种护甲类型是最硬的,至少在dota里,无论哪种护甲类型都有克制其的攻击类型。

楼主 康猩猩  发布于 2014-04-09 16:54:00 +0800 CST  
前面提到了这个公式:y=0.06x/(1+0.06x),即受到的物理伤害z=1/(1+0.06x),准确的公式应该是这样的:
yp=0.06x/(1+0.06x) ①及zp=1/(1+0.06x) ②,x>0
yn=0.06x/(1-0.06x) ③,zn=(1-0.12x)/(1-0.06x)=2-1/(1-0.06x) ④,x<0


从公式①②,我们可以得知,当x趋于无穷大时,yp=1,zp=0
从公式③④,可以得知,当|x|趋于无穷大时,yn=-1,zn=2
即当你护甲值非常高时,基本属于物理伤害免疫(但不是绝对的物理伤害免疫,后面会说道为什么不是);
你的护甲值被减的再厉害,你所受的物理伤害最多也不过2倍。

由②,我们可以延生出另一个公式,设受攻击的单位生命值为hp,那么他能承受的物理伤害量pdmg=hp/z=hp*(1+0.06x)
即每增加一点护甲值,即x增加1,pdmg就增加6%*hp。

由①③,我们可以用一个分段函数把yp、yn合成一个函数
y=0.06x/(1+0.06x) x>0
y=0.06x/(1-0.06x) x<0

可以看出来,y是一个奇函数,即y(-x)=-y(x)

关于护甲值,我的研究就到这里为止了,相信大家对护甲应该有个初步的了解,获得成就:小学毕业!智商+10!

楼主 康猩猩  发布于 2014-04-09 16:59:00 +0800 CST  
三、闪避

这里的闪避包括任何可以造成攻击丢失的因素,包括自身闪避攻击、使目标攻击丢失、地形因素等。
地形因素即下坡攻击上坡会有25%的几率攻击丢失,只对远程单位有效。

在dota中,一个远程单位攻击是否能准确命中,首先计算地形因素,若地形因素没有造成攻击丢失,则进一步计算导致攻击丢失的负面状态,例如醉酒云雾、旋转飞斧等,若负面状态没有造成攻击丢失,再计算攻击目标的闪避技能,例如模糊、醉拳、闪避护符等,若依旧没有成功闪避,则此次攻击命中,否则丢失。
举个栗子:中了满级醉酒云雾的卓尔游侠在高地下攻击高地上的幻影刺客,幻影刺客已经升级了满级的模糊,则卓尔游侠攻击能够命中幻影刺客的概率p=(1-25%)*(1-75%)*(1-40%)=11.25%

值得注意的是,当一次攻击弹道已经出现,则此次攻击能否命中已经计算好,此时再获得闪避也无法改变结果,例如开启风行,若此次攻击已经计算出攻击命中,则无法躲避此次攻击。

在6.79后,闪避可以递减叠加,所谓递减叠加,和魔抗的叠加方式一样,层层递减。
在装备了金箍棒后,将无视上述的三种攻击丢失因素。

耐心读完此篇的,获得成就:考入重点中学!智商+5

楼主 康猩猩  发布于 2014-04-09 17:09:00 +0800 CST  
四、虚无

虚无是一种状态,因其在war3里又被定义为一种护甲类型,称为气化护甲,因此也具有攻防系数表里的各项系数,但不覆盖单位原有的护甲类型。
从攻防系数表里,可以看出来能对虚无造成伤害的只有魔法攻击和法术攻击,但在war3dota里没有魔法攻击。

实际上,在dota2里,我们不用按照war3的攻防系数表的角度去认识虚无,你只需要记住虚无能够增加受到的魔法伤害即可。

在dota中,若单位在虚无状态中,则处于绝对的物理免疫状态,任何物理攻击都对其无伤害(即使是军团的决斗),与100%闪避不同的是,物理攻击直接无法以虚无单位为目标(决斗除外)。

在dota中,虚无一般增加40%的魔法伤害,只有帕格纳的衰老有所不同,当对友方单位释放时,只增加20%其受到的魔法伤害,若对敌方单位释放时,则增加50%其受到的魔法伤害。

楼主 康猩猩  发布于 2014-04-09 17:15:00 +0800 CST  
五、魔法免疫

魔法免疫并非完全免疫所有魔法,只是免疫大部分魔法而已,还有相当一部分的技能,魔法免疫要么只免疫效果不免疫伤害,要么只免疫伤害不免疫效果,要么都不免疫。

与100%的魔法抗性不同的是,100%的魔法抗性依旧会受到100%的纯粹伤害,则魔法免疫则不受纯粹伤害的影响;部分无视魔法免疫的魔法伤害能对魔法免疫造成伤害,例如末日、午夜凋零、机器人的进军、回音击(初始伤害),但对100%魔法抗性的单位造成的伤害为0。

无论如何,请记住:魔法免疫≠100%魔抗

说道魔法免疫,还有一个概念必须提到,那就是作用对象。
常常在吧里看到有吧友认为魔法伤害对攻城车无效,实际上,并不是魔法伤害对攻城车无效,攻城车并没有魔免技能,而是作用对象不包括机械单位,即攻城车。

说道作用对象,请允许我再啰嗦啰嗦
关于jugg到底能不能在剑刃风暴中进行物理攻击的问题,答案是可以,可以对任何单位进行物理攻击,但只能对攻城车和建筑造成攻击伤害,对其他单位,甚至是魔法免疫单位,也不能造成攻击伤害,但装备了攻击特效的物品,则能打出攻击特效,以及狂战斧的分裂伤害。


耐心看完此篇的童鞋,获得成就:初中学霸!智商+10


楼主 康猩猩  发布于 2014-04-09 17:24:00 +0800 CST  
二、魔法抗性

有物理抗性,就有魔法抗性。
与物理抗性不同的是,魔法抗性的计算很简单,其实魔法抗性是攻防系数的一个分支而已,相比起复杂的护甲值函数,魔法抗性要简单得多。

由上面的攻防系数表,我们可以看到,法术攻击对英雄护甲的伤害系数是75%,这就是所谓英雄自带的25%魔抗(维萨吉只有10%,地卜师有35%)。
计算完攻防系数,还需要进一步计算这个英雄的其他增加魔法抗性的技能。

我们以裸装敌法师为例,升级了满级的法术护盾之后,敌法师拥有了额外的50%的魔法抗性,假设某个英雄对其释放了spd点魔法伤害的技能,那么他最终受到的魔法伤害sdmg=spd*0.75*(1-0.5)=0.375spd,此时的魔法抗性为62.5%,如果他再佩戴了挑战头巾,则sdmg=spd*0.75*(1-0.5)*(1-0.3)=0.2625spd,此时的魔法抗性为73.75%,如果再加上拉比克的光环,则sdmg=spd*0.75*(1-0.5)*(1-0.3)*(1-0.2)=0.21spd,此时的魔法抗性为79%。

dota2里的减魔抗就比较复杂,所谓减魔抗,实质都是增加受到的魔法伤害,dota2里所有显示的都是增加魔法伤害,而不是减魔抗,其中上古巨神的技能描述级出现了问题,所谓基础魔抗减少,其实是魔法伤害增加。

由于大部分英雄自带的魔法抗性都是25%,因此,增加魔法伤害是以剩下的75%为基础增加的,例如帕格纳对敌方释放衰老,可以增加50%的魔法伤害,那么目标英雄受到的魔法伤害为75%*150%=112.5%,此时该英雄的魔法抗性为-12.5%,如果再受到纷争面纱的作用,则该英雄受到的魔法伤害为75%*150%*125%=140.625%,此时该英雄的魔法抗性为-40.625%,再来个满级冰霜漩涡,则受到的魔法伤害为75%*150%*125%*130%=182.8125%,此时魔法抗性为-82.8125%,以此类推。

多个增加魔法伤害的技能的叠加规律就是这样,与增加魔法抗性类似,都是乘法叠加,而非线性叠加。

在这里万分感谢@惑幻之铃指出错误,这几天搞那个减伤技能搞得脑洞大开,居然把这个给搞错了,本人智商-50

这就是dota2里的魔法抗性叠加规律,与护甲不同的是,魔法抗性可以降低到比-100%还低。

恭喜@惑幻之铃 获得成就:捕虫达人!智商+50!

楼主 康猩猩  发布于 2014-04-09 17:48:00 +0800 CST  
六、减伤技能

减伤技能是本文的主体部分,本文将用较大的篇幅讲解dota2里的减伤技能。
减伤技能指能够减免目标受到的伤害的技能,包括主动技能和被动技能,以及物品。
修改魔法抗性和护甲的技能在这章就不再复述了,详情请看目录一、二。

那么dota里都有哪些非改变护甲魔抗的减伤技能呢?

英雄里有:
船长:幽灵船:减少50%的伤害
全能骑士:驱逐:免疫大部分魔法;守护天使:物理伤害免疫
树精卫士:活体护甲:吸收20/40/60/80点伤害
艾欧:过载:减少5/10/15/20%的伤害
钢背兽:钢毛背刺:减少来自背部的16/24/32/40%的伤害,减少来自侧面8/12/16/20%的伤害
潮汐猎人:海妖外壳:格挡10/20/30/40点物理攻击伤害
噬魂鬼:狂暴:魔法免疫
亚巴顿:无光之盾:吸收110/140/170/200点伤害;回光返照:将受到的伤害转化为治疗
主宰:剑刃风暴:魔法免疫
圣堂刺客:折光
灰烬之灵:烈火罩:吸收50/200/350/500点魔法伤害
虚空假面:回到过去:10/15/20/25%的概率躲避一切伤害
幽鬼:折射:减少10/14/18/22%的伤害
司夜刺客:尖刺外壳:抵挡每个伤害来源的一次伤害
美杜莎:魔法盾:消耗魔法值来吸收50%的伤害
暗影牧师:薄葬:使目标在接下去的5秒内不会死亡



物品里有:
圆盾:受到物理攻击时有60%的几率格挡20/10点伤害
穷鬼盾:受到来自英雄的物理攻击时能格挡20/10点伤害,受到普通单位的物理攻击有60%的几率格挡20/10点伤害
先锋盾:受到物理攻击时有80%的几率格挡40/20点伤害
洞察烟斗:法术护盾:吸收400点魔法伤害

楼主 康猩猩  发布于 2014-04-09 17:59:00 +0800 CST  
dota里有这么多的减伤技能,包括主动和被动,包括技能和物品,当这些东西错综复杂在一起时,该如何计算呢?

在经过复杂的测试和计算之后,一个简单的总结:
对于物理攻击,计算伤害的优先级如下:
魔法盾(美杜莎)>格挡(海妖外壳、先锋盾等)>护甲类型>护甲值>其他减少伤害技能
对于技能伤害,计算伤害优先级如下:
魔法盾(美杜莎)>法术护盾(洞察烟斗)=烈火罩(灰烬之灵)>魔法免疫>护甲类型>魔法抗性=护甲值>其他减少伤害技能

*烈火罩和法术护盾会同时减少剩余能吸收的魔法伤害。
举个栗子,灰烬之灵同时使用洞察烟斗和满级的烈火罩,莉娜对其释放两个1级450点伤害的神灭斩,则灰烬之灵受到210点伤害,因为释放第一个神灭斩时,洞察烟斗的法术护盾已经吸收了400点伤害,法术护盾消失,而烈火罩也同样吸收了450点魔法伤害,还能吸收50点魔法伤害,第二个神灭斩时,被烈火罩吸收掉50点伤害,还剩400点,再计算47.5%的魔法抗性,就是210点伤害。反之,当烈火罩的等级较低,能吸收的魔法伤害低于法术护盾时,则烈火罩先消失。

楼主 康猩猩  发布于 2014-04-09 18:03:00 +0800 CST  
上面的“其他减少伤害技能”包括:
船长:幽灵船:减少50%的伤害
树精卫士:活体护甲:吸收20/40/60/80点伤害
艾欧:过载:减少5/10/15/20%的伤害
钢背兽:钢毛背刺:减少来自背部的16/24/32/40%的伤害,减少来自侧面8/12/16/20%的伤害
亚巴顿:无光之盾:吸收110/140/170/200点伤害;回光返照:将受到的伤害转化为治疗
圣堂刺客:折光:抵挡3/4/5/6次伤害
虚空假面:回到过去:10/15/20/25%的概率躲避一切伤害
幽鬼:折射:减少10/14/18/22%的伤害
司夜刺客:尖刺外壳:抵挡每个伤害来源的一次伤害
暗影牧师:薄葬:使目标在接下去的5秒内不会死亡

当上述技能错中复杂在一起时,究竟该怎么计算呢?
实际上,这些技能依旧可以细分为:
主动、吸收伤害技能:
树精卫士:活体护甲:吸收20/40/60/80点伤害
亚巴顿:无光之盾:吸收110/140/170/200点伤害;回光返照:将受到的伤害转化为治疗
圣堂刺客:折光光:抵挡3/4/5/6次伤害
虚空假面:回到过去:10/15/20/25%的概率躲避一切伤害
司夜刺客:尖刺外壳:抵挡每个伤害来源的一次伤害
暗影牧师:薄葬:使目标在接下去的5秒内不会死亡
这些技能并不能真正地减少目标受到的伤害,准确的说,这些技能是把伤害吸收了,因此最终达到的效果与减少受到的伤害差不多。

被动减伤技能:
艾欧:过载:减少5/10/15/20%的伤害
钢背兽:钢毛背刺:减少来自背部的16/24/32/40%的伤害,减少来自侧面8/12/16/20%的伤害
幽鬼:折射:减少10/14/18/22%的伤害
这是真正能减少受到伤害的技能。

楼主 康猩猩  发布于 2014-04-09 18:06:00 +0800 CST  
那么计算时的优先级大致可以这么看,
被动减伤技能>回光返照=尖刺外壳=折光>主动、吸收伤害技能

其中,尖刺外壳比较特殊,当拥有法术护盾(洞察烟斗)时,法术护盾会吸收掉魔法伤害,尖刺外壳还是会使伤害来源眩晕,但不反弹伤害。
当回光返照、折光和法术护盾同时出现时,与尖刺外壳一样,法术护盾先吸收魔法伤害,折光再抵挡伤害,回光返照再回复生命值。

另外还有一些特殊的情况:
过载和幽灵船的减伤效果可以和钢毛背刺、折射线性叠加。计算伤害时,优先级高于无光之盾和活体护甲,即先计算过载和钢毛背刺的减伤效果,再计算无光之盾和活体护甲的吸收伤害效果。
例如,过载+钢毛背刺,可以实现40%+20%=60%的减伤效果。
*这些减伤技能+折射的组合,会减少幽鬼受到的伤害,但不会改变折射反弹的伤害。
例如,技能都满级的情况下,小精灵开启过载拉着幽鬼传送到敌方祸乱之源身边,祸乱之源贴身对幽鬼释放了蚀脑,则幽鬼受到174点伤害,祸乱之源受到66点折射伤害。
如果没有小精灵,贴身蚀脑,则幽鬼会受到234点伤害,祸乱之源依旧受到66点折射伤害。
再举个极端的栗子,无光之盾+折射,攻击力为200的敌方英雄A一下幽鬼,则无光之盾未破,幽鬼不掉血,敌方英雄会受到折射伤害。

楼主 康猩猩  发布于 2014-04-09 18:09:00 +0800 CST  
幽灵船(万恶的幽灵船):

幽灵船的船油减伤效果可以和过载、钢毛背刺、折射层级叠加,能够在计算完过载、钢毛背刺、折射的减伤后,再减少50%的伤害,在计算上反馈伤害后,和没有幽灵船时的伤害是一样的。

但当船油和无光之盾、活体护甲同时作用于一个单位时,现象会非常的奇怪。

当无光之盾和活体护甲能吸收的伤害值不足伤害值的50%时,即吸收的伤害值<船油减少的伤害值,则船油会直接覆盖无光之盾和活体护甲,使无光之盾和活体护甲无法正常吸收伤害,还会减少层数和被摧毁;反之,当无光之盾和活体护甲能吸收的伤害值>船油减少的伤害值,则无光之盾和活体护甲能正常地吸收伤害,但船油反馈的伤害依旧和没有无光之盾、活体护甲时一样多。
举个栗子:当亚巴顿给自己一个满级无光之盾,船长释放幽灵船给予亚巴顿船油,敌方祸乱之源对亚巴顿释放满级蚀脑,则亚巴顿受到100点伤害,无光之盾被摧毁,在船油结束后反馈了18x8=144≈150点伤害,总共受到250伤害,在我们的设想中,应该是亚巴顿受到50点伤害,船油再反馈50点伤害,总共受到100点伤害。

这是无光之盾能吸收的伤害200>船油吸收的150点伤害的情况下,若无光之盾的等级不超过2级,即吸收的伤害不超过150点,则在上述的情况中,无光之盾直接被船油覆盖,完全不起吸收伤害的作用,即亚巴顿会受到150点伤害,并且无光之盾被摧毁,船油反馈18x8≈150点的伤害,总共还是受到300点伤害。

楼主 康猩猩  发布于 2014-04-09 18:15:00 +0800 CST  
无光之盾和活体护甲的减伤优先级相同,但减伤效果不会叠加,受到伤害时,会同时减少二者吸收伤害的计数及层数,具体吸收伤害效果与二者中能吸收的伤害值高低有关,当无光之盾能吸收的伤害高于活体护甲,则无光之盾直接覆盖活体护甲的吸收伤害效果,反之当无光之盾能吸收的伤害低于活体护甲,则活体护甲覆盖无光之盾的吸收伤害效果。


到了这里减伤技能已经基本分析完了,综合上所有因素,计算伤害时,优先级如下:

对于物理攻击:
虚无>闪避>魔法盾(美杜莎)>格挡(海妖外壳、先锋盾等)>护甲类型>护甲值>过载=钢毛背刺=折射>折光=回光返照=尖刺外壳>幽灵船减伤>=无光之盾≈活体护甲

对于技能伤害:
魔法盾(美杜莎)>法术护盾(洞察烟斗)=烈火罩(灰烬之灵)>魔法免疫>护甲类型>虚无=魔法抗性=护甲值>过载=钢毛背刺=折射>折光=回光返照=尖刺外壳>幽灵船减伤>=无光之盾≈活体护甲



楼主 康猩猩  发布于 2014-04-09 18:21:00 +0800 CST  
公布智商大考验的答案啦,你猜对了吗?

幽鬼受到34点伤害,随后受到14x8=112点幽灵船反馈伤害,祸乱之源受到66点折射伤害。


这个答案是不是很奇怪,奇怪到你怎么也想不到?
不仅你想不到,我也怎么都想不到,这个答案竟然与去掉过载和活体护甲的情况是一样的,即在只有折射、无光之盾、幽灵船的作用下,幽鬼受到的伤害也是34点,反馈伤害也是14x8=112点,祸乱之源还是受到66点伤害。
过载在这样的条件下完全失效了。

不过过载失效的情况只有在智商大考验里的条件下才出现,在我对钢背兽和幽鬼的其他测试中,过载均能与钢毛背刺、折射正常叠加。


耐心读完此篇的吧友,获得成就:保送清北!智商+100

楼主 康猩猩  发布于 2014-04-09 18:25:00 +0800 CST  
七、加伤技能

明天再说吧,楼主还没吃饭呢

楼主 康猩猩  发布于 2014-04-09 18:29:00 +0800 CST  
OK,一顿饭吃了4天,终于要更新完最后这部分加伤技能了,下面开始正文

楼主 康猩猩  发布于 2014-04-14 14:50:00 +0800 CST  
七、加伤技能


说到减免伤害,就必须要提到增加伤害。


dota里能增加伤害的,除了改变护甲和魔法抗性,还有以下这些技能:


英雄:
鱼人守卫:冲刺:受到15%的额外伤害
不朽尸王:血肉傀儡:增加20%/25%/30%的伤害
陈:赎罪:增加8%/16%/24%/32%的伤害,增加的伤害的类型为物理伤害
暗影恶魔:灵魂猎手:增加20%/30%/40%/50%的伤害,增加的伤害的类型为纯粹伤害


物品:
疯狂面具:增加30%的伤害
紫苑:目标额外承受作用期间所受伤害的30%的伤害,伤害类型为魔法伤害

楼主 康猩猩  发布于 2014-04-14 14:52:00 +0800 CST  

楼主:康猩猩

字数:11009

发表时间:2014-04-10 00:44:00 +0800 CST

更新时间:2016-03-10 17:08:25 +0800 CST

评论数:803条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看