/**************************************************************************
* 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-2003 by Ryan Jennings *
* http://1stmud.dlmud.com/ <r-jenn@shaw.ca> *
***************************************************************************/
#if !defined(DEFINES_H)
#define DEFINES_H
#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_LOOKUP_FUN( fun ) LOOKUP_F fun
#define DECLARE_ED_FUN( fun ) ED_FUN fun
#define DECLARE_VALIDATE_FUN(fun) VALIDATE_FUN fun
#define DECLARE_OBJ_FUN( fun ) OBJ_FUN fun
#define DECLARE_ROOM_FUN( fun ) ROOM_FUN fun
#define CH_CMD(name) void name(CHAR_DATA * ch, const char *argument)
#define ED_FUN_DEC(blah) bool blah ( const char * n_fun, CHAR_DATA *ch, const char *argument, void *arg, const void *par, VALIDATE_FUN *validator )
#define VALIDATE_FUN(fun) bool fun(CHAR_DATA *ch, const void *arg)
#define EXTERN extern
/*
* String and memory management parameters.
*/
#define MAX_KEY_HASH 1024
#define MAX_STRING_LENGTH 4608
#define MAX_INPUT_LENGTH 256
#define MAX_EXPLORE_HASH 8192
/* ea */
#define MSL MAX_STRING_LENGTH
#define MIL MAX_INPUT_LENGTH
#define MUD_NAME "1stMUD" // You're mud's name here
#define SECOND 1
#define MINUTE (60 * SECOND)
#define HOUR (60 * MINUTE)
#define DAY (24 * HOUR)
#define WEEK (7 * DAY)
/*
* Game parameters.
* Increase the max'es if you add more of something.
* Adjust the pulse numbers to suit yourself.
*/
#define MAX_IN_GROUP 15
#define MAX_TZONE 25
#define MAX_ALIAS 5
#define MAX_BUDDY 10
#define MAX_IGNORE 10
#define MAX_REMORT 2 // should never be higher than maxClass
#define MAX_MCLASS (MAX_REMORT + 3)
#define MAX_DAMAGE_MESSAGE 41
#define MAX_RANK 6
#define MAX_HOUSE_ROOMS 5
#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 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 (60 * PULSE_PER_SECOND)
#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))
/* MUD time */
#define NUM_DAYS 30
#define NUM_MONTHS 17
#define MAX_CLIMATE 5
typedef enum
{
SUN_DARK,
SUN_RISE,
SUN_LIGHT,
SUN_SET,
SUN_NOON
}
sun_t;
/*
* Connected state for a channel.
*/
typedef enum
{
CON_PLAYING,
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_DEFAULT_CHOICE,
CON_GEN_GROUPS,
CON_PICK_WEAPON,
CON_READ_IMOTD,
CON_READ_MOTD,
CON_BREAK_CONNECT,
CON_GET_TERM,
CON_COPYOVER_RECOVER,
CON_NOTE_TO,
CON_NOTE_SUBJECT,
CON_NOTE_EXPIRE,
CON_NOTE_TEXT,
CON_NOTE_FINISH
}
connect_t;
/*
* MXP defines.
*/
/* strings */
#define MXP_BEG "\xFB" /* becomes < */
#define MXP_END "\xFC" /* becomes > */
#define MXP_AMP "\xFD" /* becomes & */
/* characters */
#define MXP_BEGc '\xFB' /* becomes < */
#define MXP_ENDc '\xFC' /* becomes > */
#define MXP_AMPc '\xFD' /* becomes & */
#define ESC "\033" /* esc character */
#define MXPMODE(arg) ESC "[" #arg "z"
// constructs an MXP tag with < and > around it
#define MXPTAG(arg) MXP_BEG arg MXP_END
/*
* portal script language
*/
#define CL_SEND_SOUND "AAA" /* implemented */
#define CL_SEND_IMAGE "AAB" /* implemented */
#define CL_SEND_REBOOT "AAC"
#define CL_SEND_MUSIC "AAD" /* implemented */
#define CL_SEND_UPTIME "AAF" /* implemented */
#define CL_SEND_AVI "AAG"
#define CL_DOWNLOAD_MEDIA "AAH" /* implemented */
#define CL_SEND_SPECIAL "BAA"
#define CL_SEND_SPECIAL2 "BAC"
#define CL_SEND_TELL "BAB" /* implemented */
#define CL_SEND_ROOM "BAD"
#define CL_SEND_MUDLAG "BAE"
#define CL_SEND_EDIT "BAF"
#define CL_GP1_MASK "BBA" /* implemented */
#define CL_GP2_MASK "BBB"
#define CL_HP_MASK "BBC" /* implemented */
#define CL_SP_MASK "BBD" /* implemented */
#define CL_SEND_CAPTION "CAP" /* implemented */
#define CL_SEND_BEGIN_FILE "CDF"
#define CL_SEND_CONT_FILE "CCF"
#define CL_SEND_END_FILE "CEF"
#define CL_SEND_CHAT "CAA" /* implemented */
#define CL_SEND_ROOMCODE "DDD" /* implemented */
#define CL_SEND_COMPOSITE "FFF"
#define CL_SEND_HP "A" /* implemented */
#define CL_SEND_MAXHP "B" /* implemented */
#define CL_SEND_SP "C" /* implemented */
#define CL_SEND_MAXSP "D" /* implemented */
#define CL_SEND_GP1 "E" /* implemented */
#define CL_SEND_MAXGP1 "F" /* implemented */
#define CL_SEND_GP2 "G"
#define CL_SEND_MAXGP2 "H"
#define CL_SEND_GLINE1 "I" /* implemented */
#define CL_SEND_GLINE2 "J" /* implemented */
#define CL_SEND_ATTACKER "K"
#define CL_SEND_ATTCOND "L" /* implemented */
#define CL_SEND_ATTIMG "M"
/*
* Shop types.
*/
#define MAX_TRADE 5
/*
* Per-class stuff.
*/
#define MAX_GUILD 2
#define MAX_STATS 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
typedef enum
{
GQUEST_OFF,
GQUEST_WAITING,
GQUEST_RUNNING
}
gquest_t;
/* where definitions */
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;
/*
* Well known mob virtual numbers.
* Defined in #MOBILES.
*/
#define MOB_VNUM_FIDO 3090
#define MOB_VNUM_CITYGUARD 3060
#define MOB_VNUM_VAMPIRE 3404
#define MOB_VNUM_WARMASTER 17601
#define MOB_VNUM_PATROLMAN 2106
#define GROUP_VNUM_TROLLS 2100
#define GROUP_VNUM_OGRES 2101
#define MOB_VNUM_REGISTAR 202
/* damage classes */
#define DAM_NONE 0
#define DAM_BASH 1
#define DAM_PIERCE 2
#define DAM_SLASH 3
#define DAM_FIRE 4
#define DAM_COLD 5
#define DAM_LIGHTNING 6
#define DAM_ACID 7
#define DAM_POISON 8
#define DAM_NEGATIVE 9
#define DAM_HOLY 10
#define DAM_ENERGY 11
#define DAM_MENTAL 12
#define DAM_DISEASE 13
#define DAM_DROWNING 14
#define DAM_LIGHT 15
#define DAM_OTHER 16
#define DAM_HARM 17
#define DAM_CHARM 18
#define DAM_SOUND 19
/* return values for check_imm */
#define IS_NORMAL 0
#define IS_IMMUNE 1
#define IS_RESISTANT 2
#define IS_VULNERABLE 3
/*
* Sex.
* Used in #MOBILES.
*/
#define SEX_NEUTRAL 0
#define SEX_MALE 1
#define SEX_FEMALE 2
/* AC types */
#define AC_PIERCE 0
#define AC_BASH 1
#define AC_SLASH 2
#define AC_EXOTIC 3
/* dice */
#define DICE_NUMBER 0
#define DICE_TYPE 1
#define DICE_BONUS 2
/* size */
#define SIZE_TINY 0
#define SIZE_SMALL 1
#define SIZE_MEDIUM 2
#define SIZE_LARGE 3
#define SIZE_HUGE 4
#define SIZE_GIANT 5
/*
* Well known object virtual numbers.
* Defined in #OBJECTS.
*/
#define OBJ_VNUM_SILVER_ONE 1
#define OBJ_VNUM_GOLD_ONE 2
#define OBJ_VNUM_GOLD_SOME 3
#define OBJ_VNUM_SILVER_SOME 4
#define OBJ_VNUM_COINS 5
#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_SLICED_ARM 14
#define OBJ_VNUM_SLICED_LEG 15
#define OBJ_VNUM_GUTS 16
#define OBJ_VNUM_BRAINS 17
#define OBJ_VNUM_MUSHROOM 20
#define OBJ_VNUM_LIGHT_BALL 21
#define OBJ_VNUM_SPRING 22
#define OBJ_VNUM_DISC 23
#define OBJ_VNUM_PORTAL 25
#define OBJ_VNUM_ROSE 1001
#define OBJ_VNUM_PIT 3010
#define OBJ_VNUM_SCHOOL_MACE 3700
#define OBJ_VNUM_SCHOOL_DAGGER 3701
#define OBJ_VNUM_SCHOOL_SWORD 3702
#define OBJ_VNUM_SCHOOL_SPEAR 3717
#define OBJ_VNUM_SCHOOL_STAFF 3718
#define OBJ_VNUM_SCHOOL_AXE 3719
#define OBJ_VNUM_SCHOOL_FLAIL 3720
#define OBJ_VNUM_SCHOOL_WHIP 3721
#define OBJ_VNUM_SCHOOL_POLEARM 3722
#define OBJ_VNUM_SCHOOL_VEST 3703
#define OBJ_VNUM_SCHOOL_SHIELD 3704
#define OBJ_VNUM_SCHOOL_BANNER 3716
#define OBJ_VNUM_MAP 3162
#define OBJ_VNUM_WHISTLE 2116
#define OBJ_VNUM_TRIVIA_PILL 200
#define QUEST_AURA 201
#define QUEST_SWORD 203
#define QUEST_BPLATE 204
#define QUEST_BOOTS 205
#define QUEST_GLOVES 206
#define QUEST_FLAME 207
#define QUEST_HELM 208
#define QUEST_BAG 209
#define QUEST_SHIELD 210
#define QUEST_REGEN 211
#define QUEST_INVIS 212
#define QUEST_TRIVIA OBJ_VNUM_TRIVIA_PILL
/*
* Item types.
* Used in #OBJECTS.
*/
#define ITEM_NONE 0
#define ITEM_LIGHT 1
#define ITEM_SCROLL 2
#define ITEM_WAND 3
#define ITEM_STAFF 4
#define ITEM_WEAPON 5
#define ITEM_TREASURE 8
#define ITEM_ARMOR 9
#define ITEM_POTION 10
#define ITEM_CLOTHING 11
#define ITEM_FURNITURE 12
#define ITEM_TRASH 13
#define ITEM_CONTAINER 15
#define ITEM_DRINK_CON 17
#define ITEM_KEY 18
#define ITEM_FOOD 19
#define ITEM_MONEY 20
#define ITEM_BOAT 22
#define ITEM_CORPSE_NPC 23
#define ITEM_CORPSE_PC 24
#define ITEM_FOUNTAIN 25
#define ITEM_PILL 26
#define ITEM_PROTECT 27
#define ITEM_MAP 28
#define ITEM_PORTAL 29
#define ITEM_WARP_STONE 30
#define ITEM_ROOM_KEY 31
#define ITEM_GEM 32
#define ITEM_JEWELRY 33
#define ITEM_JUKEBOX 34
/* weapon class */
#define WEAPON_EXOTIC 0
#define WEAPON_SWORD 1
#define WEAPON_DAGGER 2
#define WEAPON_SPEAR 3
#define WEAPON_MACE 4
#define WEAPON_AXE 5
#define WEAPON_FLAIL 6
#define WEAPON_WHIP 7
#define WEAPON_POLEARM 8
/*
* Apply types (for affects).
* Used in #OBJECTS.
*/
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;
/*
* Well known room virtual numbers.
* Defined in #ROOMS.
*/
#define ROOM_VNUM_LIMBO 2
#define ROOM_VNUM_CHAT 1200
#define ROOM_VNUM_TEMPLE 3001
#define ROOM_VNUM_ALTAR 3054
#define ROOM_VNUM_SCHOOL 3700
#define ROOM_VNUM_WAITROOM 17600
#define ROOM_VNUM_MORGUE 2
#define ROOM_VNUM_DUEL_START 17596
#define ROOM_VNUM_DUEL_END 17597
#define ROOM_VNUM_DUEL_WINNER 17598
#define ROOM_VNUM_DUEL_LOSER 17599
/*
* Directions.
* Used in #ROOMS.
*/
#define DIR_NORTH 0
#define DIR_EAST 1
#define DIR_SOUTH 2
#define DIR_WEST 3
#define DIR_UP 4
#define DIR_DOWN 5
/*
* Sector types.
* Used in #ROOMS.
*/
typedef enum
{
SECT_INSIDE,
SECT_CITY,
SECT_FIELD,
SECT_FOREST,
SECT_HILLS,
SECT_MOUNTAIN,
SECT_WATER_SWIM,
SECT_WATER_NOSWIM,
SECT_UNUSED,
SECT_AIR,
SECT_DESERT,
SECT_NONE,
SECT_MAX
}
sector_t;
/*
* Equpiment wear locations.
* Used in #RESETS.
*/
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;
/***************************************************************************
* *
* VALUES OF INTEREST TO AREA BUILDERS *
* (End of this section ... stop here) *
* *
***************************************************************************/
/*
* Conditions.
*/
#define COND_DRUNK 0
#define COND_FULL 1
#define COND_THIRST 2
#define COND_HUNGER 3
/*
* Positions.
*/
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;
/*
* Stances.
*/
#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
/* Arena Defines */
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;
/*
* Liquids.
*/
#define LIQ_WATER 0
/*
* Types of attacks.
* Must be non-overlapping with spell/skill types,
* but may be arbitrary beyond that.
*/
#define TYPE_UNDEFINED -1
#define TYPE_HIT 1000
/*
* Target types.
*/
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_MPROG,
PRG_OPROG,
PRG_RPROG
}
prog_t;
/*
* Object defined in limbo.are
* Used in save.c to load objects that don't exist.
*/
#define OBJ_VNUM_DUMMY 30
#define MOB_VNUM_DUMMY 30
#define NO_FLAG -99
#define MAX_DIR 6
#define AREA_VERSION 3
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_BOOT_NOEXIT,
RUNLEVEL_MAIN_LOOP,
RUNLEVEL_SHUTDOWN
}
runlevel_t;
#endif