AUTHOR: Rantic (supfly@geocities.com) of FrozenMUD (empire.digiunix.net 4000) FILES sharpen.c The code sharpen.patch Patch for the rest of the code sharpen.txt This file sharpen.help Suggested help topic(s) for this code LICENSE Permission to use and distribute this code is granted provided the header in the source file is retained and unaltered, and the distribution package contains all the original files unmodified. If you modify this code and use/distribute modified versions you must give credit to the original author(s). DESCRIPTION This is a simple skill that lets players "sharpen" a weapon; a sharpened weapon will inflict more damage. This is achieved simply by adding a dam roll affect to the weapon. The damroll bonus depends on the level of the player using the skill. To successfuly sharpen, a player must be in posession of a sharpening stone, and must have a dexterity of at least 17. Failing to sharpen due to lack of dexterity will damage the weapon; failing because of lack of experience with the skill will damage the sharpening stone. Only "slashing-like" type of weapons can be sharpened (the allowed types are: hit, slice, stab, slash, claw, bite, pierce). The sharpening stone is by default set to vnum 39. You can change this (see bellow). The sharpening stone can be any type (trash or furniture), but keep in mind that the "state" of the stone is kept in its value0. When value0 reaches 0, the stone is broken and lost. In order to disallow players from sharpening the same weapon twice, the skill takes the value5 of weapons as a flag. If value5 is zero, the weapon has never been sharpened; if it's non-zero, it's been sharpened and it can't be sharpened again. INSTALLATION INSTRUCTIONS The easiest way to install this skill is to in some way include the code in "sharpen.c" into the compilation (either by directly including this file into the Makefile or by pasting its contents into some other C, preferrably skills.c), and then patching in the patchfile with a command like "patch <sharpen.patch". Then compile, reboot, create the "sharpen" skill and the sharpening stone object to vnum 39, set the skill as shown bellow in step 10, and reboot again. And you're all set. As usual, here are some manual instructions just in case: 1) Add a DECLARE_DO_FUN for "do_sharpen" in mud.h, near the other DECLARE_DO_FUN declarations. 2) Add an OBJ_VNUM_SHARPEN #define in mud.h, and set it to the vnum of your sharpening stone. It's recommended to put this object in limbo.are. 3) Add an entry for "do_sharpen" in the "skill_function" function in tables.c 4) Add an entry for "do_sharpen" in the "skill_name" function in tables.c. 5) Add an "extern sh_int gsn_sharpen;" declaration in mud.h, near the other gsn declarations. 6) Add an "sn_int gsn_sharpen;" declaration in db.c 7) Add an "ASSIGN_GSN(gsn_sharpen, "bottle");" line in the boot_db function, near the other ASSIGN_GSNs (these three steps commonly known as "adding the gsn"). 8) Add the code, preferably to skills.c. 9) Compile, reboot, and get into the mud. 10) Using the "sset" command, create the "sharpen" skill, set things to your own taste, and set its code to "do_sharpen" (the name must be exactly "sharpen"). 11) Create the "sharpening stone" object, preferably inside limbo.are (using the vnum OBJ_VNUM_SHARPEN). You're pretty much free to create it any way you want (type, flags, etc) except that you must set its value0 to something other than 0. 12) You'll need another reboot before it works, because of the gsn. And you're done. To set the sharpening stone to a different vnum simply change the "#define OBJ_VNUM_SHARPEN" line in mud.h, as shown in step 2. If you have any comments, or bug reports please feel free to mail the author, or the mud administration of FrozenMUD at mudadmins@xnet.org. Even dropping a "Good work guys!" line can go a long way in future releases. --Cronel, December 98