|

楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy* {+ _8 _8 L: }6 Z3 ]$ q
, I! g0 F0 v r: u$ f" ?* r: M1 W
前言:/ P1 M6 p2 H' p4 W7 P+ j4 B) E# a
Armor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……" S0 Z6 c7 _8 i7 S0 B" [8 H6 b4 C- X# H
5 P( h z/ |; ]+ k1 d' }# Q" R. G因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。
0 H0 s+ [0 f9 D) m2 b- u4 z ^' M8 z7 W1 a
注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。2 y) X9 a a; J7 g
/ o2 ]) i) a, {$ J2 o1 y本文件需要用到的txt文件有:
$ L8 r# k, `/ |9 V" S3 B5 w·AutoMagic.txt0 O* p' P) @! t7 f1 s( h( i, t3 i
·Belt.txt
6 i/ x& ~2 ^, I" k·Composit.txt" |2 j$ `7 @& \( c
·ItemTypes.txt
( D& H+ Z, H |7 p' ~·Missiles.txt: O0 j' h N# t3 G5 W* v7 c9 _+ C
·Sound.txt" a, ^! Q% ]& M/ k8 M
1 w( B( P% h! \6 W) G6 K本文件将在以下文件中被引用:8 K K1 `4 E+ H4 t @
·CharStats.txt% l& `& |. w [6 E3 F
·CompCode.txt' R( W4 r" _/ E0 h: p* F( ~
·CubeMain.txt
6 A/ D9 b+ d) F( Z* ~: j·SetItems.txt1 Q% a3 ]0 z2 d
·UniqueItems.txt5 e4 v8 s" q& j
·……/ @9 T+ T+ H" u9 E4 f3 ~
/ H. E. c! r, A各列功能说明如下:
% i k. ~! ~, x! g R% S6 r- p6 J8 ^2 f
Name:物品参考名称,仅作注释用- y, |# s9 e ?6 y0 y$ ^* d
4 w* ?) h5 e8 b' F' v$ ]) RVersion:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现)
) j# N# Z8 h, s; T
8 e- ^( d% z3 A" D' s4 W$ HCompactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)9 S) l* J3 G4 Z& v! B- }
9 y5 P' M" K) M. V: c2 r0 c; nRarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃)' p+ \! ^. R9 S$ T4 O) u
9 }, x& I, b# T6 {' V. |
Spawnable:0 = 无法由NPC出售,1 = 可以由NPC出售$ m+ j1 ? `% `6 h1 x
3 M6 T3 C- `' r* K
Minac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限
3 j1 X% f( n! {8 I$ a, j
0 Z+ d6 A/ j" S7 v9 T5 D. J% \Absorbs:无用参数,以前的作用与“伤害减少X”类似& V8 L' h% ~5 e4 ?$ a3 P. ~
1 N, B: G' r! v2 h4 BSpeed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度) \! g8 K& g' o3 N5 T
( j( `- [3 @7 I+ a2 q7 UReqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是2
( V5 U2 W# o! n/ y5 f+ |
3 F) @2 b4 S6 p2 ^Levelreq:装备物品所需的最低人物等级% a' }2 A6 T6 i3 z4 C8 e) o" C1 j
* C' T6 z' L. ?2 t. G/ u# j4 \0 n! @Block:格档几率,总的格档几率上限为75%1 K( W& `6 y2 i2 H& O
9 Z* ]" a& J: O8 M9 G0 W9 G. gDurability:基础耐久度,最大值为255,超出范围则循环计数4 Z/ E9 X) X- W8 B! a( X4 g, e
Nodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度# w6 q% \, P+ s" ?; O
假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性
+ L% s) G S( i4 _ iDurwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。
) }0 s7 \% ~$ a, q# O
^# m* S4 f; l% S& CCost:基础价钱
, G, ?; U& f. }# b, b* IGamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用
7 d* v- y( z6 j, w4 f+ h8 k: C% e$ v5 C3 S
Code:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件
' [* `% G3 C# n0 G7 ?7 m/ t8 o. \, rNamestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称
0 V1 _- h: P/ D! Q t注意:如果需要显示空格的话,使用TBL文件是唯一的途径
) u7 V+ d( b! t/ f
& r4 T8 }7 k" C8 gNormcode:该物品的普通级代码 X3 [" I+ N7 U, b& q
Ubercode:该物品的扩展级代码
* X# Q/ q1 H! Y& I7 jUltracode:该物品的精华级代码
2 f/ @, t, Q1 y4 e- G. W这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照
4 e" F" W' E; E0 _/ B举例说明:狮头尖盔(Lion Helm)的属性为- I5 i/ j6 V& G3 e1 R& k
·Code = ba7# J/ Z9 s1 Y" r7 V% N
·Normcode = ba2
7 `- H8 b# j) a, V+ M8 L( ?·Ubercode = ba7
# n: j3 N0 d& @* p·Ultracode = bac
- y; k B t" q: v& O* U所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用6 M# {: ?# T5 c
& J/ [% ?: x3 H* l0 Y
Level:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲
4 r' a/ [5 X+ {+ C6 Q2 Z
7 r' Q4 L" {$ m, x6 Z% yMagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级
- B7 @1 p. {1 ~0 y2 {4 R
$ S$ n, K% d0 O& zAuto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值5 ?; R% N, S5 @% `% f1 P1 `$ x+ T: L
6 J( D7 v+ V/ @/ b- \ ~Alternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件
+ i" V. C" }7 x5 c/ k5 S4 H" h" p5 n/ H
OpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值0 Q) E5 E' w2 m
" a, I; X& F" z7 Y
Spelloffset:未知参数,仅在Armor.txt中出现" Q( L8 m' [" r/ `& i: F
7 m4 y, p) ~0 S _0 ]0 t6 |9 ?9 KComponent:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:: y, N' e8 F# ^, K; F2 t
0 - HD(Head)头部: W. o0 r: ~& U, P1 w7 ~5 e: Z
1 - TR(Torso)躯干1 h, l4 ?! Q0 @: Y! j
2 - LG(Legs)腿部
; X' U$ ~/ n( Z' P& i) _3 - RA(Right Arm)右臂
" L( s8 y" y7 g2 n; {4 - LA(Left Arm)左臂# s4 w" W1 t! h( U
5 - RH(Right Hand)右手: M3 F; G& T& B9 F
6 - LH(Left Hand)左手
+ ?- [& `- d! ^. @6 Z2 T/ l; u, m7 - SH(Shield)盾牌* G8 {" G0 y7 y0 G6 ]- {
8 - S1(Right Shoulder)右肩
1 H+ {* \ i/ y. J9 V r9 - S2(Left Shoulder)左肩
& Y. u ?0 f8 C1 ]! o) t10 - S3(Necro Shield)死灵法师盾牌+ C7 t% H1 W6 Z2 U6 G
11 - S4(Special 4)特4: E: N# X& w. I
12 - S5(Special 5)特5
. V6 u3 ?. v2 r7 Y# D13 - S6(Special 6)特6: w/ |$ c1 ~" F" x8 M# P: o. y
14 - S7(Special 7)特7# M# _2 ~$ Q, K) V6 l5 [
15 - S8(Special 8)特81 U% m3 c; C% m. p8 M$ }/ U
16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引: T" @# r+ g+ \
; B$ W5 @# x) P1 e
以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度
# R/ G) z# D6 Z, L4 j8 o0 l" ^0 = LIT(Light)浅9 }+ V! B% X8 C# f) i3 l# ?3 t+ P' U
1 = MED(Medium)中
. ~. c/ y4 t: k# H# \7 J2 = HVY(Heavy)深
% K2 S& t6 B- W- MrArm:RA图层(Right Arm)右臂+ Z# n3 r2 k& E$ R2 Y* _3 I
lArm:LA图层(Left Arm)左臂4 U H% `1 c7 M! ]
Torso:TR图层(Torso)躯干7 E: z9 c0 i: z& I* t, T
Legs:LG图层(Legs)腿部
' S5 O1 d$ y/ d0 ^5 K" g1 M" @rSPad:S1图层(Special 1 – Right Shoulder)右肩" l8 Q* ^$ E8 o9 z- d( L9 a
lSPad:S2图层(Special 2 – Left Shoulder)左肩
& v: X, f, f5 ^例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)
" y0 v* C$ K% Q) E5 `% q- L3 A0 W) e
/ G3 ]) l, Y4 h E. q& ?以下四列分别是不同情况下程序对物品所调用的DC6文件名称- o+ i1 P$ S; E- C8 `4 @
Flippyfile:物品掉落时的动画文件
v, @$ K: A( z) v! q4 B% qInvfile:物品栏里的图像文件2 N: T3 X7 d2 E
Uniqueinvfile:暗金物品所使用的物品栏图像文件
) S8 \5 N: [; I3 MSetinvfile:套装物品所使用的物品栏图像文件
5 ?$ @& |- k/ W: X- s8 W K/ m" YDC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件( Y+ S0 F4 C7 z# k. n% `
$ K8 {$ b& v8 R4 q' v( h
Invwidth/Invheight:物品在物品栏中占用的宽/高格数
/ \& N' m" e k7 \* h
" M1 C; \ R# H- J2 x以下三列用于描述物品上孔数的属性
3 o _3 N. s1 ~7 v J# W/ x: o. _Hasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔
- M$ F4 ?; J( @; _Gemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数7 m8 S) e, ~$ f M9 K
另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40- W9 }0 M/ ~2 x8 }1 x
例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是2 \7 P3 @6 O2 \$ x
Gemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔
5 I: \0 c) y6 I: D
* u& k. C3 J/ {8 L4 j1 h7 PUseable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴
# V7 x7 F% }. I: R9 M9 F: |注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。
; N7 M8 |, S. N! q( f) g7 \' p) g
Throwable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列. M7 R, ?* i f P) X+ V
' \+ J4 m i; W/ B
Missiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列
5 M6 H8 U3 ]7 D
4 y( ~# M& c% P7 K& KStackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以
0 c) \# T9 h; W# n2 n$ v! eMinstack:一堆该物品的最小数量
" `" J. c% r; P NMaxstack:一堆该物品所能拥有的最大数量$ L, Q8 \6 |4 a" l# v9 q; l
Qntwarning:警告标志出现的数量临界值 [( F6 Y! N: {6 s8 k' V
当该物品的数量小于等于临界值时,屏幕上将出现警告标志7 F( }. x7 Q3 X# k7 `1 a X
这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等)
, K( E1 u+ e& I. b" [" K* ~$ d' v. x9 s6 A5 |8 C) I
Type/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列" S/ V5 B7 Z- n2 ~
0 I, t! s7 z) m6 ~9 xDropsound:物品掉落时的声音,引自Sound.txt中的Sound列
/ M9 i6 N! r1 I8 C! e5 PDropsfxframe:物品掉落声音播放的桢数 k# _- ^$ r, c9 K1 L! d
Usesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列- E% j: M( ]) k% z. t
3 s5 \8 a% _! N/ F; |$ J+ Q
Quest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC6 J/ |8 c- ~) S1 a! V
Questdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中
/ P! z6 }' w4 V( [: [- s
6 _( W+ L; i0 M4 v: NUnique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态
1 z8 @( k. k. W- @3 \9 T& @; j h; r/ b; d
Transparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位?! v) u& Q0 N, K& ]% e2 k. n
3 x, K4 J- F' l3 a! L. wTranstbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……, d( t2 P% Z$ J0 |+ w% K- p% e! W" l
9 J7 s) t" d- x5 l( ^( R! U. UQuivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用+ v/ `7 U# E7 @, g5 q& ?
) x* ?' B& k6 }# h/ M l; CLightradius:无用参数
1 Q) A" ?0 V! `4 z
- _8 g5 M4 b! @+ z7 SBelt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类 }7 R9 B# n3 p- |) z/ X0 q$ ?2 U
0 – 无用/无腰带 – 1行
! L1 W* |8 K7 y1 – 饰带 – 2行1 X% ^+ j9 Z. J* O5 Y5 ]
2 – 无用 – 1行
3 a0 }# D' z1 C" i3 – 束带 – 4行& [* |& w' e6 N
4 – 轻扣带 – 2行
1 d2 d8 g9 p7 m" e1 }6 ?# ~# \# P5 – 重扣带 – 3行3 o# r0 _1 X# J" H) c
6 – 高级腰带 – 4行
% b3 x4 j5 h+ X, h& m2 _以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带
# Z+ t c) a0 C! n) p( K- p- NBelt:在Misc.txt中的意义与Armor.txt中完全不同! f2 K5 ]' L: i( U
0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏
7 ^0 }3 n f# \0 i由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途
7 w4 X/ b2 O- m+ D" J9 A$ d y, b: ^7 @
Mindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:
1 w' | j8 i& d对于盾牌 – 盾击伤害5 q) s4 ?8 b" ]' a, K. c
对于鞋子 – 踢击伤害
* ]) u' D4 v2 F, z对于武器 – 单手近战伤害
- I6 \, J- _1 B+ u$ S* W3 Y
4 e, m( }+ V2 T/ oStrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害
* o+ w& ~# L: c f7 S. O- {DexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害# C% @3 f; p2 E9 h. F5 _' R% i" t
Armor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成
7 e: x9 H* @3 P- I" P! S
0 y' l$ E" S4 ?) s/ hGemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑
1 [0 X+ }6 o% H
) A6 s; v( u7 U2 j5 JBitfield1:主要用于区分不同材质的物品,目前已知的是:
. r/ z1 y( B" R7 m( _8 j1 = 皮革制
+ m, ~, G! j' Z% m) O% P3 = 金属制, z. R C7 e/ c
仅有金属制物品可以用来召唤钢铁石魔
, n2 Y" ~( f- @. g
q# o* x6 F7 C2 Z/ F( F6 F3 B以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人+ S6 S( o$ g! C) N& J, ?! r
VendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃
( H/ H* P! F7 [% w7 IVendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量, w: u$ h+ e- h
VendorMagicLvl:该物品所能获得的最高魔法词缀等级
. I( v& s8 X: S% N) Z0 m5 d. a- O& v* E! p' ~' {3 p
PermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定- V. N \7 J8 I& S
" F6 F- A8 o, k1 c x: ~
Source Art:无用参数
& i# c4 S$ { x' k: l/ K% ZGame Art:无用参数
* z1 O2 F: u9 l6 `8 c5 A! {8 m7 P, C8 B- q/ \! _
Transform:有关该物品的动画所使用的颜色8 I1 G, s/ k7 ^; A
InvTrans:该物品在物品栏中所使用的颜色
7 y2 w6 P& I) c& s( \5 y5 A" U
8 b' b, c7 E0 [& j7 M9 }! h/ GSkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样
5 j. ?: N- Q. ?
. K# T4 @/ m, G/ h4 V: w4 BNightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变6 X$ N+ e n& x" i& Q
* o0 J3 E2 e2 X d; b, z- T3 K) Z$ h
Nameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行( W9 @$ N/ E( K' w& U' j, K
|
|