|
原创作者:悄然花开
& S- y9 I/ Z: b4 m发布日期:2008-08-12 . A2 b4 o9 p1 B# V
- W# g4 F" ]( Y+ B* p S
: H5 o, z) K7 t- u X' @% S
【遭受攻击时HR动作判断的流程】
6 x. e6 b( |5 ?3 |# c; o1. 打击恢复动作(以下简称HR动作)只有在攻击动作的resultflag参数=4时才会产生。
% S! H4 x' y7 _0 A4 U1 {. G" E! n2. 检测受攻击目标是否处于眩晕状态(stun)。如果是,直接进入HR状态。6 W+ a% o5 m5 S+ i4 L
3. 检测受攻击目标是否处于冻结状态(frozen)。如果是,判断结束,不产生HR动作。- z. b! t7 s: n( \' ?
4. 检测本次攻击是否包含毒素伤害。4 Z' v7 _" ^$ N% m: Y( F% e
4.1 如果是纯毒素伤害,判断结束,不产生HR动作。
% Q% m& @8 n. t8 \5 ?& p- ?4.2 同时包含毒伤害和其他类型的伤害。若受攻击目标受到的总伤害小于1,判断结束,不产生HR动作。反之转入步骤5
' `8 A* l; b3 f9 l) i+ S4.3 不包含毒素伤害。检测受攻击目标受到的总伤害是否大于等于1。是则转入步骤5,否则判断结束,不产生HR动作。
/ v, }0 `4 q! ?5. HR动作判断开始# F2 e& c- A. I p
5.1 获取受攻击目标最大生命值MaxHP。根据攻击类别(Hit Class)获取参数divisor,具体分类详见下文。
! `, K6 f. `+ y6 i `5.2 若目标受到本次攻击的伤害DAM<MaxHP/divisor,退出判定,不产生HR动作。反之转入步骤5.3。# n& o& _% @" V; `1 N. J7 T
5.3 若DAM≥MaxHP/(divisor/2),本行判断结束,转到步骤5.4。否则系统将取随机数0和1,若为0则不产生HR动作,退出判定;为1则转到步骤5.4。
6 X, F& F5 R! @* o6 }' ]; y5.4 若DAM≥MaxHP/(divisor/4),转入步骤5.5。反之系统取随机数0-3,若为0则不产生HR动作,退出判定;取其他数则转到步骤5.5。
5 Y3 q5 O* ]3 f: e6 E, h/ f a5.5 系统检测受攻击目标是否允许产生HR动作。若判断允许,则产生HR动作,反之不产生。判断结束。) D- W; D( @+ g* X e% @
' d, E/ _% w/ c$ Y
【简单来说判断标准如下】( T) h& G0 G( ~& G$ h3 c5 F9 U
纯毒素伤害不会造成HR动作。
: y. o& Z- r) I+ _* @5 [4 S( ~* H! n非纯毒素伤害的情况下,记本次攻击所造成的伤害值为DAM,受攻击目标的最大生命值为MaxHP,相关参数为divisor,则
' e5 ?2 g0 q3 K0 j! v3 |( \- u8 V若DAM<MaxHP/divisor,则不产生HR动作;: R5 {' v/ @$ ~1 g
若MaxHP/divisor≤DAM<2*MaxHP/divisor,则有3/8的几率产生HR动作;" _0 a7 i6 F0 s; F8 f
若2*MaxHP/divisor≤DAM<4*MaxHP/divisor,则有3/4的几率产生HR动作;9 h( k( ~6 W# F& ]; v& _5 e1 c7 M
若4*MaxHP/divisor≤DAM,则100%产生HR动作。. v p5 E* M# d; f
3 ?! |7 P4 ^& \5 z
, W. v- b( p' [divisor参数的取值: n J5 e% `' {" e5 f+ |* V, o5 _
Hit Class = 2, 6, 10, 11 : divisor = 8
/ b' M) a3 i" n3 oHit Class = 5 : divisor = 64
6 O: Q* a2 T; d! w/ }4 DHit Class = 4 , 8 : divisor = 32. m# O' a& H0 T+ I9 F# ?
Hit Class = 其他 : divisor = 16& m$ T" w b. v$ c6 w
2 g# n1 |# G \. Z" w0 t2 aHit Class取值的判断/ X! t( R6 V8 P1 ?& a5 G1 \
1. 所有怪物(包括雇佣兵)的普通攻击对应的Hit Class均存放于Monstats2.txt,分别为1, 3, 12三个值,对应divisor均为16。: Z* x) r6 t! H: x! B
2. 角色的普通攻击对应的Hit Class取决于使用的武器,详见2楼。9 i, V0 Q* r3 N! i7 `5 c5 v4 _
3. 技能的Hit Class
' U6 x5 E4 [; m& x& _+ A3.1 对于Melee技能,Hit Class取决于角色使用的武器,同普通攻击。若该技能已经被赋予其他特殊效果则除外,例如Bar的Bash技能附带击退效果。
" L% e. D. b" j7 E' h2 d+ [3.2 对于Missile技能,Hit Class存放于Missiles.txt。' f7 f. x. E3 `9 {2 F U# l
3.3 其他技能的Hit Class对应Skills.txt的Hit Class列,无一例外均对应divisor=16
/ X: F* G, y$ W; o2 V5 o i( u' F# E; e
! M/ _' V9 b! @3 L6 ZHit Class 分类相关4 k/ s; z4 K: Z( Y, a' {7 w6 [) a* y
================================================( p C. g) S4 C( q' E. e
Hit Class Code Meaning7 [. [: ]. A# B7 p7 q
────────────────────────
! _; M& I1 y+ } H7 k0 P; n8 x0 None
) d9 `2 D, u6 S, {) m1 hth Hand To Hand
; g& ^# |( a3 o9 `2 1hss One Hand Swing vs. Small# u! ?4 ~4 P: A2 D5 e& O( D
3 1hsl One Hand Swing vs. Large
4 S$ {" U) P% S6 U4 2hss Two Hand Swing vs. Small' \+ F' O/ \6 G2 `0 p
5 2hsl Two Hand Swing vs. Large0 I% K- o7 Z1 k) d( n
6 1ht One Hand Thrust
5 X8 l7 Y- H8 G, M7 2ht Two Hand Thrust
( ^; {; r$ o) |' n9 r+ m8 club Club( F% a, y% K: r4 x
9 staf Staf1 `8 S5 e8 r1 F" b) b( b# ]4 ? M
10 bow Bow8 k/ d) Z0 s4 q$ u! E% U
11 xbow Crossbow
3 f8 i- u% z2 ^! C3 q12 claw Claw
2 x) Q1 u5 @" e/ i13 over Overlay
( Y2 V: t) E& N8 u================================================
$ U8 a8 L& X' K X* J解释:' x$ \/ U6 V9 Z1 v
hth : 空手。另外还包括各种攻击性的投掷药剂。
1 ?" ]8 L9 ~+ p3 `% W8 \ H4 t; Y1hss: 包括死灵法师单手杖和法师专用法珠。: d) }: r! n. |2 r) c* F
1hsl: 包括单手斧类、狼牙棒以及其对应的扩展/精华级类型、钉锤类、单手锤类、单手剑类、飞斧类。+ z; F8 R: {9 Q9 Z/ ]* w+ [
2hss: 所有的双手剑类。# C; O+ ~$ C8 E; r
2hsl: 包括双手斧类、双手锤类、长柄类。
6 p% `/ B: V. S- G% O" j! Q1ht : 包括匕首类、飞刀类、标枪类(含亚马逊专用标枪)。 l2 X9 m; Y/ k' C$ h. G0 j% s
2ht : 长矛类(含亚马逊专用长矛类)。$ y% X% w' d9 @
club: 包括木棒以及其对应的扩展/精华级类型、圣骑士权杖类、短棍以及其对应的扩展/精华类型。
- j6 e, G: a! ~* k$ Zstaf: 除短棍、乔木棒、手杖之外的所有双手法杖类。
1 W, O4 f p! V9 o, c7 z5 R9 B9 Wbow : 所有弓类(含亚马逊专用弓)。
; ?( ~0 Q$ p D: E9 D- Dxbow: 所有十字弓类。- F" _7 s& p5 b, C I
claw: 刺客专用爪类。
l% I8 W& }8 W2 |. Q
# H* n I' H T: Y+ f3 e; m1 v* Z& q" r6 f; A
常见Missile技能的Hit Class(如查询不到则均对应为0)
4 M8 C# {$ o' S# x4 g5 `, q7 m& \! ]' \( r
Missile HitClass
- z) D2 N1 r: @5 D& Y) P x! X───────────────────
+ ]( I6 g# W2 karrow 10
4 U2 `' Y/ N3 Rjavelin 6' V; t1 C9 @- ^9 i$ p2 B. c
magicarrow 10 n @- w( ~! f5 C8 |& D+ ]5 B
bolt 10
0 ?9 l+ X5 T$ F- ]9 S! L% K( b8 k# Fthrowaxe 2
) e* M. h% ^$ b0 `6 {- Q9 uthrowknife 6
, C& j9 N; B: S+ p7 A% Wglaive 6
( |' e" X# r" n- P7 K1 [# Dpoisonjav 6
, G5 j5 B: S% epoisonjavcloud 64 l" j" [6 a& y4 U3 b* `1 U
plaguejavelin 6
, d2 @- d/ u. V; f: S/ H2 Bchargedbolt 64
# a5 D9 m8 W+ D, [6 v1 F5 A, t' Sinfernoflame1 32
- v/ w" C# u5 `) Qinfernoflame2 32
9 q; w+ J$ i2 _7 N; eblaze 32) V R7 l, a* J6 |! ]' |4 L
firewall 32* h; G; \/ {) I, W1 n
immolationarrow 10( E; O( q3 ~3 {8 ~: \- E* ~& |
guidedarrow 10) j% w) D, e, u, F3 u
nova 64
+ z K- g) i7 v6 z; ~3 V# W* }# Ochainlightning 642 P. o; U+ S9 C6 u: b
lightningbolt 642 g$ O$ D% V( s7 t/ P
lightninghit 64- B9 c" y4 D( h; a- t' x, s; t
poisonnova 80
& h1 ~% D9 [2 u. ?frostnova 48
- E! j4 U2 e, G" ?" j, v ?6 R) {rogue1 10
- ?: M" k9 m5 t: P, K) n4 Crogue2 10
$ S; A$ `9 b' v! urogue3 10! Q% v, E+ R9 @) r7 K8 {/ Y+ L
vampirefirewallmaker 328 P; j7 n. [! v+ M
vampirefirewall 32
2 n6 R/ r+ Y2 P/ fraven1 107 `3 e. f6 {! W( h
raven2 10
9 g+ y' V! |+ K4 Mdiabfire 32
) M! q3 ^6 _4 I" b5 T- ?bonespear 6
1 ^0 C- e3 B: f& s# R: _9 |lightningjavelin 64( i/ p4 G$ \" o6 _- B
lightningfury 644 W. z) k; G( A+ F e
multipleshotarrow 10
8 ]# J: G( |# z- b0 I& q5 q& w( umultipleshotbolt 10
& z# u# e1 n2 P1 _immolationfire 32
& A! k6 \$ y) E R+ G# ^furylightning 64
8 [ H. s, ]! o8 p- a: }lightningstrike 64/ y/ b4 W3 a- i" \" N. I' q* m
meteorfire 32
- r+ z8 E2 Z1 b8 f* utrap spike right 10
8 z# B, Y9 _5 u5 g6 _9 Utrap spike left 10
5 \7 |4 [3 A2 Qtrap cursed skull right 10
' H j0 i1 A8 w U$ M+ {trap cursed skull left 10
% T" N; `6 G" Jtrap poison ball right 10
1 k. v# X$ _( X! Ltrap poison ball left 109 B; T9 l2 l6 x* }9 z0 s
pilum 6
7 h6 J' }0 j' `firestorm 32+ c$ N, k) v: q
arcticblast1 32
; L. Y2 B2 |, s+ p8 a8 `arcticblast2 32
- v# T% {# f g7 }twister 323 H; ~: {' q& C+ Q; X6 {3 \ I
tornado 32
% a* `3 t3 M) [volcano small fire 322 X" }+ H( V! q3 R; V: T+ o! S+ b3 s
frozenhorror arcticblast1 32
% D( T/ w1 a+ c8 _! q2 [) asentrychargedbolt 64
. q* O7 X$ R& ~bladefury1 10
( ^: w: |1 v2 q) I# abladefragment1 10
5 W; m8 ~2 K' [- wbladefury2 10
; P" R& g- L% W3 d5 m5 Ubladefragment2 102 z+ w# v1 _- o5 ?' @/ v% d$ }
bladefury3 10 p- s' i+ K, K5 ~+ J( s
bladefragment3 10; J& l# Y4 E$ u" ]: e
shockwave 64% y. g4 }0 ?3 C6 q# B5 m
phoenixtrail 320 w& J6 v/ q$ N: ^0 n! @+ V) d1 c
wake of destruction 32
* D5 K, z6 }& Mtigerfurytrail 32
4 ?: q4 L( s- e; hinferno sentry 1 32$ Q. B4 Y' o/ c4 V2 S
ancient throwing axe 2, ^9 i1 ?8 ]' w+ M5 o4 _
sentrylightningbolt 64/ @' |, x/ H$ I! o+ g+ P; i" v
sentrylightninghit 64
& [" m4 X( d2 Flightning charge up nova 64
2 H1 T8 T; T& P* v" c' ?chainlightningcharge up 646 t; e' Z4 X/ w5 S; V
baal taunt lightning 64$ p G5 j& l% [# M3 E" w! R
baal taunt lightning trail 64
6 g1 Z8 v$ ~8 U4 z+ h9 Kfistsoffirefirewall 32 G1 V+ H! [: ?7 l8 D
clawsofthunderbolt 64
9 T0 B9 T b! |4 z5 l' w: E2 Bclawsofthundernova 64# p& h) b. A: q
royalstrikemeteorfire 32! F) u+ T8 |6 ]5 O
royalstrikechainlightning 64" T: R0 A% e0 D. g0 B( ]: @
armageddonfire 32; @6 C# i" y3 B) K6 ^
lightningtowernova 64
3 P8 u$ N4 N& S+ fwillowisplightningbolt2 64
( J% Q" H# e/ f" h) H+ ?8 cgoospitex 176
K. I5 @2 g: }2 d1 z; cdiablogeddonfire 32, Z y6 @, E8 T* |9 l4 r$ ^( A( `
megademoninferno 32
0 `" i0 I4 ~/ l) ~* |' b6 D& I' ltrappoisonjavcloud 6* L: n* L0 B/ C) S9 U
trapnova 64* Q- H1 ^6 _( R) y- h' ~
mephfrostnova 48
& [! s Y4 C9 f( B, qstrafearrow 103 Q2 p* d* Y1 P3 Z
strafebolt 10. j E) ]- N6 o
$ K* G; R8 ^! O/ _+ N3 F7 J+ [% u3 x% u. k* M4 J8 Z3 v
由于大部分情况下divisor的取值为16,所以FHR判定断点可以简单记为:
! l2 q- f, ]7 p! p6 {8 F* M1.当DAM为MaxHP的1/16时,造成FHR的概率为37.5%, B% a0 D: d, P+ i4 n9 m
2.当DAM为MaxHP的1/8时,造成FHR的概率为75%
6 s9 q1 } E: | C; @ X: [8 U5 O" H, L3.当DAM为MaxHP的1/4时,造成FHR的概率为100%) {" E# ]$ s/ }+ ?* E
|
|