|

楼主 |
发表于 2020-1-15 01:46:40
|
显示全部楼层
Armor.txt By Nefarius,Kingpin,Ric Faith & Paul Siramy
9 v8 [, H5 f8 @' P. g
4 L" S% f- Q3 F前言:
3 J @7 S, ^ `7 B( t9 _Armor.txt,Misc.txt,Weapons.txt三者有许多共同之处。它们事实上只是一个大文件的三个小部分:游戏在读取它们的时候会将三者合而为一,全部列入一个大型表格里。这三个文件涵盖了所有游戏中的基础物品类型:普通/扩展/精华级的装甲、头盔、手套、盾牌、武器;以及各种药剂、宝石、钥匙、卷轴等等……0 _+ v( y: ~9 T3 ~* R! [1 |
: G/ }2 \6 [% I; X. Q0 M因此,我们完全可以往这三个文件中添加一些列。例如把Transmogrify、TMogType、TMogMin和TMogMax四列添加到Armor.txt里面(这四列原本只在Misc.txt中),并且让某种头盔使用这四列的取值,那么这种头盔就可以变成其他物品的模样。乍看上去这似乎是不可能做到的,因为起初在Armor.txt中并无可实现此功能的这四列。, b' d# J7 b( u7 N
; V* V7 p3 N/ |
注意:要想往某个txt文件中加入列,请勿使用D2Excel工具,D2Excel无法实现此功能。请使用MS Excel或者其他能够识别并输出以制表符分界的电子表格的工具。. f; R( t, J- I0 B7 p, M$ B I: o9 U
+ F- E- ?3 @/ T2 d0 A% @$ j本文件需要用到的txt文件有:
/ v* a/ P) |5 P·AutoMagic.txt
4 B8 T8 s. j* s7 L( E; [; j·Belt.txt) F! R# g6 i$ d, z: z# H
·Composit.txt" U3 P" t4 g, p% D2 G$ k) H% z: x; K
·ItemTypes.txt% W2 N9 r- q, s- r: ~
·Missiles.txt
+ E2 o, W- a5 f& ^1 L·Sound.txt
' W5 Z' `7 i& j4 |+ u
6 M. B2 V& h8 d1 e8 c2 @& f- e本文件将在以下文件中被引用:8 q, K. V0 J# M' O. S% C1 a2 }0 y# b
·CharStats.txt
2 {' f8 M2 a; t) U L( Z·CompCode.txt
7 C" F7 l, q2 A& F·CubeMain.txt
9 A) o Z- {8 J7 `( }7 R% w4 |·SetItems.txt
" O; R8 Y2 l: d# J1 m/ n·UniqueItems.txt# V' s8 f3 R9 B7 A
·……8 k# K# _) j! b; ]
, H+ ]. n: |) G9 \; t. A6 p
各列功能说明如下:' l6 O( z& `/ o. h( }, L
, u9 }, J, V x8 u
Name:物品参考名称,仅作注释用( x4 l1 h$ W5 Y' Y) w, a" V
, ]2 c. L) t" G8 ^/ ?
Version:0 = D2原版,100 = D2资料片(置为100的物品将无法在D2原版中出现)
( [6 t2 E& k( M* l D, y" F' h: g
$ t9 H% D! D0 v) d1 ACompactsave:1 = 压缩存档,0 = 不压缩存档。所谓压缩存档是用来获取较小的存档文件,同时也意味着关于物品的属性:诸如数量、魔法词缀、伤害、防御、耐久度等等,将不被保存(压缩存档一般仅用于一些无须属性的物品例如治疗药剂、各阶宝石等)
$ ?0 _0 U9 _: `7 K
( x- g; B. A3 @, |- {Rarity:0 = 该物品不会从装甲架上掉落,置为1或者更高的数值则将决定此物品从装甲架上掉落的几率,这个值越高,则物品越稀有(这里必须有至少一种物品的值为1,否则当你在游戏里点击装甲架时游戏将崩溃) b6 Y+ [# }( ?5 J- q( v
- E5 B" S1 P$ \2 B5 e5 n( l$ f
Spawnable:0 = 无法由NPC出售,1 = 可以由NPC出售6 {& i6 L" t4 F- ?0 ?- A0 L
u; E1 \! k, c. d; {Minac/Maxac:该防具的最小/最大防御值;ItemStatsCost.txt中定义了这些取值的上限
) ?7 H" V+ `9 B2 J2 P# R
+ K6 x% i+ J6 v# ]- Z/ w2 aAbsorbs:无用参数,以前的作用与“伤害减少X”类似
! _, ?5 o$ x& q! |6 O5 N. W% Z) W1 o) m
Speed:正值 = 减慢行走/跑步速度,负值 = 增加行走/跑步速度* u, z5 q. y+ e, \0 S( M A+ f, j
; R& q9 @; ?- W( U* f Z: y% EReqstr:装备物品所需的力量,取值范围是0-65535;假如超出这个范围,将依据循环计数的原则。例如,在这里填写值65538,则系统会认为是2
6 f7 Z& E6 _2 a2 w% z% r& b' A0 L" U' G
Levelreq:装备物品所需的最低人物等级
" H# k: c' o( i; j; w
8 \& V1 J+ q8 O9 TBlock:格档几率,总的格档几率上限为75%
4 M( H2 b5 Z( |. |7 v9 N( S8 E0 S% E% e( M
Durability:基础耐久度,最大值为255,超出范围则循环计数' ^" ]3 [% F7 _# ~6 o4 S
Nodurrability:是否无耐久物品,1 = 无法破坏物品(无耐久),0 = 有耐久度4 c; I1 }9 s8 B* N0 I: V) L8 M, l
假如这里置为1,则游戏里不会显示“无法破坏”字样,而是去掉物品的耐久属性
/ Q, A/ ]3 o; _" Q, k! HDurwarning:耐久警报图标出现的临界值,当物品耐久度低于或等于这个值时,警报图标将出现在屏幕上以提醒玩家,这玩艺快坏了。. f+ T( R: ?3 d9 g/ e" \
2 I: |+ G, B. D. D& VCost:基础价钱% P) X# ?5 k& v: U$ M8 b
Gamble Cost:赌博价钱的默认值,但仅对于Misc.txt中的戒指和项链起作用
% ~4 t2 _, s/ k! @/ F' q6 x" R
5 s" w4 I; b4 J2 hCode:由3位字母/数字组成的代码,每样物品对应一个且不得重复;此代码为许多txt文件所引用,但不必将其写入TBL文件3 O+ n# o) w5 j' P( v* q1 ]4 d
Namestr:物品的代码/名称,如果这里的字串并未出现在TBL文件中,则此字串将直接作为物品的名称;反之,则使用TBL文件中此字串所对应的名称
( P& C0 K3 c0 V% F- m; J* s6 O% d注意:如果需要显示空格的话,使用TBL文件是唯一的途径
: O8 h( o0 K! J( A1 Y9 c9 K& f4 c# j
Normcode:该物品的普通级代码2 y) @6 l% @# C' D, U0 m5 P' ^' [
Ubercode:该物品的扩展级代码
/ u' H$ O2 E' H4 ~8 C9 p8 JUltracode:该物品的精华级代码
; ~0 q5 o+ L Q& ]3 w0 g( H这三列用于确定物品的阶级,例如:需要升级一件普通级物品为扩展级,则游戏将获取此物品的代码,然后将其与这三列相对照
8 b) F6 z+ C( J" g7 W9 @7 L举例说明:狮头尖盔(Lion Helm)的属性为
3 l9 _0 }, X/ o% V·Code = ba7 _7 P$ X& b3 t( D
·Normcode = ba2! t2 D. w! r L, S, x$ O$ C
·Ubercode = ba7
' ], n F+ L' i; Y·Ultracode = bac2 ]; O- D* j$ ]1 M1 p! ~3 [
所以游戏判定狮头尖盔为扩展级物品,则上述升级普通级物品的公式将不对其起作用
% R3 K5 Q- k; `/ f6 I) v" z# ~' _
- Y& z' b% m( ^7 I \5 [Level:基础物品等级(亦即物品品质等级——QLvl);并非用于决定其上出现何种词缀,而是被用于建立诸如weapXX、armoXX等财宝阶层(TC),以免任何怪物都可以掉落所有物品,例如:一个TC等级为20的怪物无法掉落一件包含于TC = armo30中的30级装甲6 ^6 g7 f% D4 S( J" e* W# i
0 m. j% r0 A% n* D
MagicLvl:魔法等级增量,例如:某物品的这个值为5,且某玩家通过赌博得到了一件10级的该物品,则该物品上可能出现的词缀等级最大为15级
7 M0 r5 B* N, K# w' K' v Z, k2 P9 D0 R6 e
Auto Prefix:物品自带的词缀,引自AutoMagic.txt中的Group列值6 _% u, Y" B6 y- @0 {$ N3 L
% Y+ a4 k7 N+ ^, |; GAlternategfx:人物动画所使用的DCC文件代码,例如:哥德盾牌(code = gts)的此列值为kit,意味着假如一个野蛮人装备了这面盾牌,则他的A1(Attack1)模式动画的SH(Shield)图层将使用的DCC文件为BASHKITA11HS.DCC,而非BASHGTSA11HS.DCC或者BASHBUCA11HS.DCC文件% S0 X, O; ~3 C- k& ^
P: a5 z1 o9 f9 |
OpenBetaGfx:无用参数,D2测试版中用于参照使用了何种alternategfx值
/ n/ J2 f+ L. z, i- g, K1 B: d6 G8 Q; I6 _5 s
Spelloffset:未知参数,仅在Armor.txt中出现' n5 ^% F+ M, j& k
9 i* u6 F$ O( p- FComponent:该物品装备人物后所使用的动画图层,引自Composit.txt,以下是索引:
9 V2 t x, h7 Y$ ]+ }) r3 r0 - HD(Head)头部 s. q, a6 V9 H( j! Y) ]3 u, H
1 - TR(Torso)躯干% u/ {1 D1 a, I: M
2 - LG(Legs)腿部
8 K% H6 h- J) P& P. I8 _% A" ?3 - RA(Right Arm)右臂
& n, [8 q' B! D6 R5 x8 a4 - LA(Left Arm)左臂% Y% s) }2 n' N) b* l. Z' a& O- h
5 - RH(Right Hand)右手0 i# S! T9 B/ A6 {- F& f# ^ }
6 - LH(Left Hand)左手
! X/ [" s, q6 c8 s; O7 - SH(Shield)盾牌
" C- d# e# {: Z% t s8 - S1(Right Shoulder)右肩
- U9 H" r9 M' h2 }# b# |% l) g" h9 - S2(Left Shoulder)左肩
( p$ v& h' x; l7 P! g! d10 - S3(Necro Shield)死灵法师盾牌 n" r/ D/ s, X! {
11 - S4(Special 4)特4
: M$ A! c! x7 t; Q6 C) b$ a% i12 - S5(Special 5)特5/ `( h, u- [7 z* c; V9 l" k
13 - S6(Special 6)特6' l# r$ e3 O* [, G
14 - S7(Special 7)特72 {) z$ g' n' l9 r8 {% \0 [$ l2 w9 h
15 - S8(Special 8)特8
. s, t7 k; i) ~& g: |16则意味着该物品不使用任何图层,因为在Composit.txt中没有16所对应的索引
, k% F: `$ t' V% w2 p! N) I- F" l5 ?9 O* d( T( \* O
以下六列分别是一件装甲的一个组成部分,每部分都有三种色度:浅、中、深,这六列的取值说明了该装甲在不同部位会使用何种色度
/ f; ]4 i9 K$ Y5 U9 ]+ E0 = LIT(Light)浅/ O9 X7 s; X! [' ^5 a" t
1 = MED(Medium)中
" u- q, C& v% u, }# C5 J6 N* ^7 _2 = HVY(Heavy)深7 D0 A- @, M4 {; f9 g6 K5 z
rArm:RA图层(Right Arm)右臂; h) X& M( G. f5 O6 q8 I9 v
lArm:LA图层(Left Arm)左臂7 y7 x. C, G' O+ k+ D
Torso:TR图层(Torso)躯干
* d- a! v7 F8 W' V) v& z' b" VLegs:LG图层(Legs)腿部
6 _) h$ z# V6 J/ j/ [: \3 trSPad:S1图层(Special 1 – Right Shoulder)右肩% U* V& K& E7 t0 L
lSPad:S2图层(Special 2 – Left Shoulder)左肩+ M. _" S& J2 m5 q5 f) m
例如,布甲的取值为rSPad = 1,lSPad = 1,所以当布甲穿在亚马逊身上时,她的全身都是初始的红色(浅色),但左右肩变为灰白色(中等)& L& a; K" Y4 O t/ m* n
* L+ U; y' \9 M4 m/ z
以下四列分别是不同情况下程序对物品所调用的DC6文件名称4 W, Q* i7 v/ f
Flippyfile:物品掉落时的动画文件& ^( `' d' l. t2 T& A
Invfile:物品栏里的图像文件* X" ?. o4 p9 d! c
Uniqueinvfile:暗金物品所使用的物品栏图像文件4 ~: @: J& E w! f+ c( V9 F
Setinvfile:套装物品所使用的物品栏图像文件
/ g/ z" m2 {- v* {; \4 zDC6文件的路径为data\global\items,例如:假如某物品的flippyfile列值为flpcap,则程序将在该物品掉落时播放data\global\items\flpcap.dc6文件
" S0 o# a+ x4 r6 ~ p1 Y2 N- f$ u' W0 z
Invwidth/Invheight:物品在物品栏中占用的宽/高格数7 F& Z) i* ^. E* R% ~: b" c( c
% m& a5 W7 {$ X0 x; _以下三列用于描述物品上孔数的属性
) K+ `+ X2 {5 J/ {1 KHasinv:该物品是否可以拥有孔,以镶嵌入宝石/符文,1 = 可以打孔,0 = 不能打孔
% L- x5 Q/ [5 \* \" p2 y$ \0 c3 aGemsockets:该物品上可能出现的最大孔数,但一件物品不可能拥有多于其物品栏占用格子数量的孔数
; ^) M7 }9 q" \: k8 E' C6 G* u! a另外,ItemType.txt中还有三个根据物品等级高低限制其孔数的列——MaxSock1、MaxSock25、MaxSock40* c b0 c3 {! x3 _0 U
例如:假使某种头盔的Gamsocket = 4,但头盔的Maxsock1 = 2,因此一顶不足25级的该种头盔所能拥有的最大孔数就只能是2* }3 s# i# V9 o: Q' e- @. k: L! v( ~" w8 p
Gemapplytype:镶嵌物镶嵌入该物品后所获得的属性,0 = 武器、1 = 装甲/头盔、2 = 盾牌;假如使用了其他数值,则该物品将不可能有孔
2 T2 E5 ^- }% e' c9 j
$ Q) T3 u" [% |% c; O! _( dUseable:是否可以右键单击该物品以使用,1 = 可以、0 = 不可以;这一列多用于Misc.txt里的各种药剂/卷轴
% \, f" C2 r h& X7 T$ w注意:右键单击物品所获得的作用效果源于程序的硬代码。所以假设你并未编辑相应的dll文件,那么即使该值设定为1也不会有什么效果。
: j* N$ f; Y! k5 E: _0 f3 L! r& i$ V! Q
Throwable:无用参数;其本意是决定该物品是否能够投掷:1 = 可以,0 = 不可以;但这个功能定义于ItemTypes.txt中,而在Armor.txt和Misc.txt中该列值均为0,Weapons.txt中无此列
6 L5 J9 Z( M! G) q( u
, M e0 @2 S' _! @* zMissiletype:投掷该物品的话出现的飞射物种类,引自Missiles.txt中的ID列
0 l! z# U( M7 Q. n( a( F- P: b7 v9 Y# Y z. D) z
Stackable:该物品能否多个叠放成堆:1 = 可以,并有数量属性,0 = 不可以* C" K7 z1 j: D4 `$ {9 t- l x
Minstack:一堆该物品的最小数量
/ G% e1 k% G2 r- L8 }+ D' Q5 ~Maxstack:一堆该物品所能拥有的最大数量
" y& W/ ~0 J- y" i5 iQntwarning:警告标志出现的数量临界值
* J! q1 W# v6 H. M4 P- J/ b当该物品的数量小于等于临界值时,屏幕上将出现警告标志
" ?" v- T. l! N4 W. C, }这些列不作用于Armor.txt,仅用于Misc.txt(钥匙、书)以及Weapons.txt(标枪、箭矢等), ~7 \- z; b0 B; S; W4 `
" k1 r3 V4 `/ W9 K; sType/Type2:物品的基础类型,主要用于合成公式、物品镶嵌物等;引自ItemTypes.txt中的Code列) d7 f: ~! ?- T9 h$ I: h
+ K O8 ?- k# M& LDropsound:物品掉落时的声音,引自Sound.txt中的Sound列
. V5 w6 x, D B0 W4 S- P; \1 bDropsfxframe:物品掉落声音播放的桢数
2 Z7 P( N; k- e; ^. JUsesound:当物品装备上或者在物品栏里放下时的声音,引自Sound.txt中的Sound列
7 o$ J* H2 r# @/ c, V* O
8 l# ~$ W7 B3 n& _# QQuest:专门为任务物品定义的硬代码ID;任务物品一次只能携带一件且无法交易给NPC
3 Z' T# U( v& I8 d0 J5 lQuestdiffcheck:该物品是否通用于所有难度;值为1,则该物品将仅在其出现的难度适用;此列仅出现于Misc.txt和Weapons.txt中# P: A: h* V% `( B$ u+ d
8 y* X" f" b: U; B. d; C( J+ \
Unique:1 = 仅存在暗金形态,0 = 无约束;这列多用于仅允许暗金形态出现的任务物品,假如某非任务物品的此列为1,那么该物品将只能出现暗金形态
, i J. }) @9 q3 Q3 P
' _6 g) n; g3 XTransparent:未知参数,游戏中无用;或许只是一个用于表示某物品处于透明形态的标志位?0 f; u) {( o7 l
4 B3 C) |1 x+ N2 n" v$ B
Transtbl:未知参数,游戏中无用;猜想是当Transparent列非0时用来表示透明度……/ M4 l6 m2 x9 T. @" E% Q
' {4 k8 a u5 _9 o# V' F( Z! o0 e8 Y
Quivered:1 = 该物品需要弹药方可使用,0 = 无需弹药也可使用;此列仅用于Weapons.txt中的弓和十字弓,在Armor.txt、Misc.txt中均无用
8 [ I: {# a/ p5 l9 z$ ^6 X7 Q, P
7 Q+ t3 O' @. e N. WLightradius:无用参数
2 W2 Z9 F9 m8 ~6 g6 t3 a; s$ [8 h& U9 Y$ ?3 p: [2 F
Belt:在Armor.txt中作为一个索引,来说明物品所代表的腰带种类+ b2 A# Y9 {$ B* _
0 – 无用/无腰带 – 1行
; P& n& I8 I H) P( } u1 – 饰带 – 2行# @$ O* w5 K# O- u) z
2 – 无用 – 1行
5 V5 g- L6 }' G# k7 h) L3 – 束带 – 4行2 b9 B3 F# q$ i* E6 S% Q6 @6 k
4 – 轻扣带 – 2行- c* }; J# X" [6 a& q. m
5 – 重扣带 – 3行; l6 _! q/ u6 s1 i; f( T
6 – 高级腰带 – 4行, E4 v! U, B" N+ B: H6 H# H9 L/ O
以上引自Belt.txt中的索引行(或许是硬代码规定的……),仅有Expansion行之上的部分有用;高级腰带包含了所有的扩展/精华级腰带+ I7 s! z3 l5 @# S& g! j
Belt:在Misc.txt中的意义与Armor.txt中完全不同3 b9 `1 n1 h5 Q; a. |
0 = 无法被放置于腰带栏,1 = 可以被放置于腰带栏
) {9 Y5 Y0 P. _" _* N0 b由于Misc.txt和Armor.txt同属一个大文件,所以程序大概是先判定物品的种类(是防具还是宝石药剂之类),再确定该列的用途8 P$ ]! a% w( ^7 ]8 \! R$ I
* S' I4 M% z' _4 q4 D# ]Mindam/Maxdam:该物品所具备的最小/最大伤害值,请注意这个值并非总会在游戏中的物品描述里显示,以下是对于不同的物品类型,该列值的具体含义:
; _" D; _* |' Q2 f0 @" i, S对于盾牌 – 盾击伤害4 f7 o$ l* o' u, t `
对于鞋子 – 踢击伤害
9 n U/ Y# u9 B9 e1 _5 I对于武器 – 单手近战伤害8 l; }+ `8 h/ T$ p) ]
' O2 j# D4 t& jStrBonus:装备该物品时力量对伤害的加成系数,例如100表示每点力量 = 1%增强伤害, 75则表示每点力量 = 0.75%增强伤害: q: k7 ^- ~9 g4 \3 Z4 q4 M% Y
DexBonus:装备该物品时敏捷对伤害的加成系数,例如100表示每点敏捷 = 1%增强伤害, 75则表示每点敏捷 = 0.75%增强伤害
! l; } ?, D2 ^9 J; KArmor.txt里这一列的伤害加成值仅对鞋子和盾牌有用,对于盾牌是对盾击伤害的加成,对于鞋子则是对踢击伤害的加成
* u0 O& |6 }( o4 a( e( z& Z, K" }# z' i5 a2 d9 R& \
Gemoffset:此列作为保留位,游戏加载时将自动填充,用以链接可打孔的物品及其相应的Gems.txt文件中的内容;不过假如这里事先填写一个非零值的话,游戏是否允许这里出现双重值仍旧存疑; Y) b7 q3 G/ l5 I j
0 s% o. U5 O' _5 k2 N% B) S$ vBitfield1:主要用于区分不同材质的物品,目前已知的是:
6 w5 M2 V' S& b1 l1 = 皮革制
* v7 b5 }" {. z1 T- L8 D' k0 ^3 = 金属制
7 J0 R7 T* t6 D" @# k, I仅有金属制物品可以用来召唤钢铁石魔" n- I6 o1 K4 R9 E9 a4 {
7 e9 g8 {# }1 j9 I* q' l. n
以下列用以控制不同的商人出售不同的物品,这里以Vendor来泛指Charsi、Gheed、Akara、Fara、Lysander、Drognan、Hratli、Alkor、Ormus、Elzix、Asheara、Cain、Halbu、Jamella、Larzuk、Malah、Drehya这些商人
8 b+ M2 j6 K+ {3 TVendorMin/VendorMax:某商人所能出售的该物品最小/最大数量,这里填写的数字过大将导致游戏因无法显示过多的物品而崩溃
. ]( Y* `4 ]9 J! r7 \$ R' RVendorMagicMin/VendorMagicMax:某商人所能出售的该种魔法物品最小/最大数量8 b9 F7 L3 i& Y0 f) @- ^- ]
VendorMagicLvl:该物品所能获得的最高魔法词缀等级
* |$ C, H$ v& p1 ~7 {
1 N: i% T# i* m; d1 B5 V, GPermStoreItem:该列不出现在Armor.txt中(仅存在于Misc.txt和Weapons.txt),但你可以人为的加进去;它用来控制物品是否始终在NPC处有出售:1 = 始终出售,0 = 不一定, W" N1 }5 ?9 m9 k% v$ j4 L) Z
0 W+ ^1 o0 e* m
Source Art:无用参数
" X7 n8 A) V+ w y8 {8 BGame Art:无用参数3 ]$ @# y8 ^% D- ~7 X. H" y
/ R) Z. l6 r7 e, j* F9 V- CTransform:有关该物品的动画所使用的颜色
/ W4 f! G& d+ m7 D6 J) ~InvTrans:该物品在物品栏中所使用的颜色) M$ T5 p- c4 r' C
) Z2 e* M7 T) K5 S* r. ?SkipName:控制游戏是否不显示该物品的基础名称,例如用于蝮蛇护符,则游戏不会显示两次“蝮蛇护符”字样9 p/ i7 v9 i: P1 m$ w) G' l
( t7 k3 U2 o- t$ P
NightmareUpgrade/HellUpgrade:在噩梦/地狱难度商人将使用此处代码对应的物品来取代原物品,xxx = 不变. i+ u* l0 l& g$ q2 b
( F& R5 \7 i7 B2 vNameable:用于安亚任务奖励,控制该物品是否能够被个人化:1 = 可以,0 = 不行
0 q% S7 V$ k- _ |
|