/
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 <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include "merc.h"
#include "interp.h"
#include "recycle.h"
#include "tables.h"
#include "player.h"

/*
 * religion_table()
 *
 * Conatins master list of all in-game churchs
 */

/*
 * birthsign_table[]
 *
 * Contains all birthsign names.. and bonuses
 */
struct birthsign_type birthsign_table[] =
{
    {"No birthsign",    "No Month"},
    {"The Sun",         "Sun's Dusk"},
    {"The Snowflake",   "Evening Star"},
    {"The Mage",        "Morning Star"},
    {"The Passion",     "Sun's Dawn"},
    {"The Golem",       "First Seed"},
    {"The Snake",       "Rain's Hand"},
    {"The Lion",        "Second Seed"},
    {"The Twins",       "Mid Year"},
    {"The Flame",       "Sun's Height"},
    {"The Moon",        "Last Seed"},
    {"The Bull",        "Hearthfire"},
    {"The Goddess",     "Frostfall"},
    {NULL, NULL},
}; 

struct trait_v_type voice_table[] =
{
    {"normal",          ""},
    {"Squeeky",         "in a squeeky voice"},
    {"Raspy",           "in a raspy voice"},
    {"Low toned",       "in a low voice"},
    {"High pitched",    "in a sharp voice"},
    {"Deep voiced",     "deeply"},
    {"Soft",            "softly"},
    {"Booming",         "boomingly"},
    {"Stressed",        "in a very streesed voice"},
    {"Evil",            "in an evilish voice"},
    {"Sweetly",         "sweetly"},
    {"Demanding",       "demandingly"},
    {"Growling",        "growling"},
    {"Cheery",          "cheerily"},
    {NULL}
};

struct trait_type eye_table[] =
{
    {"Not set"},    
    {"Green"},      
    {"Brown"},
    {"Red"},        
    {"Blue"},       
    {"White"},
    {"Dark Green"}, 
    {"Dark Brown"}, 
    {"Dark Red"},
    {"Dark Blue"},  
    {"Violet"},     
    {"Black"},
    {"Grey"},       
    {"Amber"},      
    {"Azure"},
    {"Blood-Red"},  
    {"Crimson"},    
    {"Cyan"},
    {"Golden"},
    {"Magenta"},
    {"Mercury"},
    {"Pale-Blue"},
    {"Ruby"},
    {"Sapphire"},
    {"Sea-Green"},
    {"Silver"},
    {"Stormy"},
    {"Yellow"},
    {"Dark Grey"},
    {"Emerald"},
    {"Topaz"},
    {NULL}
};

struct trait_type hair_table[] =
{
    {"Not set"},
    {"Brunette"},
    {"Black"},
    {"Blonde"},
    {"Grey"},
    {"Red"},
    {"Dark Brunette"},
    {"Purple"},
    {"Dark Grey"},
    {"White"},
    {"Bald"},
    {"Salt-Pepper"},
    {"Copper"},
    {"Sandy-Blonde"},
    {"Golden"},
    {NULL}
};

struct trait_type weight_table[] =
{
    {"Muscular"},
    {"Skinny"},
    {"Frail"},
    {"Normal"},
    {"Heavy"},
    {"Lanky"},
    {"Bulky"},
    {"Slender"},
    {"Toned"},
    {"Stringy"},
    {"Massive"},
    {"Sickly"},
    {"Diminutive"},
    {"Delicate"},
    {"Petite"},
    {"Strapping"},
    {"Brawny"},
    {"Chubby"},
    {"Plump"},
    {"Thin"},
    {"Scrawny"},
    {NULL}
};

struct trait_type height_table[] =
{
    {"very short"},
    {"shrimp"},
    {"munchkin"},
    {"short"},
    {"average"},
    {"tall"},
    {"giant"},
    {NULL}
};

struct trait_type face_hair_table[] =
{
    {"None"},
    {"Mustache"},
    {"Goatee"},
    {"Short Beard"},
    {"Sideburns"},
    {"Long Beard"},
    {"Long Mustache"},
    {"Stubble"},
    {"Grizzled"},
    {"Muttonchops"},
    {NULL}
};

/*
 * eye_lookup()
 *
 * Returns table number of eye type
 */
int eye_lookup(const char * name)
{
    int i;
    
    for (i = 0; eye_table[i].name != NULL; i++)
    {
        if (eye_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (eye_table[i].name[0]) && !str_prefix (name, eye_table[i].name))
            return i;
    }
    return -1;
}

/*
 * birthsign_lookup()
 *
 * Returns table number of birthsign type
 */
int birthsign_lookup(const char * name)
{
    int i;
    
    for (i = 0; birthsign_table[i].birthsign != NULL; i++)
    {
        if (birthsign_table[i].birthsign == NULL)
            break;
        if (LOWER (name[0]) == LOWER (birthsign_table[i].birthsign[0]) && !str_prefix (name, birthsign_table[i].birthsign))
            return i;
    }
    return -1;
}

/*
 * hair_lookup()
 *
 * Returns table number of hair type
 */
int hair_lookup(const char * name)
{
    int i;
    
    for (i = 0; hair_table[i].name != NULL; i++)
    {
        if (hair_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (hair_table[i].name[0]) && !str_prefix (name, hair_table[i].name))
            return i;
    }
    return -1;
}

/*
 * face_hair_lookup()
 *
 * Returns table number of face_hair type
 */
int face_hair_lookup(const char * name)
{
    int i;
    
    for (i = 0; face_hair_table[i].name != NULL; i++)
    {
        if (face_hair_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (face_hair_table[i].name[0]) && !str_prefix (name, face_hair_table[i].name))
            return i;
    }
    return -1;
}

/*
 * voice_lookup()
 *
 * Returns table number of voice type
 */
int voice_lookup(const char * name)
{
    int i;
    
    for (i = 0; voice_table[i].name != NULL; i++)
    {
        if (voice_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (voice_table[i].name[0]) && !str_prefix (name, voice_table[i].name))
            return i;
    }
    return -1;
}



/*
 * height_lookup()
 *
 * Returns table number of height type
 */
int height_lookup(const char * name)
{
    int i;
    
    for (i = 0; height_table[i].name != NULL; i++)
    {
        if (height_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (height_table[i].name[0]) && !str_prefix (name, height_table[i].name))
            return i;
    }
    return -1;
}


/*
 * weight_lookup()
 *
 * Returns table number of weight type
 */
int weight_lookup(const char * name)
{
    int i;
    
    for (i = 0; weight_table[i].name != NULL; i++)
    {
        if (weight_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (weight_table[i].name[0]) && !str_prefix (name, weight_table[i].name))
            return i;
    }
    return -1;
}

/*
 * return_height()
 *
 * Returns player's height in string format,
 * Example: height == 75 returns "6'3"
 * This is in American Feet ;)
 */
char * return_height_org(int height)
{
    static char buf[MAX_BUFFER];
    div_t temp;
    int x = height;
    int y = 12;

    temp = div( x, y );
    sprintf(buf, "%d'%d", temp.quot, temp.rem );

    return buf;
}

/*
 * return_skin()
 *
 * Returns the skin tone of the given type.
 */
char * return_skin(int skin)
{
    return "Not Finished";
}


/*
 * return_align()
 *
 * Returns alignment in Long form
 *
 */
char * return_align(int law, int good)
{
    static char buf[MAX_BUFFER];
    static char buf1[MAX_BUFFER];
    static char buf2[MAX_BUFFER];
    int true_neutral = 0;
    
    /* Handle Law and order first */
    if (law >= 66 || law >= 100)
        sprintf(buf1, "Lawful ");
    else if (law >= 33)
    {
        sprintf(buf1, "Neutral ");
        true_neutral++;
    }
    else
        sprintf(buf1, "Chaotic ");
    
    /* Ok handle Good and Evil */
    if (good >= 66 || good >= 100)
        sprintf(buf2, "Good");
    else if (good >= 33)
    {
        sprintf(buf2, "Neutral");
        true_neutral++;
    }
    else
        sprintf(buf2, "Evil");

    if (true_neutral != 2)
        sprintf(buf, "%s%s", buf1, buf2);
    else
        sprintf(buf, "True Neutral");
        
    return buf;
}

/*
 * return_birthsign()
 *
 * Returns the full birthsign of the player.
 */
char * return_birthsign     (int birthsign)
{
    static char buf[MAX_BUFFER];

    sprintf(buf, "%s", birthsign_table[birthsign].birthsign);
    return buf;
}

/*
 * return_weight()
 *
 * Returns weight
 */
char * return_weight(int weight)
{
    static char buf[MSL];
    
    sprintf(buf, "%d lbs", weight);
    
    return buf;
}