---------------------------------------
虽然是件很简单的事情,但是很多人也许并不知道怎样去创造新的魔法修饰,比如基于增加所有角色等级提升力量(+Strength(base on +All Skills))或者+50%到敏捷度(+50% to Dexterity),甚至是这两种属性的组合。
在阅读本教程之前,你必须懂得如何做基于txt文本数据库的Mod修改,以及怎样给tbl文件添加字符键。
在这里,你将看到怎样创造一个基于活力值(Vitality)增加力量值(Strength)的魔法修饰。首先打开ItemStatCost.txt,在最下面新增一行。
stat 列(A):填入一个新的魔法修饰名称,例如“strength_per_vitality”;
ID 列(B):填入下一个可用的ID值; Signed列:填入 1,表示这个状态是有符号,可以是负数的; Send Bits列:填入一个比Save Bits列(V)值稍大一点的数字。在这里,我们输入8(但是绝对不要超过32!);
※说明:这个值仅对多人游戏起到重要作用。对于单人游戏,你可以填入任意比Save Bits值大的数字。
下来是Add,Multiply和Divide列。这些是用来计算带这个属性的物品价格的,所以你可以填入任何你希望的数值。但为了安全起见,保持Divide为1024。
再下来是Save Bits和Save Add列。这两列控制这个属性的值可以达到多高和多低,具体的公式是: 2 ^ SaveBits - ( Save Add + 1 )
这样,如果给Save Bits填入6,给Save Add填10,那么这个属性的最大值就是53(2^6-(10+1)),最小值就是-10(2^0-(10+1))。
所以,就照上面的,我们给Save Bits填入6,给Save Add填10。
现在要给魔法修饰真正的效果了。
在Op列填入2 Op Param列用来设置魔法修饰的值以怎样的精确度递增,公式是 2 ^ Op Param。要使它精确到每4递增,在这里输入2;
在Op base列输入vitality。这里表示你的魔法修饰是以什么为基础的;
在Op stat 1列输入strength。这是你的魔法修饰要提升的属性; 这里稍微说明一下,绝对不要把Op base和Op stat的值设置为同样的属性,否则游戏会没有任何错误提示就跳出的。
现在轮到新魔法修饰在游戏里的显示设置了。
给descpriority列随便填入一个数字。这个数字决定了当你看一个魔法物品时这个魔法修饰将出现在属性列表多高的位置; descfunc是设定魔法修饰显示状态的函数。在这里填入6;
给descval填入1,它仅仅用来决定一些符号的位置;
下来给descstrpos和descstrneg填入ModStr1a,这将会调用字符串表(.tbl)中显示“力量”(Strength)的键;
在descstr2里填入对应在字符串表中显示“基于活力值增加”("(Increases With Vitality)")的键名。在这个例子里,填入increaseswithvit;
终于可以结束ItemStatCost.txt的编辑了——在*eol列里填入0。
现在给字符串表里添加一个键名为increasewithvit,键值是(Increases With Vitality)的键吧。你可以随意挑一个字符串表,例如PatchString.tbl。
是编辑Properties.txt的时候了。在最后新增一行:
name:输入属性的名字,例如str/vit;
done:1;
func1:17;
stat1:你在ItemStatCost.txt中新增的魔法修饰的名字。本例中应该是strength_per_vitality;
然后,在最后的*eol列里输入0。
至于*desc,*param,*min,*max和*note列则完全是可选择的:它们只是用来帮助说明这个属性起到什么作用,以及如何使用的。
因为我们在ItemStatCost.txt的Op Param列里填入了2,所以可以在这里的*param列写上点说明,例如每4力量增加1活力。
现在你的新属性已经完全整装待用了 你可以通过修改MagicPerfix.txt/MagicSuffix.txt来指定它所出现的物品,或者通过Cube合成来测试它。
如果你对创造其它的属性也很有兴趣,比如按百分比增加状态(+% Stat)或者基于某状态按百分比增加状态(+% Stat(Base On Stat)),那么建议你看看ItemStatCost.txt里面其它的魔法修饰是如何设置的,再参考一下相关资源吧;)。