在 es2 mudlib 中,所有可装备的物件都属于同一种物件,事实上,可装备的物件在我们的定义中相当于 ITEM
这个标准物件加上 F_EQUIP 这个特性,你可以用 ilist
这个巫师指令来检查你手边的武器或护具,就可以得知这些物件继承了哪些物件。
也许你已经注意到,我用的是「可装备的物件」这个奇怪的统称,而不是你所熟悉的武器、防具等传统称呼,没错,在
es2 mudlib 中并没有故意去区分武器跟防具,这两种物件其实继承了完全相同的物件,只有在 create()
时设定的属性不同而已,换句话说只要你正确地设定了该有的东西,一个物件可以同时是武器跟防具(你可以 wear 或 wield
它)。
当然,如果你还是一个新巫师的话,可以先不必管那么多,以下我先用一些例子来说明如何写一个武器或防具。
// An example weapon
#include
inherit F_SWORD;
void create()
{
set_name("长剑", ({ "longsword", "sword" }) );
set_weight(3000);
setup_sword(2, 11, 30, 0);
if( !clonep() ) {
set("unit", "把");
set("value", 500);
set("long", "一把普通的长剑。\n");
set("wield_as", "sword");
set("rigidity", 20);
}
setup();
}
以上就是一个简单的武器写法,看起来似乎比一个房间复杂了一点,不过不必紧张,前面我们说过像武器这种可装备的物件是 ITEM
加上 F_EQUIP 的特性,因此有一半以上的指令是用来设定 ITEM 的基本属性的,如果你忘了的话,请你看看写 ITEM
的那一篇文件。
以下这里只说明专门针对装备的几行做说明,首先是 setup_sword(2, 11, 30, 0);
这一个函数设定这个武器的攻击力,四个参数的意义请参考 help weapon。
接下来是 set()
设定的属性部份:
"wield_as":
这是这样武器可以使用哪些武器技能,这个属性可以是单一个字串或一个字串阵列,如:
set("weild_as", ({ "sword", "secondhand sword"}));
可以设定这个武器当 sword 跟 secondhand sword 使用。装备可以使用的技能跟它继承的武器特性有关,如
F_SWORD 提供 sword 跟 secondhand sword 两种技能。
"rigidity":
这是这样武器的承受力量的单位强度,其意义是「可能」使这个武器断掉的最小力量除以武器重量的倍数,当 rigidity 是
20,而武器的重量是 3000g 时, 最少要 20 * 3000 = 60000 (60 公斤) 的力量才有「可能」使武器断掉,即
random(力量) >= 600000 的机会。没有设定这个属性的武器将无法用于 parry
(格挡),也不会断掉。
"sharpness": 有锐利边缘的武器有时候可以直接削断对手的武器,而不需要太大的力量,当
sharpness 大于对手武器的 rigidity 时,就会有一定的机会( random(sharpness) >
rigidity ) 的机会斩断对手的武器。任何武器的 sharpness 值不能超过它自己的 rigidity。
By
Annihilator (04/24/96)
|