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

const struct rig_mob_eq_type rig_mob_eq_table[] =
{
    {"none"},
    {"newbie_fighter"},
    {"newbie_swordangel"},
    {"newbie_thief"},
    {"newbie_wizard"},
    {"newbie_priest"},
    {"guard_poor"},
    {"guard_norm"},
    {"guard_elite"},
    {"guard_vandagard"},
    {"commoner"},
    {"commoner_full"},
    {"nobelman"},
    {"wizard"},
    {"priest"},
    {"orc"},
    {"elven"},
    {"dwarven"},
    {"goblin_poor"},
    {"goblinish"},
    {NULL}
};

/*
 * mob_outfit()
 *
 * Not just for mobiles anymore.
 * This command takes a varity of arguments to create an allout outfit for the mobile
 * via mobprogs.
 *
 *  Standard Default Configurations:
 *      - newbie_fighter    - Steel Broadsword, 2 pieces leather
 *      - newbie_swordangel - Steel Katana, 4 pieces of leather
 *      - newbie_thief      - Steel Shortsword, 3 pieces leather
 *      - newbie_wizard     - Steel Dagger, Common Robe, 3 scrolls
 *      - newbie_priest     - Wooden Mace, Common Robe, 5 scrolls
 *      - guard_poor        - steel weapon/leather armor
 *      - guard_norm        - steel weapon/iron armor
 *      - guard_elite       - steel weapon/steel armor
 *      - guard_vandagard   - elven weapon/elven armor
 *      - commoner          - clothing/iron small weapon
 *      - nobelman          - expensive clothing/steel or elven+ weapon
 *      - wizard            - robes/dagger/scrolls
 *      - priest            - robes/mace/scrolls
 *      - orc               - orcish armor/orcish weapon
 *      - elven             - elven weapon/elven armor
 *      - dwarf             - dwarven weapon/dwarven armor
 *      - goblinish         - Goblin weapon/Goblin armor
 *      - goblin_poor       - Weapon, 25% chance per armor
 */

int no_outfit;
int has_outfit;

void log_outfits()
{
    char buf[MSL];
    
    sprintf(buf, "**** STATS **** %d mobiles have outfits", has_outfit);
    log_string(buf);
    
    sprintf(buf, "**** STATS **** %d mobiles do not have outfits", no_outfit);
    log_string(buf);
}

 
void mob_outfit(CHAR_DATA * ch, char *argument)
{
    char arg1[MSL];
    OBJ_DATA * obj;
    int i, max;
    
    argument = one_argument(argument, arg1);
    
    if (arg1[0] == '\0')
    {
        bugf("mob_outfit: invalid argument on mobile %d", IS_NPC (ch) ? ch->pIndexData->vnum : 0);
        return;
    }
    
    
    if (!str_prefix(arg1, "no start"))
    {
        ++no_outfit;
        return;
    }    
    if (!str_prefix(arg1, "none"))
    {
        ++no_outfit;
        return;
    }
    
    ++has_outfit;
    /* Non-PC stuff here */
    if (!IS_NPC(ch))
    {
        /* First, lets give them some food, anywhere from 0 to 3 pieces */
        max = number_range(0, 3);
        for (i = 0; i < max; i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_food(obj, RIG_RANDOM);
            obj_to_char (obj, ch);
        }
        /* Ok, lets give them a gem, 5% chance */
        switch(number_range(0, 100))
        {   default:
                break;
            case 1: case 2: case 3: case 4: case 5:
                obj = create_object (get_obj_index (30), 0);
                create_gem(obj, RIG_RANDOM);
                obj_to_char (obj, ch);
                break;
        }
    }
    

    /*
     * newbie_fighter
     */
    if (!str_prefix(arg1, "newbie_fighter"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, rig_weapon_lookup("broadsword"), rig_material_lookup("steel"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("curiass"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("helmet"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("greaves"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("left boot"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);
        return;

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("right boot"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);
        return;
    }
    /*
     * newbie_swordangel
     */
    if (!str_prefix(arg1, "newbie_swordangel"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, rig_weapon_lookup("katana"), rig_material_lookup("steel"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("curiass"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("helmet"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("greaves"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("right boot"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);
        return;

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("left boot"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);
        return;
    }
    /*
     * newbie_fighter
     */
    if (!str_prefix(arg1, "newbie_thief"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, rig_weapon_lookup("shortsword"), rig_material_lookup("steel"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("curiass"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("greaves"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("right boot"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);
        return;

        obj = create_object (get_obj_index (30), 0);
        create_armor(obj, rig_armor_lookup("left boot"), rig_material_lookup("leather"), 1, FALSE);
        obj_to_char (obj, ch);
        return;
    }
    /*
     * newbie_wizard
     */
    if (!str_prefix(arg1, "newbie_wizard"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, rig_weapon_lookup("dagger"), rig_material_lookup("steel"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a common robe"), FALSE, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a common shirt"), FALSE, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a pair of common pants"), FALSE, FALSE);
        obj_to_char (obj, ch);
        
        obj = create_object (get_obj_index (30), 0);
        create_wizscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        
        obj = create_object (get_obj_index (30), 0);
        create_wizscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        
        obj = create_object (get_obj_index (30), 0);
        create_wizscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        
        return;
    }
    /*
     * newbie_priest
     */
    if (!str_prefix(arg1, "newbie_priest"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, rig_weapon_lookup("mace"), rig_material_lookup("wooden"), 1, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a common robe"), FALSE, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a common shirt"), FALSE, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a pair of common pants"), FALSE, FALSE);
        obj_to_char (obj, ch);
        
        obj = create_object (get_obj_index (30), 0);
        create_priscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        obj = create_object (get_obj_index (30), 0);
        create_priscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        obj = create_object (get_obj_index (30), 0);
        create_priscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        obj = create_object (get_obj_index (30), 0);
        create_priscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        obj = create_object (get_obj_index (30), 0);
        create_priscroll(obj, RIG_RANDOM);
        obj_to_char(obj, ch);
        return;
    }
    
    /*
     * guard_poor
     */
    if (!str_prefix(arg1, "guard_poor"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("iron"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("leather"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * guard_norm
     */
    if (!str_prefix(arg1, "guard_norm"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("steel"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("iron"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * guard_elite
     */
    if (!str_prefix(arg1, "guard_elite"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("imperial"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("imperial"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * guard_vandagard
     */
    if (!str_prefix(arg1, "guard_vandagard"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("elven"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("elven"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * orc
     */
    if (!str_prefix(arg1, "orc"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("orcish"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("orcish"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * elven
     */
    if (!str_prefix(arg1, "elven"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("elven"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("elven"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * dwarven
     */
    if (!str_prefix(arg1, "dwarven"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("dwarven"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("dwarven"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * Goblinish
     */
    if (!str_prefix(arg1, "goblinish"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("goblinish"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            if (number_range(1, 100) <= 40)
            {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("goblinish"), 1, FALSE);
            obj_to_char (obj, ch);
            }
        }
        return;
    }
    /*
     * Goblin_poor
     *
     * Fewer items
     */
    if (!str_prefix(arg1, "goblin_poor"))
    {
        obj = create_object (get_obj_index (30), 0);
        create_weapon(obj, RIG_RANDOM, rig_material_lookup("goblinish"), 1, FALSE);
        obj_to_char (obj, ch);
        for (i = 0; i < rig_armor_max(); i++)
        {
            if (number_range(1, 100) < 75)
            {
            obj = create_object (get_obj_index (30), 0);
            create_armor(obj, i, rig_material_lookup("goblinish"), 1, FALSE);
            obj_to_char (obj, ch);
            }
        }
        return;
    }
    /*
     * commoner
     */
    if (!str_prefix(arg1, "commoner"))
    {
        if (number_range(0, 100) <= 80)
        {
            obj = create_object (get_obj_index (30), 0);
            create_weapon(obj, RIG_RANDOM, rig_material_lookup("iron"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a common robe"), FALSE, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a common shirt"), FALSE, FALSE);
        obj_to_char (obj, ch);

        obj = create_object (get_obj_index (30), 0);
        create_clothing(obj, rig_clothing_lookup("a pair of common pants"), FALSE, FALSE);
        obj_to_char (obj, ch);
        return;
    }
    /*
     * commoner full
     *
     * All equipment
     */
    if (!str_prefix(arg1, "commoner_full"))
    {
        if (number_range(0, 100) <= 80)
        {
            obj = create_object (get_obj_index (30), 0);
            create_weapon(obj, RIG_RANDOM, rig_material_lookup("iron"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        for (i = 0; i < rig_clothing_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_clothing(obj, i, FALSE, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * nobleman
     */
    if (!str_prefix(arg1, "nobleman"))
    {
        if (number_range(0, 100) <= 70)
        {
            obj = create_object (get_obj_index (30), 0);
            create_weapon(obj, RIG_RANDOM, rig_material_lookup("ebony"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        for (i = 0; i < rig_clothing_exp_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_clothing(obj, i, TRUE, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * Wizard
     */
    if (!str_prefix(arg1, "wizard"))
    {
        if (number_range(0, 100) <= 25)
        {
            obj = create_object (get_obj_index (30), 0);
            create_weapon(obj, rig_weapon_lookup("staff"), rig_material_lookup("wooden"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        else
        {
            obj = create_object (get_obj_index (30), 0);
            create_weapon(obj, rig_weapon_lookup("dagger"), rig_material_lookup("steel"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        for (i = 0; i < rig_clothing_exp_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_clothing(obj, i, TRUE, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    /*
     * Priest
     */
    if (!str_prefix(arg1, "priest"))
    {
        if (number_range(0, 100) <= 50)
        {
            obj = create_object (get_obj_index (30), 0);
            create_weapon(obj, rig_weapon_lookup("staff"), rig_material_lookup("wooden"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        else
        {
            obj = create_object (get_obj_index (30), 0);
            create_weapon(obj, rig_weapon_lookup("mace"), rig_material_lookup("wooden"), 1, FALSE);
            obj_to_char (obj, ch);
        }
        for (i = 0; i < rig_clothing_max(); i++)
        {
            obj = create_object (get_obj_index (30), 0);
            create_clothing(obj, i, TRUE, FALSE);
            obj_to_char (obj, ch);
        }
        return;
    }
    return;
}