|
|

楼主 |
发表于 2020-1-13 21:44:26
|
显示全部楼层
楼上帖子中分析了属性页显示的被命中几率的计算过程
; k% e; f& `7 _因为属性页显示的值查看时可以忽略实际怪物的生存状态,所以肯定是不准确的5 A+ A. n& P, |! `0 Q: @4 E, @
! O3 c% F. Y. z9 ^- p- J本帖将分析 "怪物攻击你" 时实际命中率的计算过程 与 属性页显示的被命中几率的计算过程(暂称为"过程A")的不同
S7 E: F; q# Z% Q# `* I3 f- U其他情况可以参考(til的某帖子,但已失效),那个帖子大体内容还是正确的 l K; J6 ?7 J5 G1 P
9 u: b, H8 q( A2 ?% r0 @! E1 在计算命中率前,会调用D2Game.6FCB4740计算 MinDamage ,MaxDamage , AR_BASE
0 X7 {( O: o# A) s a" V计算AR_BASE时,将使用怪物的真实等级(不含场景等级修正,不含金怪等级奖励),& b' @+ z6 ?' j; n
一般来说 AR_BASE = (monlvl.txt中的TH × monstats.txt中的XXTH )/100 , 结果取整) ~- u/ i# J: y2 u e' | ]7 p$ ^' u
其中XXTH 可能为 A1TH , A2TH , S1TH ,根据使用的攻击来定(过程A中使用的都是A1TH)
- q" _0 D2 l! ~( j) Y" _$ }+ I# z. [0 z# {
然后会跟过程A中一样根据条件进行调整,但条件顺序有点不一样,不过结果是一样的" H8 r& K% ^. ~4 }" L* z
判断是否是资料片,资料片 AR = AR_BASE ,跳到第2步
6 ~: N+ g; l9 ~' S# q: [7 A判断是否在普通难度,普通难度 AR = AR_BASE ,跳到第2步
8 ?$ U( g- M+ B+ r' d判断monstats.txt中noRatio是否为1 ,为1的情况下 AR = AR_BASE ,跳到第2步! B5 q: j* K X" j9 w- z& N
上面条件都不满足 AR = (10*AR_BASE+10*AR_BASE*(-2004318071)/(2^32))/8 ~= AR_BASE×0.667" F0 V6 R) [4 k( i$ o$ @5 |
顺带提下MinDamage和MaxDamage,它们的修正因子为 ((10*715827883)/4294967296)/2 ~=0.833
2 |, c8 q& g4 f" f( s
1 x$ l, F+ }* W( Q4 H2 计算额外的附加AR -> AR_EXT ,如技能带的AR等,将作为参数传给第3步
6 m5 _% Q' }2 z: G1 ?. l
2 V! X& o; n5 w0 y9 [" l3 此步将开始计算命中率 (D2Game.6FC9D240): F. I& Z6 q9 Q6 E# B+ u: ~/ V$ r+ i4 x
3.1 计算 DEF# E& M/ ], r8 c9 S
DEF = DEF1 + ARMORCLASS_VS_HTH 或者DEF = DEF1 + ARMORCLASS_VS_MISSILE (根据攻击来定)# C/ u1 X) q+ g/ M( }1 g" _" ~) e7 l
3.2 直接获的第一步计算好的AR+ z, p& ?: `' q! w! u
AR = AR + AR_EXT + 5*Dex(敏捷值) ;
8 c# Y+ e, K! @* I获取AR加成 AR_Percent(含所有加成情况,如光环等)
6 x9 D. J" @+ ~6 V9 ^+ Q- `AR = AR + AR *(AR_Percent%) ;此AR将用于最终计算# n+ C/ U6 L; M
3.3 又来到了这个公式 Tohit% = [ ([ AR*100/(AR+DEF) ] * MLVL *2)/(DLVL+MLVL) ]6 q7 J$ }( j. u1 Z* Z
但不同的是,这里的MLVL将使用实际的等级(不含场景等级修正,不含金怪等级奖励): ^' }( Z2 H, f. R# C. f% D
3 _' O q& T; m9 c' d4 [
3.4 将结果限定在 [5 , 95 ]区间内 3 i0 }& v1 f& S, R: q9 Y2 n
8 A/ j3 J y; B) B% l4 ~. u
从上面过程可以看出,在非资料片里,实际怪物对你的命中率,将低于属性页显示的值
& ^, t! ?- C+ B/ g0 Q1 h以地狱大虫为例子,MPQ等级88 , 非资料片等级72 ,测试人物85级165防御
+ ~- G7 F$ c' n: x6 Q* X' T3 s属性页显示为94%命中 = [ [2584*100/(2584+165)]*88*2 /(88+85) ] (2584 为 88级的ACTH*A1TH/100 *0.667 = 3874*110/100 *0.667)
4 p# e/ H. @) X% [, m( V- X/ g* P6 h0 P9 C
实际只有[ [2138*100/(2138+165)]*72*2 /(72+85) ] = 84% (2138 为 72级的ACTH*A1TH/100 *0.667 = 2914 *110 /100 *0.667) (计算中有误差, 跟踪代码显示是86%) |
|