circlemud_squared_0.5.153/cnf/
circlemud_squared_0.5.153/etc/
circlemud_squared_0.5.153/etc/etc/
circlemud_squared_0.5.153/etc/house/
circlemud_squared_0.5.153/etc/misc/
circlemud_squared_0.5.153/etc/plralias/A-E/
circlemud_squared_0.5.153/etc/plralias/F-J/
circlemud_squared_0.5.153/etc/plralias/K-O/
circlemud_squared_0.5.153/etc/plralias/P-T/
circlemud_squared_0.5.153/etc/plralias/U-Z/
circlemud_squared_0.5.153/etc/plralias/ZZZ/
circlemud_squared_0.5.153/etc/plrobjs/
circlemud_squared_0.5.153/etc/plrobjs/A-E/
circlemud_squared_0.5.153/etc/plrobjs/F-J/
circlemud_squared_0.5.153/etc/plrobjs/K-O/
circlemud_squared_0.5.153/etc/plrobjs/P-T/
circlemud_squared_0.5.153/etc/plrobjs/U-Z/
circlemud_squared_0.5.153/etc/plrobjs/ZZZ/
circlemud_squared_0.5.153/etc/text/
circlemud_squared_0.5.153/etc/text/help/
circlemud_squared_0.5.153/src/util/
circlemud_squared_0.5.153/src/util/worldconv/
/* ************************************************************************
*   File: structs.h                                     Part of CircleMUD *
*  Usage: header file for central structures and contstants               *
*                                                                         *
*  All rights reserved.  See license.doc for complete information.        *
*                                                                         *
*  Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
*  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
************************************************************************ */

/*
 * We have hare the parts of structs.h needed to load the stock world
 * and prototype arrays.
 *
 * You should update it with structures specific to your mud if they've
 * been changed from stock.
 */

#ifndef __STRUCTS_H__
#define __STRUCTS_H__


typedef signed char             sbyte;
typedef unsigned char           ubyte;
typedef signed short int        sh_int;
typedef unsigned short int      ush_int;
typedef signed char             byte;
#if !defined(__cplusplus)       /* Anyone know a portable method? */
typedef char                    bool;
#endif


#define SPECIAL(name) \
   int (name)(struct char_data *ch, void *me, int cmd, char *argument)


#define NOWHERE        (-1)    /* nil reference for rooms      */
#define NOTHING        (-1)    /* nil reference for objects    */
#define NOBODY         (-1)    /* nil reference for mobiles    */
#define IDXTYPE        sh_int


#define APPLY_NONE              0     /* No effect                    */


#define LVL_IMPL        34
#define LVL_GRGOD       33
#define LVL_GOD         32
#define LVL_IMMORT      31

/* Level of the 'freeze' command */
#define LVL_FREEZE      LVL_GRGOD

#define NUM_OF_DIRS     6       /* number of directions in a room (nsewud) */
#define NUM_CLASSES	4

#define MAX_STRING_LENGTH       8192
#define MAX_INPUT_LENGTH        256
#define MAX_PWD_LENGTH          10
#define MAX_TONGUE              3
#define NUM_WEARS               18 
#define MAX_OBJ_AFFECT          6
#define MAX_SKILLS              200
#define MAX_SPELLS                 130
#define TOP_SPELL_DEFINE            299

#define NUM_OF_DIRS    6


#define NORTH          0
#define EAST           1
#define SOUTH          2
#define WEST           3
#define UP             4
#define DOWN           5


/* Player conditions */
#define DRUNK                   (0)
#define FULL                    (1)
#define THIRST                  (2)


#define AUTH_NONE               (0)     /**< The char has no rights at all. */
#define AUTH_GUEST              (1)     /**< The char has guest rights.     */
#define AUTH_PLAYER             (2)     /**< The char has player rights.    */
#define AUTH_WIZARD             (3)     /**< The char has wizard rights.    */
#define AUTH_OWNER              (4)     /**< The char has owner rights.     */


#define POS_DEAD       0        /* dead                 */
#define POS_MORTALLYW  1        /* mortally wounded     */
#define POS_INCAP      2        /* incapacitated        */
#define POS_STUNNED    3        /* stunned              */
#define POS_SLEEPING   4        /* sleeping             */
#define POS_RESTING    5        /* resting              */
#define POS_SITTING    6        /* sitting              */
#define POS_FIGHTING   7        /* fighting             */
#define POS_STANDING   8        /* standing             */


/* Player flags: used by char_data.char_specials.act */
#define PLR_KILLER      (1 << 0)   /* Player is a player-killer         */
#define PLR_THIEF       (1 << 1)   /* Player is a player-thief          */
#define PLR_FROZEN      (1 << 2)   /* Player is frozen                  */
#define PLR_DONTSET     (1 << 3)   /* Don't EVER set (ISNPC bit)        */
#define PLR_WRITING     (1 << 4)   /* Player writing (board/mail/olc)   */
#define PLR_MAILING     (1 << 5)   /* Player is writing mail            */
#define PLR_CRASH       (1 << 6)   /* Player needs to be crash-saved    */
#define PLR_SITEOK      (1 << 7)   /* Player has been site-cleared      */
#define PLR_NOSHOUT     (1 << 8)   /* Player not allowed to shout/goss  */
#define PLR_NOTITLE     (1 << 9)   /* Player not allowed to set title   */
#define PLR_DELETED     (1 << 10)  /* Player deleted - space reusable   */
#define PLR_LOADROOM    (1 << 11)  /* Player uses nonstandard loadroom  */
#define PLR_NOWIZLIST   (1 << 12)  /* Player shouldn't be on wizlist    */
#define PLR_NODELETE    (1 << 13)  /* Player shouldn't be deleted       */
#define PLR_INVSTART    (1 << 14)  /* Player should enter game wizinvis */
#define PLR_CRYO        (1 << 15)  /* Player is cryo-saved (purge prog) */
#define PLR_NOTDEADYET  (1 << 16)  /* (R) Player being extracted.       */


#define ROOM_DARK               (1 << 0)   /* Dark                      */
#define ROOM_DEATH              (1 << 1)   /* Death trap                */
#define ROOM_NOMOB              (1 << 2)   /* MOBs not allowed          */
#define ROOM_INDOORS            (1 << 3)   /* Indoors                   */
#define ROOM_PEACEFUL           (1 << 4)   /* Violence not allowed      */
#define ROOM_SOUNDPROOF         (1 << 5)   /* Shouts, gossip blocked    */
#define ROOM_NOTRACK            (1 << 6)   /* Track won't go through    */
#define ROOM_NOMAGIC            (1 << 7)   /* Magic not allowed         */
#define ROOM_TUNNEL             (1 << 8)   /* room for only 1 pers      */
#define ROOM_PRIVATE            (1 << 9)   /* Can't teleport in         */
#define ROOM_GODROOM            (1 << 10)  /* LVL_GOD+ only allowed     */
#define ROOM_HOUSE              (1 << 11)  /* (R) Room is a house       */
#define ROOM_HOUSE_CRASH        (1 << 12)  /* (R) House needs saving    */
#define ROOM_ATRIUM             (1 << 13)  /* (R) The door to a house   */
#define ROOM_OLC                (1 << 14)  /* (R) Modifyable/!compress  */
#define ROOM_BFS_MARK           (1 << 15)  /* (R) breath-first srch mrk */


#define EX_ISDOOR               (1 << 0)   /* Exit is a door            */
#define EX_CLOSED               (1 << 1)   /* The door is closed        */
#define EX_LOCKED               (1 << 2)   /* The door is locked        */
#define EX_PICKPROOF            (1 << 3)   /* Lock can't be picked      */


#define SECT_INSIDE          0             /* Indoors                   */
#define SECT_CITY            1             /* In a city                 */
#define SECT_FIELD           2             /* In a field                */
#define SECT_FOREST          3             /* In a forest               */
#define SECT_HILLS           4             /* In the hills              */
#define SECT_MOUNTAIN        5             /* On a mountain             */
#define SECT_WATER_SWIM      6             /* Swimmable water           */
#define SECT_WATER_NOSWIM    7             /* Water - need a boat       */
#define SECT_FLYING          8             /* Wheee!                    */
#define SECT_UNDERWATER      9             /* Underwater                */


#define MOB_SPEC         (1 << 0)  /* Mob has a callable spec-proc      */
#define MOB_SENTINEL     (1 << 1)  /* Mob should not move               */
#define MOB_SCAVENGER    (1 << 2)  /* Mob picks up stuff on the ground  */
#define MOB_ISNPC        (1 << 3)  /* (R) Automatically set on all Mobs */
#define MOB_AWARE        (1 << 4)  /* Mob can't be backstabbed          */
#define MOB_AGGRESSIVE   (1 << 5)  /* Mob auto-attacks everybody nearby */
#define MOB_STAY_ZONE    (1 << 6)  /* Mob shouldn't wander out of zone  */
#define MOB_WIMPY        (1 << 7)  /* Mob flees if severely injured     */
#define MOB_AGGR_EVIL    (1 << 8)  /* Auto-attack any evil PC's         */
#define MOB_AGGR_GOOD    (1 << 9)  /* Auto-attack any good PC's         */
#define MOB_AGGR_NEUTRAL (1 << 10) /* Auto-attack any neutral PC's      */
#define MOB_MEMORY       (1 << 11) /* remember attackers if attacked    */
#define MOB_HELPER       (1 << 12) /* attack PCs fighting other NPCs    */
#define MOB_NOCHARM      (1 << 13) /* Mob can't be charmed              */
#define MOB_NOSUMMON     (1 << 14) /* Mob can't be summoned             */
#define MOB_NOSLEEP      (1 << 15) /* Mob can't be slept                */
#define MOB_NOBASH       (1 << 16) /* Mob can't be bashed (e.g. trees)  */
#define MOB_NOBLIND      (1 << 17) /* Mob can't be blinded              */
#define MOB_NOTDEADYET   (1 << 18) /* (R) Mob being extracted.          */


#define PRF_BRIEF       (1 << 0)  /* Room descs won't normally be shown */
#define PRF_COMPACT     (1 << 1)  /* No extra CRLF pair before prompts  */
#define PRF_DEAF        (1 << 2)  /* Can't hear shouts                  */
#define PRF_NOTELL      (1 << 3)  /* Can't receive tells                */
#define PRF_DISPHP      (1 << 4)  /* Display hit points in prompt       */
#define PRF_DISPMANA    (1 << 5)  /* Display mana points in prompt      */
#define PRF_DISPMOVE    (1 << 6)  /* Display move points in prompt      */
#define PRF_AUTOEXIT    (1 << 7)  /* Display exits in a room            */
#define PRF_NOHASSLE    (1 << 8)  /* Aggr mobs won't attack             */
#define PRF_QUEST       (1 << 9)  /* On quest                           */
#define PRF_SUMMONABLE  (1 << 10) /* Can be summoned                    */
#define PRF_NOREPEAT    (1 << 11) /* No repetition of comm commands     */
#define PRF_HOLYLIGHT   (1 << 12) /* Can see in dark                    */
#define PRF_COLOR_1     (1 << 13) /* Color (low bit)                    */
#define PRF_COLOR_2     (1 << 14) /* Color (high bit)                   */
#define PRF_NOWIZ       (1 << 15) /* Can't hear wizline                 */
#define PRF_LOG1        (1 << 16) /* On-line System Log (low bit)       */
#define PRF_LOG2        (1 << 17) /* On-line System Log (high bit)      */
#define PRF_NOAUCT      (1 << 18) /* Can't hear auction channel         */
#define PRF_NOGOSS      (1 << 19) /* Can't hear gossip channel          */
#define PRF_NOGRATZ     (1 << 20) /* Can't hear grats channel           */
#define PRF_ROOMFLAGS   (1 << 21) /* Can see room flags (ROOM_x)        */
#define PRF_DISPAUTO    (1 << 22) /* Show prompt HP, MP, MV when < 30%. */


#define ITEM_LIGHT      1               /* Item is a light source       */
#define ITEM_SCROLL     2               /* Item is a scroll             */
#define ITEM_WAND       3               /* Item is a wand               */
#define ITEM_STAFF      4               /* Item is a staff              */
#define ITEM_WEAPON     5               /* Item is a weapon             */
#define ITEM_FIREWEAPON 6               /* Unimplemented                */
#define ITEM_MISSILE    7               /* Unimplemented                */
#define ITEM_TREASURE   8               /* Item is a treasure, not gold */
#define ITEM_ARMOR      9               /* Item is armor                */
#define ITEM_POTION    10               /* Item is a potion             */
#define ITEM_WORN      11               /* Unimplemented                */
#define ITEM_OTHER     12               /* Misc object                  */
#define ITEM_TRASH     13               /* Trash - shopkeeps won't buy  */
#define ITEM_TRAP      14               /* Unimplemented                */
#define ITEM_CONTAINER 15               /* Item is a container          */
#define ITEM_NOTE      16               /* Item is note                 */
#define ITEM_DRINKCON  17               /* Item is a drink container    */
#define ITEM_KEY       18               /* Item is a key                */
#define ITEM_FOOD      19               /* Item is food                 */
#define ITEM_MONEY     20               /* Item is money (gold)         */
#define ITEM_PEN       21               /* Item is a pen                */
#define ITEM_BOAT      22               /* Item is a boat               */
#define ITEM_FOUNTAIN  23               /* Item is a fountain           */


#define ITEM_WEAR_TAKE          (1 << 0)  /* Item can be takes          */
#define ITEM_WEAR_FINGER        (1 << 1)  /* Can be worn on finger      */
#define ITEM_WEAR_NECK          (1 << 2)  /* Can be worn around neck    */
#define ITEM_WEAR_BODY          (1 << 3)  /* Can be worn on body        */
#define ITEM_WEAR_HEAD          (1 << 4)  /* Can be worn on head        */
#define ITEM_WEAR_LEGS          (1 << 5)  /* Can be worn on legs        */
#define ITEM_WEAR_FEET          (1 << 6)  /* Can be worn on feet        */
#define ITEM_WEAR_HANDS         (1 << 7)  /* Can be worn on hands       */
#define ITEM_WEAR_ARMS          (1 << 8)  /* Can be worn on arms        */
#define ITEM_WEAR_SHIELD        (1 << 9)  /* Can be used as a shield    */
#define ITEM_WEAR_ABOUT         (1 << 10) /* Can be worn about body     */
#define ITEM_WEAR_WAIST         (1 << 11) /* Can be worn around waist   */
#define ITEM_WEAR_WRIST         (1 << 12) /* Can be worn on wrist       */
#define ITEM_WEAR_WIELD         (1 << 13) /* Can be wielded             */
#define ITEM_WEAR_HOLD          (1 << 14) /* Can be held                */


#define ITEM_GLOW          (1 << 0)     /* Item is glowing              */
#define ITEM_HUM           (1 << 1)     /* Item is humming              */
#define ITEM_NORENT        (1 << 2)     /* Item cannot be rented        */
#define ITEM_NODONATE      (1 << 3)     /* Item cannot be donated       */
#define ITEM_NOINVIS       (1 << 4)     /* Item cannot be made invis    */
#define ITEM_INVISIBLE     (1 << 5)     /* Item is invisible            */
#define ITEM_MAGIC         (1 << 6)     /* Item is magical              */
#define ITEM_NODROP        (1 << 7)     /* Item is cursed: can't drop   */
#define ITEM_BLESS         (1 << 8)     /* Item is blessed              */
#define ITEM_ANTI_GOOD     (1 << 9)     /* Not usable by good people    */
#define ITEM_ANTI_EVIL     (1 << 10)    /* Not usable by evil people    */
#define ITEM_ANTI_NEUTRAL  (1 << 11)    /* Not usable by neutral people */
#define ITEM_ANTI_MAGIC_USER (1 << 12)  /* Not usable by mages          */
#define ITEM_ANTI_CLERIC   (1 << 13)    /* Not usable by clerics        */
#define ITEM_ANTI_THIEF    (1 << 14)    /* Not usable by thieves        */
#define ITEM_ANTI_WARRIOR  (1 << 15)    /* Not usable by warriors       */
#define ITEM_NOSELL        (1 << 16)    /* Shopkeepers won't touch it   */


typedef IDXTYPE room_vnum;
typedef IDXTYPE obj_vnum;
typedef IDXTYPE mob_vnum;
typedef IDXTYPE zone_vnum;
typedef IDXTYPE shop_vnum;
typedef IDXTYPE room_rnum;
typedef IDXTYPE obj_rnum;
typedef IDXTYPE mob_rnum;
typedef IDXTYPE zone_rnum;
typedef IDXTYPE shop_rnum;

/*
 * Typedefs used bo CM^2
 */

typedef IDXTYPE roomVnum_t;
typedef IDXTYPE objVnum_t;
typedef IDXTYPE mobVnum_t;
typedef IDXTYPE zoneVnum_t;
typedef IDXTYPE shopVnum_t;
typedef IDXTYPE roomRnum_t;
typedef IDXTYPE objRnum_t;
typedef IDXTYPE mobRnum_t;
typedef IDXTYPE zoneRnum_t;
typedef IDXTYPE shopRnum_t;

typedef struct reset_com resetCommand_t;
typedef struct zone_data zoneData_t;


/*
 * Extra Descriptions
 */

struct extra_descr_data {
   char *keyword;                 /* Keyword in look/examine          */
   char *description;             /* What to see                      */
   struct extra_descr_data *next; /* Next in list                     */
};

/*
 * Objects
 */

struct obj_flag_data {
   int  value[4];       /* Values of the item (see list)    */
   byte type_flag;      /* Type of item                     */
   int  wear_flags;     /* Where you can wear it            */
   int  extra_flags;    /* If it hums, glows, etc.          */
   int  weight;         /* Weigt what else                  */
   int  cost;           /* Value when sold (gp.)            */
   int  cost_per_day;   /* Cost to keep pr. real day        */
   int  timer;          /* Timer for object                 */
   long bitvector;      /* To set chars bits                */
};


struct obj_affected_type {
   byte location;      /* Which ability to change (APPLY_XXX) */
   sbyte modifier;     /* How much it changes by              */
};


struct obj_data {
   obj_vnum item_number;        /* Where in data-base                   */
   room_rnum in_room;           /* In what room -1 when conta/carr      */

   struct obj_flag_data obj_flags;/* Object information               */
   struct obj_affected_type affected[MAX_OBJ_AFFECT];  /* affects */

   char *name;                    /* Title of object :get etc.        */
   char *description;             /* When in room                     */
   char *short_description;       /* when worn/carry/in cont.         */
   char *action_description;      /* What to write when used          */
   struct extra_descr_data *ex_description; /* extra descriptions     */
   struct char_data *carried_by;  /* Carried by :NULL in room/conta   */
   struct char_data *worn_by;     /* Worn by?                         */
   sh_int worn_on;                /* Worn where?                      */

   struct obj_data *in_obj;       /* In what object NULL when none    */
   struct obj_data *contains;     /* Contains objects                 */

   struct obj_data *next_content; /* For 'contains' lists             */
   struct obj_data *next;         /* For the object list              */
};

/*
 * Rooms
 */

struct room_direction_data {
   char *general_description;       /* When look DIR.                   */

   char *keyword;               /* for open/close                       */

   sh_int exit_info;    /* Exit info                    */
   obj_vnum key;                /* Key's number (-1 for no key)         */
   room_rnum to_room;           /* Where direction leads (NOWHERE)      */
};


struct room_data {
   room_vnum number;            /* Rooms number (vnum)                */
   zone_rnum zone;              /* Room zone (for resetting)          */
   int  sector_type;            /* sector type (move/hide)            */
   char *name;                  /* Rooms name 'You are ...'           */
   char *description;           /* Shown when entered                 */
   struct extra_descr_data *ex_description; /* for examine/look       */
   struct room_direction_data *dir_option[NUM_OF_DIRS]; /* Directions */
   int room_flags;              /* DEATH,DARK ... etc */

   byte light;                  /* Number of lightsources in room     */
   SPECIAL(*func);

   struct obj_data *contents;   /* List of items in room              */
   struct char_data *people;    /* List of NPC / PC in room           */
};

/*
 * PC/NPC
 */

struct time_data {
   time_t birth;    /* This represents the characters age                */
   time_t logon;    /* Time of the last logon (used to calculate played) */
   int  played;     /* This is the total accumulated time played in secs */
};


struct memory_rec_struct {
   long id;
   struct memory_rec_struct *next;
};

typedef struct memory_rec_struct memory_rec;


struct char_player_data {
   char passwd[MAX_PWD_LENGTH+1]; /* character's password      */
   char *name;         /* PC / NPC s name (kill ...  )         */
   char *short_descr;  /* for NPC 'actions'                    */
   char *long_descr;   /* for 'look'                           */
   char *description;  /* Extra descriptions                   */
   char *title;        /* PC / NPC's title                     */
   byte sex;           /* PC / NPC's sex                       */
   byte chclass;       /* PC / NPC's class                     */
   byte level;         /* PC / NPC's level                     */
   byte auth;
   sh_int hometown;    /* PC s Hometown (zone)                 */
   struct time_data time;  /* PC's AGE in days                 */
   ubyte weight;       /* PC / NPC's weight                    */
   ubyte height;       /* PC / NPC's height                    */
};


struct char_ability_data {
   sbyte str;
   sbyte str_add;      /* 000 - 100 if strength 18             */
   sbyte intel;
   sbyte wis;
   sbyte dex;
   sbyte con;
   sbyte cha;
};


struct char_point_data {
   sh_int mana;
   sh_int max_mana;     /* Max mana for PC/NPC                     */
   sh_int hit;
   sh_int max_hit;      /* Max hit for PC/NPC                      */
   sh_int move;
   sh_int max_move;     /* Max move for PC/NPC                     */

   sh_int armor;        /* Internal -100..100, external -10..10 AC */
   int  gold;           /* Money carried                           */
   int  bank_gold;      /* Gold the char has in a bank account     */
   int  exp;            /* The experience of the player            */

   sbyte hitroll;       /* Any bonus or penalty to the hit roll    */
   sbyte damroll;       /* Any bonus or penalty to the damage roll */
};


struct char_special_data_saved {
   int  alignment;              /* +-1000 for alignments                */
   long idnum;                  /* player's idnum; -1 for mobiles       */
   long /*bitvector_t*/ act;    /* act flag for NPC's; player flag for PC's */

   long /*bitvector_t*/ affected_by;
                                /* Bitvector for spells/skills affected by */
   sh_int apply_saving_throw[5]; /* Saving throw (Bonuses)              */
};


struct char_special_data {
   struct char_data *fighting;  /* Opponent                             */
   struct char_data *hunting;   /* Char hunted by this char             */

   byte position;               /* Standing, fighting, sleeping, etc.   */

   int  carry_weight;           /* Carried weight                       */
   byte carry_items;            /* Number of items carried              */
   int  timer;                  /* Timer for update                     */

   struct char_special_data_saved saved; /* constants saved in plrfile  */
};


struct player_special_data_saved {
   byte skills[MAX_SKILLS+1];   /* array of skills plus skill 0         */
   byte PADDING0;               /* used to be spells_to_learn           */
   bool talks[MAX_TONGUE];      /* PC s Tongues 0 for NPC               */
   int  wimp_level;             /* Below this # of hit points, flee!    */
   byte freeze_level;           /* Level of god who froze char, if any  */
   byte freeze_auth;
   sh_int invis_level;          /* level of invisibility                */
   sh_int invis_auth;
   room_vnum load_room;         /* Which room to place char in          */
   long /*bitvector_t*/ pref;   /* preference flags for PC's.           */
   ubyte bad_pws;               /* number of bad password attemps       */
   sbyte conditions[3];         /* Drunk, full, thirsty                 */

   /* spares below for future expansion.  You can change the names from
      'sparen' to something meaningful, but don't change the order.  */

   ubyte spare0;
   ubyte spare1;
   ubyte spare2;
   ubyte spare3;
   ubyte spare4;
   ubyte spare5;
   int spells_to_learn;         /* How many can you learn yet this level*/
   int spare7;
   int spare8;
   int spare9;
   int spare10;
   int spare11;
   int spare12;
   int spare13;
   int spare14;
   int spare15;
   int spare16;
   long spare17;
   long spare18;
   long spare19;
   long spare20;
   long spare21;
};


struct player_special_data {
   struct player_special_data_saved saved;

   char *poofin;                /* Description on arrival of a god.     */
   char *poofout;               /* Description upon a god's exit.       */
   struct alias_data *aliases;  /* Character's aliases                  */
   long last_tell;              /* idnum of last tell from              */
   void *last_olc_targ;         /* olc control                          */
   int last_olc_mode;           /* olc control                          */
};


struct mob_special_data {
   memory_rec *memory;      /* List of attackers to remember           */
   byte attack_type;        /* The Attack Type Bitvector for NPC's     */
   byte default_pos;        /* Default position for NPC                */
   byte damnodice;          /* The number of damage dice's             */
   byte damsizedice;        /* The size of the damage dice's           */
};


struct char_data {
   int pfilepos;                         /* playerfile pos                */
   mob_rnum nr;                          /* Mob's rnum                    */
   room_rnum in_room;                    /* Location (real room number)   */
   room_rnum was_in_room;                /* location for linkdead people  */
   int wait;                             /* wait for how many loops       */

   struct char_player_data player;       /* Normal data                   */
   struct char_ability_data real_abils;  /* Abilities without modifiers   */
   struct char_ability_data aff_abils;   /* Abils with spells/stones/etc  */
   struct char_point_data points;        /* Points                        */
   struct char_special_data char_specials;      /* PC/NPC specials        */
   struct player_special_data *player_specials; /* PC specials            */
   struct mob_special_data mob_specials;        /* NPC specials           */

   struct affected_type *affected;       /* affected by what spells       */
   struct obj_data *equipment[NUM_WEARS];/* Equipment array               */

   struct obj_data *carrying;            /* Head of list                  */
   struct descriptor_data *desc;         /* NULL for mobiles              */

   struct char_data *next_in_room;     /* For room->people - list         */
   struct char_data *next;             /* For either monster or ppl-list  */
   struct char_data *next_fighting;    /* For fighting list               */

   struct follow_type *followers;        /* List of chars followers       */
   struct char_data *master;             /* Who is char following?        */

};

/*
 * Element in monster and object index-tables.
 *
 * NOTE: Assumes sizeof(mob_vnum) >= sizeof(obj_vnum)
 */
struct index_data {
   mob_vnum     vnum;   /* virtual number of this mob/obj               */
   int          number; /* number of existing units of this mob/obj     */
   SPECIAL(*func);
};

#endif /* __STRUCTS_H__ */