TTBN战网论坛

 找回密码
 立即注册
查看: 457|回复: 0

攻击速度计算全解析

 关闭 [复制链接]

400

主题

595

帖子

10万

积分

管理员

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

T币
52765
金钱
52971
威望
53019
信用
0

优秀会员荣誉会员特别贡献管理员勋章管理员勋章管理员勋章VIP会员勋1VIP会员勋2VIP会员勋3VIP会员勋4VIP会员勋5VIP会员勋6VIP会员勋7VIP会员勋8VIP会员勋S

发表于 2016-2-20 17:34:06 | 显示全部楼层 |阅读模式
攻击速度计算全解析
概述
基本动作速度计算公式
FPA={HitShift*FramePerDirection/[(BaseRate+SI)*AnimationSpeed/100]}-1
名词解释
FPA                           每次动作的帧数
HitShift                      攻击精度参数,数值固定为256
FramePerDirection             在每个方向上的动作长度(基础帧数)。
BaseRate                      基础速率,数值取决于动作类型。
SI                            速度增量。
AnimationSpeed                动作速度
注意事项
1. FramePerDirection通常随武器及动作类型取值于Animdata.D2,其中武器类型在weapons.txt中定义,动作类型在skills.txt中定义。唯一特殊的是拥有顺序动作的技能,它的FramePerDirection由D2Common.dll定义。普通攻击动作类型较特殊:它是A1和A2的组合。需注意个别角色A1和A2速度有所不同。如:PAL用双手剑(2HS)以及ASN用爪类武器(HT1、HT2)。
  FramePerDirection和AnimationSpeed两个数据的查询方法参看下文。
2. A1、A2动作还有一个特定参数StartingFrame,具体参看下文。
3. BaseRate为基础速率,取决于动作类型。绝大多数动作类型BaseRate=100。格档和打击回复=50。以下为例外。
ASN的Dragon tail将受到-40的惩罚,为100-40=60。
如下拥有顺序动作的技能,将受到-30的惩罚,为100-30=70。具体为:
   AMA:Jab、Impale
   BAR:Frenzy、Double Throw
   ASN:Fists of Fire、Dragon Claw、Claws of Thunder、Blades of Ice
BAR的顺序动作技能Double Swing有20的奖励,为100+20=120。
4. SI=Speed Increase,速度增量。
A1、A2、S1、S2、S3、S4、TH、KK等攻击类动作对应数值为SI=EIAS+SIAS-WSM;
SC、GH、BL动作对应数值分别为SI=EFCR、EFHR、EFBR;
SQ动作依据附录二中的seqtrans列来定。
其中
  EIAS=[(120*IAS)/(120+IAS)]
  SIAS为各种技能的加速或减速效果,例如狂热灵气,速度爆发,衰老,圣冰减速等。
  WSM为武器的基础速度。
  EFCR=[(120*FCR)/(120+FCR)]
  EFHR=[(120*FHR)/(120+FHR)]
  EFBR=[(120*FBR)/(120+FBR)]
5. AnimationSpeed通常随武器及动作类型取值于Animdata.D2。唯一特殊的是拥有顺序动作的技能,它的AnimationSpeed同Get Hit(GH)动作类型。
6. []为向下取整,{}为向上取整。
7. BaseRate+SI最大值为175(所以攻击速度有上限),最小值为BaseRate*15%
具体数值的查询方法
以此计算,未知数为FramePerDirection和AnimationSpeed。要确定这两个数值,需要先确定CofName,该代码由三个部分组成。下面以SOR使用普通攻击的情况为例来说明。
首先确定角色类型。一般是取前两个字母。比如sor就取SO。具体代码见二楼附录一。
然后确定动作类型。比如普通攻击分为两种,A1和A2,smite为S1,施法技能为SC,等。具体见三楼及四楼附录二。
最后确定武器类型。比如单手挥击武器代码为1HS。见二楼。
以上三个代码组合在一起即为CofName。据五楼、六楼和七楼附录四可查得该代码对应的FramePerDirection和AnimationSpeed。

一、普通攻击
这里的普通攻击,包括天生的普通攻击A1、A2动作,以及那些调用A1动作的技能。
计算公式
FPA={HitShift*(FramePerDirection-StartingFrame)/ [(BaseRate+SI)*AnimationSpeed/100]}-1
基本同上文所述,但多了个StartingFrame参数。该参数为起始帧数,仅仅amazon和sorceress有这项。其他角色为0。
StartingFrame起始帧数表
==============================
武器类型   Ama      Sor  Pal/Nec/Bar/Dru/Asn
──────────────────────
hth         1        1        0
bow         0        0        0
1hs         2        2        0
1ht         2        2        0
stf         2        2        0
2hs         2        2        0
2ht         2        2        0
xbw         0        0        0
ht1         0        0        0
==============================
武器类型含义见一楼。
具体计算方法同上文。需要注意的是,普通攻击分为A1和A2两种,每次攻击随机出现其中一种。需要注意,个别角色A1和A2速度有所不同。如:PAL用双手剑(2HS)以及ASN用爪类武器(HT1、HT2)。

二、顺序动作
顺序动作列表
===============
Seqnum   Skill
──────────
  1     Jab
  2     Sacrifice
  3     n/a
  4     Charge
  5     Conviction
  6     Inferno
  7     n/a
  8     Impale
  9     Fend
10     Whirlwind
11     Frenzy, Double Swing
12     Chain Lightning, Lightning
13     Leap
14     Leap Attack
15     Double Throw
16     Fists of Fire, Dragon Claw, Claws of Thunder,Blades of Ice  
17     n/a
18     Arctic Blast
19     Dragon Talon
20     n/a
21     Dragon Flight
22     Wearwolf/bear
23     Blade Fury
==================
注:A2pet的Jab技能FramePerDirection数值为14,每次攻击为两次,分别在第5、9帧。
顺序动作的计算公式
FPA={HitShift*FramePerDirection/[(BaseRate+SI)*AnimationSpeed/100]}
因为顺序动作的最后一击是显示的,所以最后不减1。
顺序动作的FramePerDirection由D2common.dll中提取,与CofName无关,具体数值参看八楼附录五。AnimationSpeed同Get Hit动作类型。
一些顺序动作的BaseRate会受到惩罚或奖励
1.如下拥有顺序动作的技能,将受到-30的惩罚,为100-30=70。具体为
   AMA:Jab、Impale
   BAR:Frenzy、Double Throw
   ASN:Fists of Fire、Dragon Claw、Claws of Thunder、Blades of Ice
2.BAR的顺序动作技能Double Swing有20的奖励,为100+20=120。
特殊情况
1. Bar的Leap技能速度不会变化,Leap Attack的Leap部分速度也不变,Attack部分速度会变化。
2. Bar的Whirlwind技能的攻击速度计算请参看Bar WW攻击速度的计算,双挥技能请参看Barbarian双挥速度的计算
3. Pal的charge技能攻击速度恒定为7F。若距离目标太近,则自动转为普通攻击。
4. Asn的Dragon Flight整个攻击动作固定为23帧,其中10帧为施法(飞行)时间,13帧为踢击时间。并且无任何因素能影响它,包括Slow效果。
5. Asn的Blade Fury一次发标动作固定为19帧(从游戏中看就是发两标这个动作),同Dragon Flight一样,无任何因素能影响它。
6. Dru变形状态的攻击速度计算,参看下文第四步。

三、回退特性动作
啥叫回退特性(roll back)?举例来说,比如本来一次打击动作需要20F,于第13F击中对手,剩余7F为收手动作。若它属于roll back技能,则在击中对手的瞬间此动作便结束,无收手动作,返回开始下一次打击,此谓回退。此类的技能有Fend(Ama的击退)、Strafe(Ama的炮轰)、Zeal(Pal的热诚)、Fury(Dru的狂怒)和Dragon Talon(Asn的龙爪),它们共同的特征就是在一次攻击中包含多重打击。
一次完整的Rollback攻击分为3个部分:第一击、后续打击、最后一击。最后一击是完整的,有收手动作。
我们通常说的Rollback技能的攻击速度指的是第二部分----后续打击的攻击速度。
计算公式
第一击FPA={HitShift*(FrameDataActionFlag-StartingFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
后续打击FPA={HitShift*(FrameDataActionFlag-CurrentFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
最后一击FPA={HitShift*(FramePerDirection-CurrentFrame)/[(BaseRate+SI)*AnimationSpeed/100]}-1
名词解释
FrameDataActionFlag      为除最后一击外的动作长度,可于附录四中查询。
CurrentFrame             前一次攻击后,Roollback回退后的当前帧。也就是本次攻击的起始帧。
StartingFrame            第一击的起始帧。仅当动作类型为A1&A2时有效。数值可参考“普通攻击”中的StartingFrame列表。
CurrentFrame=[[前一击CurrentFrame+前一击FPA*[(BaseRate+SI)*AnimationSpeed/100]/HitShift]*(1-RollbackPercent)]
备注
1. RollbackPercent=100%时,CurrentFrame=0,所有的后续打击速度相同。且当该角色StartingFrame=0时,第一击和后续打击的攻击速度相同。
2. RollbackPercent=100%时,最后一击的攻击速度同普通攻击。                                    
3. 对RollbackPercent不等于100%的Rollback技能来说,CurrentFrame是个变量,后续打击的速度可能会不相同。
4. StartingFrame仅对A1&A2动作有效。在此处,即对Dragon Talon无效(KK动作),对Fend、Strafe、Zeal、Fury四个技能均有效。
5. Fury的攻击速度计算见下文。
6. 各技能RollbackPercent的数值见下表。
==================
skill     RollbackPercent
─────────────
Strafe          50%
Fend            60%
zeal           100%
Fury           100%
D-Talon        100%
==================

四、变形后的攻击速度
首先计算两个变量
Delay=[HitShift*HumanformFramePerDirection(A1)/[(BaseRate+WIAS-WSM)*HumanformAnimationSpeed/100]]
WereformAnimationSpeed=[PrevFrames*256/Delay]

名词解释
WIAS                           武器提供的IAS
OIAS                           非武器提供的IAS
HumanformFramePerDirection     人形状态A1动作类型下的FramePerDirection
PrevFrames                     previous mode frames  变形状态NU动作类型下的FramePerDirection,熊人状态为10,狼人状态为9
最终计算公式
1.狂怒Fury的计算公式(roll back)
第一击&后续打击FPA={HitShift*WereformFrameDataActionFlag/[(BaseRate+SI)*WereformAnimationSpeed/100]}
最后一击FPA=普通攻击={HitShift*WereformFramePerDirection/[(BaseRate+SI)*WereformAnimationSpeed/100]}-1
2.普通攻击和其他技能的计算公式
FPA={HitShift*WereformFramePerDirection/[(BaseRate+SI)*WereformAnimationSpeed/100]}-1
WereformFramePerDirection为变形状态的FramePerDirection,数值见附录四。

五、FCR计算
计算公式
普通施法动作的施法速度:FPC={HitShift*FramePerDirection/[(BaseRate+EFCR)*AnimationSpeed/100]}-1
若是顺序动作施法技能,则:FPC={HitShift*FramePerDirection/[(BaseRate+EFCR)*AnimationSpeed/100]}
名词解释
FPC              Frames Per Cast,每次施法动作所需帧数。
BaseRate         基础速率,取决于动作类型。施法为100。
EFCR             Effective FCR=[120*FCR/(120+FCR)],[ ]表示向下取整。
BaseRate+EFCR最大值为175,最小值为BaseRate*15%
特殊情况
1. Inferno和Arctic Blast施法动作固定为15帧,不受FCR影响。动作标志帧为第10帧,即第10帧后一直保持攻击状态。
2. Blade Fury施法动作固定为19帧,不受FCR影响。动作标志帧为第12帧,由于一个动作发两标,即第12帧后一直保持6帧一标的攻击状态。
3. Dragon Flight整个动作固定为23帧,其中10帧为施法(飞行)时间,13帧为踢击时间。不受FCR和IAS以及其他因素影响,包括Slow效果。
另外,A1罗格的内视速度同普通攻击速度。

六、FHR计算
计算公式
FramesPerHR={HitShift*FramePerDirection/[(BaseRate+EFHR)*AnimationSpeed/100]}-1
名词解释
FramesPerHR      Frames Per HitRecovery,每次打击恢复动作所需帧数。
BaseRate         基础速率,取决于动作类型。打击恢复为50。
EFHR             Effective FHR=[120*FHR/(120+FHR)],[ ]表示向下取整。

七、FBR计算
计算公式
FPBlk={HitShift*FramePerDirection/[(BaseRate+EFBR+Skill_FBR)*AnimationSpeed/100]}-1
名词解释
FPBlk            Frames Per Block,每次格挡动作所需帧数。
BaseRate         基础速率,取决于动作类型。格挡动作为50。
EFBR             Effective FBR=[120*FBR/(120+FBR)],[ ]表示向下取整。
Skill_FBR        技能提供的FBR数值。一般情况下为0;神圣之盾技能开启时,数值为50.
特殊情况
Nec装备Set变形Vampire形态后格挡动作同打击恢复动作,其格挡速度同打击恢复速度。
格挡率的计算仍然同其人类形态;增加FBR,有时候会没有格挡动作,但是格挡仍然发挥作用。

FHR/FBR比较详细的计算流程可参考被击中后恢复速度(FHR)及格挡速度(FBR)的计算全解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


 无新贴子的板块     有新帖子的板块