/
roa/
roa/lib/boards/
roa/lib/config/
roa/lib/edits/
roa/lib/help/
roa/lib/misc/
roa/lib/plrobjs/
roa/lib/quests/
roa/lib/socials/
roa/lib/www/
roa/lib/www/LEDSign/
roa/lib/www/LEDSign/fonts/
roa/lib/www/LEDSign/scripts/
roa/src/s_inc/
roa/src/sclient/
roa/src/sclient/binary/
roa/src/sclient/text/
roa/src/util/
/************************************************************************
	Realms of Aurealis 		James Rhone aka Vall of RoA

defines.h				Central header file for defines
					for the entire mud...

		******** Heavily modified and expanded ********
		*** BE AWARE OF ALL RIGHTS AND RESERVATIONS ***
		******** Heavily modified and expanded ********
		        All rights reserved henceforth. 

    Please note that no guarantees are associated with any code from
Realms of Aurealis.  All code which has been released to the general
public has been done so with an 'as is' pretense.  RoA is based on both
Diku and CircleMUD and ALL licenses from both *MUST* be adhered to as well
as the RoA license.   *** Read, Learn, Understand, Improve ***
*************************************************************************/
#ifndef ROA_DEFINES_H
#define ROA_DEFINES_H

#define GARBAGE_SPACE	32
#define OPT_USEC 	100000
#define PASSES_PER_SEC	(1000000 / OPT_USEC)
#define RL_SEC		* PASSES_PER_SEC
#define PULSE_ZONE	(10 RL_SEC)
#define PULSE_PASSWORD	(10 RL_SEC)
#define PULSE_VIOLENCE	(2 RL_SEC)
#define PULSE_MAGIC	(20 RL_SEC)
// note: dtime mobs go every 5 sec, normal mobs go every 10
#define PULSE_MOBILE	(5 RL_SEC)  
// note: dtime rooms go every 5 sec, normal rooms go every 10
#define PULSE_ROOM	(5 RL_SEC)

/* RoAOLC padding numbers */
#define OBJ_PADDING	200
#define MOB_PADDING	200
#define WLD_PADDING	200

// for zone comlist loading and saving  4/26/98 -jtrhone
#define MAX_COMLIST_LENGTH  40000

#define MAX_CMD_LIST	550
#define MAX_PLAYERS	100
#define MAX_RENT_S	50
#define MAX_LEVELS	76
#define NUM_OF_DIRS	10
#define NUM_CLASSES	11
#define NUM_RACES	10
#define NUM_ZONES	300
#define NUM_QUESTS	50

/* str, con, dex, etc... 0 - 30 true */
#define NUM_STAT_POINTS 31  

/* special zone defs */
#define LIMBO_ZONE	0
#define HOUSE_ZONE	2
#define HBUILD_ZONE1	3
#define HBUILD_ZONE2	4
#define IMMORTAL_ZONE	12

#define SYS_ZONE1	1
#define SYS_ZONE2	2
#define SYS_ZONE3	3
#define SYS_ZONE4	4

#define HBUILD_COST	200000

#define MAX_SOCIALS       500
#define MAX_HELPFILES     700
#define MAX_WIZHELPFILES  150
#define MAX_WARLOCKSPELLS 300

#define LEV_IMPL	75
#define LEV_CIMP	(LEV_IMPL - 1)
#define LEV_AIMP	(LEV_IMPL - 2)
#define LEV_GOD		(LEV_IMPL - 3)
#define LEV_IMM		(LEV_IMPL - 4)
#define LEV_LORD	(LEV_IMPL - 5)  /* not immortal :P */
#define LEV_FREEZE	LEV_AIMP

#define SMALL_BUFSIZE	     512
#define LARGE_BUFSIZE	   16384
#define MAX_STRING_LENGTH   8192
#define MAX_INPUT_LENGTH     255
#define MAX_POOFIN_LENGTH     80
#define MAX_CLAN_LENGTH       50
#define MAX_MESSAGES          60
#define MAX_PWD_LENGTH	      10 /* Used in char_file_u *DO*NOT*CHANGE* */
#define HOST_LEN	      30 /* Used in char_file_u *DO*NOT*CHANGE* */
#define EXDESC_LENGTH        512 // NEW player description length
#define TITLE_LENGTH	      80  // player title length
#define NAME_LENGTH	      20  // player name length in char file U
#define GOSSIP_PAGE_LENGTH    20 /* used for RoA WWW gossip page */

#define SECS_PER_REAL_MIN  60
#define SECS_PER_REAL_HOUR (60*SECS_PER_REAL_MIN)
#define SECS_PER_REAL_DAY  (24*SECS_PER_REAL_HOUR)
#define SECS_PER_REAL_YEAR (365*SECS_PER_REAL_DAY)

#define SECS_PER_MUD_HOUR  75
#define SECS_PER_MUD_DAY   (24*SECS_PER_MUD_HOUR)
#define SECS_PER_MUD_MONTH (35*SECS_PER_MUD_DAY)
#define SECS_PER_MUD_YEAR  (17*SECS_PER_MUD_MONTH)

/* The following defs are for obj_data  */
/* For 'type_flag' */
#define ITEM_LIGHT      1
#define ITEM_SCROLL     2
#define ITEM_WAND       3
#define ITEM_STAFF      4
#define ITEM_WEAPON     5
#define ITEM_RANGED     6
#define ITEM_OINTMENT   7
#define ITEM_TREASURE   8
#define ITEM_ARMOR      9
#define ITEM_POTION    10 
#define ITEM_BOARD     11
#define ITEM_OTHER     12
#define ITEM_TRASH     13
#define ITEM_TRAP      14
#define ITEM_CONTAINER 15
#define ITEM_NOTE      16
#define ITEM_DRINKCON  17
#define ITEM_KEY       18
#define ITEM_FOOD      19
#define ITEM_MONEY     20
#define ITEM_PEN       21
#define ITEM_BOAT      22
#define ITEM_FOUNTAIN  23
#define ITEM_PORTAL    24
#define ITEM_GATE      25
#define ITEM_GEM       26
#define ITEM_TOME      27

/* for item composition materials RoA JTRhone */
#define OBJ_UNDEFINED	0
#define OBJ_PAPER	1
#define OBJ_CLOTHING	2
#define OBJ_GLASS	3
#define OBJ_POTTERY	4
#define OBJ_WOOD	5
#define OBJ_CRYSTAL	6
#define OBJ_LEATHER	7
#define OBJ_GOLD	8
#define OBJ_BRASS	9
#define OBJ_BRONZE	10
#define OBJ_SILVER	11
#define OBJ_PLATINUM	12
#define OBJ_IRON	13
#define OBJ_STEEL	14
#define OBJ_MITHRIL	15
#define OBJ_ADAMANTINE	16
#define OBJ_FORCE	17
#define OBJ_SHELL	18
#define OBJ_ROPE	19
#define OBJ_BONE	20
#define OBJ_STONE	21
#define OBJ_GEMSTONE	22
#define OBJ_DIAMOND	23
#define OBJ_FOOD	24
#define OBJ_COPPER      25
#define OBJ_ORGANIC	26
	
/* Bitvector For 'wear_flags' */
// updated for new eq slot design  5/28/98 -jtrhone
#define ITEM_TAKE		(1 << 0) 
#define ITEM_WEAR_FINGER       	(1 << 1)
#define ITEM_WEAR_NECK          (1 << 2)
#define ITEM_WEAR_BODY          (1 << 3)
#define ITEM_WEAR_HEAD          (1 << 4)
#define ITEM_WEAR_LEGS          (1 << 5)
#define ITEM_WEAR_FEET          (1 << 6)
#define ITEM_WEAR_HANDS         (1 << 7)
#define ITEM_WEAR_ARMS          (1 << 8)
#define ITEM_WEAR_FACE          (1 << 9)
#define ITEM_WEAR_ABOUT         (1 << 10) 
#define ITEM_WEAR_WAIST         (1 << 11)
#define ITEM_WEAR_WRIST     	(1 << 12)
#define ITEM_WIELD          	(1 << 13)
#define ITEM_HOLD          	(1 << 14)
#define ITEM_WEAR_EARS          (1 << 15)

/* Bitvector for 'object->extras' */
#define ITEM_GLOW            (1 << 0)
#define ITEM_UNUSED2         (1 << 1)
#define ITEM_NOLOCATE        (1 << 2)
#define ITEM_UNUSED3         (1 << 3)
#define ITEM_EVIL	     (1 << 4)
#define ITEM_INVISIBLE       (1 << 5)
#define ITEM_MAGIC           (1 << 6)
#define ITEM_NODROP          (1 << 7)
#define ITEM_BLESS           (1 << 8)
#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_NORENT	     (1 << 12) /* not allowed to rent the item */
#define ITEM_NODONATE	     (1 << 13) /* not allowed to donate the item */
#define ITEM_NOINVIS	     (1 << 14) /* not allowed to cast invis on */
#define ITEM_SPELLEQ         (1 << 15) /* Spell equipment, what else?  */
#define ITEM_RECHARGE        (1 << 16) /* is this rechargeable?        */
#define ITEM_ANTI_MAGE       (1 << 17) /* Item not usable by clerics   */
#define ITEM_ANTI_CLERIC     (1 << 18) /* Item not usable by mages     */
#define ITEM_ANTI_WARRIOR    (1 << 19) /* Item not usable by thieves   */
#define ITEM_ANTI_THIEF      (1 << 20) /* Item not usable by warriors  */
#define ITEM_ANTI_BARD       (1 << 21) /* Item not usable by bards     */
#define ITEM_THIEF_HOLD	     (1 << 22) /* a thief can use as dual weapon */
#define ITEM_ANTI_SHAMAN     (1 << 23) /* Item not usable by shaman  */
#define ITEM_BOUYANT	     (1 << 24) /* does it float? on water*/
#define ITEM_WATERPROOF	     (1 << 25) /* does it float? on water*/
#define ITEM_ANTI_RANGER     (1 << 26) /* rangers cant use it */
#define ITEM_INSTRUM	     (1 << 27) /* bard instrument? */
#define ITEM_ANCHORED	     (1 << 28) /* floats but doesnt move */
#define ITEM_ANTI_WARLOCK    (1 << 29)  /* no warlocks */
#define ITEM_ANTI_MONK       (1 << 30)  /* no monshai */

/* Bitvector for 'object->extras2'  or OBJ_EXTRAS2(obj)  RoA */
#define ITEM_ANTI_HUMAN		(1 << 0)
#define ITEM_ANTI_ELF		(1 << 1)
#define ITEM_ANTI_HALF_ELF	(1 << 2)
#define ITEM_ANTI_ORC		(1 << 3)
#define ITEM_ANTI_OGRE		(1 << 4)
#define ITEM_ANTI_DROW		(1 << 5)
#define ITEM_ANTI_DWARF		(1 << 6)
#define ITEM_ANTI_PIXIE		(1 << 7)
#define ITEM_ANTI_NIXIE 	(1 << 8)
#define ITEM_ANTI_DRAGON	(1 << 9)
#define ITEM_BANK		(1 << 10)
#define ITEM_NOAUCTION		(1 << 11)
#define ITEM_THROWABLE		(1 << 12)
#define ITEM_ANTI_MADEPT	(1 << 13)
#define ITEM_ANTI_DRUID 	(1 << 14)
#define ITEM_ANTI_ASSASSIN 	(1 << 15)
#define ITEM_ASSASSIN_ONLY 	(1 << 16)
#define ITEM_REMORT_ONLY 	(1 << 17)

/* Some different kind of liquids */
#define LIQ_WATER      0
#define LIQ_BEER       1
#define LIQ_WINE       2
#define LIQ_ALE        3
#define LIQ_DARKALE    4
#define LIQ_WHISKY     5
#define LIQ_LEMONADE   6
#define LIQ_FIREBRT    7
#define LIQ_LOCALSPC   8
#define LIQ_SLIME      9
#define LIQ_MILK       10
#define LIQ_TEA        11
#define LIQ_COFFE      12
#define LIQ_BLOOD      13
#define LIQ_SALTWATER  14
#define LIQ_CLEARWATER 15
#define LIQ_POISON     16

/* for containers  - value[1] */
#define CONT_CLOSEABLE      	(1 << 0)
#define CONT_PICKPROOF      	(1 << 1)
#define CONT_CLOSED         	(1 << 2)
#define CONT_LOCKED         	(1 << 3)
#define CONT_TRAP_POISONED  	(1 << 4)
#define CONT_TRAP_EXPLOSION 	(1 << 5)

#define MAX_OBJ_AFFECT 2

#define NOWHERE    -1    /* nil reference for room-database    */

/* Bitvector For 'room_flags' */
#define DARK           (1 << 0)
#define DEATH          (1 << 1)
#define NO_MOB         (1 << 2)
#define NO_WEATHER     (1 << 3)
#define GOOD           (1 << 4)
#define NEUTRAL        (1 << 5)
#define EVIL           (1 << 6)
#define NO_MAGIC       (1 << 7)
#define RPROC          (1 << 8)
#define PRIVATE        (1 << 9)
#define GODROOM        (1 << 10)
#define BFS_MARK       (1 << 11)
#define FLY_DEATH      (1 << 12)
#define PEACEFUL       (1 << 13)
#define NO_RECALL      (1 << 14)
#define FLIGHT	       (1 << 15)
#define UWATER	       (1 << 16)
#define ALTERMANA      (1 << 17)
#define NO_MAGE	       (1 << 18)
#define NO_BARD	       (1 << 19)
#define NO_RANGER      (1 << 20)
#define NO_WARRIOR     (1 << 21)
#define NO_CLERIC      (1 << 22)
#define NO_SHAMAN      (1 << 23)
#define NO_THIEF       (1 << 24)
#define WINDY          (1 << 25)
#define NO_TELEPORT    (1 << 26)
#define RANDOM	       (1 << 27)
#define PORTAL         (1 << 28)
#define ALTERHIT       (1 << 29)
#define ALTERMOVE      (1 << 30)
/* room_flags filled */

/* room_flags2 RoA */
#define NO_HUMAN	(1 << 0)
#define NO_ELF		(1 << 1)
#define NO_HALF_ELF	(1 << 2)
#define NO_ORC		(1 << 3)
#define NO_OGRE		(1 << 4)
#define NO_DROW		(1 << 5)
#define NO_DWARF	(1 << 6)
#define NO_PIXIE	(1 << 7)
#define NO_NIXIE	(1 << 8)
#define NO_DRAGON	(1 << 9)
#define HOUSE	       	(1 << 10)
#define HOUSE_CRASH    	(1 << 11)
#define ROOM_CRASH	(1 << 12)
#define DONATION	(1 << 13)
#define SOUNDPROOF	(1 << 14)
#define TRANSPORT	(1 << 15)
#define DUMP		(1 << 16)
#define NO_WARLOCK      (1 << 17)
#define NO_MONK         (1 << 18)
#define NO_TRACK	(1 << 19)
#define CONFUSION	(1 << 20)
#define SOURCE_ROOM	(1 << 21)
#define NOGEN_ROOM	(1 << 22)
#define SAVE_ROOM	(1 << 23)
#define R_NO_SUMMON	(1 << 24)
#define NO_MADEPT       (1 << 25)
#define NO_DRUID        (1 << 26)
#define WALLOFFOG       (1 << 27)
#define NOSNARE         (1 << 28)
#define HTOWN_PORTAL	(1 << 29)
#define RPROC_DTIME	(1 << 30)

#define BFS_ERROR	   -1
#define BFS_ALREADY_THERE  -2
#define BFS_NO_PATH	   -3

#define EX_ISDOOR		(1 << 0)
#define EX_CLOSED		(1 << 1)
#define EX_LOCKED		(1 << 2)
#define EX_SECRET		(1 << 3)
#define EX_JAMMED		(1 << 4)
#define EX_PICKPROOF		(1 << 5)
#define EX_AUTOSHUT		(1 << 6)
#define EX_NOGEN		(1 << 7)
#define EX_AUTOLOCK		(1 << 8)
#define EX_NOBASH		(1 << 9)
#define EX_NOKNOCK		(1 << 10)
#define EX_NOTRAP		(1 << 11)
#define EX_NOJAM		(1 << 12)
#define EX_NOOBSCURE		(1 << 13)

/* NEW terrain types ROA  (old sector types) */
#define TERRAIN_INSIDE          0
#define TERRAIN_CITY            1
#define TERRAIN_FIELD           2
#define TERRAIN_FOREST          3
#define TERRAIN_HILLS           4
#define TERRAIN_MOUNTAIN        5
#define TERRAIN_WATER_SWIM      6
#define TERRAIN_WATER_NOSWIM 	7
#define TERRAIN_UWATER		8
#define TERRAIN_AIR		9

/* ======================================================================= */
/* The following defs are for zone_flags  RoA*/
#define Z_ARENA		(1 << 0)
#define Z_TEST		(1 << 1)
#define Z_IMMORT	(1 << 2)
#define Z_ON_Q		(1 << 3)
#define Z_CLOSED	(1 << 4)
#define Z_LOCKED	(1 << 5)
#define Z_IDLE		(1 << 6)
#define Z_SYSTEM	(1 << 7)
#define Z_HIDDEN	(1 << 8)
#define Z_FREED		(1 << 9)  /* VERY IMPORTANT ONE HERE */
#define Z_TSTORM	(1 << 10) // weather related, zone specific
#define Z_BLIZZARD	(1 << 11) // weather related, zone specific
#define Z_EXITGENALL	(1 << 12) // auto generated exits, all 
#define Z_EXITGENLAT	(1 << 13) // auto generated exits, lateral only 
#define Z_DESCGEN	(1 << 14) // auto generated descriptions 
/* ======================================================================== */

/* For 'equipment' */
// updated 5/8/28 for eq slot revamp -jtrhone
#define W_HEAD       0
#define W_FACE       1
#define W_EAR_R      2
#define W_EAR_L      3
#define W_NECK_1     4
#define W_NECK_2     5
#define W_BODY       6
#define W_WAIST      7
#define W_ABOUT      8
#define W_ARMS       9
#define W_WRIST_R    10
#define W_WRIST_L    11
#define W_HANDS      12
#define W_FINGER_R1  13
#define W_FINGER_R2  14
#define W_FINGER_L1  15
#define W_FINGER_L2  16
#define W_LEGS       17
#define W_FEET       18
#define W_WIELD      19
#define W_HOLD       20
// ----------------------------
#define MAX_WEAR    21

// for wherevector on players and objects, what slots are used
// or would be if they wear an object, 5/28/98 -jtrhone
#define WV_HEAD       (1 << 0)
#define WV_FACE       (1 << 1)
#define WV_EAR_R      (1 << 2)
#define WV_EAR_L      (1 << 3)
#define WV_NECK_1     (1 << 4)
#define WV_NECK_2     (1 << 5)
#define WV_BODY       (1 << 6)
#define WV_WAIST      (1 << 7)
#define WV_ABOUT      (1 << 8)
#define WV_ARMS       (1 << 9)
#define WV_WRIST_R    (1 << 10)
#define WV_WRIST_L    (1 << 11)
#define WV_HANDS      (1 << 12)
#define WV_FINGER_R1  (1 << 13)
#define WV_FINGER_R2  (1 << 14)
#define WV_FINGER_L1  (1 << 15)
#define WV_FINGER_L2  (1 << 16)
#define WV_LEGS       (1 << 17)
#define WV_FEET       (1 << 18)
#define WV_WIELD      (1 << 19)
#define WV_HOLD       (1 << 20)

// updated, 6/20/98 -jtrhone, (no need to convert pfile if update now)
#define MAX_SKILLS     300
#define MAX_SPELLS     MAX_SKILLS
#define MAX_GSKILLS    10

#define MAX_AFFECT     32    /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */

/* Predifined  conditions */
#define DRUNK          0
#define FULL           1
#define THIRST         2

/* Bitvector for 'affected_by' */
#define AFF_BLIND             (1 << 0)
#define AFF_INVISIBLE         (1 << 1)
#define AFF_DETECT_EVIL       (1 << 2)
#define AFF_DETECT_INVISIBLE  (1 << 3)
#define AFF_DETECT_MAGIC      (1 << 4)
#define AFF_SENSE_LIFE        (1 << 5)
#define AFF_HOLD              (1 << 6)
#define AFF_SANCTUARY         (1 << 7)
#define AFF_GROUP             (1 << 8)
#define AFF_CURSE             (1 << 9)
#define AFF_HIT_REGEN         (1 << 10)
#define AFF_POISON            (1 << 11)
#define AFF_PROTECT_EVIL      (1 << 12)
#define AFF_MANA_REGEN        (1 << 13)
#define AFF_PARRY	      (1 << 14)
#define AFF_MOVE_REGEN        (1 << 15)
#define AFF_SLEEP             (1 << 16)
#define AFF_DODGE             (1 << 17)
#define AFF_SNEAK             (1 << 18)
#define AFF_HIDE              (1 << 19)
#define AFF_FEAR              (1 << 20)
#define AFF_CHARM             (1 << 21)
#define AFF_FOLLOW            (1 << 22)
#define AFF_WIMPY	      (1 << 23)
#define AFF_INFRARED          (1 << 24)
#define AFF_HASTE	      (1 << 25)
#define AFF_GILLS	      (1 << 26)
#define AFF_WINGS	      (1 << 27)
#define AFF_DETECT_ALIGN      (1 << 28)
#define AFF_TRUCE	      (1 << 29)
#define AFF_PROTECT_GOOD      (1 << 30)

/* more affections go in AFF2_XXX (affected2_bits) on PCs */
/* RoA */
#define AFF2_CLAWS	(1 << 0)
#define AFF2_CROW	(1 << 1)
#define AFF2_WOLF	(1 << 2)
#define AFF2_LIGHT	(1 << 3)
#define AFF2_STONE_SKIN (1 << 4)
#define AFF2_CALM	(1 << 5)
#define AFF2_ILLUMINATE	(1 << 6)
#define AFF2_SWITCH	(1 << 7)
#define AFF2_PRESENCE	(1 << 8)

// for charvector on characters
#define CH_STUNTOUCHED	(1 << 0)
#define CH_REDIRECTED	(1 << 1)
#define CH_HIT_DT	(1 << 2)
#define CH_MOUNTED	(1 << 3)
#define CH_SHOP_OPEN	(1 << 4)
#define CH_SUMMONED	(1 << 5)	// this mob created by char?
#define CH_TEMP		(1 << 6)	// used for temp BOOLs -roa
#define CH_BECAME	(1 << 7)	// they become someone else?
#define CH_SUBDUED	(1 << 8)
#define CH_GRP	        (1 << 9)
#define CH_CHAT	        (1 << 10)	// in chat mode?
#define CH_BELLOW	(1 << 11)	// has bellowed today ?
#define CH_EAVESDROPPING	(1 << 12)	// is currently eavesdroppin ?
#define CH_LOWSTRIKE  	(1 << 13)
#define CH_BLADEDANCE  	(1 << 14)
#define CH_ONEATTACK  	(1 << 15)
#define CH_SIDESTEP  	(1 << 16)
#define CH_DISEMBOWEL  	(1 << 17)
#define CH_HAMSTRUNG  	(1 << 18)
#define CH_LOSEATTACK  	(1 << 19)
#define CH_RECORD  	(1 << 20)
#define CH_PLAYBACK  	(1 << 21)

/* modifiers to char's aff_abils */
#define APPLY_NONE              0
#define APPLY_STR               1
#define APPLY_DEX               2
#define APPLY_INT               3
#define APPLY_WIS               4
#define APPLY_CON               5
#define APPLY_SEX               6
#define APPLY_CLASS             7
#define APPLY_LEVEL             8
#define APPLY_AGE               9
#define APPLY_CHAR_WEIGHT      10
#define APPLY_CHAR_HEIGHT      11
#define APPLY_MANA             12
#define APPLY_HIT              13
#define APPLY_MOVE             14
#define APPLY_GOLD             15
#define APPLY_EXP              16
#define APPLY_AC               17
#define APPLY_ARMOR            17
#define APPLY_HITROLL          18
#define APPLY_DAMROLL          19
#define APPLY_SV_HEAT          20
#define APPLY_SV_COLD	       21
#define APPLY_SV_MAGIC	       22
#define APPLY_SV_POISON	       23
#define APPLY_SV_BREATH	       24
#define APPLY_HIT_REGEN	       25
#define APPLY_MANA_REGEN       26
#define APPLY_MOVE_REGEN       27
#define APPLY_RITUALS	       28

/* 'class' for PC's */
#define CLASS_MAGE 	  1
#define CLASS_CLERIC      2
#define CLASS_THIEF       3
#define CLASS_WARRIOR     4
#define CLASS_SHAMAN	  5
#define CLASS_RANGER	  6
#define CLASS_BARD	  7
#define CLASS_WARLOCK	  8
#define CLASS_MONK	  9
#define CLASS_MADEPT	  10
#define CLASS_DRUID	  11

/* races for PC's JRhone */
#define RACE_HUMAN        1  
#define RACE_ELF          2  
#define RACE_HALF_ELF     3
#define RACE_ORC          4
#define RACE_OGRE         5
#define RACE_DROW         6
#define RACE_DWARF        7
#define RACE_PIXIE        8
#define RACE_NIXIE	  9
#define RACE_DRAGON	  10

/* 'class' BITVECTOR BITS for NPC's mob_class bitvector */
// changed from a number to a bitvector 11/14/96 -roa
// with mob classes, vs mob eq or rooms can be applied
#define MOB_HUMAN	(1 << 0)
#define MOB_ELVEN	(1 << 1)
#define MOB_HALFELVEN	(1 << 2)
#define MOB_DROW	(1 << 3)
#define MOB_ORC		(1 << 4)
#define MOB_OGRE	(1 << 5)
#define MOB_DRAKYN	(1 << 6)
#define MOB_PIXIE	(1 << 7)
#define MOB_NIXIE	(1 << 8)
#define MOB_DRAGON	(1 << 9)
#define MOB_MAMMAL	(1 << 10)
#define MOB_AVIAN	(1 << 11)
#define MOB_INSECT	(1 << 12)
#define MOB_ARACHNID	(1 << 13)
#define MOB_REPTILE	(1 << 14)
#define MOB_GOBLINOID	(1 << 15)
#define MOB_BIPED	(1 << 16)
#define MOB_QUADRIPED	(1 << 17)
#define MOB_AQUATIC	(1 << 18)
#define MOB_CRUSTACEAN	(1 << 19)
#define MOB_VEGETATION	(1 << 20)
#define MOB_ETHEREAL	(1 << 21)
#define MOB_MAGICAL	(1 << 22)
#define MOB_CRYSTALLINE	(1 << 23)
#define MOB_FIREBASED	(1 << 24)
#define MOB_ICEBASED	(1 << 25)
#define MOB_AIRBASED	(1 << 26)
#define MOB_EARTHBASED	(1 << 27)
#define MOB_GIANT	(1 << 28)
#define MOB_UNDEAD	(1 << 29)
#define MOB_DWARVEN	(1 << 30)

/* sizes for players/mobs */
#define SIZE_ENORMOUS	0
#define SIZE_HUGE	1
#define SIZE_LARGE	2
#define SIZE_MEDIUM	3
#define SIZE_SMALL	4
#define SIZE_VSMALL	5
#define SIZE_TINY	6

/* sex */
#define SEX_NEUTRAL   0
#define SEX_MALE      1
#define SEX_FEMALE    2
#define SEX_RANDOM    3  /* chooses between male or female */

/* positions */
#define POS_DEAD       0
#define POS_MORTALLYW  1
#define POS_INCAP      2
#define POS_STUNNED    3
#define POS_SLEEPING   4
#define POS_RESTING    5
#define POS_SITTING    6
#define POS_FIGHTING   7
#define POS_STANDING   8
#define POS_FLOATING   9
#define POS_MOUNTED    10

/* for mobile actions: mob_bits */
#define MOB_SPEC         (1 << 0)  /* spec-proc to be called if exist   */
#define MOB_SENTINEL     (1 << 1)  /* this mobile not to be moved       */
#define MOB_SCAVENGER    (1 << 2)  /* pick up stuff lying around        */
#define MOB_ISNPC        (1 << 3)  /* This bit is set for use with IS_NPC()*/
#define MOB_NICE_THIEF   (1 << 4)  /* Set if a thief should NOT be killed  */
#define MOB_AGGR         (1 << 5)  /* Set if automatic attack on NPC's */
#define MOB_STAY_ZONE    (1 << 6)  /* MOB Must stay inside its own zone    */
#define MOB_WIMPY        (1 << 7)  /* MOB Will flee when injured, and if   */
#define MOB_AGGR_EVIL	 (1 << 8) /* auto attack evil PC's only	*/
#define MOB_AGGR_GOOD	 (1 << 9) /* auto attack good PC's only	*/
#define MOB_AGGR_NEUTRAL (1 << 10) /* auto attack neutral PC's only	*/
#define MOB_MEMORY	 (1 << 11) /* remember attackers if struck first*/
#define MOB_HELPER	 (1 << 12) /* attack chars attacking a PC in room*/
#define MOB_MH0          (1 << 13) /* 1 additional attack */
#define MOB_MH1		 (1 << 14) /* 2 additional attacks */
#define MOB_MH2		 (1 << 15) /* 4 additional attacks */
#define MOB_QHEAL	 (1 << 16) /* Quick healing mobs */
#define MOB_SMART	 (1 << 17) /* Smart mobs... pick up and wear stuff*/
#define MOB_MOUNTABLE	 (1 << 18) /* is mountable?*/
#define MOB_NOSUMMON	 (1 << 19) /* cant summon this mob */
#define MOB_SWIMMER	 (1 << 20) /* this mob can swim */
#define MOB_GILLS	 (1 << 21) /* can breath uwater */
#define MOB_NO_CHARM	 (1 << 22) /* cant charm this one */
#define MOB_NO_HOLD	 (1 << 23) /* cant hold this one */
#define MOB_NO_CALM	 (1 << 24) /* no calming this one */
#define MOB_NO_CORPSE	 (1 << 25) /* leaves no corpse when die */
#define MOB_SPLITATTACK	 (1 << 26) /* divides attacks up per group */
#define MOB_NO_BLIND	 (1 << 27) /* this mob resists blindness */
#define MOB_NO_GATE	 (1 << 28) /* this mob won't enter gates */
#define MOB_QUESTOR	 (1 << 29) /* this mob assigns a quest to player */
#define MOB_PLSHOPKEEP   (1 << 30) /* this mob is a player shopkeep mob */

/* for mobile actions: mob2_bits */
#define MOB2_TRAINER	(1 << 0)  	// mob who trades pracs for stats...
#define MOB2_ASSASSIN	(1 << 1)  	// mob who can use assassin EQ...
#define MOB2_NO_MTARGET	(1 << 2)  	// mob who cannot be targetted by mobprocs...

#define DELAY_PURGE		1
#define DELAY_ELUSION		2
#define DELAY_FORTITUDE		3
#define DELAY_SP_STRENGTH	4
#define DELAY_PROTECTION	5
#define DELAY_TRUESIGHT		6
#define DELAY_EAGLE_EYES	7
#define DELAY_STONE		8
#define DELAY_SNAKEFIRE		9
#define DELAY_ENDURANCE	 	10
#define DELAY_HEAL		11
#define DELAY_CLAWS		12
#define DELAY_TRUCE		13
#define DELAY_LOCATION		14
#define DELAY_FANG		15
#define DELAY_CROW		16
#define DELAY_WOLF		17

/* For players : player_flags */
#define PLR_INTAG	(1 << 0)
#define PLR_TAGGED	(1 << 1)
#define PLR_FROZEN	(1 << 2)
#define PLR_DONTSET     (1 << 3)   /* Dont EVER set (ISNPC bit) */
#define PLR_WRITING	(1 << 4)
#define PLR_MAILING	(1 << 5)
#define PLR_CRASH	(1 << 6)
#define PLR_SITEOK	(1 << 7)
#define PLR_MUTE	(1 << 8)
#define PLR_NOTITLE	(1 << 9)
#define PLR_DELETED	(1 << 10)
#define PLR_LOADROOM	(1 << 11)
#define PLR_NOWIZLIST	(1 << 12)
#define PLR_NODELETE	(1 << 13)
#define PLR_INVSTART	(1 << 14)
#define PLR_CRYO	(1 << 15)
#define PLR_FORCED      (1 << 16)  /* force saved, couldve lost objs */ 
#define PLR_BUILDING    (1 << 17)
#define PLR_AMBASS	(1 << 18)
#define PLR_RITUAL	(1 << 19)  /* is player involved in a ritual ?? */
#define PLR_ARENA	(1 << 20)  /* in an arena contest */
#define PLR_LINE	(1 << 21)
#define PLR_TRUSTED	(1 << 22)
#define PLR_INFOCH      (1 << 23)  /* tuned into info channel? */
#define PLR_AFK		(1 << 24)
#define PLR_REFRESH	(1 << 25)
#define PLR_LEGEND	(1 << 26)
#define PLR_LOGALL      (1 << 27)
#define PLR_EXEDIT	(1 << 28)
#define PLR_NOEMOTE	(1 << 29)
#define PLR_VTMAP	(1 << 30)

// for plr2_flags
#define PLR2_MAGE	(1 << 0)
#define PLR2_CLERIC	(1 << 1)
#define PLR2_THIEF	(1 << 2)
#define PLR2_WARRIOR	(1 << 3)
#define PLR2_SHAMAN	(1 << 4)
#define PLR2_RANGER	(1 << 5)
#define PLR2_BARD	(1 << 6)
#define PLR2_WARLOCK	(1 << 7)
#define PLR2_MONK	(1 << 8)
#define PLR2_MADEPT	(1 << 9)
#define PLR2_DRUID	(1 << 10)

#define PLR2_NONE1	(1 << 11)
#define PLR2_NONE2	(1 << 12)
#define PLR2_NONE3	(1 << 13)
#define PLR2_NONE4	(1 << 14)
#define PLR2_NONE5	(1 << 15)
#define PLR2_NONE6	(1 << 16)
#define PLR2_NONE7	(1 << 17)
#define PLR2_NONE8	(1 << 18)
#define PLR2_NONE9	(1 << 19)

#define PLR2_CLAN_ASS	(1 << 20)    /* hardy har har -roa :)*/
#define PLR2_IPP	(1 << 21)  
#define PLR2_MENTOR	(1 << 22)  
#define PLR2_CLIEDIT	(1 << 23)  
#define PLR2_CHAT	(1 << 24)   // imm only, hear chat or not...
#define PLR2_CLIENTWHO  (1 << 25)
#define PLR2_CLIENTCHAN (1 << 26)
#define PLR2_CLIENTEQ   (1 << 27)
#define PLR2_CLIENTINV  (1 << 28)
#define PLR2_CLIENTMUTE (1 << 29)
#define PLR2_CLIENTSTAT (1 << 30)

/* for players: preference bits */
#define PRF_BRIEF       (1 << 0)
#define PRF_COMPACT     (1 << 1)
#define PRF_DEAF	(1 << 2)
#define PRF_NOTELL      (1 << 3)
#define PRF_SHORTX	(1 << 4)
#define PRF_NOQA	(1 << 5)
#define PRF_CLAN_CH	(1 << 6)
#define PRF_ASSA_CH	(1 << 7)
#define PRF_NOHASSLE	(1 << 8)
#define PRF_QUEST	(1 << 9) // TBR
#define PRF_SUMMONABLE	(1 << 10)
#define PRF_NOREPEAT	(1 << 11)
#define PRF_HOLYLIGHT	(1 << 12)
#define PRF_COLOR	(1 << 13)
#define PRF_AREN_CH	(1 << 14) // TBR
#define PRF_NOWIZ	(1 << 15)
#define PRF_LOG1	(1 << 16)
#define PRF_LOG2	(1 << 17)
#define PRF_NOAUCT	(1 << 18)
#define PRF_NOOOC	(1 << 19)
#define PRF_NOGRATZ	(1 << 20) // TBR
#define PRF_ROOMFLAGS	(1 << 21)
#define PRF_AUTOX       (1 << 22)
#define PRF_INCOGNITO   (1 << 23)
#define PRF_MORTLOG     (1 << 24)
#define PRF_NOMUSIC     (1 << 25) // TBR
#define PRF_REQASS      (1 << 26)
#define PRF_ASSASSIN    (1 << 27)
#define PRF_AGOLD       (1 << 28)
#define PRF_ALOOT       (1 << 29)
#define PRF_ASPLIT      (1 << 30)
/*NO MORE PRF_s have to make another long of PRF2_*/
/* PRF is FULL   JTRhone */

/* for players: preference bits 2 :) PRF2_XXX */
#define PRF2_NOGIVE	(1 << 0)
#define PRF2_NOARENA	(1 << 1)
#define PRF2_CHOSEN	(1 << 2)  // madept has chosen

/* mob_proc bits  max of 31 (0 - 31) in first one */
/* JTRHONE ROA   used in OLCable mobprocs */
#define SPC_HUNTER	(1 << 0)
#define SPC_MAGIC_USER	(1 << 1)
#define SPC_WAR_CRY	(1 << 2)
#define SPC_PEACE_MAN	(1 << 3)
#define SPC_PPOCKET	(1 << 4)
#define SPC_WARRIOR	(1 << 5)
#define SPC_CLERIC	(1 << 6)
#define SPC_SNAKE	(1 << 7)
#define SPC_UNDEAD 	(1 << 8)
#define SPC_SHOPKEEP 	(1 << 9)   /* new OLCable shopkeepers RoA */
#define SPC_NOKILL	(1 << 10)
#define SPC_NOBUY	(1 << 11) /* this shopkeeper don't buy */
#define SPC_GMASTER 	(1 << 12)
#define SPC_REACTOR	(1 << 13)  /* triggers and such RoA */
#define SPC_RANDOM	(1 << 14)
#define SPC_FIDO	(1 << 15)
#define SPC_JANITOR	(1 << 16)
#define SPC_HEALER	(1 << 17)
#define SPC_FIREBREATH  (1 << 18)
#define SPC_ACIDBREATH  (1 << 19)
#define SPC_GASBREATH   (1 << 20)
#define SPC_LIGHTBREATH (1 << 21)
#define SPC_ICEBREATH   (1 << 22)
#define SPC_FIXER	(1 << 23)
#define SPC_MAILMAN	(1 << 24)
#define SPC_MOBPROC	(1 << 25)
#define SPC_BLEEDER	(1 << 26)
#define SPC_TELEPORTER	(1 << 27)
#define SPC_CITYGUARD	(1 << 28)
#define SPC_DOUBLETIME	(1 << 29)
#define SPC_QHUNTER	(1 << 30)

/* Alias stuff */
#define ALIAS_SIMPLE	0
#define ALIAS_COMPLEX	1

#define ALIAS_SEP_CHAR	'*'
#define ALIAS_VAR_CHAR	'&'
#define ALIAS_GLOB_CHAR	'%'

// new modes of connectedness... 7/14/98
#define CON_PLAYING		0
#define CON_DESCMENU		1
#define CON_CLOSE		99

/* these for arena_update spec proc mobs */
#define AR_UPDATE	0
#define AR_FLEE		1
#define AR_KILL		2

// for room affect bitvector
#define RMAFF_VS_EVIL		(1 << 0)
#define RMAFF_VS_NEUTRAL	(1 << 1)
#define RMAFF_VS_GOOD		(1 << 2)

#endif /* ROA_DEFINES_H */