• 1965阅读
  • 1回复

Weapon Block 的格挡率和格挡速度 [复制链接]

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

发帖
59624
金钱
6311
91币
0
信誉
0
资产
0 IST
在线时间
3431 小时
注册时间
2009-08-31
最后登录
2021-02-27
只看楼主 倒序阅读 使用道具 楼主  发表于: 2010-11-19 12:02:12

本帖出自[url=/]http://til.sggo.cn] 光耀者——混沌要塞
原帖链接:http://til.sggo.cn/showthread.php?p=34003#post34003

By 深山老农 Louis-J


WB的CTB问题——主要是跑动时,国内的Asn界一直以来都有分歧
大致有以下3种观点
A:除以1/3
B:保持不变
C:无格挡
其实这个问题,早在04年5月,在ABRPG就经过多次的讨论,包括Ruvanaladeyke等都有发言。Ruvanal当时得出的结论是:除了站立不动外,WB只在攻击状态时才被检测,其他象Walk、Run时都无格挡adeyke同时期在SP MOD环境下做的测试也验证了这个观点——但并没有在BN上测试验证过。


测试目的:WB在各个状态下的格挡率
测试环境:BN A3 D2X Ladder
测试人物:C/C Asn,WB CTB=49%



静止站立状态
①攻击者使用Normal Attack:100次hit,格挡掉49次
②攻击者使用Guided Arrow:100次hit,格挡掉50次
③攻击者使用Smite:100次hit,格挡掉45次
④攻击者使用Fire Ball:100次hit,格挡掉52次
Stand状态,WB的格挡率不变


走动状态
①攻击者使用Normal Attack:100次hit,格挡掉0次
②攻击者使用Guided Arrow:100次hit,格挡掉0次
③攻击者使用Smite:100次hit,格挡掉0次
④攻击者使用Fire Ball:100次hit,格挡掉0次
Walk状态,WB格挡率=0%


跑动状态
①攻击者使用Normal Attack:100次hit,格挡掉3次
②攻击者使用Guided Arrow:100次hit,格挡掉2次
③攻击者使用Smite:100次hit,格挡掉4次
④攻击者使用Fire Ball:100次hit,格挡掉3次
Run状态,WB格挡率应该为0%。对上面测试数据的唯一解释就是——这是个所谓的bug。或者说,你看到的是你的Char在跑动状态,但是程序却会认为你的Char还是在静止状态(老农和我也曾认为是跑动中双爪的摆动使程序误认为角色处于攻击状态),如此而出现了格挡。但是这个bug出现的几率不大,如上面的数据所见,只有3%左右的概率出现
注:的确是在跑动中的格挡,不是碰到阻碍物或其他什么原因造成短暂的静止而出现的格挡。


攻击、施法动作状态
㈠Asn使用Normal Attack
①攻击者使用Normal Attack:100次hit,格挡掉45次
②攻击者使用Guided Arrow:100次hit,格挡掉51次
③攻击者使用Smite:100次hit,格挡掉50次
④攻击者使用Fire Ball:100次hit,格挡掉50次

㈡Asn使用D-Talon、D-Tail;Fire Blast、Lightning Sentry;Mind Blast、Blade Fury;Burst of Speed、Fade等其他可被打断的动作状态以及Whirlwind状态
同样可以格挡,格挡率不变。
可被打断Attack、Cast动作状态,Whirlwind状态,WB的格挡率不变


WB Blocking状态、打击恢复状态是否会检测WB并Blocking
WB这个动作是个可被打断的施法动作,在实际游戏测试时我们看到:在一次格挡动作未完成前检测到下一次的格挡动作,保持现在的格挡动作不变(就是说,下一次的格挡动作包含在此次格挡动作之中),或者你可以理解问这个下一次的格挡没有格挡动作,但是格挡效果依然存在。
打击恢复状态,我认为在一次打击恢复未完成前可以被下一次检测到的格挡动作打断。但是我没有足够解析DLLs Code的能力;也不太好测试——起码要3个人默契配合。暂且飞过。
WB Blocking状态会对WB进行检测并根据格挡几率判定是否Blocking;Hit Recovery状态不敢肯定,但我认为同WB Blocking状态。


SP MOD,TCP/IP环境,修改WB的CTB到300%,攻击者使用Guided Arrow
①Asn Stand状态:100次hit,格挡掉100次
②Asn Walk状态:100次hit,格挡掉0次
③Asn Run状态:100次hit,格挡掉3次
④Asn Attack状态:100次hit,格挡掉100次
验证了上面的Asn在跑动状态的格挡bug,只是程序的错误判定,不存在x/y惩罚之说。
注:WB的最大格挡几率在MPQs中设定为65%,但是没有设定格挡几率的上限,可以修改达到100%甚至更高(其实即使是Shield Block,也不是真正意义上的75%上限)。


测试结论:WB的格挡率
Stand,可被打断Attack、Cast动作状态,Whirlwind状态,保持不变。
Walk状态,为0。
Run状态理论上为0,但是有bug,出现格挡的几率在3%左右。
WB Blocking状态会检测WB并根据CTB判定是否Blocking;Hit Recovery状态不敢肯定,但我认为同WB Blocking状态。



感谢Ruvanal提供的DLLs code信息。
感谢adeyke之前的测试给我的启示。
感谢duql提供的C/C Asn。

离线铃铛

发帖
59624
金钱
6311
91币
0
信誉
0
资产
0 IST
在线时间
3431 小时
注册时间
2009-08-31
最后登录
2021-02-27
只看该作者 沙发  发表于: 2010-11-19 12:02:28
格挡速度


By Louis-J
本帖出自
[url=]http://til.sggo.cn/]光耀者-混沌要塞

09时WB的速度是固定的。1.10后,Ruvanal确定同shield的格挡动作,我想他的根据是:在Animdata.d2中,AIBLHT2(Asn - Block - Two Hand-to-Hand)和Asn用盾牌的参数相同的缘故。
Diabloii.net的v1.10 Assassin General FAQ也沿用了Ruvanal的说法。
但是WB这个动作是SC(Cast),那么,应该和FCR有联系。
在Skills.txt中,WB的UseAttackRate = 1(似乎又和WSM等联系起来)。

Asn快速格挡公式
Block Rate Frames = {256*(FramesPerDirection) / [AnimationSpeed*(BaseRate+EFBR)/100]}-1


CF AnimData.D2
代码:CofName: AIBL1HS/AIBL1HT/AIBLHT1/AIBLHTH
FramesPerDirection: 3
AnimationSpeed: 256
BaseRate: 50
—— Asn使用各种武器/盾牌时的格挡速度参数


CF AnimData.D2
代码:CofName: AIBLHT2
FramesPerDirection: 3
AnimationSpeed: 256
BaseRate: 50
—— Asn使用双爪时的格挡速度参数


参数一模一样。
在游戏中我们肉眼看到的用盾和双爪格挡时,也看不出速度上的分别。

SP Mod Test1
修改AIBLHT2(Asn双爪格挡)的AnimationSpeed为64。按公式格挡速度为23帧。
进入游戏实际测试,的确在用双爪格挡时,慢得可以-o- ;
修改AISCHT2(Asn双爪施法)参数,未对双爪格挡速度有任何影响。
使用不同WSM(120, 60, 30, 0, -30, -60, -120)的爪子,未对双爪格挡速度有任何影响。
至此可以确定地说,WB调用的是AIBLHT2。

SP Mod Test2
使Asn的FBR分别为100、200、400、800 ……
双爪格挡速度依次加快。
装备上的FBR对WB的格挡速度有效。
即如Guardian Angel的30%FBR对WB的格挡速度是有加成的。




的确如Ruvanal所说,WB的格挡速度同用盾牌时的格挡速度。

Asn格挡速度(双爪/盾牌)
代码:
+-----+------+
| FBR |Frames|
+-----+------+
|  0  |  5  |
|  13 |  4  |
|  32 |  3  |
|  86 |  2  |
| 600 |  1  |
+-----+------+



注:即在装备不提供FBR属性的情况下,WB的格挡速度为5帧。
快速回复
限100 字节
 
上一个 下一个