Functions which must be called to set values:

From the standard object (read /doc/build/building for details):
set("id", string *names);  set_name(string name);  set("short", "short desc");
set("long", string long_dec);  set_weight(int weight);  set("value", int val);

Things which must be set which are specific to weapons:

set_type(string type);
Example: set_type("blade");
Sets what type of weapon the weapon is.  Valid types are listed in your mud's
balance documentation.

set_quality(int qual);
Sets the weapon quality, from 0-6, 6 being best.  2 is default.

***************************************************************************

Special functions which you may use to do fun things:
See the standard object's:
set("read", string|function);

void set_decay_rate(int);
Example: set_decay_rate(1000);
Sets how many hits a weapon can make before decaying one degree in quality.
You should see the balance documents for your mud for decay rate ranges.

void set_wield(string|function);
Examples: set_wield("You feel the power of the butter knife!");
          set_wield( (:call_other, this_object(), "wield_butter":));
You may pass either a function or a string to this function as an argument.
If you pass a string, the string will be written to the player every
time the weapon is wielded in place of the "You wield foo" generic
wield message.  If you pass a function, when a player tries to wield a
weapon, that function will be called.  If that function returns a 1,
the player can wield the weapon.  If it returns 0, the wielding is
not allowed.  Example:
void create() {
    ::create();
    ...
    set_wield( (: call_other, this_object(), "wield_butter" :) );
    ...
}

int wield_butter() {
    if((string)this_player()->query_class() != "cleric") return 0;
    else return 1;
}
See /doc/lpc/data_types/function for more info on the function data type.

set_property("enchantment",int amt);
Sets a magical bonus to the wc (all types).

set_property("no add quality",1);
Normally, the quality of the weapon will be converted to a description
and added to the short desc.  Make sure if this is NOT set, that you
DO NOT put "a" or "t" before the short desc, or you will get:
a very fine a flail.
However if it is set to 1, it will not add the quality description.

set_property("no decay",1)
if this is set, the weapon will never decrease in quality.

set_hit(string|function)
Examples: set_hit("You bash your opponent with the butter knife!");
          set_hit( (: call_other, this_object(), "weapon_hit" :));
Every time the weapon hits an opponent, if you have passed a string,
the string will be written to the wielder.  If you passed a function,
the function you passed will be called passing the enemy object as an
argument.  Whatever your function returns will be added to the damage
done.  Example:
void create() {
    ::create();
    ...
    set_hit( (: call_other, this_object(), "weapon_hit" :) );
    ...
}

int weapon_hit(object attacker) {
    if((string)attacker->query("undead")) return ([ "impaling" : 10 ]);
    else return 0;
}

NOTE: If an integer is returned instead of a mapping, the integer will be
	added to ALL damage types the weapon normally does.


void set_unwield(string|function);
Examples: set_unwield("You are no longer burdened by the butter knife.");
          set_unwield( (: call_other, this_object(), "unwield_butter" :) );
Exactly the same as set_wield(), except this is called when the player
unwields a weapon.

void set("skill level", int);
Example: set("skill level", 50);
Makes it so that only a person with a skill in the weapon's weapon type
above what you set may wield the weapon.

****************************************************************************

Functions which may be called externally or internally to change the weapon:

void add_poisoning(int)
Example: add_poisoning(10);
Makes the weapon a poison weapon capable of poisoning opponents.

set_enh_critical(int amount);
Example: set_enh_critical(3);

All critical hits on this mud are of class A - E in order of harshness.
The level of critical is normally determined by damage rolls, but
this will cause the weapon to increase its criticals by the number of
classes given.  Negative numbers are accepted.

set_auto_critical(string type);
Example:set_auto_critical("plasma C");

The above will cause the weapon to deliver a C level plasma critical with
every hit.  Quite devastating.  The type arguement must be of the form:
<type> <level>
With type being a valid damage type (see help damage_types) and level
being a letter A-E indicating degree of harshness.

set_verb(string verb);
Ex: set_verb("pound");
This function sets the verb of the weapon, i.e., what the players see.
Default is "hit".  The player would see something like this for the
above example:
Diewarzau pounds you very hard.
or something.

set_hit_bonus(int bonus)
	Sets a percent chance bonus to hitting with the weapon.
	Negative mods work for heavy weapons, etc.

set_parry_bonus(int bonus)
This is a % increase to the chance the weapon may be used to parry strikes.
Use positive for fencing type weapons and neg for heavy ones.
