• 1219阅读
  • 0回复

MagicPrefix.txt文件导引 [复制链接]

上一主题 下一主题
离线花花
 
发帖
*
金钱
*
91币
*
信誉
0
资产
0 IST
在线时间
小时
注册时间
*
最后登录
*
只看楼主 倒序阅读 使用道具 楼主  发表于: 2007-09-08 22:20:52
MagicPrefix.txt文件导引。 作者:01cwm

A.Name = 参考名。
B.version = ’0‘-diablo原版;‘100‘-破坏之王。
C.spawnable = 该前缀是否能在物品上产生。1=是,0=否。
D.rare = 该前缀是否能在稀有物品上产生。1=是,0=否。
E.level = 产生该前缀所必需的怪物级别(见附件A)。
F.maxlevel = 该前缀能产生的最大级别,如超过将不再产生(见附件A)。
G.levelreq = 使用该物品时需要的人物等级,可能用来增加基本需求。
H.classspecific = 设置为特定角色才能产生该前缀(ama,sor,nec,pal,bar,dru,ass)。
I.class = 特定角色的等级需求(见下行)。
J.classlevelreq = 特定角色的等级需求(数值)。
K.frequency = 产生该前缀的几率(见附件A)。
L.group = 将类似的若干前缀组合,并计算其几率(见附件A)。
M-X.(参考代码表)
modXcode = 修饰语代码。
modXparam = 代码参数(如果有的话)。
modXmin = 该代码(代表的属性)的最小值(如果有的话)。
modXmax = 该代码的最大值(如果有的话)。
Y.transform = 该前缀是否在物品上产生颜色改变。1=是,0=否。
Z.transformcolor = 改变后的颜色的代码。
AA-AG.itypeX = 能产生该前缀的物品类型(见附件B)。
AH-AL.etypeX = 不能(never)产生该前缀的物品类型(itemtypes)(见附件B)。
AM.divide = 卖给NPC时的价格减少因子(除因子?)。
AN.multiply = 价格增加因子(乘因子?),与skills.txt中类似。
AO.add = 价格增加因子(和因子?),与skills.txt中类似。
-----------------------------------------------------------------------------
附件A -- 组,频率和前缀的决定:

#若干个类似的前缀(一般为同一类型,当然并不是非得如此,)通过一个数字标志组成一个群组,如121-152共32个前缀都属于同一组 (101),如果你懂一点e文的话,你会发现它们都有类似‘神圣的,圣洁的’的意思(如‘holy’,‘saintly’)!当游戏在寻找一个可利用的前缀时,同一组中的前缀它只会选择一个。这样可以防止前缀的重复(overlapping),比如两个’+1 light radius‘(加1照亮范围),毫无疑问,这是非常浪费的。

#’哪些前缀是可获得的‘可通过下面的方式计算得出 ---- 由Ruvanal提供

先介绍几个术语:
alvl = 前缀等级。对一个物品而言,它被用来与‘level’和‘maxlevel’的值进行比较(‘level’和‘maxlevel’说明见上,这些可以在前缀和后缀表中查到!)。当你参考某个‘前缀/后缀’时,它的值就在‘level’栏。
ilvl = 固有等级(一般参考物品等级(item level),当然如果是物品的产生等级(item creation level)的话会更好一些)。当一个物品产生(或者说被创造)时,这个值也就同时被设定了。
mlvl = 怪物等级。
clvl = 角色等级。
qlvl = 质量等级。这个值可以在armor.txt,weapon.txt和misc.txt的level栏查到。这个值被用来产生武器(weapXX)和盔甲(armoXX)的财富级别(treasure classes)。
magic_lvl = 某些物品上的魔法等级奖励。到目前为止,只有下面这些物品有这种奖励:权杖(‘wands’,只是‘普通和扩展级’,精华级无),杖(staves),天球(’orbs‘,取值1)和圈冠(‘circlets’,circlet(头圈)=3,Coronet(宝冠)=8,Tiara(三重冠)=13, Diadem(王冠)=1.)。

当一个有前缀的物品产生时,‘alvl’值通过下面的方法从‘ilvl’和‘qlvl’值计算得到*:
If (ilvl>99) then {ilvl=99}
if (qlvl>ilvl) then {ilvl=qlvl} ;**
if (magic_lvl>0) then {alvl=ilvl+magic_lvl}
else
{
if (ilvl<(99-qlvl/2))
then {alvl=ilvl-qlvl/2}
else {alvl=2*ilvl-99}
}
If (alvl>99) then {alvl=99}
*注:所有的计算结果(包括每一步)均取整数。
**注:这个新的‘ilvl’值只在计算过程中使用。储存在物品数据文件(items data file)中的‘ilvl’值保持不变。

#当游戏已经知道哪些词缀可以用来被分派时,它还要知道如何从给定的有多重选择的前缀组中选择合适的前缀。这个工作将由‘frequency’(频率)栏来完成。

‘Frequency’(频率)决定了该前缀被选中的几率,频率值越高产生几率越大。
举个例子说明:
假设:Mod1freq=5,Mod2freq=3,Mod3freq=2,Mod4freq=1
如果只能产生'Mod1'和'Mod2',则产生它们的概率如下:
'Mod1' = 5/(5+3)=5/8=62.5%
'Mod2' = 3/(5+3)=5/8=37.5%
如果四个修饰均能产生,则相应的概率如下:
'Mod1' = 5/(5+3+2+1) = 5/11=45.5%
'Mod2' = 3/(5+3+2+1) = 3/11=27.3%
'Mod3' = 2/(5+3+2+1) = 2/11=18.2%
'Mod4' = 1/(5+3+2+1) = 1/11=9.1%

由上面可以看出,你可以在一个更高的等级(higher level)上通过'maxlevel'栏将那些低质量(lower quality)的前缀滤掉。通过设定'maxlevel‘值使其有一个交叠区,你可以使那些类型的前缀在所有的级别(all levels)上都可以获得,从而有效的保持那些强大的(powerful)前缀能聚集(pool)在一起。
-------------------------------------------------------------------------------------
附件B -- itype & etype

itype = Inclusion TYPE(包含类型) & etype = Exclusion TYPE(排除类型)

这个决定了一个给定的词缀可以在{itype}所包含的物品类型上产生,而不能产生于{etype}所包含的物品类型。

比如:itype = {weap,armo} etype = {axe,helm,belt}
这个表示该词缀可以产生在所有的武器和盔甲上,但是在斧子,头盔和腰带上不能产生。

通过这种方法(在‘itype’和‘etype’里面设定物品类型),你可以控制某类物品是否能产生(或者说接受)该词缀,比如让某个(些)词缀只能在剑(swords)上产生,或者不能让它在剑上产生。当然,首先你必须知道该物品的代码。

注意:以上的说明同样适应于其他有‘itype/etype’的.txt文件,如automagic,rareprefix/suffix。
快速回复
限100 字节
 
上一个 下一个