/*************************************************************************** * Mud20 1.0 by Todd H. Johnson (Kregor) a derivative of the Open Gaming * * License by Wizards of the Coast. All comments referring to D20, OGL, * * and SRD refer to the System Reference Document for the Open Gaming * * system. Any inclusion of these derivatives must include credit to the * * Mud20 system, the full and complete Open Gaming LIcense, and credit to * * the respective authors. See ../doc/srd.txt for more information. * * * * Emud 2.2 by Igor van den Hoven, Michiel Lange, and Martin Bethlehem. * * * * MrMud 1.4 by David Bills, Dug Michael and Martin Gallwey * * * * Merc 2.1 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{rfeld, Tom Madsen, and Katje Nyboe. * ***************************************************************************/ #include <string.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <ctype.h> #include <time.h> #include <zlib.h> #include <math.h> #define DEVELOPER_MAIL "kregor@mud20.game-host.org" #define ADMIN_MAIL "kregor@mud20.game-host.org" #define __GLIBC__2__ #if defined(TRADITIONAL) #define const #define args( list ) ( ) #define DECLARE_DO_FUN( fun ) void fun( ) #define DECLARE_SPEC_FUN( fun ) bool fun( ) #define DECLARE_SPELL_FUN( fun ) bool fun( ) #else #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 #endif #define BV00 (0 << 0) #define BV01 (1 << 0) #define BV02 (1 << 1) #define BV03 (1 << 2) #define BV04 (1 << 3) #define BV05 (1 << 4) #define BV06 (1 << 5) #define BV07 (1 << 6) #define BV08 (1 << 7) #define BV09 (1 << 8) #define BV10 (1 << 9) #define BV11 (1 << 10) #define BV12 (1 << 11) #define BV13 (1 << 12) #define BV14 (1 << 13) #define BV15 (1 << 14) #define BV16 (1 << 15) #define BV17 (1 << 16) #define BV18 (1 << 17) #define BV19 (1 << 18) #define BV20 (1 << 19) #define BV21 (1 << 20) #define BV22 (1 << 21) #define BV23 (1 << 22) #define BV24 (1 << 23) #define BV25 (1 << 24) #define BV26 (1 << 25) #define BV27 (1 << 26) #define BV28 (1 << 27) #define BV29 (1 << 28) #define BV30 (1 << 29) #define BV31 (1 << 30) #define BV32 (1LL << 31) #define BV33 (1LL << 32) #define BV34 (1LL << 33) #define BV35 (1LL << 34) #define BV36 (1LL << 35) #define BV37 (1LL << 36) #define BV38 (1LL << 37) #define BV39 (1LL << 38) #define BV40 (1LL << 39) #define BV41 (1LL << 40) #define BV42 (1LL << 41) #define BV43 (1LL << 42) #define BV44 (1LL << 43) #define BV45 (1LL << 44) #define BV46 (1LL << 45) #define BV47 (1LL << 46) #define BV48 (1LL << 47) #define MAX_OBJ_REF 20000 #define MAX_STRING_LENGTH 60000 #define MAX_INPUT_LENGTH 2000 #define COMPRESS_BUF_SIZE 60000 #define MAX_QUEST_BYTES 16 #define MAX_NAME_LENGTH 12 #define MAX_HISCORE 50 #define MAX_ALIAS 60 #define MAX_KILL_TRACK 10 #define MAX_MPROG_NEST 5 #define MAX_LAST_LEFT 5 #define MAX_BUFFER_LENGTH 50000 #define MAX_OBJECTS_IN_CONTAINER 75 #define MAX_OBJECTS_IN_ROOM 100 #define MAX_PK_ATTACKS 10 #define DESCRIPTOR_TIMEOUT 600 #define RACE_ENEMY_MAX 41 #define MAX_PC 5 #define COLOR_NO_CHANGE -1 #define COLOR_TEXT 0 #define COLOR_STAT_BAR 1 #define COLOR_ACCENT 2 #define COLOR_ALERTS 3 #define COLOR_YOU_ARE_HIT 4 #define COLOR_YOU_HIT 5 #define COLOR_PROMPT 6 #define COLOR_EXITS 7 #define COLOR_PARTY_HIT 8 #define COLOR_SPEECH 9 #define COLOR_OBJECTS 10 #define COLOR_MOBILES 11 #define COLOR_TACTICAL 12 #define COLOR_TACT_PARTY 13 #define COLOR_TACT_ENEMY 14 #define COLOR_TACT_NEUTRAL 15 #define COLOR_CHAT 16 #define COLOR_TALK 17 #define COLOR_QUESTION 18 #define COLOR_MAX 19 #define VT102_DIM 0 #define VT102_BOLD 1 #define VT102_UNDERLINE 4 #define VT102_FLASHING 5 #define VT102_REVERSE 7 #define VT102_FAST BV01 #define VT100_BEEP BV02 #define VT100_HIGHLIGHT BV03 #define VT100_ECMA48 BV04 #define VT100_BOLD BV05 #define VT100_UNDERLINE BV06 #define VT100_FLASH BV07 #define VT100_REVERSE BV08 #define FALSE 0 #define TRUE 1 /* * change this value to FALSE if you want * players to respawn automatically without * needing raising. If TRUE, chars go to * Limbo, needing magical raising. */ #define PERM_DEATH TRUE typedef short int sh_int; typedef long long lg_int; typedef unsigned char bool; /* Structure types. */ typedef struct account_data ACCOUNT_DATA; typedef struct combat_data COMBAT_DATA; typedef struct turn_data TURN_DATA; typedef struct mud_data MUD_DATA; typedef struct affect_data AFFECT_DATA; typedef struct area_data AREA_DATA; typedef struct char_data CHAR_DATA; typedef struct descriptor_data DESCRIPTOR_DATA; typedef struct exit_data EXIT_DATA; typedef struct extra_descr_data EXTRA_DESCR_DATA; typedef struct help_data HELP_DATA; typedef struct mob_index_data MOB_INDEX_DATA; typedef struct note_data NOTE_DATA; typedef struct topic_data TOPIC_DATA; typedef struct obj_data OBJ_DATA; typedef struct poison_data POISON_DATA; typedef struct disease_data DISEASE_DATA; typedef struct bitvector_type BITVECTOR_DATA; typedef struct obj_index_data OBJ_INDEX_DATA; typedef struct pc_data PC_DATA; typedef struct crime_data CRIME_DATA; typedef struct file_data FILE_DATA; typedef struct bounty_data BOUNTY_DATA; typedef struct help_menu_data HELP_MENU_DATA; typedef struct obj_prog OBJ_PROG; typedef struct npc_data NPC_DATA; typedef struct mob_prog_token NPC_TOKEN; typedef struct reset_data RESET_DATA; typedef struct room_index_data ROOM_INDEX_DATA; typedef struct shop_data SHOP_DATA; typedef struct stable_data STABLE_DATA; typedef struct inn_data INN_DATA; typedef struct time_info_data TIME_INFO_DATA; typedef struct weather_data WEATHER_DATA; typedef struct mob_prog_data MPROG_DATA; typedef struct player_game PLAYER_GAME; typedef struct usage_data USAGE_DATA; typedef struct pvnum_data PVNUM_DATA; typedef struct ban_data BAN_DATA; typedef struct tactical_map TACTICAL_MAP; typedef struct object_reference OBJ_REFERENCE; typedef struct clan_data CLAN_DATA; typedef struct editor_data EDITOR_DATA; typedef struct pet_data PET_DATA; typedef struct hiscore_data HISCORE_DATA; typedef struct hiscore_list HISCORE_LIST; typedef struct obj_ref_hash OBJ_REF_HASH; typedef struct room_timer_data ROOM_TIMER_DATA; typedef struct junk_data JUNK_DATA; typedef struct str_hash_data STR_HASH_DATA; typedef struct math_data MATH_DATA; typedef struct auth_list AUTH_LIST; /* new auth -- Rantic */ /* Function types. */ typedef void DO_FUN args( ( CHAR_DATA *ch, char *argument ) ); typedef bool SPEC_FUN args( ( CHAR_DATA *ch ) ); typedef bool SPELL_FUN args( ( int sn, int level, CHAR_DATA *ch, void *vo, int target ) ); /* Supermob stuff */ extern CHAR_DATA *supermob; extern OBJ_DATA *supermob_obj; extern ROOM_INDEX_DATA *supermob_room; /* new auth -- Rantic */ extern AUTH_LIST *first_auth_name; extern AUTH_LIST *last_auth_name; /* Game parameters. Increase the max'es if you add more of something. */ #define MAX_EXP_WORTH 1000000 #define MIN_EXP_WORTH 10 typedef enum { SLOT_NONE = 0 } slot_numbers; /* gets tallied at skill loading time for actual MAX_SKILL - Kregor */ int MAX_REAL_SKILL; /* Fixed looping thru skill array so that you do not need to increase MAX_SKILL when you add skills unless you exceed the listed number. Also redefined TYPE_NOFIGHT and TYPE_HIT to remove need to redefine if MAX_SKILL changes. - Kregor 4/9/10 */ #define MAX_SKILL 1998 #define MAX_LANG 21 #define MAX_LEVEL 99 #define MAX_PVNUM 12000 #define MAX_AREA 10000 #define MAX_VNUM 100 * MAX_AREA #define MAX_TOPIC 7 #define MAX_WAYPOINT 20 #define MAX_LINKPERPORT 750 #define LEVEL_EPIC 21 #define LEVEL_HERO 30 #define LEVEL_IMMORTAL 97 #define MAX_AUTH_WAIT 7 /* max days to auth before deleted */ /* * Pulse times are set to be SRD compliant * do NOT change them unless you know what you're changing */ #define PULSE_PER_SECOND 4 #define PULSE_AGGRESSIVE ( 1 * PULSE_PER_SECOND / 2) #define PULSE_MOBILE ( 2 * PULSE_PER_SECOND) #define PULSE_VIOLENCE ( 6 * PULSE_PER_SECOND) #define PULSE_PROGRAM ( 6 * PULSE_PER_SECOND) #define PULSE_CHARSAVE ( 6 * PULSE_PER_SECOND) #define PULSE_TICK (60 * PULSE_PER_SECOND) #define PULSE_TIME (10 * PULSE_TICK) #define PULSE_AREA ( 1 * PULSE_TICK) #define PULSE_SHOPS (10 * PULSE_TICK) #define PULSE_AREASAVE (20 * PULSE_TICK) #define OBJ_SAC_TIME (25) #define AREA_VERSION 4 #define PLAYER_VERSION 2 #define MOST_KILL_EN 2 #define MOST_KILL_PC 3 #define MOST_KILL_NPC 4 #define MOST_KILL_BY_NPC 5 #define MOST_KILL_BY_EN 6 #define MOST_KILL_BY_PC 7 #define MOST_HP 8 #define MOST_MANA 9 #define MOST_MOVE 10 #define MOST_AC 11 #define MOST_DR 12 #define MOST_HR 13 #define MOST_CASTLE 14 #define MOST_HOURS 15 #define MOST_SAVE 16 #define MOST_MOST 17 /* some main variables, initialized in main() */ #define MUD_EMUD_BOOTING BV01 #define MUD_EMUD_DOWN BV02 #define MUD_EMUD_REBOOT BV03 #define MUD_EMUD_COPYOVER BV04 #define MUD_EMUD_CRASH BV05 #define MUD_EMUD_BOOTDB BV06 #define MUD_EMUD_REALGAME BV07 #define MUD_WIZLOCK BV08 #define MUD_CLANRENT BV09 #define MUD_DUALFLIP BV10 #define MUD_SKIPOUTPUT BV11 #define MUD_EQAFFECTING BV12 #define MUD_LOGALL BV13 #define MUD_PURGER BV14 #define MUD_STRAIGHTNUMBERS BV15 #define TIMER_AREA_SAVE 0 #define TIMER_SHOP_UPD 1 #define TIMER_CHAR_UPD 2 #define TIMER_AREA_UPD 3 #define TIMER_WEATHER_UPD 4 #define TIMER_OBJ_UPD 5 #define TIMER_CHAR_SAVE 6 #define TIMER_VIOL_UPD 7 #define TIMER_OBJ_PROG 8 #define TIMER_MOB_PROG 9 #define TIMER_MOB_UPD 10 #define TIMER_AGGR_UPD 11 #define TIMER_PURGE 12 #define TIMER_TACTICAL_UPD 13 #define TIMER_SCAN_DESC 14 #define TIMER_PROCESS_INPUT 15 #define TIMER_PROCESS_OUTPUT 16 #define TIMER_TIME_UPD 17 #define TIMER_MAXTIMER 18 #define CMD_NONE 0 #define CMD_HIDE BV01 #define CMD_IDLE BV02 #define CMD_BERSERK BV03 #define CMD_QUIT BV04 #define CMD_NO_MAGIC BV05 #define CMD_NOHELP BV06 #define CMD_DEAD BV07 #define CMD_ATTACK BV08 #define CMD_NOFIGHT BV09 #define CMD_TESTER BV10 #define CMD_BUILDER BV11 #define CMD_HELPER BV12 #define CMD_ENFORCER BV13 /* This structure holds most of the global variables - Scandum 28-04-2003 */ struct mud_data { DESCRIPTOR_DATA * f_desc; DESCRIPTOR_DATA * l_desc; ACCOUNT_DATA * f_acct; ACCOUNT_DATA * l_acct; PLAYER_GAME * f_player; PLAYER_GAME * l_player; AREA_DATA * f_area; AREA_DATA * l_area; CHAR_DATA * f_char; CHAR_DATA * l_char; SHOP_DATA * f_shop; SHOP_DATA * l_shop; STABLE_DATA * f_stable; STABLE_DATA * l_stable; INN_DATA * f_inn; INN_DATA * l_inn; OBJ_DATA * f_obj; OBJ_DATA * l_obj; CLAN_DATA * f_clan; CLAN_DATA * l_clan; JUNK_DATA * f_junk; JUNK_DATA * l_junk; ROOM_TIMER_DATA * f_room_timer; ROOM_TIMER_DATA * l_room_timer; PET_DATA * f_pet; PET_DATA * l_pet; NOTE_DATA * f_note; NOTE_DATA * l_note; BOUNTY_DATA * f_bounty; BOUNTY_DATA * l_bounty; BAN_DATA * f_ban; BAN_DATA * l_ban; BAN_DATA * f_nban; BAN_DATA * l_nban; FILE_DATA * f_open_file; FILE_DATA * l_open_file; MATH_DATA * f_math; MATH_DATA * l_math; DESCRIPTOR_DATA * update_gld; CHAR_DATA * update_wch; CHAR_DATA * update_ich; CHAR_DATA * update_rch; OBJ_DATA * update_obj; CHAR_DATA * mp_group_greeter; CHAR_DATA * mp_group_greeted; OBJ_DATA * mp_group_greet_obj; HISCORE_LIST * high_scores[MOST_MOST]; TIME_INFO_DATA * time_info; USAGE_DATA * usage; TACTICAL_MAP * tactical; struct tm time; time_t current_time; time_t boot_time; lg_int total_io_bytes; lg_int total_io_ticks; lg_int total_io_delay; lg_int total_io_exec; int bitvector_ref[26]; int command_ref[26]; int social_ref[26]; int port; int control; int flags; int total_mob; int total_obj; int total_plr; int total_desc; int total_acct; int top_exit; int top_affect; int top_area; int top_ed; int top_help; int top_mob_index; int top_obj_index; int top_room; int top_reset; int top_shop; int top_inn; int top_stable; int top_mprog; int top_oprog; bool sunlight; bool str_hash_size; char * last_player_cmd; unsigned char * mccp_buf; }; /* Time and weather stuff. */ typedef enum { LIGHT_DEEP_DARK = 0, LIGHT_DARKNESS, LIGHT_DIM, LIGHT_NORMAL, LIGHT_BRIGHT } light_flags; #define SUN_DARK 0 #define SUN_RISE 1 #define SUN_NOON 2 #define SUN_LIGHT 3 #define SUN_SET 4 #define SKY_CLOUDLESS 0 #define SKY_CLOUDY 1 #define SKY_RAINING 2 #define SKY_LIGHTNING 3 struct time_info_data { int hour; int day; int month; int year; }; struct weather_data { bool sky; sh_int temperature; sh_int change; bool wind_dir; sh_int wind_speed; sh_int temp_summer; /* Summer temperature */ sh_int temp_winter; /* Winter temperature */ sh_int temp_daily; /* Daily temperature change */ bool wet_scale; /* Wetness scale 0 - 10 */ bool wind_scale; /* Windyness scale 0 - 10 */ }; struct player_game { PLAYER_GAME * next; PLAYER_GAME * prev; CHAR_DATA * ch; }; /* * This is the structure for a single battle. */ struct combat_data { COMBAT_DATA * next; CHAR_DATA * unit_list; TURN_DATA * turn_list; int turn_count; }; /* * This is the structure for a single turn. */ struct turn_data { TURN_DATA * next; COMBAT_DATA * in_battle; CHAR_DATA * unit; long roundtime; sh_int timer; }; /* Connected state for a channel. */ #define CON_GET_NAME -30 #define CON_GET_OLD_PASSWORD -29 #define CON_GET_ACCOUNT -28 #define CON_GET_NEW_ACCOUNT -27 #define CON_ACCOUNT_MENU -26 #define CON_GET_NEW_NAME -21 #define CON_GET_NEW_PASSWORD -20 #define CON_CONFIRM_NEW_PASSWORD -19 #define CON_GET_NEW_AGE -18 #define CON_ANSI -17 #define CON_VT100 -16 #define CON_GET_NEW_SEX -15 #define CON_GET_NEW_RACE -14 #define CON_GET_NEW_CLASS -13 #define CON_REROLL -12 #define CON_GET_LANGS -11 #define CON_GET_DEITY -10 #define CON_GET_ALIGNMENT -9 #define CON_READ_MOTD -2 #define CON_COPYOVER_RECOVER -1 #define CON_PLAYING 0 #define CON_EDITING 1 /* These keep track of what a person is editing */ #define MODE_NONE 0 #define MODE_RESTRICTED 1 #define MODE_WRITING_NOTE 2 #define MODE_PERSONAL_DESC 3 #define MODE_ROOM_DESC 4 #define MODE_MOB_DESC 5 #define MODE_DISGUISE_DESC 6 #define MODE_CLAN_DOCTRINE 7 /* Unused */ #define MODE_HELP_EDIT 8 #define MODE_MPROG_EDIT 9 #define MODE_REPEATCMD 10 #define MODE_OBJ_DESC 11 #define MODE_OBJ_ID_DESC 12 #define MODE_OBJ_EXTRA 13 #define MODE_MOB_EXTRA 14 #define MODE_ROOM_EXTRA 15 #define MODE_CRIME_RECORD 16 #define MODE_OPROG_EDIT 17 #define MODE_PERSONAL_BIO 18 #define MODE_ROOM_LISTEN 19 #define MODE_RPROG_EDIT 20 #define MODE_ROOM_NIGHT 21 #define MODE_EDIT_NOTE 22 #define EDIT_TYPE_NONE 0 #define EDIT_TYPE_ROOM 1 #define EDIT_TYPE_MOB 2 #define EDIT_TYPE_OBJ 3 #define EDIT_TYPE_HELP 4 #define EDIT_TYPE_RESET 5 #define EDIT_TYPE_SHOP 6 #define EDIT_TYPE_AREA 7 #define EDIT_TYPE_MPROG 8 #define EDIT_TYPE_OPROG 9 #define EDIT_TYPE_RPROG 10 #define EDIT_TYPE_STABLE 11 #define EDIT_TYPE_INN 12 #define EDIT_TYPE_RACE 13 #define EDIT_TYPE_GOD 14 #define EDIT_TYPE_CLASS 15 #define INTERP_ALIAS BV01 #define INTERP_OPROG BV02 #define INTERP_FORCE BV03 #define INTERP_DUMP BV04 #define INTERP_SCROLL BV05 #define INTERP_PAGE BV06 #define INTERP_PAUSE BV07 #define INTERP_AUTO BV08 #define INTERP_HELP BV09 #define INTERP_TACT_UPDATE BV10 #define INTERP_MPROG BV11 #define TRACK_NORTH BV01 #define TRACK_SOUTH BV02 #define TRACK_EAST BV03 #define TRACK_WEST BV04 #define TRACK_UP BV05 #define TRACK_DOWN BV06 #define TRACK_FLY BV07 #define TRACK_BLOOD BV08 #define TO_ROOM 0 #define TO_NOTVICT 1 #define TO_VICT 2 #define TO_CHAR 3 #define TO_CAN_SEE 4 #define TO_SEEHEAR 5 #define TO_ALL 6 typedef enum { ATTK_BITE = 0, ATTK_CLAW, ATTK_GORE, ATTK_HOOF, ATTK_KICK, ATTK_PINCERS, ATTK_PUNCH, ATTK_RAKE, ATTK_SLAM, ATTK_STING, ATTK_TAIL, ATTK_TALON, ATTK_TENTACLE, ATTK_WING, ATTK_OTHER, ATTK_TOUCH, ATTK_MAX } attack_flags; /* racial body types */ typedef enum { BTYPE_BIPEDAL = 0, BTYPE_AMORPHOUS, BTYPE_AQUATIC, BTYPE_ARTHROPOD, BTYPE_ARTHROPOD_HYBRID, BTYPE_AVIAN, BTYPE_MULTI_ARMED, BTYPE_QUADRUPED, BTYPE_QUADRUPED_HYBRID, BTYPE_RADIAL, BTYPE_SERPENTINE, BTYPE_SERPENTINE_HYBRID, BTYPE_MAX } body_type_flags; /* bitvector flags for faerun gods */ typedef enum { GOD_NEUTRAL = 0, GOD_AKADI, GOD_AURIL, GOD_AZUTH, GOD_BANE, GOD_BESHABA, GOD_CHAUNTEA, GOD_CYRIC, GOD_DENEIR, GOD_ELDATH, GOD_FINDER_WYVERNSPUR, GOD_GARAGOS, GOD_GARGAUTH, GOD_GOND, GOD_GRUMBAR, GOD_GWAERON_WINDSTROM, GOD_HELM, GOD_HOAR, GOD_ILMATER, GOD_ISTISHIA, GOD_JERGAL, GOD_KELEMVOR, GOD_KOSSUTH, GOD_LATHANDER, GOD_LEIRA, GOD_LLIIRA, GOD_LOVIATAR, GOD_LURUE, GOD_MALAR, GOD_MASK, GOD_MIELIKKI, GOD_MILIL, GOD_MYSTRA, GOD_OGHMA, GOD_RED_KNIGHT, GOD_SAVRAS, GOD_SELUNE, GOD_SHAR, GOD_SHARESS, GOD_SHAUNDAKUL, GOD_SHIALLIA, GOD_SIAMORPHE, GOD_SILVANUS, GOD_SUNE, GOD_TALONA, GOD_TALOS, GOD_TEMPUS, GOD_TORM, GOD_TYMORA, GOD_TYR, GOD_UMBERLEE, GOD_VALKUR, GOD_VELSHAROON, GOD_WAUKEEN, GOD_AERDRIE_FAENYA, GOD_ANGARRADH, GOD_CORELLON_LARETHIAN, GOD_EREVAN_ILESERE, GOD_FENMAREL_MESTARINE, GOD_HANALI_CELANIL, GOD_LABELAS_ENORETH, GOD_RILLFANE_RALLATHIL, GOD_SEHANINE_MOONBOW, GOD_SHEVARASH, GOD_SOLONOR_THELANDIRA, GOD_EILISTRAEE, GOD_KIRANSALEE, GOD_GHAUNADAUR, GOD_LOLTH, GOD_SEVELTARM, GOD_VHAERAUN, GOD_ABBATHOR, GOD_BERRONAR_TRUESILVER, GOD_CLANGEDDIN_SILVERBEARD, GOD_DEEP_DUERRA, GOD_DUGMAREN_BRIGHTMANTLE, GOD_DUMATHOIN, GOD_GORM_GULTHYN, GOD_HAELA_BRIGHTAXE, GOD_LADUGUER, GOD_MARTHAMMOR_DUIN, GOD_MORADIN, GOD_SHARINDLAR, GOD_THARD_HARR, GOD_VERGADAIN, GOD_BAERVAN_WILDWANDERER, GOD_BARAVAR_CLOAKSHADOW, GOD_CALLARDURAN_SMOOTHHANDS, GOD_FLANDAL_STEELSKIN, GOD_GAERDAL_IRONHAND, GOD_GARL_GLITTERGOLD, GOD_SEGOJAN_EARTHCALLER, GOD_URDLEN, GOD_ARVOREEN, GOD_BRANDOBARIS, GOD_CYRROLLALEE, GOD_SHEELA_PERYROYL, GOD_UROGALAN, GOD_YONDALLA, GOD_BAHGTRU, GOD_GRUUMSH, GOD_ILNEVAL, GOD_LUTHIC, GOD_SHARGAAS, GOD_YURTRUS, GOD_BAHAMUT, GOD_BAPHOMET, GOD_BLIBDOOLPOOLP, GOD_HRUGGEK, GOD_KURTULMAK, GOD_MAGLUBIYET, GOD_SEMUANYA, GOD_SSETH, GOD_TIAMAT, GOD_VAPRAK, GOD_YEENOGHU, MAX_GOD } god_flags; typedef enum { STYPE_NONE = 0, STYPE_ATTACK, STYPE_BUFF, STYPE_CURSE, STYPE_DEBUFF, STYPE_DEFENSE, STYPE_HEAL } spell_type_flags; typedef enum { STAT_STR = 0, STAT_DEX, STAT_CON, STAT_INT, STAT_WIS, STAT_CHA } stat_locations; typedef enum { APPLY_NONE = 0, APPLY_STR, APPLY_DEX, APPLY_INT, APPLY_WIS, APPLY_CON, APPLY_CHA, APPLY_SEX, APPLY_RACE, APPLY_LEVEL, APPLY_AGE, APPLY_SIZE, APPLY_MANA, APPLY_HIT, APPLY_MOVE, APPLY_SAVING_FORT, APPLY_SAVING_REFL, APPLY_SAVING_WILL, APPLY_SAVES, APPLY_DEFLECT, APPLY_DODGE, APPLY_SHIELD, APPLY_ARMOR, APPLY_COMP_SKILL, APPLY_COMP_TOHIT, APPLY_COMP_DAMG, APPLY_COMP_FORT, APPLY_COMP_REFL, APPLY_COMP_WILL, APPLY_COMP_SAVES, APPLY_ENHANCE_AC, APPLY_HITROLL, APPLY_DAMROLL, APPLY_INS_AC, APPLY_INS_TOHIT, APPLY_INS_FORT, APPLY_INS_REFL, APPLY_INS_WILL, APPLY_INS_SAVES, APPLY_INS_SKILL, APPLY_LUCK_SKILL, APPLY_LUCK_TOHIT, APPLY_LUCK_DAMG, APPLY_LUCK_FORT, APPLY_LUCK_REFL, APPLY_LUCK_WILL, APPLY_LUCK_SAVES, APPLY_MOR_TOHIT, APPLY_MOR_DAMG, APPLY_MOR_FORT, APPLY_MOR_REFL, APPLY_MOR_WILL, APPLY_MOR_SAVES, APPLY_MOR_SKILL, APPLY_NATURAL_AC, APPLY_RES_GOOD, APPLY_RES_EVIL, APPLY_RES_LAW, APPLY_RES_CHAOS, APPLY_RES_SAVES, APPLY_RES_SPELL, APPLY_APPRAISE, APPLY_BLUFF, APPLY_CLIMB, APPLY_CONCENTRATE, APPLY_DECIPHER, APPLY_DIPLOMACY, APPLY_DISABLE, APPLY_DISGUISE, APPLY_ESCAPE, APPLY_FIRST_AID, APPLY_GATHER_INFO, APPLY_HANDLE_ANIM, APPLY_INTIMIDATE, APPLY_JUMP, APPLY_LISTEN, APPLY_MOUNT, APPLY_OPEN_LOCK, APPLY_PERFORM, APPLY_SEARCH, APPLY_STEALTH, APPLY_SENSE_MOT, APPLY_SLEIGHT, APPLY_SPELLCRAFT, APPLY_SIGHT, APPLY_SURVIVAL, APPLY_SWIM, APPLY_TUMBLE, APPLY_USE_MAGIC, APPLY_CRAFT_ALCHEMY, APPLY_CRAFT_ARMOR, APPLY_CRAFT_BOWS, APPLY_CRAFT_COOKING, APPLY_CRAFT_FLETCHING, APPLY_CRAFT_JEWELRY, APPLY_CRAFT_LEATHER, APPLY_CRAFT_MINING, APPLY_CRAFT_POISON, APPLY_CRAFT_TAILOR, APPLY_CRAFT_TRAPS, APPLY_CRAFT_WEAPONS, APPLY_DR_BASH, APPLY_DR_PIERCE, APPLY_DR_SLASH, APPLY_DR_MAGIC, APPLY_DR_GOOD, APPLY_DR_EVIL, APPLY_DR_LAW, APPLY_DR_CHAOS, APPLY_DR_IRON, APPLY_DR_SILVER, APPLY_DR_ADAMANTINE, APPLY_DR_NONE, APPLY_DR_ACID, APPLY_DR_COLD, APPLY_DR_ELECTRIC, APPLY_DR_FIRE, APPLY_DR_SONIC, APPLY_SPELL_RES, APPLY_WEAPON_FLAG, APPLY_OBJVAL_0, APPLY_OBJVAL_1, APPLY_OBJVAL_2, APPLY_OBJVAL_3, APPLY_OBJVAL_4, APPLY_OBJVAL_5, APPLY_OBJVAL_6, APPLY_OBJVAL_7, APPLY_SPELL_SLOTS_1, APPLY_SPELL_SLOTS_2, APPLY_SPELL_SLOTS_3, APPLY_SPELL_SLOTS_4, APPLY_SPELL_SLOTS_5, APPLY_STR_DAMAGE, APPLY_DEX_DAMAGE, APPLY_CON_DAMAGE, APPLY_INT_DAMAGE, APPLY_WIS_DAMAGE, APPLY_CHA_DAMAGE, APPLY_STR_DRAIN, APPLY_DEX_DRAIN, APPLY_CON_DRAIN, APPLY_INT_DRAIN, APPLY_WIS_DRAIN, APPLY_CHA_DRAIN, APPLY_SAVE_ACID, APPLY_SAVE_AIR, APPLY_SAVE_CHAOTIC, APPLY_SAVE_CHARM, APPLY_SAVE_COLD, APPLY_SAVE_COMPULSION, APPLY_SAVE_DARKNESS, APPLY_SAVE_DEATH, APPLY_SAVE_DISEASE, APPLY_SAVE_EARTH, APPLY_SAVE_ELECTRIC, APPLY_SAVE_EVIL, APPLY_SAVE_FEAR, APPLY_SAVE_FIRE, APPLY_SAVE_FORCE, APPLY_SAVE_GOOD, APPLY_SAVE_ILLUSION, APPLY_SAVE_LAWFUL, APPLY_SAVE_LIGHT, APPLY_SAVE_MAGIC, APPLY_SAVE_MIND, APPLY_SAVE_NEGATIVE, APPLY_SAVE_PARALYSIS, APPLY_SAVE_PETRI, APPLY_SAVE_POISON, APPLY_SAVE_POLYMORPH, APPLY_SAVE_HEALING, APPLY_SAVE_SLEEP, APPLY_SAVE_SONIC, APPLY_SAVE_WATER, APPLY_IMM_ACID, APPLY_IMM_AIR, APPLY_IMM_CHAOTIC, APPLY_IMM_CHARM, APPLY_IMM_COLD, APPLY_IMM_COMPULSION, APPLY_IMM_DARKNESS, APPLY_IMM_DEATH, APPLY_IMM_DISEASE, APPLY_IMM_EARTH, APPLY_IMM_ELECTRIC, APPLY_IMM_EVIL, APPLY_IMM_FEAR, APPLY_IMM_FIRE, APPLY_IMM_FORCE, APPLY_IMM_GOOD, APPLY_IMM_ILLUSION, APPLY_IMM_LAWFUL, APPLY_IMM_LIGHT, APPLY_IMM_MAGIC, APPLY_IMM_MIND, APPLY_IMM_NEGATIVE, APPLY_IMM_PARALYSIS, APPLY_IMM_PETRI, APPLY_IMM_POISON, APPLY_IMM_HEALING, APPLY_IMM_POLYMORPH, APPLY_IMM_SLEEP, APPLY_IMM_SONIC, APPLY_IMM_WATER, APPLY_SR_CHAOS, APPLY_SR_EVIL, APPLY_SR_GOOD, APPLY_SR_LAW, APPLY_FAST_HEALING, APPLY_REGENERATION, APPLY_TURN_RESIST, APPLY_DARKVISION, APPLY_LOWLIGHT_VISION, APPLY_CONCEALMENT, APPLY_FORTIFICATION, APPLY_ROOM_SECTOR, APPLY_ROOM_LIGHT, APPLY_MATERIAL, MAX_APPLY } apply_flags; typedef enum { DOMAIN_AIR = 0, DOMAIN_ARTIFICE, DOMAIN_ANIMAL, DOMAIN_CAVERN, DOMAIN_CHAOS, DOMAIN_CHARM, DOMAIN_COMMUNITY, DOMAIN_DARKNESS, DOMAIN_DEATH, DOMAIN_DESTRUCTION, DOMAIN_EARTH, DOMAIN_EVIL, DOMAIN_FIRE, DOMAIN_GOOD, DOMAIN_HEALING, DOMAIN_ILLUSION, DOMAIN_KNOWLEDGE, DOMAIN_LAW, DOMAIN_LIBERATION, DOMAIN_LUCK, DOMAIN_MADNESS, DOMAIN_MAGIC, DOMAIN_METAL, DOMAIN_MOON, DOMAIN_NOBILITY, DOMAIN_PLANNING, DOMAIN_PLANT, DOMAIN_PROTECTION, DOMAIN_RENEWAL, DOMAIN_REPOSE, DOMAIN_RETRIBUTION, DOMAIN_SCALYKIND, DOMAIN_STRENGTH, DOMAIN_SUFFERING, DOMAIN_SUN, DOMAIN_TRADE, DOMAIN_TRAVEL, DOMAIN_TRICKERY, DOMAIN_WAR, DOMAIN_WATER, DOMAIN_WEATHER, DOMAIN_WRATH, MAX_DOMAIN } domain_flags; #define GOD_NEUTRAL 0 #define GOD_ALPHA 1 #define GOD_BRAVO 2 #define GOD_CHARLIE 3 #define GOD_DELTA 4 #define GOD_ECHO 5 #define GOD_FOXTROT 6 /* Descriptor (channel) structure. */ struct descriptor_data { DESCRIPTOR_DATA * next; DESCRIPTOR_DATA * prev; DESCRIPTOR_DATA * snoop_by; CHAR_DATA * character; CHAR_DATA * original; ACCOUNT_DATA * account; // player account data char * host; char * terminal_type; sh_int descriptor; sh_int connected; char inbuf [MAX_INPUT_LENGTH]; char incomm [MAX_INPUT_LENGTH]; char * back_buf; /* Used for aliasses */ char * inlast; int repeat; char outbuf [MAX_STRING_LENGTH]; int outtop; int intop; int port_size; time_t connecting_time; sh_int comm_flags; bool lookup_acct; bool lookup; sh_int timeout; z_stream * mccp; }; struct account_data { DESCRIPTOR_DATA * desc; ACCOUNT_DATA * next; ACCOUNT_DATA * prev; CHAR_DATA * ch; //ptr to char_data char * player_name; char * pwd; lg_int password; // take over password from pfile int flags; // for banning and other flags int rp_points; // RP rating as modifier to XP int strikes; // Count strikes - 3 and you're out! time_t last_connect; // mirror from pfile time_t last_time; // mirror from pfile time_t last_saved; // mirror from pfile int played; // mirror from pfile int functions; // take over from pfile int character[MAX_PC]; //character list by pvnum sh_int vt100; sh_int ansi; bool consent; // take over from pfile }; struct editor_data { sh_int numlines; sh_int on_line; int size; char * line[600]; }; struct pet_data { PET_DATA * next; PET_DATA * prev; CHAR_DATA * ch; }; /* * Armor table - Kregor */ struct armor_type { char name[20]; short type; short material; int cost; short ac_bonus; short dex_max; short armor_check; short spell_fail; short max_spd; short weight; }; /* * weapon table - Kregor */ struct weapon_type { char *name; int cost; sh_int damnodice; sh_int damsizedice; sh_int dam_type; sh_int threat; sh_int critical; sh_int range; sh_int weight; sh_int class; sh_int size; int weap_spec; sh_int material; sh_int craft_skill; }; /* * Tool table - Kregor */ struct tool_type { char name[20]; char trade[36]; int cost; short weight; }; /* * poison table - Kregor */ struct poison_type { char name[20]; sh_int type; sh_int dc; sh_int inst_nodice; sh_int inst_sizedice; sh_int inst_loc; sh_int sec_nodice; sh_int sec_sizedice; sh_int sec_loc; sh_int cost; }; /* * disease table - Kregor */ struct disease_type { char name[20]; sh_int type; sh_int dc; sh_int incubation; sh_int damdice; sh_int location; sh_int saves_cure; char * echo_char; char * echo_room; }; /* * unarmed attacks */ struct attack_type { char * message; int dam_type; }; struct attack_part_type { sh_int size[10]; }; struct obj_prog { OBJ_PROG * next; OBJ_PROG * prev; OBJ_PROG * true; OBJ_PROG * false; char * unknown; char * argument; int trigger; int if_value; sh_int cmd; bool obj_command; bool if_check; bool if_symbol; bool if_true; bool if_false; bool quest_offset; bool quest_bits; bool index; bool percentage; }; /* Help table types. */ struct help_data { HELP_DATA * next; HELP_DATA * prev; sh_int level; char * keyword; char * title; char * text; AREA_DATA * area; HELP_MENU_DATA * first_menu; HELP_MENU_DATA * last_menu; }; struct help_menu_data { HELP_MENU_DATA * next; HELP_MENU_DATA * prev; char option; HELP_DATA * help; }; /* Shop types. */ #define MAX_TRADE 4 struct shop_data { SHOP_DATA * next; SHOP_DATA * prev; int keeper; /* Vnum of shop keeper mob */ bool buy_type[MAX_TRADE];/* Item types shop will buy */ int shop_flags; sh_int profit_buy; /* Cost multiplier for buying */ sh_int profit_sell; /* Cost multiplier for selling*/ bool open_hour; /* First opening hour */ bool close_hour; /* First closing hour */ }; /* * Stable stuff */ struct stable_data { STABLE_DATA * next; STABLE_DATA * prev; int keeper; /* Vnum of stable keeper mob */ int room; /* Vnum of stable storage room */ int shop_flags; /* Uses shop flags to configure */ sh_int rent; /* Cost to stable */ bool open_hour; /* First opening hour */ bool close_hour; /* First closing hour */ }; /* * Inn rental stuff */ #define MAX_INN_ROOMS 5 struct inn_data { INN_DATA * next; INN_DATA * prev; int keeper; /* Vnum of inn keeper mob */ int room[MAX_INN_ROOMS]; /* Vnums of sleeping rooms */ sh_int rent[MAX_INN_ROOMS]; /* Cost of each room */ int shop_flags; /* Uses shop flags to configure */ bool open_hour; /* First opening hour */ bool close_hour; /* First closing hour */ }; /* Per-class stuff. */ struct class_type { char who_name[4]; /* Three-letter name for 'who' */ char who_name_long[40]; /* Actual title Chaos 11/7/93 */ sh_int fort_save; /* Which fort save scale to use */ sh_int refl_save; /* Which reflex save scale to use */ sh_int will_save; /* Which will save scale to use */ sh_int hp_max; /* Max hp gained on leveling */ sh_int pc_class; /* can PC take class? */ sh_int mana_table; /* Mana table used */ sh_int attr_prime; /* Prime attribute */ sh_int attr_second; /* Second attribute */ sh_int prime_mod; /* Modifier for main attribute */ sh_int sec_mod; /* Modifier for second attribute */ sh_int base_attack; /* Which base attack bonus scale to use */ sh_int skill_pts; /* Skill points (practices) per level */ sh_int max_level; /* Max level in the class */ sh_int first_bonus; /* first level bonus feat is earned */ sh_int bonus_lvl; /* level increment for each bonus feat */ }; struct god_type { char god_name[30]; char logout_msg[80]; /* faithful see this msg on logout */ char *ranking[5]; /* faith rank titles */ int domain1; /* NPC clerical 1st domain */ int domain2; /* NPC clerical 2nd domain */ int domain[MAX_DOMAIN]; /* clerical domains NEW array */ int favored_weapon; /* deity's favored weapon */ lg_int race; /* racial pantheon of diety */ lg_int paladin_multi; /* what classes can a paladin multiclass with? */ lg_int monk_multi; /* what classes can a monk multiclass with? */ int align; /* god's own alignment axes */ int ethos; int align_hi; /* range allowed for followers' alignments */ int align_lo; int ethos_hi; int ethos_lo; int faith_enemy[MAX_GOD]; /* gods who this god opposes */ int faith_ally[MAX_GOD]; /* gods who this god is aligned with */ }; struct sector_type { char sector_name[20]; sh_int movement; sh_int color; sh_int flags; sh_int light; sh_int sight; }; struct race_type { char race_name[24]; /* Race Names */ sh_int race_mod[6]; /* Attribute modifiers */ sh_int nonability[6]; /* Non-abilities 0 stats */ sh_int hit_dice; /* monster levels of race */ sh_int land_speed; /* land speed in feet */ sh_int burrow_speed; /* burrow speed in feet */ sh_int climb_speed; /* climb speed in feet */ sh_int fly_speed; /* fly speed in feet */ sh_int swim_speed; /* swim speed in feet */ sh_int nat_armor; /* Natural armor bonus */ sh_int deflection; /* Deflection AC bonus */ bool pcrace; /* 1 = allowed for PC */ int parent_race; /* parent race of subrace */ sh_int size; /* size of race */ sh_int weight; /* weight in pounds */ sh_int height; /* height in inches */ int lvl_adj; /* Level Adjustment */ int apply[MAX_APPLY]; /* Racial Applies */ int vulnerability; /* Vulnerability to dam type */ int speaks; /* native language */ int understands; /* known languages */ int bonus_langs; /* bonus langs */ int type; /* race type */ int body_type; /* body type */ lg_int flags; /* specialties */ lg_int sectors; /* native sector types */ lg_int attack_parts; /* body parts race attacks with DEPRECATED */ lg_int wear_locs; /* Wear locations of race */ lg_int affected_by; /* permanent affect vectors */ sh_int attacks[ATTK_MAX];/* NEW universal monster rules attack parts */ int poison; /* Poison type for those w/poison */ int poison_part; /* What body part has posion */ int disease; /* Disease type for those w/disease */ int disease_part; /* What body part has disease */ int favored_class; /* favored class for race */ int alignment; /* typical align for race */ int ethos; /* typical ethos for race */ int material; /* body composition */ }; struct race_type_type { char name[20]; /* Race Type Names */ sh_int hit_die; /* size of hit dice */ sh_int skill_pts; /* skill points per level */ int immunity; /* Immunities to descriptor types */ int vulnerability; /* Vulnerabilities to dam type */ lg_int wear_locs; /* Wear locs typical to rtype */ sh_int fort_save; /* Which fort save scale to use */ sh_int refl_save; /* Which reflex save scale to use */ sh_int will_save; /* Which will save scale to use */ sh_int base_attack; /* Which base attack bonus scale to use */ bool natural_weap; /* Automatically possesses natural weapons */ bool eats; /* Does the race type eat? */ bool breathes; /* Does the race type breathe? */ bool can_crit; /* Can critical hit? */ bool can_flank; /* Can be flanked? */ }; /* Data structures for notes. */ struct note_data { NOTE_DATA * next; NOTE_DATA * prev; char * sender; char * date; char * to_list; char * subject; int topic; char * text; time_t time; /* encoded format for dates */ int room_vnum; /* Room based note boards */ }; struct topic_data { char * name; int min_level; }; struct affect_data { AFFECT_DATA * next; AFFECT_DATA * prev; sh_int type; sh_int duration; int location; int modifier; bool bittype; lg_int bitvector; sh_int level; char * caster; }; struct material_type { int parent; /* parent material */ int hardness; /* DR/adamantine */ int hit; /* hitpoints per inch */ int resist_lo; /* takes 1/2 dam from dam_type */ int resist_hi; /* takes 1/4 dam from dam_type */ int immune; /* takes no dam from dam_type */ int vulnerable; /* takes 2x dam from dam_type and ignore hardness */ }; struct component_type { char *name; /* name of component */ int cost; /* cost per use (val1) */ }; /* Well known mob virtual numbers. */ #define MOB_VNUM_TOTEM 4 #define MOB_VNUM_ILLUSION 25 #define MOB_VNUM_WINGED_CALL 30 #define MOB_VNUM_WIZARD_EYE 26 #define MOB_VNUM_ZOMBIE 27 #define MOB_VNUM_WARHORSE 19 #define MOB_VNUM_SHADOW_BEAST 22 #define MOB_VNUM_COMP_BADGER 31 #define MOB_VNUM_COMP_BEAR 32 #define MOB_VNUM_COMP_DOG 33 #define MOB_VNUM_COMP_CAMEL 34 #define MOB_VNUM_COMP_HAWK 35 #define MOB_VNUM_COMP_RAVEN 47 #define MOB_VNUM_COMP_HORSE 37 #define MOB_VNUM_COMP_OWL 38 #define MOB_VNUM_COMP_WEASEL 39 #define MOB_VNUM_COMP_WOLF 40 #define MOB_VNUM_COMP_BOAR 41 #define MOB_VNUM_COMP_TIGER 42 #define MOB_VNUM_COMP_BAT 43 #define MOB_VNUM_COMP_CAT 44 #define MOB_VNUM_COMP_LIZARD 45 #define MOB_VNUM_COMP_RAT 48 #define MOB_VNUM_COMP_SNAKE 46 #define MOB_VNUM_COMP_TOAD 47 #define MOB_VNUM_COMPANION 49 #define MOB_VNUM_SUMMONS 50 #define AFLAG_NODEBUG BV01 #define AFLAG_NOTELEPORT BV02 #define AFLAG_NEWHELPS BV03 #define AFLAG_NORECALL BV04 #define AFLAG_NOCASTLE BV05 #define AFLAG_NORIP BV06 #define AFLAG_FREEQUIT BV07 #define AFLAG_NOSUMMON BV08 #define AFLAG_AUTOSAVE BV09 #define AFLAG_MODIFIED BV10 #define AFLAG_WEATHER BV11 #define AFLAG_CONVERTED BV12 #define AFLAG_VILLAGE BV13 #define AFLAG_TOWN BV14 #define AFLAG_CITY BV15 #define AFLAG_METROPOLIS BV16 #define AFLAG_NO_PVP BV17 #define AFLAG_WILDERNESS BV18 #define AFLAG_FK BV19 #define CRIME_NONE 0 #define CRIME_MUGGING 1 #define CRIME_ASSAULT 2 #define CRIME_LOW_MURDER 3 #define CRIME_HIGH_MURDER 4 #define CRIME_MAX 5 #define PUNISHMENT_NOT_ENFORCED 0 #define PUNISHMENT_DEATH 1 #define PUNISHMENT_SEVER 2 #define PUNISHMENT_JAIL 3 #define PUNISHMENT_CONFISCATE 4 #define SFLAG_NONE 0 #define SFLAG_INDOORS BV01 #define SFLAG_NOWEATHER BV02 #define SFLAG_SWIM BV03 #define LANG_NONE 0 #define LANG_ABYSSAL BV01 #define LANG_AQUAN BV02 #define LANG_AURAN BV03 #define LANG_CELESTIAL BV04 #define LANG_COMMON BV05 #define LANG_DWARVEN BV06 #define LANG_ELVEN BV07 #define LANG_GIANT BV08 #define LANG_GNOLL BV09 #define LANG_GNOME BV10 #define LANG_GOBLIN BV11 #define LANG_HALFLING BV12 #define LANG_IGNAN BV13 #define LANG_INFERNAL BV14 #define LANG_ORCISH BV15 #define LANG_SYLVAN BV16 #define LANG_TERRAN BV17 #define LANG_UNDERCOMMON BV18 #define LANG_DRACONIC BV19 #define LANG_DRUIDIC BV20 #define LANG_THIEVESCANT BV21 #define LANG_ANIMAL 0 /* legacy bitvector names for compatibility */ #define ACT_IS_NPC 0 #define ACT_PRACTICE 0 /* Can practice PC's - replaced with ACT_TRAIN */ #define ACT_STAY_SECTOR BV07 #define ACT_NONE 0 #define ACT_STAY_AREA BV01 /* Stays in the Area it resets */ #define ACT_SENTINEL BV02 /* Stays in one room */ #define ACT_SCAVENGER BV03 /* Picks up objects */ #define ACT_DRUNK BV04 /* is drunk and talks so */ #define ACT_SUMMONED BV05 /* summoned by spell, dispelable, held by prot */ #define ACT_AGGRESSIVE BV06 /* Attacks and hunts PC's */ #define ACT_NOWANDER BV07 /* Stays in same sector type */ #define ACT_WIMPY BV08 /* Flees when hurt */ #define ACT_PET BV09 /* Auto set for pets */ #define ACT_TRAIN BV10 /* Can train PC's */ #define ACT_BANK BV11 /* Mobile is a banker */ #define ACT_WEAK BV12 /* Cannot carry anything */ #define ACT_SECRETIVE BV13 /* Does not echo actions */ #define ACT_NOCORPSE BV14 /* Disappears after fight */ #define ACT_DAY BV15 /* Mobile only repops in daytime */ // Thanks to Rhythmic for the idea - Kregor #define ACT_NIGHT BV16 /* Mobile only repops at night */ // Thanks to Rhythmic for the idea - Kregor #define ACT_COMPANION BV17 /* Animal Companion */ #define ACT_AVAILABLE1 BV18 #define ACT_IS_HEALER BV19 /* Sells healing services */ #define ACT_WILL_DIE BV20 /* Purely Internal */ #define ACT_NOFIGHT BV21 /* Doesn't attack */ #define ACT_AVAILABLE2 BV22 #define ACT_GUARD BV23 /* Carries out guard functions */ #define ACT_FAMILIAR BV24 /* is a familiar, and conveys benefits */ #define ACT_AVAILABLE3 BV25 #define ACT_SUBDUAL BV26 /* Does subdual damage instead of lethal */ #define ACT_CITIZEN BV27 /* Is a citizen of the are, affects legal status in area - MUST CODE */ #define ACT_NOASSIST BV28 /* Will not autoassist others */ #define ACT_REQUEST BV29 /* Will honor the REQUEST command */ #define ACT_MOBINVIS BV30 /* is invisible to mortals like AFF_ETHEREAL */ #define ACT_WARHORSE BV31 /* Paladin's mount */ #define AFF_NONE 0 #define AFF_BLIND BV01 #define AFF_CURSE BV02 #define AFF_DEAF BV03 #define AFF_DETECT_HIDDEN BV04 #define AFF_DETECT_INVIS BV05 #define AFF_DETECT_TRAPS BV06 #define AFF_DOMINATE BV07 #define AFF_FEATHER_FALL BV08 #define AFF_FLYING BV09 #define AFF_FREEDOM BV10 #define AFF_GASEOUS BV11 #define AFF_HASTE BV12 #define AFF_HIDE BV13 #define AFF_HOODED BV14 #define AFF_IMMUNE_SPELL BV15 #define AFF_INVISIBLE BV16 #define AFF_MIND_BLANK BV17 #define AFF_NONDETECTION BV18 #define AFF_POISON BV19 #define AFF_SANCTUARY BV20 #define AFF_SEE_DARKNESS BV21 #define AFF_SLEEP BV22 #define AFF_SNEAK BV23 #define AFF_SUSTAIN BV24 #define AFF_TELEPATHY BV25 #define AFF_TONGUES BV26 #define AFF_TRUESIGHT BV27 #define AFF_UNDERSTAND BV28 #define AFF_WATER_BREATH BV29 #define AFF_WATER_WALK BV30 #define AFF_ETHEREAL BV31 #define AFF2_ASTRAL -BV01 #define AFF2_BERSERK -BV02 #define AFF2_BLEEDING -BV03 #define AFF2_CALMED -BV04 #define AFF2_CAMPING -BV05 #define AFF2_CONFUSION -BV06 #define AFF2_DAZED -BV07 #define AFF2_DAZZLED -BV08 #define AFF2_ENTANGLED -BV09 #define AFF2_ETHEREAL -BV10 #define AFF2_EXHAUSTED -BV11 #define AFF2_FALLING -BV12 #define AFF2_FASCINATED -BV13 #define AFF2_FATIGUED -BV14 #define AFF2_FEAR -BV15 #define AFF2_HALLUCINATE -BV16 #define AFF2_LONGTERM_CARE -BV17 #define AFF2_NAUSEATED -BV18 #define AFF2_PARALYSIS -BV19 #define AFF2_PETRIFICATION -BV20 #define AFF2_POSSESS -BV21 #define AFF2_SICKENED -BV22 #define AFF2_SILENCE -BV23 #define AFF2_STAGGERED -BV24 #define AFF2_STUNNED -BV25 #define AFF2_UNCONSCIOUS -BV26 #define AFF2_CHARMED -BV27 #define AFF2_DROWNING -BV28 #define AFF2_TIED_UP -BV29 #define AFF2_AVAIL2 -BV30 #define AFF2_AVAIL3 -BV31 /* physical damage - D20 */ #define DAM_NONE 0 #define DAM_PIERCE BV01 #define DAM_SLASH BV02 #define DAM_BASH BV03 #define DAM_MAGICAL BV04 #define DAM_GOOD BV05 #define DAM_EVIL BV06 #define DAM_LAWFUL BV07 #define DAM_CHAOTIC BV08 #define DAM_IRON BV09 #define DAM_SILVER BV10 #define DAM_ADAMANTINE BV11 #define MAX_PHYSICAL 11 /* nonlethal damage - D20 */ #define DAM_NONLETHAL BV12 /* energy damage - D20 */ #define MIN_ENERGY 12 #define DAM_ACID BV13 #define DAM_COLD BV14 #define DAM_ELECTRIC BV15 #define DAM_FIRE BV16 #define DAM_SONIC BV17 #define DAM_DIVINE BV18 #define DAM_FORCE BV19 #define MAX_ENERGY 19 #define DAM_MAX 19 #define DAM_PHYSICAL DAM_PIERCE|DAM_SLASH|DAM_BASH|DAM_MAGICAL|DAM_GOOD|DAM_EVIL|DAM_LAWFUL|DAM_CHAOTIC|DAM_IRON|DAM_SILVER|DAM_ADAMANTINE #define DAM_ENERGY DAM_ACID|DAM_COLD|DAM_ELECTRIC|DAM_FIRE|DAM_SONIC|DAM_DIVINE|DAM_FORCE /* Damage type flags */ typedef enum { DAM_TYPE_NONE = 0, DAM_TYPE_PIERCE, DAM_TYPE_SLASH, DAM_TYPE_BASH, DAM_TYPE_MAGICAL, DAM_TYPE_GOOD, DAM_TYPE_EVIL, DAM_TYPE_LAWFUL, DAM_TYPE_CHAOTIC, DAM_TYPE_IRON, DAM_TYPE_SILVER, DAM_TYPE_ADAMANTINE, DAM_TYPE_NONLETHAL, DAM_TYPE_ACID, DAM_TYPE_COLD, DAM_TYPE_ELECTRIC, DAM_TYPE_FIRE, DAM_TYPE_SONIC, DAM_TYPE_DIVINE, DAM_TYPE_FORCE, DAM_TYPE_MAX } dam_type_flags; /* spell descriptors - D20 */ #define SDESC_NONE 0 #define SDESC_ACID BV01 #define SDESC_AIR BV02 #define SDESC_CHAOTIC BV03 #define SDESC_CHARM BV04 #define SDESC_COLD BV05 #define SDESC_COMPULSION BV06 #define SDESC_DARKNESS BV07 #define SDESC_DEATH BV08 #define SDESC_DISEASE BV09 #define SDESC_EARTH BV10 #define SDESC_ELECTRIC BV11 #define SDESC_EVIL BV12 #define SDESC_FEAR BV13 #define SDESC_FIRE BV14 #define SDESC_FORCE BV15 #define SDESC_GOOD BV16 #define SDESC_HEALING BV17 #define SDESC_ILLUSION BV18 #define SDESC_LAWFUL BV19 #define SDESC_LIGHT BV20 #define SDESC_MAGIC BV21 #define SDESC_MIND BV22 #define SDESC_NEGATIVE BV23 #define SDESC_PARALYSIS BV24 #define SDESC_PETRI BV25 #define SDESC_POISON BV26 #define SDESC_SONIC BV27 #define SDESC_SLEEP BV28 #define SDESC_WATER BV29 #define SDESC_POLYMORPH BV30 #define SDESC_SUMMONING BV31 #define SDESC_MAX 31 #define ACTION_FREE 0 #define ACTION_SWIFT BV01 #define ACTION_MOVE BV02 #define ACTION_STANDARD BV03 #define ACTION_FULL BV02|BV03 /* * Attack flags govern how many ch gets in a round * and what gets modified based on these actions */ #define ATTACK_DISARM BV01 #define ATTACK_TRIP BV02 #define ATTACK_WHIRL BV03 #define ATTACK_STUNNING_FIST BV04 #define ATTACK_SHIELD_BASH BV05 #define ATTACK_CHARGE BV06 #define ATTACK_MIRROR BV07 #define ATTACK_TRAMPLE BV08 #define ATTACK_OPPORTUNITY BV08 #define ATTACK_CLEAVE BV10 #define ATTACK_RIPOSTE BV11 #define ATTACK_DEFLECT BV12 #define ATTACK_MELEE BV13 #define ATTACK_CAST BV14 #define ATTACK_SUNDER BV15 #define ATTACK_PARRY BV16 #define ATTACK_DEF_ROLL BV17 #define ATTACK_DELAY BV18 #define ATTACK_SHOOT BV19 #define SEX_NEUTRAL 0 #define SEX_MALE 1 #define SEX_FEMALE 2 #define OBJ_VNUM_MONEY_ONE 2 #define OBJ_VNUM_MONEY_SOME 3 #define OBJ_VNUM_TOTEM 4 #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_MUSHROOM 20 #define OBJ_VNUM_LIGHT_BALL 21 #define OBJ_VNUM_SPRING 22 #define OBJ_VNUM_GATE 23 #define OBJ_VNUM_ICE_ARROW 24 #define OBJ_VNUM_BOUNTY_HEAD 25 #define OBJ_VNUM_SLICE 26 #define OBJ_VNUM_SKIN 27 #define OBJ_VNUM_FIRE 31 #define OBJ_VNUM_FISHCATCH 32 #define OBJ_VNUM_CRAFT 34 #define OBJ_VNUM_ARMOR 35 #define OBJ_VNUM_WEAPON 36 #define OBJ_VNUM_AMMO 37 #define OBJ_VNUM_SPELLBOOK 50 #define OBJ_VNUM_CLERIC_WEAPON 51 #define OBJ_VNUM_STARTING_ARMOR 52 #define OBJ_VNUM_STARTING_HELM 56 typedef enum { TOOL_NONE = 0, TOOL_ALCHEMY_KIT, TOOL_CLIMBERS_KIT, TOOL_DISGUISE_KIT, TOOL_FIRSTAID_KIT, TOOL_JEWELERS_TOOLS, TOOL_MAGNIFYING_GLASS, TOOL_MINERS_PICK, TOOL_MERCHANTS_SCALE, TOOL_PEN, TOOL_ROPE, TOOL_SHOVEL, TOOL_SMITH_TOOLS, TOOL_SURVIVAL_TOOLS, TOOL_TANNING_TOOLS, TOOL_THIEVES_TOOLS, TOOL_WOODWORKERS_TOOLS, TOOL_SEAL, TOOL_FISHING_POLE, TOOL_TAILORS_TOOLS, TOOL_ANVIL, TOOL_FURNACE, TOOL_LATHE, TOOL_COOKING_POT, TOOL_TINDER, TOOL_SHACKLES } tool_flags; typedef enum { ITEM_NOTHING = 0, ITEM_LIGHT, ITEM_SCROLL, ITEM_WAND, ITEM_STAFF, ITEM_WEAPON, ITEM_SYMBOL, ITEM_SPELLBOOK, ITEM_TREASURE, ITEM_ARMOR, ITEM_POTION, ITEM_SPELLPOUCH, ITEM_FURNITURE, ITEM_TRASH, ITEM_SHEATH, ITEM_CONTAINER, ITEM_QUIVER, ITEM_DRINK_CON, ITEM_KEY, ITEM_FOOD, ITEM_MONEY, ITEM_COMPONENT, ITEM_BOAT, ITEM_CORPSE_NPC, ITEM_CORPSE_PC, ITEM_FOUNTAIN, ITEM_PILL, ITEM_PORTAL, ITEM_WINDOW, ITEM_TOOLS, ITEM_AMMO, ITEM_TOTEM, ITEM_CRAFT, ITEM_PIECE, ITEM_PAPER, ITEM_BOOK, ITEM_TRAP, ITEM_MAP, ITEM_FIRE, ITEM_CART } item_flags; /* SHOP flags - need to code for shop conditions */ #define SHOP_NONE 0 #define SHOP_IDENTIFY BV01 /* shop identifies items */ #define SHOP_TEMPLE BV02 /* only sells to faith members */ #define SHOP_CLAN_STORE BV03 /* only sells to clan members */ #define SHOP_BANK BV04 /* offers banking services */ #define SHOP_AVAIL5 BV05 #define ITEM_NONE 0 #define ITEM_GLOW BV01 /* Item glows */ #define ITEM_RESIZE BV02 /* Item resizes to first person to wear it */ #define ITEM_LOYAL BV03 /* Item does not fall when disarmed */ #define ITEM_AVAILABLE1 BV04 #define ITEM_INVIS BV05 /* Item is invisible */ #define ITEM_MAGIC BV06 /* Item is magic, has magial aura */ #define ITEM_NODROP BV07 /* Cannot be dropped, for plot items and hi level eq */ #define ITEM_AVAILABLE2 BV08 #define ITEM_EVIL BV09 /* Zaps good chars */ #define ITEM_GOOD BV10 /* Zaps evil chars */ #define ITEM_NEUTRAL BV11 /* Zaps evil/good chars */ #define ITEM_CHAOTIC BV12 /* Zaps lawful chars */ #define ITEM_LAWFUL BV13 /* zaps chaotic chars */ #define ITEM_UNCONCERNED BV14 /* zaps lawful/chaotic chars */ #define ITEM_NOREMOVE BV15 /* Can't be removed, cursed */ #define ITEM_INVENTORY BV16 /* Stays in PCs inventory, even when dead */ #define ITEM_BURNING BV17 /* Sheds light, adds fire damage to hit */ #define ITEM_NOT_VALID BV18 /* internal use only */ #define ITEM_AUTO_ENGRAVE BV19 /* item auto tags itself to wearer */ #define ITEM_NO_RAISE BV20 /* system use for badly mangled or death effect corpses */ #define ITEM_ETHEREAL BV21 /* cannot be seen by mortals */ #define ITEM_MODIFIED BV22 /* internal use for spells and renames */ #define ITEM_HIDDEN BV23 /* Item is hidden in room */ #define ITEM_MASTERWORK BV24 /* masterwork item */ #define ITEM_NOSCRY BV25 /* cannot be scried with spells */ #define ITEM_CONCEALED BV26 /* concealed on a PCs person */ #define ITEM_BROKEN BV27 /* item is broken and cannot be used unless repaired */ #define ITEM_BURIED BV28 /* buried underground - MUST CODE */ #define ITEM_TRANSPARENT BV29 /* items under this one can be seen on same wear loc */ /* * Weapon Flags, per D20 Weapon Abilities * Place on value[1] of weapon - Kregor 7/7/07 */ #define WFLAG_NONE 0 #define WFLAG_ANARCHIC BV01 /* +dmg lawful 2d6, negative level if lawful wields CODED */ #define WFLAG_AXIOMATIC BV02 /* +dmg chaotic 2d6, negative level if lawful wields CODED*/ #define WFLAG_BANE BV03 /* set race on value[2] +dmg 2d6 CODED */ #define WFLAG_DISRUPTION BV05 /* Undead will save vs. 14 or destroyed CODED*/ #define WFLAG_DISTANCE BV06 /* double range missile weapon CODED*/ #define WFLAG_FLAMING BV07 /* +1d6 fire damage CODED*/ #define WFLAG_FLAMING_BURST BV08 /* +1d6 * crit mod fire damage CODED*/ #define WFLAG_FROST BV09 /* +1d6 cold damage CODED*/ #define WFLAG_GHOST_TOUCH BV10 /* can hit incorporeal creatures CODED*/ #define WFLAG_HOLY BV11 /* +dmg evil 2d6, negative level if evil wields CODED*/ #define WFLAG_ICY_BURST BV12 /* +1d6 * crit mod cold damage CODED*/ #define WFLAG_KEEN BV13 /* double threat range of weapon CODED*/ #define WFLAG_KI_FOCUS BV14 /* use monk ki strike with weapon CODED*/ #define WFLAG_MERCIFUL BV15 /* all dmg is nonlethal w/o penalty + 1d6 damage CODED*/ #define WFLAG_RETURNING BV16 /* weapon returns after thrown on next round CODED*/ #define WFLAG_SEEKING BV17 /* strike unerringly at target CODED*/ #define WFLAG_SHOCK BV18 /* +1d6 electric damage CODED*/ #define WFLAG_SHOCK_BURST BV19 /* +1d6 * crit mod elec damage CODED*/ #define WFLAG_SPEED BV20 /* extra attack in lieu of haste CODED*/ #define WFLAG_SPELL_STORING BV21 /* casts spell up to level 3 stored in value[2] with value [3] caster level CODED*/ #define WFLAG_THUNDERING BV22 /* +1d8 * crit mod sonic dmg on crit hit CODED*/ #define WFLAG_THROWING BV23 /* Can throw otherwise unthrowable weapon CODED*/ #define WFLAG_UNHOLY BV24 /* +dmg good 2d6, neg level evil wielder CODED*/ #define WFLAG_VENOMOUS BV25 /* AFF_POISON upon hit */ #define WFLAG_VICIOUS BV26 /* +2d6 damage target, 1d6 damage wielder CODED*/ #define WFLAG_VAMPIRIC BV27 /* heals up to value[2] of target damage to wielder CODED*/ #define WFLAG_VORPAL BV28 /* beheads target on crit hit (dead!) CODED*/ #define WFLAG_WOUNDING BV29 /* causes bleeding wound on crit hit CODED*/ #define WFLAG_SLAYING BV30 /* victim->race matches value[2], save or die */ #define WFLAG_CAUSTIC BV31 /* +1d6 acid damage CODED */ #define WFLAG_MAX 31 /* * Armour flags, per D20 armor qualities armor value[1] * Most other qualities are accomplished through applies. - Kregor 10/5/07 */ #define ARMORFLAG_NONE 0 #define ARMORFLAG_ARROW_DEFLECTION BV01 /* deflects arrows like arrow deflection */ #define ARMORFLAG_BASHING BV02 /* does additional bash damage, +1 hit dam */ #define ARMORFLAG_GHOST_TOUCH BV03 /* protects against incorporeal attacks */ #define ARMORFLAG_REFLECTING BV04 /* reflects like spell turning, value[2] = charges = spell levels reflected*/ #define ARMORFLAG_WILD BV05 /* retains bonuses with shapechanged */ #define ARMORFLAG_HOODED BV06 /* CODED!*/ /* armor piece has a hood (cloaks, robes, etc) */ #define ARMORFLAG_MAX 6 /* * Treasure flags, for wondrous items/rings etc. * must be set on type TREASURE value[0] - Kregor 10/5/07 */ #define TFLAG_NONE 0 #define TFLAG_SPELL_STORING BV01 /* CODED!*/ /* stores value[1], value[2] and value[3] as spells */ #define TFLAG_COUNTERSPELL BV02 /* CODED!*/ /* store value[1], counters same spell and discharges */ #define TFLAG_SPELL_RECAST BV03 /* CODED!*/ /* casts spell on value[3] up to value[1] times per day, tracked with value[2] */ #define TFLAG_SPELL_CHARGES BV04 /* CODED!*/ /* holds value[2] of value[1] charges of value[3] spell */ #define TFLAG_ABSORPTION BV05 /* absorbs value[2] mana to value[1] limit, applies to holder's points */ /* All new trap stuff */ typedef enum { TRAP_TYPE_UNKNOWN = 0, TRAP_TYPE_SLEEP, /* sleep trap */ TRAP_TYPE_SPELL, /* effect spell of value X on victim(s) */ TRAP_TYPE_FIRE, /* value 4 d6 fire damage */ TRAP_TYPE_COLD, /* value 4 d6 cold damage */ TRAP_TYPE_ACID, /* value 4 d6 acid damage */ TRAP_TYPE_ELECTRIC, /* value 4 d6 electric damage */ TRAP_TYPE_BLUNT, /* value 4 d6 bashing damage */ TRAP_TYPE_PIERCE, /* value 4 d6 piercing damage */ TRAP_TYPE_SLASH, /* value 4 d6 slashing damage */ TRAP_TYPE_RANGED, /* value 4 d6 ranged pierce damage */ TRAP_TYPE_MLOAD, /* loads mobile of value 4 in room */ TRAP_TYPE_OLOAD, /* loads object of value 4 in room */ TRAP_TYPE_POISON, /* poisons victim with value 4 poison type */ TRAP_TYPE_TELEPORT, /* teleport to value 4 room vnum or random */ TRAP_TYPE_MPROG /* triggers a mobprog coded on trap */ } trap_flags; #define TRAP_TRIG_MOVE BV01 /* trigger on movement */ #define TRAP_TRIG_MOVE_NORTH BV02 /* movement in this direction */ #define TRAP_TRIG_MOVE_EAST BV03 #define TRAP_TRIG_MOVE_SOUTH BV04 #define TRAP_TRIG_MOVE_WEST BV05 #define TRAP_TRIG_MOVE_UP BV06 #define TRAP_TRIG_MOVE_DOWN BV07 #define TRAP_TRIG_OPEN_NORTH BV08 /* open door in this direction */ #define TRAP_TRIG_OPEN_EAST BV09 #define TRAP_TRIG_OPEN_SOUTH BV10 #define TRAP_TRIG_OPEN_WEST BV11 #define TRAP_TRIG_OPEN_UP BV12 #define TRAP_TRIG_OPEN_DOWN BV13 #define TRAP_TRIG_OPEN_OBJ BV14 /* trigger on open obj */ #define TRAP_TRIG_GET_PUT BV15 /* trigger on get or put obj */ #define TRAP_TRIG_ROOMAFFECT BV16 /* affect all in room */ #define TRAP_TRIG_MAGIC BV17 /* magical trigger */ #define TRAP_RESET_NONE 0 /* set decay timer after trigger */ #define TRAP_RESET_MANUAL 1 /* reset using settrap reset */ #define TRAP_RESET_AUTO 2 /* resets automatically in resets */ #define TRAP_UNARMED 0 /* trap is not set */ #define TRAP_ARMED 1 /* trap is set */ #define CAN_WEAR_TAKE BV01 #define CAN_WEAR_FLOAT BV02 #define CAN_WEAR_HEAD BV03 #define CAN_WEAR_FACE BV04 #define CAN_WEAR_EARS BV05 #define CAN_WEAR_NECK BV06 #define CAN_WEAR_ARMS BV07 #define CAN_WEAR_WRIST BV08 #define CAN_WEAR_HANDS BV09 #define CAN_WEAR_FINGER BV10 #define CAN_WEAR_BODY BV11 #define CAN_WEAR_ABOUT BV12 #define CAN_WEAR_BACK BV13 #define CAN_WEAR_WAIST BV14 #define CAN_WEAR_BELT BV15 #define CAN_WEAR_LEGS BV16 #define CAN_WEAR_ANKLE BV17 #define CAN_WEAR_FEET BV18 #define CAN_WEAR_SHIELD BV19 #define CAN_WEAR_WIELD BV20 #define CAN_WEAR_BOTH BV21 #define CAN_WEAR_HOLD BV22 #define CAN_WEAR_SADDLE BV23 typedef enum { WEAR_NONE = 0, WEAR_FLOAT, WEAR_HEAD, WEAR_FACE, WEAR_EARS, WEAR_NECK_1, WEAR_NECK_2, WEAR_ARMS, WEAR_WRIST_L, WEAR_WRIST_R, WEAR_HANDS, WEAR_FINGER_L, WEAR_FINGER_R, WEAR_ABOUT, WEAR_BODY, WEAR_SADDLE, WEAR_BACK, WEAR_WAIST, WEAR_BELT_1, WEAR_BELT_2, WEAR_BELT_3, WEAR_LEGS, WEAR_ANKLE_L, WEAR_ANKLE_R, WEAR_FEET, WEAR_SHIELD, WEAR_WIELD, WEAR_DUAL_WIELD, WEAR_BOTH_HANDS, WEAR_HOLD, MAX_WEAR } wear_loc_flags; typedef enum { LAYER_NONE = 0, LAYER_UNDER, LAYER_CLOTHES, LAYER_OVERCLOTHES, LAYER_ARMOR, LAYER_OVER, LAYER_MAX } armor_layers; typedef enum { MATERIAL_UNKNOWN = 0, MATERIAL_HARDWOOD, MATERIAL_SOFTWOOD, MATERIAL_DARKWOOD, MATERIAL_OAK, MATERIAL_YEW, MATERIAL_EBONY, MATERIAL_IRONWOOD, MATERIAL_CLOTH, MATERIAL_SILK, MATERIAL_WOOL, MATERIAL_FUR, MATERIAL_LEATHER, MATERIAL_HIDE, MATERIAL_DRAGONHIDE, MATERIAL_STEEL, MATERIAL_TIN, MATERIAL_LEAD, MATERIAL_BRONZE, MATERIAL_COPPER, MATERIAL_GOLD, MATERIAL_SILVER, MATERIAL_PLATINUM, MATERIAL_COLD_IRON, MATERIAL_MITHRAL, MATERIAL_ADAMANTINE, MATERIAL_DIAMOND, MATERIAL_PEARL, MATERIAL_GEM, MATERIAL_RUBY, MATERIAL_OBSIDIAN, MATERIAL_IVORY, MATERIAL_EMERALD, MATERIAL_SAPPHIRE, MATERIAL_MARBLE, MATERIAL_STONE, MATERIAL_ENERGY, MATERIAL_PAPER, MATERIAL_PLANT, MATERIAL_GLASS, MATERIAL_BONE, MATERIAL_POWDER, MATERIAL_OIL, MATERIAL_ICE, MATERIAL_FLESH, MATERIAL_WATER, MATERIAL_MAX } item_materials; typedef enum { MATERIAL_TYPE_NONE = 0, MATERIAL_TYPE_WOOD, MATERIAL_TYPE_CLOTH, MATERIAL_TYPE_HIDE, MATERIAL_TYPE_METAL, MATERIAL_TYPE_GEM, MATERIAL_TYPE_ROCK, MATERIAL_TYPE_FIBER, MATERIAL_TYPE_CRYSTAL, MATERIAL_TYPE_FLESH, MATERIAL_TYPE_LIQUID } parent_materials; typedef enum { COMP_NONE = 0, COMP_ADDERS_TONGUE, COMP_BAT_GUANO, COMP_DIAMOND_LARGE, //25,000gp COMP_DIAMOND_MEDIUM, //10,000gp COMP_DIAMOND_SMALL, //5,000gp COMP_DIRT, COMP_FEATHERS, COMP_BRANCH, COMP_ARROWHEAD, COMP_FUR, COMP_NUT_SHELLS, COMP_SAND, COMP_SULPHUR, COMP_CHARCOAL, COMP_METAL_ORE, COMP_METAL_INGOT } component_types; typedef enum { AFFECT_TO_NONE = 0, AFFECT_TO_CHAR, AFFECT_TO_OBJ } aff_bittypes; #define SENSE_SIGHT 1 #define SENSE_SMELL 2 #define SENSE_SOUND 3 #define SENSE_TASTE 4 #define SENSE_TOUCH 5 #define DRUNK_SOBER 0 #define DRUNK_TIPSY 1 #define DRUNK_MERRY 2 #define DRUNK_DRUNK 3 #define DRUNK_HAMMERED 4 #define DRUNK_PLASTERED 5 #define DRUNK_TOTALLED 6 /* Determine which BAB/SAVE progression to use - Kregor 11/26/06 */ #define BAB_POOR 1 #define BAB_GOOD 2 #define BAB_BEST 3 #define SAVE_LOW 4 #define SAVE_MED 5 #define SAVE_HIGH 6 #define BAB_EPIC 7 /* Determine which mana table to use - Kregor 11/31/06 */ #define MANA_NONE 0 #define MANA_BARD 1 #define MANA_WIZ_PRIEST 2 #define MANA_WARRIOR 3 #define MANA_SORCERER 4 #define MANA_PRESTIGE 5 #define MANA_PRESTIGE_ARC 6 #define MANA_PRESTIGE_DIV 7 #define MANA_PRESTIGE_EITHER 8 #define MANA_PRESTIGE_BOTH 9 #define MANA_PREST_ARC_HALF 10 #define MANA_PREST_DIV_HALF 11 /* weapon proficiency flags - set in learned[weaponskill] */ #define WSKILL_PROFICIENT BV01 #define WSKILL_FOCUS BV02 #define WSKILL_GREATER_FOCUS BV03 #define WSKILL_EPIC_FOCUS BV04 #define WSKILL_SPECIALIZED BV05 #define WSKILL_GREATER_SPEC BV06 #define WSKILL_EPIC_SPEC BV07 #define WSKILL_IMP_CRITICAL BV08 #define WSKILL_PWR_CRITICAL BV09 #define WSKILL_DVS_CRITICAL BV10 #define DR_OR 0 #define DR_AND 1 /* * Whether a scribed scroll is arcane or divine, on value[2] */ #define SCROLL_ARCANE 0 #define SCROLL_DIVINE 1 /* ITEM_CONTAINER value[1] */ #define CONT_NONE 0 #define CONT_CLOSEABLE BV01 #define CONT_PICKPROOF BV02 #define CONT_CLOSED BV03 #define CONT_LOCKED BV04 #define CONT_MAGICAL_LOCK BV05 #define CONT_BASHPROOF BV06 #define CONT_WEAK BV07 #define CONT_STRONG BV08 #define CONT_EASY_PICK BV09 #define CONT_HARD_PICK BV10 #define CONT_AMAZING_PICK BV11 #define CONT_HOLDING BV12 #define CONT_KNOCKED BV13 /* ITEM_PORTAL value[2] */ #define PORTAL_RANDOM BV01 #define PORTAL_GOWITH BV02 #define PORTAL_NOFLEE BV03 /* Uncoded untill today */ #define PORTAL_STEP_THROUGH BV04 #define PORTAL_STEP_INTO BV05 #define PORTAL_RANDOM_AREA BV06 #define PORTAL_CLOSEABLE BV07 #define PORTAL_CLOSED BV08 #define PORTAL_LOCKED BV08 #define PORTAL_NO_ENTER BV09 #define PORTAL_PICKPROOF BV10 #define PORTAL_EASY_PICK BV11 #define PORTAL_HARD_PICK BV12 #define PORTAL_AMAZING_PICK BV13 #define PORTAL_KNOCKED BV14 /* ITEM_FURNITURE value[2] */ #define FURN_SLEEP_IN BV01 #define FURN_SLEEP_ON BV02 #define FURN_REST_IN BV03 #define FURN_REST_ON BV04 #define FURN_SIT_IN BV05 #define FURN_SIT_ON BV06 #define FURN_SIT_AT BV07 #define FURN_STAND_IN BV08 #define FURN_STAND_ON BV09 #define FURN_KNEEL_AT BV10 #define FURN_PLACE_ON BV11 #define FURN_COVER_10 BV12 #define FURN_COVER_25 BV13 #define FURN_COVER_50 BV14 #define FURN_COVER_TOTAL BV15 #define ROOM_VNUM_LIMBO 2 #define ROOM_VNUM_JUNK 3 #define ROOM_VNUM_TOTEM 4 #define ROOM_VNUM_DEATH 5 #define ROOM_VNUM_SKILLS 10 #define ROOM_VNUM_FEATS 11 #define ROOM_VNUM_DOMAINS 12 #define ROOM_VNUM_HOLDING 99 #define ROOM_VNUM_SCHOOL 3700 #define ROOM_VNUM_TEMPLE 9755 #define ROOM_VNUM_ARENA 10500 #define ROOM_VNUM_ABYSS 12000 #define ROOM_VNUM_CLANHALLS 90000 #define ROOM_VNUM_RIFT 70000 #define ROOM_VNUM_WILDERNESS 99000 #define ROOM_VNUM_HOUSING 990000 /* deprecated room flags */ #define ROOM_BANK 0 #define ROOM_CLAN_DONATION BV07 #define ROOM_ALTAR 0 #define ROOM_NONE 0 #define ROOM_DARK BV01 #define ROOM_FOG BV02 #define ROOM_NO_MOB BV03 #define ROOM_INDOORS BV04 #define ROOM_BLACKLIGHT BV05 #define ROOM_NO_ASTRAL BV06 #define ROOM_CLANSTOREROOM BV07 #define ROOM_SWARM BV08 #define ROOM_NO_MAGIC BV09 #define ROOM_PRIVATE BV10 #define ROOM_SAFE BV11 #define ROOM_SOLITARY BV12 #define ROOM_PET_SHOP BV13 #define ROOM_NO_RECALL BV14 #define ROOM_RIP BV15 #define ROOM_BLOCK BV16 #define ROOM_NO_SAVE BV17 #define ROOM_MORGUE BV18 #define ROOM_INN BV19 #define ROOM_NOFLOOR BV20 #define ROOM_NOSCRY BV21 #define ROOM_NO_COVER BV22 #define ROOM_ENTANGLE BV23 #define ROOM_DAYLIGHT BV24 #define ROOM_LIGHT BV25 #define ROOM_NO_AIR BV26 #define ROOM_CLANHALL BV27 #define ROOM_AUDIENCE BV28 #define ROOM_NOTE_BOARD BV29 #define ROOM_AVAILABLE1 BV30 #define ROOM_NO_RIP BV31 #define ROOM_MAZE BV32 #define ROOM_ICE BV33 #define ROOM_DYNAMIC BV34 #define ROOM_WILDERNESS BV35 #define ROOM_HASH BV36 #define ROOM_NOT_VALID BV37 typedef enum { DIR_NORTH = 0, DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_UP, DIR_DOWN } dir_bits; typedef enum { SPEED_HALF = 0, SPEED_NORMAL, SPEED_HUSTLE, SPEED_RUN, SPEED_HASTE, SPEED_BLAZE } move_speed_flags; #define EX_NONE 0 #define EX_ISDOOR BV01 #define EX_CLOSED BV02 #define EX_LOCKED BV03 #define EX_HIDDEN BV04 #define EX_RIP BV05 #define EX_PICKPROOF BV06 #define EX_BASHPROOF BV07 #define EX_MAGICPROOF BV08 #define EX_BASHED BV09 #define EX_CLIMB BV10 #define EX_FLY BV11 #define EX_BARRED BV12 #define EX_PASSPROOF BV13 #define EX_MAGICAL_LOCK BV14 #define EX_EASY_PICK BV15 #define EX_HARD_PICK BV16 #define EX_AMAZING_PICK BV17 #define EX_WEAK_DOOR BV18 #define EX_HEAVY_DOOR BV19 #define EX_IRON_DOOR BV20 #define EX_JUMP BV21 #define EX_KNOCKED BV22 #define EX_WINDOW BV23 typedef enum { SECT_INSIDE = 0, SECT_CITY, SECT_FIELD, SECT_FOREST, SECT_HILLS, SECT_MOUNTAIN, SECT_LAKE, SECT_RIVER, SECT_OCEAN, SECT_AIR, SECT_DESERT, SECT_LAVA, SECT_ETHEREAL, SECT_ASTRAL, SECT_UNDER_WATER, SECT_UNDER_GROUND, SECT_DEEP_EARTH, SECT_ROAD, SECT_SWAMP, SECT_BEACH, SECT_TUNDRA, SECT_BARREN, SECT_MAX } sect_flags; #define COND_DRUNK 0 #define COND_FULL 1 #define COND_THIRST 2 #define COND_AIR 3 typedef enum { POS_DEAD = 0, POS_MORTAL, POS_INCAP, POS_STUNNED, POS_SLEEPING, POS_RESTING, POS_SITTING, POS_KNEELING, POS_CROUCHING, POS_FIGHTING, POS_STANDING } position_flags; typedef enum { ENCUMBERED = 1, VERY_ENCUMBERED, OVERLOADED } encumberance_flags; #define ACCT_DENIED BV01 #define PVNUM_SILENCED BV01 #define PVNUM_DENIED BV02 #define PVNUM_MUTED BV03 #define PVNUM_FROZEN BV04 #define PVNUM_LOGGED BV05 #define PVNUM_ARRESTED BV06 #define PVNUM_DELETED BV07 #define PVNUM_AUTH_NAME BV09 /* Name must be authed */ #define PVNUM_AUTH_ADJ BV10 /* Adjective must be authed */ #define PVNUM_AUTH_DESC BV11 /* Desc must be authed */ #define PVNUM_CHNG_NAME BV12 /* Name must be changed */ #define PVNUM_CHNG_ADJ BV13 /* Adjective must be changed */ #define PVNUM_CHNG_DESC BV14 /* Desc must be changed */ #define PVNUM_UNAUTHED PVNUM_AUTH_NAME|PVNUM_AUTH_ADJ|PVNUM_AUTH_DESC|PVNUM_CHNG_NAME|PVNUM_CHNG_ADJ|PVNUM_CHNG_DESC #define PLR_SEARCH BV01 /* Allows self to be searched */ #define PLR_EXP_TO_LEVEL BV03 #define PLR_AUTOEXIT BV04 #define PLR_DEAD BV05 /* Dead and in limbo */ #define PLR_BUILDWALK BV06 /* Walk a direction to create a room. */ #define PLR_BLANK BV07 #define PLR_BRIEF BV08 #define PLR_REPEAT BV09 #define PLR_SOULBIND BV10 /* Affected by Soul Bind */ #define PLR_HOLYLIGHT BV13 #define PLR_WIZINVIS BV14 #define PLR_WIZTIME BV15 #define PLR_OUTCAST BV17 #define PLR_WIZCLOAK BV19 #define PLR_THIEF BV23 #define PLR_KILLER BV24 #define PLR_DAMAGE BV25 #define PLR_AUTO_SPLIT BV26 #define PLR_QUIET BV27 #define PLR_PAGER BV28 #define PLR_AFK BV31 #define PLR_HEARLOG BV34 #define PLR_BUILDLIGHT BV35 #define SPAM_YOU_HIT BV01 #define SPAM_YOU_MISS BV02 #define SPAM_THEY_HIT BV03 #define SPAM_THEY_MISS BV04 #define SPAM_PARTY_HIT BV05 #define SPAM_PARTY_MISS BV06 #define SPAM_THEY_HIT_PARTY BV07 #define SPAM_THEY_MISS_PARTY BV08 #define SPAM_OTHER_HIT BV09 #define SPAM_OTHER_MISS BV10 #define SPAM_DICE_ROLLS BV11 #define SPAM_PARTY_MOVE BV12 #define SPAM_HEAR_UTTER BV13 /* Channel bits. */ #define CHANNEL_CHAT BV01 #define CHANNEL_FOS BV01 #define CHANNEL_ALERTS BV02 #define CHANNEL_IMMTALK BV03 #define CHANNEL_QUESTION BV04 #define CHANNEL_LOGSPEECH BV05 #define CHANNEL_PLAYER BV06 typedef enum { CLASS_MONSTER = 0, CLASS_BARBARIAN, CLASS_BARD, CLASS_CLERIC, CLASS_DRUID, CLASS_FIGHTER, CLASS_MONK, CLASS_PALADIN, CLASS_RANGER, CLASS_ROGUE, CLASS_SORCERER, CLASS_WIZARD, CLASS_ARCANE_ARCHER, CLASS_ARCANE_TRICKSTER, CLASS_ASSASSIN, CLASS_BLACKGUARD, CLASS_CHEVALIER, CLASS_DIVINE_CHAMPION, CLASS_DIVINE_TRICKSTER, CLASS_DUELIST, CLASS_DWARVEN_DEFENDER, CLASS_ELDRITCH_KNIGHT, CLASS_HALFLING_SLINGER, CLASS_LOREMASTER, CLASS_MYSTIC_THEURGE, CLASS_SHADOW_ADEPT, CLASS_SHADOWDANCER, CLASS_ADEPT, CLASS_NOBLE, CLASS_COMMONER, CLASS_EXPERT, CLASS_WARRIOR, MAX_CLASS } class_flags; #define MAX_CORE_CLASS 12 #define MAX_PRESTIGE_CLASS 22 typedef enum { RACE_NONE = 0, RACE_AASIMAR, RACE_ALLIP, RACE_ARANEA, RACE_DEVA, RACE_PLANETAR, RACE_SOLAR, RACE_ANIMATED_OBJ, RACE_ANKHEG, RACE_ARCHON_HOUND, RACE_ARCHON_LANTERN, RACE_ARCHON_TRUMPET, RACE_ARROWHAWK, RACE_BASILISK, RACE_BEHIR, RACE_BLINK_DOG, RACE_BODAK, RACE_BUGBEAR, RACE_BULLETTE, RACE_CATFOLK, RACE_CENTAUR, RACE_CHIMERA, RACE_CLOAKER, RACE_COCKATRICE, RACE_COUATL, RACE_BABAU, RACE_BALOR, RACE_BEBLITH, RACE_DRETCH, RACE_GLABREZU, RACE_HEZROU, RACE_MARILITH, RACE_NALFESHNEE, RACE_QUASIT, RACE_RETRIEVER, RACE_SUCCUBUS, RACE_VROCK, RACE_DERRO, RACE_HAMATULA, RACE_BARBAZU, RACE_OSYLUTH, RACE_KYTON, RACE_ERINYES, RACE_HELLCAT, RACE_CORNUGON, RACE_GELUGON, RACE_IMP, RACE_LEMURE, RACE_PIT_FIEND, RACE_DIRE_APE, RACE_DIRE_BADGER, RACE_DIRE_BAT, RACE_DIRE_BEAR, RACE_DIRE_BOAR, RACE_DIRE_LION, RACE_DIRE_RAT, RACE_DIRE_TIGER, RACE_DIRE_WEASEL, RACE_DIRE_WOLF, RACE_DRAGON, RACE_DRAGON_BLACK, RACE_DRAGON_BLUE, RACE_DRAGON_GREEN, RACE_DRAGON_RED, RACE_DRAGON_WHITE, RACE_DRAGON_BRASS, RACE_DRAGON_BRONZE, RACE_DRAGON_COPPER, RACE_DRAGON_GOLD, RACE_DRAGON_SILVER, RACE_DRAGONNE, RACE_DRIDER, RACE_DROW, RACE_DRYAD, RACE_DUERGAR, RACE_DWARF, RACE_EAGLE_GIANT, RACE_ELEMENTAL_AIR, RACE_ELEMENTAL_EARTH, RACE_ELEMENTAL_FIRE, RACE_ELEMENTAL_WATER, RACE_ELF, RACE_ELF_AQUATIC, RACE_ETTERCAP, RACE_ETTIN, RACE_FAERIE_DRAGON, RACE_GARGOYLE, RACE_DJINNI, RACE_EFREETI, RACE_JANNI, RACE_MARID, RACE_SHAITAN, RACE_GHAST, RACE_GHOST, RACE_GHOUL, RACE_GIANT, RACE_GIANT_CLOUD, RACE_GIANT_FIRE, RACE_GIANT_FROST, RACE_GIANT_HILL, RACE_GIANT_STONE, RACE_GIANT_STORM, RACE_GIBBERLING, RACE_GNOLL, RACE_GNOME, RACE_GOBLIN, RACE_GOLEM_ADAMANTINE, RACE_GOLEM_CLOCKWORK, RACE_GOLEM_CLAY, RACE_GOLEM_FLESH, RACE_GOLEM_GEM, RACE_GOLEM_IRON, RACE_GOLEM_MITHRIL, RACE_GOLEM_STONE, RACE_GOLEM_WOOD, RACE_GRAY_RENDER, RACE_GRICK, RACE_GRIG, RACE_GRIFFON, RACE_HAG_GREEN, RACE_HAG_SEA, RACE_HALFDROW, RACE_HALFELF, RACE_HALFLING, RACE_HALFORC, RACE_HARPY, RACE_HELL_HOUND, RACE_HIPPOGRIFF, RACE_HOBGOBLIN, RACE_HOMONCULUS, RACE_HYDRA, RACE_HUMAN, RACE_INTELLECT_DEVOURER, RACE_KOBOLD, RACE_KRAKEN, RACE_KRENSHAR, RACE_LAMIA, RACE_LAMMASU, RACE_LICH, RACE_LIZARDMAN, RACE_LOCATHAH, RACE_MEDUSA, RACE_MEPHIT_AIR, RACE_MEPHIT_EARTH, RACE_MEPHIT_FIRE, RACE_MEPHIT_WATER, RACE_MEPHIT, RACE_MERFOLK, RACE_MINOTAUR, RACE_MUMMY, RACE_NAGA_GUARDIAN, RACE_NAGA_SPIRIT, RACE_NAGA_WATER, RACE_NIGHT_HAG, RACE_NIGHTMARE, RACE_NIXIE, RACE_NYMPH, RACE_OGRE, RACE_OGRE_MAGE, RACE_ORC, RACE_OTYUGH, RACE_OWLBEAR, RACE_PEGASUS, RACE_PHASE_SPIDER, RACE_PLANETOUCHED_AIR, RACE_PLANETOUCHED_EARTH, RACE_PLANETOUCHED_FIRE, RACE_PLANETOUCHED_SHADOW, RACE_PLANETOUCHED_WATER, RACE_PSEUDODRAGON, RACE_PURPLE_WORM, RACE_PIXIE, RACE_RAKSHASA, RACE_RATKIN, RACE_REDCAP, RACE_REMORHAZ, RACE_REVENANT, RACE_ROC, RACE_ROPER, RACE_RUST_MONSTER, RACE_SAHUAGIN, RACE_SALAMANDER, RACE_SATYR, RACE_SCORPIONFOLK, RACE_SERPENTFOLK, RACE_SHADE, RACE_SHADOW_MASTIFF, RACE_SHAMBLING_MOUND, RACE_SKELETON, RACE_SPECTRE, RACE_ANDROSPHYNX, RACE_CRIOSPHYNX, RACE_GYNOSPHYNX, RACE_HEIRACOSPHYNX, RACE_STIRGE, RACE_SVIRFNEBLIN, RACE_SWARM_BATS, RACE_SWARM_CENTIPEDES, RACE_SWARM_WASPS, RACE_SWARM_LOCUSTS, RACE_SWARM_RATS, RACE_SWARM_SPIDERS, RACE_TARRASQUE, RACE_THOQQUA, RACE_TIEFLING, RACE_TITAN, RACE_TREANT, RACE_TRITON, RACE_TROGLODYTE, RACE_TROLL, RACE_UNICORN, RACE_VAMPIRE, RACE_WEREBEAR, RACE_WEREBOAR, RACE_WERERAT, RACE_WERETIGER, RACE_WEREWOLF, RACE_WIGHT, RACE_WILLOWISP, RACE_WINTER_WOLF, RACE_WORG, RACE_WRAITH, RACE_WYVERN, RACE_XORN, RACE_ZOMBIE, RACE_ZOMBIE_ANIMAL, RACE_BLACK_PUDDING, RACE_GELATINOUS_CUBE, RACE_GRAY_OOZE, RACE_GREEN_SLIME, RACE_OCHRE_JELLY, RACE_VIOLET_FUNGUS, RACE_APE, RACE_BABOON, RACE_BADGER, RACE_BAT, RACE_BEAR, RACE_BIRD, RACE_BISON, RACE_BOAR, RACE_CAMEL, RACE_CAT, RACE_CHEETAH, RACE_CROCODILE, RACE_DOG, RACE_DONKEY, RACE_EAGLE, RACE_ELEPHANT, RACE_FISH, RACE_FOX, RACE_HAWK, RACE_HORSE, RACE_HYENA, RACE_LEOPARD, RACE_LION, RACE_LIZARD, RACE_MONKEY, RACE_OCTOPUS, RACE_OWL, RACE_PONY, RACE_PORPOISE, RACE_RODENT, RACE_RHINO, RACE_SHARK, RACE_SNAKE_PYTHON, RACE_SNAKE_VIPER, RACE_SNAKE, RACE_TIGER, RACE_TOAD, RACE_WEASEL, RACE_WHALE, RACE_WOLF, RACE_WOLVERINE, RACE_GIANT_ANT, RACE_GIANT_BEE, RACE_BOMB_BEETLE, RACE_FIRE_BEETLE, RACE_STAG_BEETLE, RACE_GIANT_WASP, RACE_GIANT_CENTIPEDE, RACE_GIANT_SCORPION, RACE_GIANT_SPIDER, MAX_RACE } race_flags; #define SIZE_FINE 1 #define SIZE_DIMINUTIVE 2 #define SIZE_TINY 3 #define SIZE_SMALL 4 #define SIZE_MEDIUM 5 #define SIZE_LARGE 6 #define SIZE_HUGE 7 #define SIZE_GARGANTUAN 8 #define SIZE_COLOSSAL 9 typedef enum { DAGE_WYRMLING = 0, DAGE_VERY_YOUNG, DAGE_YOUNG, DAGE_JUVENILLE, DAGE_YOUNG_ADULT, DAGE_ADULT, DAGE_MATURE_ADULT, DAGE_OLD, DAGE_VERY_OLD, DAGE_ANCIENT, DAGE_WYRM, DAGE_GREAT_WYRM } dragon_ages; #define ALIGN_GOOD 1000 #define ALIGN_EVIL -1000 #define ALIGN_NEUTRAL 0 #define ETHOS_LAWFUL 1000 #define ETHOS_CHAOTIC -1000 #define ETHOS_NEUTRAL 0 #define RTYPE_NONE 0 #define RTYPE_ABERRATION 1 #define RTYPE_ANIMAL 2 #define RTYPE_CONSTRUCT 3 #define RTYPE_DRAGON 4 #define RTYPE_FEY 5 #define RTYPE_HUMANOID 6 #define RTYPE_MAGICAL 7 #define RTYPE_MONSTROUS 8 #define RTYPE_OOZE 9 #define RTYPE_OUTSIDER 10 #define RTYPE_PLANT 11 #define RTYPE_UNDEAD 12 #define RTYPE_VERMIN 13 #define RTYPE_MAX 14 #define RSPEC_NONE 0 #define RSPEC_AIR BV01 #define RSPEC_ANGEL BV02 #define RSPEC_AQUATIC BV03 #define RSPEC_ARCHON BV04 #define RSPEC_CHAOTIC BV05 #define RSPEC_COLD BV06 #define RSPEC_DEMON BV07 #define RSPEC_DEVIL BV08 #define RSPEC_DROW BV09 #define RSPEC_DWARF BV10 #define RSPEC_EARTH BV11 #define RSPEC_ELEMENTAL BV12 #define RSPEC_ELF BV13 #define RSPEC_EVIL BV14 #define RSPEC_EXTRAPLANAR BV15 #define RSPEC_FIRE BV16 #define RSPEC_GIANT BV17 #define RSPEC_GNOLL BV18 #define RSPEC_GNOME BV19 #define RSPEC_GOBLINOID BV20 #define RSPEC_GOOD BV21 #define RSPEC_HALFLING BV22 #define RSPEC_HUMAN BV23 #define RSPEC_INCORPOREAL BV24 #define RSPEC_LAWFUL BV25 #define RSPEC_NATIVE BV26 #define RSPEC_ORC BV27 #define RSPEC_REPTILIAN BV28 #define RSPEC_SHAPECHANGER BV29 #define RSPEC_SWARM BV30 #define RSPEC_WATER BV31 #define RSPEC_MAX 34 #define WEAPON_SLASH 1 #define WEAPON_CRUSH 2 #define WEAPON_PIERCE 3 #define WEAPON_CRUSH_PIERCE 4 #define WEAPON_PIERCE_SLASH 5 #define WEAPON_ARROW 6 #define WEAPON_BOLT 7 #define WEAPON_BULLET 8 #define WEAPON_CLASS_SIMPLE 1 #define WEAPON_CLASS_MARTIAL 2 #define WEAPON_CLASS_EXOTIC 3 typedef enum { TRADE_CRAFT_NONE = 0, TRADE_CRAFT_WEAPON, TRADE_CRAFT_BOW, TRADE_CRAFT_LEATHER } craft_trade_bits; typedef enum { WEAPON_TYPE_WEAPON = 0, WEAPON_TYPE_KNIFE, WEAPON_TYPE_DAGGER, WEAPON_TYPE_MACE_LIGHT, WEAPON_TYPE_SICKLE, WEAPON_TYPE_CLUB, WEAPON_TYPE_MACE_HEAVY, WEAPON_TYPE_MORNINGSTAR, WEAPON_TYPE_SHORTSPEAR, WEAPON_TYPE_LONGSPEAR, WEAPON_TYPE_QUARTERSTAFF, WEAPON_TYPE_SPEAR, WEAPON_TYPE_CROSSBOW_HEAVY, WEAPON_TYPE_CROSSBOW_LIGHT, WEAPON_TYPE_DART, WEAPON_TYPE_JAVELIN, WEAPON_TYPE_SLING, WEAPON_TYPE_AXE_THROWING, WEAPON_TYPE_HAMMER_LIGHT, WEAPON_TYPE_HANDAXE, WEAPON_TYPE_KUKRI, WEAPON_TYPE_PICK_LIGHT, WEAPON_TYPE_SAP, WEAPON_TYPE_SWORD_SHORT, WEAPON_TYPE_BATTLEAXE, WEAPON_TYPE_FLAIL, WEAPON_TYPE_SWORD_LONG, WEAPON_TYPE_PICK_HEAVY, WEAPON_TYPE_RAPIER, WEAPON_TYPE_SCIMITAR, WEAPON_TYPE_TRIDENT, WEAPON_TYPE_WARHAMMER, WEAPON_TYPE_FALCHION, WEAPON_TYPE_GLAIVE, WEAPON_TYPE_GREATAXE, WEAPON_TYPE_GREATCLUB, WEAPON_TYPE_FLAIL_HEAVY, WEAPON_TYPE_GREATSWORD, WEAPON_TYPE_GUISARME, WEAPON_TYPE_HALBERD, WEAPON_TYPE_LANCE, WEAPON_TYPE_RANSEUR, WEAPON_TYPE_SCYTHE, WEAPON_TYPE_LONGBOW, WEAPON_TYPE_LONGBOW_COMPOSITE, WEAPON_TYPE_SHORTBOW, WEAPON_TYPE_SHORTBOW_COMPOSITE, WEAPON_TYPE_KAMA, WEAPON_TYPE_NUNCHAKU, WEAPON_TYPE_SAI, WEAPON_TYPE_SIANGHAM, WEAPON_TYPE_SWORD_BASTARD, WEAPON_TYPE_WARAXE_DWARVEN, WEAPON_TYPE_ELVEN_THINBLADE, WEAPON_TYPE_WHIP, WEAPON_TYPE_AXE_DOUBLE, WEAPON_TYPE_CHAIN_SPIKED, WEAPON_TYPE_FLAIL_DIRE, WEAPON_TYPE_SWORD_TWO_BLADED, WEAPON_TYPE_URGROSH_DWARVEN, WEAPON_TYPE_BOLA, WEAPON_TYPE_CROSSBOW_HAND, WEAPON_TYPE_CHAKRAM, WEAPON_TYPE_SHURIKEN, WEAPON_TYPE_MAX } weapon_type_bits; #define WSPEC_LIGHT BV01 #define WSPEC_MISSILE BV02 #define WSPEC_DOUBLE BV03 #define WSPEC_THROW BV04 #define WSPEC_BLADED BV05 #define WSPEC_METAL_HAFTED BV06 #define WSPEC_WOODEN_HAFTED BV07 #define WSPEC_MONK BV08 #define WSPEC_DISARM BV09 #define WSPEC_TRIP BV10 #define WSPEC_REACH BV11 #define WSPEC_NONLETHAL BV12 #define WSPEC_FINESSE BV13 #define WSPEC_NOMELEE BV14 #define WSPEC_RETURNING BV15 #define ARMOR_NONE 0 #define ARMOR_LIGHT 1 #define ARMOR_MEDIUM 2 #define ARMOR_HEAVY 3 typedef enum { ARMOR_TYPE_CLOTH = 0, ARMOR_TYPE_PADDED, ARMOR_TYPE_LEATHER, ARMOR_TYPE_STUDDED_LEATHER, ARMOR_TYPE_ELVEN_CHAIN, ARMOR_TYPE_HIDE, ARMOR_TYPE_SCALE_MAIL, ARMOR_TYPE_CHAINMAIL, ARMOR_TYPE_SPLINT_MAIL, ARMOR_TYPE_BANDED_MAIL, ARMOR_TYPE_FULL_PLATE, ARMOR_TYPE_BUCKLER, ARMOR_TYPE_LIGHT_SHIELD, ARMOR_TYPE_HEAVY_SHIELD, ARMOR_TYPE_TOWER_SHIELD, MAX_ARMOR_TYPE } armor_bitvector; #define FSKILL_NONE 0 #define FSKILL_SKILL 1 #define FSKILL_SPELL 2 #define FSKILL_FEAT 3 #define FSKILL_ABILITY 4 #define FSKILL_WEAPON 5 #define FSKILL_CRAFT 6 #define FSKILL_KNOWLEDGE 7 #define FSKILL_RACEATTACK 8 #define FSKILL_COMMAND 9 #define FSKILL_BARDSONG 10 #define CASTING_INSTANT 0 #define CASTING_SWIFT 2 #define CASTING_STANDARD 8 #define CASTING_ROUND 12 #define CASTING_TURN 120 #define FEAT_NONE 0 #define FEAT_METAMAGIC BV01 #define FEAT_GENERAL BV02 #define FEAT_CREATION BV03 #define FEAT_COMBAT BV04 #define FEAT_FIGHTER BV05 #define FEAT_ROGUE BV06 #define FEAT_ADVANCED BV07 #define FEAT_MONK_STYLE BV08 #define FEAT_RANGER_STYLE BV09 #define FEAT_PALADIN BV10 #define FEAT_WIZARD BV11 #define FEAT_SORCERER_BLOODLINE BV12 #define FEAT_WIZARD_SCHOOL BV13 #define SF_NONE 0 #define SF_VERBAL BV01 #define SF_SOMATIC BV02 #define SF_NONCOMBAT BV03 #define SF_FOCUS BV04 #define SF_DIVINEFOCUS BV05 #define SF_PERSONAL BV06 #define SF_TOUCH BV07 #define SF_CLOSE_RANGE BV08 #define SF_MEDIUM_RANGE BV09 #define SF_LONG_RANGE BV10 #define SF_INFINITE BV11 #define SF_INSTANT BV12 #define SF_PERMANENCY BV13 #define SF_SCALABLE BV14 #define SF_DISMISSABLE BV15 #define SF_NOVARIABLE BV16 #define SF_RADIUS BV17 #define SF_RANGED_TOUCH BV18 #define SF_AREA_CONE BV19 #define SF_AREA_BLAST BV20 #define SF_AREA_LINE BV21 #define SF_ENEMIES BV22 #define SF_GROUP BV23 #define SF_NO_RESIST BV24 #define SF_EXTRAORDINARY BV25 #define SF_SUPERNATURAL BV26 #define SF_NOCORPSE BV27 #define SF_SPELL_LIKE BV28 #define SF_LANGUAGE BV29 #define SF_AUDIBLE BV30 #define SF_VISUAL BV31 typedef enum { SAVE_NONE = 0, SAVE_FORT_HALF, SAVE_FORT_NONE, SAVE_REFL_HALF, SAVE_REFL_NONE, SAVE_WILL_HALF, SAVE_WILL_NONE, SAVE_FORT_QUARTER, SAVE_WILL_QUARTER, SAVE_REFL_QUARTER } save_types; #define METAMAGIC_NONE 0 #define METAMAGIC_EMPOWER BV01 #define METAMAGIC_ENLARGE BV02 #define METAMAGIC_EXTEND BV03 #define METAMAGIC_MAXIMIZE BV04 #define METAMAGIC_QUICKEN BV05 #define METAMAGIC_SILENT BV06 #define METAMAGIC_STILL BV07 #define METAMAGIC_MERCIFUL BV08 #define METAMAGIC_DISGUISE BV09 #define METAMAGIC_ENHANCE BV10 #define METAMAGIC_PERSIST BV11 #define METAMAGIC_REACH BV12 #define METAMAGIC_REPEAT BV13 #define METAMAGIC_SACRED BV14 #define COMBAT_NONE 0 #define COMBAT_FLURRY BV01 #define COMBAT_MANYSHOT BV02 #define COMBAT_RAPIDSHOT BV03 #define COMBAT_SHIELDBASH BV04 #define COMBAT_LETHAL BV05 #define COMBAT_NONLETHAL BV06 #define COMBAT_POWER BV07 #define COMBAT_DEFENSIVE BV08 #define COMBAT_CALLED BV09 #define COMBAT_UNDEFINED BV10 #define COMBAT_ARTERIAL BV11 #define COMBAT_CRIPPLE BV12 #define SCHOOL_NONE 0 #define SCHOOL_UNIVERSAL 0 #define SCHOOL_ABJURATION 1 #define SCHOOL_CONJURATION 2 #define SCHOOL_DIVINATION 3 #define SCHOOL_ENCHANTMENT 4 #define SCHOOL_EVOCATION 5 #define SCHOOL_ILLUSION 6 #define SCHOOL_NECROMANCY 7 #define SCHOOL_TRANSMUTATION 8 #define SCHOOL_MAX 9 typedef enum { BLOODLINE_NONE = 0, BLOODLINE_ABERRANT, BLOODLINE_ABYSSAL, BLOODLINE_AIR, BLOODLINE_ARCANE, BLOODLINE_CELESTIAL, BLOODLINE_DESTINED, BLOODLINE_DRACONIC, BLOODLINE_EARTH, BLOODLINE_FEY, BLOODLINE_FIRE, BLOODLINE_INFERNAL, BLOODLINE_WATER, BLOODLINE_UNDEAD, BLOODLINE_MAX } bloodline_flags; /* Support for combat styles */ typedef enum { STYLE_NONE = 0, STYLE_MELEE, STYLE_ARCHERY, STYLE_HORSEBACK, STYLE_SKIRMISHING, STYLE_STRONGARM, STYLE_THROWING, STYLE_COBRA_STRIKE, STYLE_DENYING_STANCE, STYLE_HAND_AND_FOOT, STYLE_INVISIBLE_EYE, STYLE_PASSIVE_WAY, STYLE_SLEEPING_TIGER, STYLE_UNDYING_WAY, STYLE_MAX } combat_style_flags; #define ROOM_TIMER_SANCTIFY 0 #define ROOM_TIMER_SMOKE 1 #define ROOM_TIMER_BLACKLIGHT 2 #define ROOM_TIMER_BLOCK 3 #define ROOM_TIMER_ICE 4 #define ROOM_TIMER_UNBLOCK 5 typedef enum { DIS_NONE, DIS_BLINDING_SICKNESS, DIS_CACKLE_FEVER, DIS_DEMON_FEVER, DIS_DEVIL_CHILLS, DIS_FILTH_FEVER, DIS_GHOUL_FEVER, DIS_MIND_FIRE, DIS_MUMMY_ROT, DIS_RED_ACHE, DIS_THE_SHAKES, DIS_SLIMY_DOOM, MAX_DISEASE } disease_bitvectors; typedef enum { POISON_NONE = 0, POISON_NITHARIT, POISON_SASSONE_LEAF, POISON_MALYSS_ROOT, POISON_TERINAV_ROOT, POISON_BLACK_LOTUS, POISON_DRAGON_BILE, POISON_TOADSTOOL, POISON_ARSENIC, POISON_ID_MOSS, POISON_LICH_DUST, POISON_UNGOL_DUST, POISON_INSANITY_MIST, POISON_BLACK_ADDER, POISON_CENTIPEDE, POISON_BLOODROOT, POISON_SPIDER, POISON_WYVERN, POISON_SCORPION, POISON_GIANT_WASP, POISON_DEATHBLADE, POISON_PURPLE_WORM, POISON_SLEEP_POISON, MAX_POISON } poison_types; #define POISON_TYPE_CONTACT 1 #define POISON_TYPE_INGEST 2 #define POISON_TYPE_INHALE 3 #define POISON_TYPE_INJURY 4 /* * struct for monk bonuses */ struct monk_type { short flurry_mod; short damnodice; short damsizedice; }; /* * Spell point structures - Kregor */ struct mana_type { short nospells; short bardspells; short wizspells; short warspells; short sorspells; short prcspells; }; struct slot_bonus_type { sh_int bonus[10]; /* spell slot bonus, pri_stat vs. spell level */ }; struct spell_level_type { sh_int spell_level[10]; /* spell slot tables */ }; struct warrior_spell_type { sh_int spell_level[5]; /* spells per day - Warrior */ }; struct bard_spell_type { sh_int spell_level[7]; /* Spells known - Bards */ }; struct max_spell_type { sh_int class[MAX_CLASS]; /* Max spell level learnable by class and level */ }; struct ingredient_type { sh_int ingredient[5]; /* ingredients for crafting */ }; /* Prototype for a mob. */ struct mob_index_data { SPEC_FUN * spec_fun; SHOP_DATA * pShop; STABLE_DATA * pStable; INN_DATA * pInn; AREA_DATA * area; MPROG_DATA * first_prog; MPROG_DATA * last_prog; CHAR_DATA * first_instance; CHAR_DATA * last_instance; AFFECT_DATA * first_affect; AFFECT_DATA * last_affect; EXTRA_DESCR_DATA * first_extradesc; EXTRA_DESCR_DATA * last_extradesc; lg_int progtypes; char * player_name; char * short_descr; char * long_descr; char * description; char * reset_msg; lg_int act; lg_int affected_by; lg_int affected2_by; int vnum; int gold; int speaks; /* native language */ int understands; /* known languages */ lg_int wear_locs; /* wear locs for custom race mobiles */ int race_type; /* race type for unique mobiles */ lg_int rspecs; /* subtypes/rspecs for unique mobiles */ int body_type; /* body type for unique mobiles */ int creator_pvnum; sh_int total_mobiles; sh_int level; sh_int alignment; sh_int ethos; sh_int hitnodice; sh_int hitsizedice; int hitplus; bool sex; bool class; bool position; int race; bool unique; int load_eq[MAX_WEAR]; sh_int mclass[MAX_CLASS]; sh_int learned[MAX_SKILL]; sh_int attacks[ATTK_MAX];/* attack parts for custom race NPCs */ sh_int perm_str; sh_int perm_int; sh_int perm_wis; sh_int perm_dex; sh_int perm_con; sh_int perm_cha; sh_int nat_armor; sh_int armor_type; sh_int god; sh_int size; }; /* One character (PC or NPC). */ struct char_data { CHAR_DATA * next; CHAR_DATA * prev; CHAR_DATA * next_in_room; CHAR_DATA * prev_in_room; CHAR_DATA * next_instance; CHAR_DATA * prev_instance; CHAR_DATA * next_in_battle; CHAR_DATA * fighting; CHAR_DATA * last_attacked; /* last hit by char */ CHAR_DATA * last_attacker; /* last to hit char in combat */ CHAR_DATA * tracked_by; CHAR_DATA * grappling; CHAR_DATA * grappled_by; AFFECT_DATA * first_affect; AFFECT_DATA * last_affect; OBJ_DATA * first_carrying; OBJ_DATA * last_carrying; CHAR_DATA * master; CHAR_DATA * leader; SPEC_FUN * spec_fun; RESET_DATA * reset; MOB_INDEX_DATA * pIndexData; DESCRIPTOR_DATA * desc; ROOM_INDEX_DATA * in_room; PC_DATA * pcdata; NPC_DATA * npcdata; POISON_DATA * poison; DISEASE_DATA * first_disease; DISEASE_DATA * last_disease; COMBAT_DATA * in_battle; TURN_DATA * turn; char * name; char * short_descr; char * long_descr; char * description; lg_int act; lg_int affected_by; lg_int affected2_by; int affected_sn[MAX_SKILL]; int critical_hit_by; /* The PVNUM of the hitter */ int gold; int hit; int max_hit; int nonlethal; sh_int mana[MAX_CLASS]; sh_int max_mana[MAX_CLASS]; sh_int move; sh_int max_move; sh_int level; sh_int lost_levels; sh_int timer; sh_int wait; sh_int carry_weight; sh_int carry_number; sh_int sex; bool class; sh_int mclass[MAX_CLASS]; int race; bool position; sh_int alignment; sh_int ethos; int language; int speak; int initiative; bool speed; sh_int height; sh_int weight; sh_int fear_level; /* 1 = shaken, 2 = frightened, 3+ = panicked */ sh_int distracted; /* used if distracted */ sh_int attack_part; /* body part used on last attack */ int severed; /* severed body parts */ int attack; /* Used to allow 1 disarm, etc.*/ int action; /* Used to limit actions in a round */ OBJ_DATA * furniture; /* sit/sleep/stand on object */ OBJ_DATA * hitched; /* cart hitched to */ CHAR_DATA * mounting; /* pointer to mount if mounted */ CHAR_DATA * assassinate; /* target of assasination */ sh_int asn_count; /* countdown to assasination */ int apply[MAX_APPLY]; /* caches applies from affects to char */ sh_int perm_str; sh_int perm_int; sh_int perm_wis; sh_int perm_dex; sh_int perm_con; sh_int perm_cha; sh_int mod_str; sh_int mod_int; sh_int mod_wis; sh_int mod_dex; sh_int mod_con; sh_int mod_cha; sh_int nat_armor; sh_int armor; sh_int dex_max; sh_int armor_type; sh_int god; sh_int size; int rest; int retran; int regoto; int rewalkto; int walkto; int combatmode; /* fighting styles set */ int metamagic; /* metamagic feats set */ int immunity_sdesc; /* immunities to spell descriptors */ int immunity_energy; /* immunities to damage types */ int absorption[MAX_APPLY]; /* ablative protection against dmg */ int learned[MAX_SKILL]; /* does char know a skill */ int prepared[MAX_SKILL];/* is the spell prepared and in what class */ int imbued[MAX_SKILL]; /* is imbued with spell ability */ int uses[MAX_SKILL]; /* uses per day of an ability */ bool concentrating; /* is ch using concentration skill? */ int skill_timer; /* concentration timer */ DO_FUN * timer_fun; /* function timed */ char * cmd_argument; /* command argument for concentration */ bool casting; int casting_time; int cast_timer; int cast_sn; int cast_level; int cast_circle; int cast_class; int cast_dir; int cast_feats; char * target_name; OBJ_DATA * reciting; /* scroll reciting on do_recite */ bool reloaded; }; /* Data which only PC's have. */ struct pc_data { CLAN_DATA * clan; HELP_DATA * last_help; HELP_DATA * prev_help; CRIME_DATA * first_record; /* the X-Files :P */ CRIME_DATA * last_record; OBJ_DATA * corpse; /* Pointer to player's corpse */ OBJ_DATA * cart; /* Pointer to player's cart */ TACTICAL_MAP * tactical; /* The recorded tactical map for comparison */ EDITOR_DATA * editor; NOTE_DATA * pnote; CHAR_DATA * reply; CHAR_DATA * shadowing; CHAR_DATA * shadowed_by; CHAR_DATA * tracking; DO_FUN * last_cmd; void * temp_ptr; void * edit_ptr; int edit_race; int edit_god; int edit_class; char * edit_buf; char * host; char * account; /* text of account name */ char * pwd; char * bamfin; char * bamfout; char * authed_by; char * title; char * adjective; char * bio; char * pose; char * disguise; char * disguise_descr; char * alias [MAX_ALIAS]; char * alias_c [MAX_ALIAS]; char * mail_address; char * html_address; char * clan_name; char * clan_pledge; char * back_buf[26]; /* Change to pointer to string mode */ char * page_buf; char * prompt_layout; /* For reconfiguration */ char * subprompt; /* subprompt for OLC*/ char * auto_command; char * block_list; /* list of characters to notell/nobeep */ char * last_command; char * tattoo[MAX_WEAR]; bool * quest[MAX_AREA]; char * last_pk_attack_name[MAX_PK_ATTACKS]; int last_pk_attack_time[MAX_PK_ATTACKS]; int last_pk_attack_pvnum[MAX_PK_ATTACKS]; char scroll_buf[MAX_BUFFER_LENGTH]; lg_int password; int version; int a_range_lo; /* olc vnum range */ int a_range_hi; int created; int played; int bounties; int mdeaths; int mkills; int akills; int previous_hours; int killer_played; int outcast_played; long last_connect; long last_time; long last_improve; long last_saved; long last_combat; int topic_stamp [MAX_TOPIC]; int last_note; int note_topic; int just_died_ctr; long time_of_death; int port_size; int pvnum; /* Player's virtual number */ int corpse_room; /* The room of the player's corpse */ int cart_room; /* The room of the player's cart */ int clan_position; int scroll_start; int scroll_end; int channel; /* visible communication channels */ int domains; /* cleric domains */ int domain[MAX_DOMAIN]; /* cleric domains array */ int death_room; int recall; int waypoint[MAX_WAYPOINT]; /* teleport waypoints */ int spam; int tactical_mode; int last_real_room; int was_in_room; int bank; long jailtime; int jaildate; int functions; int clock; int exp; int faith_rank; /* rank in church heirarchy */ int god_favor; /* divine favor level */ int reputation; /* new reputation mechanic */ int familiar; /* race of familiar */ sh_int class_level[MAX_LEVEL]; /* tracks class taken each level */ sh_int hit_level[MAX_LEVEL]; /* tracks hitpoints gained each level */ sh_int move_level[MAX_LEVEL]; /* tracks move gained each level */ sh_int pract_level[MAX_LEVEL]; /* tracks skill points gained each level */ int skill_level[MAX_LEVEL][MAX_SKILL]; /* tracks skills/feats/spells gained each level */ sh_int vt100; sh_int vt100_type; sh_int vt100_mode; sh_int vt100_flags; sh_int interp; sh_int idle; sh_int condition[4]; /* thirst, hunger, drunk, air */ sh_int practice; /* skill points - legacy merc name */ sh_int stat_pts; /* stat points every 4 pc levels */ sh_int feat_pts; /* feat every 3 pc levels */ sh_int bonus_feat[MAX_CLASS]; /* bonus feat points array by class */ sh_int bonus_spells; /* wizard bonus spells/level */ sh_int disguise_roll; /* caches skill roll when disguised */ sh_int request; sh_int arrested; sh_int race_enemy[RACE_ENEMY_MAX]; /* Rangers favored enemy */ int greeted[MAX_PVNUM]; /* has a PC greeted char or not */ int theft_grudge[MAX_VNUM]; /* what NPCs have caught you stealing */ int murder_grudge[MAX_VNUM]; /* NPCs you've killed */ int found_dir[MAX_VNUM]; /* Hidden exits you know */ int found_pvnum[MAX_PVNUM]; /* Hidden PCs you've seen in this room */ int found_vnum[MAX_VNUM]; /* Hidden NPCs you've seen this room */ int prepared[MAX_SKILL]; /* Prepared spells */ bool color[COLOR_MAX]; /* The color array for ANSI */ bool editmode; bool edittype; bool tempmode; bool ansi; bool auto_flags; bool compass_width; bool switched; }; struct pvnum_data { char * name; time_t date; int flags; CHAR_DATA * ch; }; struct ban_data { BAN_DATA * next; BAN_DATA * prev; char * name; char * banned_by; time_t date; }; struct hiscore_list { HISCORE_DATA * last; HISCORE_DATA * first; }; struct hiscore_data { HISCORE_DATA * next; HISCORE_DATA * prev; char * player; int vnum; int score; }; struct obj_ref_hash { OBJ_DATA * first; OBJ_DATA * last; }; struct room_timer_data { ROOM_TIMER_DATA * next; ROOM_TIMER_DATA * prev; int vnum; int type; int location; int modifier; int duration; int level; lg_int bitvector; char * caster; }; struct junk_data { JUNK_DATA * next; JUNK_DATA * prev; OBJ_DATA * obj; CHAR_DATA * mob; }; struct str_hash_data { STR_HASH_DATA * next; STR_HASH_DATA * prev; int links; int hash; }; struct math_data { MATH_DATA * next; MATH_DATA * prev; char * str1; char * str2; char * str3; }; #define MAX_TACTICAL_ROW 20 #define MAX_TACTICAL_COL 160 struct tactical_map { unsigned char map[MAX_TACTICAL_ROW * MAX_TACTICAL_COL]; unsigned char color[MAX_TACTICAL_ROW * MAX_TACTICAL_COL]; }; struct crime_data { CRIME_DATA * next; CRIME_DATA * prev; char * crime_record; /* reason and stuff */ char * arrester; /* by whom is the player arrested */ time_t date; /* when was this person arrested */ char * releaser; /* Who released this person ? */ sh_int level; /* level of the arrester */ int jailtime; /* How long imprisoned ? */ bool released; /* Is the person released ? */ }; struct file_data { FILE_DATA * next; FILE_DATA * prev; char * filename; char * opentype; FILE * fp; }; struct clan_data { CLAN_DATA * next; CLAN_DATA * prev; char * name; char * filename; char * description; char * motto; char * leader[5]; char * email; int pkills[5]; int pdeaths[5]; int mkills; int mdeaths; int tax; lg_int coffers; int members; int home; int store; int last_saved; int founder_pvnum; int num_guards; int num_healers; int num_trainers; int num_banks; int num_morgues; int num_altars; int num_backdoors; }; #define REQUEST_VT_SAVE_ON BV01 /* temp turns off vt102 */ #define REQUEST_ANSI_SAVE_ON BV02 /* temp turns off ansi */ #define AUTO_OFF 0 #define AUTO_AUTO 1 #define AUTO_QUICK 2 #define FUNCTION_NONE 0 #define FUNCTION_BUILDER BV01 #define FUNCTION_HELPER BV02 #define FUNCTION_ENFORCER BV03 #define FUNCTION_GOD BV04 #define FUNCTION_BETA_TESTER BV05 #define FUNCTION_DEVELOPER BV06 #define FUNCTION_SECRET_AGENT BV07 /* a cop, of which only the god can see it's one */ /* Data which only NPC's have. */ struct mob_prog_data { MPROG_DATA * next; MPROG_DATA * prev; NPC_TOKEN * first_token; NPC_TOKEN * last_token; lg_int type; char flags; char * arglist; char * comlist; }; struct mob_prog_token { NPC_TOKEN * next; NPC_TOKEN * prev; bool type; char * string; sh_int value; /* value of command/social table */ void * function; /* Which do_fun to use */ bool level; /* The functional IF level */ }; /* The following structure is set up so that individual monsters may have different stats - Chaos 5/25/94 */ struct npc_data { unsigned char * mob_quest; char * remember; CHAR_DATA * prog_char; /* ch intercepted with prog */ char * prog_cmd; /* intercepted command */ int pvnum_last_hit; sh_int armor_type; /* set default armor worn */ sh_int sac_timer; int hate_fear; /* pvnum of hated player */ char * sac_string; bool delay_index; bool mob_prog_nest; bool mloaded; /* loaded by prog */ }; /* clanhall costs */ #define CLANHALL_CONSTRUCTION 150000000 #define CLANHALL_FLAG 100000000 #define RENT_BASIC_CLAN_HALL 25000000 #define RENT_BASIC_ORDER_HALL 25000000 #define RENT_PER_GUARD 1000000 #define RENT_PER_HEALER 2000000 #define RENT_PER_TRAINER 1000000 #define RENT_PER_BANK 2500000 #define RENT_PER_MORGUE 1500000 #define RENT_PER_ALTAR 2500000 #define RENT_PER_BACKDOOR 5000000 #define ERROR_PROG -1 #define ACT_PROG BV01 #define SPEECH_PROG BV02 #define RAND_PROG BV03 #define FIGHT_PROG BV04 #define DEATH_PROG BV05 #define HITPRCNT_PROG BV06 #define ENTRY_PROG BV07 #define GREET_PROG BV08 #define DO_GREET_PROG BV09 #define GIVE_PROG BV10 #define BRIBE_PROG BV11 #define RANGE_PROG BV12 #define SOCIAL_PROG BV13 #define KILL_PROG BV14 #define GROUP_GREET_PROG BV15 #define TIME_PROG BV16 #define REPOP_PROG BV17 #define DELAY_PROG BV18 #define EXIT_PROG BV19 #define TRIGGER_PROG BV20 #define DESC_PROG BV21 #define MONTH_PROG BV22 #define DAY_PROG BV23 #define INTERCEPT_PROG BV24 #define WEAR_PROG BV25 #define REMOVE_PROG BV26 #define USE_PROG BV27 #define SAC_PROG BV28 #define GET_PROG BV29 #define DROP_PROG BV30 #define DAMAGE_PROG BV31 #define HIT_PROG BV32 #define ARRIVAL_PROG BV33 #define BUY_PROG BV34 #define SAYTO_PROG BV35 #define CAST_PROG BV36 #define TRAP_PROG BV37 #define MPTRIGGER_RAND_PLR BV01 #define MPTOKEN_UNKNOWN 0 #define MPTOKEN_SOCIAL 1 #define MPTOKEN_COMMAND 2 #define MPTOKEN_IF 3 #define MPTOKEN_OR 4 #define MPTOKEN_ELSE 5 #define MPTOKEN_ENDIF 6 #define MPTOKEN_BREAK 7 #define MPTOKEN_SWITCH 8 #define MPTOKEN_CASE 9 #define MPTOKEN_DEFAULT 10 #define MPTOKEN_ENDSWITCH 11 #define MPTOKEN_IFNOT 12 #define MPTOKEN_ORNOT 13 /* obsolete MRMud OPROG flags */ #define TRIG_COMMAND BV01 #define TRIG_VOID BV02 #define TRIG_UNKNOWN BV03 #define TRIG_TICK BV04 #define TRIG_DAMAGE BV05 #define TRIG_HIT BV06 #define TRIG_WEAR BV07 #define TRIG_REMOVE BV08 #define TRIG_SACRIFICE BV09 #define TRIG_DROP BV10 #define TRIG_GET BV11 #define TRIG_ROOM_COMMAND BV12 #define TRIG_ROOM_UNKNOWN BV13 #define TRIG_WEAR_COMMAND BV14 #define TRIG_WEAR_UNKNOWN BV15 #define OPROG_ECHO 0 #define OPROG_GOD_COMMAND 1 #define OPROG_GOD_ARGUMENT 2 #define OPROG_COMMAND 3 #define OPROG_ARGUMENT 4 #define OPROG_IF_HAS_OBJECT 5 #define OPROG_IF 6 #define OPROG_JUNK 7 #define OPROG_QUEST_SET 8 #define OPROG_QUEST_ADD 9 #define OPROG_OBJECT_QUEST_IF 10 #define OPROG_PLAYER_QUEST_IF 11 #define OPROG_APPLY 12 #define OIF_MCLASS_BARBARIAN 0 #define OIF_MCLASS_BARD 1 #define OIF_MCLASS_CLERIC 2 #define OIF_MCLASS_DRUID 3 #define OIF_MCLASS_FIGHTER 4 #define OIF_MCLASS_MONK 5 #define OIF_MCLASS_PALADIN 6 #define OIF_MCLASS_RANGER 7 #define OIF_MCLASS_ROGUE 8 #define OIF_MCLASS_SORCERER 9 #define OIF_MCLASS_WIZARD 10 #define OIF_WEAR_LOC 11 #define OIF_TIME_OF_DAY 12 #define OIF_WEATHER 13 #define OIF_RANDOM_PERCENT 14 #define OIF_USER_PERCENT_HITPT 15 #define OIF_USER_PERCENT_MANA 16 #define OIF_USER_PERCENT_MOVE 17 #define OIF_USER_SECTOR 18 #define OIF_USER_ALIGNMENT 19 #define OIF_USER_GOLD 20 #define OIF_USER_CLASS 21 #define OIF_USER_WHICH_GOD 22 #define OIF_USER_AREA 23 #define OIF_USER_LEVEL 24 #define OIF_USER_POSITION 25 #define OIF_USER_RACE 26 #define OIF_USER_SEX 27 #define OIF_USER_ROOM_NUM 28 #define OIF_USER_FIGHTING 29 /* Communication flags for reference during game_loop_unix */ #define COMM_FLAG_DISCONNECT BV01 #define COMM_FLAG_MCCP BV02 #define COMM_FLAG_COMMAND BV03 #define COMM_FLAG_NOINPUT BV04 #define COMM_FLAG_ECHO BV05 #define COMM_FLAG_PASSWORD BV06 #define COMM_FLAG_EOR BV07 /* 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_STRONG_ALE 8 #define LIQ_STRONG_WINE 9 #define LIQ_MILK 10 #define LIQ_TEA 11 #define LIQ_COFFEE 12 #define LIQ_BLOOD 13 #define LIQ_SALTWATER 14 #define LIQ_OIL 15 #define LIQ_JUICE 16 #define LIQ_BRANDY 17 #define LIQ_ICEWINE 18 #define LIQ_RUM 19 #define LIQ_VODKA 20 #define LIQ_CHAMPAGNE 21 #define LIQ_MAX 22 struct liq_type { char * liq_name; char * liq_color; sh_int liq_affect[3]; }; #define FOOD_BREAD 0 #define FOOD_GARLIC 1 #define FOOD_MAX 2 /* New auth stuff --Rantic */ typedef enum { AUTH_ONLINE = 0, AUTH_OFFLINE, AUTH_LINK_DEAD, AUTH_CHANGE, AUTH_AUTHED } auth_types; struct auth_list { AUTH_LIST *next; AUTH_LIST *prev; char *name; /* Name of character awaiting authorization */ char *adjective; /* Adjective of character awaiting authorization */ char *descr; /* Description of character awaiting authorization */ int sex; /* Sex of character awaiting authorization */ int race; /* Race of character awaiting authorization */ int pvnum; /* PVNUM of character awaiting authorization */ char *authed_by; /* Name of immortal who authorized the name */ char *change_by; /* Name of immortal requesting name change */ short state; /* Current state of authed */ }; /* bounty stuff */ struct bounty_data { BOUNTY_DATA * next; BOUNTY_DATA * prev; char * name; /* name of offender */ int pvnum; /* pvnum of offender */ int amount; /* amount of bounty */ int expires; /* charges expire */ int area; /* lo_r_vnum of the crime */ int crime; /* crime wanted for */ int punishment; /* dead or alive? */ int victim; /* vnum of the victim */ int pcvictim; /* pvnum of PC victim */ }; /* Extra description data for a room or object. */ struct extra_descr_data { EXTRA_DESCR_DATA * next; /* Next in list */ EXTRA_DESCR_DATA * prev; /* Prev in list */ char * keyword; /* Keyword in look/examine */ char * description; /* What to see */ }; /* Prototype for an object. */ struct obj_index_data { OBJ_DATA * first_instance; OBJ_DATA * last_instance; EXTRA_DESCR_DATA * first_extradesc; EXTRA_DESCR_DATA * last_extradesc; AFFECT_DATA * first_affect; AFFECT_DATA * last_affect; DISEASE_DATA * first_disease; DISEASE_DATA * last_disease; MPROG_DATA * first_prog; MPROG_DATA * last_prog; AREA_DATA * area; char * name; char * short_descr; char * long_descr; char * description; char * id_name; char * id_descr; lg_int progtypes; int vnum; sh_int item_type; lg_int extra_flags; int wear_flags; sh_int weight; int cost; int value[8]; int level; int total_objects; /* Total for resets */ char * attack_string; int class_flags; /* List of which classes can use obj*/ int creator_pvnum; sh_int hardness; /* d20 stat for damage reduction */ sh_int material; /* uses Mud20 material table */ sh_int hit_points; /* d20 hit points for obj */ sh_int size; /* d20 size category */ sh_int scribed[MAX_SKILL]; /* for spellbooks ONLY - records scribed spells */ }; struct poison_data { POISON_DATA * next; sh_int type; int constant_duration; /* In combat rounds */ sh_int dc; /* save DC */ int owner; /* PVNUM of creator of poison */ int poisoner; /* PVNUM of poisoner */ }; struct disease_data { DISEASE_DATA * next; DISEASE_DATA * prev; sh_int type; sh_int incubation; sh_int dc; bool saves; }; /* One object. */ struct obj_data { OBJ_DATA * next; OBJ_DATA * prev; OBJ_DATA * next_content; OBJ_DATA * prev_content; OBJ_DATA * next_instance; OBJ_DATA * prev_instance; OBJ_DATA * next_ref; OBJ_DATA * prev_ref; OBJ_DATA * first_content; OBJ_DATA * last_content; OBJ_DATA * in_obj; CHAR_DATA * carried_by; RESET_DATA * reset; AFFECT_DATA * first_affect; AFFECT_DATA * last_affect; DISEASE_DATA * first_disease; DISEASE_DATA * last_disease; OBJ_INDEX_DATA * pIndexData; ROOM_INDEX_DATA * in_room; POISON_DATA * poison; char * name; char * short_descr; char * long_descr; char * description; char * id_name; char * id_descr; int affected_sn[MAX_SKILL]; bool identified; sh_int item_type; lg_int extra_flags; int wear_flags; int wear_loc; sh_int weight; sh_int hardness; sh_int material; sh_int hit_points; sh_int size; sh_int scribed[MAX_SKILL]; int apply[MAX_APPLY]; /* caches applies from affects to obj */ int cost; sh_int level; sh_int timer; sh_int sac_timer; int value[8]; unsigned char * obj_quest; int owned_by; /* PVNUM of owner */ sh_int content_weight; /* total weight of container */ lg_int obj_ref_key; }; /* Exit data. */ struct exit_data { int to_room; int vnum; unsigned short pvnum; int exit_info; int key; char * keyword; char * description; int exit_size; int climb_dc; int fall_dist; }; /* Reset commands: '*': comment 'M': read a mobile 'O': read an object 'P': put object in object 'G': give object to mobile 'E': equip object to mobile 'D': set state of door 'R': randomize room exits 'S': stop (end of list) */ /* Area-reset definition. */ struct reset_data { RESET_DATA * next; RESET_DATA * prev; char command; int arg1; int arg2; int arg3; CHAR_DATA * mob; OBJ_DATA * obj; RESET_DATA * container; }; /* Area definition. */ struct area_data { AREA_DATA * next; AREA_DATA * prev; RESET_DATA * first_reset; RESET_DATA * last_reset; HELP_DATA * first_help; HELP_DATA * last_help; char * name; char * filename; bool * area_quest; WEATHER_DATA * weather_info; int average_level; sh_int version; sh_int age; sh_int nplayer; sh_int flags; sh_int tmp; sh_int count; sh_int hi_hard_range; /* Enforced range */ sh_int low_hard_range; sh_int hi_soft_range; /* Suggested range */ sh_int low_soft_range; char * authors; char * resetmsg; int dungeon; int courtroom; int storeroom; /* storeroom for confiscation */ int judge; int guard; int punishment[CRIME_MAX]; int low_r_vnum; int hi_r_vnum; int low_o_vnum; int hi_o_vnum; int low_m_vnum; int hi_m_vnum; int olc_range_lo; int olc_range_hi; }; /* Room type. */ struct room_index_data { CHAR_DATA * first_person; CHAR_DATA * last_person; OBJ_DATA * first_content; OBJ_DATA * last_content; MPROG_DATA * first_prog; MPROG_DATA * last_prog; EXTRA_DESCR_DATA * first_extradesc; EXTRA_DESCR_DATA * last_extradesc; DISEASE_DATA * first_disease; DISEASE_DATA * last_disease; AREA_DATA * area; EXIT_DATA * exit[6]; char * name; char * description; char * night_desc; char * listen_desc; lg_int progtypes; int vnum; lg_int room_flags; int light; bool sector_type; char * last_left[MAX_LAST_LEFT]; sh_int last_left_bits[MAX_LAST_LEFT]; int last_left_pvnum[MAX_LAST_LEFT]; bool content_count; unsigned short creator_pvnum; sh_int nplayer; }; /* System usage information */ struct usage_data { int players[24][7]; }; /* 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+2 #define TYPE_NOFIGHT MAX_SKILL+1 /* Target types. */ #define TAR_IGNORE 0 /* ignores arguments for target */ #define TAR_CHAR_OFFENSIVE 1 /* causes aggression in target */ #define TAR_CHAR_DEFENSIVE 2 /* is nonaggressive to target */ #define TAR_CHAR_SELF 3 /* target affects self only */ #define TAR_OBJ_INV 4 /* target must be in inv */ #define TAR_OBJ_CHAR_OFF 5 /* targets either obj in inv or offensive char */ #define TAR_OBJ_CHAR_DEF 6 /* targets either obj in inv or defensive char */ #define TAR_OBJ_WIELD 7 /* object must be held, dispels if removed */ #define TAR_OBJ_ROOM 8 /* objects in room can be affected also */ #define TAR_UNDEAD_OFF 9 /* offensive if undead, defensive if not */ #define TAR_UNDEAD_DEF 10 /* defensive if undead, offensive if not */ struct bitvector_type /* table of defines to bitvectors */ { char * name; /* name of bit */ lg_int value; }; struct body_type /* text of particular body parts */ { char * attack; /* dam nounce for body part */ int dam_type; /* dam type for part */ bool primary; /* is primary attack part (per PFRPG universal monster rule */ bool natural; /* is natural weapon (per PFRPG universal monster rule */ }; /* Skills include spells as a particular case. */ struct skill_type { int spell_class; /* spell class for NPC ai */ sh_int skilltype; /* skill flags */ int spell_school; /* spell school, feat types */ int save; /* saving throw type */ int dam_type; /* damage type */ int spell_desc; /* spell descriptors, weapon classes */ lg_int flags; /* skill/spell flags */ char * name; /* Name of skill */ sh_int skill_level[MAX_CLASS]; /* Level Min for Skill, Spell circle */ sh_int bonus_feat[MAX_CLASS]; /* Bonus feat for class, at what level */ sh_int domains[MAX_DOMAIN]; /* Domain Spell circle */ sh_int race_skill[MAX_RACE]; /* Racial abilities */ sh_int styles[STYLE_MAX]; /* Monk/Ranger combat style skills */ sh_int bloodline[BLOODLINE_MAX]; /* Sorcerer bloodline skills */ sh_int components[5]; /* Components for spells (max 5 per spell) */ SPELL_FUN * spell_fun; /* Spell pointer (for spells) */ sh_int target; /* Legal targets */ bool minimum_position; /* Position for caster / user */ sh_int * pgsn; /* Pointer to associated gsn */ sh_int native_level; /* default level of a spell without a spell table */ sh_int mana_move; /* Move point cost - max circle of scaleable spell */ sh_int beats; /* Casting Time */ char * noun_damage; /* Damage message */ char * msg_off; /* Wear off message */ char * msg_obj_off; /* Wear off message for obj */ char * msg_off_room; /* Wear off message for room */ char * vis_affect; /* Visible affect on show_char_to_char */ }; /* These are skill_lookup return values for common skills and spells. */ /* racial attacks and abilities */ sh_int gsn_drain; sh_int gsn_con_drain; sh_int gsn_cha_drain; sh_int gsn_dex_drain; sh_int gsn_int_drain; sh_int gsn_str_drain; sh_int gsn_wis_drain; sh_int gsn_bleed_damage; sh_int gsn_blindsight; sh_int gsn_con_damage; sh_int gsn_cha_damage; sh_int gsn_dex_damage; sh_int gsn_int_damage; sh_int gsn_str_damage; sh_int gsn_wis_damage; sh_int gsn_shapechange; sh_int gsn_poison_attack; sh_int gsn_disease_attack; sh_int gsn_agile_climber; sh_int gsn_fear_aura; sh_int gsn_fear_gaze; sh_int gsn_death_gaze; sh_int gsn_death_throes; sh_int gsn_petri_gaze; sh_int gsn_pounce; sh_int gsn_rend; sh_int gsn_smaller_weapons; sh_int gsn_fearful_howl; sh_int gsn_frightful_presence; sh_int gsn_light_blindness; sh_int gsn_light_invisibility; sh_int gsn_light_sensitivity; sh_int gsn_light_vulnerability; sh_int gsn_paralysis_touch; sh_int gsn_stench; sh_int gsn_aura_of_menace; sh_int gsn_babble; sh_int gsn_imp_natural_attack; sh_int gsn_acid_touch; sh_int gsn_corrosion; sh_int gsn_fire_touch; sh_int gsn_frost_touch; sh_int gsn_shock_touch; sh_int gsn_divine_touch; sh_int gsn_negative_energy_touch; sh_int gsn_web_attack; sh_int gsn_wounding_attack; sh_int gsn_draconic_resistance; sh_int gsn_rock_throwing; sh_int gsn_split; /* non-skills for internal tracking only */ sh_int gsn_sight_perception; sh_int gsn_sound_perception; sh_int gsn_smell_perception; sh_int gsn_taste_perception; sh_int gsn_touch_perception; sh_int gsn_speak_languages; sh_int gsn_ability_damage; sh_int gsn_recite_scroll; /* generic dam types */ sh_int gsn_bash_hit; sh_int gsn_bullrush; sh_int gsn_coup_de_grace; sh_int gsn_disarm; sh_int gsn_divine_hit; sh_int gsn_fire_hit; sh_int gsn_force_hit; sh_int gsn_frost_hit; sh_int gsn_frostbite; sh_int gsn_heatstroke; sh_int gsn_pierce_hit; sh_int gsn_shield_bash; sh_int gsn_shock_hit; sh_int gsn_sonic_hit; sh_int gsn_vorpal_hit; sh_int gsn_slash_hit; sh_int gsn_sunder; sh_int gsn_trip; /* bard songs */ sh_int gsn_curse_song; sh_int gsn_dirge_of_doom; sh_int gsn_song_of_courage; sh_int gsn_song_of_freedom; sh_int gsn_song_of_soothing; sh_int gsn_song_of_sleep; sh_int gsn_song_of_suggestion; sh_int gsn_song_of_heroism; sh_int gsn_song_of_fascination; sh_int gsn_song_of_inspiration; /* spells */ sh_int gsn_acid_arrow; sh_int gsn_acid_breath; sh_int gsn_acid_spittle; sh_int gsn_acid_hit; sh_int gsn_acid_rain; sh_int gsn_acid_splash; sh_int gsn_admonishing_ray; sh_int gsn_aid; sh_int gsn_align_weapon; sh_int gsn_alter_self; sh_int gsn_analyze_dweomer; sh_int gsn_animal_growth; sh_int gsn_animal_shapes; sh_int gsn_animate_dead; sh_int gsn_animate_object; sh_int gsn_antilife_shell; sh_int gsn_antimagic_field; sh_int gsn_arcane_eye; sh_int gsn_armor; sh_int gsn_armor_of_darkness; sh_int gsn_astral_projection; sh_int gsn_aura_of_retribution; sh_int gsn_baleful_polymorph; sh_int gsn_banish; sh_int gsn_bane; sh_int gsn_barkskin; sh_int gsn_beast_shape; sh_int gsn_bestow_grace; sh_int gsn_bears_endurance; sh_int gsn_blacklight; sh_int gsn_black_tentacles; sh_int gsn_blade_barrier; sh_int gsn_blasphemy; sh_int gsn_bleeding_wounds; sh_int gsn_bless; sh_int gsn_blindness; sh_int gsn_blur; sh_int gsn_break_enchantment; sh_int gsn_bulls_strength; sh_int gsn_burning_hands; sh_int gsn_call_lightning_storm; sh_int gsn_call_lightning; sh_int gsn_calm_animals; sh_int gsn_calm_emotions; sh_int gsn_cats_grace; sh_int gsn_cause_fear; sh_int gsn_chain_lightning; sh_int gsn_chaos_hammer; sh_int gsn_charm_animal; sh_int gsn_charm_monster; sh_int gsn_charm_person; sh_int gsn_charm_plant; sh_int gsn_chill_touch; sh_int gsn_chill_metal; sh_int gsn_circle_against_chaos; sh_int gsn_circle_against_evil; sh_int gsn_circle_against_good; sh_int gsn_circle_against_law; sh_int gsn_circle_of_death; sh_int gsn_clairvoyance; sh_int gsn_cloak_of_chaos; sh_int gsn_cloudkill; sh_int gsn_color_spray; sh_int gsn_command; sh_int gsn_comprehend_languages; sh_int gsn_cone_of_cold; sh_int gsn_confusion; sh_int gsn_conjure_elemental; sh_int gsn_conjure_lesser_elemental; sh_int gsn_conjure_minor_elemental; sh_int gsn_conjure_greater_elemental; sh_int gsn_create_undead; sh_int gsn_create_lesser_undead; sh_int gsn_create_minor_undead; sh_int gsn_create_greater_undead; sh_int gsn_contagion; sh_int gsn_cont_light; sh_int gsn_control_weather; sh_int gsn_create_food; sh_int gsn_create_spring; sh_int gsn_create_water; sh_int gsn_creeping_doom; sh_int gsn_crushing_despair; sh_int gsn_crushing_hand; sh_int gsn_cure_critical; sh_int gsn_cure_light; sh_int gsn_cure_moderate; sh_int gsn_cure_serious; sh_int gsn_curse; sh_int gsn_dancing_lights; sh_int gsn_darkness; sh_int gsn_darkvision; sh_int gsn_daylight; sh_int gsn_daze; sh_int gsn_death_armor; sh_int gsn_death_knell; sh_int gsn_death_ward; sh_int gsn_deep_slumber; sh_int gsn_destruction; sh_int gsn_delay_poison; sh_int gsn_demand; sh_int gsn_detect_chaos; sh_int gsn_detect_evil; sh_int gsn_detect_good; sh_int gsn_detect_invis; sh_int gsn_detect_law; sh_int gsn_detect_magic; sh_int gsn_detect_poison; sh_int gsn_detect_secret; sh_int gsn_detect_scrying; sh_int gsn_detect_shapechanger; sh_int gsn_detect_thoughts; sh_int gsn_detect_traps; sh_int gsn_detect_undead; sh_int gsn_dictum; sh_int gsn_dimension_door; sh_int gsn_dimensional_anchor; sh_int gsn_dimensional_lock; sh_int gsn_discern_lies; sh_int gsn_discern_location; sh_int gsn_disintegrate; sh_int gsn_disguise_self; sh_int gsn_disjunction; sh_int gsn_displacement; sh_int gsn_dispel_evil; sh_int gsn_dispel_good; sh_int gsn_dispel_chaos; sh_int gsn_dispel_law; sh_int gsn_dispel_magic; sh_int gsn_disrupt_undead; sh_int gsn_divine_favor; sh_int gsn_divine_power; sh_int gsn_dominate_animal; sh_int gsn_dominate_monster; sh_int gsn_dominate_person; sh_int gsn_drown; sh_int gsn_eagles_splendour; sh_int gsn_earthquake; sh_int gsn_earthwalk; sh_int gsn_electric_jolt; sh_int gsn_elemental_swarm; sh_int gsn_endure_elements; sh_int gsn_energy_drain; sh_int gsn_enervation; sh_int gsn_enlarge_person; sh_int gsn_entangle; sh_int gsn_entropic_shield; sh_int gsn_ethereal_jaunt; sh_int gsn_ethereal; sh_int gsn_fire_breath; sh_int gsn_eyebite; sh_int gsn_euphoria_gas; sh_int gsn_faerie_fire; sh_int gsn_faithful_hound; sh_int gsn_fear_gas; sh_int gsn_fear; sh_int gsn_feather_fall; sh_int gsn_feeblemind; sh_int gsn_festering_wounds; sh_int gsn_finger_of_death; sh_int gsn_fire_breath; sh_int gsn_fire_shield; sh_int gsn_fireball; sh_int gsn_firestorm; sh_int gsn_flame_arrow; sh_int gsn_flame_blade; sh_int gsn_flame_tongue; sh_int gsn_flamestrike; sh_int gsn_flesh_to_stone; sh_int gsn_floating_disc; sh_int gsn_fog_cloud; sh_int gsn_forceful_hand; sh_int gsn_foresight; sh_int gsn_foxs_cunning; sh_int gsn_freedom_of_movement; sh_int gsn_frost_breath; sh_int gsn_gas_breath; sh_int gsn_gate; sh_int gsn_gentle_repose; sh_int gsn_globe_of_invulnerability; sh_int gsn_golem_slam; sh_int gsn_good_hope; sh_int gsn_grasping_hand; sh_int gsn_greater_command; sh_int gsn_greater_heroism; sh_int gsn_greater_polymorph; sh_int gsn_greater_restoration; sh_int gsn_greater_teleport; sh_int gsn_guidance; sh_int gsn_gust_of_wind; sh_int gsn_hallucinate; sh_int gsn_harden; sh_int gsn_harm; sh_int gsn_haste; sh_int gsn_heal; sh_int gsn_heal_mount; sh_int gsn_heat_metal; sh_int gsn_heroes_feast; sh_int gsn_heroism; sh_int gsn_hold_animal; sh_int gsn_hold_person; sh_int gsn_hold_plant; sh_int gsn_hold_monster; sh_int gsn_holy_aura; sh_int gsn_holy_smite; sh_int gsn_holy_word; sh_int gsn_horrid_wilting; sh_int gsn_ice_storm; sh_int gsn_identify; sh_int gsn_improved_invis; sh_int gsn_implosion; sh_int gsn_inflict_light; sh_int gsn_inflict_minor; sh_int gsn_inflict_moderate; sh_int gsn_inflict_serious; sh_int gsn_inflict_critical; sh_int gsn_insanity; sh_int gsn_insect_plague; sh_int gsn_invis; sh_int gsn_iron_body; sh_int gsn_irresistible_dance; sh_int gsn_knock; sh_int gsn_keen_edge; sh_int gsn_leap; sh_int gsn_lesser_confusion; sh_int gsn_lesser_restoration; sh_int gsn_light; sh_int gsn_lightning_bolt; sh_int gsn_lightning_breath; sh_int gsn_locate_creature; sh_int gsn_locate_object; sh_int gsn_magic_fang; sh_int gsn_magic_missile; sh_int gsn_magic_weapon; sh_int gsn_magic_vestment; sh_int gsn_major_contraption; sh_int gsn_major_image; sh_int gsn_make_whole; sh_int gsn_mass_bears_endurance; sh_int gsn_mass_bulls_strength; sh_int gsn_mass_cats_grace; sh_int gsn_mass_cure_critical; sh_int gsn_mass_cure_light; sh_int gsn_mass_cure_moderate; sh_int gsn_mass_cure_serious; sh_int gsn_mass_death_ward; sh_int gsn_mass_eagles_splendour; sh_int gsn_mass_enlarge_person; sh_int gsn_mass_foxs_cunning; sh_int gsn_mass_heal; sh_int gsn_mass_hold_animal; sh_int gsn_mass_hold_person; sh_int gsn_mass_hold_plant; sh_int gsn_mass_hold_monster; sh_int gsn_mass_inflict_critical; sh_int gsn_mass_inflict_light; sh_int gsn_mass_inflict_moderate; sh_int gsn_mass_inflict_serious; sh_int gsn_mass_invis; sh_int gsn_mass_owls_wisdom; sh_int gsn_mass_refresh; sh_int gsn_mass_reduce_person; sh_int gsn_mending; sh_int gsn_meteor_swarm; sh_int gsn_mind_blank; sh_int gsn_minor_contraption; sh_int gsn_minor_globe; sh_int gsn_mirror_image; sh_int gsn_mislead; sh_int gsn_moment_of_prescience; sh_int gsn_missile_deflection; sh_int gsn_natures_ally_I; sh_int gsn_natures_ally_II; sh_int gsn_natures_ally_III; sh_int gsn_natures_ally_IV; sh_int gsn_natures_ally_V; sh_int gsn_natures_ally_VI; sh_int gsn_natures_ally_VII; sh_int gsn_natures_ally_VIII; sh_int gsn_natures_ally_IX; sh_int gsn_suffocate; sh_int gsn_summon_ally; sh_int gsn_summon_monster_I; sh_int gsn_summon_monster_II; sh_int gsn_summon_monster_III; sh_int gsn_summon_monster_IV; sh_int gsn_summon_monster_V; sh_int gsn_summon_monster_VI; sh_int gsn_summon_monster_VII; sh_int gsn_summon_monster_VIII; sh_int gsn_summon_monster_IX; sh_int gsn_sunbeam; sh_int gsn_sunburst; sh_int gsn_neutralize_poison; sh_int gsn_nightmare; sh_int gsn_nondetection; sh_int gsn_object_rape; sh_int gsn_orders_wrath; sh_int gsn_owls_widsom; sh_int gsn_owls_wisdom; sh_int gsn_paralysis_gas; sh_int gsn_pass_door; sh_int gsn_pass_plant; sh_int gsn_pass_without_trace; sh_int gsn_permanency; sh_int gsn_phantasmal_killer; sh_int gsn_poison; sh_int gsn_polymorph; sh_int gsn_power_word_blind; sh_int gsn_power_word_kill; sh_int gsn_power_word_sleep; sh_int gsn_power_word_stun; sh_int gsn_prayer; sh_int gsn_private_sanctum; sh_int gsn_produce_flame; sh_int gsn_protection_chaos; sh_int gsn_protection_energy; sh_int gsn_protection_evil; sh_int gsn_protection_good; sh_int gsn_protection_law; sh_int gsn_protection_spells; sh_int gsn_psionic_shockwave; sh_int gsn_purify; sh_int gsn_rage; sh_int gsn_rainbow_pattern; sh_int gsn_raise_dead; sh_int gsn_ray_of_enfeeblement; sh_int gsn_ray_of_frost; sh_int gsn_read_magic; sh_int gsn_rebuke; sh_int gsn_reduce_animal; sh_int gsn_reduce_person; sh_int gsn_refresh; sh_int gsn_regenerate; sh_int gsn_reincarnate; sh_int gsn_remove_blindness; sh_int gsn_remove_curse; sh_int gsn_remove_deafness; sh_int gsn_remove_disease; sh_int gsn_remove_fear; sh_int gsn_remove_paralysis; sh_int gsn_repel_metal; sh_int gsn_repulsion; sh_int gsn_resist_elements; sh_int gsn_resistance; sh_int gsn_restoration; sh_int gsn_resurrection; sh_int gsn_revive; sh_int gsn_rusting_grasp; sh_int gsn_sanctify; sh_int gsn_sanctuary; sh_int gsn_scare; sh_int gsn_scintillating_pattern; sh_int gsn_scorching_ray; sh_int gsn_scrying; sh_int gsn_searing_light; sh_int gsn_sending; sh_int gsn_secure_shelter; sh_int gsn_shadow_walk; sh_int gsn_shambler; sh_int gsn_shatter; sh_int gsn_shield; sh_int gsn_shield_of_faith; sh_int gsn_shield_of_law; sh_int gsn_shillelagh; sh_int gsn_shocking_grasp; sh_int gsn_shout; sh_int gsn_sign_of_wrath; sh_int gsn_silence; sh_int gsn_simulacrum; sh_int gsn_sirocco; sh_int gsn_sleep; sh_int gsn_slay_living; sh_int gsn_sleet_storm; sh_int gsn_slow_gas; sh_int gsn_slow; sh_int gsn_snake_dart; sh_int gsn_sonic_blast; sh_int gsn_soul_bind; sh_int gsn_speak_w_animals; sh_int gsn_speak_with_dead; sh_int gsn_spell_immunity; sh_int gsn_spell_resistance; sh_int gsn_spell_turning; sh_int gsn_spider_climb; sh_int gsn_spirit_of_triumph; sh_int gsn_stabilize; sh_int gsn_status; sh_int gsn_stone_skin; sh_int gsn_stone_shower; sh_int gsn_stone_fist; sh_int gsn_stone_to_flesh; sh_int gsn_storm_of_vengeance; sh_int gsn_suggestion; sh_int gsn_summon_shadow; sh_int gsn_summon_swarm; sh_int gsn_summon; sh_int gsn_symbol_of_pain; sh_int gsn_symbol_of_insanity; sh_int gsn_telepathic_bond; sh_int gsn_teleport_object; sh_int gsn_teleport; sh_int gsn_teleportation_circle; sh_int gsn_thorn_body; sh_int gsn_time_stop; sh_int gsn_tongues; sh_int gsn_touch_of_fatigue; sh_int gsn_touch_of_idiocy; sh_int gsn_transformation; sh_int gsn_transmute_metal; sh_int gsn_tree_stride; sh_int gsn_true_resurrection; sh_int gsn_true_form; sh_int gsn_true_freedom; sh_int gsn_true_seeing; sh_int gsn_true_strike; sh_int gsn_undeath_to_death; sh_int gsn_undeath_ward; sh_int gsn_undeaths_eternal_foe; sh_int gsn_unholy_aura; sh_int gsn_unholy_blight; sh_int gsn_vampiric_touch; sh_int gsn_ventriloquism; sh_int gsn_vigilance; sh_int gsn_virtue; sh_int gsn_wall_of_fire; sh_int gsn_wall_of_force; sh_int gsn_wall_of_iron; sh_int gsn_wall_of_ice; sh_int gsn_wall_of_stone; sh_int gsn_water_breathing; sh_int gsn_water_walk; sh_int gsn_water_to_wine; sh_int gsn_waves_of_exhaustion; sh_int gsn_waves_of_fatigue; sh_int gsn_weakness_gas; sh_int gsn_web; sh_int gsn_weird; sh_int gsn_word_of_chaos; sh_int gsn_word_of_recall; sh_int gsn_wraith_form; /* feats and abilities */ sh_int gsn_aberrant_bloodline; sh_int gsn_abyssal_bloodline; sh_int gsn_arcane_bloodline; sh_int gsn_air_bloodline; sh_int gsn_earth_bloodline; sh_int gsn_fire_bloodline; sh_int gsn_water_bloodline; sh_int gsn_celestial_bloodline; sh_int gsn_destined_bloodline; sh_int gsn_draconic_bloodline; sh_int gsn_fey_bloodline; sh_int gsn_infernal_bloodline; sh_int gsn_undead_bloodline; sh_int gsn_celestial_affinity; sh_int gsn_elemental_affinity; sh_int gsn_fiendish_affinity; sh_int gsn_shadow_affinity; sh_int gsn_school_abj; sh_int gsn_school_conj; sh_int gsn_school_div; sh_int gsn_school_ench; sh_int gsn_school_evoc; sh_int gsn_school_illus; sh_int gsn_school_necro; sh_int gsn_school_trans; sh_int gsn_school_univ; sh_int gsn_distance_arrow; sh_int gsn_keen_arrow; sh_int gsn_imbue_arrow; sh_int gsn_hail_of_arrows; sh_int gsn_enhance_arrow; sh_int gsn_seeker_arrow; sh_int gsn_energy_arrow; sh_int gsn_death_arrow; sh_int gsn_abundant_step; sh_int gsn_acrobatic; sh_int gsn_active_shield_defense; sh_int gsn_agile_combatant; sh_int gsn_agile_feint; sh_int gsn_alertness; sh_int gsn_align_ki; sh_int gsn_animal_affinity; sh_int gsn_arcane_armor_training; sh_int gsn_arcane_armor_mastery; sh_int gsn_arcane_weapon; sh_int gsn_armor_mastery; sh_int gsn_armor_proficiency_heavy; sh_int gsn_armor_proficiency_light; sh_int gsn_armor_proficiency_medium; sh_int gsn_armor_training; sh_int gsn_arterial_strike; sh_int gsn_assassinate; sh_int gsn_athletic; sh_int gsn_augment_summoning; sh_int gsn_aura_of_courage; sh_int gsn_aura_of_devotion; sh_int gsn_aura_of_faith; sh_int gsn_aura_of_nobility; sh_int gsn_aura_of_resolve; sh_int gsn_aura_of_righteousness; sh_int gsn_aura_of_cowardice; sh_int gsn_aura_of_tyranny; sh_int gsn_aura_of_blasphemy; sh_int gsn_aura_of_profanity; sh_int gsn_secret_of_avoidance; sh_int gsn_secret_of_health; sh_int gsn_secret_of_resolve; sh_int gsn_secret_of_stamina; sh_int gsn_secret_of_truth; sh_int gsn_newfound_arcana; sh_int gsn_serpents_tongue; sh_int gsn_unholy_champion; sh_int gsn_backstab; sh_int gsn_barbed_touch; sh_int gsn_bardic_song; sh_int gsn_battle_cry; sh_int gsn_barbarian_rage; sh_int gsn_between_the_eyes; sh_int gsn_blind_fight; sh_int gsn_bold_rage; sh_int gsn_blood_rage; sh_int gsn_bravery; sh_int gsn_brew_potion; sh_int gsn_called_shot; sh_int gsn_camouflage; sh_int gsn_canny_defense; sh_int gsn_channeling_attack; sh_int gsn_cleave; sh_int gsn_cloud_of_cleaves; sh_int gsn_combat_archery; sh_int gsn_combat_casting; sh_int gsn_combat_expertise; sh_int gsn_combat_rearing; sh_int gsn_combat_reflexes; sh_int gsn_command_undead; sh_int gsn_companion; sh_int gsn_constrict; sh_int gsn_corrupt_touch; sh_int gsn_countersong; sh_int gsn_crack_shot; sh_int gsn_craft_magic_arms; sh_int gsn_craft_staff; sh_int gsn_craft_wand; sh_int gsn_craft_wondrous; sh_int gsn_cripple; sh_int gsn_daring_charge; sh_int gsn_daylight_adaptation; sh_int gsn_dead_shot; sh_int gsn_deceitful; sh_int gsn_deflect_arrows; sh_int gsn_defensive_roll; sh_int gsn_defensive_stance; sh_int gsn_defensive_training; sh_int gsn_deft_hands; sh_int gsn_destructive_smite; sh_int gsn_diamond_soul; sh_int gsn_diehard; sh_int gsn_divine_arcana; sh_int gsn_divine_charm; sh_int gsn_divine_craftsmanship; sh_int gsn_divine_defense; sh_int gsn_divine_grace; sh_int gsn_divine_health; sh_int gsn_divine_location; sh_int gsn_divine_luck; sh_int gsn_divine_mercantilism; sh_int gsn_divine_paragon; sh_int gsn_divine_refuge; sh_int gsn_divine_renewal; sh_int gsn_divine_strength; sh_int gsn_divine_trickery; sh_int gsn_divine_veil; sh_int gsn_divine_wrath; sh_int gsn_disguise_spell; sh_int gsn_dodge; sh_int gsn_dweomersight; sh_int gsn_elaborate_defense; sh_int gsn_empower_curing; sh_int gsn_empower_infliction; sh_int gsn_empower_song; sh_int gsn_empower_spell; sh_int gsn_empower_turning; sh_int gsn_empty_body; sh_int gsn_endurance; sh_int gsn_enlarge_spell; sh_int gsn_eschew_materials; sh_int gsn_extend_song; sh_int gsn_extend_spell; sh_int gsn_extend_wildshape; sh_int gsn_extra_song; sh_int gsn_extra_turning; sh_int gsn_evasion; sh_int gsn_faceless; sh_int gsn_familiar; sh_int gsn_far_shot; sh_int gsn_feint_resistance; sh_int gsn_ferocity; sh_int gsn_first_strike; sh_int gsn_flurry; sh_int gsn_fly; sh_int gsn_focus_abj; sh_int gsn_focus_conj; sh_int gsn_focus_div; sh_int gsn_focus_ench; sh_int gsn_focus_evoc; sh_int gsn_focus_illus; sh_int gsn_focus_necro; sh_int gsn_focus_trans; sh_int gsn_foe_hunter; sh_int gsn_forge_ring; sh_int gsn_furtive_spell; sh_int gsn_gouge; sh_int gsn_grab; sh_int gsn_grace; sh_int gsn_grapple; sh_int gsn_greater_lore; sh_int gsn_great_cleave; sh_int gsn_great_fortitude; sh_int gsn_greater_rage; sh_int gsn_greater_dispel; sh_int gsn_greater_feint; sh_int gsn_greater_flurry; sh_int gsn_greater_sneak_attack; sh_int gsn_greater_stability; sh_int gsn_greater_two_weapon; sh_int gsn_heroes_luck; sh_int gsn_high_magic; sh_int gsn_hide_plain_sight; sh_int gsn_holy_champion; sh_int gsn_infinite_wildshape; sh_int gsn_imp_bullrush; sh_int gsn_imp_counterspell; sh_int gsn_imp_critical; sh_int gsn_imp_disarm; sh_int gsn_imp_evasion; sh_int gsn_imp_familiar; sh_int gsn_imp_flurry; sh_int gsn_imp_grapple; sh_int gsn_imp_initiative; sh_int gsn_imp_precise_shot; sh_int gsn_imp_shield_bash; sh_int gsn_imp_sunder; sh_int gsn_imp_turning; sh_int gsn_twin_sword; sh_int gsn_imp_two_weapon; sh_int gsn_imp_unarmed_strike; sh_int gsn_imp_weapon_finesse; sh_int gsn_impenetrable_defense; sh_int gsn_impromptu_sneak_attack; sh_int gsn_improved_feint; sh_int gsn_improved_trip; sh_int gsn_unstoppable_rage; sh_int gsn_insightful; sh_int gsn_iron_will; sh_int gsn_jack_of_all_trades; sh_int gsn_ki_strike_adamant; sh_int gsn_ki_strike_lawful; sh_int gsn_ki_strike_magic; sh_int gsn_lay_hands; sh_int gsn_layhands_blindness; sh_int gsn_layhands_curse; sh_int gsn_layhands_disease; sh_int gsn_layhands_fatigue; sh_int gsn_layhands_fear; sh_int gsn_layhands_poison; sh_int gsn_leadership; sh_int gsn_lightning_reflexes; sh_int gsn_linguist; sh_int gsn_lore_mastery; sh_int gsn_lore; sh_int gsn_magical_aptitude; sh_int gsn_magna_alumnus; sh_int gsn_manyshot; sh_int gsn_martial_arts; sh_int gsn_master_hunter; sh_int gsn_master_scribe; sh_int gsn_maximize_spell; sh_int gsn_merciful_spell; sh_int gsn_mettle; sh_int gsn_mighty_rage; sh_int gsn_mobility; sh_int gsn_mounted_archery; sh_int gsn_mounted_combat; sh_int gsn_mounted_defense; sh_int gsn_mounted_onslaught; sh_int gsn_negotiator; sh_int gsn_nimble; sh_int gsn_noble_birth; sh_int gsn_opportunist; sh_int gsn_oratory; sh_int gsn_packrat; sh_int gsn_parry; sh_int gsn_persistent_spell; sh_int gsn_perfect_self; sh_int gsn_perfect_two_weapon; sh_int gsn_persuasive; sh_int gsn_point_blank; sh_int gsn_poison_resistance; sh_int gsn_poison_use; sh_int gsn_protective_touch; sh_int gsn_power_attack; sh_int gsn_power_critical; sh_int gsn_precise_shot; sh_int gsn_precise_strike; sh_int gsn_purity_of_body; sh_int gsn_quick_draw; sh_int gsn_quicken_spell; sh_int gsn_quicken_song; sh_int gsn_quivering_palm; sh_int gsn_ranged_parry; sh_int gsn_rapid_reload; sh_int gsn_rapid_shot; sh_int gsn_reach_spell; sh_int gsn_repeat_spell; sh_int gsn_rescue; sh_int gsn_resist_natures_lure; sh_int gsn_retributive_strike; sh_int gsn_ride_by_attack; sh_int gsn_riposte; sh_int gsn_sacred_spell; sh_int gsn_scent; sh_int gsn_scholar; sh_int gsn_scribe_scroll; sh_int gsn_self_concealment; sh_int gsn_self_sufficient; sh_int gsn_shadow_adept; sh_int gsn_shadow_companion; sh_int gsn_shadow_casting; sh_int gsn_shadow_bolt; sh_int gsn_shadow_illusion; sh_int gsn_shadow_infusion; sh_int gsn_shadow_jump; sh_int gsn_shadow_resistance; sh_int gsn_shield_proficiency; sh_int gsn_shield_slam; sh_int gsn_shield_specialization; sh_int gsn_shield_ward; sh_int gsn_silent_death; sh_int gsn_silent_spell; sh_int gsn_silver_palm; sh_int gsn_skip_rock; sh_int gsn_skill_mastery; sh_int gsn_skill_prodigy; sh_int gsn_slippery_mind; sh_int gsn_slow_fall; sh_int gsn_smite; sh_int gsn_smite_infidel; sh_int gsn_snatch_arrows; sh_int gsn_sneaky_spell; sh_int gsn_sniper; sh_int gsn_spell_mastery; sh_int gsn_spell_penetration; sh_int gsn_spirited_charge; sh_int gsn_spring_attack; sh_int gsn_stability; sh_int gsn_stealthy; sh_int gsn_stealth_mastery; sh_int gsn_pilfer_dweomer; sh_int gsn_still_spell; sh_int gsn_stonecunning; sh_int gsn_strongarm_diplomacy; sh_int gsn_stubborn_mind; sh_int gsn_stunning_fist; sh_int gsn_style_cobra_strike; sh_int gsn_style_denying_stance; sh_int gsn_style_hand_and_foot; sh_int gsn_style_invisible_eye; sh_int gsn_style_passive_way; sh_int gsn_style_sleeping_tiger; sh_int gsn_style_undying_way; sh_int gsn_style_archery; sh_int gsn_style_melee; sh_int gsn_style_skirmish; sh_int gsn_style_strongarm; sh_int gsn_style_throwing; sh_int gsn_style_horseback; sh_int gsn_swift_death; sh_int gsn_swift_stealth; sh_int gsn_swift_tracker; sh_int gsn_thousand_faces; sh_int gsn_thrust_home; sh_int gsn_tireless_defense; sh_int gsn_tireless_rage; sh_int gsn_toughness; sh_int gsn_touch_of_courage; sh_int gsn_touch_of_grace; sh_int gsn_touch_of_profanity; sh_int gsn_touch_of_resolve; sh_int gsn_touch_of_righteousness; sh_int gsn_touch_of_zeal; sh_int gsn_tower_shield_prof; sh_int gsn_track; sh_int gsn_trackless_step; sh_int gsn_trample; sh_int gsn_trap_guidance; sh_int gsn_trap_sense; sh_int gsn_trap_spotter; sh_int gsn_trapfinding; sh_int gsn_true_death; sh_int gsn_true_lore; sh_int gsn_turn_elemental; sh_int gsn_turn_lycanthrope; sh_int gsn_turn_outsider; sh_int gsn_turn_plants; sh_int gsn_turn_reptiles; sh_int gsn_turn_undead; sh_int gsn_two_weapon_defense; sh_int gsn_two_weapon; sh_int gsn_uncanny_dodge; sh_int gsn_universal_tongue; sh_int gsn_urban_tracking; sh_int gsn_venom_immunity; sh_int gsn_warmage; sh_int gsn_warhorse; sh_int gsn_well_versed; sh_int gsn_whirl; sh_int gsn_wild_empathy; sh_int gsn_wildshape_elemental; sh_int gsn_wildshape_huge; sh_int gsn_wildshape_large; sh_int gsn_wildshape_plant; sh_int gsn_wildshape_tiny; sh_int gsn_wildshape; sh_int gsn_woodland_stride; /* skills */ sh_int gsn_appraise; sh_int gsn_bluff; sh_int gsn_climb; sh_int gsn_concentration; sh_int gsn_craft_alchemy; sh_int gsn_craft_armor; sh_int gsn_craft_bows; sh_int gsn_craft_cooking; sh_int gsn_craft_fletching; sh_int gsn_craft_jewelry; sh_int gsn_craft_leather; sh_int gsn_craft_mining; sh_int gsn_craft_poison; sh_int gsn_craft_tailoring; sh_int gsn_craft_traps; sh_int gsn_craft_weapons; sh_int gsn_decipher_script; sh_int gsn_diplomacy; sh_int gsn_disable_device; sh_int gsn_disguise; sh_int gsn_escape_artist; sh_int gsn_first_aid; sh_int gsn_streetwise; sh_int gsn_haggle; sh_int gsn_handle_animal; sh_int gsn_intimidate; sh_int gsn_jump; sh_int gsn_know_arcana; sh_int gsn_know_dungeoneering; sh_int gsn_know_geography; sh_int gsn_know_history; sh_int gsn_know_local; sh_int gsn_know_nature; sh_int gsn_know_nobility; sh_int gsn_know_planes; sh_int gsn_know_religion; sh_int gsn_mount; sh_int gsn_pick_lock; sh_int gsn_perception; sh_int gsn_perform; sh_int gsn_search; sh_int gsn_sense_motive; sh_int gsn_sleight_of_hand; sh_int gsn_stealth; sh_int gsn_spellcraft; sh_int gsn_survival; sh_int gsn_swim; sh_int gsn_tumble; sh_int gsn_use_magic; /* weapon proficiency */ sh_int gsn_unarmed_strike; sh_int gsn_weapon_battleaxe; sh_int gsn_weapon_bola; sh_int gsn_weapon_club; sh_int gsn_weapon_chakram; sh_int gsn_weapon_crossbow_hand; sh_int gsn_weapon_crossbow_heavy; sh_int gsn_weapon_crossbow_light; sh_int gsn_weapon_dart; sh_int gsn_weapon_double_axe; sh_int gsn_weapon_falchion; sh_int gsn_weapon_finesse; sh_int gsn_weapon_flail_dire; sh_int gsn_weapon_flail; sh_int gsn_weapon_focus; sh_int gsn_weapon_glaive; sh_int gsn_weapon_greataxe; sh_int gsn_weapon_greatclub; sh_int gsn_weapon_greatsword; sh_int gsn_weapon_guisarme; sh_int gsn_weapon_halberd; sh_int gsn_weapon_hammer; sh_int gsn_weapon_handaxe; sh_int gsn_weapon_javelin; sh_int gsn_weapon_kama; sh_int gsn_weapon_kukri; sh_int gsn_weapon_lance; sh_int gsn_weapon_longbow_composite; sh_int gsn_weapon_longbow; sh_int gsn_weapon_mace; sh_int gsn_weapon_mastery; sh_int gsn_weapon_grandmastery; sh_int gsn_weapon_morningstar; sh_int gsn_weapon_nunchaku; sh_int gsn_weapon_pick; sh_int gsn_weapon_prof_exotic; sh_int gsn_weapon_prof_martial; sh_int gsn_weapon_prof_simple; sh_int gsn_weapon_quarterstaff; sh_int gsn_weapon_ranseur; sh_int gsn_weapon_rapier; sh_int gsn_weapon_sai; sh_int gsn_weapon_sap; sh_int gsn_weapon_scimitar; sh_int gsn_weapon_scythe; sh_int gsn_weapon_short_blade; sh_int gsn_weapon_shortbow_composite; sh_int gsn_weapon_shortbow; sh_int gsn_weapon_shuriken; sh_int gsn_weapon_siangham; sh_int gsn_weapon_sickle; sh_int gsn_weapon_sling; sh_int gsn_weapon_spear; sh_int gsn_weapon_specialization; sh_int gsn_weapon_spiked_chain; sh_int gsn_weapon_sword_bastard; sh_int gsn_weapon_sword_double; sh_int gsn_weapon_sword_long; sh_int gsn_weapon_sword_short; sh_int gsn_weapon_thinblade; sh_int gsn_weapon_throwing_axe; sh_int gsn_weapon_trident; sh_int gsn_weapon_urgrosh; sh_int gsn_weapon_waraxe_dwarven; sh_int gsn_weapon_whip; /* The following special functions are available for mobiles. */ DECLARE_SPEC_FUN( spec_executioner ); DECLARE_SPEC_FUN( spec_fido ); DECLARE_SPEC_FUN( spec_guard ); DECLARE_SPEC_FUN( spec_janitor ); DECLARE_SPEC_FUN( spec_thief ); /* 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) ((c) >= 'A' && (c) <= 'Z' ? (c)+'a'-'A' : (c)) #define UPPER(c) ((c) >= 'a' && (c) <= 'z' ? (c)+'A'-'a' : (c)) #define ROUNDUP(a) (round(a + 0.5)) #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)) #define IS_SHIFT(val, bit) ((val) & (1 << (bit))) #define SET_SHIFT(var, bit) ((var) |= (1 << (bit))) #define UNSHIFT( bit ) ((ffs(bit) - 1)) #define SHIFT( bit ) ((1)<<(bit)) #define NOT(val) ((val)^0xFFFFFFFF) #define get_room_index(vnum) ((vnum) < 0 ? NULL : (vnum) >= MAX_VNUM ? NULL : room_index[vnum]) #define get_mob_index(vnum) ((vnum) < 0 ? NULL : (vnum) >= MAX_VNUM ? NULL : mob_index[vnum]) #define get_obj_index(vnum) ((vnum) < 0 ? NULL : (vnum) >= MAX_VNUM ? NULL : obj_index[vnum]) /* Character macros. */ #define max_air(ch) (get_curr_con(ch) * 2) #define max_hunger(ch) (48) #define max_thirst(ch) (24 + get_curr_con(ch)) #define max_drunk(ch) (get_curr_con(ch) * 7) #define CH(descriptor) (descriptor->original ? descriptor->original : descriptor->character) #define MP_VALID_MOB(ch) ((ch)->desc == NULL && IS_NPC(ch) && !IS_SET(ch->act, ACT_WILL_DIE) && !IS_AFFECTED(ch, AFF_DOMINATE) && !IS_AFFECTED(ch, AFF2_POSSESS)) #define CAN_CRITICAL(ch) (race_type_table[race_type(ch)].can_crit && !rspec_req(ch, RSPEC_SWARM)) #define in_area(ch, vnum) (ch->in_room != NULL \ && ch->in_room->area->low_r_vnum == vnum) #define IS_UNDERWATER(ch) (ch->in_room != NULL \ && !rspec_req(ch, RSPEC_AQUATIC) \ && (ch->in_room->sector_type == SECT_UNDER_WATER \ || ch->in_room->sector_type == SECT_OCEAN)) #define IS_SILENCED(ch) (!IS_NPC(ch) && IS_SET(pvnum_index[ch->pcdata->pvnum]->flags, PVNUM_SILENCED)) #define IS_MUTED(ch) (!IS_NPC(ch) && IS_SET(pvnum_index[ch->pcdata->pvnum]->flags, PVNUM_MUTED)) #define IS_EQ_MELDED(ch) (is_polymorph(ch) && body_type(ch) != race_table[ch->race].body_type) #define IS_ENTANGLED(ch) (IS_AFFECTED(ch, AFF2_ENTANGLED) && !IS_AFFECTED(ch, AFF_FREEDOM)) #define IS_ENCUMBERED(ch) (encumberance(ch) > 0) #define IS_OVERLOADED(ch) (encumberance(ch) >= OVERLOADED) #define IS_NPC(ch) ((ch)->npcdata != NULL) #define IS_IMMORTAL(ch) (get_trust(ch) >= LEVEL_IMMORTAL) #define PLR_FUNCTION(ch, func) (ch->desc && ch->desc->account && IS_SET(ch->desc->account->functions, func)) #define IS_GOD(ch) ((!IS_NPC((ch)) && (ch)->pcdata->pvnum < 100) || ((ch)->desc && (ch)->desc->account && (ch)->desc->account->functions & FUNCTION_GOD)) #define IS_CREATOR(ch) (which_god(ch) == GOD_CREATOR) #define IS_UNDEAD(ch) (race_type(ch) == RTYPE_UNDEAD) #define IS_LIVING(ch) (get_curr_con(ch) != -1) #define IS_ANIMAL(ch) (IS_NPC(ch) && ch->perm_int <= 2 && (race_type(ch) == RTYPE_ANIMAL || race_type(ch) == RTYPE_MAGICAL)) #define IS_RACE(ch, stat) (ch->race == stat || race_table[ch->race].parent_race == stat) #define IS_ACT(ch, stat) (IS_NPC(ch) && IS_SET(ch->act, stat)) #define IS_UNIQUE(ch) (IS_NPC(ch) && ch->pIndexData->unique) #define IS_PLR(ch, stat) (!IS_NPC(ch) && IS_SET(ch->act, stat)) #define IS_AFFECTED(ch, sn) (sn > 0 ? (IS_SET((ch)->affected_by, (sn)) || IS_SET(race_table[(ch)->race].affected_by, (sn))) : IS_SET((ch)->affected2_by, 0 - (sn))) #define IS_RACE_AFFECT(ch, sn) (IS_SET(race_table[(ch)->race].affected_by, (sn))) #define IS_DEAF(ch) (IS_AFFECTED(ch, AFF_DEAF)) #define IS_DEAD(ch) (ch->position == POS_DEAD || IS_PLR(ch, PLR_DEAD)) #define IS_TIED(ch) (IS_AFFECTED(ch, AFF2_TIED_UP)) #define IS_FALLING(ch) (IS_AFFECTED(ch, AFF2_FALLING)) #define IS_POISONED(ch) (IS_AFFECTED(ch, AFF_POISON) || ch->poison != NULL) #define IS_DISEASED(ch) (ch->first_disease != NULL) #define IS_PET(mob, ch) (mob->master && mob->master == ch && IS_ACT(mob, ACT_PET|ACT_FAMILIAR|ACT_COMPANION|ACT_WARHORSE)) #define IS_GUARD(mob) (IS_NPC(mob) && mob->in_room && mob->in_room->area == mob->pIndexData->area && (mob->pIndexData->spec_fun == spec_guard || IS_ACT(mob, ACT_GUARD))) #define IS_CITIZEN(mob) (IS_ACT(mob, ACT_CITIZEN) && mob->in_room && mob->in_room->area == mob->pIndexData->area) #define IS_SEVERED(ch, part) (IS_SET((ch)->severed, (part))) #define CAN_SWIM(ch) (rspec_req(ch, RSPEC_AQUATIC) || rspec_req(ch, RSPEC_WATER) || IS_AFFECTED(ch, AFF_WATER_WALK) || race_table[get_race(ch)].swim_speed) #define CAN_CLIMB(ch) (race_table[get_race(ch)].climb_speed) #define CAN_ETHEREAL_WALK(ch) (IS_AFFECTED(ch, AFF2_ETHEREAL)) #define CAN_ASTRAL_WALK(ch) (IS_AFFECTED(ch, AFF2_ASTRAL)) #define IS_HIDDEN(ch) (IS_AFFECTED(ch, AFF_HIDE) || IS_AFFECTED(ch, AFF_INVISIBLE)) #define CAN_SEE_MAGIC(ch) (is_affected(ch, gsn_detect_magic) || class_ability(ch, gsn_dweomersight)) #define CAN_BREATH_WATER(ch) (IS_GOD(ch) || IS_AFFECTED(ch, AFF_WATER_BREATH) || domain_apotheosis(ch, DOMAIN_WATER) || rspec_req(ch, RSPEC_AQUATIC) || race_type(ch) == RTYPE_UNDEAD || (class_level(ch, CLASS_SORCERER) >= 20 && get_bloodline(ch) == BLOODLINE_WATER)) #define CAN_FIREWALK(ch) (IS_GOD(ch) || rspec_req(ch, RSPEC_FIRE) || is_immune(ch, SDESC_FIRE) || (class_level(ch, CLASS_SORCERER) >= 20 && get_bloodline(ch) == BLOODLINE_FIRE)) #define IS_HUMANOID(ch) (race_type(ch) == RTYPE_HUMANOID || race_type(ch) == RTYPE_MONSTROUS) #define IS_INCORPOREAL(ch) (rspec_req(ch, RSPEC_INCORPOREAL)) #define IS_FLYING(ch) (IS_AFFECTED(ch, AFF_FLYING)) #define CAN_FLY(ch) (is_affected(ch, gsn_fly) || race_table[get_race(ch)].fly_speed || IS_AFFECTED(ch, AFF2_ETHEREAL) || IS_INCORPOREAL(ch)) #define IS_GOOD(ch) (ch->alignment >= 350) #define IS_EVIL(ch) (ch->alignment <= -350) #define IS_LAWFUL(ch) (ch->ethos >= 350) #define IS_CHAOTIC(ch) (ch->ethos <= -350) #define IS_NEUTRAL(ch) (!IS_GOOD(ch) && !IS_EVIL(ch)) #define IS_UNCONCERNED(ch) (!IS_LAWFUL(ch) && !IS_CHAOTIC(ch)) #define IS_AWAKE(ch) (ch->position > POS_SLEEPING && !IS_AFFECTED(ch, AFF2_PETRIFICATION) && !IS_PLR(ch, PLR_DEAD)) #define IS_FLATFOOTED(ch) (!is_affected(ch, gsn_foresight) && !domain_apotheosis(ch, DOMAIN_PLANNING) && (ch->distracted || is_affected(ch, gsn_bluff) || (ch->position != POS_FIGHTING && !learned(ch, gsn_uncanny_dodge)))) #define IS_HELPLESS(ch) (ch->position <= POS_SLEEPING || (IS_AFFECTED(ch, AFF2_PARALYSIS) && !IS_AFFECTED(ch, AFF_FREEDOM)) || get_curr_dex(ch) == 0 || drunk_level(ch) >= DRUNK_TOTALLED) #define IS_OUTSIDE(ch) (ch->in_room != NULL \ && !IS_SET(ch->in_room->room_flags, ROOM_INDOORS) \ && ch->in_room->sector_type != SECT_INSIDE \ && ch->in_room->sector_type != SECT_UNDER_GROUND \ && ch->in_room->sector_type != SECT_UNDER_WATER \ && ch->in_room->sector_type != SECT_DEEP_EARTH) #define IS_INDOORS(ch) (ch->in_room != NULL \ IS_SET(ch->in_room->room_flags, ROOM_INDOORS) \ && (ch->in_room->sector_type == SECT_INSIDE \ || ch->in_room->sector_type == SECT_UNDER_GROUND \ || ch->in_room->sector_type == SECT_DEEP_EARTH)) #define NO_WEATHER_SECT(sect) (IS_SET(sector_table[sect].flags, SFLAG_NOWEATHER)) #define WAIT_STATE(ch, npulse) (ch->wait = UMAX(ch->wait, npulse*3/2)) #define COMBATMODE(ch, mode) (IS_SET(ch->combatmode, mode)) #define METAMAGIC(ch, mode) (IS_SET(ch->metamagic, mode)) #define combat_mount(ch) (IS_ACT(ch, ACT_WARHORSE) || learned(ch, gsn_combat_rearing)) #define is_mount(mount, ch) (IS_NPC(mount) && mount->master && mount->master == ch && ch->mounting == mount) #define faith_enemies(ch, victim) (ch->god && victim->god && god_table[victim->god].faith_enemy[ch->god]) /* Object macros. */ #define CAN_WEAR(obj, part) (IS_SET(obj->wear_flags, part) || ((part == CAN_WEAR_HOLD || part == CAN_WEAR_BOTH) && IS_SET(obj->wear_flags, CAN_WEAR_TAKE))) #define IS_OBJ_STAT(obj, stat) (IS_SET(obj->extra_flags, stat)) #define IS_WORN(obj) ((obj)->wear_loc > WEAR_NONE && (obj)->wear_loc < MAX_WEAR) #define IS_CARRIED(obj) ((obj)->carried_by && (obj)->wear_loc == WEAR_NONE) #define WEAR_LOC(obj, stat) ((obj)->wear_loc == stat) #define IS_OBJ_TYPE(obj, stat) ((obj)->item_type == stat) #define IS_WEAPON(obj) ((obj)->item_type == ITEM_WEAPON) #define IS_AMMO(obj) ((obj)->item_type == ITEM_AMMO) #define IS_ARMOR(obj) ((obj)->item_type == ITEM_ARMOR) #define WEAPON_FLAG(obj, stat) (((obj)->item_type == ITEM_WEAPON || (obj)->item_type == ITEM_AMMO) && IS_SET((obj)->value[1], stat)) #define ARMOR_FLAG(obj, stat) ((obj)->item_type == ITEM_ARMOR && IS_SET((obj)->value[1], stat)) #define TREASURE_FLAG(obj, stat) ((obj)->item_type == ITEM_TREASURE && IS_SET((obj)->value[0], stat)) #define WEAPON_TYPE(obj, stat) ((obj)->item_type == ITEM_WEAPON && (obj)->value[0] == stat) #define ARMOR_TYPE(obj, stat) ((obj)->item_type == ITEM_ARMOR && (obj)->value[0] == stat) #define TOOL_TYPE(obj, stat) ((obj)->item_type == ITEM_TOOLS && (obj)->value[0] == stat) #define IS_OBJ_GOOD(obj) (IS_OBJ_STAT(obj, ITEM_GOOD) || WEAPON_FLAG(obj,WFLAG_HOLY)) #define IS_OBJ_EVIL(obj) (IS_OBJ_STAT(obj, ITEM_EVIL) || WEAPON_FLAG(obj,WFLAG_UNHOLY)) #define IS_OBJ_LAWFUL(obj) (IS_OBJ_STAT(obj, ITEM_LAWFUL) || WEAPON_FLAG(obj, WFLAG_AXIOMATIC)) #define IS_OBJ_CHAOTIC(obj) (IS_OBJ_STAT(obj, ITEM_CHAOTIC) || WEAPON_FLAG(obj, WFLAG_ANARCHIC)) #define WSPEC(obj, stat) ((obj) != NULL && (obj)->item_type == ITEM_WEAPON && IS_SET(weapon_table[(obj)->value[0]].weap_spec, stat)) #define IS_OWNER(obj, ch) ((obj)->owned_by && !IS_NPC(ch) && (obj)->owned_by == (ch)->pcdata->pvnum) #define is_speedy(ch, wield, wield2) (IS_AFFECTED(ch, AFF_HASTE) || (wield != NULL && WEAPON_FLAG(wield, WFLAG_SPEED)) || (wield2 != NULL && WEAPON_FLAG(wield2, WFLAG_SPEED))) /* Trap macros */ #define is_trap_armed(obj) (IS_OBJ_TYPE(obj, ITEM_TRAP) && (obj)->value[3]) #define TRAP_TRIGGER(obj, stat) (IS_OBJ_TYPE(obj, ITEM_TRAP) && IS_SET(obj->value[2], stat)) #define TRAP_RESET(obj) (obj->value[1]) #define TRAP_STATE(obj) (obj->value[3]) #define TRAP_VALUE(obj) (obj->value[4]) /* Spell macros */ #define IS_AREA_SPELL(sn) (IS_SET(skill_table[sn].flags, SF_AREA_CONE|SF_AREA_BLAST|SF_ENEMIES|SF_AREA_LINE|SF_GROUP)) #define IS_OFFENSIVE(ch, sn) (skill_table[sn].target == TAR_CHAR_OFFENSIVE || skill_table[sn].target == TAR_OBJ_CHAR_OFF || (IS_UNDEAD(ch) && skill_table[sn].target == TAR_UNDEAD_OFF)) /* Structure for a command in the command lookup table. */ struct cmd_type { char * const name; DO_FUN * do_fun; bool position; sh_int level; int action; bool log; int flags; }; /* Structure for a social in the socials table. */ struct social_type { char * const name; char * const char_no_arg; char * const others_no_arg; char * const char_found; char * const others_found; char * const vict_found; char * const char_auto; char * const others_auto; }; /* Global constants. */ extern const struct slot_bonus_type slot_bonus_table [100]; extern const struct spell_level_type spell_slot_table [100]; extern const struct spell_level_type sorcerer_spell_table [100]; extern const struct warrior_spell_type warrior_spell_table [100]; extern const struct spell_level_type sorcerer_known_table [100]; extern const struct spell_level_type bard_known_table [100]; extern const struct bard_spell_type bard_spell_table [100]; extern const struct max_spell_type max_spell_table [21]; extern const struct armor_type armor_table []; extern const struct tool_type tool_table []; extern const struct component_type component_table []; extern const struct disease_type disease_table [MAX_DISEASE]; extern const struct poison_type poison_table [MAX_POISON]; extern const struct weapon_type weapon_table [WEAPON_TYPE_MAX]; extern const struct material_type material_table [MATERIAL_MAX]; extern const struct attack_type martial_arts_table []; extern const struct attack_type brawling_table []; extern const struct attack_part_type dam_no_dice [ATTK_MAX]; extern const struct attack_part_type dam_size_dice [ATTK_MAX]; extern struct race_type race_table [MAX_RACE]; extern struct god_type god_table [MAX_GOD]; extern struct skill_type skill_table []; extern const struct bitvector_type bitvector_table[]; extern const struct topic_data topic_table [MAX_TOPIC]; extern const struct race_type_type race_type_table [RTYPE_MAX]; extern const struct sector_type sector_table [SECT_MAX]; extern const struct cmd_type cmd_table []; extern const struct liq_type liq_table [LIQ_MAX]; extern const struct social_type social_table []; extern char * const title_table [MAX_CLASS] [MAX_LEVEL+1] [2]; extern char * const dir_name []; extern char * const rev_dir_name []; extern const sh_int rev_dir []; extern char * const wind_dir_name []; extern const int trap_door[]; extern const int trap_dir[]; extern int wflag_cost_mod []; extern int armflag_cost_mod []; extern char * const light_levels []; extern char * const move_speeds []; extern char * const he_she []; extern char * const him_her []; extern char * const his_her []; extern char * const a_flags []; extern char * const a2_flags []; extern char * const a_types []; extern char * const bab_saves []; extern char * const act_flags []; extern char * const area_flags []; extern char * const arm_types []; extern char * const bow_types []; extern char * const combat_styles []; extern char * const cont_flags []; extern char * const domain_types []; extern char * const dtype_flags []; extern char * const metamagic_flags []; extern char * const exit_flags []; extern char * const f_flags []; extern char * const furn_poses []; extern char * const god_types []; extern char * const lang_names []; extern char * const liq_types []; extern char * const material_types []; extern char * const component_flags []; extern char * const mprog_flags []; extern char * const o_flags []; extern char * const o_types []; extern char * const p_types []; extern char * const attack_part_flags []; extern char * const plr_flags []; extern char * const poison_names []; extern char * const disease_names []; extern char * const portal_flags []; extern char * const r_flags []; extern char * const r_types []; extern char * const class_types []; extern char * const body_types []; extern char * const race_specs []; extern char * const faith_ranks []; extern char * const reset_exit_types []; extern char * const reset_rand_types []; extern char * const rtype_flags []; extern char * const race_enemy_names []; extern char * const school_types []; extern char * const oppschool_types []; extern char * const bloodline_types []; extern char * const spell_flags []; extern char * const save_flags []; extern char * const target_types []; extern char * const prof_flags []; extern char * const sdesc_flags []; extern char * const sect_types []; extern char * const sex_types []; extern char * const size_types []; extern char * const tool_types []; extern char * const w_flags []; extern char * const weap_types []; extern char * const weapon_flag_descs []; extern char * const weapon_flags []; extern char * const wear_locs []; extern char * const material_types []; extern char * const trap_triggers []; extern char * const trap_types []; extern char * const function_flags []; extern char * const crime_titles []; /* Global variables. */ MUD_DATA * mud; COMBAT_DATA * battle_list; FILE * fpReserve; FILE * fpAppend; ROOM_INDEX_DATA * room_index[MAX_VNUM]; MOB_INDEX_DATA * mob_index[MAX_VNUM]; OBJ_INDEX_DATA * obj_index[MAX_VNUM]; PVNUM_DATA * pvnum_index[MAX_PVNUM]; char * str_empty; char mpdamstring[MAX_INPUT_LENGTH]; #define NOT_AUTHED(ch) (!IS_NPC((ch)) && get_auth_state((ch)) != AUTH_AUTHED \ && IS_SET(pvnum_index[(ch)->pcdata->pvnum]->flags, PVNUM_UNAUTHED)) #define NEW_AUTH(ch) ((!IS_NPC((ch)) && (ch)->level == 1) || NOT_AUTHED((ch))) #define IS_WAITING_FOR_AUTH(ch) (!IS_NPC((ch)) && (ch)->desc && get_auth_state((ch)) == AUTH_ONLINE \ && IS_SET(pvnum_index[(ch)->pcdata->pvnum]->flags, PVNUM_UNAUTHED)) /* Command functions. Defined in act_*.c (mostly). */ DECLARE_DO_FUN( do_a ); DECLARE_DO_FUN( do_activate); DECLARE_DO_FUN( do_abilities); DECLARE_DO_FUN( do_adjective); DECLARE_DO_FUN( do_advance ); DECLARE_DO_FUN( do_affects ); DECLARE_DO_FUN( do_afk ); DECLARE_DO_FUN( do_ahelp ); DECLARE_DO_FUN( do_aid ); DECLARE_DO_FUN( do_alchemy ); DECLARE_DO_FUN( do_alias ); DECLARE_DO_FUN( do_alist ); DECLARE_DO_FUN( do_appraise ); DECLARE_DO_FUN( do_area_assign ); DECLARE_DO_FUN( do_areas ); DECLARE_DO_FUN( do_arrest ); DECLARE_DO_FUN( do_assassinate ); DECLARE_DO_FUN( do_astat ); DECLARE_DO_FUN( do_at ); DECLARE_DO_FUN( do_attack ); DECLARE_DO_FUN( do_authorize); DECLARE_DO_FUN( do_bamfin ); DECLARE_DO_FUN( do_bamfout ); DECLARE_DO_FUN( do_ban ); DECLARE_DO_FUN( do_bank ); DECLARE_DO_FUN( do_bash ); DECLARE_DO_FUN( do_beep ); DECLARE_DO_FUN( do_bio ); DECLARE_DO_FUN( do_block ); DECLARE_DO_FUN( do_bluff ); DECLARE_DO_FUN( do_feint ); DECLARE_DO_FUN( do_taunt ); DECLARE_DO_FUN( do_tie ); DECLARE_DO_FUN( do_bounty ); DECLARE_DO_FUN( do_breath ); DECLARE_DO_FUN( do_brew ); DECLARE_DO_FUN( do_buffer ); DECLARE_DO_FUN( do_burn ); DECLARE_DO_FUN( do_buy ); DECLARE_DO_FUN( do_bullrush ); DECLARE_DO_FUN( do_camp ); DECLARE_DO_FUN( do_cast ); DECLARE_DO_FUN( do_castle ); DECLARE_DO_FUN( do_question); DECLARE_DO_FUN( do_answer); DECLARE_DO_FUN( do_chat ); DECLARE_DO_FUN( do_charge ); DECLARE_DO_FUN( do_claim ); DECLARE_DO_FUN( do_clan_mssg); DECLARE_DO_FUN( do_clans ); DECLARE_DO_FUN( do_clanset ); DECLARE_DO_FUN( do_clanwhere ); DECLARE_DO_FUN( do_showclass ); DECLARE_DO_FUN( do_cloak ); DECLARE_DO_FUN( do_clock ); DECLARE_DO_FUN( do_close ); DECLARE_DO_FUN( do_coffer ); DECLARE_DO_FUN( do_color ); DECLARE_DO_FUN( do_combatmode ); DECLARE_DO_FUN( do_commands ); DECLARE_DO_FUN( do_components); DECLARE_DO_FUN( do_compare ); DECLARE_DO_FUN( do_conceal ); DECLARE_DO_FUN( do_config ); DECLARE_DO_FUN( do_connect ); DECLARE_DO_FUN( do_consider ); DECLARE_DO_FUN( do_context_help ); DECLARE_DO_FUN( do_cook ); DECLARE_DO_FUN( do_copyover ); DECLARE_DO_FUN( do_counterspell ); DECLARE_DO_FUN( do_coupdegrace); DECLARE_DO_FUN( do_craft_poison ); DECLARE_DO_FUN( do_craft_armor ); DECLARE_DO_FUN( do_craft_weapons ); DECLARE_DO_FUN( do_craft_fletching ); DECLARE_DO_FUN( do_cpu ); DECLARE_DO_FUN( do_craft ); DECLARE_DO_FUN( do_credits ); DECLARE_DO_FUN( do_death ); DECLARE_DO_FUN( do_delete ); DECLARE_DO_FUN( do_deny ); DECLARE_DO_FUN( do_demand ); DECLARE_DO_FUN( do_description ); DECLARE_DO_FUN( do_destroy ); DECLARE_DO_FUN( do_diceroll ); DECLARE_DO_FUN( do_disarm ); DECLARE_DO_FUN( do_disconnect ); DECLARE_DO_FUN( do_disguise ); DECLARE_DO_FUN( do_dismiss ); DECLARE_DO_FUN( do_dismount ); DECLARE_DO_FUN( do_divert ); DECLARE_DO_FUN( do_domain ); DECLARE_DO_FUN( do_donate ); DECLARE_DO_FUN( do_disable ); DECLARE_DO_FUN( do_discharge ); DECLARE_DO_FUN( do_door ); DECLARE_DO_FUN( do_down ); DECLARE_DO_FUN( do_drag ); DECLARE_DO_FUN( do_draw ); DECLARE_DO_FUN( do_drink ); DECLARE_DO_FUN( do_drop ); DECLARE_DO_FUN( do_dump ); DECLARE_DO_FUN( do_east ); DECLARE_DO_FUN( do_eat ); DECLARE_DO_FUN( do_echo ); DECLARE_DO_FUN( do_edit ); DECLARE_DO_FUN( do_email ); DECLARE_DO_FUN( do_emote ); DECLARE_DO_FUN( do_empty ); DECLARE_DO_FUN( do_enchant ); DECLARE_DO_FUN( do_enter ); DECLARE_DO_FUN( do_equipment ); DECLARE_DO_FUN( do_withdraw ); DECLARE_DO_FUN( do_examine ); DECLARE_DO_FUN( do_exits ); DECLARE_DO_FUN( do_familiar ); DECLARE_DO_FUN( do_faveenemy); DECLARE_DO_FUN( do_feats ); DECLARE_DO_FUN( do_fight ); DECLARE_DO_FUN( do_file ); DECLARE_DO_FUN( do_fill ); DECLARE_DO_FUN( do_finger ); DECLARE_DO_FUN( do_fish ); DECLARE_DO_FUN( do_fixpass ); DECLARE_DO_FUN( do_fly ); DECLARE_DO_FUN( do_follow ); DECLARE_DO_FUN( do_forage ); DECLARE_DO_FUN( do_force ); DECLARE_DO_FUN( do_forceren ); DECLARE_DO_FUN( do_forcerent ); DECLARE_DO_FUN( do_forget ); DECLARE_DO_FUN( do_freeze ); DECLARE_DO_FUN( do_gaze ); DECLARE_DO_FUN( do_get ); DECLARE_DO_FUN( do_give ); DECLARE_DO_FUN( do_goto ); DECLARE_DO_FUN( do_gouge ); DECLARE_DO_FUN( do_grapple ); DECLARE_DO_FUN( do_greet ); DECLARE_DO_FUN( do_grep ); DECLARE_DO_FUN( do_group ); DECLARE_DO_FUN( do_heal ); DECLARE_DO_FUN( do_help ); DECLARE_DO_FUN( do_hlist ); DECLARE_DO_FUN( do_hold ); DECLARE_DO_FUN( do_holylight ); DECLARE_DO_FUN( do_html ); DECLARE_DO_FUN( do_identify ); DECLARE_DO_FUN( do_immtalk ); DECLARE_DO_FUN( do_initiate ); DECLARE_DO_FUN( do_instaroom ); DECLARE_DO_FUN( do_instazone ); DECLARE_DO_FUN( do_intimidate ); DECLARE_DO_FUN( do_inventory ); DECLARE_DO_FUN( do_invis ); DECLARE_DO_FUN( do_join ); DECLARE_DO_FUN( do_jump ); DECLARE_DO_FUN( do_junk ); DECLARE_DO_FUN( do_kneel ); DECLARE_DO_FUN( do_knock ); DECLARE_DO_FUN( do_land ); DECLARE_DO_FUN( do_languages); DECLARE_DO_FUN( do_learn ); DECLARE_DO_FUN( do_level ); DECLARE_DO_FUN( do_locate ); DECLARE_DO_FUN( do_list ); DECLARE_DO_FUN( do_listen ); DECLARE_DO_FUN( do_lock ); DECLARE_DO_FUN( do_log ); DECLARE_DO_FUN( do_look ); DECLARE_DO_FUN( do_lookup ); DECLARE_DO_FUN( do_madd ); DECLARE_DO_FUN( do_makeclan ); DECLARE_DO_FUN( do_makewild ); DECLARE_DO_FUN( do_mana ); DECLARE_DO_FUN( do_map ); DECLARE_DO_FUN( do_maze ); DECLARE_DO_FUN( do_memory ); DECLARE_DO_FUN( do_metamagic ); DECLARE_DO_FUN( do_mfind ); DECLARE_DO_FUN( do_mlist ); DECLARE_DO_FUN( do_slist ); DECLARE_DO_FUN( do_inn_list ); DECLARE_DO_FUN( do_stable_list ); DECLARE_DO_FUN( do_mload ); DECLARE_DO_FUN( do_mount ); DECLARE_DO_FUN( do_move ); DECLARE_DO_FUN( do_mpareaecho); DECLARE_DO_FUN( do_mpaset ); DECLARE_DO_FUN( do_mpasound ); DECLARE_DO_FUN( do_mpat ); DECLARE_DO_FUN( do_mpcalculate); DECLARE_DO_FUN( do_mpclearfeat); DECLARE_DO_FUN( do_mpcommands ); DECLARE_DO_FUN( do_mpcommands ); DECLARE_DO_FUN( do_mpdamage ); DECLARE_DO_FUN( do_mpdelay ); DECLARE_DO_FUN( do_mpdo ); DECLARE_DO_FUN( do_mpecho ); DECLARE_DO_FUN( do_mpechoaround); DECLARE_DO_FUN( do_mpechoat ); DECLARE_DO_FUN( do_mpfollow ); DECLARE_DO_FUN( do_mpforce ); DECLARE_DO_FUN( do_mpgorand ); DECLARE_DO_FUN( do_mpgoto ); DECLARE_DO_FUN( do_mpinfect ); DECLARE_DO_FUN( do_mpjunk ); DECLARE_DO_FUN( do_mpjunk_person); DECLARE_DO_FUN( do_mpkill ); DECLARE_DO_FUN( do_mplock ); DECLARE_DO_FUN( do_mplog ); DECLARE_DO_FUN( do_mpmadd ); DECLARE_DO_FUN( do_mpmload ); DECLARE_DO_FUN( do_mpmset ); DECLARE_DO_FUN( do_mpoadd ); DECLARE_DO_FUN( do_mpoload ); DECLARE_DO_FUN( do_mposet ); DECLARE_DO_FUN( do_mppractice ); DECLARE_DO_FUN( do_mppoison ); DECLARE_DO_FUN( do_mppurge ); DECLARE_DO_FUN( do_mpquiet ); DECLARE_DO_FUN( do_mpstat ); DECLARE_DO_FUN( do_mpsetfeat); DECLARE_DO_FUN( do_mpswap ); DECLARE_DO_FUN( do_mptransfer ); DECLARE_DO_FUN( do_mptrigger ); DECLARE_DO_FUN( do_mpunintercept ); DECLARE_DO_FUN( do_mpunlock ); DECLARE_DO_FUN( do_mpwalkto ); DECLARE_DO_FUN( do_mpzset ); DECLARE_DO_FUN( do_mset ); DECLARE_DO_FUN( do_mstat ); DECLARE_DO_FUN( do_mute ); DECLARE_DO_FUN( do_mwhere ); DECLARE_DO_FUN( do_nban ); DECLARE_DO_FUN( do_nominate ); DECLARE_DO_FUN( do_north ); DECLARE_DO_FUN( do_nohelps ); DECLARE_DO_FUN( do_note ); DECLARE_DO_FUN( do_ofind ); DECLARE_DO_FUN( do_olist ); DECLARE_DO_FUN( do_oload ); DECLARE_DO_FUN( do_open ); DECLARE_DO_FUN( do_openfiles ); DECLARE_DO_FUN( do_opstat ); DECLARE_DO_FUN( do_order ); DECLARE_DO_FUN( do_osay ); DECLARE_DO_FUN( do_oset ); DECLARE_DO_FUN( do_ostat ); DECLARE_DO_FUN( do_outcast ); DECLARE_DO_FUN( do_owhere ); DECLARE_DO_FUN( do_pardon ); DECLARE_DO_FUN( do_password ); DECLARE_DO_FUN( do_peace ); DECLARE_DO_FUN( do_peek ); DECLARE_DO_FUN( do_pick ); DECLARE_DO_FUN( do_plant ); DECLARE_DO_FUN( do_pledge ); DECLARE_DO_FUN( do_pload ); DECLARE_DO_FUN( do_poison ); DECLARE_DO_FUN( do_port ); DECLARE_DO_FUN( do_pose ); DECLARE_DO_FUN( do_pounce ); DECLARE_DO_FUN( do_pquit ); DECLARE_DO_FUN( do_pray ); DECLARE_DO_FUN( do_prepare ); DECLARE_DO_FUN( do_prompt ); DECLARE_DO_FUN( do_purge ); DECLARE_DO_FUN( do_put ); DECLARE_DO_FUN( do_qui ); DECLARE_DO_FUN( do_quit ); DECLARE_DO_FUN( do_racecast ); DECLARE_DO_FUN( do_showrace ); DECLARE_DO_FUN( do_rcreate ); DECLARE_DO_FUN( do_rdelete ); DECLARE_DO_FUN( do_rdupe ); DECLARE_DO_FUN( do_reboo ); DECLARE_DO_FUN( do_reboot ); DECLARE_DO_FUN( do_recall ); DECLARE_DO_FUN( do_recho ); DECLARE_DO_FUN( do_refresh ); DECLARE_DO_FUN( do_regoto ); DECLARE_DO_FUN( do_release ); DECLARE_DO_FUN( do_reload ); DECLARE_DO_FUN( do_remove ); DECLARE_DO_FUN( do_rename ); DECLARE_DO_FUN( do_rend ); DECLARE_DO_FUN( do_renounce ); DECLARE_DO_FUN( do_rent ); DECLARE_DO_FUN( do_clan_rent); DECLARE_DO_FUN( do_repeat ); DECLARE_DO_FUN( do_reply ); DECLARE_DO_FUN( do_rpstat ); DECLARE_DO_FUN( do_rescale ); DECLARE_DO_FUN( do_respawn ); DECLARE_DO_FUN( do_resurrect); DECLARE_DO_FUN( do_repair ); DECLARE_DO_FUN( do_request ); DECLARE_DO_FUN( do_rescue ); DECLARE_DO_FUN( do_resetarea ); DECLARE_DO_FUN( do_resistances ); DECLARE_DO_FUN( do_rest ); DECLARE_DO_FUN( do_restore ); DECLARE_DO_FUN( do_retran ); DECLARE_DO_FUN( do_return ); DECLARE_DO_FUN( do_reveal ); DECLARE_DO_FUN( do_revert ); DECLARE_DO_FUN( do_recover ); DECLARE_DO_FUN( do_reward ); DECLARE_DO_FUN( do_rlist ); DECLARE_DO_FUN( do_rstat ); DECLARE_DO_FUN( do_sacrifice); DECLARE_DO_FUN( do_save ); DECLARE_DO_FUN( do_savearea ); DECLARE_DO_FUN( do_savewho ); DECLARE_DO_FUN( do_say ); DECLARE_DO_FUN( do_sayto ); DECLARE_DO_FUN( do_scan ); DECLARE_DO_FUN( do_school ); DECLARE_DO_FUN( do_score ); DECLARE_DO_FUN( do_scribe ); DECLARE_DO_FUN( do_search ); DECLARE_DO_FUN( do_sell ); DECLARE_DO_FUN( do_setfunc ); DECLARE_DO_FUN( do_shadow ); DECLARE_DO_FUN( do_sheath ); DECLARE_DO_FUN( do_shoot ); DECLARE_DO_FUN( do_shout ); DECLARE_DO_FUN( do_shove ); DECLARE_DO_FUN( do_show ); DECLARE_DO_FUN( do_showbloodline); DECLARE_DO_FUN( do_showcurve ); /* in act_wiz.c */ DECLARE_DO_FUN( do_showdomain ); DECLARE_DO_FUN( do_showgod ); DECLARE_DO_FUN( do_shutdow ); DECLARE_DO_FUN( do_shutdown ); DECLARE_DO_FUN( do_shutoff ); DECLARE_DO_FUN( do_silence ); DECLARE_DO_FUN( do_sing ); DECLARE_DO_FUN( do_crouch ); DECLARE_DO_FUN( do_sit ); DECLARE_DO_FUN( do_skills ); DECLARE_DO_FUN( do_skin ); DECLARE_DO_FUN( do_sla ); DECLARE_DO_FUN( do_slay ); DECLARE_DO_FUN( do_sleep ); DECLARE_DO_FUN( do_slice ); DECLARE_DO_FUN( do_slookup ); DECLARE_DO_FUN( do_songs ); DECLARE_DO_FUN( do_pemote ); DECLARE_DO_FUN( do_snoop ); DECLARE_DO_FUN( do_socials ); DECLARE_DO_FUN( do_south ); DECLARE_DO_FUN( do_speak ); DECLARE_DO_FUN( do_speed ); DECLARE_DO_FUN( do_spells ); DECLARE_DO_FUN( do_split ); DECLARE_DO_FUN( do_spy ); DECLARE_DO_FUN( do_sset ); DECLARE_DO_FUN( do_sstat ); DECLARE_DO_FUN( do_stack ); /* in debug.c */ DECLARE_DO_FUN( do_stable ); DECLARE_DO_FUN( do_stand ); DECLARE_DO_FUN( do_steal ); DECLARE_DO_FUN( do_stealth ); DECLARE_DO_FUN( do_strike ); DECLARE_DO_FUN( do_stun ); DECLARE_DO_FUN( do_sunder ); DECLARE_DO_FUN( do_swindle ); DECLARE_DO_FUN( do_switch ); DECLARE_DO_FUN( do_tame ); DECLARE_DO_FUN( do_teach ); DECLARE_DO_FUN( do_tell ); DECLARE_DO_FUN( do_otell ); DECLARE_DO_FUN( do_test ); DECLARE_DO_FUN( do_think ); DECLARE_DO_FUN( do_throw ); DECLARE_DO_FUN( do_tick ); DECLARE_DO_FUN( do_time ); DECLARE_DO_FUN( do_timemode ); DECLARE_DO_FUN( do_title ); DECLARE_DO_FUN( do_track ); DECLARE_DO_FUN( do_train ); DECLARE_DO_FUN( do_trample ); DECLARE_DO_FUN( do_transfer ); DECLARE_DO_FUN( do_trip ); DECLARE_DO_FUN( do_unalias ); DECLARE_DO_FUN( do_unlock ); DECLARE_DO_FUN( do_untie ); DECLARE_DO_FUN( do_up ); DECLARE_DO_FUN( do_usage ); DECLARE_DO_FUN( do_use ); DECLARE_DO_FUN( do_value ); DECLARE_DO_FUN( do_version ); /* in debug.c */ DECLARE_DO_FUN( do_visible ); DECLARE_DO_FUN( do_mimic ); DECLARE_DO_FUN( do_vt100 ); DECLARE_DO_FUN( do_delay ); DECLARE_DO_FUN( do_warn ); DECLARE_DO_FUN( do_wake ); DECLARE_DO_FUN( do_waypoint ); DECLARE_DO_FUN( do_weapons ); DECLARE_DO_FUN( do_wear ); DECLARE_DO_FUN( do_weather ); DECLARE_DO_FUN( do_west ); DECLARE_DO_FUN( do_where ); DECLARE_DO_FUN( do_whirl ); DECLARE_DO_FUN( do_whisper ); DECLARE_DO_FUN( do_who ); DECLARE_DO_FUN( do_wizhelp ); DECLARE_DO_FUN( do_wizlock ); DECLARE_DO_FUN( do_write ); DECLARE_DO_FUN( do_read ); DECLARE_DO_FUN( do_seal ); DECLARE_DO_FUN( do_unseal ); DECLARE_DO_FUN( do_unarrest ); DECLARE_DO_FUN( do_link ); DECLARE_DO_FUN( do_complaint); DECLARE_DO_FUN( do_hitch ); DECLARE_DO_FUN( do_unhitch ); /* Spell-like and supernatural ability functions. Defined in skills.c. */ DECLARE_SPELL_FUN( ability_arcane_weapon ); DECLARE_SPELL_FUN( ability_channeling_attack); DECLARE_SPELL_FUN( ability_companion ); DECLARE_SPELL_FUN( ability_corrupt_touch ); DECLARE_SPELL_FUN( ability_death_arrow ); DECLARE_SPELL_FUN( ability_death_arrow ); DECLARE_SPELL_FUN( ability_defensive_stance); DECLARE_SPELL_FUN( ability_divine_refuge ); DECLARE_SPELL_FUN( ability_divine_location ); DECLARE_SPELL_FUN( ability_divine_veil ); DECLARE_SPELL_FUN( ability_divine_wrath ); DECLARE_SPELL_FUN( ability_energy_arrow ); DECLARE_SPELL_FUN( ability_hail_of_arrows ); DECLARE_SPELL_FUN( ability_imbue_arrow ); DECLARE_SPELL_FUN( ability_impromptu_sneak_attack); DECLARE_SPELL_FUN( ability_lay_hands ); DECLARE_SPELL_FUN( ability_pilfer_dweomer ); DECLARE_SPELL_FUN( ability_rage ); DECLARE_SPELL_FUN( ability_retributive_strike ); DECLARE_SPELL_FUN( ability_seeker_arrow ); DECLARE_SPELL_FUN( ability_shadow_companion); DECLARE_SPELL_FUN( ability_skip_rock ); DECLARE_SPELL_FUN( ability_smite ); DECLARE_SPELL_FUN( ability_turn_undead ); DECLARE_SPELL_FUN( ability_touch_of_courage); DECLARE_SPELL_FUN( ability_touch_of_grace ); DECLARE_SPELL_FUN( ability_touch_of_resolve); DECLARE_SPELL_FUN( ability_touch_of_zeal ); DECLARE_SPELL_FUN( ability_touch_of_righteousness); DECLARE_SPELL_FUN( ability_touch_of_profanity); DECLARE_SPELL_FUN( ability_warhorse ); DECLARE_SPELL_FUN( ability_web_attack ); DECLARE_SPELL_FUN( ability_wild_empathy ); DECLARE_SPELL_FUN( ability_wildshape ); /* Song functions. Defined in magic.c. */ DECLARE_SPELL_FUN( song_curse_song ); DECLARE_SPELL_FUN( song_song_of_inspiration); DECLARE_SPELL_FUN( song_song_of_suggestion); DECLARE_SPELL_FUN( song_song_of_heroism); DECLARE_SPELL_FUN( song_song_of_fascination); DECLARE_SPELL_FUN( song_song_of_courage); DECLARE_SPELL_FUN( song_song_of_freedom); DECLARE_SPELL_FUN( song_song_of_sleep); DECLARE_SPELL_FUN( song_song_of_soothing); DECLARE_SPELL_FUN( song_dirge_of_doom ); /* Spell functions. Defined in magic.c. */ DECLARE_SPELL_FUN( spell_ray_of_frost ); DECLARE_SPELL_FUN( spell_flame_tongue ); DECLARE_SPELL_FUN( spell_acid_arrow ); DECLARE_SPELL_FUN( spell_acid_breath ); DECLARE_SPELL_FUN( spell_acid_spittle ); DECLARE_SPELL_FUN( spell_acid_splash ); DECLARE_SPELL_FUN( spell_admonishing_ray ); DECLARE_SPELL_FUN( spell_aid ); DECLARE_SPELL_FUN( spell_align_weapon ); DECLARE_SPELL_FUN( spell_animate_dead ); DECLARE_SPELL_FUN( spell_animate_object ); DECLARE_SPELL_FUN( spell_antimagic_field ); DECLARE_SPELL_FUN( spell_affect ); DECLARE_SPELL_FUN( spell_arcane_eye ); DECLARE_SPELL_FUN( spell_banish ); DECLARE_SPELL_FUN( spell_blacklight ); DECLARE_SPELL_FUN( spell_black_tentacles ); DECLARE_SPELL_FUN( spell_break_enchantment ); DECLARE_SPELL_FUN( spell_burning_hands ); DECLARE_SPELL_FUN( spell_call_lightning ); DECLARE_SPELL_FUN( spell_calm ); DECLARE_SPELL_FUN( spell_cause_fear ); DECLARE_SPELL_FUN( spell_chain_lightning ); DECLARE_SPELL_FUN( spell_charm ); DECLARE_SPELL_FUN( spell_chill_touch ); DECLARE_SPELL_FUN( spell_circle_of_death ); DECLARE_SPELL_FUN( spell_cloudkill ); DECLARE_SPELL_FUN( spell_command ); DECLARE_SPELL_FUN( spell_color_spray ); DECLARE_SPELL_FUN( spell_cone_of_cold ); DECLARE_SPELL_FUN( spell_conj_elemental ); DECLARE_SPELL_FUN( spell_contagion ); DECLARE_SPELL_FUN( spell_contraption ); DECLARE_SPELL_FUN( spell_control_weather ); DECLARE_SPELL_FUN( spell_create_food ); DECLARE_SPELL_FUN( spell_create_spring ); DECLARE_SPELL_FUN( spell_create_water ); DECLARE_SPELL_FUN( spell_creeping_doom ); DECLARE_SPELL_FUN( spell_cure ); DECLARE_SPELL_FUN( spell_dancing_lights ); DECLARE_SPELL_FUN( spell_darkness ); DECLARE_SPELL_FUN( spell_daylight ); DECLARE_SPELL_FUN( spell_destruction ); DECLARE_SPELL_FUN( spell_gate ); DECLARE_SPELL_FUN( spell_death_knell ); DECLARE_SPELL_FUN( spell_demand ); DECLARE_SPELL_FUN( spell_detect_alignment ); DECLARE_SPELL_FUN( spell_detect_poison ); DECLARE_SPELL_FUN( spell_detect_undead ); DECLARE_SPELL_FUN( spell_detect_shapechanger); DECLARE_SPELL_FUN( spell_dimensional_lock ); DECLARE_SPELL_FUN( spell_discern_location ); DECLARE_SPELL_FUN( spell_disintegrate ); DECLARE_SPELL_FUN( spell_disjunction ); DECLARE_SPELL_FUN( spell_dispel_alignment ); DECLARE_SPELL_FUN( spell_dispel_magic ); DECLARE_SPELL_FUN( spell_disrupt_undead ); DECLARE_SPELL_FUN( spell_dominate ); DECLARE_SPELL_FUN( spell_earthquake ); DECLARE_SPELL_FUN( spell_electric_jolt ); DECLARE_SPELL_FUN( spell_endure_elements ); DECLARE_SPELL_FUN( spell_energy_drain ); DECLARE_SPELL_FUN( spell_enervation ); DECLARE_SPELL_FUN( spell_entangle ); DECLARE_SPELL_FUN( spell_envision ); DECLARE_SPELL_FUN( spell_euphoria_gas ); DECLARE_SPELL_FUN( spell_eyebite ); DECLARE_SPELL_FUN( spell_faerie_fire ); DECLARE_SPELL_FUN( spell_faithful_hound ); DECLARE_SPELL_FUN( spell_faith_hammer ); DECLARE_SPELL_FUN( spell_farheal ); DECLARE_SPELL_FUN( spell_fatigue ); DECLARE_SPELL_FUN( spell_fear_gas ); DECLARE_SPELL_FUN( spell_finger_of_death ); DECLARE_SPELL_FUN( spell_fire_breath ); DECLARE_SPELL_FUN( spell_fireball ); DECLARE_SPELL_FUN( spell_firestorm ); DECLARE_SPELL_FUN( spell_flame_arrow ); DECLARE_SPELL_FUN( spell_flame_blade ); DECLARE_SPELL_FUN( spell_flamestrike ); DECLARE_SPELL_FUN( spell_floating_disc ); DECLARE_SPELL_FUN( spell_fly ); DECLARE_SPELL_FUN( spell_fog_cloud ); DECLARE_SPELL_FUN( spell_forceful_hand ); DECLARE_SPELL_FUN( spell_freedom ); DECLARE_SPELL_FUN( spell_frost_breath ); DECLARE_SPELL_FUN( spell_gas_breath ); DECLARE_SPELL_FUN( spell_gentle_repose ); DECLARE_SPELL_FUN( spell_gust_of_wind ); DECLARE_SPELL_FUN( spell_grasping_hand ); DECLARE_SPELL_FUN( spell_greater_teleport ); DECLARE_SPELL_FUN( spell_hallucinatory_terrain); DECLARE_SPELL_FUN( spell_harden ); DECLARE_SPELL_FUN( spell_harm ); DECLARE_SPELL_FUN( spell_heal ); DECLARE_SPELL_FUN( spell_heal_mount ); DECLARE_SPELL_FUN( spell_heat_metal ); DECLARE_SPELL_FUN( spell_heroes_feast ); DECLARE_SPELL_FUN( spell_hold ); DECLARE_SPELL_FUN( spell_horrid_wilting ); DECLARE_SPELL_FUN( spell_ice_storm ); DECLARE_SPELL_FUN( spell_implosion ); DECLARE_SPELL_FUN( spell_inflict ); DECLARE_SPELL_FUN( spell_invis ); DECLARE_SPELL_FUN( spell_improved_invis ); DECLARE_SPELL_FUN( spell_insect_plague ); DECLARE_SPELL_FUN( spell_keen_edge ); DECLARE_SPELL_FUN( spell_knock ); DECLARE_SPELL_FUN( spell_light ); DECLARE_SPELL_FUN( spell_lightning_bolt ); DECLARE_SPELL_FUN( spell_lightning_breath ); DECLARE_SPELL_FUN( spell_locate_creature ); DECLARE_SPELL_FUN( spell_locate_object ); DECLARE_SPELL_FUN( spell_magic_missile ); DECLARE_SPELL_FUN( spell_magic_vestment ); DECLARE_SPELL_FUN( spell_magic_weapon ); DECLARE_SPELL_FUN( spell_major_image ); DECLARE_SPELL_FUN( spell_make_whole ); DECLARE_SPELL_FUN( spell_mass_bears_endurance); DECLARE_SPELL_FUN( spell_mass_bulls_strength ); DECLARE_SPELL_FUN( spell_mass_cats_grace ); DECLARE_SPELL_FUN( spell_mass_cure ); DECLARE_SPELL_FUN( spell_mass_heal ); DECLARE_SPELL_FUN( spell_mass_inflict ); DECLARE_SPELL_FUN( spell_mass_invis ); DECLARE_SPELL_FUN( spell_mass_refresh ); DECLARE_SPELL_FUN( spell_mending ); DECLARE_SPELL_FUN( spell_meteor_swarm ); DECLARE_SPELL_FUN( spell_mislead ); DECLARE_SPELL_FUN( spell_neutralize_poison ); DECLARE_SPELL_FUN( spell_nightmare ); DECLARE_SPELL_FUN( spell_nondetection ); DECLARE_SPELL_FUN( spell_null ); DECLARE_SPELL_FUN( spell_paralysis_gas ); DECLARE_SPELL_FUN( spell_permanency ); DECLARE_SPELL_FUN( spell_phantasmal_killer ); DECLARE_SPELL_FUN( spell_poison ); DECLARE_SPELL_FUN( spell_polymorph ); DECLARE_SPELL_FUN( spell_possess ); DECLARE_SPELL_FUN( spell_power_word_blind ); DECLARE_SPELL_FUN( spell_power_word_kill ); DECLARE_SPELL_FUN( spell_power_word_stun ); DECLARE_SPELL_FUN( spell_private_sanctum ); DECLARE_SPELL_FUN( spell_produce_flame ); DECLARE_SPELL_FUN( spell_protection_energy ); DECLARE_SPELL_FUN( spell_protection_spells ); DECLARE_SPELL_FUN( spell_psionic_shockwave ); DECLARE_SPELL_FUN( spell_purify ); DECLARE_SPELL_FUN( spell_rainbow_pattern ); DECLARE_SPELL_FUN( spell_raise_dead ); DECLARE_SPELL_FUN( spell_rebuke ); DECLARE_SPELL_FUN( spell_refresh ); DECLARE_SPELL_FUN( spell_reincarnate ); DECLARE_SPELL_FUN( spell_remove_blindness ); DECLARE_SPELL_FUN( spell_remove_curse ); DECLARE_SPELL_FUN( spell_remove_deafness ); DECLARE_SPELL_FUN( spell_remove_disease ); DECLARE_SPELL_FUN( spell_remove_paralysis ); DECLARE_SPELL_FUN( spell_remove_fear ); DECLARE_SPELL_FUN( spell_resist_elements ); DECLARE_SPELL_FUN( spell_restoration ); DECLARE_SPELL_FUN( spell_resurrection ); DECLARE_SPELL_FUN( spell_revive ); DECLARE_SPELL_FUN( spell_rusting_grasp ); DECLARE_SPELL_FUN( spell_sanctify ); DECLARE_SPELL_FUN( spell_scorching_ray ); DECLARE_SPELL_FUN( spell_scintillating_pattern ); DECLARE_SPELL_FUN( spell_scrying ); DECLARE_SPELL_FUN( spell_searing_light ); DECLARE_SPELL_FUN( spell_sending ); DECLARE_SPELL_FUN( spell_secure_shelter ); DECLARE_SPELL_FUN( spell_shadow_bolt ); DECLARE_SPELL_FUN( spell_shatter ); DECLARE_SPELL_FUN( spell_shillelagh ); DECLARE_SPELL_FUN( spell_shocking_grasp ); DECLARE_SPELL_FUN( spell_shout ); DECLARE_SPELL_FUN( spell_sign_of_wrath ); DECLARE_SPELL_FUN( spell_simulacrum ); DECLARE_SPELL_FUN( spell_sirocco ); DECLARE_SPELL_FUN( spell_slay_living ); DECLARE_SPELL_FUN( spell_sleep ); DECLARE_SPELL_FUN( spell_sleet_storm ); DECLARE_SPELL_FUN( spell_slow_gas ); DECLARE_SPELL_FUN( spell_snake_dart ); DECLARE_SPELL_FUN( spell_sonic_blast ); DECLARE_SPELL_FUN( spell_soul_bind ); DECLARE_SPELL_FUN( spell_speak_with_dead ); DECLARE_SPELL_FUN( spell_stabilize ); DECLARE_SPELL_FUN( spell_stone_to_flesh ); DECLARE_SPELL_FUN( spell_stone_shower ); DECLARE_SPELL_FUN( spell_storm_of_vengeance ); DECLARE_SPELL_FUN( spell_suffocate ); DECLARE_SPELL_FUN( spell_suggestion ); DECLARE_SPELL_FUN( spell_summon ); DECLARE_SPELL_FUN( spell_summon_ally ); DECLARE_SPELL_FUN( spell_summon_creature ); DECLARE_SPELL_FUN( spell_summon_shadow ); DECLARE_SPELL_FUN( spell_sunbeam ); DECLARE_SPELL_FUN( spell_sunburst ); DECLARE_SPELL_FUN( spell_telepathic_bond ); DECLARE_SPELL_FUN( spell_teleport ); DECLARE_SPELL_FUN( spell_teleport_object ); DECLARE_SPELL_FUN( spell_time_stop ); DECLARE_SPELL_FUN( spell_tongues ); DECLARE_SPELL_FUN( spell_totem ); DECLARE_SPELL_FUN( spell_transmute_metal ); DECLARE_SPELL_FUN( spell_true_form ); DECLARE_SPELL_FUN( spell_true_resurrection ); DECLARE_SPELL_FUN( spell_vampiric_touch ); DECLARE_SPELL_FUN( spell_ventriloquate ); DECLARE_SPELL_FUN( spell_wall ); DECLARE_SPELL_FUN( spell_water_breathing ); DECLARE_SPELL_FUN( spell_water_walk ); DECLARE_SPELL_FUN( spell_water_to_wine ); DECLARE_SPELL_FUN( spell_weakness_gas ); DECLARE_SPELL_FUN( spell_winged_call ); DECLARE_SPELL_FUN( spell_word_of_faith ); DECLARE_SPELL_FUN( spell_word_of_recall ); /* OS-dependent declarations. These are all very standard library functions, but some systems have incomplete or non-ansi header files. */ #if defined(_AIX) char * crypt args( ( const char *key, const char *salt ) ); #endif #if defined(apollo) int atoi args( ( const char *string ) ); void * calloc args( ( unsigned nelem, size_t size ) ); char * crypt args( ( const char *key, const char *salt ) ); #endif #if defined(hpux) char * crypt args( ( const char *key, const char *salt ) ); #endif #if defined(interactive) #endif #if defined(linux) char * crypt args( ( const char *key, const char *salt ) ); #endif #if defined(MIPS_OS) char * crypt args( ( const char *key, const char *salt ) ); #endif #if defined(NeXT) char * crypt args( ( const char *key, const char *salt ) ); #endif #if defined(sequent) char * crypt args( ( const char *key, const char *salt ) ); int fclose args( ( FILE *stream ) ); int fprintf args( ( FILE *stream, const char *format, ... ) ); int fread args( ( void *ptr, int size, int n, FILE *stream ) ); int fseek args( ( FILE *stream, long offset, int ptrname ) ); void perror args( ( const char *s ) ); int ungetc args( ( int c, FILE *stream ) ); #endif /* The crypt(3) function is not available on some operating systems. In particular, the U.S. Government prohibits its export from the United States to foreign countries. Turn on NOCRYPT to keep passwords in plain text. */ #if defined(NOCRYPT) #define crypt(s1, s2) (s1) #endif #define CLASS_DIR "../skilltables/classes" #define DOMAIN_DIR "../skilltables/domains" #define STYLE_DIR "../skilltables/styles" #define RACESKILL_DIR "../skilltables/races" #define CLASSES_DIR "../classes" #define RACE_DIR "../races" #define GOD_DIR "../gods" #define PLAYER_DIR "../player" #define ACCOUNT_DIR "../accounts" #define CLAN_DIR "../clans" #define NULL_FILE "/dev/null" #define AUTH_FILE "data/auth.dat" #define HELP_FILE "data/help.txt" #define DICE_FILE "data/dice.txt" #define COMPLAIN_FILE "data/complaints.txt" #define AREA_LIST "data/area.lst" #define NOTE_FILE "data/notes.txt" #define COPYOVER_FILE "data/copyover.dat" #define LOCKER_FILE "data/lockers.txt" #define SHUTDOWN_FILE "shutdown.txt" #define VERSION_FILE "../src/VERSION" /* redefenitions of the executables. We now have mud and current_mud */ #define TEST_FILE "../bin/mud" /* executable path */ #define REAL_FILE "../bin/current_mud" /* executable path */ /* Our function prototypes. One big lump ... this is every function in Merc. */ #define CD CHAR_DATA #define MID MOB_INDEX_DATA #define OD OBJ_DATA #define OID OBJ_INDEX_DATA #define RID ROOM_INDEX_DATA #define RD RESET_DATA #define AD AREA_DATA #define TM TACTICAL_MAP #define HD HELP_DATA #define BD BOUNTY_DATA #define ED EXIT_DATA #define RTD ROOM_TIMER_DATA /* new auth stuff in addit.c */ int get_auth_state( CHAR_DATA * ch ); void add_to_auth( CHAR_DATA * ch ); void remove_from_auth( char *name ); void check_auth_state( CHAR_DATA * ch ); AUTH_LIST *get_auth_name( char *name ); void auth_update( void ); void save_auth_list( void ); /* act_comm.c */ bool can_understand args( ( CHAR_DATA *victim, CHAR_DATA *speaker, bool fChange ) ); bool new_notes args( ( CHAR_DATA *ch ) ); bool tell args( ( CHAR_DATA *ch, CHAR_DATA *victim, char *argument) ); void personalize_string args( ( CHAR_DATA *src, CHAR_DATA *tar, char *emote) ); void personalize_emote args( ( CHAR_DATA *src, char *emote) ); void broadcast_channel args( ( CHAR_DATA *src, char *txt, int channel) ); int drunk_level args( ( CHAR_DATA *ch ) ); void makedrunk args( ( CHAR_DATA *ch, char *string) ); void do_diceroll args( ( CHAR_DATA *ch, char *argument) ); bool CAN_TALK args( ( CHAR_DATA *ch ) ); bool is_valid_password args( ( char *pass ) ); bool is_same_group args( ( CHAR_DATA *ach, CHAR_DATA *bch ) ); bool vnum_in_group args( ( CHAR_DATA *ach, int mobvnum ) ); bool pvnum_in_group args( ( CHAR_DATA *ch, int pvnum ) ); void do_llog args( ( CHAR_DATA *ch, char *argument) ); char * translate_to_char args( ( CHAR_DATA *ch, CHAR_DATA *victim, char *text ) ); /* act_info.c */ void look_scrying args( ( CHAR_DATA *ch, OBJ_DATA *obj, char *argument ) ); void sprintf_exits args( ( char * outbuf, CHAR_DATA *ch, bool fAuto ) ); void show_examine_string args( ( OBJ_DATA *obj, CHAR_DATA *ch ) ); char * format_duration args( ( int duration ) ); bool search_inventory args( ( CHAR_DATA *ch, OBJ_DATA *search_obj, char *argument ) ); int obj_conceal_check args( ( OBJ_DATA *obj ) ); int bonus_bonus_langs args( ( CHAR_DATA *ch ) ); int fave_enemy_max args( ( CHAR_DATA *ch ) ); int fave_enemy_count args( ( CHAR_DATA *ch ) ); int fave_enemy_bonus args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); void feat_display args( ( CHAR_DATA *ch, char *argument, bool CanTrain ) ); bool can_train_feat args( ( CHAR_DATA *ch, int sn, bool fDisplay ) ); bool check_blind args( ( CHAR_DATA *ch ) ); void sort_alias args( ( CHAR_DATA *ch ) ); bool set_title args( ( CHAR_DATA *ch, char *title ) ); void format_help_to_char args( ( CHAR_DATA *ch, HELP_DATA *pHelp ) ); char * help_title args( ( HELP_DATA *pHelp ) ); HD * get_help args( ( CHAR_DATA *ch, char *argument ) ); AD * lookup_area args( ( char *arg ) ); int lookup_tongue args( ( char *arg ) ); int lookup_god args( ( char *arg ) ); int lookup_class args( ( char *arg ) ); int lookup_race args( ( char *arg ) ); CD * find_char_dir args( ( CHAR_DATA *ch, bool dir, char *name ) ); bool can_see_dir args( ( CHAR_DATA *ch, CHAR_DATA *victim, bool dir ) ); char * get_color_string args( ( CHAR_DATA *ch, int regist, int vt_code ) ); char * get_color_code args( ( CHAR_DATA *ch, int regist, int vt_code ) ); void show_char_to_char args( ( CHAR_DATA *ch, CHAR_DATA *victim, bool fExamine ) ); int which_god args( ( CHAR_DATA *ch ) ); /* act_move.c */ void user_from_cart args( ( CHAR_DATA *ch ) ); void add_follower args( ( CHAR_DATA *ch, CHAR_DATA *master ) ); void stop_follower args( ( CHAR_DATA *ch ) ); void die_follower args( ( CHAR_DATA *ch ) ); bool move_char args( ( CHAR_DATA *ch, int door, bool forreal, char *argument ) ); bool can_move_char args( ( CHAR_DATA *ch, int door) ); void add_shadow args( ( CHAR_DATA *ch, CHAR_DATA *master ) ); bool move_loss args( ( CHAR_DATA *ch, CHAR_DATA *mount, int move ) ); void stop_shadow args( ( CHAR_DATA *ch ) ); void check_speed args( ( CHAR_DATA *ch, RID *room ) ); int find_door args( ( CHAR_DATA *ch, char *arg ) ); /* act_obj.c */ void drink_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool get_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, OBJ_DATA *container, bool fDisplay, bool fReveal ) ); bool put_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, OBJ_DATA *container, bool fDisplay, bool fReveal ) ); bool drop_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, OBJ_DATA *container, bool fDisplay ) ); bool wear_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, bool fReplace, int location , bool fDisplay) ); bool hands_full args( ( CHAR_DATA *ch ) ); bool class_allowed args( ( OBJ_DATA *obj, CHAR_DATA *ch, bool fDisplay ) ); bool is_handy args( ( CHAR_DATA *ch ) ); bool remove_obj args( ( CHAR_DATA *ch, int iWear, bool fReplace, bool fDisplay ) ); bool can_layer args( ( CHAR_DATA *ch, OBJ_DATA *object, int iWear, bool fReplace, bool fDisplay ) ); int get_layer args( ( OBJ_DATA *object ) ); /* shops.c */ CD * find_keeper args( ( CHAR_DATA *ch ) ); bool is_keeper args( ( CHAR_DATA *ch ) ); char * format_coins args( ( int amount, bool fLong ) ); int gold_transaction args( ( CHAR_DATA *ch, int amount ) ); int get_cost args( ( CHAR_DATA *keeper, OBJ_DATA *obj, bool fBuy ) ); OD * find_char_corpse args( ( CHAR_DATA *ch, bool method ) ); int haggle args( ( CHAR_DATA *ch, CHAR_DATA *seller, int cost, bool buy ) ); int give_gold args( ( CHAR_DATA *ch, int amount ) ); int account_max args( ( CHAR_DATA *ch ) ); /* bounty.c */ void post_bounty args( ( CHAR_DATA *ch, CHAR_DATA *victim, int amount, int crime ) ); void set_bounty args( ( CHAR_DATA *ch, CHAR_DATA *victim, int crime ) ); void sort_bounty args( ( BOUNTY_DATA * bptr) ); void remove_bounty args( ( BOUNTY_DATA * bptr) ); BD * get_bounty args( ( int pvnum ) ); BD * get_record args( ( CHAR_DATA *ch, AREA_DATA *area, int crime ) ); bool collect_bounty args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool confiscate args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); /* act_wiz.c */ void madd_char args( ( CHAR_DATA *ch, CHAR_DATA *victim, char *argument) ); void mset_char args( ( CHAR_DATA *ch, CHAR_DATA *victim, char *argument, bool mpcommand) ); void oset_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, char *argument, bool mpcommand) ); int find_location args( ( CHAR_DATA *ch, char *arg ) ); void auto_release args( ( CHAR_DATA *ch ) ); void add_crime args( ( CHAR_DATA *ch, PVNUM_DATA *pvnum) ); char * quest_bits_to_string args( ( unsigned char * ) ); /* comm.c */ void delete_player args( ( CHAR_DATA *ch ) ); bool write_to_descriptor args( ( DESCRIPTOR_DATA *d, char *txt, int length ) ); void force_help args( ( DESCRIPTOR_DATA *d, char *argument ) ); char * get_gradient args( ( bool gradient, int current, int max ) ); int best_three_of_four args( ( void ) ); void swap args( ( CHAR_DATA *ch, char *argument ) ); void add_letter args( ( char *string, char letter ) ); void roll_race args( ( CHAR_DATA *ch ) ); void close_socket args( ( DESCRIPTOR_DATA *dclose , bool Force) ); void write_to_buffer args( ( DESCRIPTOR_DATA *d, char *txt, int length ) ); void send_to_room args( ( char *txt, ROOM_INDEX_DATA *room ) ); void send_to_char args( ( const char *txt, CHAR_DATA *ch ) ); void send_to_char_color args( ( char *txt, CHAR_DATA *ch ) ); void act args( ( const char *format, CHAR_DATA *ch, const void *arg1, const void *arg2, int type ) ); void log_printf args( ( char *fmt, ...) ); void wiz_printf args( ( char *fmt, ...) ); void log_god_printf args( ( char *fmt, ...) ); void log_build_printf args( ( int vnum, char *fmt, ...) ); void ch_printf args( ( CHAR_DATA *ch, const char *fmt, ... ) ); void ch_printf_color args( ( CHAR_DATA *ch, const char *fmt, ... ) ); void wiz_printf_room args( ( CHAR_DATA *ch, const char *fmt, ... ) ); void check_bad_desc args( ( CHAR_DATA *ch ) ); void remove_bad_desc_name args( ( char *name ) ); void set_heartbeat args( ( void ) ); void vt100on args( ( CHAR_DATA *) ); void vt100off args( ( CHAR_DATA *) ); void vt100prompt args( ( CHAR_DATA *) ); void vt100prompter args( ( CHAR_DATA *) ); CD * start_partial_load args( ( CHAR_DATA *ch, char *argument) ); void clear_partial_load args( ( CHAR_DATA *ch ) ); void wait_state args( ( CHAR_DATA *ch, int npulse) ); void send_goodbye args( ( DESCRIPTOR_DATA *d ) ); bool check_parse_name args( ( char * , bool ) ); void add_obj_ref_hash args( ( OBJ_DATA *obj) ); void rem_obj_ref_hash args( ( OBJ_DATA *obj) ); void enter_game args( ( CHAR_DATA *ch ) ); TM * get_tactical_map args( ( CHAR_DATA *ch ) ); void clear_tactical_map args( ( TACTICAL_MAP *tact ) ); TM * get_diff_tactical args( ( CHAR_DATA *ch ) ); char * get_tactical_string args( ( CHAR_DATA *ch, TACTICAL_MAP *tact ) ); int get_pager_breakpt args( ( CHAR_DATA *ch ) ); int get_page_width args( ( CHAR_DATA *ch ) ); /* db.c */ char * broken_bits args( ( lg_int number, char *vector, bool linear ) ); void fwrite_race args( ( int race ) ); char * bits_to_str args( ( lg_int number, char *vector ) ); void fwrite_bloodlines args( ( void ) ); void fwrite_components args( ( void ) ); void save_gods args( ( void ) ); void save_classes args( ( void ) ); void save_domains args( ( void ) ); void save_races args( ( void ) ); void save_styles args( ( void ) ); int find_command args( ( char *cmd_str, int trust ) ); int find_social args( ( char *social_str ) ); void boot_db args( ( bool fCopyOver ) ); void area_update args( ( void ) ); CD * create_mobile args( ( MOB_INDEX_DATA *pMobIndex ) ); OD * create_object args( ( OBJ_INDEX_DATA *pObjIndex, bool hashed)); void clear_char args( ( CHAR_DATA *ch ) ); void copyover_recover args( (void) ); void free_char args( ( CHAR_DATA *ch ) ); char * get_extra_descr args( ( const char *name, EXTRA_DESCR_DATA *ed ) ); void fread_area args( ( FILE *fp, int segment ) ); char fread_letter args( ( FILE *fp ) ); lg_int fread_number args( ( FILE *fp ) ); char * fread_string args( ( FILE *fp ) ); void fread_to_eol args( ( FILE *fp ) ); void oprog_read_programs args( ( FILE *fp, OBJ_INDEX_DATA *pObjIndex ) ); void rprog_read_programs args( ( FILE *fp, ROOM_INDEX_DATA *pRoomIndex ) ); char * fread_line args( ( FILE *fp ) ); char * fread_word args( ( FILE *fp ) ); int number_fuzzy args( ( int number ) ); int big_number_fuzzy args( ( int number ) ); int number_range args( ( int from, int to ) ); int number_percent args( ( void ) ); float what_percent args( ( float x, float y ) ); int number_door args( ( void ) ); int load_obj_weight args( ( OBJ_INDEX_DATA *obj ) ); void fix_materials args( ( OBJ_INDEX_DATA *obj ) ); void fix_sizes args( ( OBJ_INDEX_DATA *obj ) ); void load_obj_hit args( ( OBJ_INDEX_DATA *obj ) ); int number_bits args( ( int width ) ); int dice args( ( int number, int size ) ); void append_file args( ( CHAR_DATA *, char *, FILE *, char * ) ); void show_file args( ( CHAR_DATA *ch, char *filename ) ); void bug args( ( const char *str, ... ) ); void log_string args( ( char *str ) ); void log_god_string args( ( char *str ) ); void log_build_string args( ( int vnum, char *str ) ); void log_wiz_string args( ( char *str ) ); bool is_valid_save args( ( char *file_name, char *text_crc ) ); void advance_mobile args( ( MOB_INDEX_DATA *mob ) ); void create_shop args( ( MOB_INDEX_DATA *mob ) ); void delete_shop args( ( MOB_INDEX_DATA *mob ) ); void create_stable args( ( MOB_INDEX_DATA *mob ) ); void delete_stable args( ( MOB_INDEX_DATA *mob ) ); void create_inn args( ( MOB_INDEX_DATA *mob ) ); void delete_inn args( ( MOB_INDEX_DATA *mob ) ); void create_exit args( ( ROOM_INDEX_DATA *room, int door ) ); void delete_exit args( ( ROOM_INDEX_DATA *room, int door ) ); void create_room args( ( int vnum ) ); bool delete_room args( ( ROOM_INDEX_DATA *room ) ); bool delete_obj args( ( OBJ_INDEX_DATA *obj ) ); bool delete_mob args( ( MOB_INDEX_DATA *mob ) ); bool delete_help args( ( HELP_DATA *help ) ); RID * make_room args( ( int vnum ) ); OID * make_object args( ( int vnum ) ); MID * make_mobile args( ( int vnum ) ); HD * make_helpfile args( ( char *argument, AREA_DATA *area ) ); ED * make_exit args( ( ROOM_INDEX_DATA *pRoomIndex, ROOM_INDEX_DATA *to_room, bool door ) ); void start_timer args( ( int timer ) ); void close_timer args( ( int timer ) ); long long display_timer args( ( CHAR_DATA *ch, int timer ) ); int get_alloc_size args( ( unsigned char *str ) ); void set_block_type args( ( unsigned char typ, unsigned char *pMem ) ); void * alloc_mem args( ( int sMem ) ); void * alloc_perm args( ( bool iList ) ); void free_mem args( ( bool *pMem ) ); void add_char args( ( CHAR_DATA *ch ) ); AD * get_area_from_vnum args( (int vnum )); /* string_handler.c */ void smash_tilde args( ( char *str ) ); bool str_prefix args( ( const char *astr, const char *bstr ) ); bool str_infix args( ( const char *astr, const char *bstr ) ); bool str_suffix args( ( const char *astr, const char *bstr ) ); char * strlower args( ( const char *str ) ); char * strupper args( ( const char *str ) ); char * str_resize args( ( const char *st,char *buf,int length) ); char * a_an args( ( const char *argument ) ); char * format_number args( ( int num ) ); char * get_time_string args( ( long time ) ); char * numbersuf args( ( int number ) ); char * tocivilian args( ( int hour ) ); char * get_domain args( ( const char *str ) ); char * short_to_name args( ( const char *str, int amount ) ); char * capitalize args( ( const char *str ) ); char * capitalize_all args( ( const char *str ) ); char * lower_all args( ( const char *str ) ); char * capitalize_name args( ( const char *str ) ); char * capitalize_title args( ( const char *str ) ); int str_cat_max args( ( const char *, const char *, int ) ); int str_apd_max args( ( const char *, const char *, int, int ) ); int str_cpy_max args( ( const char *, const char *, int ) ); void act_sprintf args( ( char *dest, const char *format, CHAR_DATA *ch, const void *arg1, const void *arg2 ) ); void command args( ( CHAR_DATA *ch, DO_FUN *command, char *fmt, ...) ); char * format args( ( char *fmt, ...) ); void cat_sprintf args( ( char *dest, const char *fmt, ... ) ); void cat_snprintf args( ( char *dest, size_t leng, char *fmt, ... ) ); int ansi_strlen args( (char *txt ) ); bool is_name args( ( const char *str, char *namelist ) ); bool is_name_short args( ( const char *str, char *namelist ) ); bool is_name_list args( ( char *str, char *namelist ) ); bool is_string args( ( char *str ) ); bool is_multi_name_list args( ( char *str, char *namelist ) ); bool is_multi_name_list_short args( ( char *str, char *namelist ) ); bool is_multi_name_short args( ( char *str, char *namelist ) ); char * ansi_translate args( ( char *txt ) ); char * ansi_translate_def args( ( CHAR_DATA *ch, char *txt, char *def ) ); char * ansi_translate_text args( ( CHAR_DATA *ch, const char *txt ) ); char * ansi_compress args( ( CHAR_DATA *ch, char *txt, bool color, bool code ) ); char * ansi_strip args( ( char *txi ) ); char * center args( ( char *inp, int length ) ); char * justify args( ( char *inp, int length ) ); char * text_wrap args( ( char *inp, int columns ) ); char * ansi_justify args( ( char *inp, int length ) ); bool is_number args( ( char *argument ) ); bool is_number_argument args( ( char *argument ) ); int number_argument args( ( char *argument, char *arg ) ); char * one_argument args( ( char *argument, char *arg_first ) ); char * two_arguments args( ( char *argument, char *arg_first, char *arg_second ) ); char * grab_token args( ( char *src, char *end_buf, char delimiter ) ); char * replace_str args( ( const char *new_str, const char *replace, const char *src ) ); char * one_argument_nolower args( ( char *argument, char *arg_first ) ); /* data.c */ void load_notes args( ( void ) ); void load_bounties args( ( void ) ); void save_bounties args( ( void ) ); void load_sites args( ( void ) ); void save_sites args( ( void ) ); void load_nsites args( ( void ) ); void save_nsites args( ( void ) ); void load_victors args( ( void ) ); void save_victors args( ( void ) ); void load_players args( ( void ) ); void save_players args( ( void ) ); void load_timeinfo args( ( void ) ); void save_timeinfo args( ( void ) ); void load_usage args( ( void ) ); void save_usage args( ( void ) ); void load_hiscores args( ( void ) ); void save_hiscores args( ( void ) ); void del_data args( (CHAR_DATA *ch) ); /* mount.c */ bool is_mounting args( (CHAR_DATA *ch ) ); bool is_mounted args( (CHAR_DATA *ch ) ); bool mounted_combat_check args( ( CHAR_DATA *ch ) ); /* mapper.c */ void sprintf_wilderness_map args( ( CHAR_DATA *ch, char *outbuf, int size, bool room ) ); char * get_dynamic_room_title args( ( ROOM_INDEX_DATA *room ) ); /* edit.c */ int obj_index_cost args( ( OBJ_INDEX_DATA *obj ) ); void break_bits args( ( FILE *fp, lg_int number, char *vector , bool linear) ); void start_editing args( ( CHAR_DATA *ch, char *data ) ); void stop_editing args( ( CHAR_DATA *ch ) ); void stop_olc_editing args( ( CHAR_DATA *ch, AREA_DATA *area ) ); void edit_buffer args( ( CHAR_DATA *ch, char *argument ) ); char * copy_buffer args( ( CHAR_DATA *ch ) ); void assign_area args( ( CHAR_DATA *ch ) ); bool can_olc_modify args( ( CHAR_DATA *ch, int vnum ) ); bool show_build_vnum args( ( CHAR_DATA *ch, int vnum ) ); char * flag_string args( ( lg_int bitvector, char * const flagarray[] ) ); char * type_string args( ( lg_int bitvector, char * const flagarray[] ) ); lg_int get_flag args( ( char *flag, char *const array[] ) ); char * give_flags args( ( char *const array[]) ); char * fixer args( ( char *arg ) ); void save_area args( ( AREA_DATA *area, bool forreal ) ); /* reset.c */ RD * make_reset args( ( char letter, int arg1, int arg2, int arg3 ) ); void reset_area args( ( AREA_DATA *pArea ) ); void delete_reset args( ( AREA_DATA *pArea, RESET_DATA * pReset ) ); bool is_room_reset args( ( RESET_DATA *reset, ROOM_INDEX_DATA *room) ); bool is_door_reset args( ( RESET_DATA *reset, int door ) ); bool is_obj_reset args( ( RESET_DATA *reset, OBJ_INDEX_DATA *obj ) ); bool is_mob_reset args( ( RESET_DATA *reset, MOB_INDEX_DATA *mob ) ); /* str_hash.c */ char * str_alloc args( ( char *str ) ); char * str_dupe args( ( char *str ) ); void str_free args( ( char *str ) ); char * str_hash_status args( ( char *argument) ); /* act_combat.c */ int num_attacks args( ( CHAR_DATA *ch, int part ) ); void check_aura args( ( CHAR_DATA *ch, int sn ) ); void check_stench args( ( CHAR_DATA *ch ) ); void frightful_presence args( ( CHAR_DATA *ch ) ); int actual_tohit_bonus args( ( OBJ_DATA *wield ) ); int weapon_tohit_bonus args( ( OBJ_DATA *wield ) ); int weapon_dam_bonus args( ( OBJ_DATA *wield ) ); int can_miss args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt, bool fRanged, OBJ_DATA *wield) ); int GET_DAMROLL args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt, OBJ_DATA *wield) ); int GET_HITROLL args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt, OBJ_DATA *wield) ); int combat_maneuver_check args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn ) ); int combat_maneuver_bonus args( ( CHAR_DATA *ch ) ); int combat_maneuver_defense args( ( CHAR_DATA *ch, CHAR_DATA *attacker ) ); bool attack_of_opportunity args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool bash args( ( CHAR_DATA *ch, CHAR_DATA *victim, int hit_adj ) ); bool can_attack args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool can_dodge args( ( CHAR_DATA *ch, CHAR_DATA *attacker ) ); bool can_surprise args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool can_backstab args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt ) ); bool can_melee_attack args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool check_add_attack args( ( CHAR_DATA *, CHAR_DATA *) ); bool check_hit args( ( CHAR_DATA *ch, CHAR_DATA *victim, int diceroll, int hit_adj, int dt, OBJ_DATA *wield, bool fTouch, bool fRanged) ); bool deflect_missile args( ( CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *wield, int dir ) ); bool sunder args( ( CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *obj, int hit_adj ) ); bool disarm args( ( CHAR_DATA *ch, CHAR_DATA *victim, int hit_adj ) ); bool feint args( ( CHAR_DATA *ch, CHAR_DATA *victim, int hit_adj ) ); bool stun args( ( CHAR_DATA *ch, CHAR_DATA *victim, int hit_adj ) ); bool trample args( ( CHAR_DATA *ch, CHAR_DATA *victim, int hit_adj ) ); bool rend args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool throw_rock args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool pounce args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool has_natural_weapon args( ( CHAR_DATA *ch ) ); bool has_opportunity args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool is_armed args( ( CHAR_DATA *ch, bool wield ) ); bool is_flanking args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool MISSILE_WIELD args( ( CHAR_DATA *ch ) ); bool is_missile_weapon args( ( OBJ_DATA *obj ) ); bool is_bow args( ( OBJ_DATA *obj ) ); bool reload args( ( CHAR_DATA *ch, OBJ_DATA *wield ) ); bool trip args( ( CHAR_DATA *ch, CHAR_DATA *victim, int hit_adj ) ); int calc_ac args( ( CHAR_DATA *ch, CHAR_DATA *victim, bool fTouch ) ); int damage_modify args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt, int dam, OBJ_DATA *wield ) ); int get_body_part args( ( CHAR_DATA *ch, int dt, int type ) ); int range_mod args( ( CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *wield ) ); int get_damnodice args( ( CHAR_DATA *ch ) ); int get_damsizedice args( ( CHAR_DATA *ch ) ); int get_exp_worth args( ( CHAR_DATA *ch ) ); int get_missile_range args( ( OBJ_DATA *weapon ) ); OD * get_ammo args( ( CHAR_DATA *ch, OBJ_DATA *wield ) ); OD * get_wield args( ( CHAR_DATA *ch, bool fDual ) ); bool attack args( ( CHAR_DATA *ch, CHAR_DATA *victim) ); bool check_parry args( ( CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *weapon, int attack ) ); void clear_attack_list args( ( CHAR_DATA * ) ); void dam_message args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dam, int dt, OBJ_DATA *wield ) ); void damage args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dam, int dt, OBJ_DATA *wield) ); void damage_hurt args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dam, int dt) ); void damage_equipment args( ( CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *obj, int dam, int dt, OBJ_DATA *wield ) ); int obj_damage_modify args( ( OBJ_DATA *obj, OBJ_DATA *wield, int dam, int dam_type ) ); void death_cry args( ( CHAR_DATA *ch ) ); void start_grapple args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); void stop_grapple args( ( CHAR_DATA *ch ) ); void fight args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); void found_hating args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); void group_gain args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); void make_corpse args( ( CHAR_DATA *victim, int dt ) ); bool one_hit args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt, int hit_adj, OBJ_DATA * wield) ); void raw_kill args( ( CHAR_DATA *victim, int dt ) ); void show_party_line args( ( CHAR_DATA * ) ); void stat_damage args( ( CHAR_DATA * ch, CHAR_DATA * victim, int apply, int sn ) ); void stop_hate_fear args( ( CHAR_DATA *ch ) ); void take_opportunity args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool breath_weapon args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool gaze_attack args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool sever_limb args( ( CHAR_DATA *ch, CHAR_DATA *victim, lg_int part ) ); /* * combat_handler.c */ int xp_compute args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); int xp_compute_cr args( ( CHAR_DATA *ch, int challenge ) ); void free_unit args( ( CHAR_DATA *ch ) ); void check_guard_assist args( ( CHAR_DATA *ch, CHAR_DATA *attacker ) ); void stop_fighting args( ( CHAR_DATA *ch, bool fBoth ) ); void set_fighting args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool valid_victim args( ( CHAR_DATA *ch ) ); bool valid_fight args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); void check_killer args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); CD * get_next_fighting args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); CD * who_fighting args( ( CHAR_DATA *ch ) ); CD * who_grappling args( ( CHAR_DATA *ch ) ); bool check_recently_fought args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool in_combat args( (CHAR_DATA * ch) ); bool in_same_combat args( (CHAR_DATA * ch, CHAR_DATA *victim) ); bool is_active args( (CHAR_DATA * ch) ); bool turn_complete args( (CHAR_DATA * ch) ); bool can_mass_attack args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool check_murder args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool is_safe args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); TURN_DATA * get_turn_char args( (CHAR_DATA * ch) ); TURN_DATA * new_turn args( (void) ); void char_from_combat args( (CHAR_DATA * ch) ); void char_to_combat args( (CHAR_DATA * ch, COMBAT_DATA * combat) ); void check_victory args( (COMBAT_DATA * battle) ); void clean_combat args( (COMBAT_DATA * battle) ); void combat_update args( (void) ); void free_combat args( (COMBAT_DATA * combat) ); void free_turn args( (TURN_DATA * turn) ); void initiate_combat args( (CHAR_DATA * ch, CHAR_DATA * victim) ); void insert_turn args( (COMBAT_DATA * combat, TURN_DATA * nTurn) ); void linkdead_turn args( (CHAR_DATA * ch) ); void mobile_turn args( (CHAR_DATA * ch) ); void confused_turn args( (CHAR_DATA * ch) ); void nuke_roundtime args( (COMBAT_DATA * battle) ); void remove_turn args( (TURN_DATA * turn) ); void roundtime args( (TURN_DATA * turn, int roundtime) ); void skip_turn args( (TURN_DATA * turn, bool fWilling) ); void swap_turn args( (TURN_DATA * aTurn, TURN_DATA * bTurn) ); void turn_end args( (TURN_DATA * turn, int roundtime) ); void update_pos args( ( CHAR_DATA *ch, int pos ) ); void withdraw_combat args( (CHAR_DATA * ch) ); bool is_light_weapon args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); int get_range args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); int weapon_skill args( ( CHAR_DATA *ch, OBJ_DATA *wield ) ); int apply_ac args( ( CHAR_DATA *ch ) ); int GET_AC args( ( CHAR_DATA *ch, bool touch ) ); int apply_shield args( ( CHAR_DATA *ch ) ); int shield_bonus args( ( CHAR_DATA *ch ) ); int dodge_bonus args( ( CHAR_DATA *ch ) ); int dodge_penalty args( ( CHAR_DATA *ch ) ); bool can_evade args( ( CHAR_DATA *ch ) ); bool has_reach args( ( CHAR_DATA *ch, OBJ_DATA *wield ) ); int base_attack args( ( CHAR_DATA *ch ) ); /* * handler.c */ int encumberance args( ( CHAR_DATA *ch ) ); int lock_dc args( ( EXIT_DATA *pExit, OBJ_DATA *obj ) ); bool valid_skill args( ( int sn ) ); int obj_affect_cost args( ( AFFECT_DATA *paf ) ); int obj_cost args( ( OBJ_DATA *obj ) ); void poison_attack args( ( CHAR_DATA *ch, CHAR_DATA *victim, int type ) ); void poison_to_char args( ( CHAR_DATA *ch, CHAR_DATA *victim, POISON_DATA *pd ) ); void poison_to_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, POISON_DATA *pd ) ); void obj_affect_poison args( ( OBJ_DATA *obj, CHAR_DATA *victim ) ); OD * get_hold args( ( CHAR_DATA *ch ) ); void TAKE_ACTION args( ( CHAR_DATA *victim, int action ) ); bool IS_BURNING args( ( OBJ_DATA * obj ) ); bool IS_BLIND args( ( CHAR_DATA * ch ) ); bool IS_DAZZLED args( ( CHAR_DATA * ch ) ); int armor_weight args( ( OBJ_INDEX_DATA *obj ) ); void apply_dex_max args( ( CHAR_DATA *ch ) ); int get_apply args( ( CHAR_DATA *ch, int apply ) ); int calc_apply args( ( CHAR_DATA *ch, int apply ) ); int combine_apply args( ( CHAR_DATA *ch, int apply1, int apply2 ) ); int get_obj_apply args( ( OBJ_DATA *obj, int apply ) ); char * get_god_name args( ( int god ) ); int get_trust args( ( CHAR_DATA *ch ) ); bool is_master args( ( CHAR_DATA *ch, CHAR_DATA *master ) ); bool in_same_room args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool in_camp args( ( CHAR_DATA *ch ) ); void infect_char args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dis ) ); void infect_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, int dis ) ); void infect_room args( ( CHAR_DATA *ch, ROOM_INDEX_DATA *room, int dis ) ); void disease_from_char args( ( CHAR_DATA *ch, DISEASE_DATA *paf ) ); void disease_from_obj args( ( OBJ_DATA *obj, DISEASE_DATA *paf ) ); void disease_from_room args( ( ROOM_INDEX_DATA *room, DISEASE_DATA *paf ) ); int lookup_disease args( ( char *arg ) ); int lookup_poison args( ( char *arg ) ); void affect_modify args( ( CHAR_DATA *ch, AFFECT_DATA *paf, bool fAdd ) ); void SET_AFFECT args( ( CHAR_DATA *ch, lg_int bitv ) ); void REMOVE_AFFECT args( ( CHAR_DATA *ch, lg_int bitv ) ); void affect_to_char args( ( CHAR_DATA *ch, CHAR_DATA *victim, AFFECT_DATA *paf ) ); void affect_from_char args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) ); void affect_to_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, AFFECT_DATA *paf ) ); void affect_from_obj args( ( OBJ_DATA *obj, AFFECT_DATA *paf ) ); void AFFECT_STRIP args( ( CHAR_DATA *ch, lg_int bitv ) ); void affect_strip_desc args( ( CHAR_DATA *ch, lg_int desc ) ); void affect_strip args( ( CHAR_DATA *ch, int sn ) ); void affect_obj_strip args( ( OBJ_DATA *obj, int sn ) ); void affect_room_strip args( ( ROOM_INDEX_DATA *room, int sn ) ); void affect_room_strip_desc args( ( ROOM_INDEX_DATA *room, lg_int desc ) ); bool is_affected args( ( CHAR_DATA *ch, int sn ) ); bool is_obj_affected args( ( OBJ_DATA *obj, int sn ) ); bool is_room_affected args( ( ROOM_INDEX_DATA *room, int sn ) ); RTD *get_room_affect args( ( ROOM_INDEX_DATA *room, lg_int flags ) ); RTD *get_room_affect_vnum args( ( int vnum, lg_int flags ) ); int get_highest_ch_aff_level args( ( CHAR_DATA *ch ) ); int get_highest_obj_aff_level args( ( OBJ_DATA *obj ) ); int get_highest_ch_aff_school args( ( CHAR_DATA *ch ) ); int get_highest_obj_aff_school args( ( OBJ_DATA *obj ) ); void affect_join args( ( CHAR_DATA *caster, CHAR_DATA *ch, AFFECT_DATA *paf ) ); void set_room_timer args( ( CHAR_DATA *ch, ROOM_TIMER_DATA *rtd ) ); bool del_room_timer args( ( int vnum, int type ) ); void char_from_room args( ( CHAR_DATA *ch ) ); void char_to_room args( ( CHAR_DATA *ch, int vnum, bool forreal ) ); void set_falling args( ( CHAR_DATA *ch, int dist ) ); void obj_to_char args( ( OBJ_DATA *obj, CHAR_DATA *ch ) ); void obj_from_char args( ( OBJ_DATA *obj ) ); int apply_armor_type args( ( CHAR_DATA *ch ) ); int armor_check_penalty args( ( CHAR_DATA *ch ) ); bool wears_metal args( ( CHAR_DATA *ch, bool fWeapon ) ); OD * get_eq_char args( ( CHAR_DATA *ch, int iWear ) ); OD * get_obj_tflag args( ( CHAR_DATA *ch, int tflag ) ); void check_zap args( ( CHAR_DATA *ch, bool fDisplay ) ); void equip_char args( ( CHAR_DATA *ch, OBJ_DATA *obj, int iWear ) ); void unequip_char args( ( CHAR_DATA *ch, OBJ_DATA *obj, bool fDisplay ) ); int count_users args( ( OBJ_DATA * obj ) ); int count_mob_list args( ( MOB_INDEX_DATA *obj, OBJ_DATA *list ) ); int char_exists args( ( char *arg ) ); void obj_from_room args( ( OBJ_DATA *obj ) ); void obj_to_room args( ( OBJ_DATA *obj, int vnum ) ); void obj_to_obj args( ( OBJ_DATA *obj, OBJ_DATA *obj_to ) ); void obj_from_obj args( ( OBJ_DATA *obj ) ); bool can_use_furniture args( ( CHAR_DATA *ch, OBJ_DATA *obj, int position ) ); void user_to_furniture args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); void user_from_furniture args( ( CHAR_DATA *ch ) ); void junk_obj args( ( OBJ_DATA *obj ) ); void extract_obj args( ( OBJ_DATA *obj ) ); void junk_mob args( ( CHAR_DATA *ch ) ); void extract_char args( ( CHAR_DATA *ch ) ); void extract_exit args( ( ROOM_INDEX_DATA *room, EXIT_DATA * pExit, int door ) ); int get_AFFECT_level args( ( CHAR_DATA *ch, lg_int bitv ) ); int get_affect_level args( ( CHAR_DATA *ch, int sn ) ); int obj_affect_level args( ( OBJ_DATA *obj, int sn ) ); char * get_name args( ( CHAR_DATA *ch ) ); CD * get_caster args( ( CHAR_DATA *ch, int sn ) ); CD * get_caster_obj args( ( OBJ_DATA *obj, int sn ) ); CD * get_caster_room args( ( ROOM_TIMER_DATA *rtd ) ); CD * get_char_list args( ( CHAR_DATA *ch, char *argument, CHAR_DATA *list ) ); CD * get_char_room args( ( CHAR_DATA *ch, char *argument ) ); CD * get_char_area args( ( CHAR_DATA *ch, char *argument ) ); CD * get_char_world args( ( CHAR_DATA *ch, char *argument ) ); CD * get_player_world args( ( CHAR_DATA *ch, char *argument ) ); CD * get_char_pvnum args( ( int pvnum ) ); CD * get_obj_owner args( ( OBJ_DATA *obj ) ); char * get_name_pvnum args( ( int pvnum ) ); int get_pvnum_name args( ( char *name ) ); OD * get_obj_list args( ( CHAR_DATA *ch, char *argument, OBJ_DATA *list ) ); OD * get_obj_carry_even_invis args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_carry args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_carry_type args( ( CHAR_DATA *ch, int type ) ); OD * get_obj_carry_keeper args( ( CHAR_DATA *keeper, char *argument, CHAR_DATA *ch ) ); OD * get_obj_wear args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_char_type args( ( CHAR_DATA *ch, int type ) ); OD * get_obj_wear_type args( ( CHAR_DATA *ch, int type ) ); OD * get_obj_wear_vnum args( ( CHAR_DATA *ch, int vnum ) ); OD * get_obj_here args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_world args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_room args( ( CHAR_DATA *ch, char *argument ) ); CD * get_mob_vnum args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_vnum args( ( CHAR_DATA *ch, char *argument ) ); RID * get_random_room_index args( ( CHAR_DATA *ch, int lo_room, int hi_room ) ); void check_improve args( ( CHAR_DATA *ch, int sn ) ); char * PERS args( ( CHAR_DATA *ch, CHAR_DATA *looker ) ); char * OBJD args( ( OBJ_DATA *obj, CHAR_DATA *looker ) ); char * adjective args( ( CHAR_DATA *ch ) ); bool knows_char args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); OD * create_money args( ( int amount ) ); int get_obj_weight args( ( OBJ_DATA *obj ) ); int get_obj_max_hit args( ( OBJ_DATA *obj ) ); bool room_is_private args( ( ROOM_INDEX_DATA *pRoomIndex ) ); bool can_see args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool can_see_world args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool can_see_smoke args( ( CHAR_DATA *ch ) ); bool can_see_hidden args( ( CHAR_DATA *ch, int dir ) ); bool can_see_in_room args( ( CHAR_DATA *ch, ROOM_INDEX_DATA *room ) ); int get_sight args( ( CHAR_DATA *ch, ROOM_INDEX_DATA *room ) ); int calc_room_light args( ( CHAR_DATA *ch, OBJ_DATA *object, ROOM_INDEX_DATA *room, bool fAdd ) ); int get_room_light args( ( ROOM_INDEX_DATA *room ) ); bool can_hear args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool can_see_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool can_drop_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); char * item_type_name args( ( OBJ_DATA *obj ) ); char * affect_loc_name args( ( int location ) ); char * affect2_bit_name args( ( int vector ) ); void char_reset args( ( CHAR_DATA *ch) ); sh_int obj_level_estimate args( ( OID *objIndex) ); bool blocking args( ( CHAR_DATA *victim, CHAR_DATA *ch) ); bool login_allowed args( ( DESCRIPTOR_DATA *d, CHAR_DATA *ch) ); ED * get_exit args( ( int vnum, bool door) ); bool can_use_exit args( ( CD *ch, EXIT_DATA *exit ) ); bool is_valid_exit args( ( CD *ch, RID *room, bool dir ) ); int OPPOSITE_ALIGN args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool is_grudging args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); int save_bonus args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn, int sdesc ) ); bool fort_save args( ( CHAR_DATA *ch, CHAR_DATA *caster, int level, int sn ) ); bool refl_save args( ( CHAR_DATA *ch, CHAR_DATA *caster, int level, int sn ) ); bool will_save args( ( CHAR_DATA *ch, CHAR_DATA *caster, int level, int sn ) ); AFFECT_DATA * get_affect_sn args( ( CHAR_DATA *ch, int sn ) ); /* class.c */ extern struct class_type class_table [MAX_CLASS]; bool IS_CLASSED args( ( CHAR_DATA *ch ) ); bool has_domain args( ( CHAR_DATA *ch, int dom ) ); bool domain_apotheosis args( ( CHAR_DATA *ch, int dom ) ); int get_bloodline args( ( CHAR_DATA *ch ) ); bool bloodline_capstone args( ( CHAR_DATA *ch, int bloodline ) ); int get_ranger_style args( ( CHAR_DATA *ch ) ); int get_monk_style args( ( CHAR_DATA *ch ) ); int get_school args( ( CHAR_DATA *ch ) ); bool arcane_mastery args( ( CHAR_DATA *ch, int school ) ); int class_level args( ( CHAR_DATA *ch, int class ) ); bool class_skill args( ( CHAR_DATA *ch, int sn ) ); bool class_ability args( ( CHAR_DATA *ch, int sn ) ); bool domain_skill args( ( CHAR_DATA *ch, int sn ) ); bool bloodline_skill args( ( CHAR_DATA *ch, int sn ) ); int multi args( ( CHAR_DATA *ch, int sn ) ); int multi_class_level args( ( CHAR_DATA *ch, int sn ) ); int multi_skill_level args( ( CHAR_DATA *ch, int sn ) ); /* character.c */ char *faith_rank args( ( CHAR_DATA *ch ) ); int get_curr_str args( ( CHAR_DATA *ch ) ); int get_curr_int args( ( CHAR_DATA *ch ) ); int get_curr_wis args( ( CHAR_DATA *ch ) ); int get_curr_dex args( ( CHAR_DATA *ch ) ); int get_curr_con args( ( CHAR_DATA *ch ) ); int get_curr_cha args( ( CHAR_DATA *ch ) ); int can_carry_n args( ( CHAR_DATA *ch ) ); int can_carry_w args( ( CHAR_DATA *ch ) ); int stat_mods args( ( CHAR_DATA *ch, int stat ) ); bool IS_FATIGUED args( ( CHAR_DATA *victim ) ); bool IS_EXHAUSTED args( ( CHAR_DATA *victim ) ); bool IS_STAGGERED args( ( CHAR_DATA *victim ) ); int stat_bonus args( ( bool fPerm, CHAR_DATA *ch, int stat ) ); int get_reputation args( ( CHAR_DATA *ch ) ); int reputation_bonus args( ( CHAR_DATA *ch ) ); void gain_reputation args( ( CHAR_DATA *ch, int value ) ); int starting_gold args( ( CHAR_DATA *ch ) ); int max_songs args( ( CHAR_DATA *ch ) ); int count_songs args( ( CHAR_DATA *ch ) ); int max_tongues args( ( CHAR_DATA *ch ) ); int count_tongues args( ( CHAR_DATA *ch ) ); void height_weight args( ( CHAR_DATA *ch ) ); int get_height args( ( CHAR_DATA *ch ) ); int get_weight args( ( CHAR_DATA *ch ) ); int str_roll args( ( CHAR_DATA *ch ) ); int int_roll args( ( CHAR_DATA *ch ) ); int wis_roll args( ( CHAR_DATA *ch ) ); int dex_roll args( ( CHAR_DATA *ch ) ); int con_roll args( ( CHAR_DATA *ch ) ); int cha_roll args( ( CHAR_DATA *ch ) ); int favored_class args( ( CHAR_DATA *ch ) ); int level_diff args( ( CHAR_DATA *ch ) ); int base_fort_save args( ( CHAR_DATA *ch ) ); int base_refl_save args( ( CHAR_DATA *ch ) ); int base_will_save args( ( CHAR_DATA *ch ) ); int get_fort_save args( ( CHAR_DATA *ch ) ); int get_refl_save args( ( CHAR_DATA *ch ) ); int get_will_save args( ( CHAR_DATA *ch ) ); int get_max_hit args( ( CHAR_DATA *ch ) ); int get_max_move args( ( CHAR_DATA *ch ) ); int learned args( ( CHAR_DATA *ch, int sn ) ); int dex_bonus_max args( ( CHAR_DATA *ch ) ); int spell_failure args( ( CHAR_DATA *ch ) ); bool has_armor_penalty args( ( CHAR_DATA *ch ) ); int armor_type_worn args( ( CHAR_DATA *ch ) ); int get_carry_w args( ( CHAR_DATA *ch ) ); int get_race args( ( CHAR_DATA *ch ) ); int get_size args( ( CHAR_DATA *ch ) ); int get_pets args( ( CHAR_DATA *ch ) ); int get_pet_levels args( ( CHAR_DATA *ch ) ); int max_pet_levels args( ( CHAR_DATA *ch ) ); CD *get_familiar args( ( CHAR_DATA *ch ) ); CD *get_companion args( ( CHAR_DATA *ch ) ); CD *get_warhorse args( ( CHAR_DATA *ch ) ); bool has_familiar args( ( CHAR_DATA *ch, int race ) ); /* mob_handler.c */ OD * get_obj_here_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_wear_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_carry_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_list_even_blinded args( ( CHAR_DATA *ch, char *argument, OBJ_DATA *list ) ); OD * get_obj_area_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); OD * get_obj_world_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); CD * get_char_room_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); CD * get_char_area_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); CD * get_char_world_even_blinded args( ( CHAR_DATA *ch, char *argument ) ); CD * get_player_world_even_blinded args( ( char *argument ) ); int find_mp_location args( ( CHAR_DATA *ch, char *arg ) ); bool is_room_good_for_teleport args( ( CHAR_DATA *victim, int rvnum ) ); void set_exit args( ( int room, int door, int dest) ); lg_int translate_bits args( ( char *string ) ); /* interp.c */ void interpret args( ( CHAR_DATA *ch, char *argue ) ); bool check_social_fast args( ( CHAR_DATA *ch, int cmd, char *argument ) ); bool check_social args( ( CHAR_DATA *ch, char *command, char *argument ) ); /* magic.c */ void irresistible_dance args( ( CHAR_DATA *ch ) ); int casting_class args( ( CHAR_DATA *ch, int sn, bool fCasting ) ); bool morph args( ( CHAR_DATA *ch, CHAR_DATA *victim, int race, int sn, int level ) ); bool revert_morph args( ( CHAR_DATA *ch, bool fDisplay ) ); char *skill_name args( ( int sn ) ); char *snarf_skill_name args( ( char *argument, char *name ) ); int max_spell_circle args( ( CHAR_DATA *ch, int class ) ); int get_max_mana args( ( CHAR_DATA *ch, int class ) ); void spell_damage args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dmg, int sn, int level ) ); int get_mana args( ( CHAR_DATA *ch, int sn, int circle, int class ) ); int get_spell_range args( ( int level, int sn ) ); bool is_caster args( ( CHAR_DATA *ch ) ); void use_spell_item args( ( CHAR_DATA *ch, OBJ_DATA *item, char *argument ) ); void use_item args( ( CHAR_DATA *ch, OBJ_DATA *item, char *argument ) ); void recite_scroll args( ( CHAR_DATA *ch, OBJ_DATA *scroll, char *argument ) ); void finish_reciting args( ( CHAR_DATA *ch ) ); int get_metamagic args( ( CHAR_DATA *ch, int sn, int feats, int circle, int class, bool fCasting ) ); int item_caster_level args( ( OBJ_DATA *obj, int sn ) ); int item_caster_level args( ( OBJ_DATA *obj, int sn ) ); int spontaneous_cast args( ( CHAR_DATA *ch, int sn ) ); int prepared args( ( CHAR_DATA *ch, int sn ) ); void update_casting args( ( void ) ); void release_cast args( ( CHAR_DATA *ch ) ); void free_cast args( ( CHAR_DATA *ch ) ); void say_spell args( ( CHAR_DATA *ch, int sn ) ); bool recall args( ( CHAR_DATA *ch, int vnum ) ); bool learned_in_class args( ( CHAR_DATA *ch, int sn, int class ) ); bool domain_spell args( ( CHAR_DATA *ch, int sn, int level ) ); bool school_spell args( ( CHAR_DATA *ch, int class ) ); int opp_school args( ( CHAR_DATA *ch ) ); bool opposing_school args( ( CHAR_DATA *ch, int class ) ); bool opposing_domain args( ( CHAR_DATA *ch, int class ) ); int slots_learned args( ( CHAR_DATA *ch, int class, int level ) ); int slots_full args( ( CHAR_DATA *ch, int class, int level ) ); int get_slot_count args( ( CHAR_DATA *ch, int class, int level ) ); int can_learn_spells args( ( CHAR_DATA *ch, int class, int level ) ); int multi_caster_level args( ( CHAR_DATA *ch, int sn ) ); int get_spell_circle args( ( CHAR_DATA *ch, int sn ) ); int get_caster_level args( ( CHAR_DATA *ch, int sn ) ); int circle_by_class args( ( CHAR_DATA *ch, int sn, int class ) ); bool is_safe_magic args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn ) ); int save_resist args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn, int level ) ); bool counterspell args( ( CHAR_DATA *ch, CHAR_DATA *caster, int sn, int level, bool CounterSong ) ); bool can_mass_cast args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn ) ); bool can_see_casting args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn ) ); bool check_spell_resist args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn, int level ) ); bool check_nondetection args( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn ) ); int skill_lookup args( ( char *name ) ); bool obj_cast_spell args( ( int sn, int level, CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *obj ) ); bool cast_spell args( ( CHAR_DATA *ch, char *argument, bool RaceCast ) ); bool weapon_cast_spell args( ( int sn, int level, CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *obj ) ); void totem_cast_spell args( ( OBJ_DATA *obj ) ); void show_identify_string args( ( OBJ_DATA *obj, CHAR_DATA *viewer ) ); /* mob_commands.c */ char * mprog_type_to_name args( ( lg_int type ) ); void mazegen( CHAR_DATA *, int, int, int, int, int, int, int, int, int, int); void transference args( (CHAR_DATA *victim, int location ) ); /* mob_prog.c */ void set_quest_bits args ( ( unsigned char **,unsigned int, unsigned int, unsigned int) ); int get_quest_bits args ( ( unsigned char *, unsigned int, unsigned int ) ); lg_int mprog_name_to_type args ( ( char *name ) ); char * mprog_type_to_name args ( ( lg_int type ) ); bool mprog_act_trigger args ( ( char* buf, CHAR_DATA *mob, CHAR_DATA* ch, OBJ_DATA* obj, void* vo ) ); bool mprog_arrival_trigger args ( ( CHAR_DATA *mob ) ); bool mprog_bribe_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *actor, int amount ) ); bool mprog_buy_trigger args ( ( CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object ) ); bool mprog_cast_trigger args ( ( CHAR_DATA *ch, CHAR_DATA *victim, int sn) ); bool mprog_death_trigger args ( ( CHAR_DATA *killer, CHAR_DATA *mob ) ); bool mprog_delay_trigger args ( ( CHAR_DATA *mob, bool index) ); bool mprog_desc_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *ch, char *txt ) ); bool mprog_do_greet_trigger args ( ( CHAR_DATA *ch, CHAR_DATA *mob ) ); bool mprog_entry_trigger args ( ( CHAR_DATA *mob ) ); bool mprog_exit_trigger args ( ( CHAR_DATA *mob, int door ) ); bool mprog_fight_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *ch ) ); bool mprog_give_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *ch, OBJ_DATA* obj ) ); bool mprog_greet_trigger args ( ( CHAR_DATA *ch ) ); bool mprog_hit_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *actor ) ); bool mprog_hitprcnt_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *ch ) ); bool mprog_intercept_trigger args ( ( char *txt, CHAR_DATA *mob, CHAR_DATA *ch, char *argument) ); bool mprog_kill_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *victim ) ); bool mprog_percent_check args ( ( CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool mprog_range_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *ch, bool shot_from ) ); bool mprog_repop_trigger args ( ( CHAR_DATA *mob ) ); bool mprog_sayto_trigger args ( ( char *txt, CHAR_DATA *mob, CHAR_DATA *vmob ) ); bool mprog_social_trigger args ( ( char *social, CHAR_DATA *mob, CHAR_DATA *ch) ); bool mprog_speech_direct_trigger args ( ( char *txt, CHAR_DATA *mob, CHAR_DATA *vmob ) ); bool mprog_speech_trigger args ( ( char *txt, CHAR_DATA *mob ) ); bool mprog_time_check args ( ( CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool mprog_trap_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *actor ) ); bool mprog_trigger_trigger args ( ( char *txt, CHAR_DATA *mob, CHAR_DATA *ch) ); bool mprog_wordlist_check args ( ( char * arg, CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); void set_supermob args ( ( OBJ_DATA *obj ) ); void rset_supermob args ( ( ROOM_INDEX_DATA *room ) ); void release_supermob args ( ( void ) ); bool oprog_act_trigger args ( ( char* buf, CHAR_DATA *mob, CHAR_DATA* ch, OBJ_DATA* obj, void* vo ) ); bool oprog_cast_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj, int sn) ); bool oprog_damage_trigger args ( ( CHAR_DATA *ch ) ); bool oprog_desc_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *ch, char *txt ) ); bool oprog_drop_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_examine_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_fight_trigger args ( ( OBJ_DATA *obj, CHAR_DATA *ch ) ); bool oprog_get_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_give_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_greet_trigger args ( ( CHAR_DATA *ch ) ); bool oprog_hit_trigger args ( ( CHAR_DATA *ch ) ); bool oprog_intercept_trigger args ( ( char *txt, CHAR_DATA *ch, char *argument) ); bool oprog_percent_check args ( ( CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool oprog_remove_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_repop_trigger args ( ( OBJ_DATA *obj ) ); bool oprog_sac_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_speech_trigger args ( ( char *txt, CHAR_DATA *mob ) ); bool oprog_trap_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_trigger_trigger args ( ( char *txt, OBJ_DATA *obj, CHAR_DATA *ch) ); bool oprog_use_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_wear_trigger args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool oprog_wordlist_check args ( ( char * arg, CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool oprog_time_check args ( ( CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool rprog_cast_trigger args ( ( CHAR_DATA *ch, int sn) ); bool rprog_death_trigger args ( ( CHAR_DATA *killer, CHAR_DATA *mob ) ); bool rprog_entry_trigger args ( ( CHAR_DATA *mob ) ); bool rprog_examine_trigger args ( ( CHAR_DATA *ch ) ); bool rprog_exit_trigger args ( ( CHAR_DATA *mob, int door ) ); bool rprog_greet_trigger args ( ( CHAR_DATA *ch ) ); bool rprog_intercept_trigger args ( ( char *txt, CHAR_DATA *ch, char *argument) ); bool rprog_kill_trigger args ( ( CHAR_DATA *mob, CHAR_DATA *victim ) ); bool rprog_percent_check args ( ( CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool rprog_speech_trigger args ( ( char *txt, CHAR_DATA *mob ) ); bool rprog_wordlist_check args ( ( char * arg, CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool rprog_fight_trigger args ( ( CHAR_DATA *ch ) ); bool rprog_time_check args ( ( CHAR_DATA *mob, CHAR_DATA* actor, OBJ_DATA* object, void* vo, lg_int type ) ); bool rprog_act_trigger args ( ( char* buf, CHAR_DATA *mob, CHAR_DATA* ch, OBJ_DATA* obj, void* vo ) ); /* * trap_handler.c */ int trap_dc args ( ( OBJ_DATA *obj ) ); bool spring_trap args ( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); bool trig_obj_trap args ( ( CHAR_DATA *ch, OBJ_DATA *obj, int type ) ); bool trig_room_trap args ( ( CHAR_DATA *ch, int type ) ); OD * get_room_trap args ( ( ROOM_INDEX_DATA *room, int type ) ); OD * get_obj_trap args ( ( OBJ_DATA *obj ) ); /* * save.c */ lg_int encrypt64 args( ( char *str ) ); void add_pvnum args( ( CHAR_DATA *ch ) ); int find_free_pvnum args( ( void ) ); void save_char_obj args( ( CHAR_DATA *ch, int which_type ) ); bool load_char_obj args( ( DESCRIPTOR_DATA *d, char *name ) ); void load_clan_pit args( ( FILE *fp )); void save_clan_pit args( ( CLAN_DATA *clan, FILE *fp )); int check_dirs args( ( void )); void load_lockers args( ( void ) ); void save_lockers args( ( void ) ); /* skills.c */ void stop_tracking args( ( CHAR_DATA *ch ) ); void track_char args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool CHECK_USES args( ( CHAR_DATA *ch, int sn ) ); int get_max_uses args( ( CHAR_DATA *ch, int sn ) ); int synergy_bonus args( ( CHAR_DATA *ch, int sn ) ); bool check_legal_name args( ( CHAR_DATA *ch, char *name ) ); int appraise_roll args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); int bluff_roll args( ( CHAR_DATA *ch ) ); int climb_roll args( ( CHAR_DATA *ch ) ); int concentration_roll args( ( CHAR_DATA *ch ) ); int decipher_script_roll args( ( CHAR_DATA *ch ) ); int diplomacy_roll args( ( CHAR_DATA *ch ) ); int disable_device_roll args( ( CHAR_DATA *ch ) ); int disguise_roll args( ( CHAR_DATA *ch ) ); int escape_artist_roll args( ( CHAR_DATA *ch ) ); int streetwise_roll args( ( CHAR_DATA *ch ) ); int feint_roll args( ( CHAR_DATA *ch ) ); int first_aid_roll args( ( CHAR_DATA *ch ) ); int handle_animal args( ( CHAR_DATA *ch ) ); int hide_roll args( ( CHAR_DATA *ch ) ); int haggle_roll args( ( CHAR_DATA *ch ) ); int handle_animal_roll args( ( CHAR_DATA *ch ) ); int intimidate_roll args( ( CHAR_DATA *ch ) ); int jump_roll args( ( CHAR_DATA *ch ) ); int mount_roll args( ( CHAR_DATA *ch ) ); int pick_lock_roll args( ( CHAR_DATA *ch ) ); int perform_roll args( ( CHAR_DATA *ch ) ); int search_roll args( ( CHAR_DATA *ch ) ); int sense_motive_roll args( ( CHAR_DATA *ch ) ); int sneak_roll args( ( CHAR_DATA *ch ) ); int perception_roll args( ( CHAR_DATA *ch, int sense ) ); int sleight_of_hand_roll args( ( CHAR_DATA *ch ) ); int spellcraft_roll args( ( CHAR_DATA *ch ) ); int survival_roll args( ( CHAR_DATA *ch ) ); int swim_roll args( ( CHAR_DATA *ch ) ); int tumble_roll args( ( CHAR_DATA *ch ) ); int use_magic_roll args( ( CHAR_DATA *ch ) ); bool bluff_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int climb_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool concentration_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool decipher_script_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool diplomacy_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int disguise_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int disable_device_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool escape_artist_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int first_aid_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool streetwise_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool handle_animal_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int haggle_check args( ( CHAR_DATA *ch, CHAR_DATA *och ) ); bool hide_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int intimidate_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int jump_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool perception_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool mount_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool pick_lock_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool search_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool sense_motive_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool sleight_of_hand_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool sneak_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool spellcraft_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int sn, int roll, int dc ) ); bool survival_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool swim_check args( ( CHAR_DATA *ch, int dc ) ); bool tumble_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); bool use_magic_check args( ( CHAR_DATA *ch, CHAR_DATA *och, int roll, int dc ) ); int craft_alchemy_roll args( ( CHAR_DATA *ch ) ); int craft_armor_roll args( ( CHAR_DATA *ch ) ); int craft_bow_roll args( ( CHAR_DATA *ch ) ); int craft_cooking_roll args( ( CHAR_DATA *ch ) ); int craft_fletch_roll args( ( CHAR_DATA *ch ) ); int craft_jewelry_roll args( ( CHAR_DATA *ch ) ); int craft_leather_roll args( ( CHAR_DATA *ch ) ); int craft_mining_roll args( ( CHAR_DATA *ch ) ); int craft_poison_roll args( ( CHAR_DATA *ch ) ); int craft_tailor_roll args( ( CHAR_DATA *ch ) ); int craft_trap_roll args( ( CHAR_DATA *ch ) ); int craft_weapon_roll args( ( CHAR_DATA *ch ) ); bool know_arcana_check args( ( CHAR_DATA *ch, int dc ) ); bool know_dungeoneering_check args( ( CHAR_DATA *ch, int dc ) ); bool know_geography_check args( ( CHAR_DATA *ch, int dc ) ); bool know_history_check args( ( CHAR_DATA *ch, int dc ) ); bool know_local_check args( ( CHAR_DATA *ch, int dc ) ); bool know_nature_check args( ( CHAR_DATA *ch, int dc ) ); bool know_nobility_check args( ( CHAR_DATA *ch, int dc ) ); bool know_religion_check args( ( CHAR_DATA *ch, int dc ) ); bool know_planes_check args( ( CHAR_DATA *ch, int dc ) ); /* mob_ai.c */ SPEC_FUN * spec_lookup args( ( const char *name ) ); char * spec_name_lookup args( ( SPEC_FUN *fun ) ); bool has_mana args( ( CHAR_DATA *ch, int sn ) ); bool has_affect args( ( CHAR_DATA *ch, int type ) ); int get_spell args( ( CHAR_DATA *ch, int class, int type ) ); bool caster_AI_combat args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool warrior_AI_combat args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); bool hunt_victim args( ( CHAR_DATA *ch ) ); CD * check_tanking args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); /* mccp.c */ bool start_compress args( ( DESCRIPTOR_DATA *d ) ); void end_compress args( ( DESCRIPTOR_DATA *d ) ); void process_compressed args( ( DESCRIPTOR_DATA *d ) ); void write_compressed args( ( DESCRIPTOR_DATA *d ) ); void send_compress_on args( ( DESCRIPTOR_DATA *d ) ); void send_naws args( ( DESCRIPTOR_DATA *d ) ); void send_ttype_on args( ( DESCRIPTOR_DATA *d ) ); void send_eor_on args( ( DESCRIPTOR_DATA *d ) ); void send_echo_on args( ( DESCRIPTOR_DATA *d ) ); void send_echo_off args( ( DESCRIPTOR_DATA *d ) ); void send_environ_on args( ( DESCRIPTOR_DATA *d ) ); void send_ga args( ( DESCRIPTOR_DATA *d ) ); void send_eor args( ( DESCRIPTOR_DATA *d ) ); int do_telopts args( ( DESCRIPTOR_DATA *d, bool *argument ) ); int process_ayt( DESCRIPTOR_DATA *d, bool *argument ); int process_sb_naws( DESCRIPTOR_DATA *d, bool *argument ); int process_will_linemode( DESCRIPTOR_DATA *d, bool *argument ); int process_sb_linemode( DESCRIPTOR_DATA *d, bool *argument ); int process_do_compress2( DESCRIPTOR_DATA *d, bool *argument ); int process_dont_compress2( DESCRIPTOR_DATA *d, bool *argument ); int process_will_ttype( DESCRIPTOR_DATA *d, bool *argument ); int process_sb_ttype( DESCRIPTOR_DATA *d, bool *argument ); int process_will_environ( DESCRIPTOR_DATA *d, bool *argument ); int process_sb_environ( DESCRIPTOR_DATA *d, bool *argument ); int process_do_tm( DESCRIPTOR_DATA *d, bool *argument ); int process_ip( DESCRIPTOR_DATA *d, bool *argument ); int process_do_eor( DESCRIPTOR_DATA *d, bool *argument ); int process_dont_sga( DESCRIPTOR_DATA *d, bool *argument ); /* update.c */ void update_skill_timer args( ( void ) ); void poison_update args( ( CHAR_DATA *ch ) ); void free_skill args( ( CHAR_DATA *ch ) ); int exp_level args( ( CHAR_DATA *ch, int level ) ); int starting_level args( ( CHAR_DATA *ch ) ); void advance_level args( ( CHAR_DATA *ch, bool fSave ) ); void monster_levels args( ( CHAR_DATA *ch, int levels ) ); void lose_level args( ( CHAR_DATA *ch, bool fSave ) ); void gain_exp args( ( CHAR_DATA *ch, int gain ) ); void gain_condition args( ( CHAR_DATA *ch, int iCond, int value ) ); bool gain_favor args( ( CHAR_DATA *ch, int Domain, int gain ) ); void update_handler args( ( void ) ); bool continuous_damage args( ( CHAR_DATA *ch ) ); void damage_update args( ( CHAR_DATA *ch ) ); void affect_update args( ( CHAR_DATA *ch ) ); void pray_update args( ( CHAR_DATA *ch ) ); void obj_char_update args( ( CHAR_DATA *ch ) ); void restore_mana args( ( CHAR_DATA *ch ) ); void destroy_mana args( ( CHAR_DATA *ch ) ); void mana_gain args( ( CHAR_DATA *ch, int hour ) ); void round_update args( ( void ) ); void weather_area_update args( ( AREA_DATA *area ) ); /* clans.c */ bool is_clan_leader args( ( CHAR_DATA *ch ) ); CLAN_DATA * get_clan args( ( char *name ) ); CLAN_DATA * get_clan_from_vnum args( ( int vnum ) ); void load_clans args( ( void ) ); void save_all_clans args( ( void ) ); void save_clan args( ( CLAN_DATA *clan ) ); void destroy_clan args( ( CLAN_DATA *clan ) ); void send_clan_message args( ( CLAN_DATA *clan, char *message ) ); lg_int max_coffer args( ( CLAN_DATA *clan ) ); bool is_own_clanhall args( ( CHAR_DATA *ch ) ); bool is_in_clanhall args( ( CHAR_DATA *ch ) ); /* race.c */ bool quadruped args( ( CHAR_DATA *ch ) ); bool can_trip args( ( CHAR_DATA *ch ) ); bool many_armed args( ( CHAR_DATA *ch ) ); bool many_legged args( ( CHAR_DATA *ch ) ); bool must_breathe args( ( CHAR_DATA *ch ) ); bool must_eat args( ( CHAR_DATA *ch ) ); int spell_resist args( ( CHAR_DATA *ch ) ); int race_type args( ( CHAR_DATA *ch ) ); int body_type args( ( CHAR_DATA *ch ) ); bool is_polymorph args( ( CHAR_DATA *ch ) ); bool dragon_spell args( ( CHAR_DATA *ch, int sn ) ); int dragon_caster_level args( ( int sn ) ); bool rspec_req args( ( CHAR_DATA *ch, lg_int attr ) ); bool has_body_part args( ( CHAR_DATA *ch, lg_int part ) ); int race_skill args( ( CHAR_DATA *ch, int sn ) ); bool is_immune args( ( CHAR_DATA *victim, int sdesc ) ); bool is_vulnerable args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dam_type ) ); int energy_resistance args( ( CHAR_DATA *victim, int dam, int dam_type ) ); int dam_reduction args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dam, int dam_type ) ); int energy_immunity args( ( CHAR_DATA *victim, int dam, int dam_type ) ); void apply_immunity_sdesc args( ( CHAR_DATA *ch ) ); void apply_immunity_energy args( ( CHAR_DATA *ch ) ); /* debug.c */ void push_call(char *f, ...); void push_call_format(char *f, ...); void pop_call(void); void dump_stack(void); void build_dump_stack( int vnum ); void dump_desc_characters(void); void print_errno(int number); char * cut_at_eol(char *string); void open_reserve(void); void close_reserve(void); FILE * my_fopen(char *filename, char *opentype, bool silent); void my_fclose(FILE *which); void my_fclose_all(); /* purger.c */ void start_purger(); void update_purger(); /* dynamic.c */ char * get_dynamic_description( CHAR_DATA *ch ); /* pathfind.c */ int findpath_search_victim( CHAR_DATA *ch, CHAR_DATA *victim, int range ); int findpath_room( CHAR_DATA *ch, int vnum, int range ); CD * findpath_search_name ( CHAR_DATA *ch, char *name, int range ); /* math.c */ lg_int mathexp(CHAR_DATA *ch, const char *str); lg_int mathexp_tokenize(CHAR_DATA *ch, const char *str); void mathexp_level(CHAR_DATA *ch, MATH_DATA *node); void mathexp_compute(CHAR_DATA *ch, MATH_DATA *node); lg_int tintoi(const char *str); lg_int tincmp(const char *left, const char *right); lg_int tindice(const char *left, const char *right); #undef CD #undef MID #undef OD #undef OID #undef RID #undef RD #undef AD #undef TM #undef HD #undef BD #undef ED #undef RTD void write_to_port args( ( DESCRIPTOR_DATA *d ) ); bool is_desc_valid( CHAR_DATA *); void reset_color( CHAR_DATA *); void add_player( CHAR_DATA *); void sub_player( CHAR_DATA *); int direction_door( char *); /* Returns door# from direction text */ CHAR_DATA *lookup_char( char *); bool is_spell( int ); bool is_spell_like( int ); lg_int get_game_usec( void ); int compare_obj( OBJ_DATA *, OBJ_DATA *); /* difference of strength if same */ int wear_flags_to_wear_loc( OBJ_DATA *, int ); /* type conversion */ int count_total_objects( OBJ_DATA *);/* determines total objects in cont */ char *get_color_diff( CHAR_DATA *, bool, bool, bool, bool, bool, bool); #define VICTORY_LIST_SIZE 25 char *victory_list[VICTORY_LIST_SIZE]; /* Presto 8/3/98 */ #define NORMAL_SAVE 0 #define BACKUP_SAVE 1 /* Hypnos 20020326: Directory mask for player dirs */ #define XX_DIRMASK 0770 /* Allows memory debugging, but allows memory corruptions more easily #define ALLOCMEM(result, type, number) \ { \ result = calloc(sizeof(type), number); \ } #define FREEMEM(point) \ { \ free(point); \ point = NULL; \ } */ #define ALLOCMEM(result, type, number) \ { \ result = calloc(1, sizeof(type) * (number)); \ } #define FREEMEM(point) \ { \ free(point); \ point = NULL; \ } #define CHECK_EDITMODE(ch) \ \ if (IS_NPC(ch)) \ { \ send_to_char( "You cannot use this command.", (ch)); \ pop_call(); \ return; \ } \ \ if ((ch)->pcdata->editmode == MODE_RESTRICTED) \ { \ send_to_char( "You cannot use edit commands while editing.\n\r", (ch)); \ pop_call(); \ return; \ } #define CHECK_AUTOSAVE(area) \ { \ if (IS_SET((area)->flags, AFLAG_AUTOSAVE)) \ { \ SET_BIT((area)->flags, AFLAG_MODIFIED); \ } \ } #define NKEY( literal, field, value ) \ { \ if (!strcmp(word, literal)) \ { \ field = value; \ fMatch = TRUE; \ break; \ } \ } #define SKEY( literal, field, value ) \ { \ if (!strcmp(word, literal)) \ { \ STRFREE( field ); \ field = value; \ fMatch = TRUE; \ break; \ } \ } #define AKEY( literal, field, value ) \ { \ if (!strcmp(word, literal)) \ { \ cnt = value; \ field[cnt] = value; \ fMatch = TRUE; \ break; \ } \ } #define RESTRING(point, value) \ { \ STRFREE(point); \ point = str_alloc((value)); \ } #define STRALLOC(point) str_alloc((point)) #define QUICKMATCH(p1, p2) (int) (p1) == (int) (p2) #define STRDUPE(point) str_dupe((point)) #define STRFREE(point) \ { \ str_free((point)); \ point = NULL; \ } /* New link added to the last link */ #define LINK(link, first, last, next, prev) \ { \ if (!(first)) \ { \ (first) = (link); \ } \ else \ { \ (last)->next = (link); \ } \ (link)->next = NULL; \ (link)->prev = (last); \ (last) = (link); \ } #define INSERT_LEFT(link, rght, first, next, prev) \ { \ (link)->prev = (rght)->prev; \ (rght)->prev = (link); \ (link)->next = (rght); \ \ if ((link)->prev) \ { \ (link)->prev->next = (link); \ } \ else \ { \ (first) = (link); \ } \ } #define INSERT_RIGHT(link, left, last, next, prev) \ { \ (link)->next = (left)->next; \ (left)->next = (link); \ (link)->prev = (left); \ \ if ((link)->next) \ { \ (link)->next->prev = (link); \ } \ else \ { \ (last) = (link); \ } \ } #define UNLINK(link, first, last, next, prev) \ { \ if (((link)->prev == NULL && (link) != first) \ || ((link)->next == NULL && (link) != last)) \ { \ log_printf("UNLINK error in file %s on line %d", __FILE__, __LINE__); \ dump_stack(); \ } \ if (!(link)->prev) \ { \ (first) = (link)->next; \ } \ else \ { \ (link)->prev->next = (link)->next; \ } \ if (!(link)->next) \ { \ (last) = (link)->prev; \ } \ else \ { \ (link)->next->prev = (link)->prev; \ } \ (link)->next = NULL; \ (link)->prev = NULL; \ } #define CHECK_KEEPER(ch, keeper) \ { \ if (!IS_AWAKE(keeper)) \ { \ send_to_char("In their dreams, or what?\n\r", ch); \ pop_call(); \ return; \ } \ if (is_grudging(keeper, ch)) \ { \ pop_call(); \ return; \ } \ if (!can_see(keeper, ch)) \ { \ send_to_char("The shopkeeper can't see you to trade with you!\n\r", ch); \ pop_call(); \ return ; \ } \ if (mud->time_info->hour < keeper->pIndexData->pShop->open_hour \ || mud->time_info->hour > keeper->pIndexData->pShop->close_hour) \ { \ command(keeper, do_say, "Sorry, my shop is closed."); \ command(keeper, do_say, "I am open from %d %s till %d %s.", \ keeper->pIndexData->pShop->open_hour %12, keeper->pIndexData->pShop->open_hour < 11 ? "am" : "pm", \ keeper->pIndexData->pShop->close_hour%12, keeper->pIndexData->pShop->close_hour < 11 ? "am" : "pm"); \ pop_call(); \ return; \ } \ if (IS_SET(keeper->pIndexData->pShop->shop_flags, SHOP_TEMPLE) \ && keeper->god != ch->god) \ { \ command(keeper, do_say, "Sorry, I only trade with others of my faith."); \ pop_call(); \ return; \ } \ if (IS_SET(keeper->pIndexData->pShop->shop_flags, SHOP_CLAN_STORE) \ && (!ch->pcdata->clan || keeper->in_room->creator_pvnum != ch->pcdata->clan->founder_pvnum)) \ { \ command(keeper, do_say, "Sorry, I only trade with others of this clan."); \ pop_call(); \ return; \ } \ } // Fix for meddlesome players trying to affect combat without joining - Kregor #define CHECK_TURN(ch, victim) \ { \ if (victim != NULL && in_combat(victim)) \ { \ if (!in_combat(ch)) \ { \ char_to_combat(ch, victim->in_battle); \ act ("$n rushes headlong into the fray!", ch, NULL, NULL, TO_CAN_SEE); \ act ("You rush headlong into the fray!", ch, NULL, NULL, TO_CHAR); \ TAKE_ACTION(ch, ACTION_MOVE); \ } \ if (!can_surprise(ch, victim)) \ { \ pop_call(); \ return; \ } \ } \ } // Alternate code simply keeps ch out of combat #define CHECK_TURN_NOFIGHT(ch, victim) \ { \ if (victim != NULL && in_combat(victim)) \ { \ if (!in_combat(ch)) \ { \ send_to_char("You're not involved in this fight!\n\r", ch); \ pop_call(); \ return; \ } \ if (!can_surprise(ch, victim)) \ { \ pop_call(); \ return; \ } \ } \ } // alternate for BOOL functions #define BOOL_CHECK_TURN(ch, victim) \ { \ if (victim != NULL && in_combat(victim)) \ { \ if (!in_combat(ch)) \ { \ char_to_combat(ch, victim->in_battle); \ act ("$n rushes headlong into the fray!", ch, NULL, NULL, TO_CAN_SEE); \ act ("You rush headlong into the fray!", ch, NULL, NULL, TO_CHAR); \ TAKE_ACTION(ch, ACTION_MOVE); \ } \ if (!can_surprise(ch, victim)) \ { \ pop_call(); \ return FALSE; \ } \ } \ }