admin
发表于 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:行结束符
admin
发表于 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模式的游戏
admin
发表于 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以防止游戏出现错误。
admin
发表于 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:行结束符
admin
发表于 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行为模式,等
admin
发表于 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
admin
发表于 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:行结束符
admin
发表于 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的怪物(沙地跳跃者)无法被赋予闪电强化属性;另一个用途就是对恶魔的伤害、对不死怪物的伤害等属性
admin
发表于 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:行结束符,该列不可删除,且值须为零
admin
发表于 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处的出售价格似乎与其耐久度无关