1stMud4.5.3/
1stMud4.5.3/backup/
1stMud4.5.3/bin/
1stMud4.5.3/bin/extras/
1stMud4.5.3/data/i3/
1stMud4.5.3/doc/1stMud/
1stMud4.5.3/doc/Diku/
1stMud4.5.3/doc/MPDocs/
1stMud4.5.3/doc/Rom/
1stMud4.5.3/notes/
/**************************************************************************
*  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
*  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
*                                                                         *
*  Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael         *
*  Chastain, Michael Quan, and Mitchell Tse.                              *
*                                                                         *
*  In order to use any part of this Merc Diku Mud, you must comply with   *
*  both the original Diku license in 'license.doc' as well the Merc       *
*  license in 'license.txt'.  In particular, you may not remove either of *
*  these copyright notices.                                               *
*                                                                         *
*  Much time and thought has gone into this software and you are          *
*  benefiting.  We hope that you share your changes too.  What goes       *
*  around, comes around.                                                  *
***************************************************************************
*       ROM 2.4 is copyright 1993-1998 Russ Taylor                        *
*       ROM has been brought to you by the ROM consortium                 *
*           Russ Taylor (rtaylor@hypercube.org)                           *
*           Gabrielle Taylor (gtaylor@hypercube.org)                      *
*           Brian Moore (zump@rom.org)                                    *
*       By using this code, you have agreed to follow the terms of the    *
*       ROM license, in the file Rom24/doc/rom.license                    *
***************************************************************************
*          1stMud ROM Derivative (c) 2001-2004 by Markanth                *
*            http://www.firstmud.com/  <markanth@firstmud.com>            *
*         By using this code you have agreed to follow the term of        *
*             the 1stMud license in ../doc/1stMud/LICENSE                 *
***************************************************************************/

#ifndef __DEFINES_H_
#define __DEFINES_H_        	1

#define EXTERN extern

#define Declare_Do_F( fun )        	        	Do_F    fun
#define Declare_Spec_F( fun )        	        	Spec_F  fun
#define Declare_Spell_F( fun )        	        	Spell_F fun
#define Declare_Lookup_F( fun )        	        	Lookup_F fun
#define Declare_Ed_F( fun )        	        	Ed_F        	fun
#define Declare_Validate_F(fun)        	        	Validate_F fun
#define Declare_Obj_F( fun )        	        	Obj_F        	fun
#define Declare_Room_F( fun )        	        	Room_F  fun
#define Declare_TableRW_F(fun)        	        	TableRW_F fun
#define Declare_TableSave_F(fun)        	TableSave_F fun
#define Declare_TableShow_F(fun)        	TableShow_F fun
#define Declare_Olc_F( fun )        	        	Olc_F    fun
#define Declare_Boot_F( fun)        	        	Boot_F   fun
#define Declare_Nanny_F(fun)        	        	Nanny_F  fun

#define        	Do_Fun(name)            void name(const char *n_fun, CharData * ch, \
        	        	        	        	        	const char *argument)
#define Obj_Fun(name)        	        	void name(ObjData * obj, const char *argument)
#define Room_Fun(name)        	        	void name(RoomIndex * room, const char *argument)
#define Spec_Fun(fun)        	        	bool fun(CharData * ch)
#define Spell_Fun(fun)        	        	bool fun( int sn, int level, CharData * ch, \
        	        	        	        	        	void *vo, int target )
#define Ed_Fun(blah)        	        	bool blah ( DataTable *table, CharData *ch, void *base, \
        	        	        	        	        	const char *argument, void *data )
#define Validate_Fun(fun)        	bool fun(CharData *ch, const void *arg)
#define TableRW_Fun(fun)        	bool fun(action_t type, void *temp, const char **arg)
#define TableSave_Fun(fun)        	void fun(action_t type)
#define TableShow_Fun(fun)        	const char *fun(CharData *pch, void *temp)
#define Olc_Fun(fun)        	        	bool fun(const char *n_fun, CharData *ch, \
        	        	        	        	        	const char *argument)
#define Lookup_Fun(fun)        	        	int fun(const char *name)
#define Boot_Fun(fun)        	        	void fun(FileData *fp)
#define Nanny_Fun(fun)        	        	void fun(Descriptor *d, const char *argument)

#define    KILOBYTE                 (1024)
#define    MEGABYTE                 (1048576)
#define    GIGABYTE                 (1073741824)

#define        	MAX_KEY_HASH        	        	(KILOBYTE)
#define MAX_STRING_LENGTH        	(KILOBYTE * 8)
#define MAX_INPUT_LENGTH        	(KILOBYTE)
#define MAX_PRINTF_LENGTH        	(KILOBYTE * 25)
#define MAX_EXPLORE_HASH        	(KILOBYTE * 8)
#define MAX_SOCIAL_HASH        	        	('z' + 1)
#define MAX_CMD_HASH        	        	(126)

#define MSL        	        	        	MAX_STRING_LENGTH
#define MIL        	        	        	MAX_INPUT_LENGTH
#define MPL        	        	        	MAX_PRINTF_LENGTH

#ifndef PACKAGE_NAME
#define MUDNAME        	        	        	"1stMud"
#else
#define MUDNAME         PACKAGE_NAME
#endif

#ifndef PACKAGE_VERSION
#define MUDVERSION        	        	"4.5"
#else
#define MUDVERSION      PACKAGE_VERSION
#endif

#ifndef PACKAGE_STRING
#define MUDSTRING       MUDNAME MUDVERSION
#else
#define MUDSTRING       PACKAGE_STRING
#endif

#define MUDCREDITS        	        	"Markanth [markanth@firstmud.com]"

#ifndef TIME_T_FMT
#define TIME_T_FMT  "%ld"
#endif

#define SECOND        	        	        	   1L
#define MINUTE        	        	        	  (60L * SECOND)
#define HOUR        	        	        	  (60L * MINUTE)
#define DAY        	        	        	      (24L * HOUR)
#define WEEK        	        	        	  (7L * DAY)

#define MAX_IN_GROUP        	        	15
#define MAX_TZONE        	        	30
#define MAX_ALIAS        	        	10
#define MAX_BUDDY        	        	10
#define MAX_IGNORE        	        	10
#define MAX_GREETING        	2
#define MAX_REMORT        	        	2

#define CLASS_COUNT        	        	(MAX_REMORT + 1)

#define MAX_MCLASS        	        	(CLASS_COUNT + 1)
#define MAX_RANK        	        	6
#define MAX_VNUM        	        	60000
#define MAX_LEVEL        	        	60
#define LEVEL_IMMORTAL        	        	(MAX_LEVEL - 8)
#define MAX_MORTAL_LEVEL        	(MAX_LEVEL - 9)
#define LEVEL_HERO        	        	(MAX_MORTAL_LEVEL - MAX_REMORT)

#define    PC_HOME_COUNT              5
#define    PC_HOME_KEY                6
#define    PC_HOME_ROOM               7
#define    MAX_HOME_VNUMS             8
#define    HAS_HOME(ch)               ((ch)->pcdata->home[PC_HOME_COUNT])
#define    HOME_KEY(ch)               ((ch)->pcdata->home[PC_HOME_KEY])
#define    HOME_ROOM(ch)              ((ch)->pcdata->home[PC_HOME_ROOM])

#define PULSE_PER_SECOND        	  (mud_info.pulsepersec)
#define PULSE_VIOLENCE        	        	  ( 3 * PULSE_PER_SECOND)
#define PULSE_MOBILE        	        	  ( 4 * PULSE_PER_SECOND)
#define PULSE_MUSIC        	        	  ( 6 * PULSE_PER_SECOND)
#define PULSE_TICK        	        	  (45 * PULSE_PER_SECOND)
#define PULSE_AREA        	        	  (120 * PULSE_PER_SECOND)
#define PULSE_SENDSTAT        	        	  (10 * PULSE_PER_SECOND)
#define AUCTION_LENGTH        	        	  (65 * PULSE_PER_SECOND)

#define MAX_NEST        	100

#define IMPLEMENTOR        	        	  MAX_LEVEL
#define        	CREATOR        	        	        	 (MAX_LEVEL - 1)
#define SUPREME        	        	        	 (MAX_LEVEL - 2)
#define DEITY        	        	        	 (MAX_LEVEL - 3)
#define GOD        	        	        	 (MAX_LEVEL - 4)
#define IMMORTAL        	        	 (MAX_LEVEL - 5)
#define DEMI        	        	        	 (MAX_LEVEL - 6)
#define ANGEL        	        	        	 (MAX_LEVEL - 7)
#define AVATAR        	        	        	 (MAX_LEVEL - 8)
#define HERO        	        	        	 LEVEL_HERO

#define Season              	        	(((time_info.month / 4) > 3) ? 3 : (time_info.month / 4))

#define HOURS_IN_DAY    	24
#define DAYS_IN_MONTH    	30
#define MONTHS_IN_YEAR    	17
#define DAYS_IN_WEEK    	7

#define MAX_CLIMATE 5

#define MAX_LINES        	100
#define MAX_GLOBAL        	10

typedef enum
{
	BUFFER_SAFE,
	BUFFER_OVERFLOW,
	BUFFER_FREED
}
buf_t;

typedef enum
{
	COLS_BUF,
	COLS_CHAR,
	COLS_DESC
}
column_t;

typedef enum
{
	SUN_DARK,
	SUN_RISE,
	SUN_LIGHT,
	SUN_SET,
	SUN_NOON
}
sun_t;

typedef enum
{
	CON_GET_NAME,
	CON_GET_OLD_PASSWORD,
	CON_CONFIRM_NEW_NAME,
	CON_GET_NEW_PASSWORD,
	CON_CONFIRM_NEW_PASSWORD,
	CON_GET_NEW_RACE,
	CON_GET_NEW_SEX,
	CON_GET_NEW_CLASS,
	CON_GET_ALIGNMENT,
	CON_GET_DEITY,
	CON_GET_TIMEZONE,
	CON_GET_EMAIL,
	CON_GET_SCR_SIZE,
	CON_CONFIRM_SCR_SIZE,
	CON_DEFAULT_CHOICE,
	CON_GEN_GROUPS,
	CON_PICK_WEAPON,
	CON_READ_IMOTD,
	CON_READ_MOTD,
	CON_BREAK_CONNECT,
	CON_GET_TERM,
	CON_COPYOVER_RECOVER,
	CON_ROLL_STATS,
	CON_GET_WIZ,
	CON_PLAYING,
	CON_NOTE_TO,
	CON_NOTE_SUBJECT,
	CON_NOTE_EXPIRE,
	CON_NOTE_TEXT,
	CON_NOTE_FINISH
}
connect_t;

#define MAX_TRADE        	 5

#define MAX_RACE_SKILL 5

#define STAT_STR         	0
#define STAT_INT        	1
#define STAT_WIS        	2
#define STAT_DEX        	3
#define STAT_CON        	4
#define STAT_MAX    5

#define MAX_STATS   30

typedef enum
{
	GQUEST_OFF,
	GQUEST_WAITING,
	GQUEST_RUNNING
}
gquest_t;

typedef enum
{
	TO_AFFECTS,
	TO_OBJECT,
	TO_IMMUNE,
	TO_RESIST,
	TO_VULN,
	TO_WEAPON
}
where_t;

typedef enum
{
	CRS_NONE,
	CRS_REBOOT,
	CRS_SHUTDOWN,
	CRS_COPYOVER,
	CRS_COPYOVER_RECOVER
}
crs_t;

typedef enum
{
	DAM_NONE,
	DAM_BASH,
	DAM_PIERCE,
	DAM_SLASH,
	DAM_FIRE,
	DAM_COLD,
	DAM_LIGHTNING,
	DAM_ACID,
	DAM_POISON,
	DAM_NEGATIVE,
	DAM_HOLY,
	DAM_ENERGY,
	DAM_MENTAL,
	DAM_DISEASE,
	DAM_DROWNING,
	DAM_LIGHT,
	DAM_OTHER,
	DAM_HARM,
	DAM_CHARM,
	DAM_SOUND
}
dam_class;

typedef enum
{
	IMMUNE_NONE = -1,
	IS_NORMAL,
	IS_IMMUNE,
	IS_RESISTANT,
	IS_VULNERABLE
}
immune_t;

typedef enum
{
	SEX_NONE = -1,
	SEX_NEUTRAL,
	SEX_MALE,
	SEX_FEMALE,
	SEX_RANDOM
}
sex_t;

#define AC_PIERCE        	        	        	0
#define AC_BASH        	        	        	        	1
#define AC_SLASH        	        	        	2
#define AC_EXOTIC        	        	        	3
#define MAX_AC              4

#define DICE_NUMBER        	        	        	0
#define DICE_TYPE        	        	        	1
#define DICE_BONUS        	        	        	2
#define DICE_MAX            3

typedef enum
{
	SIZE_NONE = -1,
	SIZE_TINY,
	SIZE_SMALL,
	SIZE_MEDIUM,
	SIZE_LARGE,
	SIZE_HUGE,
	SIZE_GIANT
}
size_type;

typedef enum
{
	ITEM_NONE,
	ITEM_LIGHT,
	ITEM_SCROLL,
	ITEM_WAND,
	ITEM_STAFF,
	ITEM_WEAPON,
	ITEM_NONE6,
	ITEM_NONE7,
	ITEM_TREASURE,
	ITEM_ARMOR,
	ITEM_POTION,
	ITEM_CLOTHING,
	ITEM_FURNITURE,
	ITEM_TRASH,
	ITEM_NONE14,
	ITEM_CONTAINER,
	ITEM_NONE16,
	ITEM_DRINK_CON,
	ITEM_KEY,
	ITEM_FOOD,
	ITEM_MONEY,
	ITEM_NONE21,
	ITEM_BOAT,
	ITEM_CORPSE_NPC,
	ITEM_CORPSE_PC,
	ITEM_FOUNTAIN,
	ITEM_PILL,
	ITEM_PROTECT,
	ITEM_MAP,
	ITEM_PORTAL,
	ITEM_WARP_STONE,
	ITEM_ROOM_KEY,
	ITEM_GEM,
	ITEM_JEWELRY,
	ITEM_JUKEBOX
}
item_t;

typedef enum
{
	WEAPON_EXOTIC,
	WEAPON_SWORD,
	WEAPON_DAGGER,
	WEAPON_SPEAR,
	WEAPON_MACE,
	WEAPON_AXE,
	WEAPON_FLAIL,
	WEAPON_WHIP,
	WEAPON_POLEARM
}
weapon_t;

typedef enum
{
	APPLY_NONE,
	APPLY_STR,
	APPLY_DEX,
	APPLY_INT,
	APPLY_WIS,
	APPLY_CON,
	APPLY_SEX,
	APPLY_CLASS,
	APPLY_LEVEL,
	APPLY_AGE,
	APPLY_HEIGHT,
	APPLY_WEIGHT,
	APPLY_MANA,
	APPLY_HIT,
	APPLY_MOVE,
	APPLY_GOLD,
	APPLY_EXP,
	APPLY_AC,
	APPLY_HITROLL,
	APPLY_DAMROLL,
	APPLY_SAVES,
	APPLY_SAVING_PARA,
	APPLY_SAVING_ROD,
	APPLY_SAVING_PETRI,
	APPLY_SAVING_BREATH,
	APPLY_SAVING_SPELL,
	APPLY_SPELL_AFFECT
}
apply_t;

#define DIR_NORTH        	        	      0
#define DIR_EAST        	        	      1
#define DIR_SOUTH        	        	      2
#define DIR_WEST        	        	      3
#define DIR_UP        	        	        	      4
#define DIR_DOWN        	        	      5
#define MAX_DIR        	              6

typedef enum
{
	SECT_INSIDE,
	SECT_CITY,
	SECT_FIELD,
	SECT_FOREST,
	SECT_HILLS,
	SECT_MOUNTAIN,
	SECT_WATER_SWIM,
	SECT_WATER_NOSWIM,
	SECT_ICE,
	SECT_AIR,
	SECT_DESERT,
	SECT_ROAD,
	SECT_PATH,
	SECT_SWAMP,
	SECT_JUNGLE,
	SECT_CAVE,
	SECT_NONE,
	SECT_MAX
}
sector_t;

typedef enum
{
	WEAR_NONE = -1,
	WEAR_LIGHT,
	WEAR_FINGER_L,
	WEAR_FINGER_R,
	WEAR_NECK_1,
	WEAR_NECK_2,
	WEAR_BODY,
	WEAR_HEAD,
	WEAR_LEGS,
	WEAR_FEET,
	WEAR_HANDS,
	WEAR_ARMS,
	WEAR_SHIELD,
	WEAR_ABOUT,
	WEAR_WAIST,
	WEAR_WRIST_L,
	WEAR_WRIST_R,
	WEAR_WIELD,
	WEAR_HOLD,
	WEAR_FLOAT,
	WEAR_SECONDARY,
	MAX_WEAR
}
wloc_t;

#define COND_DRUNK        	        	      0
#define COND_FULL        	        	      1
#define COND_THIRST        	        	      2
#define COND_HUNGER        	        	      3
#define COND_MAX              4

typedef enum
{
	POS_DEAD,
	POS_MORTAL,
	POS_INCAP,
	POS_STUNNED,
	POS_SLEEPING,
	POS_RESTING,
	POS_SITTING,
	POS_FIGHTING,
	POS_STANDING,
	POS_NONE = -1
}
position_t;

#define STANCE_NONE                  -1
#define STANCE_NORMAL                 0
#define STANCE_VIPER                  1
#define STANCE_CRANE                  2
#define STANCE_CRAB                   3
#define STANCE_MONGOOSE               4
#define STANCE_BULL                   5
#define STANCE_MANTIS                 6
#define STANCE_DRAGON                 7
#define STANCE_TIGER                  8
#define STANCE_MONKEY                 9
#define STANCE_SWALLOW               10
#define STANCE_CURRENT               11
#define STANCE_AUTODROP              12
#define MAX_STANCE                   13

typedef enum
{
	WAR_OFF,
	WAR_WAITING,
	WAR_RUNNING
}
war_t;

#define PK_KILLS         0
#define MOB_KILLS        1
#define PK_DEATHS        2
#define MOB_DEATHS       3
#define MAX_GAMESTAT     4

typedef enum
{
	FIGHT_OPEN,
	FIGHT_START,
	FIGHT_BUSY,
	FIGHT_LOCK
}
arena_t;

typedef enum
{
	CHANNEL_NORMAL,
	CHANNEL_SOCIAL,
	CHANNEL_EMOTE,
	CHANNEL_THINK,
	CHANNEL_WHO
}
chanarg_t;

#define LIQ_WATER        0

#define TYPE_UNDEFINED               -1
#define TYPE_HIT                     1000

typedef enum
{
	TAR_IGNORE,
	TAR_CHAR_OFFENSIVE,
	TAR_CHAR_DEFENSIVE,
	TAR_CHAR_SELF,
	TAR_OBJ_INV,
	TAR_OBJ_CHAR_DEF,
	TAR_OBJ_CHAR_OFF,
	TAR_NONE = -1
}
tar_t;

typedef enum
{
	TARGET_CHAR,
	TARGET_OBJ,
	TARGET_ROOM,
	TARGET_NONE
}
target_t;

typedef enum
{
	PRG_NONE,
	PRG_MPROG,
	PRG_OPROG,
	PRG_RPROG
}
prog_t;

#define NO_FLAG  -99

#define AREA_VERSION    4
#define PFILE_VERSION   12

typedef enum
{
	STRING_NONE,
	STRING_FOUND,
	STRING_END
}
strshow_t;

#define DEFAULT_SCR_WIDTH       80
#define DEFAULT_SCR_HEIGHT      25

typedef enum
{
	RUNLEVEL_INIT,
	RUNLEVEL_BOOTING,
	RUNLEVEL_SAFE_BOOT,
	RUNLEVEL_MAIN_LOOP,
	RUNLEVEL_SHUTDOWN
}
runlevel_t;

#define AUTODEFAULT 0
#define AUTOEASY    1
#define AUTOSET     2
#define AUTOHARD    3
#define AUTORANDOM  4

typedef enum
{ SAVE_NONE, SAVE_CHAR, SAVE_CORPSE, SAVE_ROOM,
	SAVE_PET, SAVE_MOB, SAVE_MAX
}
save_t;

typedef enum
{ AUC_GOLD, AUC_QUEST, AUC_TRIVIA }
auc_t;

typedef enum
{
	FIELD_STRING,
	FIELD_FUNCTION_INT_TO_STR,
	FIELD_LONG_ARRAY,
	FIELD_FLAGSTRING,
	FIELD_INT,
	FIELD_FLAGVECTOR,
	FIELD_BOOL,
	FIELD_INT_ARRAY,
	FIELD_STRING_ARRAY,
	FIELD_INT_FLAGSTRING,
	FIELD_BOOL_ARRAY,
	FIELD_INUTIL,
	FIELD_INT_ALLOC_ARRAY,
	FIELD_LONG,
	FIELD_STRING_ARRAY_NULL,
	FIELD_CLAN_RANK,
	FIELD_LONG_ALLOC_ARRAY,
	FIELD_STRING_SIZE,
	FIELD_LETTER,
	FIELD_INT_FUNCTION,
	FIELD_FLOAT,
	FIELD_DOUBLE,
	FIELD_TIME,
	FIELD_INT_FUNC_ARRAY,
	FIELD_CHARDATA,
	FIELD_SPEC_FUN,
	FIELD_MOBINDEX,
	FIELD_RACE,
	FIELD_DEITY,
	FIELD_AREA,
	FIELD_ROOM,
	FIELD_CLAN,
	FIELD_OBJ,
	FIELD_PCDATA,
	FIELD_DESC,
	FIELD_SHOP,
	FIELD_EXDESC,
	FIELD_RESET_DATA,
	FIELD_EXIT_DATA,
	FIELD_PROG_LIST,
	FIELD_PCODE,
	FIELD_OBJINDEX,
	FIELD_AFFECT,
	FIELD_FUNCTION,
	FIELD_DICE,
	FIELD_VNUM,
	FIELD_MONEY,
	FIELD_MSP,
	FIELD_NAMELIST,
	FIELD_COLOR_ARRAY,
	FIELD_COLOR
}
field_t;

typedef enum
{
	ED_AREA,
	ED_ROOM,
	ED_OBJECT,
	ED_MOBILE,
	ED_MPCODE,
	ED_OPCODE,
	ED_RPCODE,
	ED_HELP,
	ED_SOCIAL,
	ED_CLAN,
	ED_CMD,
	ED_SKILL,
	ED_GROUP,
	ED_RACE,
	ED_CLASS,
	ED_DEITY,
	ED_CHAN,
	ED_MUD,
	ED_SONG,
	ED_COLOR,
	ED_MAX,
	ED_NONE = -1,
}
ed_t;

typedef enum
{
	spec_public_flag,
	spec_clan_flag,
	spec_imm_flag,
	spec_buddy_flag,
	spec_none
}
channel_types;

typedef enum
{
	WAR_NONE,
	WAR_CLAN,
	WAR_RACE,
	WAR_CLASS,
	WAR_GENOCIDE,
	WAR_DEITY,
	WAR_SEX,
	MAX_WAR
}
war_types;

typedef enum
{
	Justify,
	Left,
	Center,
	Right
}
align_t;

typedef enum
{
	LOG_NORMAL,
	LOG_ALWAYS,
	LOG_NEVER
}
log_t;

typedef enum
{
	SYSLOG_STDERR,
	SYSLOG_FILE,
	SYSLOG_OFF
}
syslog_t;

#define END_MARK    "END"

typedef enum
{
	VALUE_SILVER,
	VALUE_GOLD,
	VALUE_DEFAULT = VALUE_SILVER
}
currency_t;

#define DEFAULT_PROMPT  "<{R%h/%Hhp {M%m/%M/m {B%v/%vmv{x>"

#define IMMORTAL_PROMPT DEFAULT_PROMPT " {m[{M%e{m]{x%c<{yG: {Y%g {wS: {W%s{x> {g[{G%r[{R%R{G], %z{g] {C%Qgq{W %o %O{x"

typedef enum
{
	BONUS_OFF,
	BONUS_XP,
	BONUS_QP,
	BONUS_DAM
}
bonus_t;

#define CLAN_ROOM_ENTRANCE        	0
#define CLAN_ROOM_MORGUE        	1
#define MAX_CLAN_ROOM        	        	2

typedef enum
{
	CMDCAT_NOSHOW,
	CMDCAT_NONE,
	CMDCAT_IMMORTAL,
	CMDCAT_COMBAT,
	CMDCAT_SETTINGS,
	CMDCAT_INFO,
	CMDCAT_MOVEMENT,
	CMDCAT_COMMUNICATION,
	CMDCAT_MISC,
	CMDCAT_OLC,
	CMDCAT_OBJECT,
	CMDCAT_CLAN,
	MAX_CMDCAT
}
cmd_cat;

typedef enum
{
	CRASH_UNLIKELY,
	CRASH_LIKELY,
	CRASH_UPDATING,
	CRASH_UNKNOWN,
	CRASH_BOOT,
	CRASH_LOOPING
}
crash_status;

typedef enum
{
	MSP_NONE,
	MSP_COMBAT,
	MSP_WEATHER,
	MSP_SKILL
}
msp_t;

typedef enum
{
	HELP_UNKNOWN,
	HELP_CREATION,
	HELP_SPELLS,
	HELP_COMMANDS,
	HELP_NEWBIE,
	HELP_IMMORTAL,
	HELP_OLC,
	HELP_CLAN,
	HELP_MAX
}
help_t;

typedef enum
{
	QUEST_RETURN_FINDMOB = -5,
	QUEST_RETURN_FINDROOM = -4,
	QUEST_RETURN_DELIVER = -3,
	QUEST_RETURN_RETRIEVE = -2,
	QUEST_RETURN_KILL = -1,
	QUEST_NONE = 0,
	QUEST_KILL = 1,
	QUEST_RETRIEVE = 2,
	QUEST_DELIVER = 3,
	QUEST_FINDROOM = 4,
	QUEST_FINDMOB = 5
}
quest_t;

#define QUEST_TIME  20

typedef enum
{
	DEF_NORMAL,
	DEF_INCLUDE,
	DEF_EXCLUDE,
	DEF_READONLY
}
board_def;

#define MAX_BOARD         	  7

#define DEFAULT_BOARD 0

#define MAX_LINE_LENGTH 80

#define MAX_NOTE_TEXT (4*MAX_STRING_LENGTH - 1000)

#define BOARD_NOTFOUND -1
#define BOARD_NOACCESS -1

typedef enum
{
	PFILE_NONE,
	PFILE_NORMAL,
	PFILE_BACKUP,
	PFILE_DELETED
}
pfile_t;

typedef enum
{
	ETHOS_LAWFUL_GOOD = 4,
	ETHOS_NEUTRAL_GOOD = 3,
	ETHOS_CHAOTIC_GOOD = 2,
	ETHOS_LAWFUL_NEUTRAL = 1,
	ETHOS_TRUE_NEUTRAL = 0,
	ETHOS_EVIL_NEUTRAL = -1,
	ETHOS_LAWFUL_EVIL = -2,
	ETHOS_NEUTRAL_EVIL = -3,
	ETHOS_CHAOTIC_EVIL = -4
}
ethos_t;

typedef union
{
	RoomIndex *room;
	ObjIndex *obj;
	CharIndex *mob;
}
rom_t;

#define TIMER_NONE    	    	0
#define TIMER_PK    	    	1
#define TIMER_OUTLAW    	2
#define MAX_TIMER    	    	3

/* Length of who string */
#define TITLEBLOCK 15

#endif