|
|

楼主 |
发表于 2020-1-13 21:44:26
|
显示全部楼层
楼上帖子中分析了属性页显示的被命中几率的计算过程( ?7 u+ Q- b* i8 e
因为属性页显示的值查看时可以忽略实际怪物的生存状态,所以肯定是不准确的# Y+ Z4 r. J" }/ G+ q
" C! Q1 ?, T. \1 a本帖将分析 "怪物攻击你" 时实际命中率的计算过程 与 属性页显示的被命中几率的计算过程(暂称为"过程A")的不同9 y; t0 G3 U# P& z6 M. W
其他情况可以参考(til的某帖子,但已失效),那个帖子大体内容还是正确的; i4 ^( b; |/ l6 _7 q8 d
4 I. ]& m3 A; K, D* p9 m) {5 L1 在计算命中率前,会调用D2Game.6FCB4740计算 MinDamage ,MaxDamage , AR_BASE
$ ?3 V$ [0 ]5 {3 E计算AR_BASE时,将使用怪物的真实等级(不含场景等级修正,不含金怪等级奖励),. y3 S! C8 z' h9 a7 }0 ~/ J
一般来说 AR_BASE = (monlvl.txt中的TH × monstats.txt中的XXTH )/100 , 结果取整
$ f5 Z3 A, U, O! y其中XXTH 可能为 A1TH , A2TH , S1TH ,根据使用的攻击来定(过程A中使用的都是A1TH)
0 \2 p$ d/ _4 ^5 n# u9 r/ v+ h" P3 P4 a3 Z4 x
然后会跟过程A中一样根据条件进行调整,但条件顺序有点不一样,不过结果是一样的
: K: [# u, G) a. P3 C判断是否是资料片,资料片 AR = AR_BASE ,跳到第2步8 T0 n h d5 z9 i/ U1 S- @
判断是否在普通难度,普通难度 AR = AR_BASE ,跳到第2步 [6 W- m# c+ D; ~
判断monstats.txt中noRatio是否为1 ,为1的情况下 AR = AR_BASE ,跳到第2步
2 l1 B( A' _ C$ i* M, w上面条件都不满足 AR = (10*AR_BASE+10*AR_BASE*(-2004318071)/(2^32))/8 ~= AR_BASE×0.667
( \6 b( O5 g0 k9 k. f/ D8 B7 Q* H顺带提下MinDamage和MaxDamage,它们的修正因子为 ((10*715827883)/4294967296)/2 ~=0.833( \2 j" o1 Y. k X7 ? c
; |3 Z' `' Q4 @" \4 ^; k# ]; q
2 计算额外的附加AR -> AR_EXT ,如技能带的AR等,将作为参数传给第3步
9 s+ u+ e, E% P7 L2 R, J
1 H) Q0 S+ V3 ?3 此步将开始计算命中率 (D2Game.6FC9D240)+ p" h- y9 q, ]+ p/ m! j" \$ H: o {# u
3.1 计算 DEF
0 V( ]7 J z* t2 U/ N. VDEF = DEF1 + ARMORCLASS_VS_HTH 或者DEF = DEF1 + ARMORCLASS_VS_MISSILE (根据攻击来定). P# P+ B2 v: R
3.2 直接获的第一步计算好的AR
. P; V- w U5 e4 ~8 F- E+ w' kAR = AR + AR_EXT + 5*Dex(敏捷值) ;
- b: Z& L( T1 V/ R( |; v% i9 D7 v$ s获取AR加成 AR_Percent(含所有加成情况,如光环等)& S$ h$ a# a: z. }- D3 _ L9 U
AR = AR + AR *(AR_Percent%) ;此AR将用于最终计算1 i4 y( [ x8 g+ P/ d3 ~9 O, l/ F
3.3 又来到了这个公式 Tohit% = [ ([ AR*100/(AR+DEF) ] * MLVL *2)/(DLVL+MLVL) ]
9 ?; S4 f: N; U4 X但不同的是,这里的MLVL将使用实际的等级(不含场景等级修正,不含金怪等级奖励)8 Z; ]# R$ p! G/ H
7 H2 E X6 \ m) w R, v- _3.4 将结果限定在 [5 , 95 ]区间内 * Y1 K* c; f; N, `6 @6 q! |
# V7 `/ i0 T8 B4 J( S
从上面过程可以看出,在非资料片里,实际怪物对你的命中率,将低于属性页显示的值
& `$ r. i3 Q2 v) }1 d. [( y7 M: u以地狱大虫为例子,MPQ等级88 , 非资料片等级72 ,测试人物85级165防御
7 n9 G& o* F3 X3 ]5 d属性页显示为94%命中 = [ [2584*100/(2584+165)]*88*2 /(88+85) ] (2584 为 88级的ACTH*A1TH/100 *0.667 = 3874*110/100 *0.667)
( q( I7 T/ J, w. t
+ K; W! h0 p8 j, s5 X实际只有[ [2138*100/(2138+165)]*72*2 /(72+85) ] = 84% (2138 为 72级的ACTH*A1TH/100 *0.667 = 2914 *110 /100 *0.667) (计算中有误差, 跟踪代码显示是86%) |
|