#define MAX_SKILLS      15
#define MAX_TALENTS     15
#define MAX_KNOW        15
/* Attributes */
#define ATTR_FORCE          0       /* Force        */
#define ATTR_INTUI          1       /* Intuition    */
#define ATTR_SPEED          2       /* Speed        */
#define ATTR_AGILI          3       /* Agility      */
#define ATTR_RESIL          4       /* Resilience   */
#define ATTR_LUCK           5       /* Luck         */
#define ATTR_PERSON         6       /* Personality  */
#define ATTR_WILLP          7       /* Willpower    */
#define MAX_ATTRIBS         8       /* Max          */

/* Statistics */
#define STAT_HP             0       /* Hitpoints    */
#define STAT_HP_MAX         1       /* Max HP       */
#define STAT_MANA           2       /* Mana         */
#define STAT_MANA_MAX       3       /* Max Mana     */
#define STAT_FATIGUE        4       /* Fatigue      */
#define STAT_FATIGUE_MAX    5       /* Max Fati     */
#define STAT_STAMINA        6       /* Stamina      */
#define STAT_STAMINA_MAX    7       /* Max Stamina  */
#define MAX_STATS           8       /* Max Stats    */

/* Races    */
#define RACE_PROTO          0       /* Grey Mass of Protoplasm  ie unclassed    */
#define RACE_NORD           1       /* Nords                                    */
#define RACE_FELAIN         2       /* Felains, ie cat people                   */
#define RACE_DWARF          3       /* Dwarves, short warriors                  */
#define RACE_HUMAN          4       /* Ye plain ole Humans                      */
#define RACE_GORIAN         5       /* Gorians, Reptilians                      */
#define RACE_WOOD_ELF       6       /* Wood Elves                               */
#define RACE_HIGH_ELF       7       /* High Elves                               */
#define RACE_DARK_ELF       8       /* Dark Elves                               */
#define RACE_MAX            9       /* Total # of races                         */

/* Classes */
#define CLASS_PROTO         0       /* No class                         */
#define CLASS_THIEF         1       /* Thief Class                      */
#define CLASS_BURGLAR       2       /* Thief Sub: Adept at Picklock     */
#define CLASS_ASSASSIN      3       /* Thief Sub: Adept at Critical     */
#define CLASS_ROGUE         4       /* Thief Sub: Adept at Combat       */
#define CLASS_ACROBAT       5       /* Thief Sub: Adept at Acrobatics   */
#define CLASS_BARD          6       /* Thief Sub: Adept at Music/Morale */
#define CLASS_WARRIOR       7       /* Ye ole Warrior                   */
#define CLASS_KNIGHT        8       /* Warrior Sub: Adept at Defense    */
#define CLASS_RANGER        9       /* Warrior Sub: Adept at Tracking   */
#define CLASS_ARCHER        10      /* Warrior Sub: Adept at Ranged     */
#define CLASS_MONK          11      /* Warrior Sub: Adept at Unnamed    */
#define CLASS_BARBARIAN     12      /* Warrior Sub: Adept at Survival   */
#define CLASS_MAGE          13      /* Ye Ole Mage                      */
#define CLASS_SOURCERER     14      /* Mage Sub: Unable to regen Mana   */
#define CLASS_HEALER        15      /* Mage Sub: Adept at Healing       */
#define CLASS_BATTLE_MAGE   16      /* Mage Sub: Adept with Weapons     */
#define CLASS_SPELLSWORD    17      /* Mage Sub: Can wear Armor w/cast  */
#define CLASS_NIGHTBLADE    18      /* Mage Sub: Thief/Mage Subclass    */
#define CLASS_MAX           19      /* Total # of Classes               */

/* Sizes */
#define NO_SIZE         0
#define SIZE_1FT        1
#define SIZE_2FT        2
#define SIZE_3FT        3
#define SIZE_4FT        4
#define SIZE_5FT        5
#define SIZE_6FT        6
#define SIZE_7FT        7
#define SIZE_8FT        8
#define SIZE_9FT        9

/* Various Bitflags for Restrictions */
#define NO_RESTRICTIONS 0       /* Used for 0 */
#define NO_ARMOR        A
#define NO_LEATHER      B
#define NO_CHAIN        C
#define NO_PLATE        D
#define NO_SPECIAL      E
#define NO_SM_SHIELD    F
#define NO_MD_SHIELD    G
#define NO_LG_SHIELD    H

/************************
 * Player Tables        *
 ************************/
struct race_type
{
    char  * name;
    char  * sname; 
    sh_int  race_number;
    long    eq_restrictions;
    sh_int  max_view_day;
    sh_int  max_view_night;
    sh_int  max_view_dusk;
    sh_int  size_range[2];
};

struct class_type
{
    char  * name;
    sh_int  class_number;
    sh_int  start_health;
    sh_int  hit_dice_size;
    long    eq_restrictions;
};

struct abilities_type
{
    char  * name;
    sh_int  number;
    sh_int  modifier;
};

extern struct race_type race_table[];
extern struct class_type class_table[];
extern struct abilities_type talent_table[];
extern struct abilities_type skill_table[];
extern struct abilities_type knowledge_table[];
    
/* Various Declares */
int return_race         (int prace);
int return_class        (int pclass);
int find_race           (const char *name);
int find_class          (const char *name);
int find_knowledge      (const char *name);
int find_skill          (const char *name);
int find_talent         (const char *name);
void cmd_train          (D_MOBILE * ch, char *arg);