|

楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy
( g( S& Z' \* S1 W( R
+ r% n1 ~& _# n m前言:0 j5 }. L; i$ a- v, Q; K
Armor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……
, q1 n' `- ?/ q+ ^2 R6 Y( ^1 X1 H9 W& p: N) ^- l6 {( k
因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。' a" Y( x- A" s/ f9 ?/ f$ L
7 ]6 Z1 s! Z( Q8 w
注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。
* U# [/ p L9 M A7 B- P- J3 C4 M
! k$ @# D& F+ s# d6 H$ x9 A本文件需要用到的txt文件有:
" u- Q9 [) \' A' M$ Y) s1 Y) S0 z·AutoMagic.txt
0 O' C! y3 N0 g·Belt.txt
6 Y1 w2 T$ R' b i. v, \* `& W·Composit.txt
* k2 b$ _3 n: S5 j* \" c _+ b·ItemTypes.txt
( p$ z9 U2 Y# u" j) B: M·Missiles.txt2 d) ]+ j; M& W2 W( t
·Sound.txt0 @+ x$ b7 _& _! i
: H; P$ X ^. i) n/ m
本文件将在以下文件中被引用:
3 K& h' C: ?! [; t! W, F; I( f·CharStats.txt: r4 k* P3 d( o. J
·CompCode.txt
# o9 ]2 T5 G, ~6 a·CubeMain.txt
0 k P! u% U/ b6 l+ `·SetItems.txt
! R. E/ ]/ v/ {* p k4 Z·UniqueItems.txt
2 h0 Y& } D+ d& x' e2 M·……
: W; O/ S+ W7 Q: J6 e0 X6 U2 L+ H2 y( Y1 Z* Y+ s" @# t Q
各列功能说明如下:
$ Q6 c6 j1 Q/ b/ E$ T- z" W7 j7 o: N
; s9 \( v0 z' k0 PName:物品参考名称,仅作注释用
9 W. }' Y8 e/ ]& _7 {$ A) a0 r1 X, w* a2 { m
Version:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现)
! c0 v; I0 M* ?8 p- e9 }9 ]4 Q0 ~% r+ K
Compactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)
, y$ @0 O# w/ D
3 p0 E t# F: D& _3 TRarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃)
7 k: C8 }; p" R2 a( ?/ b3 G6 ?9 k" A; _& L3 E/ B
Spawnable:0 = 无法由NPC出售,1 = 可以由NPC出售8 ]. f. {& z; T
6 Y. Z" w3 Y" @- v) m3 sMinac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限
+ f* \7 s) b5 ?6 c3 ~; S8 ~( c2 V# \6 }2 s5 f! }$ r
Absorbs:无用参数,以前的作用与“伤害减少X”类似
% U* J- ~$ d5 Y2 b7 h; R$ z3 Y: D# T
Speed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度7 k% o$ }" L. C* N
1 E, b# ^1 J6 Q+ oReqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是2$ `! W* s) K9 W5 k
B9 O ^% C- ^# h
Levelreq:装备物品所需的最低人物等级6 g$ Z7 q9 a7 K: z
* ]* c8 i4 H+ d* M4 eBlock:格档几率,总的格档几率上限为75%
2 q6 m0 {$ _' T u, h0 p b! w" h+ x0 w4 y+ D, S
Durability:基础耐久度,最大值为255,超出范围则循环计数( K$ W1 N7 [1 h+ w& F. V% h4 s
Nodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度! i Q0 I$ Y" e9 @+ c S2 d
假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性
9 t& V& g2 g4 W: Y6 D, v6 T bDurwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。; b1 K# w! t. d( V
) T( C: l2 x* A/ d$ h& w' F
Cost:基础价钱
9 V5 V; s ]& p) ^Gamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用
. f# m5 M* E1 ?* V4 \% A) x+ Q9 v/ N: }5 m$ ?
Code:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件/ u T8 b5 N6 H U: B; J1 M
Namestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称. E% @8 m! e$ g/ p
注意:如果需要显示空格的话,使用TBL文件是唯一的途径
3 I1 j" }' y0 H$ p4 E2 t
9 k6 l3 x }5 P# {, P9 j1 w+ cNormcode:该物品的普通级代码/ O* X9 ]+ m- }
Ubercode:该物品的扩展级代码% F$ Z, s( T8 p, d1 u
Ultracode:该物品的精华级代码
- Q1 X" o' a, Y+ S8 l9 A' H这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照
4 M( r, O! c- R6 m* n9 w0 m举例说明:狮头尖盔(Lion Helm)的属性为* y+ b2 B. i+ A" m7 @+ U+ B
·Code = ba70 n2 O+ |$ _, F4 T0 |4 }, R
·Normcode = ba2' r2 `( R0 R P0 `5 h% O
·Ubercode = ba7
& Q5 M6 h, s8 d2 e, x" o·Ultracode = bac
) P5 N$ h8 c! t6 i7 |所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用+ e8 @: F, v* b8 \$ [
5 B: o' X" O1 T4 [) x# y* G. K6 _
Level:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲9 o2 k- b6 }! N: x
: j; B6 \6 ~! A3 r7 v3 ^, |
MagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级9 G& L: M' v1 }5 q
. c& S5 l1 |. W! [
Auto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值
" @6 c7 y1 m1 g8 W* H8 q
3 u9 ~ l% K" M/ ^5 @Alternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件
# N/ \7 P: d6 _8 M9 }
9 ]8 x" W1 h, H+ ~$ fOpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值$ Q' n% l) w6 m n
* O! x: Y4 z/ i9 J' R
Spelloffset:未知参数,仅在Armor.txt中出现
' [" v: j6 d; r2 o+ k3 q }- q
l1 m* U7 `& R- {8 d* i! @Component:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:9 i$ O+ }- U4 u6 y0 B% ?' M( h0 C2 A
0 - HD(Head)头部
1 b$ t3 D- ]* T3 i$ G3 y6 a1 - TR(Torso)躯干
% h0 u7 A# \: O, t8 M2 - LG(Legs)腿部
; b2 R N& Z# ?. k& F* G6 _+ w7 V( i) ]3 - RA(Right Arm)右臂
# \+ V9 B% X) c' }, b& A" H4 - LA(Left Arm)左臂* e" P: X6 r- B, ]
5 - RH(Right Hand)右手4 b$ H5 b$ d6 \9 O! H5 `
6 - LH(Left Hand)左手
4 R/ q ^9 m( E: ~: m7 - SH(Shield)盾牌
( _8 k! D9 b6 L3 d% m; G8 [8 - S1(Right Shoulder)右肩; J. n* Y5 ?! U6 h/ X# n
9 - S2(Left Shoulder)左肩
* H: S4 m6 K( k" n10 - S3(Necro Shield)死灵法师盾牌$ X% Q6 ` I1 r% g5 z
11 - S4(Special 4)特4/ _) I) x0 r5 @9 O2 A1 c9 |1 K* H M% _5 t
12 - S5(Special 5)特5
" A5 }; S, m5 \ I13 - S6(Special 6)特6" z- a% R6 g6 Z9 |8 w: ]
14 - S7(Special 7)特7
) o* z! v) U: E+ D7 ]4 _15 - S8(Special 8)特8
. \- k: J3 J1 ?6 \16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引! u6 H% n3 }+ m2 M% }
% }$ I8 ~1 {7 E: C7 I以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度
1 L# t D0 h4 u+ ]& K+ I0 = LIT(Light)浅+ R) ]" T3 j/ e `% ?) R2 w `' d, L
1 = MED(Medium)中
' m7 o' r9 u; P& P3 {2 H' \2 = HVY(Heavy)深. }5 e( _( o5 m
rArm:RA图层(Right Arm)右臂8 @8 V" Q; U' c3 M* Q( e
lArm:LA图层(Left Arm)左臂
! l( v9 `9 v. O) v# FTorso:TR图层(Torso)躯干
7 s0 N, G! e& S7 PLegs:LG图层(Legs)腿部) K1 ^6 t% c4 u6 H# \' S" h
rSPad:S1图层(Special 1 – Right Shoulder)右肩
* v; K, h, ~; @) E+ }+ ^, _4 ZlSPad:S2图层(Special 2 – Left Shoulder)左肩4 g G& }. y9 u
例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)9 v p5 G$ p. k$ [& f& l
) O4 \* Q* T: E( _7 |! o$ v, C以下四列分别是不同情况下程序对物品所调用的DC6文件名称 U& M8 t- M2 L8 |6 D
Flippyfile:物品掉落时的动画文件
1 m9 X+ u6 T/ x' J# Z4 ?, fInvfile:物品栏里的图像文件
3 g' i& S. T" s. _ }Uniqueinvfile:暗金物品所使用的物品栏图像文件
" b2 m6 ]9 n' D# W8 |) Z5 KSetinvfile:套装物品所使用的物品栏图像文件
1 W/ e( {) ]" s! m! ~+ \ VDC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件 J6 r# f, w S0 U$ Q
9 _' r0 ` D) m' S7 b) m& Y. BInvwidth/Invheight:物品在物品栏中占用的宽/高格数9 x1 p ]: z0 _1 G; o. [/ L& g( j
% u. Y# f- w+ `" G* o8 e8 Z9 f5 X+ j/ m0 `' Z以下三列用于描述物品上孔数的属性
$ Y" T! y; r$ Z; C" X* `2 u0 jHasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔) Y( ~. N& @3 \2 v0 J4 y
Gemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数 |" y/ ?. A) y% ~$ f$ g9 W) G3 R
另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40
* d# v/ q& S# d3 e1 t2 f9 z. e" M8 x例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是21 l( ]- }; \1 v- W
Gemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔
. _/ h4 A0 V" d b1 C. I
; n z3 X& G- @; XUseable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴 K% s& A+ o3 s5 B. t
注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。
: P+ c$ ^3 z ?' O/ Z4 \
# t7 H& m. T9 G2 |) ]Throwable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列4 x! G1 e: v! @. P- C! \
; n- [6 d' p2 ?/ S
Missiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列
" t, L* C8 e3 E: Z W; }9 D# A
5 y1 r& |+ ~9 C; K: f* T# nStackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以
2 r% D$ k6 F4 HMinstack:一堆该物品的最小数量
7 n7 `* o# D$ h& Q g) {4 B, BMaxstack:一堆该物品所能拥有的最大数量
8 y, z- Y: V+ B2 w Y$ k O% U* [Qntwarning:警告标志出现的数量临界值$ R7 }8 d2 [9 H( X( ?
当该物品的数量小于等于临界值时,屏幕上将出现警告标志
/ P8 a+ I* Q9 F+ i5 \1 Z& A这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等)
1 }7 A# v) I" \! Q, ? q5 `
* F6 U: ~- [/ ?! ~& r0 j+ F" eType/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列, U5 v5 k0 ?2 K2 y) v" z
5 h2 n" Q( Q/ p) kDropsound:物品掉落时的声音,引自Sound.txt中的Sound列/ y+ l2 q$ e v( j2 ^
Dropsfxframe:物品掉落声音播放的桢数
8 h7 O0 T% f/ [- C. c bUsesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列
+ t" B- b* Y# K% u. e3 f4 \8 u+ u) I1 F. S
Quest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC2 C7 \0 T- A6 l% d n2 g
Questdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中5 H: a ? c( Q* W. x- [, u
e: Z2 g! V) J* a' z/ n, oUnique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态
: d5 ^$ J y$ y% Y0 a1 V8 z7 d! @7 K
Transparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位?
9 _! b7 `, }: J+ p4 O+ o/ d& g: p; r+ k; S
Transtbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……
% E, N3 I W1 X0 b2 V1 V! U8 E3 p1 L/ I; _9 R' E
Quivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用
1 V( J5 X# L2 E+ S `+ U$ V) x. O. g8 {+ v9 c ?0 Z' U
Lightradius:无用参数
* i v+ w4 v0 a/ r+ b3 e& V3 i/ n( M4 S4 f" j/ H
Belt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类
# @4 n: w. w0 ]* y2 e0 – 无用/无腰带 – 1行
5 @ E( p; N3 `& E7 x7 ?+ ]; ^1 – 饰带 – 2行
. [! R( u# N; o3 u% X1 z, d2 – 无用 – 1行0 d; D; T) l) X
3 – 束带 – 4行
% ]& A# B3 |: {4 – 轻扣带 – 2行. ]/ W; s0 w) N5 m" l! ~" |
5 – 重扣带 – 3行/ P# m( s1 s$ Q
6 – 高级腰带 – 4行% c% j1 w% H$ T% p: }
以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带
H) G, _" k5 g" m EBelt:在Misc.txt中的意义与Armor.txt中完全不同
( ~& p/ x( l g. C) c! }( O0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏5 C1 P" a+ [# W" Z. I; ^3 E1 T/ [
由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途
9 p) _" C; w! Z( d: X, t1 c" i& ]$ C* ? B7 S* }7 t1 w4 t
Mindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:
; j' s' T% F/ x# f8 k7 p对于盾牌 – 盾击伤害
; x5 L k/ O" ^7 C, s& ?对于鞋子 – 踢击伤害
) _8 @. _) [. G. z& Z) V2 d对于武器 – 单手近战伤害
% Z% f5 A: i6 e+ x6 p+ d& ]0 t' X; U* i. w6 l( }+ i: D
StrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害
( Q" v, h5 h' N9 Z% q2 RDexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害
; W; U0 V, G! X( kArmor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成
, X2 _9 y9 M* Z7 G0 ~$ X# i" p1 \7 J( @' x
Gemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑- m. k/ X& W/ C) a- u
% E6 l) m5 Z: [5 ~; N/ M( L
Bitfield1:主要用于区分不同材质的物品,目前已知的是:/ L- R' `; B3 {5 c- E% C
1 = 皮革制
. l. u9 m5 g5 }7 {' c3 = 金属制
/ `9 s' z% k7 Y* b5 \! E4 @仅有金属制物品可以用来召唤钢铁石魔
3 i+ ~% [( m) G9 z" H1 O: O% ]6 Z- Y/ ?) k0 l: h1 ]( h3 I- f
以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人2 K( u# r3 B2 g0 X
VendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃
$ ^% Q- X( T& UVendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量
2 U4 i0 A V: J8 y/ C! }& SVendorMagicLvl:该物品所能获得的最高魔法词缀等级
6 j6 P t6 n# ?" G1 h& ~
) b, X2 \6 ]5 b4 XPermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定- P* P) m+ o4 Y6 Q# i
- E) `. H# j! a7 l6 f9 Z
Source Art:无用参数
. J8 [- ]( W9 A( h9 W2 V: \* OGame Art:无用参数
$ [3 d% L1 T) ]" |% o$ ], c9 C) T6 j. T* A5 r! t$ z
Transform:有关该物品的动画所使用的颜色7 K* [$ R# {# _. j' N) ?$ u* N
InvTrans:该物品在物品栏中所使用的颜色! j- t$ Q5 l# ?: A
. N q6 a7 v- g! z! W! A. e
SkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样% y& S6 R, r/ _
; o Z+ d. h. b% J6 |
NightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变
4 i; M( k7 a: D- @' C9 s8 X7 g' O7 s& d* k: f, I
Nameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行
# O$ M- [' j S( q1 u |
|