生活情怀-神话暗黑-暗黑破坏神2

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
逗破暗黑Mod群:67994934逗破暗黑Mod客户端及补丁逗破暗黑Mod新手攻略逗破暗黑Mod赞助菜单
神话怀旧MOD群:67994934神话怀旧Mod客户端及补丁神话怀旧Mod新手攻略神话怀旧Mod赞助菜单
圣者归来Mod群:558972013圣者归来Mod客户端及补丁圣者归来Mod新手攻略圣者归来Mod赞助菜单
楼主: admin
收起左侧

[修改攻略] TXT源码文件全面解读

[复制链接]

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:54:55 | 显示全部楼层
MonEquip.txt        By Nefarius

注意:本文件中的内容发挥作用的前提是MonStats.txt文件中的Inventory列值必须为1,以使游戏从MonEqiup.txt中寻找怪物装备的相关数据;同时,在这里没有写入适当的数据之前,请勿将Inventory设为1,否则会造成内存溢出错误;另外,本文件中的最后一行是不可移除的,如果要添加新行请将它们添加在最后一行的上方

Monster:怪物名称,引自MonStats.txt中的ID指针;两处的值必须精确匹配以免造成内存溢出错误

OnInit:布尔函数,0 = 该怪物是由技能召唤出的,1 = 该怪物由场景自动生成

Item1-3:由3-4个字符组成的物品代码,源自Weapons.txt,Armor.txt和Misc.txt

Loc1-3:与前一列所对应,表示该物品装备在何处,取自BodyLocs.txt中的代码

Mod1-3:其对应的装备品质,列表如下:
1 = 低品质
2 = 普通的
3 = 超强的
4 = 蓝色魔法物品
5 = 绿色套装物品
6 = 黄金稀有物品
7 = 暗金物品
8 = 橙色合成物品
9 = 未使用的Tempered物品

EoL:行结束符
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:55:12 | 显示全部楼层
MonLvl.txt        By Kingpin

Level:怪物的等级,游戏将根据怪物的等级从表格中取出相应的值参与计算其属性

AC:怪物的防御值(普通难度下),要与MonStats.txt中的AC列共同参与计算怪物的最终防御值,计算公式为:MonLvl.txt AC * MonStats.txt AC / 100;仅用于封闭式战网模式的游戏

AC(N):怪物的防御值(恶梦难度下),要与MonStats.txt中的AC(H)列共同参与计算怪物的最终防御值,计算公式为:MonLvl.txt AC(N) * MonStats.txt AC(N) / 100;仅用于封闭式战网模式的游戏

AC(H):怪物的防御值(地狱难度下),要与MonStats.txt中的AC(H)列共同参与计算怪物的最终防御值,计算公式为:MonLvl.txt AC(H) * MonStats.txt AC(H) / 100;仅用于封闭式战网模式的游戏

L-AC:怪物的防御值(普通难度下),要与MonStats.txt中的AC列共同参与计算怪物的最终防御值,计算公式为:MonLvl.txt AC * MonStats.txt AC / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-AC(N):怪物的防御值(恶梦难度下),要与MonStats.txt中的AC(H)列共同参与计算怪物的最终防御值,计算公式为:MonLvl.txt AC(N) * MonStats.txt AC(N) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-AC(H):怪物的防御值(地狱难度下),要与MonStats.txt中的AC(H)列共同参与计算怪物的最终防御值,计算公式为:MonLvl.txt AC(H) * MonStats.txt AC(H) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

TH:怪物的命中率(普通难度下),要与MonStats.txt中的A1TH及A2TH列共同参与计算怪物的最终A1命中率及A2命中率,计算公式为:MonLvl.txt TH * MonStats.txt A1TH / 100以及MonLvl.txt TH * MonStats.txt A2TH / 100;仅用于封闭式战网模式的游戏

TH(N):怪物的命中率(恶梦难度下),要与MonStats.txt中的A1TH(N)及A2TH(N)列共同参与计算怪物的最终A1命中率及A2命中率,计算公式为:MonLvl.txt TH(N) * MonStats.txt A1TH(N) / 100以及MonLvl.txt TH(N) * MonStats.txt A2TH(N) / 100;仅用于封闭式战网模式的游戏

TH(H):怪物的命中率(地狱难度下),要与MonStats.txt中的A1TH(H)及A2TH(H)列共同参与计算怪物的最终A1命中率及A2命中率,计算公式为:MonLvl.txt TH(H) * MonStats.txt A1TH(H) / 100以及MonLvl.txt TH(H) * MonStats.txt A2TH(H) / 100;仅用于封闭式战网模式的游戏

L-TH:怪物的命中率(普通难度下),要与MonStats.txt中的A1TH及A2TH列共同参与计算怪物的最终A1命中率及A2命中率,计算公式为:MonLvl.txt TH * MonStats.txt A1TH / 100以及MonLvl.txt TH * MonStats.txt A2TH / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-TH(N):怪物的命中率(恶梦难度下),要与MonStats.txt中的A1TH(N)及A2TH(N)列共同参与计算怪物的最终A1命中率及A2命中率,计算公式为:MonLvl.txt TH(N) * MonStats.txt A1TH(N) / 100以及MonLvl.txt TH(N) * MonStats.txt A2TH(N) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-TH(H):怪物的命中率(地狱难度下),要与MonStats.txt中的A1TH(H)及A2TH(H)列共同参与计算怪物的最终A1命中率及A2命中率,计算公式为:MonLvl.txt TH(H) * MonStats.txt A1TH(H) / 100以及MonLvl.txt TH(H) * MonStats.txt A2TH(H) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

HP:怪物的生命值(普通难度下),要与MonStats.txt中的MinHP及MaxHP列共同参与计算怪物的最终生命最小值及最大值,计算公式为:MonLvl.txt HP * MonStats.txt MinHP / 100以及MonLvl.txt TH * MonStats.txt MaxHP / 100;仅用于封闭式战网模式的游戏

HP(N):怪物的生命值(恶梦难度下),要与MonStats.txt中的MinHP(N)及MaxHP(N)列共同参与计算怪物的最终生命最小值及最大值,计算公式为:MonLvl.txt HP(N) * MonStats.txt MinHP(N) / 100以及MonLvl.txt HP(N) * MonStats.txt MaxHP(N) / 100;仅用于封闭式战网模式的游戏

HP(H):怪物的生命值(地狱难度下),要与MonStats.txt中的MinHP(H)及MaxHP(H)列共同参与计算怪物的最终生命最小值及最大值,计算公式为:MonLvl.txt HP(H) * MonStats.txt MinHP(H) / 100以及MonLvl.txt HP(H) * MonStats.txt MaxHP(H) / 100;仅用于封闭式战网模式的游戏

L-HP:怪物的生命值(普通难度下),要与MonStats.txt中的MinHP及MaxHP列共同参与计算怪物的最终生命最小值及最大值,计算公式为:MonLvl.txt HP * MonStats.txt MinHP / 100以及MonLvl.txt TH * MonStats.txt MaxHP / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-HP(N):怪物的生命值(恶梦难度下),要与MonStats.txt中的MinHP(N)及MaxHP(N)列共同参与计算怪物的最终生命最小值及最大值,计算公式为:MonLvl.txt HP(N) * MonStats.txt MinHP(N) / 100以及MonLvl.txt HP(N) * MonStats.txt MaxHP(N) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-HP(H):怪物的生命值(地狱难度下),要与MonStats.txt中的MinHP(H)及MaxHP(H)列共同参与计算怪物的最终生命最小值及最大值,计算公式为:MonLvl.txt HP(H) * MonStats.txt MinHP(H) / 100以及MonLvl.txt HP(H) * MonStats.txt MaxHP(H) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

DM:怪物的伤害值(普通难度下),要与MonStats.txt中的A1MinD,A1MaxD,A2MinD及A2MaxD列共同参与计算怪物的最终A1,A2攻击模式的最小及最大伤害值,计算公式为:MonLvl.txt DM * MonStats.txt A1MinD / 100,MonLvl.txt DM * MonStats.txt A1MaxD / 100,MonLvl.txt DM * MonStats.txt A2MinD / 100及MonLvl.txt DM * MonStats.txt A2MaxD / 100;仅用于封闭式战网模式的游戏

DM(N):怪物的伤害值(恶梦难度下),要与MonStats.txt中的A1MinD(N),A1MaxD(N),A2MinD(N)及A2MaxD(N)列共同参与计算怪物的最终A1,A2攻击模式的最小及最大伤害值,计算公式为:MonLvl.txt DM(N) * MonStats.txt A1MinD(N) / 100,MonLvl.txt DM(N) * MonStats.txt A1MaxD(N) / 100,MonLvl.txt DM(N) * MonStats.txt A2MinD(N) / 100及MonLvl.txt DM(N) * MonStats.txt A2MaxD(N) / 100;仅用于封闭式战网模式的游戏

DM(H):怪物的伤害值(地狱难度下),要与MonStats.txt中的A1MinD(H),A1MaxD(H),A2MinD(H)及A2MaxD(H)列共同参与计算怪物的最终A1,A2攻击模式的最小及最大伤害值,计算公式为:MonLvl.txt DM(H) * MonStats.txt A1MinD(H) / 100,MonLvl.txt DM(H) * MonStats.txt A1MaxD(H) / 100,MonLvl.txt DM(H) * MonStats.txt A2MinD(H) / 100及MonLvl.txt DM(H) * MonStats.txt A2MaxD(H) / 100;仅用于封闭式战网模式的游戏

L-DM:怪物的伤害值(普通难度下),要与MonStats.txt中的A1MinD,A1MaxD,A2MinD及A2MaxD列共同参与计算怪物的最终A1,A2攻击模式的最小及最大伤害值,计算公式为:MonLvl.txt DM * MonStats.txt A1MinD / 100,MonLvl.txt DM * MonStats.txt A1MaxD / 100,MonLvl.txt DM * MonStats.txt A2MinD / 100及MonLvl.txt DM * MonStats.txt A2MaxD / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-DM(N):怪物的伤害值(恶梦难度下),要与MonStats.txt中的A1MinD(N),A1MaxD(N),A2MinD(N)及A2MaxD(N)列共同参与计算怪物的最终A1,A2攻击模式的最小及最大伤害值,计算公式为:MonLvl.txt DM(N) * MonStats.txt A1MinD(N) / 100,MonLvl.txt DM(N) * MonStats.txt A1MaxD(N) / 100,MonLvl.txt DM(N) * MonStats.txt A2MinD(N) / 100及MonLvl.txt DM(N) * MonStats.txt A2MaxD(N) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-DM(H):怪物的伤害值(地狱难度下),要与MonStats.txt中的A1MinD(H),A1MaxD(H),A2MinD(H)及A2MaxD(H)列共同参与计算怪物的最终A1,A2攻击模式的最小及最大伤害值,计算公式为:MonLvl.txt DM(H) * MonStats.txt A1MinD(H) / 100,MonLvl.txt DM(H) * MonStats.txt A1MaxD(H) / 100,MonLvl.txt DM(H) * MonStats.txt A2MinD(H) / 100及MonLvl.txt DM(H) * MonStats.txt A2MaxD(H) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

XP:怪物的经验值(普通难度下),要与MonStats.txt中的Exp列共同参与计算怪物的最终经验值,计算公式为:MonLvl.txt XP * MonStats.txt Exp / 100;仅用于封闭式战网模式的游戏

XP(N):怪物的经验值(恶梦难度下),要与MonStats.txt中的Exp(N)列共同参与计算怪物的最终经验值,计算公式为:MonLvl.txt XP(N) * MonStats.txt Exp(N) / 100;仅用于封闭式战网模式的游戏

XP(H):怪物的经验值(地狱难度下),要与MonStats.txt中的Exp(H)列共同参与计算怪物的最终经验值,计算公式为:MonLvl.txt XP(H) * MonStats.txt Exp(H) / 100;仅用于封闭式战网模式的游戏

L-XP:怪物的经验值(普通难度下),要与MonStats.txt中的Exp列共同参与计算怪物的最终经验值,计算公式为:MonLvl.txt XP * MonStats.txt Exp / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-XP(N):怪物的经验值(恶梦难度下),要与MonStats.txt中的Exp(N)列共同参与计算怪物的最终经验值,计算公式为:MonLvl.txt XP(N) * MonStats.txt Exp(N) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏

L-XP(H):怪物的经验值(地狱难度下),要与MonStats.txt中的Exp(H)列共同参与计算怪物的最终经验值,计算公式为:MonLvl.txt XP(H) * MonStats.txt Exp(H) / 100;仅用于天梯模式、单机及TCP-IP模式的游戏
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:55:30 | 显示全部楼层
Monprop.txt        By cla$$ics

需要用到的txt文件有:Properties.txt;将在以下txt文件中被引用:Monstats.txt

ID - 被Monstats.txt引用的名称,区分大小写
Prop1(属性1) – 怪物于普通难度下拥有的第一个属性
Chance1 - 属性1在怪物上出现的几率,百分比单位
Par1 – 属性1的参数
Min1 – 属性1的最小值
Max1 – 属性1的最大值

Prop2(属性2) – 怪物于普通难度下拥有的第二个属性
Chance2 - 属性2在怪物上出现的几率,百分比单位
Par2 – 属性2的参数
Min2 – 属性2的最小值
Max2 – 属性2的最大值

Prop3(属性3) – 怪物于普通难度下拥有的第三个属性
Chance3 - 属性3在怪物上出现的几率,百分比单位
Par3 – 属性3的参数
Min3 – 属性3的最小值
Max3 – 属性3的最大值

Prop4(属性4) – 怪物于普通难度下拥有的第四个属性
Chance4 - 属性4在怪物上出现的几率,百分比单位
Par4 – 属性4的参数
Min4 – 属性4的最小值
Max4 – 属性4的最大值

Prop5(属性5) – 怪物于普通难度下拥有的第五个属性
Chance5 - 属性5在怪物上出现的几率,百分比单位
Par5 – 属性5的参数
Min5 – 属性5的最小值
Max5 – 属性5的最大值

Prop6(属性6) – 怪物于普通难度下拥有的第六个属性
Chance6 - 属性6在怪物上出现的几率,百分比单位
Par6 – 属性6的参数
Min6 – 属性6的最小值
Max6 – 属性6的最大值

Prop1(N)(噩梦属性1) - 怪物于噩梦难度下拥有的第一个属性
Chance1(N) – 噩梦属性1在怪物上出现的几率,百分比单位
Par1(N) – 噩梦属性1的参数
Min1(N) – 噩梦属性1的最小值
Max1(N) – 噩梦属性1的最大值

Prop2(N)(噩梦属性2) - 怪物于噩梦难度下拥有的第二个属性
Chance2(N) – 噩梦属性2在怪物上出现的几率,百分比单位
Par2(N) – 噩梦属性2的参数
Min2(N) – 噩梦属性2的最小值
Max2(N) – 噩梦属性2的最大值

Prop3(N)(噩梦属性3) - 怪物于噩梦难度下拥有的第三个属性
Chance3(N) – 噩梦属性3在怪物上出现的几率,百分比单位
Par3(N) – 噩梦属性3的参数
Min3(N) – 噩梦属性3的最小值
Max3(N) – 噩梦属性3的最大值

Prop4(N)(噩梦属性4) - 怪物于噩梦难度下拥有的第四个属性
Chance4(N) – 噩梦属性4在怪物上出现的几率,百分比单位
Par4(N) – 噩梦属性4的参数
Min4(N) – 噩梦属性4的最小值
Max4(N) – 噩梦属性4的最大值

Prop5(N)(噩梦属性5) - 怪物于噩梦难度下拥有的第五个属性
Chance5(N) – 噩梦属性5在怪物上出现的几率,百分比单位
Par5(N) – 噩梦属性5的参数
Min5(N) – 噩梦属性5的最小值
Max5(N) – 噩梦属性5的最大值

Prop6(N)(噩梦属性6) - 怪物于噩梦难度下拥有的第六个属性
Chance6(N) – 噩梦属性6在怪物上出现的几率,百分比单位
Par6(N) – 噩梦属性6的参数
Min6(N) – 噩梦属性6的最小值
Max6(N) – 噩梦属性6的最大值

Prop1(H)(地狱属性1) - 怪物于地狱难度下拥有的第一个属性
Chance1(H) - 地狱属性1在怪物上出现的几率,百分比单位
Par1(H) – 地狱属性1的参数
Min1(H) – 地狱属性1的最小值
Max1(H) – 地狱属性1的最大值

Prop2(H)(地狱属性2) - 怪物于地狱难度下拥有的第二个属性
Chance2(H) - 地狱属性2在怪物上出现的几率,百分比单位
Par2(H) – 地狱属性2的参数
Min2(H) – 地狱属性2的最小值
Max2(H) – 地狱属性2的最大值

Prop3(H)(地狱属性3) - 怪物于地狱难度下拥有的第三个属性
Chance3(H) - 地狱属性3在怪物上出现的几率,百分比单位
Par3(H) – 地狱属性3的参数
Min3(H) – 地狱属性3的最小值
Max3(H) – 地狱属性3的最大值

Prop4(H)(地狱属性4) - 怪物于地狱难度下拥有的第四个属性
Chance4(H) - 地狱属性4在怪物上出现的几率,百分比单位
Par4(H) – 地狱属性4的参数
Min4(H) – 地狱属性4的最小值
Max4(H) – 地狱属性4的最大值

Prop5(H)(地狱属性5) - 怪物于地狱难度下拥有的第五个属性
Chance5(H) - 地狱属性5在怪物上出现的几率,百分比单位
Par5(H) – 地狱属性5的参数
Min5(H) – 地狱属性5的最小值
Max5(H) – 地狱属性5的最大值

Prop6(H)(地狱属性6) - 怪物于地狱难度下拥有的第六个属性
Chance6(H) - 地狱属性6在怪物上出现的几率,百分比单位
Par6(H) – 地狱属性6的参数
Min6(H) – 地狱属性6的最小值
Max6(H) – 地狱属性6的最大值

*eol(H) – 行结束标志。这里写入0以防止游戏出现错误。
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:55:48 | 显示全部楼层
MonSeq.txt        By Nefarius

MonSeq.txt文件是一个软代码定义的怪物动作序列表格(角色动作序列仍旧定义于硬代码中),这里的每一行表示该动作序列的一桢,一个完整动作序列最大可拥有255行,整个文件最多可包含255个完整动作序列;依靠不同的ID,这些动作子序列被分成多个组,每组表示一个完整的动作序列

Sequence:该动作子序列的ID,用于MonStats.txt文件中的Sequence列,各种动作子序列就是利用ID来分成不同的组,每组表示一个完整的动作

Mode:该动作子序列所使用的动画模式,这里的值引自MonMode.txt文件的ID指针

Frame:该动作子序列播放的桢数,例如某子序列使用A1动画模式,Frame列值为12,则该怪物于第12桢播放的是A1动作

Dir:该动作子序列动画播放的方向,大多数动作都有8种方向:
0 = 西南
1 = 西北
2 = 东北
3 = 东南
4 = 南
5 = 西
6 = 北
7 = 东

Event:该动作子序列将触发的事件:
0 = 无触发事件
1 = 近身攻击
2 = 远程攻击
3 = 播放音效
4 = 施展技能

EoL:行结束符
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:56:06 | 显示全部楼层
MonSounds.txt        By Nefarius
该文件将1.10以前版本里,D2Client.dll文件中的相关数据段在此处以表格的形式列出


ID:有关怪物音效的ID指针,用于MonStats.txt中,链接怪物与其相关的音效文件ID

Attack1,Attack2:这两列分别是怪物在近战一类攻击和近战二类攻击时所使用的音效文件,此处值引自Sounds.txt文件中的ID指针,于怪物开始攻击时播放
Weapon1,Weapon2:另一种有关怪物音效的ID指针,这两列是怪物用武器攻击时所使用的音效文件,可用于任何类型的怪物

Att1Del,Att2Del:音效文件播放之前(一类/二类攻击结束之后)的延迟时间,以桢为单位
Wea1Del,Wea2Del:音效文件播放之前的延迟时间,以桢为单位

Att1Prb,Att2Prb:攻击时播放攻击音效(不使用武器)的几率,以1/100为单位

Wea1Vol,Wea2Vol:武器攻击时音效的音量,用以取代Sounds.txt中规定的音量,以255为最大音量,0为静音

HitSound:怪物受到攻击时播放的音效文件ID指针,这里的值引自Sounds.txt
DeathSound:怪物死亡时播放的音效文件ID指针,这里的值引自Sounds.txt

HitDelay:怪物受到攻击后,音效播放前的延迟时间,以桢为单位
DeathDelay:播放怪物死亡音效前的延迟时间,以桢为单位

Skill1-Skill4:这四列分别是当怪物进入S1,S2,S3,S4模式时所播放的音效文件,这里的S1,S2,S3,S4模式与MonStats.txt文件中Skill列规定的技能无关

FootStep:在WL动画模式的每个循环处播放的音效文件ID,引自Sounds.txt
FootStepLayer:另一个在WL动画模式时播放的音效文件ID,引自Sounds.txt

FsCnt:WL动画模式的每个循环里播放FootStep音效的次数,例如某怪物有两条腿,则这里理所当然的填入2
FsOff:可能与两次FootStep音效播放间的延迟时间有关,不太清楚
FsPrb:播放FootStep音效的几率,也是以1/100为单位

Neutral:怪物处于中立状态时播放的音效文件ID指针,引自Sounds.txt(事实上即使怪物并非处于NU模式,该音效文件仍有时会播放)
NeuTime:两次播放Neutral音效文件之间的延迟时间,以桢为单位

Init:怪物处于初始状态(与其AI有关)时播放的音效文件ID指针,主要用于一些循环音效,引自Sounds.txt

Taunt:当角色遭遇某怪物时游戏所播放的音效文件ID指针,主要用于Boss出现时的对话等,引自Sounds.txt文件

Flee:怪物撤退时游戏播放的音效文件ID指针,以前版本的D2中,怪物的生命值少于一定程度后会逃跑,但后来暴雪修改了这个设定,如今怪物一般是去而复返,因此目前这个音效仅仅用于沉沦魔

CvtMo1-CvtMo3:与某种技能或动作序列开始时的音效有关,这里填入该技能/动作序列的初始动作的值,包括冲锋技能开始前的WL行为模式,等
CvtSk1-CvtSk3:与上述三列相似,这里填入该技能的ID
CvtTgt1-CvtTgt3:与某种技能或动作序列完成时的音效有关,这里填入该技能/动作序列的结束动作的值,包括冲锋技能最终的A2行为模式,等
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:56:23 | 显示全部楼层
Monstats.txt        By Nefarius
本引导文件基于Kingpin为Nefarius的1.09版引导文件所作的更新

ID 设置

ID:此列是其他txt文件中将用到的ID指针,例如Levels.txt和SuperUniques.txt

HCIDX:此列是该单位实际所拥有的内部ID(亦即前一列ID指针的实际值),并且不可重复,否则将导致不可预知的错误;此列常用于给单位附加一些硬代码所指定的特效,诸如其调用的DCC、DC6图像(如Diablo的死亡动画),一些超级金怪的名字以暗金色显示,等

BASEID:此列用以说明该单位所对应的基础单位类别(例如全部5种沉沦魔类怪物的基础单位都是fallen1);此列也与一些硬代码所指定的行为有关,例如所有的鬼魂都有穿墙能力,所有的沉沦魔巫师都会复活喽罗,等等;

NEXTINCLASS:此列是该单位在其同类别中所对应的下一个单位的ID,所以要想让某种怪物少点同类的话,可以把这里留空并且在BASEID列中填入其本身的ID;目前的结论是此列会被用于那些受场景等级影响的,由地图而产生的怪物,例如沉沦魔营地里总会出现大群沉沦魔,并且冰冷之原的营地里是普通的沉沦魔,但同样的营地到了其他地方就可能出现些诸如小恶魔之类的高级变种

显示设置I

TRANSLVL:此列用以说明该单位所使用的颜色种类;大多数怪物在其COF文件夹里都有一个名为palshift.dat的调色板文件,内含8种颜色(其中5种较为常用),这些颜色被游戏用来给予不同种类怪物以“不同的光芒”,不过有一些怪物是无法给其上色的……

NAMESTR:此列是该单位在TBL文件中所使用的字串键值,亦即游戏中鼠标指向它们时所显示的名字;注意这里的字符串键值与TBL文件中的要严格一致(区分大小写),因此如果把某Foo在TBL文件里写成FOO,游戏里就将显示“一股邪恶力量”……

MONSTATSEX:此列是1.10中指向Monstats2.txt文件的ID指针,1.10版中暴雪把所有外观图像方面的文件都放在了Monstats2.txt文件中以节省空间(Monstats.txt文件共有255列,已经是MS Excel所支持的最大数量了……)

与其它外部文件/内部代码的链接

MONPROP:此列是指向MonProp.txt文件的ID指针,MonProp.txt用于控制单位的一些特殊效果,例如你可以利用此文件给某怪物添加一些随机的抗性或者免疫,添加一些“被攻击时释放XX”的特效等等

MONTYPE:此列是该怪物所属的“超级群”的群ID,例如所有的骷髅(skeletons)都隶属于“超级群”:skeleton;1.10里MonType.txt的作用类似于ItemTypes.txt,并且可以利用这个文件来为怪物增添一些特殊属性

AI:此列用于程序判定将为该怪物添加何种AI;每种AI都有一组动作程式(GH、A1、A2、S1、WL、RN等等),举例而言,假如要使一种近战单位可以发射远程飞弹,那么就得去改它的COF文件,使其攻击动画使用2#发射ID而不是1#发射ID,否则要么飞弹发射不成功,要么飞弹伤害等于零;并且同时,你同样得去修改ANIMDATA.D2文件中的相关内容

显示设置II

DESCSTR:此列是该怪物的描述文字所对应的TBL文件字串键值(留空则无任何描述文字),例如要使某怪物名称下方显示“偷取法力及耐力”字样,则需要在此添加该字样所对应的字串键值

CODE:此列是MonStats.txt中唯一残留的一列图像设置,它用于控制程序从何处读取该怪物的动画文件

一些杂项1/0设置I

ENABLED:1 = 允许出现,0 = 不允许出现;它控制着该单位能否在各种场合出现,但并不是唯一可以实现此功能的选项,另有一些选项也可以屏蔽掉该单位(参见RARITY和ISSPAWN列的相关说明)

RANGEDTYPE:1 = 远程攻击,0 = 近身攻击;它控制该单位是否是远程攻击者,据猜想大概与Levels.txt中的RANGEDSPAWN列有关(大约是游戏利用这些设置来防止某场景出现清一色的近身攻击怪物:比如说当Levels.txt文件选择怪物的时候仅仅是根据各种怪物的稀有程度来选择,那么就有几率同时出现3种近身攻击的怪物,但1.10之后暴雪增加了某些机制来避免这种情况的出现,此处的值应该是起到这个作用)

巢穴/卵等可衍生怪物单位的设置

PLACESPAWN:仅对于可衍生怪物的单位有效:1 = 该类怪物有转化几率,其于游戏中某场景生成时将有很大几率以其幼体的形式出现,并且产生该类金怪群的几率很小,0 = 该类怪物无转化几率,始终生成本体

SPAWN:此列是该单位所衍生出的怪物ID(首先得是可衍生怪物的单位),所以假如想让某单位衍生出炎魔的话,就需要在此处填写炎魔的ID

SPAWNX,SPAWNY:衍生出怪物的出生点X,Y坐标,这个值用于避免衍生物与其母体重合,虽然并不是很有必要:暴雪的冲突检测系统已经足以防止因重合而导致崩溃的发生

SPAWNMODE:此列用于控制衍生物出现的方式,例如:假如你想制造一个石魔召唤者,那么这里就应该填写S1,于是动画效果看起来更像是真正的召唤石魔而不是突然出现

怪物集群以及关于仆从的设置

MINION1,MINION2:这两列是该单位生成时出现在其周围的仆从,比如说想要某强力boss身边有5个遗忘骑士,则最简单的作法就是在MINION1列里填入遗忘骑士的ID,然后设定后面PARTYMIN和PARTYMAX列的值均为5;另外,假如拥有仆从的该单位以金怪的形式出现,则其周围的喽罗将是MINION1/2中所填写的怪物,而非其同类(这就是西希之王带了一堆遗忘骑士在身边的原因);不过,你可以将其仆从的ID写入MINION2而把1留空,这样该单位的金怪将同时拥有其同类和仆从两种喽罗;这两列另外的一个功能是用来控制当该单位死亡时会出现何种怪物:将SPLENDDEATH列值设定为1即可在该单位死亡后生成MINION1中填写的怪物(但要确保新生成的怪物拥有复活动画……不然动画会看起来相当怪异……)

SETBOSS:1 = 设定该单位为boss,0 = 非boss;以前的旧引导文件称此列是用于描述当该单位以boss形式出现时身边的仆从是何种怪物,但此列并未对此产生影响……所以此列应该是作用于怪物的AI(例如某些单位可以向其仆从传达命令等等……)

BOSSXFER:1 = 真,0 = 假;是个未知参数,大概也涉及AI设定或者关于boss的设置

PARTYMIN,PARTYMAX:这两列决定该单位周围仆从的数量,关于仆从的设置如前的MINION1/2两列;这里的值最好不要超过15

MINGRP,MAXGRP:与前面那两列功能相仿,是用来控制有多少带仆从的单位集群出现,以前的版本(1.00-1.06)中,MINGRP=99时游戏将崩溃……1.07-1.10版未知,不过最好别这么做……

人口控制以及一些动态设置I

SPARSEPOPULATE:这是面对一些反常的怪物时用于保持游戏平衡的重要工具,在人口控制方面相当于“第二防护层”的作用;一个例子,假如游戏中有某种很强大的怪物,而你希望它在游戏中的密度能比其他怪物小点……OK,你可以去修改Levels.txt中的MONDEN列或者是MINGRP、MAXGRP列来实现,但这样修改并不能很精确的将情况变为你想要的那样——降低MONDEN等列的值很容易造成该怪物每组数量过少或者其出现率太低……于是更好的修改方法如下:此列用于全方位控制该类怪物出现的几率(0-100%),留空则默认为100%,填入80则意味着游戏中出现此单位时将优先考虑一个系数80%,因此将有20%的怪物不会生成;当然此值取50以下的作法是不可取的,因为过低的数值虽然不会有什么错误,但也许会使游戏中本应出现该怪物的地方空空如也,抑或是仅出现其仆从而没有该怪物本体(如果该怪物有仆从的话)

速度设置

VELOCITY,RUN:这两列用于分别控制该怪物的行走、跑步速度,注意RUN列的值当且仅当怪物拥有RN行为模式并且其对应的AI使用此模式时起作用。此值最好不要超过25

人口控制以及一些动态设置II

RARITY:此列也被用来控制怪物的人口数量,用于全局控制该怪物出现的可能性;例如,假如Levels.txt中有这样两个怪物,A的Rarity为10,B的为1,但这里只能出现1种怪物,那么选择机制如下:首先游戏会将两者的Rarity值相加,然后分别计算这两种怪物的出现几率,A为10/11 = 91%,而B为1/11 = 9%,于是A出现的几率将远大于B;如果在此列写入0,则Levels.txt将不会选中此怪物(不过我敢说……假如该怪物是这个区域可能出现的唯一一种怪物的话,游戏显然会出错,因为它进行了一个除数为零的运算……除非暴雪在此加入了额外的检测机制)

等级设置

LEVEL,LEVEL(N),LEVEL(H):这三列用于控制不同难度下怪物的等级,不过仅用于普通难度,在噩梦和地狱难度下怪物等级将取决于生成它们的场景等级(因此后两列无用);注意在1.10版中怪物的等级通常被用来确定其怪物属性

音效设置

MONSOUND:此列用于当该怪物以普通形式出现时,指定其在MonSound.txt中所对应的音效文件

UMONSOUND:此列用于当怪物以金怪或者冠军级形式出现时,指定其在MonSound.txt中所对应的音效;超级金怪们的音效由SuperUniques.txt文件控制

AI 设置

THREAT:用于游戏的危险程度判定系统,以使各单位的AI确定其首要攻击对象;这个值越高,该单位的危险程度也越高,所以假如将蛆虫之蛋的危险度设定为25,那么雇佣兵将首先攻击之

AIDEL,AIDEL(N),AIDEL(H):这三列用以控制AI作用间隔,但具体如何实现仍然是个未解之谜;可能对于各种不同的AI,该值所起的作用也不一样,但总之是该值越高,则AI间隔时间就越长;不过这个值究竟作用于哪部分AI仍然没有足够的观测结果来确定……

AIDIST,AIDIST(N),AIDIST(H):这三列控制该单位的AI作用距离,仅用于噩梦和地狱难度的Mephisto;目前怀疑游戏会在硬代码方面会使用些其他的数值来表示某单位的“感知半径”

AIP1-8,AIP1-8(N),AIP1-8(H):这三列以百分比数值的形式向AI代码提供一些参数,要想知道各种AI的作用请参照MonAI.txt(请注意那里有些AI的解释实在是很离谱或者压根就是错的……);这里有些人对于第五幕那种会随机传送的小恶魔的AI感兴趣,它们的AI比较特殊,要了解这些请参照原版的Monstats.txt(提取自D2EXP.MPQ文件)

飞射物设置

MISSA1,MISSA2,MISSS1,MISSS2,MISSS3,MISSS4,MISSC,MISSSQ:这些列用于控制怪物使用的非技能类飞射物;例如假设你往某怪物的MISSA1列中写入某飞射物ID指针(引自Missiles.txt),那么当该怪物进行A1(Attack1)模式行为时就将发出一个飞弹,但是当以下两种情况时这个动作不会很好的完成:1、该怪物A1模式行为的COF文件使用其1#发射ID(要避免此情况请在ANIMDATA.D2文件里将其发射ID改为2#);2、该怪物的AI并不支持其发射飞射物,此时整个动作将显得很难看(不过有时会收到些意想不到的效果);另外,以上的各个缩写分别代表:A1 = Attack1,A2 = Attack2,S1 = Skill1,S2 = Skill2,S3 = Skill3,S4 = Skill4,C=Cast,SQ= Sequence

一些杂项1/0设置II(此处与NPC有关!)

ALIGN:这里是一个选择函数,1 = 友军,0 = 敌人,2 = 中立者;这个选项控制该怪物会站在你这一边战斗还是攻击你(或者就从你身边走过不予理睬……),所以如果想要某NPC变为敌人的话,这里是要更改的地方之一;另外,仅仅把这里的值改成2而不碰其他地方的话(一些关于AI的内容以及一些MonStats2文件中的内容),该怪物会攻击任何试图靠近的单位

ISSPAWN:1 = 可以产生,0 = 不能产生,这里控制该单位是否可以由Levels.txt产生

ISMELEE:1 = 近战单位,0 = 非近战单位,这一列控制该单位是否能拥有某些特殊属性,例如能否有多重射击属性:近战单位将无法获得多重射击属性的效果

NPC:这列控制该单位是否一名NPC,1 =是,0 = 不是

INTERACT:1 = 具备NPC的作用,0 = 不能;该列用于控制角色是否能与该单位进行互动,例如当点击该单位时是否会出现对话框;如果要把某些NPC设置成敌对的话,这里就得给设置成0才行(当然NPC列也得是0)

INVENTORY:1 = 有物品栏,0 = 没有物品栏;这列控制该NPC或者单位可否携带物品,对于NPC而言,这意味着你能够察看其物品栏并且与其做些交易(该项为0的话则点击交易按钮时游戏将崩溃,所以不要这样做),对于怪物而言,这意味着它们能够获取其对应的MonEquip.txt文件中的装备

INTOWN:1 = 可以进入城镇,0 = 不能进入城镇,这列决定了你的敌人是否可以跟着你进入城镇,如果想要城镇里出现些怪物的话就设定为1好了……

类型设置

LUNDEAD:1 = 是低等不死生物,0 = 否;暴雪以这种方式来区分高等不死生物和低等不死生物(像僵尸、骷髅之类都属于低等不死生物),这列和HUNDEAD列无论哪个都是将怪物设定为不死系,所以看不出有什么区别……这列也许与一些不死的复活者的复活能力有关系(它们仅能复活低等不死生物)

HUNDEAD:1 = 是高等不死生物,0 = 否;一些大型的法术系不死生物的此值为1,具体的解释参见上一列

DEMON:1 = 是恶魔系生物,0 = 否;此列用来设定某怪物为恶魔系生物

一些杂项1/0设置

FLYING:1 = 可以飞行,0 = 不能飞行;这项若为1,则该怪物可以飞越一些障碍物,例如水坑和河流

OPENDOORS:1 = 可以开门,0 = 不能开门;如果想将游戏模式变得更像D1(门关上就安全了),那么这列就可以全部设置为0,于是怪物们将再也打不开任何一扇门……

BOSS:1 = 该怪物是Boss,0 = 不是;这一列设定该怪物是否属于Boss,Boss类的怪物将无视等级设定,而始终使用MonStats.txt中规定的怪物等级;1.10里该值设置为1并不会使游戏崩溃,或许还会获取一些Boss特有的抗性等属性或者失去作为普通怪物所拥有的致命一击概率等等,当然只是或许……

PRIMEEVIL:1 = 该怪物太邪恶了,0 = 一般邪恶……修改此值将导致些不可预知的错误,就我的观点来说,也许其作用是控制每幕最终Boss的特殊抗性、攻击方式等

KILLABLE:1 = 总有死的一天,0 = 无法死亡……这列设为0将使得某些怪物无法被杀死,这里理所当然要将敌方的值设为1……

SWITHAI:1 = 可以改变立场,0 = 不能改变,此列决定了该怪物是否能被某些改变立场的技能影响,诸如心灵爆震、转化、复活之类

NOAURA:1 = 无法获得光环,0 = 可以获得光环,此列值为0的怪物将无法从友军的光环中得到好处

NOMULTISHOT:1 = 可以获取多重射击属性,0 = 不可以,此列值是自ISMELEE列之后第二个用以防止怪物出现多重射击属性的地方

NEVERCOUNT:1 = 不参与计数,0 = 参与计数,未知参数

PETIGNORE:1.10中已经无用了,以前的作用是:1 = 召唤物自动无视该单位,0 = 召唤物会攻击它,如果某怪物的此值设定为1,则你的召唤物无论如何都不会去攻击它

DEATHDMG:1 = 其死亡动画会伤害到敌人,0 = 不伤害敌人,这一列主要作用于尸体爆炸的效果(所造成的伤害基于其生命值),该单位死亡时会伤害到周围的敌人(如果想避免遭受冥河娃娃死亡时的尸体爆炸,那么请修改这里)

GENERICSPAWN:1 = 使用一般的产生方式,0 = 不使用,此列也是未知参数

ZOO:1 = 是,0 = 否,未知参数,或许与AI有关……

技能设置

SENDSKILLS:一个选择函数:1 = 未知,2 = 用于刺客的陷阱,0 = 不发射技能;此列仅用于两种刺客的陷阱,具体作用原理未知

SKILL1-8:这8列用以描述该怪物所能使用的技能ID,引自Skills.txt,具体何时施展技能以及施展何种技能则取决于该怪物的AI

SK1MODE-SK8MODE:这8列用以说明怪物施展技能时所使用的图像

SK1LVL-SK8LVL:这8列用以用以描述该怪物施展技能的等级,该等级在噩梦和地狱难度还将被进一步提升,具体参见DifficultyLevels.txt

抗性设置

DRAIN,DRAIN(N),DRAIN(H):这三列分别控制不同难度下,角色在该单位身上所能获得的生命/法力偷取效果,0 = 偷取不到任何生命/法力值(不过这里设置成负值也不会使角色受到反伤害),这里设置成100以上的值则可以让角色获得更多的偷取效果,除此之外,在DifficultyLevels.txt中还设置了一些偷取效果的上限

COLDEFFECT,COLDEFFECT(N),COLDEFFECT(H):这三列控制该单位被冰冻后的效果,该值越小,则该单位在受到冰冻后减速越明显,值为-100将导致该单位在受到冰冻后完全不能行动;正值将使该单位在受到冰冻之后加速,0则使其无法被冰冻;单位被博内固定的时间并不由此决定,关于不同难度下冰冻时间的设定参见DifficultyLevels.txt

小提示:若想使某单位获得随机的抗性或免疫请修改MonProp.txt

RESDM,RESDM(N),RESDM(H):这三列控制该单位在不同难度下的物理抗性,负值将使单位承受更多的伤害,100以上的值将使该单位对伤害免疫

RESMA,RESMA(N),RESMA(H):这三列控制该单位在不同难度下的魔法抗性,负值将使单位承受更多的伤害,100以上的值将使该单位对伤害免疫

RESFI,RESFI(N),RESFI(H):这三列控制该单位在不同难度下的火焰抗性,负值将使单位承受更多的伤害,100以上的值将使该单位对伤害免疫

RESLI,RESLI(N),RESLI(H):这三列控制该单位在不同难度下的闪电抗性,负值将使单位承受更多的伤害,100以上的值将使该单位对伤害免疫

RESCO,RESCO(N),RESCO(H):这三列控制该单位在不同难度下的冰冷抗性,负值将使单位承受更多的伤害,100以上的值将使该单位对伤害免疫

RESPO,RESPO(N),RESPO(H):这三列控制该单位在不同难度下的毒素抗性,负值将使单位承受更多的伤害,100以上的值将使该单位对伤害免疫

杂项设置

DAMAGEREGEN:此列控制该单位恢复生命值的速度,有时这个数值也与单位的AI有关,在1.09版中恢复公式是(REGEN * HP) / 4096,这意味着一个200生命,恢复速度为10的怪物将每桢恢复0.5点生命值

SKILLDAMAGE:此列控制该单位的伤害,引自Skills.txt里的技能ID,仅用于德鲁伊的召唤物(其伤害严格按照Skills.txt而非MonStates.txt)

属性设置:

NORATIO:1 = 不使用MonLevel.txt,0 = 使用MonLevel.txt;区别是:当此处值设为1时将导致一系列的问题,诸如为该单位定义的元素伤害无论多少都不再表现出来

NOSHLDBLOCK:1 = 没有格档动画也可以有格档几率,0 = 无格档动画则无法格档;正常的单位会在格档时使用BL动作模式,假如这里设定为1的话,则该单位将在任何动作模式下都可以格档

TOBLOCK,TOBLOCK(N),TOBLOCK(H):这三列给出了该单位在各难度下拥有的格档几率,怪物和角色一样以75%为格档率上限

CRIT:该单位作出致命一击的几率

小提示:以下的数值全部为百分比(假设NORATIO列值为0),游戏首先会检测怪物的等级,然后使用以下所列的百分比与MonLevel.txt中所谓的基数一起计算怪物的最终属性,所有运算都是规则的百分比运算,即“基数/100*百分比”;例如:某50级的怪物,其MonStats.txt中的MINHP值为200,MonLevel.txt中的基数HP值为100,则其实际HP值为:
100/100*200 = 200
同理,假如某怪物的基数为300,百分比为200,则其最终值将为600;假如要使游戏直接使用MonStats.txt中怪物的数值,而又不想将NORATIO列值设定为0(以免出现些小错误),那么可以将MonLevel.txt中所有的值均改为100

MINHP,MAXHP,MINHP(N),MAXHP(N),MINHP(H),MAXHP(H):这六列用于控制不同难度下该单位的最小/最大生命值,生成怪物时会从最小和最大值间取随机数

AC,AC(N),AC(H):这三列用以控制不同难度下该单位的防御值

EXP,EXP(N),EXP(H):这三列用以控制不同难度下杀死该单位得到的经验值

A1MIND,A1MAXD,A1MIND(N),A1MAXD(N),A1MIND(H),A1MAXD(H):这六列用以控制不同难度下该单位使用A1方式攻击的最小/最大伤害值

A2MIND,A2MAXD,A2MIND(N),A2MAXD(N),A2MIND(H),A2MAXD(H):这六列用以控制不同难度下该单位使用A2方式攻击的最小/最大伤害值

S1MIND,S1MAXD,S1MIND(N),S1MAXD(N),S1MIND(H),S1MAXD(H):这六列用以控制不同难度下该单位使用S1方式攻击的最小/最大伤害值,常用于弓箭类

A1TH,A1TH(N),A1TH(H):这三列用以控制不同难度下该单位使用A1攻击的准确率

A2TH,A2TH(N),A2TH(H):这三列用以控制不同难度下该单位使用A2攻击的准确率

S1TH,S1TH(N),S1TH(H):这三列用以控制不同难度下该单位使用S1方式攻击的准确率

额外附加的元素伤害设置

小提示:当NORATIO列值设定为1时以下列不能起到正确的作用

EL1MODE-EL3MODE:附加元素伤害的攻击方式,一般来说A1,A2,S1,S2,S3,S4,SQ,C这些攻击方式都可以附加元素伤害,并且本身有其内置的触发编号

EL1TYPE-EL3TYPE:附加于攻击之上的元素伤害种类,有如下几种选项:fire = 火焰伤害,ltng = 闪电伤害,cold = 冰冷伤害(有冰冻时间),pois = 毒素伤害(有持续时间),mag = 魔法伤害,life = 偷取生命(该属性将使怪物击中你时获取指定数量的生命),mana = 偷取法力(该属性将使你被此怪物击中时失去指定数量的法力),stam = 耐力偷取(该属性将使你被此怪物击中时失去指定数量的耐力),stun = 晕眩攻击(有持续时间,但附加的伤害值不起作用,此效果仅针对雇佣兵和召唤物等,对于角色而言会使之出现打击恢复动作,而不是无法移动),rand = 随机元素伤害(有持续时间,每次攻击随机附加火焰、闪电、冰冷、毒素伤害中的一种),burn = 燃烧伤害(有持续时间,并且该类型的伤害不能被免疫,但也无法使用),frze = 冻结伤害(有持续时间,会冻结雇佣兵及召唤物,但对于角色只是普通冰冻效果);如果想为某怪物附加击退属性请编辑MonProp.txt

EL1PCT-EL3PCT,EL1PCT(N)-EL3PCT(N),EL1PCT(H)-PL3PCT(H):这几列用于描述不同难度下元素伤害附加于攻击上的几率,0 = 不附加,100 = 始终附加

EL1MIND-EL3MIND,EL1MAXD-EL3MAXD,EL1MIND(N)-EL3MIND(N),EL1MAXD(N)-EL1MAXD(N),EL1MIND(H)-EL3MIND(H),EL1MAXD(H)-EL1MAXD(H):这几列用以描述不同难度下附加于攻击上的元素伤害最小与最大值,注意这里最好将元素伤害附加于那些Missiles.txt中没有相关设置的飞射物

EL1DUR-EL3DUR,EL1DUR(N)-EL3DUR(N),EL1DUR(H)-EL3DUR(H):这三列用以描述不同难度下元素伤害的持续时间(对于cold、frze、burn、stun、pois有效)

财宝阶层(TC)设置

小提示:由于1.10版中引入了新的财宝阶层(TC)系统,以下内容与当前TC的选择机制关系已经不是很大了,除非你去编辑TreasureClassEx.txt的内容

TREASURECLASS1,TREASURECLASS1(N),TREASURECLASS1(H):该单位作为普通怪物在不同难度下所对应的TC

TREASURECLASS2,TREASURECLASS2(N),TREASURECLASS2(H):该单位作为冠军级怪物在不同难度下所对应的TC

TREASURECLASS3,TREASURECLASS3(N),TREASURECLASS3(H):该单位作为金怪或者超级金怪在不同难度下所对应的TC

TREASURECLASS4,TREASURECLASS4(N),TREASURECLASS4(H):该单位的任务TC,例如,每幕最终的Boss在任务杀死时都有更大的几率掉落黄金、套装和暗金装备

TCQUESTID:触发该怪物任务TC的任务ID

TCQUESTCP:要触发该怪物任务TC所需要完成的任务ID

特殊设置:

SPLENDDEATH:选择函数,0 = 正常死亡,1 = 怪物死亡时产生一个其MINION1列中对应的新怪物,2 = 死亡时同时杀死自己身上的怪物(用于A5的警戒塔死亡时会同时杀死其上的小恶魔)

SPLGETMODECHART:1 = 使用特殊模式的图表,0 = 不使用;未知参数,用于一些最终Boss以及腐烂的附肢

SPLENDGENERIC:1 = 是,0 = 否;与SPLCLIENTEND列共同作用,以决定该单位第一次出现时是否能够被击中(用于一些水下/地下/飞行的生物)

SPLCLIENTEND:1 = 是,0 = 否,与SPLENDGENERIC列共同作用,以决定该单位第一次出现时是否显示于屏幕上(用于一些水下/地下/飞行的生物),也被用于一些拥有特殊出现途径的怪物

行结束符

EoL:行结束符,用以避免使用电子表格工具调节行末尾时造成的字节错误,该列值均为0
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:56:43 | 显示全部楼层
MonStats2.txt        By Nefarius

ID指针
ID:用于从MonStats.txt链接到本文件的ID指针,多个怪物可以链接到本文件中的同一列

碰撞检测设置I(怪物的形体大小)
Height:怪物的高度,未使用,以游戏中的图块为单位
OverlayHeight:未使用
PixHeight:怪物的高度,未使用,以像素为单位

SizeX:以图块为单位的怪物X向尺寸,用于游戏检测碰撞及接近等,取值范围-1到3
SizeY:以图块为单位的怪物Y向尺寸,用于游戏检测碰撞及接近等,取值范围-1到3

杂项设置I
SpawnCol:相当于1.00-1.09版的eSpawnCol列,在1.09版里,游戏用它来控制该怪物的产生方式,0 = 使用Levels.txt中的M1-M25列正常生成,1 = 仅通过DS1地图文件生成(建立特殊的图层),2 = 通过Levels.txt中的S1-S25列生成;但到了1.10及以上版本,由于Levels.txt文件结构的改变,这列的作用已经很小了,M1-M25和S1-S25列已经完全相同,不过在这里设置为1依然可以使该怪物仅通过DS1地图文件生成

武器设置
MeleeRng:该怪物的近战攻击范围(能击中角色的攻击半径),以图块为单位;工作方式与Weapons.txt中的Range列相似

BaseW:基础武器类型,引自Weapons.txt中的WClass代码;它还会定义附加于某些AI上面(例如Nec的骷髅)的特效(1.00-1.06版中,这里设置为bow可以使Nec召唤出的骷髅成为弓箭手);这里将把指定武器类型的所有硬代码效果都附加到怪物上

HitClass:对敌人造成一次成功攻击之后的效果,例如击中时的音效,此外还有其他一些客户端的特效——这里的HitClass似乎与Missiles.txt中的HitClass效果相似,具体请参考之

显示效果/组件设置
HDv,TRv,LGv,RAv,LAv,RHv,LHv,SHv,S1v,S2v,S3v,S4v,S5v,S6v,S7v,S8v:分别是头部,躯干,双腿,右臂,左臂,右手,左手,盾牌以及S1-S8各部分的图像类型,这里与Weapons.txt中的AlternateGFX列是相似的;首先在填入值之前应当确定该怪物是否拥有该组件,填入多个值可以用逗号分割开,游戏会在这些值中随机选取一个

HD,TR,LG,RA,LA,RH,LH,SH,S1,S2,S3,S4,S5,S6,S7,S8:布尔函数,控制该怪物是否拥有相应的组件,注意这里需要和怪物的COF文件相匹配

TotalPieces:该怪物拥有的组件数量

mDT,mNU,mWL,mGH,mA1,mA2,mBL,mSC,mS1,mS2,mS3,mS4,mDD,mKB,mSQ,mRN:布尔函数(以上分别代表死亡,停顿,行走,被击中,一类攻击,二类攻击,格档,施法,特殊状态1-4,尸体,击退,序列动作,跑步),控制该怪物所使用的行为模式,其中某些是有特殊效果的:例如mGH如果设为0,则怪物将不出现打击回复动作(石魔);mKB如果设定为0,则带有击退属性的物品将对该怪物无效;SQ代表序列动作,决定了某怪物可否使用序列动作技能,等等

dDT,dNU,dWL,dGH,dA1,dA2,dBL,dSC,dS1,dS2,dS3,dS4,dDD,dKB,dSQ,dRN:控制以上行为模式的动画方向数量,它们的值应该与怪物的COF文件相匹配,否则游戏会崩溃……

A1mv,A2mv,SCmv,S1mv,S2mv,S3mv,S4mv:布尔函数,该怪物是否可以在行动的同时(WL和RN行为模式下)使用以上七种行为模式

碰撞检测设置II
NoGfxHitTest:布尔函数,游戏是否使用X/Y向坐标来检测碰撞与否;0 = 游戏将使用特殊的重叠检测机制

htTop,htLeft,htWidth,htHeight:该怪物用于检测碰撞与否的矩形边框尺寸,以其动画图像的中心点为坐标原点

杂项设置II
Restore:游戏如何存储该怪物:设置为0表示该怪物不会永久存在,包括衣卒尔的灵魂,娜塔亚,所有D2资料片中的召唤物,以及所有非DS1地图设置的陷阱等等;1是默认设置,表示游戏将在重载地图的同时重新生成该怪物,2则是对于一些大型物体的特殊设置,用于塔,怪物发生器等等

AutoMapCel:为了显示该怪物,自动地图所调用的Maximap.dc6文件中的子文件ID,要使用这项功能,NoMap列值必须为1

NoMap:布尔函数,0为默认值,1为使用AutoMapCel中定义的ID作为怪物在自动地图上显示的图像
NoOvly:布尔函数,0为默认值,1为不允许重叠显示,用于一些固定的或是不可选中的召唤物,如乌鸦、骨墙、陷阱等

点选(鼠标指向显示高亮)设置
isSel:布尔函数,1 = 可选中,0 = 不可选中
alSel:布尔函数,1 = 可选中,0 = 不可选中,用于点选城镇外的单位,例如崔斯特瑞姆的凯恩
noSel:布尔函数,1 = 不可选中,0 = 可选中,用于禁止一些点选类型
ShiftSel:布尔函数,用于骨墙等,可被选中但无法显示正确名称(如Diablo的骨牢可以被点选,但其名称是错误的)
CorpseSel:布尔函数,1 = 可点选该单位的尸体,0 = 不可点选该单位的尸体

杂项设置III
isAtt:布尔函数,1 = 可被攻击,0 = 不可被攻击

Revive:布尔函数,1 = 可被复活,0 = 不可被复活,这里的值不知道对于自动复活的怪物和被怪物复活的怪物是否有效

Critter:布尔函数,1 = 家畜,0 = 非家畜,大多数关于家畜的指定效果都由此应用到怪物身上,另有一些通过硬代码的hcIDx以及其怪物ID指定,还有一些效果是通过Levels.txt文件中有关家畜的几列(CMon等)所指定的

Small:是否为小型怪物,1 = 是,0 = 否,用于判断是否100%被击退效果所击退
Large:布尔函数,1 = 大型生物,大型生物有25%几率被击退效果所击退

Soft:可能与音效有关,1 = 软体,0 = 非软体,仅有骷髅等一些无肌肉型生物使用0,如骷髅,忿怒,渴望者等等

Inert:布尔函数,1 = 无害的生物,0 = 默认值,1仅用于NPC及其他一些特殊生物

ObjCol:布尔函数,可能用于判断该生物是否被当作某种实物来处理
DeadCol:布尔函数,同上,用于判断该生物是否被当作尸体来处理

UnFlatDeath:布尔函数,是否对此生物的尸体进行碰撞检测,这里设置为1的生物尸体将使飞射物无法穿越

Shadow:布尔函数,1 = 为此生物绘制影子,0 = 不绘制影子

NoUniqueShift:布尔函数,1 = 不使用RandTransform.dat文件中为该类金怪定义的颜色变化,0 = 对金怪使用颜色变化

CompositeDeath:布尔函数,0 = 死亡动画仅由躯干部分实现,1 = 死亡动画将由躯干部分和其他身体部分共同组合完成

LocalBlood:定义了当该怪物被击中而流血时,血液图像的Z方向偏移位置,需要对下一列进行设置以使该单位可以流血

Bleed:0 = 不可流血,1 = 可以流少量血(使用ID为18-19的Missile),2 = 会流出大量血(使用ID为20-21的Missile),大于3 = 使用其他的流血图像

Light:怪物的光照范围,单位是图块,默认为0表示无光照范围

Light-R,Light-G,Light-B:光照的颜色,以RGB模式来表示

UTrans,UTrans(N),UTrans(H):定义了该怪物在普通、恶梦、地狱难度下的颜色,色彩提取自该怪物的调色板文件以及TransTransform.dat文件;被游戏用于给三个难度的Boss冠以不同的颜色

Heart,BodyPart:1.07以后的版本均为无用列,自从引入TreasureClassEx.txt之后暴雪就去除了原先的MonItemPercent.txt文件;在以前的版本中,这两列定义了该怪物可以掉落何种身体器官

InfernoLen:地狱火动画每段的持续时间
InfernoAnim:地狱火动画使用的设置,这里使用MonMode.txt文件中的数字ID
InfernoRollBack:地狱火动画回滚至第一桢所需的时间

ResurrectMode:被复活时使用的动画模式,大部分使用NU,但有些怪物例如沉沦魔等有其特殊的复活动画,例如复活骷髅会使用其在MonStats.txt中定义的动作序列,因此这里填写xx
ResurrectSkill:被复活时所使用的技能,需要在MonStats.txt文件中进行相关的技能定义

EoL:行结束符
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:56:59 | 显示全部楼层
MonType.txt        By Nefarius


Type:该怪物类型的ID指针,用以使MonStats.txt中的每个怪物对应其怪物类型

Equiv1,Equiv2,Equiv3:其功能如ItemTypes.txt中的各Equiv列,例如,UndeadFetish类的Equiv1和Equiv2列分别为LowUndead和Demon,亦即一个UndeadFetish类怪物既属于LowUndead类又属于Demon类,而LowUndead的Equiv1列为Undead,于是在游戏中,一个UndeadFetish类的怪物将同属UndeadFetish、Undead、LowUndead和Demon四种怪物类型

StrSing:该类型怪物在游戏中显示的字符串键值,单数形式,但未被游戏使用,因为游戏显示代码在MonType.txt文件中仅调用了StrPlur列的值

StrPlur:该类型怪物在游戏中显示的字符串键值,复数形式,用于诸如“+X%伤害对某类怪物”或者“+X准确率对某类怪物”的场合,在非Intel处理器的机器上有bug

*EoL:行结束符


MonTypes的使用场合:
用于MonUMod.txt中控制某种属性不能被赋予某类型的怪物,例如Type = sandleaper的怪物(沙地跳跃者)无法被赋予闪电强化属性;另一个用途就是对恶魔的伤害、对不死怪物的伤害等属性
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:57:19 | 显示全部楼层
MonUMod.txt                By 54x & Red Havoc


前言:
本文件控制的是以下几种怪物的特殊属性:冠军级怪物、随机金怪以及超级金怪;同时也包括出现在它们周围的仆从们
一个小提示:本文件中包含一个占两列位置的参数表,这个参数表作为一个独立的文件存在,并且与本文件中的其他列没有任何瓜葛;事实上这不是一个良好的数据库风格,将其分离出去会使文件更加易读

相关文件:
这里需要用到的文件有:MonType.txt
这里的内容被以下文件所引用:SuperUniques.txt

各列功能具体说明:
UniqueMod:该列仅作参考,相当于注释列,不用于其他任何文件中;这里用一些短小的文字来描述各行代表的属性,以便于编辑修改;具体的描述请参见SuperUniques.txt文件引导中对Mod1-Mod3列的相关说明

ID:该列是各属性的内部ID,用以填入SuperUniques.txt中的Mod1-Mod3列,以赋予各个金怪一些特殊属性

Enabled:该属性是否允许出现,0 = 不可出现,1 = 可以出现

Version:该属性出现于D2原版还是资料片,0 = D2原版和资料片均可出现,100 = 仅出现于D2资料片

XFer:是否在此金怪周围仆从的生命条下面显示“喽罗”字样,1 = 是,0 = 否;例如:超级金怪可拥有最多3种属性,只要这三种属性中有一种的该列值为1,则其周围仆从的生命条下方将显示“喽罗”字样

Champion:该属性是否仅限冠军级怪物可用,1 = 仅限冠军级,0 = 无此限制

fPick:可能用于一些隐藏的选择机制,用以防止某几种属性同时出现在一个怪物身上,例如拥有闪电强化的怪物无法同时拥有多重射击,等等;但其具体工作方式仍然不详

Exclude1,Exclude2:该属性禁止附加的怪物种类;这两列用于禁止某些特定类型的金怪出现该属性,同时对其子类型有效;这里的值引自MonType.txt中的ID指针;对于此处填写的怪物类型,当出现随机金怪时,游戏将不会选中该属性作为其金怪附加属性:例如沙地跳跃者类金怪不会出现闪电强化属性

CPick,CPicl(N),CPick(H):这三列表示该属性可否赋予各个难度的冠军级怪物,留空表示该属性不会出现于指定难度下的冠军级怪物,这里填写的数值越大则该属性出现于指定难度冠军级怪物的几率也越大;例如如果Fanatic的CPick值为7而Possessed的CPick值为1,则普通难度游戏出现Fanatic类冠军级怪物的频率将是Possessed类的7倍

UPick,UPick(N),UPick(H):与CPick,CPicl(N),CPick(H)这三列功能相近,用于判断该属性可否赋予各个难度的随机金怪;这里的数值越大则该属性出现也就越频繁

fInit:无用参数

以下两列即为前面提示中提到的参数表,其中*Constant Desc列是注释列,而Constants列是各个参数的值
Constants:该列是各属性为冠军级怪物/随机金怪/超级金怪提供的一些加成参数,其值的含义参见后面的*Constant Desc列;这里有些参数对于在不同难度的值也是不同的,以下列出一个各参数的详细表格:

各难度通用参数                提升的属性                                        值
Champion Chance                成为冠军级几率                                20
Champion +ToHit%        冠军级怪物准确率百分比                75
Champion +Dmg%                冠军级怪物伤害百分比                100
Minion +ToHit%                金怪仆从准确率百分比                50
Unique +ToHit%                金怪准确率百分比                        100
Minion +Dmg%                金怪仆从伤害百分比                        75
Unique +Dmg%                金怪伤害百分比                                150

各难度非通用参数                提升的属性                                                普通值        噩梦值        地狱值
Minion +HP%                                金怪仆从生命百分比                                200                200                175
Champion +HP%                        冠军级怪物生命百分比                        300                250                200
Unique +HP%                                金怪生命百分比                                        700                550                325
Minion +ElemMinDmg%        金怪仆从最小元素伤害百分比                0                33                33
Minion +ElemMaxDmg%        金怪仆从最大元素伤害百分比                0                50                50
Champion +ElemMinDmg%        冠军级怪物最小元素伤害百分比        33                33                33
Champion +ElemMaxDmg%        冠军级怪物最大元素伤害百分比        50                50                50
Unique +ElemMinDmg%        金怪最小元素伤害百分比                        66                66                66
Unique +ElemMaxDmg%        金怪最大元素伤害百分比                        100                100                100

*Constant Desc:注释列,用以说明Constant列的用途

*EoL:行结束符,该列不可删除,且值须为零
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:57:36 | 显示全部楼层
NPC.txt        By Nefarius

Npc:该NPC的名字,取自MonStats.txt中的ID指针,这里的值不可修改,否则在打开商人的交易窗口时将会出错

Buy Mult:玩家将物品出售给NPC的价格乘数;这里的基础价钱不是Armor.txt,Weapons.txt,Misc.txt文件中定义的价钱,而是以物品的实际价格作为基础价钱,即所有关于价格的因子全部参与计算以后的价格;这里的值以1/1024为单位,填入512就意味着乘数为512/1024,也就是50%基础价格;例如克雷德劳之牙的实际价格为4027,如果这列填入1024,则可以以4027的原价卖给该商人,如果填入512,则售价只有2013

Sell Mult:玩家从NPC处购买物品的价格乘数,其计算规则与上一列相同

Rep Mult:各种物品修理所花费的基础价格乘数,与以上两列的计算规则相同,但是游戏修理物品实际花费的价钱还要考虑别的因素,举例而言:关于克雷德劳之牙,首先我们利用前两列的计算规则得到其基础修理费,当此列值为1024时计算得到4027,也就是当克雷德劳之牙的耐久度为零时修理要花4027金币;但倘若这幅手套还剩了一半的耐久度,那么最终修理的价钱就是4027的一半,2013金币了,也就是说,关于修理物品的公式,应该在基础价钱的基础上乘以一个有关剩余耐久度的因子,即“要修复的耐久度/总耐久度”;另外,聚气物品的修理价格要在基础修理费的基础上加一个额外的聚气修理费用,并且聚气修理费是不受这个参数控制的,关于它的费用计算详细步骤就写在游戏的代码里

QuestFlagA,QuestFlagB,QuestFlagC:物品价格的任务标志,它们将被用于以下几列中完成某任务之后计算物品价格的算法中

QuestBuyMultA,QuestBuyMultB,QuestBuyMultC:它们是Buy Mult列中价格乘数的修正量,例如某商人的Buy Mult列为512,同时QuestBuyMult为1024,那么完成任务与否对于物品卖出的价格毫无影响,因为50%的100%还是50%,克雷德劳之牙还是卖2013金币;但如果QuestBuyMult为2048,那么我们卖掉克雷德劳之牙就能得到4027金币了,因为这是50%的200%,100%的基础价格;最后,假如QuestBuyMult列为512的话,克雷德劳之牙就只能值1006金币了,因为50%的50%等于25%;剩下两列的值也一样是乘数的修正量,采用叠乘运算,就是这样:
·基础价格 = GLD
·Buy Mult = BM
·QuestBuyMultA = QBM1
·QuestBuyMultB = QBM2
·QuestBuyMultC = QBM3
那么最终价格:
GLD * BM/1024 * QBM1/1024 * QBM2/1024 * QBM3/1024
因此仍然是克雷德劳之牙的例子,GLD = 4027,BM = 512,QBM1-3 = 2048,那么最终价格:
4027 * 50% * 200% * 200% * 200% = 16108

QuestSellMultA,QuestSellMultB,QuestSellMultC:和上面三列计算规则相同,是Sell Mult列中的价格乘数的修正量

QuestRepMultA,QuestRepMultB,QuestRepMultC:和上面三列计算规则相同,是Rep Mult列中的价格乘数的修正量

Max Buy,Max Buy(H),Max Buy(N):将物品卖给NPC时,三个难度下分别的出售价钱最大值,这里填写的值最大为2147483647


其他:
与NPC的交易永远不会出现小于1金币的情况,假如某物品价格为0,那么无论售出或者买入的交易价格都是1,但这对于赌博不适用,赌博时所花费的价格是比其真实价格高很多的;此外,大于2147483647的价格无论是作为数据运算结果,文件中的基础价格还是NPC运算得到的结果,都会被当作1对待

有些物品在NPC处的售出价格要比其买入价格便宜贵,这与NPC.txt无关,是一个小bug,已经被修正

物品在NPC处的出售价格似乎与其耐久度无关
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:58:04 | 显示全部楼层
Objects.txt        By Nefarius
小提示:出于可读性的缘故,这里所列的各列描述不一定按照txt文件中的排列顺序

Name:各个实物(Object)在游戏中显示的名称

Description-Not Loaded:参考列,仅作注释,是一些关于游戏中该实物特性的简短描述;不幸的是暴雪在这里对各实物只做了相当少的说明,因此其能提供的信息也非常有限

ID:又是一个参考列,是各个实物的ID,但游戏会直接读取各个实物所在行的编号作为其ID而不是此列值

Token:仍然是参考列,表示各个实物在游戏中的图像,仅作注释,要想修改实物的图像请编辑ObjType.txt文件

SpawnMax:无用参数,关于各实物在游戏中何时出现以及出现的方式均取决于本文件中的PopulateFn列,此列仅被用作注释

TrapProb:无用参数,其本意是用来规定各个实物带陷阱的几率,但这个功能被各实物代码硬性实现了

SizeX,SizeY:这两列是该实物显示在游戏中占用的地图块,值过大将使该实物无法正常显示,因此请谨慎修改这两列

nTgtFX,nTgtFY:未知参数
nTgtBX,nTgtBY:未知参数

IsAttackable:布尔函数,角色在游戏中点击该实物时使用NU动作模式还是KK动作模式,1 = KK模式(踢),0 = NU动作模式(中立状态,不作任何动作)

EnvEffect:布尔函数,功能未知,但显然涉及环境音效及其他环境效果,1 = 与环境效果有关,0 = 与环境效果无关

IsDoor:布尔函数,该实物是否在游戏中被认为是一扇门(门会显示打开的门,关闭的门,阻挡的门等字样,而不是普通实物的字样),被认为是门的实物将可能被有开门能力的怪物开启;0 = 该实物不是门,1 = 该实物是一扇门

BlockVis:布尔函数,该实物是否会挡住视线,仅当IsDoor列为1时起作用;该值为1时,在门关闭的情况下,角色将无法选中不与自己在同一房间的实物、怪物等单位,该值为0时则可以;它的用途和Levels.txt中的LoSDraw列很相似,目前还不知道是否对怪物有效;0 = 该实物不会阻挡玩家的视线,1 = 会阻挡

Orientation:未知参数,看起来像是控制该实物面朝的方向,但改变它的值在游戏中又看不出什么差别,或许是大部分实物都只有一个方向的缘故;它或许被游戏代码用于为各种墙壁选择对应方向的门,仅作参考,这里的值所表示的方向为:
1—        西南,2—西北,3—东南,4—东北

Trans:用以控制游戏中各个实物的颜色,但改变它的值在游戏中仍旧看不出太大差别

PreOperate:布尔函数,功能未知,本文件中所有IsAttackable列为1的实物此处也为1,但游戏中实在看不出两者之间的联系

XOffset,YOffset:该实物图像相对其实际位置的偏移量;这里以像素而不是地图块为单位;因此如果某实物的两列值均为-100,则该实物图像将在其实际位置的左上方,偏左100像素,偏上100像素

Draw:布尔函数,是否绘制该实物的图像,如果不绘制的话,地图上仍旧可以看到该实物的影子,并且我们仍旧可以用鼠标选中它:0 = 不绘制图像,1 = 绘制

Red,Green,Blue:这三列控制该实物光照范围(如果有为其指定光照半径的话)内的打光颜色,采用RGB模式

HD,TR,LG,RA,LA,RH,LH,SH,S1-S8:布尔函数,DCC文件的各个组成部分是否可以被选中(鼠标指上去显示高亮),某列值为0将使该列所对应的组成部分无法被选中:0 = 该组成部分无法被选中,1 = 该组成部分可以被选中

TotalPieces:可被选中的DCC文件组成部分的总数量

SubClass:该实物所特属的子类别,以下是相应的代码:
1 = 神殿类,显示“XX神殿”
2 = 石碑类
4 = 传送门类,尝试将一个非传送门实物强行设置为此类将导致游戏错误
8 = 容器类,正常显示该实物的名称
16 = 神秘庇护所里的各个传送处
32 = 井类
64 = 小站类,显示其对应的地点
128 = 秘密牢门类,该类实物不可被选中,但可以鼠标点击以获得正常效果

XSpace,YSpace:未知参数,是有关地图块的一些数值,但目前为止未发现其在游戏中有任何作用

NameOffect:显示该实物名称的地方与其实际中心点的偏移像素(Z轴方向),例如这里填写-100将使该实物的名称显示在中心点正上方100像素的位置

MonsterOK:布尔函数,功能未知

OperateRange:很显然是用于控制使用者和实物之间距离多远时可使用该实物,单位为地图块,但改变它的值的话,似乎在游戏中看不出什么不同

ShrineFunction:无用参数

Restore:布尔函数,某场景出现的该实物数据是否始终存放在内存中,当某角色从其他地方返回该场景时重建,这里的值如果为零,则离开视野后该实物就会消失;1 = 实物储存于内存中,返回时重建,0 = 允许实物消失,不重建

Act:参考列,用以说明该实物可出现于哪一场景的注释,15表示该实物可以出现于所有前三个场景中

Lockable:布尔函数,该实物是否可以上锁;要使用此功能必须有相应的InitFn列值与之匹配,此外,该实物在游戏中显示的名称将被替换成“上锁的箱子”;0 = 不可上锁,1 = 可以上锁

Gore:布尔函数,功能未知,只有各类尸体的该列值为1

Sync:布尔函数,功能未知,目前的猜想是被用于客户端和服务器端关于该实物是否同步的设置,一般来说通过DS1文件显示的实物该列值都为0,而这类实物是无法同步的;不过它或许也与实物的某些外观效果同步相关,例如井水喝过之后会变空等;0 = 不使该实物的客户端与服务器端同步,1 = 始终同步

Flicker:布尔函数,该实物发出的光是否闪烁,0 = 不允许其闪烁光芒,1 = 允许闪烁

Damage:该实物所造成的伤害值(需要使用适当的OperateFn函数),但这里所填数值的单位不详;所有实物均默认为100,并且如果填入0,游戏将显示它会造成伤害的警告

Beta:参考列,仅作注释;在D2测试版中出现了的实物这里均为1,否则为0

Overlay:布尔函数,功能未知

CollisionSubst:布尔函数,该实物是否调用特殊的碰撞检测机制,但目前还不清楚其具体作用方式

Left,Top,Right,Bottom:用于控制该实物所属的方形区域(可以鼠标点击的区域)

RestoreVirgins:布尔函数,是否仅重建未被使用过的实物(例如未被玩家打开过的箱子等);0 = 重建所有实物,1 = 仅重建未被使用过的实物

BlockMissiles:布尔函数,该实物是否被飞射物认为是墙壁从而无法穿越之,0 = 飞射物可穿越该实物,1 = 不可穿越,飞射物将与该实物产生碰撞

DrawUnder:布尔函数,该实物是否被游戏当作一个地板贴图文件绘制出来(即角色或怪物可以站在其上面还是站在其旁边),0 = 按实物绘制,1 = 按贴图文件绘制

OpenWarp:布尔函数,鼠标指向该实物时是否显示“通往XX”或“陷阱门”字样,0 = 不显示,1 = 显示

AutoMap:该实物是否显示于自动地图上,以及用何种显示图标;0 = 不显示在自动地图上


实物相关函数:
小提示:以下几列是本文件的核心内容,控制着鼠标点击实物时所发生的事件及其他,这几列的值将分别链接到相关的函数段,以实现各种不同的功能
OperateFn:该列控制当角色点击该实物时游戏调用的函数,具体列表如下:
1 = 容器(可能产生不死生物或者火球的陷阱,至少掉落一件物品),用于棺材
2 = 神殿(必须与相应的InitFn函数相匹配,否则会出错)
3 = 容器(可能产生毒雾或者火堆等随机杀伤的陷阱,随机掉落一件物品),用于大罐子、瓮等
4 = 容器(可能产生随机杀伤的陷阱,随机掉落物品,掉落几率大于函数3,小于函数1),用于箱子
5 = 容器(可能产生不死生物的陷阱,随机掉落物品,并且游戏不会为其播放任何陷阱音效),用于木桶
6 = 发霉的古书(任务实物,显示高塔任务的说明文字)
7 = 爆炸物(点击后发生爆炸,不掉落任何物品),用于爆炸的木桶
8 = 门(角色可以任意的打开或关闭之)
9 = 石塚(任务实物,按照特定的顺序点击它们会打开一扇传送门)
10 = 凯恩的绞架(任务实物,点击它会出现凯恩)
11 = 控制某实物是否可以类似光照闸门那样开关(用于如第一幕营地那样的火炭盆)
12 = 艾尼弗斯之树(任务实物,点击后会掉落艾尼弗斯卷轴)
13 = 无用函数,使用后也不会造成游戏崩溃
14 = 容器(可能产生随机杀伤的陷阱,掉落物品几率非常小),用于篮子
15 = 传送门(点击将到达另一个地方)
16 = 陷阱门(点击将出现到达另一个场景的入口)
17 = 石塔(现在使用该函数只会让你的角色不停的说“不可能”,因为相关代码已被移除)
18 = 秘密的门(地牢中会遇到,这种门打开后将不可关闭)
19 = 装甲架(随机掉落一件防具,其等级与场景等级相关)
20 = 武器架(随机掉落一件武器,其等级与场景等级相关)
21 = 马勒斯平台(任务实物,点击后掉落赫拉迪克·马勒斯)
22 = 井(必须与相应函数相匹配才能使用)
23 = 小站(第一次点击会点亮之,第二次点击可用于传送)
24 = 堕落的太阳祭坛(任务实物,点击会掉落蝮蛇护符)
25 = 赫拉迪克入口(任务实物,用于插入赫拉迪克之杖)
26 = 书架(掉落城镇传送/辨识书或者城镇传送/辨识卷轴)
27 = 神秘避难所里的那种传送门
28 = 蓝·依森之书架(任务实物,点击后掉落蓝·依森之书)
29 = 粘液门(用于蛆虫巢穴)
30 = 爆炸物(点击后会翻开并听到爆裂声,如地上牛的尸体)
31 = 山寨版吉得宾神殿(任务实物,点击后会出现掉落吉得宾的Boss)
32 = 储存箱(城镇外无效)
33 = 维特的尸体(掉落很多金币以及维特之脚)
34 = 神秘传送门(去往神秘避难所的传送门)
35 = 石块(无用,但也不会崩溃)
36 = 地窖(无用,但也不会崩溃)
37 = 纪念碑(无用,但也不会崩溃)
38 = 告示牌(无用,但也不会崩溃)
39 = 任务宝箱A(为每个玩家掉落一个赫拉迪克方块)
40 = 任务宝箱B(为每个玩家掉落一个赫拉迪克卷轴)
41 = 任务宝箱C(为每个玩家掉落一个国王之杖)
42 = 赫拉森的日记(任务实物,显示塔·拉夏古墓的标识)
43 = 督瑞尔的门(督瑞尔的房间入口)
44 = 通往下水道第二层的入口(第三幕)
45 = 打开下水道第二层入口的拉杆
46 = 地狱之门(墨菲斯托囚牢第三层的传送门)
47 = 楼梯(不清楚其具体地点)
48 = 囚禁的灵魂(请勿滥用这种实物,否则游戏将崩溃)
49 = 地狱熔炉(任务实物)
50 = 楼梯(不清楚具体地点)
51 = 容器(必然会掉落物品,并且不含陷阱)
52 = 暗黑破坏神的封印
53 = 强制之球
54 = 暗黑破坏神的封印
55 = 暗黑破坏神的封印
56 = 暗黑破坏神的封印
57 = 任务宝箱D(为每个玩家掉落一个克林姆的部件)
58 = 任务宝箱E(为每个玩家掉落一个克林姆的部件)
59 = 任务宝箱F(为每个玩家掉落一个克林姆的部件)
60 = Nothing(无用,但也不会崩溃)
61 = 通往第五幕城镇的红门(点击则进入,只能使用一次)
62 = 远古人A的雕像
63 = 远古人B的雕像
64 = 远古人C的雕像
65 = 激活三个远古人的神坛
66 = 杀死远古人之后才能打开的门
67 = 冰冻的安亚
68 = 邪气之罐(随机出现金怪,掉落物品等)
69 = 未知
70 = 世界之石大殿的入口
71 = 未知
72 = 通往第五幕的传送门(也许)
73 = 未知

PopulateFn:游戏用于生成实物的一些数量函数,留空(值为0)表示不生成该实物,以下是游戏用到的一些值(或许还有更多未用到的,不过我没有测试):
1 = 从实物列表中随机选取实物(随机的篮子、罐子等)
2 = 使用神殿的数量函数
3 = 生成单一实物,不与其它实物相毗邻
4 = 生成一组木桶(普通的和爆裂的都可以),木桶将取代原有实物
5 = 生成一个随机的罐子(从实物列表中随机选择)
6 = 生成多个同样的实物相毗邻
7 = 生成一小组火刑柱上的罗格(从实物列表中选取)
8 = 生成单一实物,与其他实物相距极远
9 = 生成多个同样的实物,相距距离比6稍远

InitFn:该实物在地图上生成后会作什么,以及被某角色激活后会作什么:
1 = 神殿(为该实物指定一个随机的神殿函数)
2 = 容器(用于罐子)
3 = 容器(用于箱子,可能与上锁有关)
4 = 发霉的古书(检测角色任务状况)
5 = 门(检测其是关闭状态还是打开状态)
6 = 石塚(检测角色任务状况)
7 = 凯恩的绞架(检测角色任务状况)
8 = 火炬/火炭盆(检测该实物是否为ON状态)
9 = 艾尼弗斯之树(检测角色任务状况)
10 = 未使用(生成时即为ON状态,角色经过其上方时会受到火焰伤害)
11 = 传送门(显然不可滥用)
12 = 永久性的传送门(同上)
13 = 不可视实物(似乎无用)
14 = 火炬/火炭盆(似乎与8相同)
15 = 马勒斯平台(检测角色任务状况)
16 = 井(检测井水满还是不满)
17 = 小站(检测该小站以前是否被激活过)
18 = 杰海因所在地(第二幕入口附近)
19 = 杰海因所在地(宫殿附近)
20 = 堕落的太阳祭坛(检测角色任务状况)
21 = 赫拉迪克入口(检测角色任务状况)
22 = 火焰(角色从其上经过将受到火焰伤害)
23 = 蓝·依森的古书(检测角色任务状况)
24 = 地刺(角色在其附近时会被扎伤)
25 = 山寨版吉得宾神殿(检测角色任务状况)
26 = 火焰之河里的骷髅堆
27 = 容器(用于粘液堆)
28 = 实物附近生成大量金币
29 = 神秘避难所的入口
30 = 进入女眷住处前检测角色任务状况
31 = 任务宝箱A(赫拉迪克方块)
32 = 任务宝箱B(赫拉迪克卷轴)
33 = 任务宝箱C(国王之杖)
34 = 火炬/火炭盆(如8,但这里随机生成NU状态或者ON状态)
35 = 地窖
36 = 纪念碑
37 = 无用
38 = 泰瑞尔的传送门(第二幕)
39 = 正牌吉得宾神殿
40 = 告示牌
41 = 下水道楼梯(第三幕下水道二层入口)
42 = 下水道拉杆
43 = 黑暗流浪者所在地(检测角色任务状态)
44 = 地狱之门
45 = 地狱之门的桥梁(接近时自动升起)
46 = 囚禁的灵魂(从MonStats.txt中调用一个囚禁的灵魂生成)
47 = 容器(用于箱子)
48 = 地狱熔炉(检测角色任务状态)
49 = 赫拉铁力所在地(第三幕入口处)
50 = 赫拉铁力所在地(正常处)
51 = 容器(用于囚禁的灵魂)
52 = 娜塔亚的所在地(检测角色任务状态)
53 = 楼梯(不知道具体在哪里)
54 = 凯恩所在地(检测角色任务状态)
55 = 暗黑破坏神所在地
56 = 暗黑破坏神的封印
57 = 容器(用于活动的储藏箱)
58 = 火炬/火炭盆(使其状态成为NU)
59 = 黑暗流浪者生成的小怪物
60 = 强制之球(检测角色任务状态)
61 = 凯恩的传送门
62 = 营救的野蛮人的传送门
63 = 远古人A的所在地
64 = 远古人B的所在地
65 = 远古人C的所在地
66 = 安亚所在地(初始)
67 = 安亚所在地(最终)
68 = 尼拉塞克所在地(初始)
69 = 尼拉塞克所在地(最终)
70 = 拉苏克所在地(初始,似乎未使用)
71 = 拉苏克所在地(最终)
72 = 远古人神坛(检测角色任务状态)
73 = 远古人大门(检测角色任务状态)
74 = 冰冻的安亚(检测角色任务状态)
75 = 世界之石大殿入口(检测巴尔是否进入)
76 = 似乎和8一样
77 = 泰瑞尔的传送门(第四幕)
78 = 泰瑞尔的传送门(第五幕)
79 = 老版本的函数,现在游戏已经没有了

ClientFn:这些是特殊的客户端函数:
1 = 环绕音效发生器
2 = 下雨的波纹及音效
4 = 未使用(强行使用会使游戏崩溃)
5 = 未使用(强行使用会使游戏崩溃)
6 = 未使用(强行使用会使游戏崩溃)
7 = 燃烧的骷髅(可能是用于火焰之河)
8 = 未使用(不起效果)
9 = 未使用(不起效果)
10 = 水中冒泡及其音效
11 = 与巴尔藏身之处的特效有关
12 = 亚瑞特山脉巅峰的特效相关
13 = 未知
14 = 另一种燃烧的骷髅
15 = 冰冻的安亚
16 = 世界之石大殿入口
17 = 无用
18 = 无用

各个实物状态的设置:
小提示:以下各列均由八列为一组,用以分别控制某实物的各种状态效果:
0 = NU
1 = OP
2 = ON
3 = S1
4 = S2
5 = S3
6 = S4
7 = S5
Selectable:布尔函数,当鼠标指到某实物上方时该实物是否会显示高亮,0 = 可以,1 = 不可以

FrameCnt:该实物的各个状态显示持续时间,以桢为单位,值为0将跳过该状态
FrameDelta:该状态下动画的播放速率,以1/256为单位

CycleAnim:布尔函数,是否循环播放该动画

Lit:该实物所拥有的光照范围大小(以地图块为单位)

BlocksLight:布尔函数,该实物是否有影子,0 = 没有影子,1 = 有

HasCollision:布尔函数,该实物是否会使游戏检测碰撞,1 = 飞射物可穿越之,0 = 碰撞

Start:动画播放的起始桢

OrderFlag:该实物被绘制成实体物品,墙壁或地板,0 = 实体物品,1 = 地板,2 = 墙壁

Mode:布尔函数,该实物是否有状态对应的动画

Parm:未知,可能是该实物所使用的某些参数
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:58:22 | 显示全部楼层
ObjGroup.txt        By Nefarius


GroupName:参考列,一般用来注释本行所描述的实物(Object)类型,游戏不读入

Offset:该实物组ID,被Levels.txt用来为各场景规定实物类型时引用,此值具有唯一性

ID0-ID7:本实物组所包含的各个实物的ID

Density0-Density7:定义该实物出现于场景中的密度;这个值的功能类似于Levels.txt中的MonDen列,但实物的真实密度还与Objects.txt中PopulateFn列的值密切相关;这里最大支持125,更大的值将导致游戏崩溃

Prob0-Prob7:这几列表示其对应的实物被选中的几率,这种几率并非依照“个体/整体”的几率计算公式,而只是各个实物出现的实际几率数值,亦即:如果该组实物中有某个实物的该值为100,则出现几率为100%,就是说其他实物将得不到出现的机会;另外,这些列中的数值之和并不一定要等于100

Shrines:当某场景中出现该组实物时是否将其转化成神殿;要使用此功能,其对应的实物的DensityX列值必须为空,同时在Objects.txt中相应的PopulateFn值也必须与其匹配

Wells:当某场景中出现该组实物时是否将其转化成井;要使用此功能,其对应的实物的DensityX列值必须为空,同时在Objects.txt中相应的PopulateFn值也必须与其匹配
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:58:37 | 显示全部楼层
PetType.txt        By HellSpawn

PetType:召唤物的类型,Skills.txt中的PetType列值就引自这里

IDx:召唤物类型ID

Group:召唤物所属的组ID,同组的召唤物同一时间只能存在一种

BaseMax:不太确定它的含义,可能是说这里设定为1的话则该召唤物只能拥有一只,而设定为0的话则可以通过技能等级或其他属性来更改它的最大数量

Warp:该召唤物是否在回城、小站或进入某入口时和你重合,1 = 重合

Ranged:该召唤物是否可进行远程攻击,1 = 可以

PartySend:召唤物图标是否显示于屏幕左上角,1 = 显示

UnSummon:召唤物可否被取消召唤,1 = 可以

AutoMap:召唤物的图标是否显示于自动地图上,1 = 显示

Name:召唤物图标下方的显示名称

DrawHP:召唤物的生命条是否显示于其图标的下方,1 = 显示

IconType:召唤物图标的类型,用于左上角图标显示顺序,1 = 左边,2 = 中间,3 = 右边

BaseIcon:召唤物使用的图标DC6文件名,其地址在data\global\ui\hireables\

MClass1-4:该类型中可供选择的召唤物硬代码ID,例如石魔有三种

MIcon1-4:该类型中可供选择的召唤物的图标,与其ID相对应

EoL:行结束符
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:58:57 | 显示全部楼层
Properties.txt        By Joel Falcou
本文件依存于ItemStatCost.txt,文件中Stat1-Stat7列中所填入的ID都必须在ItemStatCost.txt文件中定义
文件的主要部分是7个函数块,每个块由其函数ID(FuncX)和三个相关参数(StatX,SetX,ValX)组成;每个函数的功能都是用来表达其相关参数,无参数者除外
文件中凡是含有*号的列都是注释列,游戏不读入

Code:用于其他txt文件,代表该属性的代码,如MagicPrefix,MagicSuffix,AutoMagic,MonProp,Gems,Runes,Sets,SetItems,UniqueItems,CubeMain等txt文件中

*Done:布尔函数,控制该属性是否可用,1 = 可用,0 = 不可用

Set1-Set7:该属性调用的函数的一个可用参数
Val1-Val7:该属性调用的函数的一个可用参数
Func1-Func7:该属性调用的函数,具体功能参见附录
Stat1-Stat7:该属性使用的状态,这里的值引自ItemStatCost.txt中的ID指针

*Desc:该属性功能的描述
*Param:描述该属性所要用到的参量意义
*Min:描述该属性的最小值
*Max:描述该属性的最大值
*Notes:一些额外的注释
*EoL:行结束符


附录:关于Properties.txt文件中用到的函数
以下列出一些Properties.txt文件中用到的函数,这些函数用于将每个属性的参数,最大值,最小值换算成实际该属性对某方面的加成值:
1 – 将该属性的最小/最大值应用于本函数块对应的Stat列状态上
2 – 仅用于增加防御百分比的函数,具体作用不详
3 – 与前一个函数块使用相同的属性最小/最大值
4 – 无用参数
5 – 与最小伤害值相关
6 – 与最大伤害值相关
7 – 与增加伤害百分比相关
8 – 用于各种速度方面的属性,如IAS、FCR之类
9 – 与前一个函数块使用相同的属性参数/最小/最大值
10 – 用于+X某系技能的属性
11 – 用于事件引发某技能的属性
12 – 为本函数对应的Stat状态随机选取参数
13 – 与耐久度相关
14 – 与物品的孔数相关
15 – 仅用于各种最小值的属性
16 – 仅用于各种最大值的属性
17 – 仅用于各种按等级加成的属性
18 – 仅用于各种按时间加成的属性
19 – 与聚气属性相关
20 – 布尔函数,仅用于无法破坏属性
21 – 增加某类技能等级,增加的技能类型取决于该函数对应的Stat和Val列值
22 – 增加某单项技能,增加的技能种类取决于该函数对应的Stat列值,具体技能则由该属性参数指定
23 – 仅用于无形属性
24 – 用于对某类怪物加成的属性
25到32:可以自行定制使用,具体请查阅PlugIn插件的语法文档
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:59:13 | 显示全部楼层
QualityItems.txt        By Quatl

前言:本文件控制超强物品的属性,文件中每一行都可以同时控制武器和装甲等,你可以随意添加新的行,并且可被游戏读取并使用的;本文件存放在D2Exp.MPQ文件中

相关联的文件:
本txt将用到以下文件:Properties.txt,ItemTypes.txt

各列具体功能描述:
NumMods:这里仅可填入1或者2,表示该行赋予超强物品的属性个数

Mod1Code:引自Properties.txt中的属性代码,例如%ac,red-mag等,表示该行赋予超强物品的第一个属性,无限制
Mod1Param,Mod1Min,Mod1Max:分别表示该属性的参数,最小值和最大值,详细分析请参见Properties.txt文件引导

Mod2Code:引自Properties.txt中的属性代码,例如%ac,red-mag等,表示该行赋予超强物品的第二个属性,该列当且仅当NumMods = 2时有效
Mod2Param,Mod2Min,Mod2Max:分别表示该属性的参数,最小值和最大值,详细分析请参见Properties.txt文件引导

ToHitMin到Dur%Max:过时的参数,游戏不加载之,仅作为注释用

Effect1,Effect2:字符串键值,用于TBL文件以显示某些字样;游戏加载之但并不显示其对应的内容,因此不确定这是否有用

Armor到Belt:布尔函数,控制该行的属性是否会被各类物品使用,1 = 会,0 = 不会;以下是各列对应的物品类型列表,这里各类型物品若有其子类型,则子类型同样适用:
Armor - armo - 装甲和头盔类
Weapon - melee(不包括thro,rod,orb) - 近战武器类(不包括投掷类、法珠类以及杆棒类)
Shield - shld - 盾牌类
Throw – thro – 投掷武器类
Scepter – scep – 权杖类
Wand – wand – 法杖类
Staff – staf – 双手杖类
Bow – miss(bow,xbow) – 远程攻击类(弓和十字弓)
Boots – boot – 鞋子类
Gloves – glov – 手套类
Belt – belt – 腰带类

Level:该行属性的需求等级

Multiply:该行属性对于物品价格的乘数
Add:该行属性对于物品价格的增量
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 01:59:31 | 显示全部楼层
Runes.txt                By Nefarius

Name:用于显示符文之语名称的字符串键值,在TBL文件中使用
Rune Name:符文之语的名称,仅作为注释用

Complete:符文之语是否在游戏中可用,0 = 不可以,1 = 可以
Server:符文之语是否仅限服务器端使用(这里设置为1的意义等同于前一列设置为0),0 = 可用于单机、战网及开放式游戏,1 = 仅可用于战网

IType1-IType6:符文之语允许的物品类型,引自ItemTypes.txt中的ID指针
EType1-EType6:符文之语禁止的物品类型,即使这里填写的类型是前面IType1-IType6中允许的类型也会被禁用

*Runes:符文之语用到的符文名称,这里仅作注释列
Rune1-Rune6:制作符文之语所要用到的符文类型及其顺序,这里的值引自Misc.txt中的ID

T1Code1-T1Code7:这些列分别是符文之语成品的七个属性,引自Properties.txt中的ID
T1Param1-T1Param7:与其属性对应的七个参数,支持数值或表达式;只对需要传递参数的属性有用,例如技能ID,状态ID,怪物ID以及怪物类型ID等
T1Min1-T1Min7:相应属性的最小值,这里的值对不同属性有不同的意义,要想进一步了解请参看Properties.txt和ItemStatCost.txt的相关文件引导
T1Max1-T1Max7:相应属性的最大值,这里的值对不同属性有不同的意义,要想进一步了解请参看Properties.txt和ItemStatCost.txt的相关文件引导

EoL:行结束符,主要功能是保证MS Excel可以顺利打开并编辑该txt文件
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 02:00:02 | 显示全部楼层
SetItems.txt        By Alkalund & Char

Index:物品名称的字符串键值,用于TBL文件显示在游戏里
Set:该套装物品所属套装的名称的字符串键值,引自Sets.txt文件中的Index列值

Item:该套装物品的基础物品代码(与Weapons.txt,Armor.txt和Misc.txt中的物品代码匹配)
*Item:该套装物品的基础物品名称,参考列,仅作注释

Rarity:如果基础物品对应多个套装物品的话,该套装物品的被选中几率;这里使用普通的Rarity/总Rarity公式进行计算,即假如有两种套装戒指,一个Rarity = 1,另一个Rarity = 100,则第一种被选中的几率为1/101,第二种为100/101;Rarity取值范围为0-255

Lvl:该套装物品的品质等级,怪物、合成公式、各类实物等都必须大于等于这个等级才能掉出/合成出该套装物品,否则它们会掉落一个双倍耐久的蓝色物品

Lvl Req:使用该套装物品所需的最低人物等级

ChrTransform:该套装物品相关的人物各部分DCC文件及DC6掉落文件的颜色改变(实际改变与否取决于Weapons.txt,Armor.txt和Misc.txt),这里的值引自Color.txt里的ID指针
InvTransform:该套装物品相关的DC6物品栏文件图像的颜色改变(实际改变与否取决于Weapons.txt,Armor.txt和Misc.txt),这里的值引自Color.txt中的ID指针

InvFile:用于替代Weapons.txt,Armor.txt和Misc.txt中指定的物品栏文件图像,这里的值是DC6物品栏文件的文件名
FlippyFile:用于替代Weapons.txt,Armor.txt和Misc.txt中指定的物品动画文件,这里的值是DC6物品动画文件的文件名

DropSound:用于替代Weapons.txt,Armor.txt和Misc.txt中指定的物品掉落音效,这里的值引自Sounds.txt文件的ID指针
DropSfxFrame:物品掉落动画开始播放多久之后播放掉落音效,以桢为单位
UseSound:该套装物品在物品栏中放置或被装备上时使用的音效

CostMult:物品在出售、购买或修理时的价格乘数因子
CostAdd:物品在出售、购买或修理时的价格增量

Add Func:控制该套装物品上的属性何时显示,以及何时起作用的函数代码,具体的作用方式请参见附录,以下是这些函数的简介:
0 = 该套装物品上没有绿色属性(同套装装备数件才能起作用的属性)
1 = 该套装物品上的绿色属性取决于装备了该套装里哪一件物品
2 = 该套装物品上的绿色属性取决于装备了该套装里多少件物品

以下与套装物品上的蓝色属性(自带的属性)有关:
Prop1-Prop9:这九列是该套装物品的各个蓝色属性,其值引自Properties.txt中的ID指针
Par1-Par9:这九列是其对应的属性的参数,支持数值或表达式;只对需要传递参数的属性有用,例如技能ID,状态ID,怪物ID以及怪物类型ID等
Min1-Min9:相应属性的最小值,这里的值对不同属性有不同的意义,要想进一步了解请参看Properties.txt和ItemStatCost.txt的相关文件引导
Max1-Max9:相应属性的最大值,这里的值对不同属性有不同的意义,要想进一步了解请参看Properties.txt和ItemStatCost.txt的相关文件引导

以下与套装物品上的绿色属性有关:
AProp1A,AProp1B到AProp5A,AProp5B:这几列是该套装物品的各个绿色属性,其值引自Properties.txt中的ID指针
APar1A,APar1B到APar5A,APar5B:这几列是其对应的属性的参数,支持数值或表达式;只对需要传递参数的属性有用,例如技能ID,状态ID,怪物ID以及怪物类型ID等
AMin1A,AMin1B到AMin5A,AMin5B:相应属性的最小值,这里的值对不同属性有不同的意义,要想进一步了解请参看Properties.txt和ItemStatCost.txt的相关文件引导
AMax1A,AMax1B到Amax5A,AMax5B:相应属性的最大值,这里的值对不同属性有不同的意义,要想进一步了解请参看Properties.txt和ItemStatCost.txt的相关文件引导


附录:
不论某绿色物品使用函数1还是函数2,其上的绿色属性显示与否都与装备的其他套装物品有关;如果采用函数1,则其上显示何种绿色属性取决于装备了哪件套装物品;如果采用函数2,则其上显示的绿色属性取决于装备的总套装物品数量;如果该套装总共由X件组成,则每件物品上最多能出现2X-2个绿色属性

如果使用函数2,则其绿色属性按照如下方式显示:
AProp1A,AProp1B:任意两件套装物品装备后显示
AProp2A,AProp2B:任意三件套装物品装备后显示
AProp3A,AProp3B:任意四件套装物品装备后显示
AProp4A,AProp4B:任意五件套装物品装备后显示
AProp5A,AProp5B:任意六件套装物品装备后显示

如果使用函数1,则不同绿色属性对应该套装中的不同物品,而与该套装中的多少件物品已被装备毫无关系

当套装中第一件物品被装备上时,其上的绿色属性按照如下方式显示:
AProp1A,AProp1B:第两件套装物品装备后显示
AProp2A,AProp2B:第三件套装物品装备后显示
AProp3A,AProp3B:第四件套装物品装备后显示
AProp4A,AProp4B:第五件套装物品装备后显示
AProp5A,AProp5B:第六件套装物品装备后显示

当套装中第二件物品被装备上时,其上的绿色属性按照如下方式显示:
AProp1A,AProp1B:第一件套装物品装备后显示
AProp2A,AProp2B:第三件套装物品装备后显示
AProp3A,AProp3B:第四件套装物品装备后显示
AProp4A,AProp4B:第五件套装物品装备后显示
AProp5A,AProp5B:第六件套装物品装备后显示

当套装中第三件物品被装备上时,其上的绿色属性按照如下方式显示:
AProp1A,AProp1B:第一件套装物品装备后显示
AProp2A,AProp2B:第二件套装物品装备后显示
AProp3A,AProp3B:第四件套装物品装备后显示
AProp4A,AProp4B:第五件套装物品装备后显示
AProp5A,AProp5B:第六件套装物品装备后显示

当套装中第四件物品被装备上时,其上的绿色属性按照如下方式显示:
AProp1A,AProp1B:第一件套装物品装备后显示
AProp2A,AProp2B:第二件套装物品装备后显示
AProp3A,AProp3B:第三件套装物品装备后显示
AProp4A,AProp4B:第五件套装物品装备后显示
AProp5A,AProp5B:第六件套装物品装备后显示

当套装中第五件物品被装备上时,其上的绿色属性按照如下方式显示:
AProp1A,AProp1B:第一件套装物品装备后显示
AProp2A,AProp2B:第二件套装物品装备后显示
AProp3A,AProp3B:第三件套装物品装备后显示
AProp4A,AProp4B:第四件套装物品装备后显示
AProp5A,AProp5B:第六件套装物品装备后显示

当套装中第六件物品被装备上时,其上的绿色属性按照如下方式显示:
AProp1A,AProp1B:第一件套装物品装备后显示
AProp2A,AProp2B:第二件套装物品装备后显示
AProp3A,AProp3B:第三件套装物品装备后显示
AProp4A,AProp4B:第四件套装物品装备后显示
AProp5A,AProp5B:第五件套装物品装备后显示
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 02:00:19 | 显示全部楼层
Sets.txt        By Alkalund,Revised By Myhrginoc

总体属性

Index:与SetItems.txt中套装物品相链接的字串,用以将同一套套装物品组合在一起

Name:用于TBL文件中显示套装名称的字串

Version:0 = 可出现于D2原版及D2资料片,100 = 仅出现于D2资料片

Level:套装的等级,仅做注释用,游戏不读取

套装属性(于游戏中以暗金色显示):

PCode2a,PCode2b – PCode5a,PCode5b:这些列分别用于描述当不同的套装物品组装到一起时,其带来的新的组合属性,数字代表同套装中不同物品的件数,a/b代表满足条件后会获得的第一/二个属性;例如:PCode2a列的值表示当两件同套装物品组装到一起时,角色将获得的第一个额外属性;PCode4b列的值表示当四件同套装物品组装到一起时,角色获得的第二个额外属性;更详细的解说参见附录,该列值引自Properties.txt中的Code列

PParam2a,PParam2b – PParam5a,PParam5b:这些列分别与其前一列项对应,用于描述其所对应的各个属性参数,会用到诸如技能ID、属性ID、怪物ID、怪物类型ID等值,这里支持直接写入计算式

PMin2a/PMax2a,PMin2b/PMax2b –PMin5a/PMax5a,PMin5b/PMax5b:这些列分别与其PCode列对应,对应着各个可变属性的最小/最大值,需要注意的是有一些特殊属性的变量是在其代码里写入的(如CTC属性),关于此请参照Properties.txt和ItemStatCost.txt的引导文件

FCode1 – FCode8:这些列分别用于描述所有套装物品组装完成后所附加的八种额外属性,该列值引自Properties.txt中的Code列

FParam1 – FParam8:这些列分别与其前一列相对应,用于描述其所对应的各个属性参数,会用到诸如技能ID、属性ID、怪物ID、怪物类型ID等值,这里支持直接写入计算式

FMin1/FMax1 – FMin8/FMax8:这些列分别与其FCode列对应,对应着各个可变属性的最小/最大值,需要注意的是有一些特殊属性的变量是在其代码里写入的(如CTC属性),关于此请参照Properties.txt和ItemStatCost.txt的引导文件

*EoL:行结束符,该列值必须为0以免出错

附录:

套装属性是否起作用取决于角色穿齐了其中的多少件,有些属性在部分套装穿齐后即可出现,而有些则需要集齐全套。假设某套装由X件组成,则套装完成之前,至多能出现2*(X-1)个套装属性

PCode2a,PCode2b:任意两件套装组装起来即可出现的属性
PCode3a,PCode3b:任意三件套装组装起来即可出现的属性
PCode4a,PCode4b:任意四件套装组装起来即可出现的属性
PCode5a,PCode5b:任意五件套装组装起来即可出现的属性
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 02:00:35 | 显示全部楼层
SkillDesc.txt        By Ric Faith

前言:
SkillDesc是制作技能过程中的重要部分,它使Mod制作者可以用完全个性化的风格来描述其制作的技能,并且控制着各种技能在技能树上的位置及排列方式
本文件会用到的文件有:
Missiles.txt
MonStats.txt
Skills.txt
以及几个TBL文件:
String.tbl
ExpansionString.tbl
PatchString.tbl
注意:使用优先级顺序为PatchString > ExpansionString > String
也就是说同ID情况下,游戏将优先显示PatchString中的内容,其次为ExpansionString,再次为String,因此要想找出最新的字符串,应该按照以上的数据顺序进行检索

一些习惯称谓:
为了简化该引导文件并且使描述变得清晰,这里先介绍一些描述时会用到的习惯称谓:
字串:指任何TBL文件中的内容
技能树/技能页:各角色所使用的技能树
技能菜单:按下S键时显示的技能列表
人物状态栏:按下C键时显示的状态栏
选中的技能:设置为鼠标键的两个技能

SkillDesc:技能描述所对应的技能,引自Skills.txt里的技能名称

SkillPage:允许的取值范围是0-3,技能所在的技能页数,0 = 不在技能树上,1 = 底端的技能页,2 = 中间的技能页,3 = 顶端的技能页

SkillRow:允许的取值范围是0-6,技能在技能树上所在的行数,0 = 不在技能树上,1 = 顶行,6 = 底行,中间依次排列

SkillColumn:允许的取值范围是0-3,技能在技能树上所在的列数,0 = 不在技能树上,1 = 左边一列,2 = 中间,3 = 右边一列

ListRow:允许的取值范围是-1到4,技能显示在技能菜单里的行数,-1及其他值 = 不显示在技能菜单里,0 = 最底部一行,与普通攻击、反召唤等一起,1-3 = 从底部往上依次排列的三行,通常和SkillPage列的值相同,但不是必须,4 = 最顶上一行,与辨识、城镇传送等一起

ListPool:允许的取值范围为0-2,仅用于辨识卷轴和城镇传送卷轴,0 = 所有其他技能,1 = 辨识卷轴,2 = 城镇传送卷轴

IconCel:允许的取值范围为0-X(自定义);定义该技能所使用的技能图标(两个,一个是该技能可用时的图标,另一个是该技能不可用时的图标),这里填写的值是可用时的图标,加一则代表不可用时的图标;技能图标常常是成对使用的,因此制作自己的技能图标时,务必要将其按照正确的顺序放置;
如果某技能是角色使用的技能,则其图标来自:
Data\global\ui\spells\XXskillicon.dc6,这里的XX代表角色类型:
XX        角色类型
Am        亚马逊
As        刺客
Ba        野蛮人
Dr        德鲁伊
Ne        死灵法师
Pa        圣骑士
So        法师
如果某技能并非角色技能,则其图标来自:
Data\global\ui\spells\skillicon.dc6

Str Name:技能名称字串,用于技能树、技能菜单及选中的技能
Str Short:技能描述字串,用于技能菜单及选中的技能
Str Long:技能描述字串,用于技能树
Str Alt:技能名称字串,用于角色状态栏
Str Mana:通常填入StrSkill3或者留空;即使某技能并不耗费法力,这里的字串也不会显示法力耗费值为0;StrSkill3会显示“法力耗费:”字样,你也可以填入其他表达法力耗费含义的字串;唯一的例外是,德鲁伊的乌鸦技能有其独有的字串:“每只乌鸦消耗法力:”

DescDam:允许的取值范围为1-24或者留空;用于技能描述里的伤害计算,以下是一个关于DescDam取不同值的列表:
DescDam                描述
1        普通攻击
2        踢击
3        投掷
4        左手投掷
5        按照技能实际伤害值
6        带爆裂箭矢的技能
7        同时增加伤害和命中率的技能
8        地狱火类型的伤害
9        炽烈之径,火风暴等
10        盾击
11        复仇
12        祝福之锤
13        双手投掷
14        饥饿
15        连续踢击
16        面杀伤踢击
17        充能一击
18        凤凰攻击
19        双手武器攻击技能
20        刺客的聚气技能
21        闪电球
22        带爆裂效果的标枪
23        狂犬病
24        刃之怒
有些技能有其特殊的伤害描述,因此你需要从以上列表中找到一个和你的技能效果最相似的技能,并找出它们的不同之处;否则一般来说都使用5

DDam Calc1,DDam Calc2:对于会增加伤害的技能,需要使用这两列来计算其具体伤害,最终的伤害通过以下公式给出:
最终伤害 = 初始伤害 * (100 + DDam Calc1)/100 + DDam Calc2
于是,如果技能有能够百分比增强伤害的因子,则填入DDam Calc1,如果有能够按数值增加伤害的因子,则填入DDam Calc2

PXDmElem,PXDmMin,PXDmMax(这里的X代表1-3):仅用于刺客的聚气技能描述:
PXDmElem = 该聚气的元素伤害类型
PXDmMin = 该聚气的最小伤害值
PXDmMax = 该聚气的最大伤害值

DescAtt:允许的取值范围为1-5,或者留空,用于描述技能的准确率增量,列表如下:
DescAtt        描述
1        增加攻击准确率
2        增加攻击准确率
3        投掷
4        左手投掷
5        最后一击施展的踢击
这里的1和2没有差别;你应该从以上列表中找到一个最适合自己技能的值

DescMissileX(这里的X代表1-3):如果该技能的伤害、持续时间及其他数值全部取自其发射的飞射物,那么DescMissile1中应该填写主要飞射物的ID;DescMissile2-3目前仅用于刺客的聚气技能,不过也可以在其他技能的这两列里填写其他的飞射物

下面是整个文件中最繁琐的部分,这里不按文件中的顺序介绍,否则会非常罗嗦
文件中有三个主要的描述段,Desc,Dsc1和Dsc2;首先按照它们显示的地方不同来给这三个描述段分类:
Desc:显示在技能树、技能菜单和选中的技能上
Dsc1:显示在技能树、技能菜单和选中的技能上
Dsc2:显示在技能树上
接下来,它们显示内容也有所不同:
在技能菜单和选中的技能上:Desc和Dsc2仅显示当前等级的技能状态
在技能树上:
Desc显示当前等级和下一等级的技能状态
Dsc2显示当前技能状态
Dsc3显示当前技能状态(目前被用来显示技能加成)
更多关于技能状态显示的内容,请参考附录A

我们将以下的列分组,每一组都由DescLine,DescTextA,DescTextB,DescCalcA,DescCalcB五列搭配以不同的数字组成;任何一个空白的组列将被游戏无视,因此你可以将要填写的内容填入任何一个列组里,其余的会自动跳过
现在我们以其中一组为例来介绍各列的功能,其他同理
DescLine:允许的取值范围是1-75,或者留空,这里定义了技能描述的格式,包括取哪些数值以及如何排列这些数值和文字;详细情况请看后面的例子,所有DescLine取值的用法详见附录B

DescTextA,DescTextB:可填充或者留空的字串,有些DescLine取值是不会加载这里填写的内容的,我们应当选用最接近需求的DescLine取值来决定是否在此填入字串

DescCalcA,DescCalcB:可填充数值或表达式,或者留空;与前面两列相同,因此应当在选用适当的DescLine取值之后再来考虑这里

附录B及以下例子中使用以下标示符:
S1 & S2分别表示DescTextA和DescTextB的值,S意为字串
C1 & C2分别表示DescCalcA和DescCalcB的值,C意为计算式

例一:
DescLine = 3的格式为S1C1S2
现定义:
S1 = Good
S2 = Nothing
C1 = 4
C2 = 365
则最终显示结果将是Good4Nothing,中间没有空格,因为这里只是简单的把许多字符串连接在一起,C2不出现在该格式中,因此不显示
如果S1留空,则结果是4Nothing
如果S2留空,则结果是Good4
如果C1留空,则结果是GoodNothing

让我们来看一些复杂点的例子
例二:
有些DescLine的取值不需要字串或计算式,这里是一个关于毒素伤害的例子:
DescLine = 14的格式为:
毒素伤害:X-Y
持续Z秒
这里的DescLine出现了两行显示,不过这是由硬代码规定的,我们不去管它;DescLine = 14时游戏会读取Skills.txt中的EMin、EMax和ELen列值并进行一些计算:
剧毒新星等级为1时,从Skills.txt中得到:
HitShift = 4
EMin = 14
EMax = 25
ELen = 50
首先,ELen = 50,即50桢,25桢为1秒,因此剧毒新星持续时间为2秒
接下来,按照HitShift的定义(暴雪使用8位精度来计算生命、法力和耐力),毒素伤害将被除以2^4 = 16
接下来计算最终的显示伤害:
X = EMin*ELen/16 = 43
Y = EMax*ELen/16 = 78
Z = ELen/25 = 2
最后有一点要注意:暴雪会将每个值向下取整,就是说3/4 = 0,41/40 = 79/40 = 1
于是最终的显示为:
毒素伤害:43-78
持续2秒

结论:
关于技能的描述事实上是很复杂的,并且有时会出点小问题;我的建议是:你可以让你的技能描述看起来非常出色,但万一它出什么问题了,还是试着用一些常用格式效果好;有些技能描述格式没有被技能使用,是尝试了很多数据才发现的,有些仅被某一个技能使用了因此我们说它是被指定的,但实际上它或许也可用于其他技能;我想说的是,最基础的那几种格式也许就够用了,当然你自己可以写点特殊的格式来取代现在那些硬代码规定好的,但现有的基础格式对于一个Mod制作者来说足够了


附录A——技能树上的技能描述格式:
-------------------------------------------------------------------
Str Name
Str Long

(这里是所有Dsc2的内容)

当前技能等级:X
(这里是所有Desc的内容)

下一等级:X+1
(这里是所有Desc的内容)

(这里是所有Dsc3的内容)

-------------------------------------------------------------------
前面说过,技能加成使用的是Dsc3,因此它将被显示于技能描述的最下方;要仅为技能的当前等级显示某字串,应使用Dsc2,要为当前等级及下一等级显示,应使用Desc

附录B——所有DescLine取值列表:
一些注释:
DescLine:DescLine列的值
Formula:输出的格式
Used:是否被某技能所使用
Calc/Desc = 与S1,S2,C1,C2没有直接关联的一些数据
Elem:该计算格式所用于的元素类型
Reference:用到的txt文件名,例如Skills、Missiles等
Specific:用到该格式的技能
主要内容请参见Appendix B.txt,用电子表格工具打开

附录C——颜色代码:
对于DescLine = 40而言,可填写入C1列的颜色代码:
0 = 浅灰色(普通的文本颜色)
1 = 红色
2 = 亮绿色(套装物品)
3 = 蓝色(魔法物品)
4 = 金色(暗金物品)
5 = 深灰色(无形物品或有孔物品)
6 = 透明(文本不显示……)
7 = 棕褐色
8 = 橙色(手工物品)
9 = 黄色(黄金物品)
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

706

主题

830

元宝

2347 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

积分
830
 楼主| 发表于 2020-1-15 02:00:50 | 显示全部楼层
Skills.txt                By Nefarius

很长一段时间以来(1.00直到1.09)Skills.txt只是一个很小的文件,其中仅含有很少的一些内容(主要是技能使用了何种动画,传递的参数以及造成的伤害等),其他部分都由硬代码去折腾了;然而到目前,虽然各种技能作用的方式(函数运算)仍旧写在硬代码中,但其他的所有效果都可以在该文件中找到对应内容并加以编辑,包括何种技能调用哪一个函数来实现;于是该文件成为了D2中非常复杂的,几乎是最大的文件之一:它包含了256列,也就是MS Excel所支持的最大数量;本引导文件并非旨在为每一列的功能都提供一份100%精确的说明文件,并且这也是不可能做到的(因为有些列的功能非常依赖于其技能函数的数据库实现方式);同时该文件也不会对其中的功能实现语法给出过多解释:Xeno就这些语法以D2特有的分析方式写过一篇非常全面的引导文件,因此这里没有必要重复

一些概要类设定
Skills:技能ID指针,用于CharStats.txt,Missiles.txt,MonStats.txt,SkillDesc.txt以及Skills.txt文件本身,用来引用该技能;这个ID指针同样用在AutoMagic.txt,Gems.txt,MagicPrefix.txt,MagicSuffix.txt,QualityItems.txt,Runes.txt,SetItems.txt,Sets.txt以及UniqueItems.txt里,但在这些文件中系统的分析机制存在bug:带有空格符的技能名称不会正常表达,所以在这些文件中最好使用技能的实际ID数字而不是此处的ID指针;另外请注意不要让两个技能拥有相同的ID值,否则除第一个技能外所有其它技能都将被系统无视

ID:技能的实际ID值,亦即ID指针实际指向的值,这里的值不可重复;游戏允许最多可以有32767种技能,但不是所有这些都能被表达在物品上,除非去修改ItemStatCost.txt文件的相关内容;另外,编码属性(CTC属性以及聚气属性)所支持的ID最大值只能到1023;注意这里有些ID是被硬代码所引用的,所以不要在文件中随意移除某些技能

CharClass:该技能属于哪一个角色类型,此列控制着该技能使用何种DC6图标库中的哪个技能图标,以及该技能将得到哪些与技能有关的属性的加成(例如+亚马逊技能等级等等);所有角色必须拥有相同数量的技能,否则仅拥有技能数量最多的那个角色可以进入游戏,其他角色将出错(因为游戏为每一个角色存档都准备了相同数量的技能状况存档空间,因此拥有技能少的角色存档将被看作是损坏存档);要避免这个问题可以给技能少的角色随意指定一些其他的技能,即使它们不出现在技能树上,并且无法使用也无所谓;此列留空则表示该技能不属于任何角色

Skilldesc:ID指针,引自SkillDesc.txt,控制着该技能在角色面板上所关联的外观,例如技能图标文件,技能上的说明文字以及其伤害/准确率如何显示在角色控制面板上;千万不要将同属某角色的两个技能指向同一外观,否则将导致崩溃

一些服务器端的技能运算函数
以下这些函数在1.00-1.09版D2中均以硬代码表的形式出现,而1.10版的Skills.txt文件为这些函数索引提供了软代码修改功能;这些函数是各个技能的核心内容,它们控制着该技能的各种特性:例如该技能会改变何种属性、使用何种算法、是否使用程序代码硬性规定的参数,以及某飞射物的发射方式等等诸如此类
SrvStFunc:服务器端发生函数,当你右击鼠标或者Shift+左击鼠标以使用某技能时,在服务器端运行的函数

SrvDoFunc:服务器端终止函数,即当服务器端的发生函数运行完毕后启动的一个结束函数,假如你的鼠标始终保持按下状态,那么该函数可能被不断重复调用抑或周期性的调用

PrgStack:聚气技能会用到的一个布尔值,1 = 其聚气效果可以叠加(例如焰拳、雷电爪、寒冰刃),0 = 每次使用该聚气技能都会覆盖掉原先的聚气效果(例如凤凰攻击);因此假如将凤凰攻击的该值设定为1,则游戏中可以同时释放凤凰攻击的三种最终效果

SrvPrgFunc1:使用最后一击来释放一级聚气时服务器端所运行的函数
SrvPrgFunc2:使用最后一击来释放二级聚气时服务器端所运行的函数
SrvPrgFunc3:使用最后一击来释放三级聚气时服务器端所运行的函数

PrgCalc1:一级聚气时服务器端函数所使用的运算式(该列也用于震波网络和刃之怒,因为这些技能的实现函数会用到它)
PrgCalc2:二级聚气时服务器端函数所使用的运算式
PrgCalc3:三级聚气时服务器端函数所使用的运算式

PrgDam:与硬代码规定的某些递增属性相关,1 = 与PROGRESSIVE_DAMAGE共同作用,2 = 与PROGRESSIVE_STEAL共同作用,3 = 与PROGRESSIVE_OTHER(该属性未使用)共同作用,4 = 与PROGRESSIVE_FIRE/COLD/LIGHTNING共同作用;要想增加新的递增属性就必须扩展该处所链接到的相应函数列表

一些服务器端关于飞射物的设置
以下这些列控制服务器端该技能发射出的飞射物种类,这些与玩家在屏幕上看到的那些飞射物不尽相同,但客户端的飞射物设置必须与此相匹配,以避免玩家在游戏时遇到一些尴尬的问题:如果双方不匹配的话游戏并不会出错,但会出现一些怪异的事情比如被隐形的东西击中或者看到什么怪物莫名其妙的死亡……

SrvMissile:该技能的服务器端发生函数运行时出现的一级飞射物,但该飞射物并非由此函数产生,亦即发射此飞射物与服务器端函数运行是两个相互独立的事件

DecQuant:此处为一个布尔函数,表示是否该技能每次运行发生函数时都会减少其所使用到的物品/弹药的数量:例如对于炮轰技能,假如此处设定为1,则每次炮轰都会消耗与其发射次数相同数量的箭矢

Lob:也是布尔函数,1 = 该飞射物将采用抛物线轨迹发射,0 = 采用直射方式;抛物线形式的飞射物将会在其接触到鼠标点击处的地面时立即消失;在这里设置为抛物线形式的飞射物仅仅是视觉效果,假如其本身的性质并非抛出类型,则其真正伤害敌人时仍旧使用最初的方式,例如直线杀伤等;相关内容请编辑Missiles.txt的内容

SrvMissileA:服务器端发射的第一种二级飞射物(该飞射物的作用方式将取决于该技能的服务器端函数)
SrvMissileB:服务器端发射的第二种二级飞射物(该飞射物的作用方式将取决于该技能的服务器端函数)
SrvMissileC:服务器端发射的第三种二级飞射物(该飞射物的作用方式将取决于该技能的服务器端函数)

一些由服务器端控制的修饰图像
SrvOverlay:各技能修饰图像一般由客户端控制,但仍有一些由服务器端代码控制的修饰图像,主要是服务器端终止函数运行时,加于敌方身上的效果,包括加于敌方身上的近战效果,不同怪物所受到的技能亮化影响(如内视会使怪物身上出现闪烁光芒)、诅咒效果以及天堂之拳下落击中敌人的部分;该处引自Overlays.txt中的ID指针,在服务器端终止函数运行时,此处的修饰图像起作用

光环/诅咒/亮化效果相关设定
以下列不一定都要被光环/诅咒/亮化技能所使用,例如,有些技能会在某个范围内自动搜寻受到其影响的目标,以及一些区域效果魔法也会使用到这里的设置
AuraFilter:此处是一个二进制筛选参数,用以描述何种单位会受到该技能的影响;这里的筛选参数对各种技能所筛选出的作用目标也是不同的,很大程度上它取决于服务器端的该技能函数用何种算法去自动找寻其能够作用的目标;此列用于大多数在其作用范围内自动找寻目标的技能,以下是一些技能在该处的值:
0001000010110000011 – 内视、嘲弄
0001100010110000011 – 慢速箭
0001010010110000011 – 闪电之怒、信念、龙卷风
0001000011110000011 – 静态力场
0000000000000000011 – 伤害加深、削弱、攻击反噬、偷取生命、衰老、降低抵抗(可作用于Boss)
0000000000000000010 – 微暗灵视、恐惧、迷乱、吸引、残酷吓阻(不可作用于Boss)
0010010000000000011 – 力量、祝福瞄准、活力、反抗、抵抗火焰、抵抗冰冷、抵抗闪电、救助、专注、净化、狂热、祈祷、刺针、防御诅咒、鲜血诅咒
0010010000000000001 – 冥思
0001010011110000011 – 圣火、神圣冲击、飓风
1001010001010000011 – 神圣冰冻
0001110011110000110 – 庇护所
0001010010110000111 – 天堂之拳
0000001000100000010 – 救助
1100000000000000000 – 战嗥
0001110000000000011 – 魔影斗篷
0001000001110000011 – 心灵爆震、刃之怒
0001000011100001011 – 寒冰刃
0010000000100000011 – 橡木智者光环、狼獾之心光环、棘灵光环

AuraState:该光环/诅咒/亮化技能(事实上对于任何技能都适用)施展(使用)后使其施展者(使用者)本身所处的状态,被强化技能强化过的单位也会处于此状态,这里的值引自States.txt中的ID指针(需要注意的是最好不要有某几个技能的此值相雷同,否则,当这几个技能同时作用于某角色时,该角色的状态将不可预知)
AuraTargetState:该光环/诅咒/亮化技能(事实上对于任何技能都适用)施展(使用)后使其被作用者所处的状态,这里的值引自States.txt中的ID指针(需要注意的是最好不要有某几个技能的此值相雷同,否则,当这几个技能同时作用于某单位时,该单位的状态将不可预知)

AuraLenCalc:此处支持填写数值或者表达式,用以控制该光环/诅咒/亮化技能的持续时间(以桢为单位);不过真正的光环类技能不使用此列,它们是周期性刷新状态的
AuraRangeCald:此处支持填写数值或者表达式,用以控制该光环/诅咒/亮化技能的作用范围,有些其他种类的技能也会用到此列的定义,例如闪电之怒,用于计算释放出闪电球时的感知范围和杀伤半径

AuraStat1-6:该光环/诅咒/亮化技能所能改变的属性,这里的值引自ItemStatCost.txt中的ID指针
AuraStatCalc1-6:与其前一列相对应,表示该光环/诅咒/亮化技能所改变的属性的具体数值,此处填写值范围为-2147483647到2147483647,范围之外的数值将采取循环计数

AuraEvent1-3:此处表示何种事件发生在该光环/诅咒/亮化技能的施展者/实际使用者身上时,该光环/诅咒/亮化技能会做出反应,这里的值引自Events.txt中的ID指针
AuraEventFunc1-3:此处与其前一列相对应,表示该光环/诅咒/亮化技能对相关事件做出反应所运行的事件函数,所有事件函数列表请查阅相关资料,需要注意的是这些事件函数中的大多数在被技能调用时都会有些小问题

AuraTgtEvent:通常无用;该列功能与AuraEvnet列相仿,但作用于技能的被作用者
AuraTgtEventFunc:通常无用;该列功能与AuraEventFunc列相仿,作用于技能的被作用者

一些技能的被动属性设定
某技能是否是真正的被动技能要取决于其Passive列的布尔函数值是否为真,真正的被动技能当然使用这些列的值作为其属性,如果不是真正的被动技能,则以下这些列的值被用于服务器端的函数运算,用以计算该技能的所谓“第二被动加成”,这些列会成为前面光环/诅咒/亮化技能列的扩展属性,或者被用来计算召唤物的属性,等等
PassiveState:这里表示处于该被动技能作用下的单位所处的状态名称,此处值引自States.txt中的ID指针(最好不要有某几个技能的此值相雷同,否则,当这几个技能同时作用于某角色时,该角色的状态将不可预知)

PassiveIType:此处填入ItemTypes.txt中的ID指针并与其相对照,用以判定使用何种物品时可以获得该技能的被动属性,用于武器支配技能等(此列值不会对非武器支配类属性起作用,换句话说,它仅对passive_weaponblock,以及六种passive_mastery_XXX类属性起作用);武器支配技能的参数并非固化于硬代码中

PassiveStat1-5:此处说明该被动技能定义了何种被动属性,这里的值引自ItemStatCost.txt中的ID指针
PassiveCalc1-5:此处支持数值或表达式,与其前一列相对应,用以说明各属性的具体值;此处的值范围是-2147483647到2147483647,超出该范围的值将采用循环计数

PassiveEvent:通常无用,与AuraEvent列的用途类似
PassiveEventFunc:通常无用,与AuraEventFunc的用途类似

一些召唤技能的设定
附加于召唤物的特殊属性可以通过MonEquip.txt/MonProp.txt文件或AuraStat/PassiveStat列进行设置
Summon:此处说明该技能召唤出何种召唤物,这里的值引自MonStats.txt中的ID指针

PetType:此处控制该召唤物属于哪个组,其效果包括屏幕左上角显示的图标,该召唤物是否能与其他召唤物并存(例如多种石魔不能共存),以及该召唤物的行动方式等等;这里的值引自PetType.txt中的ID指针

PetMax:此处支持数值或表达式,表示一个角色可以同时拥有多少个该召唤物,留空意为无限制

SumMode:当你召唤出该召唤物时,其使用的动画模式;例如假设要召唤一个僵尸,并且看起来像是僵尸从土里爬出来的动画,则这里应该使用S1;不过很多情况下这里使用NU(无多余动画,突然出现)为好,因为大部分单位没有与S1相匹配的动画

SumSkill1-5:此处控制该召唤物所能使用的技能,但事实上多被用来为召唤物提供一些方面的加成(例如增加火蛇的伤害),某召唤物是否使用该技能完全取决于其AI设定;在召唤物所能使用的各种AI里面最好的当数ShadowMasterAI,而NecroPetAI则完全不可用(其定义于硬代码中);另外召唤物所能使用的技能也可以在MonStats.txt中定义

SumSk1-5Calc:这些列与其前一列相关联,支持数值或者表达式,用以控制各召唤物所使用的技能等级

SunUMod:该列非常出色,它可以使召唤物获得金怪的属性,这意味着使用这一列,你可以使你的召唤物拥有闪电强化或者灵气加强属性;这里的值引自MonUMod.txt中的ID值;在这里给召唤物赋予的属性效果比起真正的金怪要差一些;另外当你取消召唤时,这些召唤物的名字将以随机金怪的名字显示

SumOverlay:当召唤物被召唤时所显示的修饰图像(显示于召唤物而不是召唤者);这里的值引自Overlays.txt中的ID指针

一些声光效果设置
列名中带有Sound/Snd的那些是与音效有关的,其值引自Sounds.txt;列名中带有Overlay字样的列与显示效果有关,其值引自Overlays.txt
StSuccessOnly:布尔函数,用于控制当施展技能的动作被敌人的攻击而打断时,是否继续播放完该技能的施展音效和视觉效果,1 = 继续,0 = 中断

StSound:当该技能的发生函数运行时,游戏所播放的音效,无视使用技能的角色类型
StSoundClass:当该技能的发生函数运行时,游戏所播放的音效,该音效只有当CharClass列中规定的角色使用该技能时才播放,以避免出现一些不合时宜的声音
StSoundDelay:一个未知布尔类型函数;一个合理的猜想是1 = 当该技能发生函数运行完毕后开始播放音效,0 = 在该技能发生函数运行同时开始播放音效

WeaponSnd:当该技能的发生函数运行时,该布尔值控制是否播放使用该技能时身上装备着的武器的相关音效,1 = 播放,0 = 不播放

DoSound:每次该技能的终止函数运行时,游戏所播放的音效,对于白热这样的技能而言,该音效将在每次挥击落下时播放
DoSound A:此列及下一列的功能取决于该技能所关联的终止函数,其控制范围涵盖了每次攻击后的特殊音效,以及召唤出的召唤物音效等各个方面
DoSound B:此列及下一列的功能取决于该技能所关联的终止函数,其控制范围涵盖了每次攻击后的特殊音效,以及召唤出的召唤物音效等各个方面

TgtOverlay:该技能的终止函数运行一次之后,为该技能的攻击对象所做的修饰图像;对于白热这样的技能而言,这意味着第一次挥击将不会为其攻击的怪物做修饰图像,而之后每次挥击都会修饰之
TgtSound:该机能的终止函数运行一次之后,游戏播放的音效(发自被攻击者);对于白热这样的技能而言,这意味着第一次挥击后不会播放其攻击的怪物的声音,而之后每次挥击都会播放

PrgOverlay:此列功能取决于该技能所关联的运行函数;对于聚气技能而言,该列显示的是对该聚气技能聚气图形的修饰图像,对于其它如飓风之类的技能,该列控制的是该技能激活时的修饰图像
PrgSound:与上一列的功能类似,取决于该技能关联的函数,它用于播放每次聚气的声音或者飓风激活时的音效,等等

CastOverlay:当某单位使用该技能时所关联的修饰图像;该修饰图像当且仅当该技能被成功施展出来之后(并非技能发生函数运行,而是该技能的相关代码开始运行)绘制
CltOverlayA:这列通常与CastOverlay列的功能相同,但取决于该技能使用何种函数
CltOverlayB:这列通常与CastOverlay列的功能相同,但取决于该技能使用何种函数

一些客户端的技能运算函数
这里的函数在1.00-1.09时期都是由硬代码规定的,但1.10中被放置在了txt文件中;服务器端的运算函数将决定显示在玩家显示器上的内容,因此最好保证服务器端运算与客户端运算的同步,否则有些技能的实际效果将与其显示效果完全不符
CltStFunc:客户端发生函数,当你右击鼠标或者Shift+左击鼠标以使用某技能时,在客户端运行的函数

CltDoFunc:客户端终止函数,即当客户端的发生函数运行完毕后启动的一个结束函数,假如你的鼠标始终保持按下状态,那么该函数可能被不断重复调用抑或周期性的调用

CltPrgFunc1:使用最后一击来释放一级聚气时客户端所运行的函数
CltPrgFunc2:使用最后一击来释放二级聚气时客户端所运行的函数
CltPrgFunc3:使用最后一击来释放三级聚气时客户端所运行的函数

客户端的一些飞射物设置
以下这些列控制客户端该技能发射出的飞射物种类,这些并不依赖于服务器端的相关代码,但服务器端的飞射物设置必须与此相匹配,以避免玩家在游戏时遇到一些尴尬的问题:如果双方不匹配的话游戏并不会出错,但会出现一些怪异的事情比如被隐形的东西击中或者看到什么怪物莫名其妙的死亡……

CltMissile:该技能的客户端发生函数运行时出现的一级飞射物,但该飞射物并非由此函数产生,亦即发射此飞射物与客户端发生函数运行是两个相互独立的事件

CltMissileA:服务器端发射的第一种二级飞射物(该飞射物的作用方式将取决于该技能的服务器端函数)
CltMissileB:服务器端发射的第二种二级飞射物(该飞射物的作用方式将取决于该技能的服务器端函数)
CltMissileC:服务器端发射的第三种二级飞射物(该飞射物的作用方式将取决于该技能的服务器端函数)
CltMissileD:服务器端发射的第四种二级飞射物(该飞射物的作用方式将取决于该技能的服务器端函数)

客户端技能计算
CltCalc1-3:这些列用于客户端的技能函数中,以实现一些特殊的功能,具体何种功能则取决于其函数的作用;这里支持数值或表达式;

杂项设置I
Warp:未知布尔函数值,仅用于几个瞬间移动的技能,但改变它的值对技能效果没有影响

Immediate:布尔函数,控制当激活该灵气时其效果是否立刻应用,1 = 是,0 = 否,并且取决于该技能PreDelay列的值;一般来说为角色提供某些属性的灵气此项为1,某些对怪物起作用的灵气(如信念)此项为0

Enhanceable:未知布尔函数值,该值并不影响某技能从物品中得到加成,因此似乎无用

AttackRank:此列控制当该技能用在某怪物身上时,它会做出什么反应;例如被元素伤害光环击中的怪物是否会反击,等等;该值越高,怪物针对该技能的攻击进行报复行为的几率就越大,0会使怪物无视该项技能

一些技能对于装备的使用限制
NoAmmo:该布尔函数控制角色是否需要弹药以使用该技能,该列值与DecQuant列共同作用以定义一些飞射性技能的属性,例如魔法箭,此列值为0,则不需要弹药亦可发射

Range:此处是一个选择函数,有四个有效选项,控制着角色该如何施放该技能:
None = 无任何限制,属于法术类
Rng = 该技能属于远程攻击技能(标枪技能、弓和十字弓技能)
H2h = 该技能属于近身攻击技能(如重击、牺牲等)
Both = 该技能可被远程攻击使用也可被近身攻击使用

WeapSel:此列控制使用该技能时应当如何用装备进行攻击:
留空 = 该技能无须特殊途径去操作(即默认的右手拿武器)
1 = 必须使用左手武器
2 = 可以使用左手/右手/两把武器
3 = 必须使用两把武器
4 = 不使用武器
注意:4已经被硬代码限制,仅用于盾击和一些踢击技能

IType1-3:使用该技能所需的物品类型(仅限角色的右手装备),该值引自ItemTypes.txt中的ID指针

EType1-2:禁用该技能的物品类型(即使该装备也出现在允许使用的列表中也会被禁用,仅限角色的右手装备),该值引自ItemTypes.txt中的ID指针

ITypeb1-3:使用该技能所需的物品类型(仅限角色的左手装备),该值引自ItemTypes.txt中的ID指针

ETypeb1-2:禁用该技能的物品类型(即使该装备也出现在允许使用的列表中也会被禁用,仅限角色的左手装备),该值引自ItemTypes.txt中的ID指针

一些动画设置
Anim:角色使用该技能时游戏播放的动画模式,关于角色动画的详细列表请参考PlrMode.txt文件,一个例子:SQ代表顺序动作(Sequence);此处也定义了角色施放某技能的速率是以IAS计算还是FCR计算,对于顺序动作而言则决定于该顺序动作将使用何种动画(这里有些模式例如GH,一旦使用将导致游戏崩溃,因为这些模式无法被技能所使用)

SeqTrans:此列显然是个无用参数,也许本意是想定义角色在开始某顺序动作之前的动画模式,但实际未作用

MonAnim:本意是怪物使用该技能时游戏播放的动画模式,但怪物一般都使用MonStats.txt中定义好的动画,并且怪物无法使用角色的顺序动作动画,因此这里仅用于刺客的影子大师和影子战士——这两者使用刺客本身的动画;假如这里为影子大师和影子战士设置为xx,则它们的顺序动作也将使用MonStats.txt中定义的动画

SeqNum:这里是该技能使用的角色动画播放顺序的ID,前提是Anim列值为SQ;与怪物顺序动作不同,角色的顺序动作仍旧定义在D2Common.dll中的硬代码表内;以下是这些顺序动作ID(每个顺序动作都有其匹配的角色类型,但有些可匹配多个角色类型):
0 = 无顺序动作(使用此ID则施展技能的动画将在进行到一半时出现错误)
1 = 为戳刺技能使用
2 = 一个比较简单的顺序动作,起初用于牺牲(某些武器上会闪现光芒)
3 = 未使用的顺序动作(直接使用施展动画)
4 = 为冲锋技能使用
5 = 未使用的顺序动作(以前被用于用剑的圣骑士)
6 = 为地狱火技能使用
7 =未使用的顺序动作(直接使用施展动画)
8 = 为刺爆技能使用
9 = 一个简单的顺序动作,起初用于击退技能(有些故障)
10 = 用于旋风技能
11 = 用于双手挥舞技能
12 = 与6相同,用于闪电/连锁闪电技能
13 = 用于跳跃技能
14 = 用于跳跃攻击技能
15 = 用于双手投掷技能
16 = 用于双爪攻击
17 = 未用到的一个刺客顺序动作
18 = 用于极地风暴技能
19 = 未用到,起初用于龙爪技能
20 = 未用到的一个刺客顺序动作
21 = 用于飞龙在天技能
22 = 未用到,起初用于各种变形技能
23 = 用于刃之怒技能
编号为24以上的顺序动作仅出现在DLL文件中(事实上已证实的顺序动作编号已达到41,并且还可能有更多)

SeqInput:这列用于调整顺序动作循环时的间隔时间,一个例子:地狱火技能此处设置为100将使游戏在两个地狱火放出的间隙暂停;它的单位看起来像是毫秒而不是桢,这里的数值过小将使游戏顺序动画播放时跳过一些桢(仅客户端)

Durability:未知布尔函数(它不能调整某技能的持续时间,应该与顺序动作有关,因此为了确保安全请不要随意修改此值)
UseAttackRate:未知布尔函数(与动作速率并无关连,在游戏中也不起任何作用,目前看来更像是以前版本的残留参数)

一些关于瞄准敌人的设置
看起来以下这些列的含义非常直接非常有用,但很遗憾,事实上不是这样的;某技能何时以何单位作为攻击目标主要取决于其技能函数,而这里的这些参数只是次要选项

LineOfSight:这里看起来是个二进制标志选项,但游戏仅仅用到了一个位:100;它控制着该技能是否可以在角色视野所及的地方施展,而不受地形限制;举例而言,对于某召唤技能,这里设置为4(100)则意味着你无法隔墙召唤某生物,如果设置为空则不可以

TargetAbleOnly:未知布尔函数,坦白的说这个值似乎是无用的
SearchEnemyXY:未知布尔函数,此值经常与前一列值取逻辑与,看起来也似乎没什么用

SearchEnemyNear:布尔函数,用于控制该技能是否可以自动找寻目标(按下Shift+鼠标左键,然后你的角色就可以不停的自动杀人直到你松手……并且该技能对于尸体相关技能也会自动寻找尸体来施展……);这个值可以对任何技能起作用,所以请不要滥用,否则它将使D2变得太简单太简单,一进游戏你甚至用不着瞄准,只要随便按下鼠标然后……

SearchOpenXY:布尔函数,当设定为1时,该技能将以地图上的空白处作为其打击目标(具体打击何处当然要取决于该技能产生的效果半径,如火墙、陨石、暴风雪);系统认为两个单位不能同占一块地图(飞射物也是单位的一种),因此如果某种此值为1的技能效果在某个已被占用的地图块上产生,则游戏将不显示其效果,另外如果释放该类型技能的地方没有空白地图块,则此次技能施展也将失败

SelectProc:该列与下一列共同作用,用以控制你可以利用何种尸体,有6种不同选项:
1 = 为尸体爆炸技能所使用
2 = 用于召唤骷髅和召唤骷髅法师
3 = 用于复活
4 = 用于寻找药剂
5 = 用于寻找物品
6 = 用于残酷吓阻
该值功能并不完全,有其硬代码规定的内容,例如将复活的该值改成1,则仅能使金怪的尸体显示高亮,但不能施展复活技能

TargetCorpse:布尔函数,用于控制该技能是否可通过点击尸体而施放(并不控制技能效果是否对尸体起作用,而只是控制鼠标点在尸体上即可施放该技能,如同指在怪物身上那样;想要其对尸体产生某些效果请编辑其技能实现函数)
TargetPet:布尔函数,控制该技能是否可通过点击召唤物或者雇佣兵而施放(并不控制技能效果是否对雇佣兵或召唤物起作用,而只是控制鼠标点在雇佣兵或召唤物身上即可施放该技能,如同指在怪物身上那样;想要其对尸体产生某些效果请编辑其技能实现函数)
TargetAlly:布尔函数,控制该技能是否可以通过点击其它玩家而施放(并不控制技能效果是否对其他玩家起作用,而只是控制鼠标点在其他玩家身上即可施放该技能,如同指在怪物身上那样;想要其对尸体产生某些效果请编辑其技能实现函数)
TargetItem:布尔函数,控制该技能是否可以通过点击地上的物品而施放(并不控制技能效果是否对地上的物品起作用,而只是控制鼠标点在地上的物品上即可施放该技能,如同指在怪物身上那样;想要其对尸体产生某些效果请编辑其技能实现函数)

TgtPlaceCheck:布尔函数,用于复活怪物的技能,但目前不清楚其具体用途

杂项设置II
AttackNoMana:布尔函数,当该角色施展该技能时突然没法力的情况下是否能够以一次普通攻击来代替之,1 = 是,0 = 否

与物品事件相关联的一些技能设定
以下列的参数仅当物品上的CTC(Chance To Cast)事件函数引发该技能时,用以决定该技能效果的作用规则;这些参数不会影响到正常施展的技能效果;但是,它们之间的区别非常小以至于几乎看不出,所以该部分内容仅作参考(已验证一部分)
ItemEffect:服务器端的引发函数,这里控制当该技能被CTC属性触发时所调用的函数;留空意味着不调用任何函数,并且该技能也将不会被施展;一般来说这里的值最好取1,但有两种特殊情况,这里取36时将使该技能由敌方发出而不是物品装备者,另外这里还可以取151
ItemCltEffect:客户端引发函数,用以提供前一列所说到的CTC属性触发函数,这里以10和96分别匹配前一列的36和151函数

ItemTgtDo:未知参数
ItemTarget:选择函数,功能不明,似乎是某种技能目标选择机制:默认为0,但有些特殊的目标选择函数会用到这个值;1被用于强化技能,可以为友军施展;2被用于传送,用于选择某随机的空白地图块;3用于尸体爆炸等技能,类似选择尸体;4用于自动追踪类飞射物,如白骨之魂和天堂之拳

ItemCheckStart:未知布尔函数(仅有九头海蛇和骨牢的此列为1,其余均为0,貌似是在发生函数运行前进行某种检测)
ItemCltCheckStart:未知布尔函数(貌似与上一列的功能相近,仅有两种尸体爆炸技能的此列为1,用于检测发生函数运行是否成功,从而绘制相应的图样,以防止技能运行不成功但出现些不合理的图像)

ItemCastSound:当技能被物品事件触发时,游戏所播放的声音,以区别于普通技能施放的音效,该列值引自Sounds.txt中的ID指针
ItemCastOverlay:当技能被物品触发时,游戏所显示的修饰图像,以区别于普通技能的修饰图像,该列值引自Overlays.txt中的ID指针

一些技能点数设置和技能需求等级设置
SkPoints:此列用以说明每升一级该技能需要多少技能点数,支持数值或表达式

ReqLevel:将点数投资到该技能所需的最小人物等级
MaxLvl:该技能可通过投资技能点数所达到的最高等级(技能的实际最高等级(包括物品加成等效果)将由Experience.txt中的MaxLevel列控制,亦即实际最高等级等于人物等级)

ReqStr:将点数投资到该技能(仅限制第一个投资到该技能的技能点)所需角色的力量值,该功能始终有效,但不显示在游戏界面中
ReqDex:将点数投资到该技能(仅限制第一个投资到该技能的技能点)所需角色的敏捷值,该功能始终有效,但不显示在游戏界面中
ReqInt:将点数投资到该技能(仅限制第一个投资到该技能的技能点)所需角色的精力值,该功能始终有效,但不显示在游戏界面中
ReqVit:将点数投资到该技能(仅限制第一个投资到该技能的技能点)所需角色的体力值,该功能始终有效,但不显示在游戏界面中

ReqSkill1-3:这三列表示要投资该技能所必须先投资的几个前提技能,这里的值即为各前提技能的ID指针(Name列值)

与状态有关的一些限制
Restrict:选择函数,用以控制何种状态下该技能可用:0 = 仅可用于人形态,1 = 可用于变形状态和人形态,2 = 仅可用于后面三列所规定的状态下

State1-3:此列控制该技能将受到何种状态的限制,当且仅当前一列值为2时有意义,这里的值引自States.txt中的ID指针

技能延迟设置
Delay:该列支持数值或表达式,用于控制角色使用该技能之后有多少桢的技能延迟,此外该列还决定了在技能延迟状态下有哪些技能是不可用的:此列值不为0的技能均无法在技能延迟状态下使用;一般来说技能延迟状态始于该技能动画开始的那一桢,但如果技能在施放过程中被别人的攻击打断,则技能延迟计数器将重置

杂项设置III
LeftSkill:布尔函数,控制该技能能否出现在左手的技能菜单中(有些技能是无论如何设置都无法出现在左手技能菜单中的,特别是各种灵气;此类的还有各种诅咒和召唤技能)

RePeat:不明布尔函数,该函数与一些技能共同作用,用于重复调用其技能终止函数,直到玩家松开鼠标按钮(例如地狱火技能);但不能确认该值对于函数的具体影响

CheckFunc:该值包含一些ID值,以调用一个特殊列表中的函数,但其真实目的未知(看起来像是当技能主函数运行结束时调用的一些额外函数:1 = 所有使用弹药的技能,2 = 投掷(不包括亚马逊的标枪技能),3 =左手投掷,4 = 左手攻击,5 = 各种卷轴和书技能,6 = 双手投掷,以上,貌似是多人游戏中用来刷新某物品的数量)

关于法力需求的一些设置
这部分内容包含了各技能的法力需求,以及各技能如何消耗法力;为了不使这些解释变得复杂,这里给出一个各技能耗费法力值的公式,代入各列值进去就得到最终的结果;要知道各个值的具体含义以及公式中EffectiveShift的值请看以下的引导文件内容
法力耗费公式:
法力耗费 = max((Mana + LvlMana * (技能等级 - 1))* EffectiveShift,MinMana)

NoCostInstate:布尔函数,与前面一些状态限制列有关,控制角色处于变形状态时使用该技能是否无需法力值,例如用于德鲁伊处于狼/熊形态时变回人形,而不需要耗费法力

UseManaOndo:布尔函数,用于控制该技能是否实时消耗法力,通常这个值是无用的,但:假如使地狱火技能的该值为1,那么点击鼠标时将会耗费一些法力,此后即使一直按住鼠标施放地狱火,也不会使法力减少,直到最后把鼠标拿开时,技能终止函数运行完毕,于是本该在施展时就耗费的所有法力现在一下子就掉光了……

StartMana:施展该技能所需的法力最小值;角色的法力值小于此时其技能图标将始终显示为红色,但该值与角色施展该技能所需的法力值无关

MinMana:施展技能所耗费的最小法力值;这主要用于某些随技能等级升高法力耗费减少的技能,以免施展该技能所耗费的法力过少

ManaShift:该列控制该技能的法力耗费值计算精度(亦即计算单位),法力耗费值最大精度可以达到1/256(因为法力值在程序代码中也以1/256为存储单位);内部代码中这只是一个简单的移位运算,但是为了不至于描述过于复杂,这里列出了一份表格,用以列举ManaShift值与EffectiveShift值之间的转换关系,同时也便于理解
ManaShift        EffectiveShift
0        1/256 = 0.0039025
1        2/256 = 0.00781250
2        4/256 = 0.01562500
3        8/256 = 0.0312500
4        16/256 = 0.062500
5        32/256 = 0.12500
6        64/256 = 0.2500
7        128/256 = 0.500
8        256/256 = 1.00
9        512/256 = 2.00
10        1024/256 = 4.00

Mana:技能在等级为1时所耗费的法力值,需要乘以EffectiveShift值才是真实值

LvlMana:技能每升一级耗费的法力值增量,需要乘以EffectiveShift值才是真实值

一些杂项设置IV
Interrupt:布尔函数,用于控制当角色在施展某技能过程中受到攻击时,是否会中断此技能,亦即该技能是否为不可中断技能

InTown:布尔函数,用于控制该技能是否可以在城镇中施展;但在城镇中技能的伤害是不被计算的,并且技能也不会放出任何飞射物,因此仅用于某些非攻击性技能(注意光环类技能此处必须设置为1,否则游戏将出错)

Aura:布尔函数,判断该技能是否光环技能;这里控制技能按钮的颜色,光环类技能按钮的底色是金色的,该列还将引用PerDelay列的值

Periodic:布尔函数,判断该技能是否周期性技能;与上一列作用相仿,会引用PerDelay列的值以决定该周期性技能的运转周期;则在该技能状态的持续时间内,每隔PerDelay所规定的时间该技能函数就会运行一次;目前该函数用于刀刃之盾和雷云风暴技能

PreDelay:此处支持数值或表达式,控制光环技能或者周期性技能所使用的时间间隔;对于光环技能,每隔这段时间后都会对范围内的其它单位重新赋予一次;对于周期性技能,每隔这段时间之后都会重新运行一遍该技能的代码;此处的值以桢为单位

Finishing:布尔函数,控制该技能是否可作为聚气技能的最后一击技能,如果将某聚气技能的该值设定为1,则该聚气技能将无法施展

Passive:布尔函数,控制该技能是否是一个被动技能(从而应用前面定义于被动技能列中的相关内容),被动技能图标不会出现在左手或右手的技能菜单中

Progressive:布尔函数,控制该技能是否是一个聚气技能,若将某聚气技能的该值设为0则该技能将无效(聚气效果将在出现后立即消失)

General:未知布尔函数(仅用于通过CharStats.txt文件规定的几个技能,但在游戏中什么效果也没有)

Scroll:未知布尔函数(仅用于Books.txt文件中引用的几个技能,但在游戏中无实际效果)

服务器端技能计算及其参数
Calc1-Calc4:这些列控制着服务器端技能函数所直接调用的计算式,其功能是通用的,计算结果将被应用于最终技能函数效果的实现;如果该技能指定发射一些飞射物的话,其函数也会用到这里的计算式;这里支持数值和表达式

Param1-Param8:这些是需要直接传递给技能函数的特殊参量,或者是在SkillDesc.txt文件以及这里的计算式中所要用到的参量;这里仅支持数值

杂项设置V
InGame:布尔函数,控制该技能是否允许出现在游戏中,0 = 游戏中不会出现该技能

攻击准确率的相关设置
这部分内容将对各技能提供一些攻击准确率加成,但这里有Bug——所有对飞射攻击的准确率加成都无效,特别是对所有的弓箭类技能;这部分对准确率的加成按百分比计算而非数值
ToHit:该技能1级时对准确率加成的百分比

LevToHit:每升一级,该技能对准确率加成的百分比增量

ToHitCalc:这里支持数值或表达式,用于最终计算该技能对准确率的百分比加成;当此列的数值不留空(不等于0)时前两列的值将被游戏无视,单看该数值

一些特殊攻击方式的设定
这部分内容除HitClass列之外依旧很神秘,它们用于为每次该技能成功的攻击附加一些特殊的事件
ResultFlags:二进制选择函数,用于该技能每次成功击中敌人后,控制一些特殊事件的产生;以下是两张参考表格,一张表示各个技能在此处的值,另一张表示各个二进制位所代表的内容;以下表格中的值均为二进制,请自行进行二进制/十进制的转换
技能列表:
000000000000100 – 用于因碰撞而破坏掉的飞射物
000000000000101 – 用于心灵传动、Diablo冲锋、投掷药瓶
100000000000001 – 用于钢铁石魔、圣火、神圣冰冻、神圣冲击
000000000001000 – 用于盾击、重击、灰熊盾击、跳跃击退以及Radament Holyboly技能
000000000001001 – 用于心灵爆震、地狱陨石碰撞(火焰之河场景掉落的陨石)
000000000010001 – 用于庇护所
000000000000001 – 用于狂犬病、飓风、攻城兽的践踏技能
000000000100000 – 用于刀刃之盾技能
二进制位列表:
000000000000001 = 1 – 未知
000000000000010 = 2 – 未知
000000000000100 = 4 – 未知
000000000001000 = 8 – 击退
000000000010000 = 16 – 无接触情况下伤害敌人,也许忽视目标防御
000000000100000 = 32 – 未知
000000001000000 = 64 – 未知
000000010000000 = 128 – 未知
000000100000000 = 256 – 本次攻击不造成伤害
000001000000000 = 512 – 如上
000010000000000 = 1024 – 未知
000100000000000 = 2048 – 未知
001000000000000 = 4096 – 未知
010000000000000 = 8192 – 未知
100000000000000 = 16384 – 未知

HitFlags:二进制选择函数,但其功能未知:
10 - 心灵传动,狂犬病,飓风以及其它在其爆炸范围内造成伤害的飞射物

HitClass:攻击类型,控制当该技能成功命中敌人时所播放的声音,以下是一些已知的HitClass值:
2 – 飞斧类音效
3 – 刀刃之盾音效
6 – 标枪撞击音效
10 – 箭矢撞击音效
32 – 火焰烧焦音效
48 – 冰冻音效
64 – 闪电打击音效
80 – 被毒素(瓦斯药剂)击中音效
96 – 击晕音效
109 – 心灵传动音效
112 – 重击音效
141 – 攻击者收到反伤害音效
157 – 庇护所音效
176 – 普通毒素音效

杂项设置VI
Kick:布尔函数,作用未知(看起来像是调用踢击动画的技能设置,但对其它技能均无效)

一些与伤害有关的设置
以下内容表明该技能如何造成伤害,许多技能也会用到前面的Calc列中的计算式来计算其本身的加成伤害值;下面是一个比较精确的计算公式,用以计算该技能所造成的伤害值;公式中EffectiveShift的值请阅读下面的文件引导内容
伤害计算公式:
MinDamage = ((BaseDamage * SrcDamage / 128) + (MinDam * EffectiveShift * (100 + DmgSymPerCalc) / 100)) * (100 + EnhancerStat) / 100
MaxDamage = ((BaseDamage * SrcDamage / 128) + (MaxDam * EffectiveShift * (100 + DmgSymPerCalc) / 100)) * (100 + EnhancerStat) / 100

其中
BaseDamage是已经被该技能在前面Calc列中加成过的伤害值(元素伤害和物理伤害以及其它伤害类型请分别代入整个公式计算,而不要混为一谈)
SkillDamage是所有由技能提供的非武器伤害加成值
EnhancerStat是可以总体提升该伤害类型的属性(例如增加X%火焰伤害属性)

HitShift:该技能提供的非武器伤害加成精度(单位),伤害值最小基准单位为1/256(因为生命值最小基准单位也是1/256);内部代码中这只是一个简单的移位运算,但是为了不至于描述过于复杂,这里列出了一份表格,用以列举HitShift值与EffectiveShift值之间的转换关系,同时也便于理解
HitShift                EffectiveShift
0        1/256 = 0.0039025
1        2/256 = 0.00781250
2        4/256 = 0.01562500
3        8/256 = 0.0312500
4        16/256 = 0.062500
5        32/256 = 0.12500
6        64/256 = 0.2500
7        128/256 = 0.500
8        256/256 = 1.00
9        512/256 = 2.00
10        1024/256 = 4.00

SrcDamage:此列控制多少百分比的武器伤害将转化给技能,这里允许的最大值为128,128代表100%武器伤害转化给技能,96代表75%,64%代表50%,依此类推;一个例子:普通攻击伤害为1000-3000的角色,如果某技能此处值为66,则其使用技能的伤害值变为515-1547;这种惩罚应用于所有的伤害类型(也包括生命和法力偷取效果,因为它们也被当作是某种伤害类型看待),但各种伤害类型所受到的惩罚效果是区别对待的

MinDam,MaxDam:该技能1级时给予角色的最小/最大物理伤害值增量,游戏是否加载这个参数取决于其技能函数的实现方式,不过大多数技能函数都会加载

MinLevDam1-MinLevDam5,MaxLevDam1-MaxLevDam5:每升一级该技能的最小/最大物理伤害值增量,LevDam1用于技能等级在2-8级时,LevDam2用于9-16级,LevDam3用于17-22级,LevDam4用于23-28级,LevDam5用于用于29级及以上;游戏是否加载这个参数取决于其技能函数的实现方式,不过大多数技能函数都会加载

DmgSymPerCalc:该技能从其它协同加成技能(按百分比加成)中所获得的物理伤害加成,该值作用于SrcDamage惩罚之后;这列值支持数值或计算式

EType:该技能所造成的元素伤害种类,此处值引自ElemTypes.txt中的ID指针;同时这个值还控制着该技能是否从+X火焰技能之类属性中受益

EMin,EMax:该技能1级时给予角色的最小/最大元素伤害值增量,游戏是否加载这个参数取决于其技能函数的实现方式,不过大多数技能函数都会加载

EMinLev-EMinLev5,EMaxLev1-EMaxLev5:每升一级该技能的最小/最大元素伤害值增量,Lev1用于技能等级在2-8级时,Lev2用于9-16级,Lev3用于17-22级,Lev4用于23-28级,Lev5用于用于29级及以上;游戏是否加载这个参数取决于其技能函数的实现方式,不过大多数技能函数都会加载

EDmgSymPerCalc:该技能从其它协同加成技能(按百分比加成)中所获得的元素伤害加成,该值作用于SrcDamage惩罚之后;这列值支持数值或计算式

ELen:假设该伤害类型有持续时间参数(击晕、毒素、火焰燃烧、冰冻等)的话,该列值即为该技能造成元素伤害的基础持续时间;这里的值以桢为单位;要注意的是火焰燃烧伤害并非火焰类型的伤害;游戏是否加载这个参数取决于其技能函数的实现方式,不过大多数技能函数都会加载

ELevLen1-ELevLen5:每升一级该技能伤害的最小/最大持续时间增量,LevLen1用于技能等级在2-8级时,LevLen2用于9-16级,LevLen3用于17-22级,LevLen4用于23-28级,LevLen5用于用于29级及以上;游戏是否加载这个参数取决于其技能函数的实现方式,不过大多数技能函数都会加载

ELenSymPerCalc:该技能从其它协同加成技能(按百分比加成)中所获得的持续时间加成,该值作用于SrcDamage惩罚之后;这列值支持数值或计算式

AI相关设置
AIType:该技能如何被影子大师及影子战士所使用,以及如何被第三幕的雇佣兵所使用,包括法师的寒冰装甲等
AIBonus:此处增加了影子大师的AI中使用该技能的可能性

物品价格相关设置
CostMult:此处控制其上出现+X该技能属性的物品价格的乘数,这里可填写最大值是1024,过大的值将被系统无视
CostAdd:此处控制其上出现+X该技能属性的物品价格的增量
神话战网出品,必出精品!

rgbrgbrgbrgb]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|神话暗黑 ( 陕ICP备18004004号-1 )

GMT+8, 2026-1-19 17:15 , Processed in 0.078058 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表