/*___________________________________________________________________________*
)()( DalekenMUD 1.12 (C) 2000 )()(
`][' by Martin Thomson, Lee Brooks, `]['
|| Ken Herbert and David Jacques ||
|| ----------------------------------------------------------------- ||
|| Envy Diku Mud improvements copyright (C) 1994 by Michael Quan, ||
|| David Love, Guilherme 'Willie' Arnold, and Mitchell Tse. ||
|| Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael ||
|| Chastain, Michael Quan, and Mitchell Tse. ||
|| Original Diku Mud copyright (C) 1990, 1991 ||
|| by Sebastian Hammer, Michael Seifert, Hans Henrik St{rfeldt, ||
|| Tom Madsen, and Katja Nyboe. ||
|| ----------------------------------------------------------------- ||
|| Any use of this software must follow the licenses of the ||
|| creators. Much time and thought has gone into this software and ||
|| you are benefitting. We hope that you share your changes too. ||
|| What goes around, comes around. ||
|| ----------------------------------------------------------------- ||
|| const.h ||
|| This file contains #defines for all constant values. ||
*_/<>\_________________________________________________________________/<>\_*/
#define args( list ) list
#define DECLARE_DO_FUN( fun ) DO_FUN fun
#define DECLARE_SPEC_FUN( fun ) SPEC_FUN fun
#define DECLARE_SPELL_FUN( fun ) SPELL_FUN fun
#define DECLARE_READ_FUN( fun ) READ_FUN fun
/*
* Game parameters.
*
* Increase the max'es if you add more of something. Adjust the pulse
* numbers to suit yourself.
*/
#define MAX_SKILL 351 /* Number of skills */
#define MAX_CLASS 23 /* Total number of classes */
#define AVAIL_CLASS 5 /* Number of base classes */
#define NUM_MULTI_CLASS 5 /* Should be the same as above */
#define MAX_RACE 41 /* Number of races */
#define MAX_BOARD 8 /* Notice boards for notes */
#define MAX_LEVEL 1000 /* Absolute maximum level */
#define L_OVL MAX_LEVEL /* Overlord */
#define L_MAS 900 /* Master */
#define L_MBLD 850 /* Master Builder (Architect) */
#define L_SEN 800 /* Senior */
#define L_JUN 700 /* Junior */
#define L_ARCH 650 /* Archangel */
#define L_APP 500 /* Apprentice */
#define L_BLD 400 /* Builder */
#define L_ANG 300 /* Angel */
#define LEVEL_IMMORTAL L_ANG
#define LEVEL_HERO 250 /* Maximum player level */
#define L_HER LEVEL_HERO
/*
* Timing.
*/
#define PULSE_PER_SECOND 4
#define PULSE_VIOLENCE ( 3 * PULSE_PER_SECOND )
#define PULSE_MOBILE ( 7 * PULSE_PER_SECOND )
#define PULSE_TICK ( 30 * PULSE_PER_SECOND )
#define PULSE_AREA ( 60 * PULSE_PER_SECOND )
#define PULSE_DB_DUMP ( 1800* PULSE_PER_SECOND ) /* 30 minutes */
/*
* String and memory management parameters.
*/
#define MAX_KEY_HASH 1024
#define MAX_STRING_LENGTH 4096
#define MAX_INPUT_LENGTH 256
#define SMALL_OUTBUF_SIZE 2048
#define MAX_CHUNKS 20 /* Used in ssm.c */
#define MAX_VECTOR 2
/*
* Limits for CPU time used.
*
* Note: ALARM_BOOT_DB should be less than ALARM_FREQUENCY. If the MUD takes
* longer to boot and you have to increase this value, then the other values
* should be increased correspondingly.
*
* ALARM_BOOT_DB and ALARM_RUNNING are in 1/10ths of seconds.
*/
#define ALARM_FREQUENCY 20 /* checked every 20 seconds */
#define ALARM_BOOT_DB 150 /* allow for 15 seconds to boot */
#define ALARM_RUNNING 50 /* 5 sec of CPU time every 20 sec */
/*
* Utility macros.
*/
#define UMIN( a, b ) ( (a) < (b) ? (a) : (b) )
#define UMAX( a, b ) ( (a) > (b) ? (a) : (b) )
#define URANGE( a, b, c ) ( (b) < (a) ? (a) \
: ( (b) > (c) ? (c) \
: (b) ) )
#define LOWER( c ) tolower( (c) )
#define UPPER( c ) toupper( (c) )
/* #define UPPER( c ) ( ( (c) >= 'a' && (c) <= 'z' ) \
? ( (c) + 'A' - 'a' ) : (c) ) */
#define IS_SET( flag, bit ) ( (flag) & (bit) )
#define SET_BIT( var, bit ) ( (var) |= (bit) )
#define REMOVE_BIT( var, bit ) ( (var) &= ~(bit) )
#define TOGGLE_BIT( var, bit ) ( (var) ^= (bit) )
/*
* Vector macros for long bitfields.
* using 32 bit integers for these to improve pointer compatability.
*/
#define BMASK( bit ) ( 1 << ( ( bit ) % 32 ) )
#define BSLOT( bit ) ( ( bit ) / 32 )
#define xIS_SET( var, bit ) ( ( var )[BSLOT( bit )] & BMASK( bit ) )
#define xSET_BIT( var, bit ) ( ( var )[BSLOT( bit )] |= BMASK( bit ) )
#define xREMOVE_BIT( var, bit ) ( ( var )[BSLOT( bit )] &= ~BMASK( bit ) )
#define xTOGGLE_BIT( var, bit ) ( ( var )[BSLOT( bit )] ^= BMASK( bit ) )
/*
* Character macros.
*/
#define IS_NPC( ch ) ( xIS_SET( (ch)->act, ACT_IS_NPC ) )
#define IS_NPC_CLASS( ch ) ( (ch)->class == CLASS_NONE )
#define CH( descriptor ) ( (descriptor)->original \
? (descriptor)->original \
: (descriptor)->character )
#define IS_IMMORTAL( ch ) ( get_trust(ch) >= LEVEL_IMMORTAL )
#define IS_HERO( ch ) ( get_trust(ch) >= LEVEL_HERO )
#define IS_ANGEL( ch ) ( IS_HERO(ch) && !IS_IMMORTAL(ch) )
#define IS_AFFECTED( ch, sn ) ( xIS_SET( (ch)->affected_by, (sn) ) )
#define IS_GOOD( ch ) ( ch->alignment >= 350 )
#define IS_EVIL( ch ) ( ch->alignment <= -350 )
#define IS_NEUTRAL( ch ) ( !IS_GOOD(ch) && !IS_EVIL(ch) )
#define IS_AWAKE( ch ) ( ch->position > POS_SLEEPING )
#define IS_OUTSIDE( ch ) ( !IS_SET( (ch)->in_room->room_flags, \
ROOM_INDOORS ) \
&& !IS_SET( (ch)->in_room->room_flags, \
ROOM_UNDERGROUND ) \
&& !IS_SET( (ch)->in_room->room_flags, \
ROOM_FLOODED ) \
&& (ch)->in_room->sector_type != \
SECT_UNDERWATER )
#define WAIT_STATE( ch, pulse ) ( (ch)->wait = UMAX( (ch)->wait, (pulse) ) )
#define IS_SWITCHED( ch ) ( (ch)->pcdata->switched )
#define IS_BUILDER( ch, Area ) is_builder( ch, Area )
/*
* Object macros.
*/
#define CAN_WEAR( obj, part ) ( IS_SET( (obj)->wear_flags, (part) ) )
#define IS_OBJ_STAT( obj, stat )( IS_SET( (obj)->extra_flags, (stat) ) )
/*
* Description macros.
*/
#define PERS( ch, looker ) ( can_see( (looker), (ch) ) \
? ( ( (ch)->short_descr \
&& (ch)->short_descr[0] ) \
? (ch)->short_descr : (ch)->name ) \
: ( IS_IMMORTAL( ch ) \
? "an immortal" : "someone" ) )
/*
* Macro to cover the use of the old functions
*/
#define GET_AC( ch ) get_ac( (ch) )
#define one_argument( str, arg ) first_arg( (str), (arg), TRUE )
/* Miscellaneous #defines */
#define AUTOLOOK "|illi|" /* unlikely to be used as an argument. */
#define LINE_SEPARATOR "&B-------------------------------------------------------------------------------&n\n\r"
/* Simple barrier line for formatted output. */
#define MAX_JUGGLED 5 /* for the juggle skill. */
#define NO_FLAG -99 /* Must not be used in flags or stats. */
#define IDENT_TIMEOUT 120 /* for ident (2 minutes) */
/* Magic numbers */
#define MAGIC_NUM_CHAR 0
#define MAGIC_NUM_OBJECT 1
/* Erwin A's extremely useful bitvalue #define's */
#define BIT_00 (1 << 0) /* 1 */
#define BIT_01 (1 << 1) /* 2 */
#define BIT_02 (1 << 2) /* 4 */
#define BIT_03 (1 << 3) /* 8 */
#define BIT_04 (1 << 4) /* 16 */
#define BIT_05 (1 << 5) /* 32 */
#define BIT_06 (1 << 6) /* 64 */
#define BIT_07 (1 << 7) /* 128 */
#define BIT_08 (1 << 8) /* 256 */
#define BIT_09 (1 << 9) /* 512 */
#define BIT_10 (1 << 10) /* 1024 */
#define BIT_11 (1 << 11) /* 2048 */
#define BIT_12 (1 << 12) /* 4096 */
#define BIT_13 (1 << 13) /* 8192 */
#define BIT_14 (1 << 14) /* 16384 */
#define BIT_15 (1 << 15) /* 32768 */
#define BIT_16 (1 << 16) /* 65536 */
#define BIT_17 (1 << 17) /* 131072 */
#define BIT_18 (1 << 18) /* 262144 */
#define BIT_19 (1 << 19) /* 524288 */
#define BIT_20 (1 << 20) /* 1048576 */
#define BIT_21 (1 << 21) /* 2097152 */
#define BIT_22 (1 << 22) /* 4194304 */
#define BIT_23 (1 << 23) /* 8388608 */
#define BIT_24 (1 << 24) /* 16777216 */
#define BIT_25 (1 << 25) /* 33554432 */
#define BIT_26 (1 << 26) /* 67108864 */
#define BIT_27 (1 << 27) /* 134217728 */
#define BIT_28 (1 << 28) /* 268435456 */
#define BIT_29 (1 << 29) /* 536870912 */
#define BIT_30 (1 << 30) /* 1073741824 */
#define BIT_31 (1 << 31) /* 2147482648 */
/* should watch this last one, it's the sign bit, use a vector instead */
/*
* Magic Numbers for PFile loading.
*/
#define MAND 3344556 /* Magic # for manditory field */
#define SPECIFIED 3344557 /* Key was used already. */
#define DEFLT 3344558 /* Use default from fread_char_obj */
#define REALLY_STRING -2423641 /* Use in special_read to note a string */
/* Mud Client Compression Protocol definitions.*/
#if defined( MCCP )
#define TELOPT_COMPRESS 85
#define TELOPT_COMPRESS2 86
#define COMPRESS_BUF_SIZE MAX_STRING_LENGTH
#endif
/*-----------------------------------------------------------------
* System constants, bitfield values etc...
* These values are used as part of the mapping of integer values to actual
* useful values in the code. This section no longer really applies to area
* builders, instead they should refer to bit.c for the values they can use.
*/
/*
* SysInfo flags.
*/
#define SYSINFO_REBOOT BIT_00 /* Reboot instead of shutdown */
#define SYSINFO_LOGALL BIT_01 /* Log all commands */
#define SYSINFO_NOFIGHT BIT_02 /* No fights can be started */
#define SYSINFO_WIZLOCK BIT_03 /* Non-wizified players are denied */
#define SYSINFO_ACT_TRIGGER BIT_04 /* Global toggle for MUDprogs */
#define SYSINFO_VERBOSE_LOG BIT_05 /* The system log is verbose */
#define SYSINFO_SAVEALL BIT_06 /* Save all areas, not just changed */
#define SYSINFO_ISPELL BIT_07 /* Enable ispell */
#define SYSINFO_FORTUNES BIT_08 /* Use fortune for quotes */
#define SYSINFO_HOLYWAR BIT_09 /* There is a Holy War raging */
#define SYSINFO_NOCPULIMIT BIT_10 /* The CPU time limit is ignored */
#define SYSINFO_LOGNOHELP BIT_11 /* Log unfound helps */
/*
* Time and weather stuff.
*/
#define SUN_DARK 0
#define SUN_RISE 1
#define SUN_LIGHT 2
#define SUN_SET 3
#define SKY_CLOUDLESS 0
#define SKY_CLOUDY 1
#define SKY_RAINING 2
#define SKY_LIGHTNING 3
/*
* Interpreter flags, refer to comm.c.
*/
#define INTERPRETER_STANDARD 0
#define INTERPRETER_SAFE BIT_00 /* can't be attacked */
#define INTERPRETER_NOALIAS BIT_01 /* block aliasing */
#define INTERPRETER_NOMESSAGE BIT_02 /* no game messages */
#define INTERPRETER_LEADSPACE BIT_03 /* don't ignore spaces */
/*
* TO types for act.
*/
#define TO_ROOM 0 /* to all but actor */
#define TO_NOTVICT 1 /* to all but actor and victim */
#define TO_VICT 2 /* to the victim (secondary target) */
#define TO_CHAR 3 /* to the actor (primary target) */
#define TO_ALL 4 /* everyone except those asleep not target */
#define TO_CANSEE 5 /* TO_ROOM, only if they can see actor */
/*
* Clans, Guilds, Orders.
*/
#define CLAN_NORMAL 0 /* a PK clan */
#define CLAN_ORDER 1 /* religious order */
#define CLAN_GUILD 2 /* class only group */
#define RANK_NONE 0 /* not a clan member */
#define RANK_EXILED 1 /* Exiled from a clan */
#define RANK_CLANSMAN 2 /* Foot soldier */
#define RANK_CLANHERO 3 /* Knight */
#define RANK_CHIEFTAIN 4 /* Knight Lord */
#define RANK_OVERLORD 5 /* Head clan leader */
/*
* Sacrifice.
*/
#define SAC_EVENT_GOLD 0 /* normal, get gold */
#define SAC_EVENT_BLESS 1 /* get blessed */
#define SAC_EVENT_CURSE 2 /* get cursed */
#define SAC_EVENT_ARMOUR 3 /* get armour cast on them */
#define SAC_EVENT_HEAL 4 /* get a few hps */
#define SAC_EVENT_DISPEL_EVIL 5 /* condemn cast on them */
#define SAC_EVENT_BLIND 6 /* blinded */
#define SAC_EVENT_BAMF 7 /* randomly transported */
#define SAC_EVENT_MANA 8 /* get a little mana */
#define SAC_EVENT_FOOD 9 /* get some food */
#define SAC_EVENT_WATER 10 /* thirst quenched a little */
#define SAC_EVENT_DRUNK 11 /* get a little drunker */
#define SAC_EVENT_RAISE 12 /* if it's a corpse it rises */
#define SAC_EVENT_PLAGUE 13 /* get plagued */
/*
* Types of attacks.
* Must be non-overlapping with spell/skill types, but may * be arbitrary
* beyond that.
*/
#define TYPE_UNDEFINED -1
#define TYPE_HIT (MAX_SKILL<<1)
#define TYPE_MPDAMAGE (MAX_SKILL<<2)
/*
* Well known mob virtual numbers.
* WARNING: Any basic area file system should include these vnums for the
* game to work properly, without them crashes are certain.
*/
#define MOB_VNUM_SUPERMOB 3
#define MOB_VNUM_DEMON 10
#define MOB_VNUM_ZOMBIE 11
#define MOB_VNUM_SKELETON 12
#define MOB_VNUM_MUMMY 13
#define MOB_VNUM_LICH 14
/*
* Well known object virtual numbers.
* Most of these are used in either spells or skills.
* WARNING: Any basic area file system should include these vnums for the
* game to work properly, without them crashes are certain.
*/
#define OBJ_VNUM_DUMMY 1
#define OBJ_VNUM_MONEY_ONE 2
#define OBJ_VNUM_MONEY_SOME 3
#define OBJ_VNUM_CORPSE_NPC 10
#define OBJ_VNUM_CORPSE_PC 11
#define OBJ_VNUM_SEVERED_HEAD 12
#define OBJ_VNUM_TORN_HEART 13
#define OBJ_VNUM_SPILLED_GUTS 14
#define OBJ_VNUM_LOOSE_TEETH 15
#define OBJ_VNUM_FINAL_TURD 16
#define OBJ_VNUM_MUSHROOM 20
#define OBJ_VNUM_LIGHT_BALL 21
#define OBJ_VNUM_SPRING 22
#define OBJ_VNUM_PORTAL 23
#define OBJ_VNUM_NEXUS 24
#define OBJ_VNUM_FORAGE_FIRST 26
#define OBJ_VNUM_FORAGE_LAST 36
#define OBJ_VNUM_WHETSTONE 37
#define OBJ_VNUM_BLOOD_STAIN 38
#define OBJ_VNUM_MAGIC_PILL 39
#define OBJ_VNUM_HERBS 42
#define OBJ_VNUM_BANDAGES 43
#define OBJ_VNUM_DIM_DOOR 44
#define OBJ_VNUM_SPIRIT_HAM 45
/* Stuff given out in MudSchool */
#define OBJ_VNUM_SCHOOL_LIGHT 3726
#define OBJ_VNUM_SCHOOL_VEST 3708
#define OBJ_VNUM_SCHOOL_ARMOUR 3707
#define OBJ_VNUM_SCHOOL_SHIELD 3718
#define OBJ_VNUM_SCHOOL_MACE 3700
#define OBJ_VNUM_SCHOOL_DAGGER 3701
#define OBJ_VNUM_SCHOOL_SWORD 3702
#define OBJ_VNUM_SCHOOL_STAFF 3703
#define OBJ_VNUM_BLACK_POWDER 8903 /* not in use */
/*
* Well known room virtual numbers.
*/
#define ROOM_VNUM_LIMBO 2
#define ROOM_VNUM_ARENA 3
#define ROOM_VNUM_PREP_ROOM 4
#define ROOM_VNUM_IMMPLANE 700
#define ROOM_VNUM_TEMPLE 3001
#define ROOM_VNUM_SCHOOL 3700
/*
* ACT bits for mobs.
*/
#define ACT_IS_NPC 0 /* Auto set for mobs */
#define ACT_SENTINEL 1 /* Stays in one room */
#define ACT_SCAVENGER 2 /* Picks up objects */
#define ACT_AGGRESSIVE 3 /* Attacks PC's */
#define ACT_STAY_AREA 4 /* Won't leave area */
#define ACT_WIMPY 5 /* Flees when hurt */
#define ACT_PET 6 /* Auto set for pets */
#define ACT_TRAIN 7 /* Can train PC's */
#define ACT_PRACTICE 8 /* Can practice PC's */
#define ACT_GAMBLE 9 /* Runs a gambling game */
#define ACT_BANKER 10 /* Can take your money */
#define ACT_MERCENARY 11 /* Will be for hire */
#define ACT_ASSIST 12 /* will fight if others are */
#define ACT_BURIED 13 /* Imposible to see */
#define ACT_MOVED 14 /* Dont ever set! */
#define ACT_RACIST 15 /* acts on racial instinct */
#define ACT_HUNTER 16 /* will hunt and kill fleers */
#define ACT_QUESTMASTER 17 /* is a questmaster */
#define ACT_HEALER 18 /* heals players for a fee */
#define ACT_DELAYED 19 /* when mob delays itself */
#define ACT_SMITH 20 /* a mob who can repair stuff*/
#define ACT_PRAC_AIR 21 /* Can practice air */
#define ACT_PRAC_EARTH 22 /* Can practice earth */
#define ACT_PRAC_FIRE 23 /* Can practice fire */
#define ACT_PRAC_SPIRIT 24 /* Can practice spirit */
#define ACT_PRAC_WATER 25 /* Can practice water */
#define ACT_MUDPROG 26 /* is running a MUDProg */
/*
* Shopkeeper Maximum number of trading types.
*/
#define MAX_TRADE 5
/*
* Bits for 'affected_by'.
*/
#define AFF_BLIND 0 /* Can't see */
#define AFF_INVISIBLE 1 /* Can't be seen */
#define AFF_DETECT_EVIL 2 /* Can see evil things */
#define AFF_DETECT_INVIS 3 /* Can see invisible stuff */
#define AFF_DETECT_MAGIC 4 /* Can see if things are magical */
#define AFF_DETECT_HIDDEN 5 /* Can see hidden things */
#define AFF_HOLD 6 /* Webbed, can't move */
#define AFF_SANCTUARY 7 /* Takes half damage */
#define AFF_FAERIE_FIRE 8 /* Bright outline, easy to hit */
#define AFF_INFRARED 9 /* See characters in the dark */
#define AFF_MIND_MIST 10 /* Can't remember anything */
#define AFF_POISON 11 /* Poisoned, take damage */
#define AFF_PROTECT 12 /* Protected from opposite align */
#define AFF_POLYMORPH 13 /* Race or sex mutation */
#define AFF_SNEAK 14 /* Entrances/exits wont be shown */
#define AFF_HIDE 15 /* Hiding */
#define AFF_SLEEP 16 /* Affected by sleep spell */
#define AFF_CHARM 17 /* Charmed by someone */
#define AFF_FLYING 18 /* Is flying */
#define AFF_PASS_DOOR 19 /* Can walk through doors */
#define AFF_AURA_SIGHT 20 /* Can see auras */
#define AFF_BLEEDING 21 /* Leaking blood can't regen */
#define AFF_MUTE 22 /* Can't speak */
#define AFF_BREATHING 23 /* Can breath underwater */
#define AFF_VAMP_BITE 24 /* Affected by a vampiric bite */
#define AFF_GHOUL 25 /* Ephemeral, can't hit or be hit */
#define AFF_ATTACKSHIELD 26 /* Has a defensive shield */
#define AFF_HASTE 27 /* Gets an extra attack */
#define AFF_FAST_TALK 28 /* Might not get aggied */
#define AFF_WARP_FLESH 29 /* Takes double damage from hits */
#define AFF_PLAGUE 30 /* Diseased */
#define AFF_BERSERK 31 /* Absolutely nuts */
#define AFF_TAUNT 32 /* More likely to get aggied */
#define AFF_NEVERMISS 33 /* Can't ever miss a hit */
#define AFF_MAGICHANDS 34 /* Chill Touch, Burning Hands.. */
#define AFF_DARKNESS 35 /* Makes the room darker */
#define AFF_POISONRESIST 36 /* Chance of removing poison */
#define AFF_CONFUSION 37 /* Dazed and Confused */
#define AFF_DEAD 38 /* Used for swan song */
#define AFF_CALM 39 /* The char wont be able to attack/aggress */
#define AFF_SENSE_LIFE 40 /* Can sense invisible life */
/*
* Character extra bits.
* Bits for avoiding damage, so it happens only once.
* Extra affects can be put here as well.
*/
#define CH_EX_DODGE BIT_00
#define CH_EX_PARRY BIT_01
#define CH_EX_SHIELD_BLOCK BIT_02
#define CH_EX_DODGE_2 BIT_03
#define CH_EX_STUMBLE BIT_04
#define CH_EX_FAMILIAR BIT_05
#define CH_EX_BLINK BIT_06
#define CH_EX_RESET (CH_EX_DODGE|CH_EX_PARRY|CH_EX_SHIELD_BLOCK| \
CH_EX_DODGE_2|CH_EX_STUMBLE|CH_EX_FAMILIAR| \
CH_EX_BLINK)
/*
* Sex.
*
*/
#define SEX_NEUTRAL 0
#define SEX_MALE 1
#define SEX_FEMALE 2
/*
* Item types.
*
*/
#define ITEM_LIGHT 1
#define ITEM_SCROLL 2
#define ITEM_WAND 3
#define ITEM_STAFF 4
#define ITEM_WEAPON 5
#define ITEM_TREASURE 6
#define ITEM_ARMOUR 7
#define ITEM_POTION 8
#define ITEM_FURNITURE 9
#define ITEM_TRASH 10
#define ITEM_CONTAINER 11
#define ITEM_DRINK_CON 12
#define ITEM_KEY 13
#define ITEM_FOOD 14
#define ITEM_MONEY 15
#define ITEM_BOAT 16
#define ITEM_CORPSE_NPC 17
#define ITEM_CORPSE_PC 18
#define ITEM_FOUNTAIN 19
#define ITEM_PILL 20
#define ITEM_PORTAL 21
#define ITEM_EXPLOSIVE 22
#define ITEM_PLANT 23
#define ITEM_LIMB 24
#define ITEM_BOOK 25
#define ITEM_GEM 26
/*
* Extra flags.
*
*/
#define ITEM_GLOW BIT_00 /* purely visual */
#define ITEM_HUM BIT_01 /* "" */
#define ITEM_DARK BIT_02 /* affects the light */
#define ITEM_QUEST BIT_03 /* temporary quest flag */
#define ITEM_EVIL BIT_04 /* purely visual */
#define ITEM_INVIS BIT_05 /* can't be seen, der */
#define ITEM_MAGIC BIT_06 /* visual, used for transmute */
#define ITEM_NODROP BIT_07 /* can't leave the hand */
#define ITEM_BLESS BIT_08 /* harder to damage */
#define ITEM_ANTI_GOOD BIT_09 /* Good players can't use it */
#define ITEM_ANTI_EVIL BIT_10 /* Evil players can't use it */
#define ITEM_ANTI_NEUTRAL BIT_11 /* Guess! */
#define ITEM_NOREMOVE BIT_12 /* Can't be taken off */
#define ITEM_INVENTORY BIT_13 /* For shops, decays on death */
#define ITEM_POISONED BIT_14 /* Weapons, can't be sold */
#define ITEM_VAMPIRE_BANE BIT_15 /* Anti-vampire */
#define ITEM_HOLY BIT_16 /* Lose 50hps when picking it up*/
#define ITEM_CHARGED BIT_17 /* Temporarily charged */
#define ITEM_SHARP BIT_18 /* Sharp, weapons only */
#define ITEM_HORNED BIT_19 /* Horned, for weapons and helms*/
#define ITEM_OWNER BIT_20 /* Tied to a certain person */
#define ITEM_NO_CAST BIT_21 /* Can't cast while wearing it */
#define ITEM_RUNED BIT_22 /* Engraved upon, looks cool */
#define ITEM_BURIED BIT_23 /* Underneath the ground */
#define ITEM_NO_IDENTIFY BIT_24 /* Cannot be identified */
#define ITEM_FRAGILE BIT_25 /* Is easily destroyed */
/*
* Wear flags.
*
*/
#define ITEM_TAKE BIT_00
#define ITEM_WEAR_FINGER BIT_01
#define ITEM_WEAR_NECK BIT_02
#define ITEM_WEAR_BODY BIT_03
#define ITEM_WEAR_HEAD BIT_04
#define ITEM_WEAR_LEGS BIT_05
#define ITEM_WEAR_FEET BIT_06
#define ITEM_WEAR_HANDS BIT_07
#define ITEM_WEAR_ARMS BIT_08
#define ITEM_WEAR_SHIELD BIT_09
#define ITEM_WEAR_SHOULDERS BIT_10
#define ITEM_WEAR_WAIST BIT_11
#define ITEM_WEAR_WRIST BIT_12
#define ITEM_WIELD BIT_13
#define ITEM_HOLD BIT_14
#define ITEM_FLOAT BIT_15
#define ITEM_WEAR_FACE BIT_16
#define ITEM_WIELD_DOUBLE BIT_17
#define ITEM_WEAR_ANKLE BIT_18
#define ITEM_WEAR_HORNS BIT_19
#define ITEM_WEAR_WINGS BIT_20
#define ITEM_WEAR_EAR BIT_21
#define ITEM_WEAR_NOSE BIT_22
/*
* New wear locations
*/
#define WEAR_NONE 0 /* -1 really sucked here */
#define WEAR_HEAD 1
#define WEAR_HORNS 2
#define WEAR_EAR_L 3
#define WEAR_EAR_R 4
#define WEAR_FACE 5
#define WEAR_NOSE 6
#define WEAR_NECK_1 7
#define WEAR_NECK_2 8
#define WEAR_SHOULDERS 9
#define WEAR_WINGS 10
#define WEAR_FLOAT_L 11
#define WEAR_FLOAT_R 12
#define WEAR_ARMS 13
#define WEAR_WRIST_L 14
#define WEAR_WRIST_R 15
#define WEAR_HANDS 16
#define WEAR_FINGER_L 17
#define WEAR_FINGER_R 18
#define WEAR_WIELD_R 19
#define WEAR_HOLD_L 20
#define WEAR_HOLD_R 21
#define WEAR_SHIELD 22
#define WEAR_WIELD_L 23
#define WEAR_WIELD_DOUBLE 24
#define WEAR_BODY 25
#define WEAR_WAIST 26
#define WEAR_LEGS 27
#define WEAR_ANKLE_L 28
#define WEAR_ANKLE_R 29
#define WEAR_FEET 30
#define WEAR_JUGGLED 31 /* unique slot, multiple items */
#define MAX_WEAR 32
/*
* Apply types (for affects).
*
*/
#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 /* pointless */
#define APPLY_LEVEL 8 /* pointless */
#define APPLY_AGE 9 /* pointless */
#define APPLY_HEIGHT 10 /* pointless */
#define APPLY_WEIGHT 11 /* pointless */
#define APPLY_HIT 12
#define APPLY_MOVE 13
#define APPLY_GOLD 14
#define APPLY_EXP 15
#define APPLY_AC 16
#define APPLY_HITROLL 17
#define APPLY_DAMROLL 18
#define APPLY_RACE 19
#define APPLY_RESILIENCE 20
#define APPLY_BODY_TEMP 21
#define APPLY_APPEARANCE 22 /* pointless */
#define APPLY_BODY_PART 23 /* strange, may not work well */
#define APPLY_SPEED 24
#define APPLY_SIZE 25
#define APPLY_AIR 26
#define APPLY_EARTH 27
#define APPLY_FIRE 28
#define APPLY_SPIRIT 29
#define APPLY_WATER 30
#define APPLY_MANA_AIR 31
#define APPLY_MANA_EARTH 32
#define APPLY_MANA_FIRE 33
#define APPLY_MANA_SPIRIT 34
#define APPLY_MANA_WATER 35
#define APPLY_MAGIC_RESIST 36 /* generic magic resistance */
/*
* Values for containers (value[1]).
*
*/
#define CONT_CLOSEABLE BIT_00
#define CONT_PICKPROOF BIT_01
#define CONT_HARDPICK BIT_02 /* Four times harder to pick */
#define CONT_CLOSED BIT_03
#define CONT_LOCKED BIT_04
#define CONT_TRAPPED BIT_05
#define CONT_WEIGHTLESS BIT_06 /* all objects inside are weightless */
#define CONT_HUNGRY BIT_07 /* eats all objects placed inside */
#define CONT_HOLEY BIT_08 /* items fall through when placed in */
#define CONT_EAT_KEY BIT_09 /* when unlocking it chews the key */
/*
* Values for Furniture, stand, rest, sleep, on, in, at.
*/
#define FURN_STAND_ON BIT_00
#define FURN_STAND_IN BIT_01
#define FURN_STAND_AT BIT_02
#define FURN_STAND (FURN_STAND_ON|FURN_STAND_IN|FURN_STAND_AT)
#define FURN_SIT_ON BIT_03
#define FURN_SIT_IN BIT_04
#define FURN_SIT_AT BIT_05
#define FURN_SIT (FURN_SIT_ON|FURN_SIT_IN|FURN_SIT_AT)
#define FURN_REST_ON BIT_03
#define FURN_REST_IN BIT_04
#define FURN_REST_AT BIT_05
#define FURN_REST (FURN_REST_ON|FURN_REST_IN|FURN_REST_AT)
#define FURN_SLEEP_ON BIT_06
#define FURN_SLEEP_IN BIT_07
#define FURN_SLEEP_AT BIT_08
#define FURN_SLEEP (FURN_SLEEP_ON|FURN_SLEEP_IN|FURN_SLEEP_AT)
/*
* Room flags.
*
*/
#define ROOM_DARK BIT_00 /* VERY dark */
#define ROOM_NO_MOB BIT_01 /* Mobiles can't walk in*/
#define ROOM_INDOORS BIT_02 /* Hmmmm */
#define ROOM_UNDERGROUND BIT_03 /* Beneath the ground */
#define ROOM_PRIVATE BIT_04 /* Two people at a time */
#define ROOM_SAFE BIT_05 /* Safe from attackers */
#define ROOM_SOLITARY BIT_06 /* One person at a time */
#define ROOM_PET_SHOP BIT_07 /* Pet room */
#define ROOM_NO_RECALL BIT_08 /* Can't recall from here */
#define ROOM_CONE_OF_SILENCE BIT_09 /* No talking or casting */
#define ROOM_TEMP_CONE_OF_SILENCE BIT_10 /* "" */
#define ROOM_TRACK_MARK BIT_11 /* Temporary */
#define ROOM_NO_PORTAL BIT_12 /* Can't portal here */
#define ROOM_ARENA BIT_13 /* Players can fight */
#define ROOM_FALL BIT_14 /* You fall downwards */
#define ROOM_HOT BIT_15 /* Hot (temperature) */
#define ROOM_COLD BIT_16 /* No prizes for guessing */
#define ROOM_FORAGE BIT_17 /* You get food by foraging */
#define ROOM_FLOODED BIT_18 /* From the flood spell */
/*
* Directions.
*
*/
#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
/*
* Exit flags.
*
*/
#define EX_ISDOOR BIT_00
#define EX_CLOSED BIT_01
#define EX_LOCKED BIT_02
#define EX_BASHED BIT_03 /* Bashed (bashdoor skill) */
#define EX_BASHPROOF BIT_04 /* Impossible to bash down */
#define EX_PICKPROOF BIT_05 /* Impossible to pick */
#define EX_HARDPICK BIT_06 /* Four times harder to pick */
#define EX_PASSPROOF BIT_07 /* Block phase-shifted movement */
#define EX_TRAPPED BIT_08 /* Spring a trap when opened */
#define EX_HIDDEN BIT_09 /* Doesn't show up on scan */
#define EX_EAT_KEY BIT_10 /* Eats keys when unlocked */
#define EX_TEMPORARY BIT_11 /* For MUDPrograms */
#define EX_NOSHADOW BIT_12 /* For shadow door passing */
/*
* Sector types.
*/
#define SECT_INSIDE 0
#define SECT_CITY 1
#define SECT_FIELD 2
#define SECT_FOREST 3
#define SECT_HILLS 4
#define SECT_MOUNTAIN 5
#define SECT_WATER_SWIM 6
#define SECT_WATER_NOSWIM 7
#define SECT_UNDERWATER 8
#define SECT_AIR 9
#define SECT_DESERT 10
#define SECT_SPACE 11
#define SECT_SWAMP 12
#define SECT_MAX 13
/*
* Area flags.
*/
#define AREA_NONE 0
#define AREA_CHANGED BIT_00 /* Area has been modified. */
#define AREA_ADDED BIT_01 /* Area has been added to. */
#define AREA_LOADING BIT_02 /* Used for counting in db.c */
#define AREA_VERBOSE BIT_03 /* OLC */
#define AREA_ALWAYS_VERBOSE BIT_04 /* Always save in verbose mode */
#define AREA_DELETED BIT_05 /* Dont save it, be careful */
#define AREA_HIDE BIT_06 /* Wont show up on "areas" */
#define AREA_NOSAVE BIT_07 /* For finished areas no save */
#define AREA_SENTINEL BIT_08 /* All mobs will stand still (test) */
#define AREA_NO_FLOOD BIT_09 /* The flood spell doesn't work */
#define AREA_SAVE (AREA_DELETED|AREA_ALWAYS_VERBOSE|AREA_HIDE)
/*
* Conditions.
*/
#define COND_DRUNK 0
#define COND_FULL 1
#define COND_THIRST 2
/*
* Positions.
*/
#define POS_DEAD 0
#define POS_MORTAL 1
#define POS_INCAP 2
#define POS_STUNNED 3
#define POS_SLEEPING 4
#define POS_MEDITATING 5
#define POS_RESTING 6
#define POS_SITTING 7
#define POS_SMASHED 8 /* the ram skill */
#define POS_GETTING_UP 9 /* trip and throw */
#define POS_FIGHTING 10
#define POS_STANDING 11
/*
* ACT bits for players.
*/
#define PLR_IS_NPC 0 /* Don't EVER set. */
#define PLR_BOUGHT_PET 1 /* Bought a pet this level */
#define PLR_BATTLE 2 /* Part of a MUD-wide PK battle */
#define PLR_AUTOEXIT 3 /* Show exits on autolook */
#define PLR_AUTOLOOT 4 /* Loots corpses */
#define PLR_AUTOSAC 5 /* Sacrifices corpses */
#define PLR_BLANK 6 /* Gets a blank line */
#define PLR_BRIEF 7 /* Doesn't room desc on enter */
#define PLR_COLOUR 8 /* Gets ANSI colour */
#define PLR_COMBINE 9 /* Combines multiple objects */
#define PLR_PROMPT 10 /* Gets a prompt */
#define PLR_TELNET_GA 11 /* Special prompt sequence */
#define PLR_HOLYLIGHT 12 /* Can see _everything_ */
#define PLR_WIZINVIS 13 /* Is invisible to all/most */
#define PLR_WIZBIT 14 /* Is a certified immortal */
#define PLR_SILENCE 15 /* Can't use say or channels */
#define PLR_NO_EMOTE 16 /* Can't use emote */
#define PLR_MOVED 17 /* --- Dont mess with this --- */
#define PLR_NO_TELL 18 /* Can't use tell */
#define PLR_LOG 19 /* All commands are logged */
#define PLR_DENY 20 /* Is denied from the MUD */
#define PLR_FREEZE 21 /* Can't enter any commands */
#define PLR_OUTLAW 22 /* Either stole from PC or killed */
#define PLR_KEYLOCK 23 /* Immortal keyboard lock */
#define PLR_AUTOGOLD 24 /* Gets gold from corpses */
#define PLR_AFK 25 /* Away from keyboard */
#define PLR_AUTOSPLIT 26 /* Splits gold with groupies */
#define PLR_NO_BEEP 27 /* Can't be BEEPED */
#define PLR_BUSY 28 /* Doesn't receive channels etc */
#define PLR_BATTLEOTHER 29 /* Gets others spam compressed */
#define PLR_BATTLESELF 30 /* Gets self spam compressed */
#define PLR_VT100 31 /* Receives terminal codes */
#define PLR_NO_LAG 32 /* player doesn't lag (imm) */
#define PLR_INFO 33 /* player gets extra info (imm) */
#define PLR_NOSAVE 34 /* player can't save, for pload only */
/*
* VT100 Codes.
*/
#define VT_SAVECURSOR "\0337" /* Save cursor and attrib */
#define VT_RESTORECURSOR "\0338" /* Restore cursor pos and attribs */
#define VT_SETWIN_CLEAR "\033[r" /* Clear scrollable window size */
#define VT_CLEAR_SCREEN "\033[2J" /* Clear screen */
#define VT_CLEAR_LINE "\033[2K" /* Clear this whole line */
#define VT_RESET_TERMINAL "\033c"
/*
* Channel bits.
*/
#define CHANNEL_DEAF BIT_00 /* Master switch */
#define CHANNEL_AUCTION BIT_01
#define CHANNEL_CHAT BIT_02
#define CHANNEL_IMMTALK BIT_03
#define CHANNEL_MUSIC BIT_04
#define CHANNEL_QUESTION BIT_05
#define CHANNEL_SHOUT BIT_06
#define CHANNEL_YELL BIT_07
#define CHANNEL_INFO BIT_08
#define CHANNEL_SENIORTALK BIT_09
#define CHANNEL_GRATZ BIT_10
#define CHANNEL_CLANTALK BIT_11
/* WIZNET flags, extensions of channels */
#define WIZ_ON BIT_12 /* On|Off switch. */
#define WIZ_LOG BIT_13 /* log_string(). */
#define WIZ_LOGINS BIT_14 /* Login|Logoff. */
#define WIZ_DEATHS BIT_15 /* Plr death's. */
#define WIZ_LEVELS BIT_16 /* Level's advancing. */
#define WIZ_TICKS BIT_17 /* Ticks/Counters */
#define WIZ_COMMANDS BIT_18 /* Logged commands */
#define WIZ_MISC BIT_19 /* Miscellaneous */
#define WIZ_CREATE BIT_20 /* Creation of stuff */
#define WIZ_CLAN BIT_21 /* Clan info */
#define WIZ_DEBUG BIT_22 /* Debug info, bug() */
/*
* Mob spec functions,
* to make mobprograms easier.
*/
#define SPEC_NULL 0
#define SPEC_AUTONOMOUS BIT_00 /* spec goes on timer */
#define SPEC_FIGHT BIT_01 /* spec goes off in a fight */
#define SPEC_DEATH BIT_02 /* spec goes on mob being deaded */
#define SPEC_TELL BIT_03 /* when some tells or says */
#define SPEC_GIVE BIT_04 /* when given an object */
#define SPEC_BRIBE BIT_05 /* when given cash */
#define SPEC_ENTER BIT_06 /* when someone walks in */
#define SPEC_ATTACK BIT_07 /* when being attacked */
/*
* Mud program information
*/
#define PROG_ERROR -1
/* universal programs */
#define GLOBAL_PROG 0 /* A global mud prog */
#define SUB_PROG 1 /* Sub procedure, no trigger */
#define ACT_PROG 2 /* On act message */
#define SPEECH_PROG 3 /* On speech */
#define RAND_PROG 4 /* At random time */
#define GREET_PROG 5 /* When player enters */
#define ALL_GREET_PROG 6 /* When player enters inc. sneak */
#define LEAVE_PROG 7 /* Just before a player leaves */
#define TIME_PROG 8 /* At specified time(s) */
#define REPOP_PROG 9 /* When loaded */
#define LOOK_PROG 10 /* explicitly look at */
#define COMMAND_PROG 11 /* explicitly look at */
/* mob only programs */
#define FIGHT_PROG 12 /* Every round when fighting */
#define DEATH_PROG 13 /* When killed, before corpse */
#define HITPRCNT_PROG 14 /* When below %age hps, every round */
#define ENTRY_PROG 15 /* When it walks into a room */
#define GIVE_PROG 16 /* When an item is given to it */
#define BRIBE_PROG 17 /* When gold is given */
#define ATTACK_PROG 18 /* When someone attacks it */
#define DELAY_PROG 19 /* When it finishes being delayed */
#define CAST_PROG 20 /* When someone casts a spell at it */
/* object programs */
#define WEAR_PROG 21 /* When worn */
#define REMOVE_PROG 22 /* When taken off */
#define SAC_PROG 23 /* Just before sacrifice */
#define EXAMINE_PROG 24 /* Examine or "look in" */
#define USE_PROG 25 /* Wands, staves, scrolls, potions.. */
#define GET_PROG 26 /* When picked up */
#define DROP_PROG 27 /* When put back down */
#define DAMAGE_PROG 28 /* When damaged */
#define REPAIR_PROG 29 /* When repaired */
#define OPEN_PROG 30 /* When opened (container) */
#define CLOSE_PROG 31 /* When closed (container) */
#define LOOT_PROG 32 /* When items are taken out */
#define PUTIN_PROG 33 /* Placing an item in a contain.*/
/* room programs */
#define SLEEP_PROG 34 /* When a player goes to sleep */
#define REST_PROG 35 /* When a player rests */
#define MPROG_GLOBAL_HASH 16
#define MPROG_GLOBAL_MOB 1 /* Allow mobs to use the prog. */
#define MPROG_GLOBAL_OBJ 2 /* Allow objects to use the prog. */
#define MPROG_GLOBAL_ROOM 4 /* Allow rooms to use the prog. */
/*
* Languages.
*/
#define LANG_COMMON 0
#define LANG_FAERIE BIT_00
#define LANG_DWARVEN BIT_01
#define LANG_ORCISH BIT_02
#define LANG_ELVEN BIT_03
#define LANG_VARTHAN BIT_04
#define LANG_ASTRAL BIT_05
#define LANG_ELEMENTAL BIT_06
#define LANG_GIBBERISH BIT_07
#define LANG_BAD BIT_08
#define LANG_ARCHAIC BIT_09
/*
* Magic stuff.
*/
#define MAGIC_AIR 0
#define MAGIC_EARTH 1
#define MAGIC_FIRE 2
#define MAGIC_SPIRIT 3
#define MAGIC_WATER 4
#define MAGIC_GENERIC 5
#define MAGIC_MAX 5
/*
* Alias #defines.
*/
#define ALIAS_SIMPLE 0
#define ALIAS_MULTIPLE 1
#define ALIAS_COMPLEX 2
/*
* Questing.
*/
#define QUEST_KILL_COMPLETE -1
#define QUEST_NONE 0
#define QUEST_ITEM 1
#define QUEST_KILL 2
#define QUEST_BODY_PART 3
#define QUEST_RACE_CORPSE 4
#define QUEST_OBJ_MATERIAL 5
/*
* Extra bitfields specifically for PCs.
* These are no longer saved, no need to.
*/
#define PC_BIT_SURGE BIT_00 /* player is surging spells */
#define PC_BIT_QUICKEN BIT_01 /* player is quickening spells */
#define PC_BIT_RACIAL BIT_02 /* player is using a racial skill */
#define PC_BIT_HANDOFKAZ BIT_12 /* hand of kaz instead of strangle */
#define PC_BIT_STRANGLE BIT_13 /* this must be the highest, as a large
* number of the slots above this are
* used in the strangle code */
/*
* Trade #defines.
*/
#define MAX_TRADE_OBJ 5
#define TRADE_LOCKED 1
#define TRADE_AGREED 2
/*
* Target types.
*/
#define TAR_IGNORE 0
#define TAR_CHAR_OFFENSIVE 1
#define TAR_CHAR_DEFENSIVE 2
#define TAR_CHAR_SELF 3
#define TAR_OBJ_INV 4
/*
* Spell types used for damage modification
*/
#define SKILL_TYPE_NONE BIT_00 /* mainly for skills */
#define SKILL_TYPE_MAGIC BIT_01 /* set if you want to check surge */
#define SKILL_TYPE_FIRE BIT_02 /* set if you want firey damage */
#define SKILL_TYPE_ICE BIT_03 /* opposite to fire */
#define SKILL_TYPE_NO_RESIL BIT_04 /* ignores resilience */
#define SKILL_TYPE_ACTION BIT_05 /* for mob autonomous action */
#define SKILL_TYPE_ENCHANTMENT BIT_06 /* for enchantments... and applying */
#define SKILL_TYPE_WEAPONSTRIKE BIT_07 /* for weapon spells */
#define SKILL_TYPE_DODGEABLE BIT_08 /* if it can be avoided/blocked */
/*
* Classes.
* These values follow very strict rules - refer to documentation.
*/
#define CLASS_NONE -1
#define CLASS_MAGE 0 /* Base Class */
#define CLASS_CLERIC 1 /* Base Class */
#define CLASS_THIEF 2 /* Base Class */
#define CLASS_WARRIOR 3 /* Base Class */
#define CLASS_MARTIAL_ARTIST 4 /* Base Class */
#define CLASS_SORCEROR 5 /* Specialist Mage */
#define CLASS_WARLOCK 6 /* Dual Class: Mage/Cleric */
#define CLASS_ILLUSIONIST 7 /* Dual Class: Mage/Thief */
#define CLASS_RANGER 8 /* Dual Class: Mage/Warrior */
#define CLASS_PSIONICIST 9 /* Dual Class: Mage/MarArt */
#define CLASS_BISHOP 10 /* Specialist Cleric */
#define CLASS_JESTER 11 /* Dual Class: Cleric/Thief */
#define CLASS_PALADIN 12 /* Dual Class: Cleric/Warrior */
#define CLASS_MONK 13 /* Dual Class: Cleric/MarArt */
#define CLASS_ASSASSIN 14 /* Specialist Thief */
#define CLASS_CRUSADER 15 /* Dual Class: Thief/Warrior */
#define CLASS_NINJA 16 /* Dual Class: Thief/MarArt */
#define CLASS_KNIGHT 17 /* Specialist Warrior */
#define CLASS_SAMURAI 18 /* Dual Class: Warrior/MarArt */
#define CLASS_MYSTIC 19 /* Specialist Martial Artist */
#define CLASS_BUILDER 20 /* Special Class */
#define CLASS_ANGEL 21 /* Special Class */
#define CLASS_DUMMY 22 /* Nothing Class */
/*
* Multiclassing states.
*/
#define CLASS_UNKNOWN 0 /* No skill in this class */
#define CLASS_ASPIRING 1 /* Learning to become this */
#define CLASS_ADEPT 2 /* Well known class */
#define CLASS_SECOND 3 /* Character's second class */
#define CLASS_FIRST 4 /* Original class */
/*
* Race ability bits
*/
#define RACE_NO_ABILITIES 0
#define RACE_NPC_ONLY BIT_00 /* players can't choose */
#define RACE_BREATHING BIT_01 /* can breath underwater */
#define RACE_SWIM BIT_02 /* can swim */
#define RACE_PASSDOOR BIT_03 /* permanent passdoor */
#define RACE_INFRAVISION BIT_04 /* permanent affect */
#define RACE_DETECT_ALIGN BIT_05 /* perm. */
#define RACE_DETECT_INVIS BIT_06 /* perm. */
#define RACE_DETECT_HIDDEN BIT_07 /* perm. */
#define RACE_PROTECTION BIT_08 /* perm. */
#define RACE_SANCT BIT_09 /* perm. sanctuary */
#define RACE_NO_WEAPON_WIELD BIT_10 /* can't use a weapon */
#define RACE_MUTE BIT_11 /* can't speak */
#define RACE_NO_SUN BIT_12 /* gets nuked by the sun */
#define RACE_DUAL_WIELD BIT_13 /* can wield two weapons */
#define RACE_DARK_SIGHT BIT_14 /* see in the dark */
#define RACE_NO_POISON BIT_15 /* can't be poisoned */
#define RACE_UNDEAD BIT_16 /* no life */
/*
* Body part bits.
*/
#define BODY_PART_TORSO BIT_00
#define BODY_PART_HEAD BIT_01
#define BODY_PART_EYES BIT_02
#define BODY_PART_ARM_L BIT_03
#define BODY_PART_ARM_R BIT_04
#define BODY_PART_ARMS (BIT_03|BIT_04) /* combination */
#define BODY_PART_HAND_L BIT_05
#define BODY_PART_HAND_R BIT_06
#define BODY_PART_HANDS (BIT_05|BIT_06) /* */
#define BODY_PART_FINGERS_L BIT_07
#define BODY_PART_FINGERS_R BIT_08
#define BODY_PART_FINGERS (BIT_07|BIT_08) /* */
#define BODY_PART_LEG_L BIT_09
#define BODY_PART_LEG_R BIT_10
#define BODY_PART_LEGS (BIT_09|BIT_10) /* */
#define BODY_PART_FOOT_L BIT_11
#define BODY_PART_FOOT_R BIT_12
#define BODY_PART_FEET (BIT_11|BIT_12) /* */
#define BODY_PART_TAIL BIT_13
#define BODY_PART_HORNS BIT_14
#define BODY_PART_WINGS BIT_15
#define BODY_PART_LUNGS BIT_16
#define BODY_PART_GILLS BIT_17
#define BODY_PART_NOSE BIT_18
#define BODY_PART_EAR_L BIT_19
#define BODY_PART_EAR_R BIT_20
#define BODY_PART_EARS (BIT_19|BIT_20) /* */
/* Special body part define. */
#define BODY_PARTS_HUMAN ( BODY_PART_TORSO|BODY_PART_HEAD| \
BODY_PART_EYES|BODY_PART_ARMS| \
BODY_PART_HANDS|BODY_PART_FINGERS| \
BODY_PART_LEGS|BODY_PART_FEET| \
BODY_PART_LUNGS|BODY_PART_NOSE| \
BODY_PART_EARS )
/*
* Liquids.
*/
#define LIQ_WATER 0
#define LIQ_BLOOD 13
#define LIQ_MAX 32
/*------------------------------------------------------------
* Data files used by the server.
*
* AREA_LIST contains a list of areas to boot.
* All files are read in completely at bootup.
* Most output files (bug, idea, typo, shutdown) are append-only.
*
* The NULL_FILE is held open so that we have a stream handle in reserve,
* so players can go ahead and telnet to all the other descriptors.
* Then we close it whenever we need to open a file (e.g. a save file).
*/
#if defined( unix ) || defined( linux ) || defined( CYGWIN32 )
#if !defined( CYGWIN32 )
#define NULL_FILE "/dev/null" /* To reserve one stream */
#else
#define NULL_FILE "proto.are"
#endif
#define AREA_DIR "area/" /* Area files */
#define PLAYER_DIR "player/" /* Player files */
#define NOTE_DIR "notes/" /* Note files */
#define SYSTEM_DIR "system/" /* for system information */
#define POSES_DIR "system/poses/" /* poses in files here */
#define EXE_FILE "../bin/daleken" /* For running the program */
#define NEW_EXE_FILE "../bin/daleken.new"
#define OLD_EXE_FILE "../bin/daleken.old"
#define DIR_SEPARATOR "/"
#endif
#if defined( WIN32 ) || defined( BCB )
#define AREA_DIR "area\\" /* Area files */
#define PLAYER_DIR "player\\" /* Player files */
#define NULL_FILE "nul" /* To reserve one stream */
#define NOTE_DIR "notes\\" /* Note files */
#define SYSTEM_DIR "system\\" /* for system information */
#define POSES_DIR "system\\poses\\" /* poses in files here */
#define EXE_FILE "..\\bin\\daleken.exe" /* For running the program */
#define NEW_EXE_FILE "..\\bin\\daleken.new"
#define OLD_EXE_FILE "..\\bin\\daleken.old"
#define DIR_SEPARATOR "\\"
#endif
#define AREA_LIST "AREA.LST" /* List of areas (in AREA_DIR) */
/* In the base data directory. */
#define BUG_FILE "BUGS.TXT" /* For 'bug' and bug() */
#define IDEA_FILE "ideas.txt" /* For 'idea' */
#define TYPO_FILE "typos.txt" /* For 'typo' */
#define NOHELP_FILE "nohelp.txt" /* For helps which don't exist */
#define SHUTDOWN_FILE "SHUTDOWN.TXT" /* For 'shutdown' */
#define LAST_COMM_FILE "lastcomm.txt" /* last command before crash */
#define SYSINFO_FILE "SYSINFO.TXT" /* static system information */
#define SYSINFO_SAVE "SYSINFO.SAV" /* saved system information */
#define COPYOVER_FILE "copyover.txt" /* For copyover recovery */
/* In the system directory - prepend SYSTEM_DIR to these. */
#define BAN_FILE "ban.txt" /* For banned site save */
#define HIGHEST_FILE "highest.txt" /* For highest player info */
#define BURIED_FILE "buried.txt" /* For saving buried items */
#define UNIQUE_KEY_FILE "unique.key" /* To ensure unique numbers */
#define BADNAME_FILE "badnames.txt" /* All the names that are banned */
#define PLANE_FILE "planes.txt" /* Plane information */
#define SOCIAL_FILE "socials.txt" /* Socials for the mud. */
#define CLAN_FILE "clans.txt" /* Clans file. */
#define RELIGION_FILE "religion.txt" /* Religions file. */