There is a generic weapon avaliable. To set up do : object wobj; wobj = clone_object("obj/weapon"); For customization the following routines are available : You should call these functions: set_name(n) string n. Sets the name and short description to n. Sets long description to "You see nothing special.\n" set_class(c) int c. Sets how much damaged it will do. set_weight(w) int w. Sets the weight. set_value(v) int v. Sets the value. These are the optional functions: set_alt_name(n) string n. Adds an alternate name to weapon. set_alias(n) string n. Adds another alternate name to weapon. set_short(sh) string sh. Sort description is set to sh. Long to short + "\n" set_long(long) string long. Long description is set to long. set_read(str) string str. str will be returned if it's read. set_hit_func(ob) object ob. Sets up a call to function 'weapon_hit' in object 'ob'. 'weapon_hit' is called every time the weapon strikes someone. The argument given to 'weapon_hit' is the target of the attack. The return value of 'weapon_hit' adds to the weapons wc for this hit. Returning the string "miss" will cause the weapon to miss. set_wield_func(ob) object ob. Sets up a call to function 'wield' in object 'ob'. 'wield' is called every time the weapon is wielded. A return value of 0 form 'wield' means that the weapon will not be wielded. 1 that it's okey to wield it. EXAMPLE /* * This is a magic sword is has a wc of 9 as base * and a wc of 19 if it's attacking an orc. */ orc_slayer = clone_object("obj/weapon"); call_other(orc_slayer, "set_name", "short sword"); call_other(orc_slayer, "set_alias", "sword"); call_other(orc_slayer, "set_short", "Short sword"); call_other(orc_slayer, "set_alt_name", "orc slayer"); call_other(orc_slayer, "set_long", "This is a very fine blade.\n"+ "It's covered with ancient runes.\n" + "Engraved on it is a picture of the sword slicing an orc.\n"); call_other(orc_slayer, "set_read", "The only thing you can read is the word 'orc'.\n"); call_other(orc_slayer, "set_class", 9); call_other(orc_slayer, "set_weight", 2); call_other(orc_slayer, "set_value", 200); call_other(orc_slayer, "set_hit_func", this_object()); . . . weapon_hit(attacker) { if(call_other(attacker,"id","orc")){ write("Ziiing\n"); return 10; } return 0; }