This is a preliminary guide for the creation of armours. Armours are all
objects that inherit '/std/armour'.

An armour is basically configured with three parameters:

  Armour type:
		    This indicates what part of the body that the armour
		    protects. There is a given number of 'slots' for which
		    a player can wear an armour. There can not be more than
		    one armour for each slot. For types see table below.
		

  Armour class:
		    This is a relative value for the quality of the armour.
		    All armour types can have ac values from 0-100. Certain
		    types cover the same part of the body giving protection
		    against a hit at that part with more than ac100. In such
		    a case the summed ac value for the body part is set to
		    100.
	
		    Below is a list of maximum ac values gainable in different
		    situations:

    Maximum values for all armour classes independant of armour type

    Max AC found (on the ground)	:  10
    Max AC bought			:  40
    Max AC conquered (in combat)	:  60
    Max AC reward for solving quest	:  20 * questlevel (see xp_scale)

    Even though armour gained through combat can be up to ac60, only a
    major foe do have such armament. Use your common sense :-)

  Armour modifier:  
		    This indicates an armours sensitivity to certain types
		    of attacks, ie damage types. The armour modifier is an
		    array holding a modify value for each damage type.

                    There is currently three damage types:
			IMPALE, SLASH, BLUDGEON

		    This means that the armour modifier is an array, for ex.:

				({ -2, 3, 0 })

		    would be -2 for impale damage and +3 for slash damage.

                    Note that the maximum limits still apply.

The base value in copper coins of an armour is calculated with the formula:
			cc = ac * ac / 3 + ac * 7 + 20

Note that the ac should reflect the average ac and the modifiers
should average out to 0. For example if you want a coarse chain mail with
slash-ac 40 and impale-ac 20. You would give ac = 30 and am = ({ -10, 10, 0 })

       Table of armour slots <-> Hitlocations

    armour          Protecting
     type 
             TORSO HEAD LEGS R_ARM L_ARM

    A_BODY     X      
    A_HEAD	    X
    A_LEGS	         X
    A_R_ARM	               X
    A_L_ARM	                     X
    A_ARMS                     X     X
    A_ROBE      X         X                
    A_SHIELD                   X     X  
    HANDS
    A_ANY_FINGER
    A_FEET
    A_NECK
    A_WAIST                        

    any magical armour
               X    X    X     X     X  
 	
Wielding a weapon would mean that a player cannot wear a shield in that hand.
Wielding a two handed sword would result in no place for a shield, and one
could also carry two shields but no hand weapons..... But, wielding a weapon
will make it easier to protect that part of the arm, parrying blows, so it
will contribute to the protection for the corresponding arm. To look at this,
clone a weapon, wield it and use the 'combatstat' command.

How to make an armour
====================

An armour should always begin with these statements:

inherit "/std/armour";
#include "/sys/wa_types.h"  /* wa_types.h contains some definitions we want */
#include "/sys/stdproperties.h" /* The properties of value, volume and weight */

void
create_armour()
{
    /* Set the name, short description and long description */
    set_name("helmet");
    set_short("small helmet"); /* Observe, not 'a small helmet' */
    set_long("It's small but would probably protect you a little.\n");

    /* Now, a player can refere to this armour as 'armour' and 'helmet'. To
     * distinguish it from other helmets, we want the player to be able to 
     * use 'small helmet' as an id too.
     */
    set_adj("small");

    /* Now we want to set the armour class, and perhas a modifier to it */
    set_ac(4);
    /*        impale, slash, bludgeon */
    set_am(({   -2,     1,      1 }));

    /* We also need to set what type of armour this is */
    set_at(A_HEAD); /* It protects the head */

    /* Then we want the object to have value, weight and volume too. If
     * your value or weight setting is too low, then default values will
     * be used
     */
    add_prop(OBJ_I_VALUE, 123);
    add_prop(OBJ_I_VOLUME, 200);
    add_prop(OBJ_I_WEIGHT, 1000);
}

