|
楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy
' ]( G7 c0 P) q6 } C. N% E" R$ Z* K5 ~$ E! ~
前言:% O/ R/ E( b2 b/ Q' w9 X& R# }7 Z
Armor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……
" R; }7 G5 Y; ~& U/ J" ~
& X3 X- h* N1 }3 q因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。
3 l! z6 n- u: h( D2 R! H$ ~1 g# \3 o2 r) q4 q6 `6 h
注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。/ R+ c1 `# Z7 a/ P3 U( R8 K! `
0 e/ t c$ e- i+ k$ N
本文件需要用到的txt文件有:6 ?# j3 F% e0 T+ v. A% p6 |7 @" u
·AutoMagic.txt
; N, ]3 z: R# w- d* [·Belt.txt" W! Z; R2 O! H; o$ g6 R: N
·Composit.txt+ _7 P v) q$ u3 A }6 E0 R
·ItemTypes.txt5 S: \0 F( g7 |9 y& o& M& ]
·Missiles.txt
! N: D2 ~) e: K) Y, h2 @8 ]·Sound.txt0 r" J3 f5 j o3 g' a4 b3 c
' X+ K3 g0 z F% S& O2 S
本文件将在以下文件中被引用:7 _6 H! a1 L# ]7 x8 r* ]
·CharStats.txt
+ m# n. D% a$ D @; N. p·CompCode.txt
) o% y/ f5 Y0 d) _( N) m·CubeMain.txt
: j1 A, h% X6 |( V; \" u·SetItems.txt; S2 G- l9 } I, n- q2 c2 T
·UniqueItems.txt
. _1 g) h* F, o% s·……* b8 ~' X; I5 v! [( j5 @
; P. y( z& b0 t- d
各列功能说明如下:
. R0 `$ Q6 G: x/ w; d0 w) t
7 t! ~5 o; x# |+ g- vName:物品参考名称,仅作注释用
5 J$ Y6 I. N8 D! m8 L: E& o- ?* g7 p1 G
Version:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现)
( s3 P3 D! r( G' x: F- u# ?' s2 }3 W& d1 A
Compactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)9 B+ v4 T8 _& p( f; D" @3 W
( h. l( J: y; F/ |
Rarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃)3 M' Y3 X, T3 D2 ?4 l f! Z1 |4 ~
2 j1 l+ S7 S4 G
Spawnable:0 = 无法由NPC出售,1 = 可以由NPC出售0 i% \* P( K. j1 h/ ]. Z9 _* d+ k" w7 q" k
2 W6 l) C+ D* i- ]4 z y; ?; S
Minac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限
& f) `2 V. w3 [/ D6 q) v) r8 H2 s3 ~, R5 j, r/ e' g7 D% t/ o" g
Absorbs:无用参数,以前的作用与“伤害减少X”类似7 x6 R3 `1 u; A1 O5 N/ d
. J: K/ w" e( B" m/ [Speed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度) C; {7 }. E4 g, R8 A
8 h* h- R' v" ^) a IReqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是2
/ M% T5 q, {& `& U- Y9 K
4 u3 |8 M+ F: K* _- oLevelreq:装备物品所需的最低人物等级
# e) S. b$ q8 U: }! W) Y
6 S5 v" b* {; \ r0 L5 `" W$ u1 _Block:格档几率,总的格档几率上限为75%
6 U* z$ H' D& E& X$ q2 a6 \, N& o9 S
. B5 ], R1 p" O4 b: oDurability:基础耐久度,最大值为255,超出范围则循环计数
% A% r( n5 z8 R) \Nodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度. M2 Z' I5 V/ ?% B
假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性# v8 J9 A9 Z5 ], K# ~
Durwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。
. {$ O! ]* E/ f5 q6 E" `
$ T# X2 R K& `- A1 q+ ]Cost:基础价钱
Z% H' ?" o; y4 U" |# c6 oGamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用; j; r [8 p, N; P
, C- `, c% U7 _2 W, f
Code:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件- {0 R8 r g Q8 q! A2 `# N
Namestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称1 a+ z; M) J7 _! p' s3 l
注意:如果需要显示空格的话,使用TBL文件是唯一的途径
/ v" a% U5 M( z S) Y2 Q0 t# ]# q# ~: ^; s9 ]* e" n1 s- v
Normcode:该物品的普通级代码" U. Z- u$ h6 u( Z' k$ _3 a5 f& \
Ubercode:该物品的扩展级代码
! K! d6 Z9 M) rUltracode:该物品的精华级代码4 P s. x# b! z6 ?9 n* b
这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照+ z3 z1 j2 k* p5 a. \" N. ]5 ]* O
举例说明:狮头尖盔(Lion Helm)的属性为
- b5 X+ P5 H& A& L8 _5 H·Code = ba7) n7 C/ m. u8 K' i! p0 \
·Normcode = ba2
5 G/ {( ~3 I8 Q4 ]3 o; X: ]·Ubercode = ba7- g8 F) h+ z. F3 g1 w( ?$ h
·Ultracode = bac
0 U* P9 ]$ U/ _6 b9 F, c0 \所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用1 P; o( z7 \1 r4 w8 Z2 Y9 D
i& g. L% }+ U( F
Level:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲9 C; m2 ~1 T8 U" B( f& [4 h0 C! e
# Y; A, n2 r6 ^0 U* r& w
MagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级2 R; t& T3 r& `& s6 f" w1 X* u* R( Z
% S% c/ D+ P2 K0 ?& W. JAuto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值
`8 r5 I+ z3 w: A0 p6 ^0 x9 f5 ~5 p
Alternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件
5 K3 |. h& Q6 n/ k* t' [7 O2 Z0 ^$ z3 h5 z9 S
OpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值
- J4 T* p% E8 h1 l9 w$ ]3 W9 f& {9 o; R" b3 ]: {1 O1 ?8 g
Spelloffset:未知参数,仅在Armor.txt中出现 l. ^! }1 o5 a6 z3 n! X* V
) ~( L, [# X( F2 x
Component:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:
+ D; Z# Z4 X( @9 N- q0 - HD(Head)头部
F5 [/ Y2 ^# M2 b) g1 - TR(Torso)躯干
, y E* I1 Y, j H) @7 t, _2 - LG(Legs)腿部
' [+ R: c$ c0 y0 P8 V3 - RA(Right Arm)右臂
" D& W0 R! A4 }2 c. I4 - LA(Left Arm)左臂& M2 f. ~' o" @' H+ h
5 - RH(Right Hand)右手
- a, ?* v, K4 Y6 - LH(Left Hand)左手: e& J; s3 K2 p
7 - SH(Shield)盾牌, V" D. F; P$ N. `
8 - S1(Right Shoulder)右肩2 f. H$ N2 p6 |' b% y7 ^
9 - S2(Left Shoulder)左肩
6 ^+ r) p+ p& c4 y- D8 b& L10 - S3(Necro Shield)死灵法师盾牌( T- P: w& u3 ]% z7 ^- b9 O5 M
11 - S4(Special 4)特4 L+ V, g4 ~4 W5 _& X8 T( Z$ @7 w9 E
12 - S5(Special 5)特5! w- E- I" n/ Z+ w- J6 ^. a8 D
13 - S6(Special 6)特6$ i, j+ t4 ? s/ G: ~
14 - S7(Special 7)特7
! m% e# H7 L: K; r* W8 I" d' w1 w15 - S8(Special 8)特8 A9 l( O b/ D3 |0 W& M
16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引' w: B) g9 f) }$ W# S, z% i
, p c. u, g2 a5 t; D5 Y以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度
* Q* H4 I7 O+ c% A. l. W0 = LIT(Light)浅4 z6 [( x4 }& s+ }1 b
1 = MED(Medium)中4 y* j# `2 O2 A3 w4 y" E
2 = HVY(Heavy)深
' p6 x5 k/ g, Z5 E; v; W+ QrArm:RA图层(Right Arm)右臂) |& g' ~, f3 W
lArm:LA图层(Left Arm)左臂/ ^* Q& X: Q) V; v8 ~
Torso:TR图层(Torso)躯干
/ I& J" z- z; U. _6 d; wLegs:LG图层(Legs)腿部8 w4 G2 j$ M4 q0 E9 K
rSPad:S1图层(Special 1 – Right Shoulder)右肩
b3 J( Y' Z3 I; W2 y# @; {0 olSPad:S2图层(Special 2 – Left Shoulder)左肩
3 x' a9 O7 q0 ], |例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)
/ q" M' L. _1 H: ?4 h# _, Z
`6 ?1 {) m, A' _' J以下四列分别是不同情况下程序对物品所调用的DC6文件名称
' `) l% Q! i- |& }( CFlippyfile:物品掉落时的动画文件, K( B$ H- l4 F% u/ ~
Invfile:物品栏里的图像文件" K- B: L, ?3 ~0 N+ x
Uniqueinvfile:暗金物品所使用的物品栏图像文件
1 S) m; y1 Q$ H0 }( j- FSetinvfile:套装物品所使用的物品栏图像文件: P, k9 O! T: y( P0 q/ c
DC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件
& _. F2 j8 C' N! i) z% Y0 A( |
Invwidth/Invheight:物品在物品栏中占用的宽/高格数
6 u/ P6 i* }4 Z$ P) x* x' y% Z4 s5 p: l! }5 N9 w* q
以下三列用于描述物品上孔数的属性. Q8 Y! o! B5 I5 O( P$ Z5 T; \
Hasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔
5 |$ z! i; N6 p( x2 `# \Gemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数
5 {; Z9 [- t3 ?: G2 A5 d4 Q2 j5 q另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40
f* J$ M5 w% n9 R例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是2
6 C+ y8 t7 Z7 Q. E, N& z" uGemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔8 p5 Y. D: W$ ^% T2 T* M2 L
9 W- f( X+ h5 eUseable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴
$ `+ `- H% ~" o5 i注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。
# ]+ I. k8 r/ }4 _1 N% Q# n' G) P
- ^5 j2 u1 R9 _0 WThrowable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列
* v0 C7 W* c4 g1 x7 l
+ T9 Y( V0 P& o9 n+ [: P$ z4 jMissiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列
, R4 K! V8 U1 H7 S" B$ t9 B* I+ {% q9 d- k6 k
Stackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以% [4 L! y* c9 U$ i
Minstack:一堆该物品的最小数量
2 R% H4 x5 q, Y. ?% ]9 Y) vMaxstack:一堆该物品所能拥有的最大数量7 J- a3 E4 g/ X& w) {
Qntwarning:警告标志出现的数量临界值5 E9 Y& \9 h8 C/ p; C: u& g% g
当该物品的数量小于等于临界值时,屏幕上将出现警告标志- ^) m) S) h6 t/ E
这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等)& Q+ \. _$ c5 M. ]9 a& y! ^: E
?6 L/ a: \' ~) k% r- WType/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列
; ^/ u5 l# _; I% z" V
5 A A! D- E0 D# l% wDropsound:物品掉落时的声音,引自Sound.txt中的Sound列; E0 B3 `2 ]8 h5 \: [: w8 t
Dropsfxframe:物品掉落声音播放的桢数; r' [3 T6 V. R& C2 i
Usesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列
! Z+ a: ]' W) q* z( Y8 N5 v
$ Z E8 m/ k# }0 G, U; O4 zQuest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC
5 @) F) ?6 f# i- E5 ]Questdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中6 m( i. b3 M; W( p [1 Z1 J
; E6 S. a, ~1 ]% s' G6 w. AUnique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态6 ]4 p" ]# C ]9 t
+ {" _' F* G4 D6 X8 M' n
Transparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位?
4 o5 d$ x' h; V V4 Y$ t4 X! ~7 |2 r; G/ h. B9 `$ c4 t, }* w0 d
Transtbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……
. ~& q6 v U! g9 u0 L# G1 V+ G: A( c# n" z% S% n& Y, m
Quivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用
. A# Q+ J, ]9 U, b. Q
1 R! t& t" z9 i$ N0 _/ A9 c5 uLightradius:无用参数% e, w+ j+ l( J( o( F
2 s& M) I8 E9 o- u7 B) \, r1 j% x
Belt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类
7 N; n0 `( S7 ~3 n0 – 无用/无腰带 – 1行
: L6 n) T' M4 A. v; q) b( S1 – 饰带 – 2行
" A% u# {, ]! r; w q t5 U! @: ?' f2 – 无用 – 1行* U9 R/ f3 I, x5 L. T* C
3 – 束带 – 4行
}) O7 P& G. D5 O, S g8 q1 k4 – 轻扣带 – 2行% W' N1 c' w) ~2 z8 }' r8 O
5 – 重扣带 – 3行5 O( D/ {! c M* [; \- A# g
6 – 高级腰带 – 4行( F& S/ r4 I6 H7 G2 a+ A# c4 O
以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带% K' }8 |# J0 u6 Q- u: g7 g) y
Belt:在Misc.txt中的意义与Armor.txt中完全不同- T1 C2 ^! d9 f, Z% n
0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏
3 R: k4 t2 X' g7 t: X0 G由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途
: r# u- M0 R( J$ p* ^# N, c" ~7 F/ `0 ^; ]6 D- V
Mindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:
, N$ e0 A% ^% g7 r" a( R' Q对于盾牌 – 盾击伤害+ V& ?$ Y- G9 y3 c
对于鞋子 – 踢击伤害
& E* W- o: \" I# T$ H$ h, V对于武器 – 单手近战伤害
: P5 I& I& [3 {! W6 X
1 @$ c8 c4 _; VStrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害3 c0 [! {# B6 o8 G- o5 h
DexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害* B$ w. ^5 [8 v7 ^# F6 }
Armor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成
3 T* @" z5 m4 q$ t3 [
u0 W/ ]: x1 n: M' BGemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑
, }1 J% a- ?' v& v6 \; J2 G! T5 b3 q# H3 o+ y3 i% U
Bitfield1:主要用于区分不同材质的物品,目前已知的是:4 e. @* W; b" L* k. V/ o3 `
1 = 皮革制: x5 ]* A/ K1 J2 P
3 = 金属制
! U2 G: D+ l7 }6 `仅有金属制物品可以用来召唤钢铁石魔5 `1 |7 b+ A. C
$ Q( u' Q' x& f
以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人4 X* c9 |6 J. v& n6 K* k
VendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃6 G _; W5 u1 P
VendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量
6 R; J* d: T' f) ^VendorMagicLvl:该物品所能获得的最高魔法词缀等级$ g" ^: h6 K5 J |- O- r
, x$ _) f9 n& z! {6 a8 ?PermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定7 i+ i8 ^4 x. H1 h& B6 A6 f
a+ f' E4 O: f+ X$ K
Source Art:无用参数5 i L% p& U9 D
Game Art:无用参数
3 S1 P) e, d f: U' S: F8 p
2 C4 F0 T5 _$ d6 c9 _Transform:有关该物品的动画所使用的颜色
/ `# [0 e6 }" h% eInvTrans:该物品在物品栏中所使用的颜色
, }: u; d3 n( f" Z: \5 v8 c' _+ T3 [. ~) v7 i
SkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样
+ ^8 B2 j* O, I5 e: I* c5 L* s7 _, ]+ W/ U* T6 ?. P( v
NightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变
- W" @% d* s' p2 K1 I, b ^7 u5 b- n' P7 Y" [3 o
Nameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行
5 W3 `6 v- [9 ?! V |
|