| Louis-J |
|
|
|
|
|
等级:混沌避难所 |
积分:4100 |
金币:6590 |
发贴:2951 |
信用:0 |
注册时间:2004-03-16 |
IP:220.173.*.* | |
|
第(0)楼,发贴时间:05-02-06 18:08 |
| Animation Frame—Dtalon Fpa Specific
Animation Frame —Dtalon Fpa
Specific 动作帧数—Dtalon详解
BY Louis-J 本帖出自:HOLY Clan和暗黑品网
感谢: jrichard
对Fpa原理和Dtalon攻击特性的详尽论述,本贴许多资料和理论来自他 Brianc84 对C/C
WSM公式的计算推导及提出Dtalon的极限为7/3/3/3……而非7/2/2/2…… Ruvanal
提出Rollback概念及对其的精彩论述
写这个帖子前后花费了4天的时间,期间查阅论证了许多资料数据并做了多次测试。本帖虽然主要是说Dtalon这个技能的攻击帧数,但其实是对D2所有动作运行帧数的一个剖析。 由于我个人对D2这个游戏的认识有效,难免有错误纰漏的地方,请LRs多多指正。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 完成一个动作所需的帧数公式 Frames Per Attack={HitShift*(FramePerDirection)
/ [AnimationSpeed*(BaseRate+SpeedIncrease)/100]}-1
Fpa=Frames Per Attack 每次攻击帧数 HitShift=256
FramePerDirection 动作长度 AnimationSpeed 动作速度 BaseRate
基础效率 SI=SpeedIncrease=Skill EIAS-100*Slow%-WSM+EIAS
SpeedIncrease 速度增量 Skill EIAS
技能提供的EIAS:包括Asn的BoS(速度爆发),Pal的Fanaticism(狂热光环) Slow%
减速效果:包括Slows Target(使目标减速),Clay Golem(土魔),Freeze(各种冰冻效果),Slow
Missiles(缓慢攻击),Decrepify(衰老)等等。 WSM=Weapon Speed Modifier
武器基础速度 EIAS=Effective Increase Attack Speed =
[120*IAS/(120+IAS)] 有效IAS IAS=Increased Attack
Speed=(120*EIAS)/(120-EIAS) 装备提速属性之和 { } 向上取整 [ ]
向下取整 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ Animation:动作 Animation types:动作类型 Weapon
types:武器类型 FramePerDirection:动作长度 AnimationSpeed:动作速度
在游戏中,无论角色什么时候做什么动作,包括走、跑、格挡、攻击,甚至站立不动,游戏都会有记录。在这个过程中,首先游戏确定其为什么动作,这取决于角色使用何种动作类型和武器类型;确定后,游戏就会运做这个动作直到下一个动作;再确定下一个为什么动作,运做这个动作到再下一个动作,周而复始。
与动作相关的参量是动作长度和动作速度。大多数动作的动作速度是256,但也不全是。 动作类型不同,动作长度和动作速度也会不同。 同一种动作类型,武器类型不同,动作长度和动作速度也会不同;至于Asn的踢击技能,用的都是鞋子-o-(确切的说不划分在武器类型之内),所以踢击技能的动作长度和动作速度都是一样的;一些动作类型的动作长度和动作速度不受武器类型的影响,比如打击恢复、施法动作,但还是受角色类型的影响(最直观的例子就是Nec的Human形态和Vampire形态其施法动作的速度就不同)。 当然,如果角色类型不同,即使动作类型和武器类型都相同,其动作长度也可能会有差异,比如Asn/Pal、Ama、Sor、Dru/Nec、Bar使用1HS的武器类型做Zeal的攻击,其动作长度就各不相同。 (说的有些拗口,希望大家能听懂-o-)
Animation types:动作类型 (From PlrMode.txt)
A1 – Attack 1
A2 – Attack 2 BL – Blocking
DD - Death
DT
– Death Throe GH – Get hit(hit recovery)
KK - Kick
NU
– Neutral(outside of town) RN - Run
S1
– Skill 1 S2 – Skill 2 S3 – Skill 3 S4 – Skill
4 SC – Spell casting TH – Get Hit(in town) TN –
Neutral(in town) TW – Walk(in town) WL – Walk(outside of
town)
Weapon types:武器类型 (From Weapons.txt) 1HS -
One Handed Swinging (axes, swords, flails, maces, hammers,
clubs and wands) 1HT - One Handed Thrusting/Throwing*
(Daggers, javelins, potions) 2HS - Two Handed Swords
(swords) 2HT - Two Handed Thrusting (All Spear class
weapons) BOW – Bows (All Bow class weapons) HT1 - Single
wielded katars (Katar, Claw, Scissors type assassin class
weapons) HT2 - Dual wielded katars (Katar, claw, scissors
type assassin class weapons) HTH - Hand to Hand (Bare
fists) STF - Two handed Swinging (Staves, polearms, axes,
mauls) XBW – Crossbows (All Crossbow class
weapons) *注:throwing axes不属于1HT(One Handed Throwing)类型,
而属于1HS(one handed
swinging)类型。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ BaseRate:基础效率 SpeedIncrease:速度增量 Skill
EIAS:技能提供的EIAS
WSM:武器基础速度 EIAS:有效IAS IAS:装备提速属性之和
BaseRate:基础效率 BaseRate只取决于角色使用何种动作类型,不受装备的影响,大多数的BaseRate为100。Asn的所有BaseRate除了格挡和打击恢复为50及一些顺序攻击如(FoF/CoT/BoI/DC
为70,其实是个攻击速度惩罚-30,即100-30=70);DTail为60(攻击速度惩罚为-40,即100-40=60);其他都是100
。
(BaseRate+SpeedIncrease) 上限为175,这也是为什么攻击动作有急速封顶Fpa的原因。 关于下限,由于角色攻击时基本不考虑减速效果,则SpeedIncrease=Skill
EIAS-WSM+EIAS=0-30+0=-30(武器的最慢WSM为30,关于C/C
的WSM在下面论述)。所以SI的下限为-30,所以基本上(BaseRate+SpeedIncrease)下限为100-30=70。 如果考虑减速效果,则(BaseRate+SpeedIncrease)=BaseRate+Skill
EIAS-100*Slow%-WSM+EIAS,很显然能达到0甚至是负数的下限,但是当(BaseRate+SpeedIncrease)
<
BaseRate*15%,(BaseRate+SpeedIncrease)=BaseRate*15%,则基本上(BaseRate+SpeedIncrease)下限为100*15%=15。
SI=SpeedIncrease:速度增量 =Skill
EIAS-100*Slow%-WSM+EIAS 比如9级的BOS(Attack Speed
+44),20%的减速效果,WSM=-10,EIAS=20 则SI=44-100*20%-(-10)+20=54
Skill
EIAS:技能提供的EIAS Skill EIAS = ((110*lvl) * (b-a))/(100 *
(lvl+6)) + a b=60,a=15(BoS速度爆发),
b=40,a=10(Fanaticism狂热光环) (from skillcalc.txt and
skills.txt) 这个公式算出的EIAS和游戏中我们看到的数值个别级别有些出入,比如1级的BOS(Attack
Speed +21),但用这个公式的话 Skill EIAS = ((110*lvl) * (b-a))/(100 *
(lvl+6)) + a SLVL 1 BOS EIAS=((110*1) * (60-15))/(100 *
(1+6)) + 15=110*45 / 100*7 +
(15)=22
其实稍微懂些java方面的语言就很好理解了 javascript: function
dm(l,a,b){ return
a+dec((b-a)*dec(110*l/(l+6),0)/100,0) } 其中a,b即相当于上面公式中的a,b;l
即相当于上面公式中的技能等级 Skill Lvl。 没学过也不要紧,看下面这个公式吧 IF
LEVEL>0 Skill EIAS = a + ROUNDDOWN( (b-a)*ROUNDDOWN(
110*LEVEL / (LEVEL+6) ) /100) b=60,a=15,Level=1代入 =15 +
ROUNDDOWN( 45*ROUNDDOWN(110*1/7) /100) =15 + ROUNDDOWN(
45*ROUNDDOWN(15.xxx) /100) =15 +
ROUNDDOWN(45*15/100) =15 + ROUNDDOWN(45*15/100) =15 +
ROUNDDOWN(6.75) =15 + 6 =21 搞定。 (Skill
EIAS只要看游戏中直接显示的数值就可以了,这个公式有兴趣的当消遣看吧- -
!)
WSM:武器基础速度 当装备武器/盾牌或双手武器,没什么说的,就是我们在许多资料上常看到的那样,是该武器的WSM,如-10啊,0啊,30啊什么的。 当用双爪时 <1>先放屏幕左边装备槽,再放屏幕右边装备槽 WSMs=(right_WSM
+ left_WSM)/2 例:两把爪的WSM分别为10和-30,则最终WSMs为-10
<2>先放屏幕右边,再放屏幕左边(EIAS C/C Bug) WSMs =
(right_WSM + left_WSM)/2 + (right_WSM -
left_WSM) 例:先把WSM为-30的放在屏幕右边,再把WSM为10的放在屏幕左边 WSMs =
(-30+10)/2 +(-30–10) = (-20)/2 + (-40) = (-10) +
(-40) = -50 先把WSM为10的放在屏幕右边,再把WSM为-30的放在屏幕左边 WSMs =
(10+(-30))/2 + (10-(-30)) = (-20)/2 + (40) = (-10) +
40 = 30 当把WSM快的爪先放在屏幕右边时,就可以利用这个EIAS
Bug了。 但是当角色在游戏中切换武器后,WSMs将变回<1>的状态- -!。 注:C/C
bug对踢击有效。
EIAS:有效IAS =Effective Increase Attack
Speed =
[120*IAS/(120+IAS)] 比如装备提供20IAS,则EIAS=[120*20/(120+20)]
=17
EIAS/IAS 换算表格 +----+----+
+----+----+ +----+----+ +----+----+ |EIAS| IAS| |EIAS| IAS|
|EIAS| IAS| |EIAS| IAS| +----+----+ +----+----+ +----+----+
+----+----+ | 1| 2| | 31| 42| |
61| 125| | 91| 377| | 2| 3| |
32| 44| | 62| 129| | 92| 395| |
3| 4| | 33| 46| | 63| 133| |
93| 414| | 4| 5| | 34| 48|
| 64| 138| | 94| 434| | 5| 6| |
35| 50| | 65| 142| | 95| 456| |
6| 7| | 36| 52| | 66| 147| |
96| 480| | 7| 8| | 37| 54|
| 67| 152| | 97| 507| | 8| 9| |
38| 56| | 68| 157| | 98| 535| |
9| 10| | 39| 58| | 69| 163| |
99| 566| | 10| 11| | 40| 60|
| 70| 168| | 100| 600| | 11| 13| |
41| 63| | 71| 174| | 101| 638| |
12| 14| | 42| 65| | 72| 180| |
102| 680| | 13| 15| | 43| 68| |
73| 187| | 103| 728| | 14| 16| |
44| 70| | 74| 194| | 104| 780| |
15| 18| | 45| 72| | 75| 200| |
105| 840| | 16| 19| | 46| 75| |
76| 208| | 106| 909| | 17| 20| |
47| 78| | 77| 215| | 107| 988| |
18| 22| | 48| 80| | 78| 223| |
108|1080| | 19| 23| | 49| 83| |
79| 232| | 109|1190| | 20| 24| |
50| 86| | 80| 240| | 110|1320| |
21| 26| | 51| 89| | 81| 250| |
111|1480| | 22| 27| | 52| 92| |
82| 259| | 112|1680| | 23| 29| |
53| 95| | 83| 270| | 113|1938| |
24| 30| | 54| 99| | 84| 280| |
114|2280| | 25| 32| | 55| 102| |
85| 292| | 115|2760| | 26| 34| |
56| 105| | 86| 304| | 116|3480| | 27|
35| | 57| 109| | 87| 317| | 117|4680| |
28| 37| | 58| 113| | 88| 330| |
118|7080| | 29| 39| | 59| 117| |
89| 345| | 119|14280 | 30| 40| |
60| 120| | 90| 360| | 120|inf | +----+----+
+----+----+ +----+----+
+----+----+
注:这个换算表同样适用于EFCR/FCR、EFHR/FHR、EFBR/FBR的相互换算。
IAS:装备提速属性之和 =Increased
Attack Speed=(120*EIAS)/(120-EIAS)
这个是和EIAS的换算公式 很简单,装备上所有的IAS叠加起来。 如果是双爪,只算先装备的爪上的IAS(如果切换后,则只算屏幕左方即手套上面爪的IAS,也是大家常说的主爪位置):这个只相对使用主爪攻击如TS、CS、PS和踢击技能及陷阱放置而言。 一些双爪轮流击打如normal
attack、FoF、CoT、BoI包括WW,则只算当前攻击爪的IAS。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
[
本贴由 silent23 在 04-07 21:22 编辑过. ]
| |