|

楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy
7 l7 y4 O) M& J8 O# Z! i) M3 h2 p& b+ i3 [; q
前言:
& ?% V! z# u$ J# E% B5 W" F' |Armor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……
) U' F) U- y( q+ Y2 w1 h
+ b1 D# `. m9 u: r8 l1 c因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。 ~) w3 |: N3 [) |& Q# Q8 H
; a, ?% h' K- H7 r& P
注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。
C0 r1 h5 [% g2 U: ~& h6 K0 R# a2 d: N/ V1 L2 ^
本文件需要用到的txt文件有:
* A" d6 z! r a7 q·AutoMagic.txt5 x1 L1 Z: a, I2 B7 K% U
·Belt.txt# _# b! K* j' G, \1 ?1 q
·Composit.txt' K, |- \+ @9 c; ` ?0 b# S1 }
·ItemTypes.txt* z: s9 S+ N: L- \2 z
·Missiles.txt
/ o/ ?9 J. u; u/ Q7 M+ ~·Sound.txt* Y3 c! Q) E& y# M) j" M
9 \" M1 D; c& Q" P- e! U! S本文件将在以下文件中被引用:
) Q& R4 E) C" { t1 s9 s% x. U·CharStats.txt
, t2 a9 @8 r8 m" v, h$ z& b7 v·CompCode.txt* r- a! `3 g' D/ p5 z
·CubeMain.txt3 Q, |! B/ ~6 z6 x7 V
·SetItems.txt
6 \4 v1 s: I" y·UniqueItems.txt
: h" [, U( f5 h: g' F& n0 ~·……
' ?+ ~" h( n- S& s; e/ d% S! H4 `" @: u
各列功能说明如下:
8 p7 k' O, h6 r. m5 R
% ]& P$ E- l3 r, u" T0 EName:物品参考名称,仅作注释用
, i& k @3 B4 @2 }7 R% r% v+ o% D `; l$ M& e4 O6 n/ I6 l
Version:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现)
' r% ^- K9 w0 i5 \5 ^) y- A
3 {6 q( z$ G2 oCompactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)! ^% x% O2 K1 L8 f
. b6 V% U: |& @5 E6 [! |Rarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃)
: |& o" f4 r/ }4 u0 y- U8 a2 Y
$ w) s7 v8 \$ b, S( o( c3 RSpawnable:0 = 无法由NPC出售,1 = 可以由NPC出售& N% ^ u4 A' l% Y. d7 N
" ~2 E$ N% q2 |9 n0 Z% M1 m! h
Minac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限2 P; U- w7 j2 s7 {+ n/ e' \& E
# D C7 [9 [: }& m2 vAbsorbs:无用参数,以前的作用与“伤害减少X”类似
/ V' z" E- i( k9 [1 z# a% C' h( h2 u! t, N u. ~0 \, a+ @8 L% L
Speed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度
9 W: [; U9 ^6 ^. E3 G3 S: e2 |$ h' a9 {- S6 r, ]4 Z6 p4 c
Reqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是2; V* s' M9 H: R, }6 ]8 q
5 X3 d% o; w5 C+ WLevelreq:装备物品所需的最低人物等级7 l1 W) A$ V( ?! z
# S( |3 }5 X& b. T$ |( S& ~Block:格档几率,总的格档几率上限为75%8 s/ | k/ S3 S% G
% X3 y( k3 A, K5 }, ^Durability:基础耐久度,最大值为255,超出范围则循环计数0 } N: T. ~) ? A! \; p# m
Nodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度4 p1 H. o' G9 t2 f# P
假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性+ f8 M y+ D- T" i
Durwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。5 I6 {& L% B0 R" n$ q2 p+ v
: `! @# a X( {) O% aCost:基础价钱5 o1 G4 m: k& j$ {; R* C" R5 o
Gamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用
4 I& ?3 ^) u: F6 o
. c4 i" r8 f3 c/ ~ g; d: ^# t! Q3 YCode:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件
3 x' x. |6 @ D: J$ `: nNamestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称
! l; L2 \6 p3 w E9 p& ]3 u注意:如果需要显示空格的话,使用TBL文件是唯一的途径% h" L' U& [% P2 u2 x! y1 W
. g! s2 h) H# f3 U; n& J4 a# ENormcode:该物品的普通级代码
" q1 A4 R2 u$ nUbercode:该物品的扩展级代码
% Z( l9 I/ W( j6 g9 K1 @( u% qUltracode:该物品的精华级代码
0 H2 a: [& v# N7 u+ W, {这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照
0 c9 f% P, `5 K举例说明:狮头尖盔(Lion Helm)的属性为* _# t D; b* `- A6 v3 G/ `
·Code = ba7, D5 L/ D) E* B; D" n; m& x
·Normcode = ba2
; ~& h% R2 N( ^! o+ z$ O·Ubercode = ba70 M' D; a1 ~) p5 B$ x3 `# ^
·Ultracode = bac5 y0 P7 i2 b7 V/ L6 Y, i# r
所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用! h3 }) W* `" ^ N {# n5 h/ m
: j' p$ t) n% z( b' I; ~3 I
Level:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲
* j, w. H8 B- f4 k: V1 c* Z( V) t; W x
MagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级4 f. n# @% p( K: g( M! U8 i
) W5 z5 x$ {; M) x+ u
Auto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值
) j. b* Q. P) x k3 a" h3 O9 V( F/ B; E
Alternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件
# s4 L8 P" ?# D$ Y# a7 D! \ l& ~8 ^" [# u+ q$ h
OpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值. y- B, }* [& T: z3 D, T# C
5 h# ^+ K1 n: M
Spelloffset:未知参数,仅在Armor.txt中出现" d- M/ I$ o) w# U& r2 v
- y7 ~# {9 D A3 N
Component:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:2 m% z M4 v7 a
0 - HD(Head)头部
2 c5 U! Q& d! F/ F( j4 {& _, ^1 - TR(Torso)躯干4 G) u( M3 C4 } A$ e) b# m: {
2 - LG(Legs)腿部
" {( o& T9 P, ?$ m3 - RA(Right Arm)右臂 D' m) N N! ^ X
4 - LA(Left Arm)左臂$ Q( B3 H0 C) b0 u- a) L3 }
5 - RH(Right Hand)右手
% s, @% @2 v) i+ J! Q b! A6 - LH(Left Hand)左手
# B- P1 ~5 ]" d0 p% x% }7 - SH(Shield)盾牌
/ z8 q4 \ x k1 ?: @7 m* B: s( X8 - S1(Right Shoulder)右肩) J2 ?4 n6 M' z- X# n
9 - S2(Left Shoulder)左肩- c7 n' b6 K; h s
10 - S3(Necro Shield)死灵法师盾牌& i) k+ g1 w5 z1 C- c) N' e
11 - S4(Special 4)特4
- f% l$ q" ~6 W, V" i12 - S5(Special 5)特5
/ z7 g2 u C6 M- M' c13 - S6(Special 6)特6
4 _% p6 k8 V! e% h! ~14 - S7(Special 7)特75 }* P; J# Q9 z8 z
15 - S8(Special 8)特89 i$ w$ }2 s# @3 p; h" m( d# x+ N
16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引
" ]2 t9 }& w% L+ {5 x4 Z: k
( Y& t! \6 e: h% d9 W% E8 J; q: R& f以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度
9 V0 Q* z2 I' l% {. r0 = LIT(Light)浅! ~8 |# M# Z1 i" }" H% | o7 P
1 = MED(Medium)中
$ e; R* }+ L* e" n. B2 = HVY(Heavy)深 V% T$ d7 k1 D2 A( ^% `+ |5 s" j
rArm:RA图层(Right Arm)右臂1 c2 k4 a8 r1 G1 ?- h1 n/ @
lArm:LA图层(Left Arm)左臂
3 B" N- A" F5 Z. FTorso:TR图层(Torso)躯干
+ {9 p3 D: W- e6 R. Z; KLegs:LG图层(Legs)腿部9 `8 s; `% L/ ?
rSPad:S1图层(Special 1 – Right Shoulder)右肩" B2 N. {, M( p* F" h2 w9 X4 S" g9 d
lSPad:S2图层(Special 2 – Left Shoulder)左肩
6 F; M" K, Y( f' G2 R) H例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)4 u; g6 n3 t& r
4 J5 M- f" f* p5 C& r以下四列分别是不同情况下程序对物品所调用的DC6文件名称
" q1 W) A; a' U2 IFlippyfile:物品掉落时的动画文件
. ]4 Y* }; u# y ~! M, W& zInvfile:物品栏里的图像文件- a, T* u- b' a
Uniqueinvfile:暗金物品所使用的物品栏图像文件+ q. Y' e: C3 l# {
Setinvfile:套装物品所使用的物品栏图像文件5 n C' |2 h$ g2 e* w' a, ?
DC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件
1 ]: R; e7 f1 I' a& h1 u
6 W7 D3 j! D0 a; W* }. q3 gInvwidth/Invheight:物品在物品栏中占用的宽/高格数5 o. h$ k6 @% {" m
- X4 t2 s. T6 d
以下三列用于描述物品上孔数的属性0 m: |, ^ }1 j
Hasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔
& Q+ B$ L& W: l. XGemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数" n" r J# c, C% Z3 m) f
另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40; E! R1 n& o y" j, i
例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是2
g+ |4 }* p$ J( z: YGemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔: a2 K# C d9 f
: S/ {, ]& G) }Useable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴
) b4 G M; {0 ~0 K# m注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。
B# N* ]. W, _, N1 U5 N6 T* Q3 y: v% _: Y5 @
Throwable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列
; k4 D5 F2 G; F( G% W! t! }" o. A( O3 c4 |9 \
Missiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列
: }( m' a. p2 n5 ?8 I0 z0 K9 t2 F8 r7 T4 e: j- m5 j
Stackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以5 G; n- y. Q; O
Minstack:一堆该物品的最小数量" K" A9 Z0 k0 \5 M0 b% h5 W
Maxstack:一堆该物品所能拥有的最大数量5 i: T! a6 i x+ z
Qntwarning:警告标志出现的数量临界值
0 {: J) B0 `! B1 l, k8 `/ P( R当该物品的数量小于等于临界值时,屏幕上将出现警告标志! E( y, O: w5 ]/ n
这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等)8 F" c m" A% q! ?7 z
! a( B! i* d- y' Y K, d& S
Type/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列. N. o J# t. q5 g$ ]8 `
3 P+ C# P2 V/ _2 _6 t/ Z
Dropsound:物品掉落时的声音,引自Sound.txt中的Sound列, z" U1 v) K4 n! ^& S2 o4 q
Dropsfxframe:物品掉落声音播放的桢数# |9 w8 r( K; l/ W
Usesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列8 N# j, ?& s T% v0 `
! x e! B7 L4 [* f# [9 jQuest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC
9 p0 O0 z5 U) b4 g! G# XQuestdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中
7 l7 M4 Y) L: o- m8 H
! z8 h& ]4 G9 h$ {" [Unique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态; P' [' [, V9 |( q) O
9 a/ M2 s6 t5 eTransparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位?) Q" |" E, v4 H4 F* K7 R
& N# r, ]5 r; d: M' p; F% Q; L- bTranstbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……
& J4 T/ E# A! Y$ N& Z/ U6 w3 e- t% z) L D! Y. F/ H2 R6 T
Quivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用
% e- o6 j" k( v U% q
3 ^, G2 x; b* C9 d: c7 oLightradius:无用参数3 P% M; y8 U$ A
: n6 L" K: O" z+ k& Z0 @* k# Z; Z) i
Belt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类
6 D7 O( e8 k! w2 |0 – 无用/无腰带 – 1行# W" h) h. w! e, L3 C0 p
1 – 饰带 – 2行
! p! w6 t" ^$ q" v, y4 A- f2 – 无用 – 1行" x3 S+ n# Q3 F4 W' d
3 – 束带 – 4行
( E j/ G) |9 g. h4 – 轻扣带 – 2行& Q0 y+ F8 p! s# J3 \( f7 Z
5 – 重扣带 – 3行' C4 x8 T6 C6 q# c1 j
6 – 高级腰带 – 4行; D9 ^' l% G) {5 i+ g6 G; F Y: ?
以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带
3 _" g4 r. Y( v( L9 VBelt:在Misc.txt中的意义与Armor.txt中完全不同5 _0 Z4 Y; i: B+ I' Q4 O6 v8 s
0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏4 Z. q# I2 \) a
由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途& l% p8 Y9 @- y- E
% E& k9 Q1 B- K: D5 RMindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:
0 @" [$ H0 r$ s9 Y+ K, f对于盾牌 – 盾击伤害
8 m0 W2 c# j3 {& }6 e9 I对于鞋子 – 踢击伤害- w+ i! a G% Z( c* C
对于武器 – 单手近战伤害
/ {. ~- t$ ^) {7 F o' q! V7 ^: ?8 |7 {* E( z x- k
StrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害
; r- R! \# B. S1 U$ A) a) eDexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害
4 h/ U, ^6 F$ O4 V9 C0 r! ?Armor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成8 v8 Z% ?. M7 o9 S4 G, g' ~
t6 S" M8 c& a: u7 cGemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑
2 i( P. y& S4 R5 U, w
! Q. ?, b N# O1 KBitfield1:主要用于区分不同材质的物品,目前已知的是:6 b- D- p d! j; ~! h
1 = 皮革制
# ~ W. \( Z& Y( l8 z# t W, c3 = 金属制
4 d ]7 o( K+ C9 L% a% a仅有金属制物品可以用来召唤钢铁石魔+ L5 ^. z" u0 Y# N
2 L* d5 c) K) ^以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人4 Z+ ?) m+ M0 U8 x
VendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃
+ ?# L6 ?6 F9 D9 m( v+ XVendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量
3 T- l6 O0 k( ~ a- C! l5 mVendorMagicLvl:该物品所能获得的最高魔法词缀等级0 L4 W* B( H. y! [
8 Y' o1 `/ }% C1 B/ E( U3 hPermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定8 X% k3 y. N* k6 [8 o$ p
; ]5 C2 o3 J# l7 n1 b: Z
Source Art:无用参数
- P* ]! x0 G1 S8 \, D# [. kGame Art:无用参数7 E. D; O* b5 p' p$ r8 L
% c( w# y. @$ `4 f$ e8 R( v [8 ]Transform:有关该物品的动画所使用的颜色
# N/ Y- B3 W8 J( t# Q" E hInvTrans:该物品在物品栏中所使用的颜色) q2 _% D9 v6 B: D: P; K: w
; p" q5 ~" V2 I8 SSkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样
. q, c2 E3 R+ R4 R% d [7 B. b% a
NightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变! t" T, @( f8 Y( M5 ^3 K4 W, D0 H
7 \1 f. y( e3 \5 z F; e% YNameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行
7 ~% i$ M& i4 m$ P( n |
|