非资料片怪物各个属性的计算方式
1. 普通难度,各个属性同资料片怪物的对应属性,没有区别。
2. 噩梦和地狱难度,各属性为资料片怪物的对应属性乘以一个打折系数。各个属性的打折系数不同。
怪物等级读取D2data.MPQ的Monstats.txt取得。
攻击准确率(AR)的系数=0.66666666680248454213142395019531≈0.667
伤害数值(DAM)和防御值(Def)的系数=0.83333333372138440608978271484375≈0.833
攻击附加的元素伤害没有系数惩罚,但计算时调用Monlvl中怪物D2C级别对应的系数。
生命值(HP)的系数=0.5
经验值(EXP)的系数≈0.3846144
其他格挡、抗性、Drain、Cold Effect、DamageRegen、技能级别、技能伤害等数值同资料片数值。
物品掉落依然读取TreasureClassEx.txt,只是在掉落时过滤掉了那些D2C无法出现的物品。
3. 对Champion、Unique来说,先按照上述方法得出对应普通怪物的属性,再依照以下算法获得属性奖励
HP/EXP/DEF:不计算等级奖励。所得结果会受到头目级怪物属性的奖励。
DAM/AR:计算等级奖励。所得结果会受到属性提供的奖励。
AR和Damage
结论:D2C怪物的属性计算,调用的是D2X怪物的Mlvl.
HP
具体测试方法是:以僵尸zombie1为测试样本。修改Monstats.txt中zombie1的对应列MinHP(H)=MaxHP(H)=100,MonLvl.txt中67lv的L-TH(H)=10000,那么资料片僵尸生命值为100*10000/100=10000
修改NEC骨魂的最大最小值相等,并多次调整该数值,最终发现,Dam=4999时,僵尸不死;Dam=5000时,1hit ko由此得出生命值系数为0.5
EXP
测试方法跟HP的测试方法基本相同,修改txt使得资料片对应经验值为10000,并使用51lv的char去杀僵尸。需要注意的是,计算初始经验值的时候,调用Monlvl.txt中67lv对应的经验值系数。但实际计算所获得经验值时,僵尸的Mlvl按51计算。
51lv的char杀僵尸,每次所得经验值为3846。
修改为10000000的经验值,获得0.3846144的结果。当然如果继续增加初始经验值,还可以获得更精确的结果。不过精确到小数点后7位的结果够用了。计算地狱Diablo的经验值,所得误差在个位数。
Def
这个虽然用处不大,但作为资料的完整性,是有必要的,而且是最头疼的。def无法直观的表达出来,简单的修改无法得出结论。
于是采用了Def数值转换为Dam的方法。
修改沉沦魔巫师的火球为法师的Fire Bolt,并固定其伤害为1. 同时给巫师增加火焰支配技能。
修改火焰支配的计算方式为stat('armorclass'.accr)*100-100,stat('armorclass'.accr)即是读取该怪物的最终防御值。最后结果为百分数。
修改monstats.txt中沉沦魔巫师的AC(H)=100,MonLvl.txt中68lvl对应的L-AC(H)=10000.
进游戏测试,巫师每次火球伤害为8333-8334之间。简单得出结论,Def对应系数为0.8333
严格来讲,测试精准度只在小数点后第四位。但按常理推断,这个数值同DAM的系数很接近,应该是同一个算法。由此我就大胆将其数值确定为DAM的系数。如果有谁得出了不同的结果,请发到91D2论坛上。 |