|
|

楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy% d$ _; x9 [8 u5 b
& N; f$ L( I( @- V
前言:+ d6 Z; O% W. |9 [7 S+ l" w
Armor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……' }. O3 ^ _4 Z3 f0 ?
* S/ a) e$ d& [2 R9 Q h* A因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。0 K$ \4 I6 O: r8 ?/ y) p
+ v4 G7 P5 z: S, q注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。
7 ]+ T/ w1 ?3 ~8 [
/ |, }! @7 S8 ~7 V. R3 S3 `本文件需要用到的txt文件有:
/ P C4 C B# P) B, a: f·AutoMagic.txt% G6 U4 d3 F( I1 W8 a
·Belt.txt& h4 \+ T S5 t$ ~) F. [+ S
·Composit.txt
' W% P0 n$ C) o/ J5 g9 \& z, C·ItemTypes.txt5 l/ R6 y7 m" a0 I8 |4 k5 Z
·Missiles.txt
" j( E! F5 q5 v! T" U+ I( H, A+ D·Sound.txt
4 k7 y% F: A: S3 }) q; `/ s, E# B; n/ b) C
本文件将在以下文件中被引用:' \: B- x: U. g1 h6 I5 T% B7 A5 G5 A
·CharStats.txt% [' J/ f' V. L# r2 \# D0 K: l
·CompCode.txt
( `0 E' y2 X# _( d" n·CubeMain.txt) z8 e" }' t/ C8 H' P+ T
·SetItems.txt- r, F7 K3 ?5 q: N/ i" C+ c% U% h
·UniqueItems.txt4 o$ `7 R- [. C
·……
. n* s6 n# ~& P- `- w
' k ]: _$ ~# O6 D* Q0 r s各列功能说明如下:: P: V( z3 e7 F: T" D4 x
' V2 z; _0 f' ~9 Z" D) S4 ?* k; `
Name:物品参考名称,仅作注释用
$ ?8 b* Z* l/ X; s
, q% }$ j$ q6 j, W' FVersion:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现)
# S- r, N" y. E6 I9 f v
+ \$ V& u. E( ~3 d+ {Compactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)
8 x' X" s, Y8 |% G, g, i! l
# V: E* U& S1 r- PRarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃)& T5 b7 v( X+ o8 _ N: f& A7 j+ n
8 I6 H9 m/ c! Y9 o& y) I+ tSpawnable:0 = 无法由NPC出售,1 = 可以由NPC出售; v' H( W. z* H; G
6 C. [' p# g! Z* s! b& j6 YMinac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限1 g4 h+ `/ M, h
5 {2 Z& U& e3 d, X4 U- v5 FAbsorbs:无用参数,以前的作用与“伤害减少X”类似" C& {. h5 q' Q
3 T2 F" } l( f8 U wSpeed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度 O4 R( x( X8 v: B1 W% ]
+ P$ I2 @ q O1 bReqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是20 l& n- I0 ~8 ^1 \) r6 D4 G8 M# Z
5 _$ E* _% W/ ]" p3 e+ z. r8 A
Levelreq:装备物品所需的最低人物等级
$ R( C" x x1 C. j( M4 J
" {) j3 Y# u8 {$ d, N0 }$ uBlock:格档几率,总的格档几率上限为75%
! h! V6 q# o, j5 O) w4 C9 D; M. _9 K ]* `
Durability:基础耐久度,最大值为255,超出范围则循环计数/ ~' ]) _1 d2 k6 s. B9 e1 d) q$ }
Nodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度
$ b; t7 F" M7 I$ b) g5 x假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性
- o5 @) Q1 D1 |- \8 GDurwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。
! U7 |& [: \7 }# z0 I- ~
7 ?! H7 z" D8 {) i3 KCost:基础价钱$ z+ t9 K! A+ f/ W
Gamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用
( X3 @0 }) [& W8 ?4 h
! \' J8 [. z3 r9 e: H9 `Code:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件2 Q7 g0 ]/ @2 W7 L: Y
Namestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称
' h n' g. l) l" D c注意:如果需要显示空格的话,使用TBL文件是唯一的途径- ?, ?0 F3 z+ L+ L) l/ Z
! d' S6 F4 |" v Q+ X v
Normcode:该物品的普通级代码
) R/ s! ]# q1 W; J+ Z6 G! [: |Ubercode:该物品的扩展级代码8 m) D) n8 N/ d, }8 h; c" K
Ultracode:该物品的精华级代码) B9 [6 Y8 H; g+ I' e0 w
这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照' R- ^. q* Y+ @# W* C) {
举例说明:狮头尖盔(Lion Helm)的属性为1 N- F1 E" Y) S( I
·Code = ba71 K4 T- W! _& G5 ]
·Normcode = ba28 | p5 \/ N3 \1 A
·Ubercode = ba79 [$ ?/ P% l$ b& Z9 n
·Ultracode = bac I% I8 R8 e$ ?5 z
所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用+ b C# Q# l& k; \ B
0 e. o0 h# F" V( X# GLevel:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲0 F+ e/ k5 j4 k9 q# z% f, t2 U0 R
! a! A1 d2 x% `+ ~6 qMagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级
3 a5 G; t; g' s8 e( Y4 w8 o% [1 z9 u5 K: q: |
Auto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值
/ X: @6 l# d% `& C6 \& `
$ ]7 B+ |0 ?, f& tAlternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件: b! }3 S: z. g: A5 ?$ t% |
0 A3 U+ Z0 K0 K3 o* Y
OpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值3 l4 h' D8 b5 E5 K8 }6 Z
* n. i2 e, v& P+ f' \Spelloffset:未知参数,仅在Armor.txt中出现3 G7 ?4 I+ \$ [) f: n, A& h
6 Z( t7 `0 P& E" B5 t6 O$ CComponent:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:
& w; X' R- r; s: P0 - HD(Head)头部* P. ^& T: _; v
1 - TR(Torso)躯干, l2 z. p5 x. U/ X
2 - LG(Legs)腿部) y8 E7 q: C1 g
3 - RA(Right Arm)右臂
6 \1 d- m8 G* j5 A$ r4 - LA(Left Arm)左臂* P2 h& B9 Z: o% |9 N3 C$ C) |& j
5 - RH(Right Hand)右手# H; Y- i$ w1 b# \5 w
6 - LH(Left Hand)左手* ]# Y. o7 _9 H/ ~
7 - SH(Shield)盾牌
1 P. J- ]: e" e+ n; V J/ A1 `& r. [8 - S1(Right Shoulder)右肩
h6 P( d7 I; E& b# G9 - S2(Left Shoulder)左肩$ a( a* y3 c9 ]2 g i7 j M" T
10 - S3(Necro Shield)死灵法师盾牌$ j2 m2 y; N: i
11 - S4(Special 4)特4
1 {8 C/ N7 X# j- N- Y2 e% s12 - S5(Special 5)特5
+ e* y7 a/ ^, b$ e13 - S6(Special 6)特6
' c" m7 ^+ Q' T9 B" V( f1 J$ y, a14 - S7(Special 7)特7# u2 ^, I i @2 f' c
15 - S8(Special 8)特8$ \. t9 I: [& z" L$ W6 j" ^& @
16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引! d) {( i) T: y% E7 u, Y: B4 q9 R
3 j g5 g" I* d# }" ^以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度
) \. Y) H3 v- b: K! H3 m! H0 = LIT(Light)浅
8 O7 T& I4 q. D5 g! q1 = MED(Medium)中$ Y- r! }$ t( y
2 = HVY(Heavy)深
& m; z& K6 e; z" y8 P% [rArm:RA图层(Right Arm)右臂" H0 F1 i# f$ H6 ~4 M' X( _ |
lArm:LA图层(Left Arm)左臂' Q! X7 b& }( W$ N# d a+ v
Torso:TR图层(Torso)躯干" Y, _2 Q. t3 J. H/ {2 E. _' C
Legs:LG图层(Legs)腿部
0 @7 m# |; q! S! PrSPad:S1图层(Special 1 – Right Shoulder)右肩
+ B* h7 z$ C) s1 r llSPad:S2图层(Special 2 – Left Shoulder)左肩' a4 _% m" l% e# ~- O
例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)
- K# R. O9 S: H% N) W5 z! k: F- T4 E9 x) G- C
以下四列分别是不同情况下程序对物品所调用的DC6文件名称
2 s y: x! f* x. UFlippyfile:物品掉落时的动画文件 o' E# n: v( R) ~
Invfile:物品栏里的图像文件- M/ \( a) h( a6 U+ G' [
Uniqueinvfile:暗金物品所使用的物品栏图像文件
+ Q. D/ T/ e/ ?9 iSetinvfile:套装物品所使用的物品栏图像文件
9 Q( C$ M$ s: t3 X$ t, EDC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件' L' [9 z4 }3 G
, X6 I! u7 Z+ |# }3 g2 hInvwidth/Invheight:物品在物品栏中占用的宽/高格数& s! r# C& [% |
* V! r* v( ?+ l
以下三列用于描述物品上孔数的属性
/ S5 t/ x$ t! c1 Y! [$ ], IHasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔, ` D7 ]: Q; r: C
Gemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数
; Q4 b# ~0 K' t+ R) [! u另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40
9 v6 z0 S9 a$ c- W) S' S U& H例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是2
0 O4 T" d: U# v1 |5 t+ |0 [Gemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔
) Y- y5 i6 e) N* y! ?1 f! Z! e3 q8 p: G6 s- A" a F
Useable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴 w4 j9 ^ |1 O$ f9 }
注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。+ l2 @ u! g6 e6 ]5 J1 J4 L |, c4 C
5 G+ H& p" i# c9 C! f$ w
Throwable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列# I% s, p0 S& C# w; |6 P
! e6 v) s2 F0 ?& v% r- NMissiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列
; {1 p; J' ~. Z( | P. j" b0 D3 {5 n5 _
Stackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以; j& n+ d/ K3 l+ K, d! }4 q
Minstack:一堆该物品的最小数量8 i: |; ]: `8 D1 P8 a, }: d4 |
Maxstack:一堆该物品所能拥有的最大数量
) y4 s' m& M" I" M% w% b( J+ PQntwarning:警告标志出现的数量临界值
9 c. ?! B5 P6 @& H5 ]* g/ c当该物品的数量小于等于临界值时,屏幕上将出现警告标志# X- V9 T. B" q
这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等)
# J0 q& |: ]! b- {3 O. \/ k3 A
: \; p: E7 s3 Z8 E: [% k( g0 gType/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列+ }6 s+ R$ `* V+ ?- U: M6 W
- a) ^# ]; H1 H U0 I4 A; HDropsound:物品掉落时的声音,引自Sound.txt中的Sound列
; n7 ]" g& E* W, TDropsfxframe:物品掉落声音播放的桢数
$ q: S3 ^+ B" D4 uUsesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列" V5 l6 S0 b ^( `5 o6 [* x
& X: v8 m5 x1 o8 m& CQuest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC
" K1 L P: {& G$ gQuestdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中
6 z9 K' A( U9 G" I) X; {+ B; }5 O; S* |4 I! n
Unique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态+ [% c2 B1 A( d+ M. e
+ }/ N w) p- Z h+ [2 ` e
Transparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位? ^- U4 T" J: \( x5 N
4 J7 H' m- ~8 i2 o$ W+ NTranstbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……
0 x" U1 |& j' d
5 w8 w% c1 L: }Quivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用
7 M! P. i2 _0 B( B+ F- W1 v" X1 ~4 H; j8 l1 R4 }
Lightradius:无用参数
$ c" m; E$ U3 `4 g' @
$ r+ Q, S; N. E0 p: C% @* PBelt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类' M3 O; m& v2 q. V( Y6 f0 Z: [
0 – 无用/无腰带 – 1行
4 P3 F' j1 h; I& K1 – 饰带 – 2行
8 z5 u, j/ t% B# a2 – 无用 – 1行
' Y4 O% C) z* [5 h S$ K2 \9 j& A. e3 – 束带 – 4行- p, P# \) K% Z7 O' Z' S8 }
4 – 轻扣带 – 2行
* D. b P& R3 e6 g5 – 重扣带 – 3行3 D% l# S0 O& r, S" ]$ m, j
6 – 高级腰带 – 4行 d; Q& ]! N7 y) u
以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带
0 k3 b9 e1 Z; v9 q s& r( c! YBelt:在Misc.txt中的意义与Armor.txt中完全不同
" I/ M/ d2 p7 b- s5 }* D0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏
* j; y* K5 V7 e: P# f' u% V: b由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途
! K7 o2 ?" P9 A9 @
5 G" ^" [6 I; R9 H5 S$ BMindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:6 c9 `8 X5 t! Y/ e2 R8 ^ H1 @0 I
对于盾牌 – 盾击伤害
A7 n' l2 W: b7 n& ?/ d! b对于鞋子 – 踢击伤害
) D2 O) k9 N6 Y* N2 _" d2 c对于武器 – 单手近战伤害2 k4 @8 l9 c& w- l* w |- ^) M9 x
q% _: F$ ?& L. B) [StrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害; I1 v4 i* J6 f+ |) R! |; }$ p
DexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害
2 N$ `3 z# V6 ~" J: zArmor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成
0 R) _2 A6 v0 f) ?0 K
" i. m* q7 E7 ]! p {4 EGemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑
8 y& @# \0 _8 x1 b2 d+ T2 [& ~5 W7 v3 B1 S& j6 k
Bitfield1:主要用于区分不同材质的物品,目前已知的是:
( |# L0 x8 j) Q$ s0 g* Z0 Y* t1 = 皮革制
9 s2 O ]- |- P7 H) O( z3 = 金属制+ C4 @, W; q) A2 P
仅有金属制物品可以用来召唤钢铁石魔
0 ?0 o9 [; w% g
" W' S8 {6 |+ Q K i( C5 c3 P1 X2 z: E以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人
: v, h$ d5 i _- y* y: b1 TVendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃
3 ?/ d5 F6 g, rVendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量
4 L& B/ \) v6 ~; x YVendorMagicLvl:该物品所能获得的最高魔法词缀等级
A8 m" S+ ^4 {: s. E8 `; t$ i8 q* H3 s8 t' M# e8 f# y
PermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定
0 e0 J' o: ~" G9 B. h- m/ k" F. v. Q3 e) P; ^
Source Art:无用参数
% R, {* w o2 s) d! t3 dGame Art:无用参数" z9 L/ h" q7 ?6 I
/ i( N+ \! T3 I" ]/ STransform:有关该物品的动画所使用的颜色
1 o: |9 z5 m; C6 ? E o% ~3 CInvTrans:该物品在物品栏中所使用的颜色
! o( b0 V5 l& V" f9 }8 |0 a+ _9 O/ {3 ]+ |- S0 w9 u* i! U2 M. |' x7 _
SkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样* L+ i9 Z: l- b. k
; E# o( e8 b1 V- [NightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变3 W; e# B1 f6 e/ T
4 t8 e) M& Q! u8 _2 V
Nameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行
% ~+ {; C+ q3 B ] |
|