/
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"


/*
 * cmd_makerig()
 *
 * Makes an item of specific type
 */
void cmd_makerig (CHAR_DATA * ch, char *argument)
{
    char arg1[MSL];
    char arg2[MSL];
    char arg3[MSL];
    OBJ_DATA * obj;
    int material;
    int item;
    
    argument = one_argument(argument, arg1);
    argument = one_argument(argument, arg2);
    argument = one_argument(argument, arg3);
    
    if (arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0')
    {
        ptc(ch, " Syntax: makerig <type> <material> <name>\n");
        ptc(ch, " Valid types are:\n");
        ptc(ch, "   weapon, armor, wizscroll, priscroll, potion_norm\n");
        ptc(ch, "   potion_heal, beer, food, gem\n");
        return;
    }
    
    if (!str_prefix(arg1, "weapon"))
    {
        material    = rig_material_lookup(arg2);
        item        = rig_weapon_lookup(arg3);
        
        if (material == -1 || item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, item, material, 1, FALSE);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "armor"))
    {
        material    = rig_material_lookup(arg2);
        item        = rig_armor_lookup(arg3);
        
        if (material == -1 || item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, item, material, 1, FALSE);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "wizscroll"))
    {
        item        = rig_wizscroll_lookup(arg2);
        
        if (item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_wizscroll(obj, item);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "priscroll"))
    {
        item        = rig_priscroll_lookup(arg2);
        
        if (item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_priscroll(obj, item);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "potion_norm"))
    {
        item        = rig_potion_lookup(arg2);
        
        if (item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_potion(obj, item);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "potion_heal"))
    {
        item        = rig_potion_heal_lookup(arg2);
        
        if (item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_potion_heal(obj, item);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "beer"))
    {
        item        = rig_beer_lookup(arg2);
        
        if (item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_beer(obj, item);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "food"))
    {
        item        = rig_food_lookup(arg2);
        
        if (item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_food(obj, item);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    if (!str_prefix(arg1, "gem"))
    {
        item        = atoi(arg2);
        
        if (item == -1)
        {
            ptc(ch, "Error, invalid material/item.\n");
            return;
        }
        
        obj = create_object (get_obj_index (30), 0);
        create_gem(obj, item);
        obj_to_char (obj, ch);
        ptc(ch, "You have created a %s\n", obj->short_descr);
        return;
    }
    
    
    else
    {
        cmd_makerig(ch, "");
        return;
    }
    return;
}
        

/*
 * cmd_listrig()
 *
 * Immortal utility to list possible objects
 */
void cmd_listrig(CHAR_DATA * ch, char *argument)
{
    char arg1[MSL];
    int count, i;
    
    argument = one_argument(argument, arg1);
    
    if (arg1[0] == '\0')
    {
        ptc(ch, "Syntax: listrig <type>\n");
        ptc(ch, " Valid types are:\n");
        ptc(ch, "   Weapon, armor, material, wizscroll, food\n");
        ptc(ch, "   priscroll, potion_norm, potion_heal, beer\n");
        ptc(ch, "   clothing, clothing_exp\n");
        return;
    }
    
    if (!str_prefix(arg1, "weapon"))
    {
        count = rig_weapon_max();
        
        ptc(ch, " Displaying list of Weapons: (total is %d)\n", count);
        ptc(ch, " Name                     Type       Min Max Noun   Wght Cost\n");
        
        for (i = 0; rig_weapons_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s %-10s %-3d %-3d %-7s %-4d %-4d\n",
                rig_weapons_table[i].name,
                weapontype_lookup(rig_weapons_table[i].value[0]),
                rig_weapons_table[i].value[1],
                rig_weapons_table[i].value[2],
                attack_table[rig_weapons_table[i].value[3]].noun,
                rig_weapons_table[i].weight,
                rig_weapons_table[i].cost);
        }
        return;
    }
    
    if (!str_prefix(arg1, "armor"))
    {
        count = rig_armor_max();
        
        ptc(ch, " Displaying list of Armor: (total is %d)\n", count);
        ptc(ch, " Name                     Location  AC Wght Cost\n");
        
        for (i = 0; rig_armor_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s %-10s %-3d%-4d %-4d\n",
                rig_armor_table[i].short_descr,
                wear_bit_name (rig_armor_table[i].wear_flags),
                rig_armor_table[i].armor_class,
                rig_armor_table[i].weight,
                rig_armor_table[i].cost);
        }
        return;
    }
    if (!str_prefix(arg1, "clothing"))
    {
        count = rig_clothing_max();
        
        ptc(ch, " Displaying list of Clothing: (total is %d)\n", count);
        ptc(ch, " Name                               Location  Wght Cost\n");
        
        for (i = 0; rig_armor_table[i].name != NULL; i++)
        {
            ptc(ch, "%-35s %-10s %-4d %-4d\n",
                rig_clothing_table[i].name,
                wear_bit_name (rig_clothing_table[i].wear_flags),
                rig_clothing_table[i].weight,
                rig_clothing_table[i].cost);
        }
        return;
    }
    if (!str_prefix(arg1, "clothing_exp"))
    {
        count = rig_clothing_exp_max();
        
        ptc(ch, " Displaying list of clothing (Expensive): (total is %d)\n", count);
        ptc(ch, " Name                               Location  Wght Cost\n");
        
        for (i = 0; rig_armor_table[i].name != NULL; i++)
        {
            ptc(ch, "%-35s %-10s %-4d %-4d\n",
                rig_clothing_exp_table[i].name,
                wear_bit_name (rig_clothing_exp_table[i].wear_flags),
                rig_clothing_exp_table[i].weight,
                rig_clothing_exp_table[i].cost);
        }
        return;
    }
    
    if (!str_prefix(arg1, "material"))
    {
        count = rig_material_max();
        
        ptc(ch, " Displaying list of Materials: (total is %d)\n", count);
        ptc(ch, "Pre Name                     Armor Wpn Arm Material Wght Cost\n");
        
        for (i = 0; rig_material_table[i].name != NULL; i++)
        {
            ptc(ch, "%-2s  %-25s %-5s %-3d %-3d %-7s %-3d%s %-3d%s\n",
                rig_material_table[i].prefix,
                rig_material_table[i].name,
                truefalse(rig_material_table[i].armor_only),
                rig_material_table[i].weapon_damage,
                rig_material_table[i].armor_bonus,
                armortype_lookup(rig_material_table[i].armor_type),
                rig_material_table[i].weight_multi, "%",
                rig_material_table[i].cost_multi, "%");
        }
        return;
    }
    
    if (!str_prefix(arg1, "wizscroll"))
    {
        count = rig_wizscroll_max();
        
        ptc(ch, " Displaying list of Wizard Scrolls : (total is %d)\n", count);
        ptc(ch, "Name                   Cost\n");
        
        for (i = 0; rig_wizscroll_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s  %-5d\n",
                rig_wizscroll_table[i].name,
                rig_wizscroll_table[i].cost);
        }
        return;
    }
    
    if (!str_prefix(arg1, "priscroll"))
    {
        count = rig_priscroll_max();
        
        ptc(ch, " Displaying list of Priest Scrolls : (total is %d)\n", count);
        ptc(ch, "Name                   Cost\n");
        
        for (i = 0; rig_priscroll_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s  %-5d\n",
                rig_priscroll_table[i].name,
                rig_priscroll_table[i].cost);
        }
        return;
    }
    
    if (!str_prefix(arg1, "potion_norm"))
    {
        count = rig_potion_max();
        
        ptc(ch, " Displaying list of Normal Potions : (total is %d)\n", count);
        ptc(ch, "Name                   Cost\n");
        
        for (i = 0; rig_potion_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s  %-5d\n",
                rig_potion_table[i].name,
                rig_potion_table[i].cost);
        }
        return;
    }
    
    if (!str_prefix(arg1, "potion_heal"))
    {
        count = rig_potion_heal_max();
        
        ptc(ch, " Displaying list of Healing Potions : (total is %d)\n", count);
        ptc(ch, "Name                   Cost\n");
        
        for (i = 0; rig_potion_heal_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s  %-5d\n",
                rig_potion_heal_table[i].name,
                rig_potion_heal_table[i].cost);
        }
        return;
    }
    
    if (!str_prefix(arg1, "beer"))
    {
        count = rig_beer_max();
        
        ptc(ch, " Displaying list of Beer : (total is %d)\n", count);
        ptc(ch, "Name                   Cost\n");
        
        for (i = 0; rig_beer_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s  %-5d\n",
                rig_beer_table[i].name,
                rig_beer_table[i].cost);
        }
        return;
    }
    
    if (!str_prefix(arg1, "food"))
    {
        count = rig_food_max();
        
        ptc(ch, " Displaying list of food : (total is %d)\n", count);
        ptc(ch, "Name                   Cost\n");
        
        for (i = 0; rig_food_table[i].name != NULL; i++)
        {
            ptc(ch, "%-25s  %-5d\n",
                rig_food_table[i].name,
                rig_food_table[i].cost);
        }
        return;
    }
     
    if (!str_prefix(arg1, "test"))
    {
        OBJ_DATA * obj;
        
        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, 1, rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);
        
        /*
        for (i = 0; i != 600; i++)
        {
        obj = create_object (get_obj_index (30), 0);
        create_gem(obj, 1);
        obj_to_char (obj, ch);
        }
        */
        stc("Done.\n", ch);
            
        return;
    }
    
    else
    {
        cmd_listrig(ch, "");
        return;
    }
    return;
}