/
area/city/
area/crypts/
area/guilds/
area/psuedowild/
area/religion/
data/documents/MPDocs/
data/html/
data/mobprogs/
data/quest/
data/world/
data/world/_utilities/
data/world/images/
design/html/
notes/
player/
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "interp.h"
#include "tables.h"
#include "rig_tables.h"
#include "rig.h"

/*
 * create_armor()
 *
 * Generates a piece of armor!!
 *
 * force_type       - If set to random, will generate a random armor
 * force_material   - If set, will force that material
 * quaility         - If previous unset, determine quaility (poor = iron/steel, decent = steel/sivler, etc)
 * is_for_shop      - Flags ITEM_INVENTORY Flag
 */
OBJ_DATA * create_armor(OBJ_DATA * obj, int force_type, int force_material, int quaility, bool is_for_shop)
{
    char name_set[MSL];     /* Used for naming purposes */
    char shor_set[MSL];
    char long_set[MSL];
    char mate_set[MSL];
    char temp[MSL];
    int obj_type = -1;      /* Used for generation type */
    int material_type = -1;
    
    free_string(obj->name);
    free_string(obj->short_descr);
    free_string(obj->description);
    free_string(obj->material);

    /* Ok determine if forced, if not random */
    if (force_type == RIG_RANDOM)
        obj_type = number_range(0, rig_armor_max());
    else
        obj_type = force_type;
    
    if (force_material == RIG_RANDOM)
        material_type = number_range(0, rig_material_max() - 1);
    else
        material_type = force_material;

    
    sprintf(name_set, rig_armor_table[obj_type].name, rig_material_table[material_type].name);
    sprintf(temp, "%s %s", rig_material_table[material_type].prefix, rig_material_table[material_type].name); 
    sprintf(shor_set, rig_armor_table[obj_type].short_descr, temp);
    sprintf(long_set, rig_armor_table[obj_type].long_descr, temp);
    sprintf(mate_set, rig_material_table[material_type].name);
    obj->name               = str_dup (name_set);
    obj->short_descr        = str_dup (shor_set);
    obj->description        = str_dup (long_set);
    obj->material           = str_dup (mate_set);
    obj->item_type          = ITEM_ARMOR;
    obj->wear_flags         = rig_armor_table[obj_type].wear_flags;
    obj->cost               = 1 + rig_armor_table[obj_type].cost * rig_material_table[material_type].cost_multi / 100;
    obj->weight             = 1 + rig_armor_table[obj_type].weight * rig_material_table[material_type].weight_multi / 100;
    
    obj->value[0]           = rig_armor_table[obj_type].armor_class;
    obj->value[0]           += rig_material_table[material_type].armor_bonus;
    
    /* Add the material bonuses to the armor */
    fix_material_bonus(obj, material_type);
    
    /* Cant be too careful*/
    name_set[0] = '\0';
    shor_set[0] = '\0';
    long_set[0] = '\0';
    mate_set[0] = '\0';
    temp[0] = '\0';
    return obj;
}

/*
 * create_clothing()
 *
 * Generates a piece of normal clothing
 */
OBJ_DATA * create_clothing(OBJ_DATA * obj, int force_type, bool expensive, bool is_for_shop)
{
    char name_set[MSL];     /* Used for naming purposes */
    char shor_set[MSL];
    char long_set[MSL];
    char mate_set[MSL];
    char temp[MSL];
    int obj_type = -1;      /* Used for generation type */
    
    free_string(obj->name);
    free_string(obj->short_descr);
    free_string(obj->description);
    free_string(obj->material);

    /* Ok determine if forced, if not random */
    if (force_type == RIG_RANDOM)
        obj_type = number_range(0, rig_clothing_max());
    else
        obj_type = force_type;
    
    if (expensive)
    {
        sprintf(name_set, "%s",                         rig_clothing_exp_table[obj_type].name);
        sprintf(shor_set, "%s",                         rig_clothing_exp_table[obj_type].name);
        sprintf(long_set, "%s is on the ground here.",  rig_clothing_exp_table[obj_type].name);
        sprintf(mate_set, "%s",                         rig_clothing_exp_table[obj_type].name);
        obj->wear_flags         = rig_clothing_exp_table[obj_type].wear_flags;
        obj->cost               = rig_clothing_exp_table[obj_type].cost;
        obj->weight             = rig_clothing_exp_table[obj_type].weight;
    }
    else
    {
        sprintf(name_set, "%s",                         rig_clothing_table[obj_type].name);
        sprintf(shor_set, "%s",                         rig_clothing_table[obj_type].name);
        sprintf(long_set, "%s is on the ground here.",  rig_clothing_table[obj_type].name);
        sprintf(mate_set, "%s",                         rig_clothing_table[obj_type].name);
        obj->wear_flags         = rig_clothing_table[obj_type].wear_flags;
        obj->cost               = rig_clothing_table[obj_type].cost;
        obj->weight             = rig_clothing_table[obj_type].weight;
    }
    obj->name               = str_dup (name_set);
    obj->short_descr        = str_dup (shor_set);
    obj->description        = str_dup (long_set);
    obj->material           = str_dup (mate_set);
    obj->item_type          = ITEM_CLOTHING;
    
    /* Cant be too careful*/
    name_set[0] = '\0';
    shor_set[0] = '\0';
    long_set[0] = '\0';
    mate_set[0] = '\0';
    temp[0] = '\0';
    return obj;
}