|
楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy
# Y6 }2 B9 M2 N" v& Z3 R* |0 B" E3 _# }% @& }: ~# c* ^
前言:
: f2 x# {: s i* b7 SArmor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……$ D# n$ ^; H# H. a0 R
- `. c1 ]8 x4 t s0 {2 e
因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。
+ v) R7 Z. e, P+ b! P3 |- \! T! b. ^$ }
注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。( B- i# |: k b) t: {- N
5 s7 W: w# ?. s |本文件需要用到的txt文件有:
9 q/ L& E5 \0 K1 l8 n5 g·AutoMagic.txt
; p% m1 S, o! P4 g- q( u·Belt.txt7 Z8 Z- e. d, H, l4 c1 b
·Composit.txt, {3 ?+ s8 {# _/ |4 G
·ItemTypes.txt
" I0 n! J3 B* h·Missiles.txt: t7 B$ S# W$ t# P0 C
·Sound.txt7 P: [( a* I& b1 F
7 {1 E' L1 B0 z' E$ v9 T
本文件将在以下文件中被引用:
' `+ [9 p% H- ?·CharStats.txt- h& l+ s4 D |9 q1 ^
·CompCode.txt& z" a2 p* Z- U4 M
·CubeMain.txt" p/ s' i0 j! G+ }0 k7 Q$ L* j
·SetItems.txt1 \. g0 T6 Q5 K# w; ]+ ?5 r, @6 ^6 `
·UniqueItems.txt3 |: {- O/ B0 _4 {
·……
: a5 o8 b7 N7 m) X* p# Y% T; k/ X& \/ X' Z H
各列功能说明如下:# Y# r* {! V5 P' ]: H2 T
5 b# B3 M0 I/ W2 q' w8 ]Name:物品参考名称,仅作注释用# l& z( o$ A' y* T* `/ ?
0 \5 T# Y& X. u- M* q; e: NVersion:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现)
' a' P4 h1 t, z2 r- t1 i2 W" T
Compactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)7 Z; ?9 ^* S3 C3 _
" ~% c5 ~9 k) I+ {9 B
Rarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃)
* f8 d* ^ ]0 v5 i6 L3 n" }9 c3 n$ [' j
Spawnable:0 = 无法由NPC出售,1 = 可以由NPC出售2 v7 V* [5 x. P) \! a
! j6 R. }. w' f* F& n! _2 l! n k3 N8 [
Minac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限
7 z/ d' W6 n* I/ i. S) ^3 x- n9 w8 S' ]7 [7 w" S/ ~5 t
Absorbs:无用参数,以前的作用与“伤害减少X”类似
9 r2 l) |4 P% S( O9 [ O2 z2 P2 J+ o' K5 ]8 v: E
Speed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度: j* f% B% S. T( p
; _. I) W {* E' m
Reqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是2
0 a5 @3 s8 P5 s# C( H2 s3 p7 B5 `+ F# \
Levelreq:装备物品所需的最低人物等级) w6 b, t" o. F$ ] P+ L
) D% w& z( M+ f. `: }1 k( ~7 f8 H. ~; `
Block:格档几率,总的格档几率上限为75%
6 k( M! L# d1 ?6 C5 | n5 f6 b
' |- ?1 [+ z( }8 p9 \( t. sDurability:基础耐久度,最大值为255,超出范围则循环计数
! d9 ^% z8 O3 y. H3 C3 Q0 b% ONodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度" T; E4 z+ m3 j: I
假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性
& L6 S; t& J- C4 sDurwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。
7 @8 W3 U3 ], z9 Q0 x- J) O* U$ m9 L/ ~7 T* d' x) Z' M
Cost:基础价钱
1 Q+ \% r9 R9 r$ j" O$ s# ~Gamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用- t- e; t3 e7 _4 |2 z3 A
3 y* i8 K. V# d) d! `! l2 n* bCode:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件
& V6 j2 b v# P0 \# {! D3 XNamestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称1 \* \4 J6 v( c) [. Z+ Z+ \% Z
注意:如果需要显示空格的话,使用TBL文件是唯一的途径: Z$ k! N3 }5 w# |! @
( b( `" Z* S1 ~9 X; i
Normcode:该物品的普通级代码) |4 z. Y% o5 K ?' e R; o6 a
Ubercode:该物品的扩展级代码
- G S1 G3 V1 C: UUltracode:该物品的精华级代码
2 j. v8 e3 \5 Y& D. B这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照
3 z. d' ~) u) g! G+ i5 b; N, W举例说明:狮头尖盔(Lion Helm)的属性为5 A- N% m6 {/ ?# g1 d; T+ b$ P
·Code = ba7
) b2 \5 V: `: \$ W2 U4 p·Normcode = ba2
: M) Z& A% F: l4 f( h/ W. `·Ubercode = ba7
8 t7 g% h8 t6 U/ [·Ultracode = bac& g& U7 ^) R1 x9 s- [3 x
所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用
0 P h- \+ H* C4 g) ^3 A
2 ~ \! I/ a; r( g C. r6 ELevel:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲# U8 D- b) \* ^% I5 |/ O
* L/ Y W O& U/ T3 b3 XMagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级. P3 @9 s3 T+ ~3 f& x
* t- z" D' ]) c$ X! h Z! J4 y
Auto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值
* R" v# T% b$ m) Z
% F/ t/ S* |9 W" LAlternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件
- d6 Z, e, A/ I; k* s" Z" S9 t" t* y3 U' P: n! w
OpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值
7 E7 \9 n6 J% h9 a) \& b1 O7 V6 B0 d. D, Q7 k5 a6 I
Spelloffset:未知参数,仅在Armor.txt中出现, `7 _4 D' U! b, C- ^. Z+ K% g
, B! `) l/ p1 Y/ y- G" Q; ^
Component:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:
" T/ S P- i; j% z8 D7 m6 N0 - HD(Head)头部3 }: C- {2 \ X. G
1 - TR(Torso)躯干
6 p( {/ m. a9 \% p7 u9 X7 C2 - LG(Legs)腿部! }* W) F( D* I& P' c( T
3 - RA(Right Arm)右臂9 } ?5 W, r$ o5 n2 ~
4 - LA(Left Arm)左臂
! k: p3 L# ]9 I; W1 h1 W5 - RH(Right Hand)右手
9 a* I2 `/ q3 N, x# a3 ~' i) h6 r6 - LH(Left Hand)左手2 e4 y% [# x7 f5 Q& N7 T# \
7 - SH(Shield)盾牌) @7 Z, L# u5 ^# U, L$ @
8 - S1(Right Shoulder)右肩
: e8 ~7 O: d A) T) u9 m) E( W9 - S2(Left Shoulder)左肩
- H- g% O1 G, x: o+ b& X10 - S3(Necro Shield)死灵法师盾牌, p2 P, p+ C7 r7 [
11 - S4(Special 4)特48 F9 j5 j) T' A$ K2 N+ w
12 - S5(Special 5)特54 Y0 R) e2 }8 ?# h: s' l% Z
13 - S6(Special 6)特6- c+ S8 c h. p
14 - S7(Special 7)特7# W V: m( L' P; T& D% i
15 - S8(Special 8)特8' J! w5 @- ?! B
16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引
; X, o3 g. r+ q- r+ l5 {& e, x k# G# B0 v- O
以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度8 k o+ v3 K& b4 E) p9 d
0 = LIT(Light)浅
6 v0 d, ]4 l' u; p% v. c1 = MED(Medium)中
' _& t( A, C0 M+ f T* G2 = HVY(Heavy)深
" Q9 A* ]8 B$ X; q7 Z' NrArm:RA图层(Right Arm)右臂$ `5 v3 ^$ @$ }3 Q4 A3 n' x
lArm:LA图层(Left Arm)左臂
X9 J4 p9 o, ~ y& |5 S, \ `2 {Torso:TR图层(Torso)躯干
& T( `' P! b+ z# a H7 fLegs:LG图层(Legs)腿部/ M( m# X6 c& C; U$ M; V
rSPad:S1图层(Special 1 – Right Shoulder)右肩
6 @; Z" X3 B& {$ ulSPad:S2图层(Special 2 – Left Shoulder)左肩$ C0 @6 U" q6 P+ Z1 L q
例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)5 q7 P& c" j! Q8 a9 F( A
( N8 v/ n+ M. p% v+ [以下四列分别是不同情况下程序对物品所调用的DC6文件名称
+ l& \" u6 k; A1 P) ]3 M. [Flippyfile:物品掉落时的动画文件
6 `+ c0 z4 R* qInvfile:物品栏里的图像文件8 V% c7 H9 i" z5 a3 P8 G0 v
Uniqueinvfile:暗金物品所使用的物品栏图像文件
1 t% }& Q6 k6 WSetinvfile:套装物品所使用的物品栏图像文件/ T$ F m# o) D$ {" _* y- g4 b
DC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件
+ v/ }# _* }$ q, P0 ~: V3 _4 N4 U. E) }7 |3 N
Invwidth/Invheight:物品在物品栏中占用的宽/高格数6 e$ m8 B8 @5 `7 G$ {$ L
Q8 [6 S! ], x4 U
以下三列用于描述物品上孔数的属性
* A% Q( Q9 Y3 a4 }Hasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔
. ]/ [5 F# f# C& ^! ^$ f2 WGemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数
% d$ v! d: C$ ]' g* T另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40
0 Q5 e5 T* A9 S m1 D2 I7 h. C: t例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是2
2 g2 @8 f: d( [( M: q, rGemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔
* h0 a, R3 ~! {3 E0 |5 t1 {: Z5 @* Z6 q3 P) ~
Useable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴
, d) G+ ~. v: Y4 w, Q注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。; @! o/ {" \+ c* ?3 r9 [+ _: R
9 I, {8 h/ J1 z8 _5 D- R2 [
Throwable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列5 e: f0 y; K7 z. L% g8 P
. Z, X# I3 T; H4 X1 p- ^2 {& MMissiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列
: w D6 H8 _% b$ t, v8 d0 `7 b- n8 G; v
Stackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以
8 P7 W2 M7 l8 g* P: BMinstack:一堆该物品的最小数量, y% b5 Q; H6 U
Maxstack:一堆该物品所能拥有的最大数量
# S5 f+ S9 e! SQntwarning:警告标志出现的数量临界值
8 d7 C( R9 `7 {& g4 }- r& |当该物品的数量小于等于临界值时,屏幕上将出现警告标志, H9 J, N: c0 n0 @; s
这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等) C) `4 Q) t, z# @+ {+ P
" y5 C5 A1 p3 P. D, c1 eType/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列2 z* L+ T, C& h; m X
1 I& l8 E. X( ?# W7 C# c. mDropsound:物品掉落时的声音,引自Sound.txt中的Sound列
$ ~: z. ^; X7 ^6 p4 h" [0 F# b: cDropsfxframe:物品掉落声音播放的桢数
, Q, C2 f4 @, W) xUsesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列7 M$ M5 w: n3 [1 P: E
; \! ^4 Z% t) h
Quest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC' \% M" }% ^7 _2 W T
Questdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中$ \9 _* s2 V7 ]+ T5 A8 v$ H( W! r
/ ~ w" t0 y3 V; X0 p9 A: M9 zUnique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态9 D4 V; Q% z/ Q$ X/ d2 {# m
0 X& J Y8 ]# \Transparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位?( d7 |8 B8 i: _
8 Z) e0 r! {2 j) Y. G6 x
Transtbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……5 n3 m3 I: {, L8 c
4 b/ V' E+ @+ H4 N: z& G, S! r6 {Quivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用- Y" ?$ }; d/ P' w, X( X- ]
2 X, C( Y" k- oLightradius:无用参数6 L' _4 B; b) |, V
* I- E# S; {+ o/ KBelt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类3 I, @) y, `7 i
0 – 无用/无腰带 – 1行
: X2 H' T4 r7 s) B8 \+ G1 – 饰带 – 2行" r" z9 n, o' a7 q
2 – 无用 – 1行( L( w0 B; _" O% ?& U4 S
3 – 束带 – 4行, G5 B! j( T- l, r. B5 n
4 – 轻扣带 – 2行
+ O) J0 Y, [" _$ _5 – 重扣带 – 3行
1 r z2 W3 j% l7 Q p4 x' v6 – 高级腰带 – 4行
" k0 G- _8 t, }4 ]4 i以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带; Y/ ]: p r! Q; ?' z/ V
Belt:在Misc.txt中的意义与Armor.txt中完全不同
3 y# e& f3 u Z2 ^* ?0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏
/ T7 j+ X# K6 b5 l. o! m9 j# U由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途
4 g3 b) K7 d( e; q( q, _' }9 z, a1 B) A* f
Mindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:
6 }9 t! f' r) B3 \4 l S% A( E对于盾牌 – 盾击伤害, }3 p7 \$ `* f+ g' |; X9 W5 p W
对于鞋子 – 踢击伤害9 S, @ b6 {) ^$ I$ _9 L8 ^
对于武器 – 单手近战伤害 T L/ a3 E: k
; v: o# C* X; O5 QStrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害* H5 ^: g3 `4 k% d
DexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害! z0 _* @1 \7 m' P
Armor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成) b6 _# L' p/ i2 Q
" Z* d4 X/ l# b5 [6 T% x. h* ]Gemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑' e2 u+ d5 X' M5 w; ], s
! w6 b3 b4 O9 \9 C2 uBitfield1:主要用于区分不同材质的物品,目前已知的是:0 v; B: E/ Q) z* \
1 = 皮革制
6 l/ l. v8 z# C: b3 i) F3 U0 J% `3 = 金属制, L2 E; H1 C5 W m
仅有金属制物品可以用来召唤钢铁石魔 Y3 E# s8 M4 l& G! W! A
& }9 a j$ L( g ]. J" _以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人7 o: ~. U; x" w$ h: y
VendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃
3 q! @) I7 M# z) S, i2 |, n+ XVendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量
7 T( ]& R9 l# h* p. LVendorMagicLvl:该物品所能获得的最高魔法词缀等级. p) ]" b2 d! w: U
+ n* ~ V3 l; v6 f8 APermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定
6 N9 X: Q7 p0 P. z1 s; e) F, ~3 g7 B) b* N0 f
Source Art:无用参数/ m* ?4 q! @! r1 o
Game Art:无用参数
- r, N& I I$ ^. n$ @9 Q9 t8 \9 u9 z; t0 l; l, m: h
Transform:有关该物品的动画所使用的颜色6 Z' Z3 C+ X- r2 V9 |3 V
InvTrans:该物品在物品栏中所使用的颜色6 b1 N; e& m$ K6 i# D
5 I' P# i0 a8 n. Q/ | s: LSkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样
2 X, P" C$ |. v8 v! I2 B
1 d5 A/ K5 S8 G( ]! }NightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变$ U: E/ d2 c0 P# `/ u$ K
, e9 _0 n9 Y+ [4 U1 ~' w% fNameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行8 q( k) Z! u% C4 J7 E% V
|
|