|
|

楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy6 K, [( |* w2 f. V
7 z$ M: L5 W2 L4 }
前言:
6 F& D$ g% ?1 h( X* b1 @' RArmor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……
8 w; f( F5 R" z0 O' {5 Y$ l& I" o
因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。
& O( ?% c, a a$ W& A: \% m5 Y# u" {. ^* b1 V0 J) h
注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。5 c- p E' k' H$ ^
, j, k X, B5 p$ H2 M本文件需要用到的txt文件有:! ], y! _9 e. o% [
·AutoMagic.txt# q9 r* h, Y, [! }$ G$ U9 I1 a4 Z
·Belt.txt, H* s' D7 O7 J$ i+ I) a
·Composit.txt
* I1 K0 v, `$ s7 O. w9 E1 [·ItemTypes.txt
7 z" W9 c. ]4 f/ \2 a- r. l7 x·Missiles.txt
6 Z9 j6 |8 K5 s0 g' H, V R( J·Sound.txt
2 [; Z2 j! R+ I( v* u3 F
/ d( J$ w* B8 i' V" |本文件将在以下文件中被引用:
1 I0 B C- ~7 }·CharStats.txt6 R; ]: V0 S/ e6 Z( u3 K% f
·CompCode.txt5 S& r7 _2 B& W8 V, Y( A3 s
·CubeMain.txt
3 u& j9 i3 ^8 y! i; K' Q·SetItems.txt
" D4 e- J9 d5 i+ c) X·UniqueItems.txt" `% a2 Y5 ]8 z7 y
·……, h4 L) W: d4 f) e
# z. H6 H* {! x* C4 {' ^" T各列功能说明如下:
$ Z6 b5 f$ Q0 E% J. p. b: _6 {
7 X! d6 Y; G/ p) P( y0 }Name:物品参考名称,仅作注释用" w: R" \0 s* c$ e( ^# L3 g
! m% D1 n' z1 g6 g/ [" `8 NVersion:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现), G, m6 p! P' [: t
$ U+ H2 s. T& e- K; Q
Compactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)
8 J2 C& a; d: C$ j5 K$ r8 ~( N# T. K8 {) W
Rarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃)
- ?- y b" J, @' o. Y* t. \- M
/ }6 [* K% S. K3 i7 M; Z. H8 b# RSpawnable:0 = 无法由NPC出售,1 = 可以由NPC出售
9 V8 b2 x( d) f5 U1 v
. r" N* K7 ]6 I; WMinac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限; Z; l6 ~$ g, ^$ v4 @
6 E6 a; O6 ~& R$ BAbsorbs:无用参数,以前的作用与“伤害减少X”类似- [. g& k9 N! D" |& v
% r7 @5 {& V/ K% {
Speed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度
& Y7 N2 T9 ^* P# R3 Z* r
% c) H4 R. L% rReqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是2; F; g4 x* a' ~. {( g
1 o! a& s- B E
Levelreq:装备物品所需的最低人物等级3 X# f$ T) d4 r5 v: b
! c! m" D' G6 e3 f$ M( dBlock:格档几率,总的格档几率上限为75%
3 e6 b( L0 t- i# M/ b/ p2 x. I# | a+ i4 b# k! z: `% I2 A9 Z7 `
Durability:基础耐久度,最大值为255,超出范围则循环计数
2 y* d0 K( r. Y1 rNodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度
+ `5 f5 \" x' Z假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性* a, f, G3 R' j2 Z3 _1 ]6 d
Durwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。
: [' ^' w1 N- K0 G+ N# S! t" T% r2 [; N7 N
Cost:基础价钱4 z8 e" H" A+ Z8 a+ z
Gamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用+ c, c6 m' Y0 c) X. m! V) h
3 d7 ?$ J& w( j$ F' q, R
Code:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件
1 D# S0 A5 R6 ]Namestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称
2 }/ Q+ w4 ]& x. m注意:如果需要显示空格的话,使用TBL文件是唯一的途径7 u, K G1 [4 Q, d; h4 A
+ X* J# I' l6 E6 j; n) k" U" p. eNormcode:该物品的普通级代码
' r0 [) Y0 T8 L' L. f6 K7 sUbercode:该物品的扩展级代码
) J( y0 X" |7 x% KUltracode:该物品的精华级代码
+ g4 |/ i% x& R/ P: C0 X: I5 Q这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照
/ A& d' J+ V- B: y6 o. V8 K举例说明:狮头尖盔(Lion Helm)的属性为$ X/ ?8 |9 h$ ]! R9 ^2 L1 P' ^6 x/ U
·Code = ba7
: y4 C9 d3 T# D" H·Normcode = ba2; X9 I; i! P! H( t
·Ubercode = ba7
h9 |8 I: D7 I" p5 Q·Ultracode = bac. \" Z [, ]' x. O
所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用0 D8 q$ Z4 H: t1 j. q2 w# u$ V
- c ^) @+ x$ F2 ~7 m/ }
Level:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲7 c0 T! q6 b/ e$ k. h9 C
1 p1 a0 H3 T( hMagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级
, B( N/ [, ^( D
5 ~6 L8 |5 D, L* HAuto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值: N& b! N2 E0 x
7 B& k3 W2 [$ V" {
Alternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件
0 {2 n7 d, s w' O; v* R, J: o8 c2 w6 c1 Y
OpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值- Y9 R" C X! O" n1 E4 o
* I+ O" _- R$ @- K: Y# _Spelloffset:未知参数,仅在Armor.txt中出现! A: m- A6 L# b$ @0 Y! a" C
) J: F/ F( R, w0 I8 h
Component:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:" T1 T3 ?; f" Z/ i& c; b" F
0 - HD(Head)头部- f% ?) h; d" s; j
1 - TR(Torso)躯干
8 u7 r( x- E( x& y8 s: T6 W2 - LG(Legs)腿部, K' g3 I! m/ B. D$ H
3 - RA(Right Arm)右臂
$ ]# c1 u; `- U8 v7 O4 - LA(Left Arm)左臂
6 m* B& H7 h) U) H5 - RH(Right Hand)右手; T9 b. h! X! k4 h G$ i
6 - LH(Left Hand)左手
) H, a) ^" c1 m7 F7 - SH(Shield)盾牌
5 ~5 _& T$ O: E3 ?- p1 p4 L' ~8 - S1(Right Shoulder)右肩6 b& k9 J9 `0 ~" l
9 - S2(Left Shoulder)左肩; o# x6 O9 D" _% a, ]! q+ C
10 - S3(Necro Shield)死灵法师盾牌
7 c8 t1 q0 {8 z! N11 - S4(Special 4)特4* U- \/ \9 z! s6 v, r3 \4 v- u4 I) U
12 - S5(Special 5)特5
) k4 U, B( [! i" Q. `. r13 - S6(Special 6)特6
4 D: p# D7 m, b( |14 - S7(Special 7)特7, C/ a9 d( G% [* t" {
15 - S8(Special 8)特8
9 u( F0 ?& E1 S16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引
( A7 [3 S4 g1 V$ _7 I6 |+ v, T" A/ n1 O. R2 s& ?' _
以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度
' w e9 P& U2 X- D2 d, n/ q1 f* q2 { Q9 E0 = LIT(Light)浅6 w& I. J* Q/ D2 U9 L
1 = MED(Medium)中) f! ]" m, Q; \6 H1 O9 b
2 = HVY(Heavy)深* Q ?9 w5 W) K7 ]: H: Q
rArm:RA图层(Right Arm)右臂
+ P7 V& @: [* b) g/ N+ Z" jlArm:LA图层(Left Arm)左臂2 ~' k* n: V' ]
Torso:TR图层(Torso)躯干
" W0 |* s K0 ?/ u6 kLegs:LG图层(Legs)腿部, r1 Q/ c/ g2 U& f. T* z( X. D
rSPad:S1图层(Special 1 – Right Shoulder)右肩
- \/ d6 F' T9 Q9 u- VlSPad:S2图层(Special 2 – Left Shoulder)左肩5 g; o' P% b; G
例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)+ M: W/ p3 ~! r8 R" P
* {4 k" K# w! [7 Q
以下四列分别是不同情况下程序对物品所调用的DC6文件名称* q3 A( H) C. r- E
Flippyfile:物品掉落时的动画文件* x. v6 E7 {* T1 W# b+ d
Invfile:物品栏里的图像文件
3 e8 T4 z3 R/ F0 B& G' {Uniqueinvfile:暗金物品所使用的物品栏图像文件
9 e0 Q u$ x GSetinvfile:套装物品所使用的物品栏图像文件
! @( u! C; Q# n q6 ~* yDC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件
/ R- L% s1 X B" S. q9 a2 r3 i o) T2 n' L/ Y
Invwidth/Invheight:物品在物品栏中占用的宽/高格数; k y5 T% ?! }# `1 r
8 g" v3 m+ g5 a3 W
以下三列用于描述物品上孔数的属性& j3 s; v, L4 d( V5 O% T, g
Hasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔
# S$ Z& u8 e8 e+ q `Gemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数6 u' [" E1 O4 Y- v
另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40
- ~- P R+ |1 L4 B3 E5 i) d( A4 e例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是2
4 }' Z0 m( v; \2 K8 SGemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔; E% t, G1 O& ^) r1 B4 X; c
, G7 Z1 C5 }" v: z6 g% s. DUseable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴
) Y+ W/ c# Y% T" F. o注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。- V+ R1 C1 q/ c6 N
9 Q" w* V% T3 P
Throwable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列
, V0 W. _' b& R
0 Z. u/ v6 W. J0 N! VMissiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列9 N. R* ~2 G! y% \& X
# ~7 B$ R/ G0 c1 U
Stackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以
! W6 z' ]4 a: ` C$ H5 t" wMinstack:一堆该物品的最小数量
" ]1 x1 p' [7 D( N5 g- QMaxstack:一堆该物品所能拥有的最大数量- z9 [- L: ]7 V2 c* y
Qntwarning:警告标志出现的数量临界值8 g5 |' ?) j/ \
当该物品的数量小于等于临界值时,屏幕上将出现警告标志# t# `; _2 [- j& V
这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等)5 B5 _$ _1 M" h# D# ^$ V
+ l& w/ q9 Q, |4 c" l% fType/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列
( T! }8 e: }+ `. V: ^' i6 u( Z" ]) s! y! T
Dropsound:物品掉落时的声音,引自Sound.txt中的Sound列
* v$ I( \2 ~# {' P4 A3 JDropsfxframe:物品掉落声音播放的桢数4 k$ p0 T4 j& e X% R0 O2 D
Usesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列 w, d% h. ^ I, J
; Y$ }' n& p1 e W* DQuest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC
! F9 O# I$ Q- ~1 q& ^) U0 |Questdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中7 L! r& |% h6 [ h; r j
$ T ]+ Q8 e7 {+ f- T- s. Z
Unique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态5 U$ p9 t7 a4 R
" _3 t) d" F9 `9 P5 P0 t: nTransparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位?
( a1 _' j( W% Z9 Q0 f
/ B! N: V. y/ y) M& a/ `Transtbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……
6 U a2 x2 r+ L% K: v J" e- V' y- ^% h$ E
Quivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用: [$ f, P! {& i
3 V0 Q5 x' |$ c4 f( {. Y% M
Lightradius:无用参数, x8 P! P, i7 n9 W
$ } V: r# \8 O4 o7 }4 F% [4 ?Belt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类/ d( h8 a9 L! L7 c, H2 _+ m/ z+ a
0 – 无用/无腰带 – 1行
. S5 L+ Y9 g, e! K& ?" ^1 – 饰带 – 2行
/ J& `0 u0 @; b1 \+ [2 – 无用 – 1行6 W7 Q' V) {: W- k, L, F
3 – 束带 – 4行
7 Y) {8 N* T' L T" P4 – 轻扣带 – 2行& O* w; H( j- o# o
5 – 重扣带 – 3行
- u- J/ x8 f* b6 – 高级腰带 – 4行) L; E* E+ `& W% l6 s" ]2 J
以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带: T$ J" U- r0 P8 `' i3 t
Belt:在Misc.txt中的意义与Armor.txt中完全不同7 W/ X( H/ }+ W
0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏# F; Q$ g* i& I9 S
由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途" ]1 f% M8 h$ W) N
+ C; t5 H J$ }5 j3 j
Mindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:; n+ I5 q! i% b8 X: q& [
对于盾牌 – 盾击伤害+ I* W+ |3 y! t
对于鞋子 – 踢击伤害
% d2 n; A9 d( Z: o8 x对于武器 – 单手近战伤害
) t& d- ` [! c6 t: Z5 S' w8 B. L4 I& G& Q1 d/ R4 W
StrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害
2 {8 e( [1 ^) A% RDexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害
& |6 m: ~# d1 x9 b9 AArmor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成5 ^8 Z# }0 W' D/ P. S. z v
5 J+ }$ C6 w8 D/ E# u3 |0 j
Gemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑
( J' W* G5 s5 L+ y' R' Y' k! I# c" a, ^( l
Bitfield1:主要用于区分不同材质的物品,目前已知的是:
3 X9 J$ x+ n! v" n1 z1 = 皮革制
1 L. o ]# x5 }! w3 = 金属制7 f9 a7 J5 u! F5 F
仅有金属制物品可以用来召唤钢铁石魔+ z0 n7 F& R3 G; O% T
, N0 X7 G! o9 ]' {7 H% N
以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人
- Q) ^, ^4 D8 T/ q# O3 ?VendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃
# i# |% y/ F) y+ R4 M4 C8 vVendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量* S, @0 s7 \; J) g* N; `* ]; J, S
VendorMagicLvl:该物品所能获得的最高魔法词缀等级
4 @5 u! x( f; H/ Y- q, {' ^7 D/ A1 {7 t& N# P
PermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定7 t/ e9 j O+ B" i ]9 e
( i& ?1 K0 v7 KSource Art:无用参数8 P4 t* |, x" [" [
Game Art:无用参数! a, Y+ W8 A! U' @! b
3 _) C& o) K. m/ U* c& o) NTransform:有关该物品的动画所使用的颜色
8 J5 O% o8 H9 [; g( {- V& UInvTrans:该物品在物品栏中所使用的颜色/ p3 f9 K# ]! z2 |/ F: v
" g# ?* N5 S& B8 I* G' PSkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样
1 u& V O1 j" j4 z$ a2 W' ?1 i1 U0 |2 n Y/ f* |
NightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变
9 d r8 E+ o" o& q. x+ S) q4 ]3 I. V. u
Nameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行
. Y- d$ {; D( \3 D |
|