/*
* phantdefs.h - important constants for Phantasia
*/
/* testig stuff - should be delete before production */
/* configurables */
#define PHANTASIA_PORT 9897
/* boolean identifiers */
typedef char bool;
#define TRUE 1
#define FALSE 0
#define MALE 0
#define FEMALE 1
/* server run_level constants */
#define RUN_SERVER 0 /* continue through main loop */
#define HARD_SHUTDOWN 1 /* kill server NOW */
#define FAST_SHUTDOWN 2 /* just save the realm */
#define SHUTDOWN 3 /* wait on threads, then save */
#define LEISURE_SHUTDOWN 4 /* wait until no one is logged on */
/* thread run_level constants */
#define SIGNING_IN 0 /* connection has no account */
#define CHAR_SELECTION 1 /* player needs a character */
#define PLAY_GAME 2 /* in play */
#define SAVE_AND_CONTINUE 3 /* save char and ask to continue */
#define SAVE_AND_EXIT 4 /* save char and leave game */
#define GO_AGAIN 5 /* save char and leave game */
#define EXIT_THREAD 6 /* leave the main loop */
#define LEAVING_THREAD 7 /* Final thread exit */
/* socket return values */
#define S_NORM 0 /* socket returned data */
#define S_CANCEL 1 /* player canceled selection */
#define S_TIMEOUT 2 /* player ran out of time */
#define S_ERROR 3 /* socket is closed */
/* tag types */
#define T_REJECT 0 /* hang up on address ASAP */
#define T_BAN 1 /* kick when character loaded, ban */
#define T_SUICIDE 2 /* all loaded characters hari-kari */
#define T_MUTE 3 /* player may not chat */
#define T_PREFIX 4 /* add a prefix to the player */
#define T_SUFFIX 5 /* add a suffix to the player */
/* tagged types */
#define T_MACHINE 0 /* tag of a specific machine */
#define T_ACCOUNT 1 /* tag of an account */
#define T_ADDRESS 2 /* tag of an address */
#define T_NETWORK 3 /* tag of an network */
/* hearing constants */
#define HEAR_SELF 0 /* hear the channel you're in */
#define HEAR_ONE 1 /* hear channel 1 -- apprentice */
#define HEAR_ALL 11 /* hear all channels */
/* realm objects */
#define ENERGY_VOID 0 /* object is an energy void */
#define CORPSE 1 /* object is a corpse */
#define TREASURE_TROVE 2 /* opject is the treasure trove */
#define HOLY_GRAIL 3 /* object is the holy grail */
/* total number of things */
#define NUM_MONSTERS 100 /* monsters in the game */
#define NUM_CHARS 6 /* number of character types */
#define NUM_ITEMS 7 /* items in the shops */
/* event types */
#define NULL_EVENT 0 /* blank event */
/* immediate events */
#define KICK_EVENT 1 /* get off my game */
#define TAG_EVENT 2 /* tag yourself */
#define REQUEST_DETAIL_EVENT 3 /* get player info */
#define CONNECTION_DETAIL_EVENT 4 /* another player's info */
#define REQUEST_RECORD_EVENT 5 /* get player info */
#define PLAYER_RECORD_EVENT 6 /* another player's info */
#define ADD_PLAYER_EVENT 7 /* add player info */
#define REMOVE_PLAYER_EVENT 8 /* remove player info */
#define CHANGE_PLAYER_EVENT 9 /* change player info */
#define CHAT_EVENT 10 /* chat message */
#define REPRIMAND_EVENT 11 /* Apprentices reprimand */
#define UNTAG_EVENT 12 /* remove a prefix or suffix */
#define UNSUSPEND_EVENT 13 /* resume player's game */
#define GAME_MARKER 14 /* only game events follow */
/* ASAP events */
#define DEATH_EVENT 20 /* player died */
#define IT_COMBAT_EVENT 21 /* enter interterminal-combat */
#define EXPERIENCE_EVENT 23 /* award the player experience */
/* tampering events */
#define SUSPEND_EVENT 25 /* stop player's game */
#define CANTRIP_EVENT 26 /* apprentice options */
#define MODERATE_EVENT 27 /* wizard options */
#define ADMINISTRATE_EVENT 28 /* administrative options */
#define VALAR_EVENT 29 /* become/lose valar */
#define KING_EVENT 30 /* become king */
#define STEWARD_EVENT 31 /* become steward */
#define DETHRONE_EVENT 32 /* lose king or steward */
#define SEX_CHANGE_EVENT 34 /* toggle player's sex */
#define RELOCATE_EVENT 35 /* order player to location */
#define TRANSPORT_EVENT 36 /* transport player */
#define CURSE_EVENT 37 /* curse player */
#define SLAP_EVENT 38 /* slap player */
#define BLIND_EVENT 39 /* blind player */
#define BESTOW_EVENT 40 /* king bestowed gold */
#define SUMMON_EVENT 41 /* summon monster for player */
#define BLESS_EVENT 42
#define HEAL_EVENT 43
#define STRONG_NF_EVENT 44 /* set the player's strength_nf flag */
#define KNIGHT_EVENT 45 /* this player has been knighted */
#define DEGENERATE_EVENT 46
#define HELP_EVENT 47 /* player is asking for information */
/* command events */
#define COMMAND_EVENT 48 /* the valar uses a power */
#define SAVE_EVENT 49 /* save the game and quit */
#define MOVE_EVENT 50 /* move the character */
#define EXAMINE_EVENT 51 /* examine the stats on a character */
#define DECREE_EVENT 52 /* make a decree */
#define ENACT_EVENT 53 /* the steward enacts something */
#define LIST_PLAYER_EVENT 54 /* list the players in the game */
#define CLOAK_EVENT 55 /* cloak/uncloak */
#define TELEPORT_EVENT 56 /* teleport player */
#define INTERVENE_EVENT 57 /* a council uses a power */
#define REST_EVENT 58 /* rest player */
#define INFORMATION_EVENT 59 /* go to information screen */
#define FORCEAGE_EVENT 60 /* forcefully age a player */
/* normal events */
/* events after this are destroyed on orphan */
#define DESTROY_MARKER 69
#define ENERGY_VOID_EVENT 70 /* create/hit energy void */
#define TROVE_EVENT 71 /* find the treasure trove */
#define MONSTER_EVENT 72 /* encounter monster */
#define PLAGUE_EVENT 73 /* hit with plague */
#define MEDIC_EVENT 74 /* encounter medic */
#define GURU_EVENT 75 /* encounter guru */
#define TRADING_EVENT 76 /* find a trading post */
#define TREASURE_EVENT 77 /* find treasure */
#define VILLAGE_EVENT 78 /* found a village or a volcano */
#define TAX_EVENT 79 /* encounter tax collector */
/* realm objects */
/* events after this are made realm objects on orphan */
#define REALM_MARKER 90
#define CORPSE_EVENT 91 /* find a corpse */
#define GRAIL_EVENT 92 /* find the holy grail */
#define LAST_EVENT 93 /* used to find bad events */
/* combat messages */
#define IT_OPPONENT_BUSY 1 /* currently on another combat */
#define IT_REPORT 2 /* report in */
#define IT_JUST_DIED 3 /* player has just been killed */
#define IT_JUST_LEFT 42 /* player just left the game */
#define IT_ATTACK 4 /* player is attacker */
#define IT_DEFEND 5 /* player is defender */
#define IT_MELEE 6 /* attacker meleed */
#define IT_SKIRMISH 7 /* attacker skirmished */
#define IT_NICKED 8 /* attacker nicked */
#define IT_EVADED 9 /* attacker evaded */
#define IT_NO_EVADE 10 /* attacker failed to evade */
#define IT_LUCKOUT 11 /* attacker lucked-out (luckouted?) */
#define IT_NO_LUCKOUT 12 /* attacker failed to luckout */
#define IT_RING 13 /* attacker put on a ring */
#define IT_NO_RING 14 /* attacker failed to put on a ring */
#define IT_ALL_OR_NOT 15 /* attacker cast all or nothing */
#define IT_NO_ALL_OR_NOT 16 /* attacker blew all or nothing */
#define IT_BOLT 17 /* attacker cast magic bolt */
#define IT_NO_BOLT 18 /* attacker blew magic bolt */
#define IT_SHIELD 19 /* attacker cast force field */
#define IT_NO_SHIELD 20 /* attacker blew force field */
#define IT_TRANSFORM 21 /* attacker transformed defender */
#define IT_NO_TRANSFORM 22 /* attacker blew transform */
#define IT_TRANSFORM_BACK 23 /* attacker's transform backfired */
#define IT_MIGHT 24 /* attacker cast increase might */
#define IT_NO_MIGHT 25 /* attacker blew increase might */
#define IT_HASTE 26 /* attacker cast haste */
#define IT_NO_HASTE 27 /* attacker blew haste */
#define IT_TRANSPORT 28 /* attacker cast transport */
#define IT_NO_TRANSPORT 29 /* attacker blew transport */
#define IT_TRANSPORT_BACK 30 /* attacker's transport backfired */
#define IT_PARALYZE 31 /* attaker cast paralyze */
#define IT_NO_PARALYZE 32 /* attaker blew paralyze */
#define IT_PASS 33 /* attacker passed the turn */
#define IT_CONTINUE 34 /* defender continues the battle */
#define IT_CONCEDE 35 /* defender surrenders */
#define IT_DEFEAT 36 /* the sender stands defeated */
#define IT_VICTORY 37 /* the sender claims victory */
#define IT_DONE 38 /* This is Kang, cease hostilities */
#define IT_ECHO 39 /* tell me to attack */
#define IT_ABANDON 40 /* player quiting and saving self */
#define IT_BORED 41 /* player quit after timeout */
#define IT_WIZEVADE 43 /* player used wiz powers to evade */
/* client->player packet headers */
#define HANDSHAKE_PACKET 2 /* used when connecting */
#define CLOSE_CONNECTION_PACKET 3 /* last message before close */
#define PING_PACKET 4 /* used for timeouts */
#define ADD_PLAYER_PACKET 5 /* add a player to the list */
#define REMOVE_PLAYER_PACKET 6 /* remove a player from the list */
#define SHUTDOWN_PACKET 7 /* the server is going down */
#define ERROR_PACKET 8 /* server has encountered an error */
#define CLEAR_PACKET 10 /* clears the message screen */
#define WRITE_LINE_PACKET 11 /* write a line on message screen */
#define BUTTONS_PACKET 20 /* use the interfaces buttons */
#define FULL_BUTTONS_PACKET 21 /* use buttons and compass */
#define STRING_DIALOG_PACKET 22 /* request a message response */
#define COORDINATES_DIALOG_PACKET 23 /* request player coordinates */
#define PLAYER_DIALOG_PACKET 24 /* request a player name */
#define PASSWORD_DIALOG_PACKET 25 /* string dialog with hidden text */
#define SCOREBOARD_DIALOG_PACKET 26 /* pull up the scoreboard */
#define DIALOG_PACKET 27 /* okay dialog with next line */
#define CHAT_PACKET 30 /* chat message */
#define ACTIVATE_CHAT_PACKET 31 /* turn on the chat window */
#define DEACTIVATE_CHAT_PACKET 32 /* turn off the chat window */
#define PLAYER_INFO_PACKET 33 /* display a player's info */
#define CONNECTION_DETAIL_PACKET 34 /* display connection info */
#define NAME_PACKET 40 /* set the player's name */
#define LOCATION_PACKET 41 /* refresh the player's energy */
#define ENERGY_PACKET 42 /* refresh the player's energy */
#define STRENGTH_PACKET 43 /* refresh the player's strength */
#define SPEED_PACKET 44 /* refresh the player's speed */
#define SHIELD_PACKET 45 /* refresh the player's shield */
#define SWORD_PACKET 46 /* refresh the player's sword */
#define QUICKSILVER_PACKET 47 /* refresh the player's quicksilver */
#define MANA_PACKET 48 /* refresh the player's mana */
#define LEVEL_PACKET 49 /* refresh the player's level */
#define GOLD_PACKET 50 /* refresh the player's gold */
#define GEMS_PACKET 51 /* refresh the player's gems */
#define CLOAK_PACKET 52 /* refresh the player's cloak */
#define BLESSING_PACKET 53 /* refresh the player's blessing */
#define CROWN_PACKET 54 /* refresh the player's crowns */
#define PALANTIR_PACKET 55 /* refresh the player's palantir */
#define RING_PACKET 56 /* refresh the player's ring */
#define VIRGIN_PACKET 57 /* refresh the player's virgin */
/* player->client packet headers */
#define C_RESPONSE_PACKET 1 /* player feedback for game */
#define C_CANCEL_PACKET 2 /* player canceled question */
#define C_PING_PACKET 3 /* response to a ping */
#define C_CHAT_PACKET 4 /* chat message from player */
#define C_EXAMINE_PACKET 5 /* examine a player */
#define C_ERROR_PACKET 6 /* client is lost */
#define C_SCOREBOARD_PACKET 7 /* show the scoreboard */
/* locations within the realm */
#define PL_REALM 0 /* normal coordinates */
#define PL_THRONE 1 /* In the lord's chamber */
#define PL_EDGE 2 /* On the edge of the realm */
#define PL_VALHALLA 3 /* In Valhalla */
#define PL_PURGATORY 4 /* In purgatory fighting */
/* size of many structures */
#define SZ_PLAYER sizeof(struct player_t) /* size of player_t */
#define SZ_GAME sizeof(struct game_t) /* size of game_t */
#define SZ_IT_COMBAT sizeof(struct it_combat_t) /* size of it_combat_t */
#define SZ_PLAYER_DESC sizeof(struct player_desc_t) /* size of player_desc_t */
#define SZ_PLAYER_SPEC sizeof(struct player_spec_t) /* size of player_spec_t */
#define SZ_EVENT sizeof(struct event_t) /* size of event_t */
#define SZ_REALM_STATE sizeof(struct realm_state_t) /* size of realm_state_t */
#define SZ_REALM_OBJECT sizeof(struct realm_object_t) /* size of realm_object_t */
#define SZ_SCOREBOARD sizeof(struct scoreboard_t) /* size of scoreboard_t */
#define SZ_CLIENT sizeof(struct client_t) /* size of client_t */
#define SZ_OPPONENT sizeof(struct opponent_t) /* size of opponent_t */
#define SZ_BUTTON sizeof(struct button_t) /* size of button_t */
#define SZ_ACCOUNT sizeof(struct account_t) /* size of account_t */
#define SZ_LINKED_LIST sizeof(struct linked_list_t) /* size of linked_list_t */
#define SZ_EXAMINE sizeof(struct examine_t)
#define SZ_TAG sizeof(struct tag_t)
#define SZ_TAGGED sizeof(struct tagged_t)
#define SZ_TAGGED_LIST sizeof(struct tagged_list_t)
#define SZ_NETWORK sizeof(struct network_t)
#define SZ_CONNECTION sizeof(struct connection_t)
#define SZ_HISTORY sizeof(struct history_t)
#define SZ_HISTORY_LIST sizeof(struct history_list_t)
#define SZ_DETAIL sizeof(struct detail_t)
#define SZ_TAGGED_SORT sizeof(struct tagged_sort_t)
/* string sizes */
#define SZ_IN_BUFFER 1024 /* largest possible client message */
#define SZ_OUT_BUFFER 1024 /* largest possible server message */
#define SZ_NAME 33 /* player name field (incl. trailing null) */
#define MAX_NAME_LEN 16 /* actual player name */
#define SZ_PASSWORD 16 /* 128 bit MD5 hash of the password */
#define SZ_FROM 81 /* ip or dns login (incl. null) */
#define SZ_MONSTER_NAME 49 /* characters in monster names */
#define SZ_AREA 24 /* name of player location */
#define SZ_HOW_DIED 78 /* string describing character death */
#define SZ_CLASS_NAME 13 /* longest class name */
#define SZ_ITEMS 12 /* longest shop item description */
#define SZ_ERROR_MESSAGE 256 /* max length of error message */
#define SZ_LINE 256 /* length of one line on terminal */
#define SZ_LABEL 22 /* length of interface button text */
#define SZ_NUMBER 25 /* characters describing number */
#define SZ_CHAT 512 /* largest chat message */
#define SZ_PACKET_TYPE 2 /* maximum packet size */
#define SZ_SPEC 7 /* 5 chars, newline and null */
/* possible errors */
#define MALLOC_ERROR 1001
#define DATA_FILE_ERROR 1002
#define MONSTER_FILE_ERROR 1003
#define CHARACTER_FILE_ERROR 1004
#define CHARSTATS_FILE_ERROR 1004
#define SHOPITEMS_FILE_ERROR 1004
#define SCOREBOARD_FILE_ERROR 1005
#define CHAT_LOG_FILE_ERROR 1006
#define SOCKET_CREATE_ERROR 1007
#define SOCKET_BIND_ERROR 1008
#define SOCKET_LISTEN_ERROR 1009
#define SOCKET_SELECT_ERROR 1010
#define SOCKET_ACCEPT_ERROR 1011
#define MUTEX_INIT_ERROR 1012
#define MUTEX_DESTROY_ERROR 1013
#define MUTEX_LOCK_ERROR 1014
#define MUTEX_UNLOCK_ERROR 1015
#define PTHREAD_ATTR_ERROR 1016
#define PTHREAD_CREATE_ERROR 1017
#define GENERAL_EVENT_ERROR 1021
#define IMPOSSIBLE_EVENT_ERROR 1022
#define EVENT_ADDRESS_ERROR 1023
#define UNDEFINED_OBJECT_ERROR 1024
#define BATTLE_PHASE_ERROR 1025
#define DEFENDER_MESSAGE_ERROR 1026
#define BATTLE_MESSAGE_ERROR 1027
#define SEND_SOCKET_ERROR 1028
#define READ_SOCKET_ERROR 1029
/* ring constants */
#define R_NONE 0 /* no ring */
#define R_NAZREG 1 /* regular Nazgul ring (expires) */
#define R_DLREG 2 /* regular Dark Lord ring (does not expire) */
#define R_BAD 3 /* bad ring */
#define R_SPOILED 4 /* ring which has gone bad */
#define R_YES 5 /* masked ring type */
/* constants for character types */
#define C_MAGIC 0 /* magic user */
#define C_FIGHTER 1 /* fighter */
#define C_ELF 2 /* elf */
#define C_DWARF 3 /* dwarf */
#define C_HALFLING 4 /* halfling */
#define C_EXPER 5 /* experimento */
/* constants for special character types */
#define SC_NONE 0 /* not a special character */
#define SC_KNIGHT 1 /* knight */
#define SC_STEWARD 2 /* steward */
#define SC_KING 3 /* king */
#define SC_COUNCIL 4 /* council of the wise */
#define SC_EXVALAR 5 /* past valar - now council */
#define SC_VALAR 6 /* valar */
/* means of death */
#define K_OLD_AGE 0 /* old age */
#define K_MONSTER 1 /* combat with monster */
#define K_IT_COMBAT 2 /* combat with another player */
#define K_GHOSTBUSTERS 3 /* lost connection */
#define K_VAPORIZED 4 /* vaporized by another player */
#define K_RING 5 /* killed by a cursed ring */
#define K_NO_ENERGY 6 /* player ran out of energy */
#define K_FELL_OFF 7 /* fell off the edge of the world */
#define K_TRANSFORMED 8 /* turned into another monster */
#define K_SEGMENTATION 9 /* bad internal error */
#define K_SUICIDE 10 /* character did something bad */
#define K_SQUISH 11 /* new wizard kill option */
#define K_GREED 12 /* killed when carrying too much gold */
#define K_FATIGUE 13 /* killed when speed = 0 from fatigue */
#define K_SIN 14 /* goes to hell for too much evil */
/* special monster constants */
#define SM_RANDOM -1 /* pick a monster by normal means */
#define SM_NONE 0 /* nothing special */
#define SM_UNICORN 1 /* unicorn */
#define SM_MODNAR 2 /* Modnar */
#define SM_MIMIC 3 /* mimic */
#define SM_DARKLORD 4 /* Dark Lord */
#define SM_LEANAN 5 /* Leanan-Sidhe */
#define SM_SARUMAN 6 /* Saruman */
#define SM_THAUMATURG 7 /* thaumaturgist */
#define SM_BALROG 8 /* balrog */
#define SM_VORTEX 9 /* vortex */
#define SM_NAZGUL 10 /* nazgul */
#define SM_TIAMAT 11 /* Tiamat */
#define SM_KOBOLD 12 /* kobold */
#define SM_SHELOB 13 /* Shelob */
#define SM_FAERIES 14 /* assorted faeries */
#define SM_LAMPREY 15 /* lamprey */
#define SM_SHRIEKER 16 /* shrieker */
#define SM_BONNACON 17 /* bonnacon */
#define SM_SMEAGOL 18 /* Smeagol */
#define SM_SUCCUBUS 19 /* succubus */
#define SM_CERBERUS 20 /* Cerberus */
#define SM_UNGOLIANT 21 /* Ungoliant */
#define SM_JABBERWOCK 22 /* jabberwock */
#define SM_MORGOTH 23 /* Morgoth */
#define SM_TROLL 24 /* troll */
#define SM_WRAITH 25 /* wraith */
#define SM_TITAN 26 /* titan */
#define SM_IT_COMBAT 27 /* fighting another player */
#define SM_IDIOT 28 /* idiot */
#define SM_SMURF 29 /* smurf */
#define SM_MORON 30 /* moron */
/* encounter constants */
#define MONSTER_RANDOM 0 /* monster was wandering */
#define MONSTER_CALL 1 /* monster was hunted */
#define MONSTER_FLOCKED 2 /* another monster in herd */
#define MONSTER_SHRIEKER 3 /* called by shrieker */
#define MONSTER_JABBERWOCK 4 /* called by jabberwock */
#define MONSTER_TRANSFORM 5 /* monster was polymorphed */
#define MONSTER_SUMMONED 6 /* another player threw monster */
#define MONSTER_SPECIFY 7 /* player requested monster */
#define MONSTER_PURGATORY 8 /* encounter in purgatory */
/* scoreboard constants */
#define SB_KEEP_ABOVE 1000 /* below this level, delete chars */
#define SB_KEEP_FOR 2592000 /* seconds to keep low chars */
/* other constants */
#define CORPSE_LIFE 2592000 /* seconds corpses stay in game */
#define KEEP_TIME 2592000 /* base secs to keep saved characters */
#define NEWBIE_KEEP_TIME 259200 /* base secs to keep saved characters */
#define ACCOUNT_KEEP_TIME 7776000 /* secs to keep accounts */
/* constants for altering coordinates */
#define A_SPECIFIC 0 /* coordinates specified, non-TP */
#define A_FORCED 1 /* coordinates specified, ignore Beyond */
#define A_NEAR 2 /* coordinates not specified, move near */
#define A_FAR 3 /* coordinates not specified, move far */
#define A_TRANSPORT 4 /* distant teleport */
#define A_OUST 5 /* more distant teleport */
#define A_BANISH 6 /* move player to beyond */
#define A_TELEPORT 7 /* moved by teleport */
/* spell constants */
#define P_HEAL 0 /* steward heals a player */
#define P_CURE 1 /* council heals with poison cure */
#define P_RESTORE 2 /* valar restores a character */
#define P_CURSE 0 /* steward curse */
#define P_EXECRATE 1 /* king's stronger curse */
#define P_SMITE 2 /* valar decimates a character */
/* constants for spells */
#define ML_ALLORNOTHING 0.0 /* magic level for 'all or nothing' */
#define MM_ALLORNOTHING 1.0 /* mana used for 'all or nothing' */
#define ML_MAGICBOLT 5.0 /* magic level for 'magic bolt' */
#define ML_INCRMIGHT 15.0 /* magic level for 'increase might' */
#define MM_INCRMIGHT 30.0 /* mana used for 'increase might' */
#define ML_HASTE 25.0 /* magic level for 'haste' */
#define MM_HASTE 35.0 /* mana used for 'haste' */
#define ML_FORCEFIELD 35.0 /* magic level for 'force field' */
#define MM_FORCEFIELD 60.0 /* mana used for 'force field' */
#define ML_XPORT 45.0 /* magic level for 'transport' */
#define MM_XPORT 100.0 /* mana used for 'transport' */
#define ML_PARALYZE 60.0 /* magic level for 'paralyze' */
#define MM_PARALYZE 125.0 /* mana used for 'paralyze' */
#define ML_XFORM 75.0 /* magic level for 'transform' */
#define MM_XFORM 150.0 /* mana used for 'transform' */
#define MM_SPECIFY 1000.0 /* mana used for 'specify' */
#define ML_CLOAK 20.0 /* magic level for 'cloak' */
#define MEL_CLOAK 7.0 /* experience level for 'cloak' */
#define MM_CLOAK 35.0 /* mana used for 'cloak' */
#define ML_TELEPORT 40.0 /* magic level for 'teleport' */
#define MEL_TELEPORT 12.0 /* experience level for 'teleport' */
#define MM_INTERVENE 3000.0 /* mana used to 'intervene' */
#define MM_COMMAND 15000.0 /* mana used to 'command' */
/* some miscellaneous constants */
#define N_DAYSOLD 30 /* number of days old for purge */
#define N_AGE 750 /* age to degenerate ratio */
#define N_GEMVALUE (1000.0) /* number of gold pieces to gem ratio */
#define N_FATIGUE 50 /* rounds of combat before -1 speed */
#define N_SWORDPOWER .04 /* percentage of strength swords increase */
#define D_BEYOND (1.0e6) /* distance to beyond point of no return */
#define D_EXPER (2000.0) /* distance experimentos are allowed */
#define D_EDGE (100000000.0) /* edge of the world */
#define D_CIRCLE 125.0 /* distance for each circle */
#define STATELEN 256 /* random number state buffer */
#define MIN_STEWARD 10.0 /* minimum level for steward */
#define MAX_STEWARD 200.0 /* maximum level for steward */
#define MIN_KING 1000.0 /* minimum level for king */
#define MAX_KING 2000.0 /* maximum level for king */
/* hacking constants */
#define H_SYSTEM 0 /* hacking the system */
#define H_PASSWORDS 1 /* hacking passwords */
#define H_CONNECTIONS 2 /* excessive connections */
#define H_KILLING 3 /* killing rampage */
#define H_PROFANITY 4 /* using profanity */
#define H_DISRESPECTFUL 5 /* disrespectful to wizards */
#define H_FLOOD 6 /* flooding chat */
#define H_SPAM 7 /* spamming chat */
#define H_WHIM 8 /* wizard's whim */