/*------------------------------------------------------------------------\ | structs.h : Data Structures www.yourmud.org | | Copyright (C) 2006, Project Argila: Auroness | | | | All rights reserved. See Licensing documents included. | | | | Based upon Shadows of Isildur RPI Engine | | Copyright C. W. McHenry [Traithe], 2004 | | Derived under license from DIKU GAMMA (0.0). | \------------------------------------------------------------------------*/ #include <sys/types.h> #include <sys/time.h> typedef struct account_data ACCOUNT_DATA; typedef struct affected_type AFFECTED_TYPE; typedef struct alias_data ALIAS_DATA; typedef struct attacker_data ATTACKER_DATA; typedef struct board_data BOARD_DATA; typedef struct body_info BODY_INFO; typedef struct char_ability_data CHAR_ABILITY_DATA; typedef struct char_data CHAR_DATA; typedef struct charm_data CHARM_DATA; typedef struct clan_data CLAN_DATA; typedef struct combat_data COMBAT_DATA; typedef struct combat_msg_data COMBAT_MSG_DATA; typedef struct common_data COMMON_DATA; typedef struct default_item_data DEFAULT_ITEM_DATA; typedef struct delayed_affect_data DELAYED_AFFECT_DATA; typedef struct descriptor_data DESCRIPTOR_DATA; typedef struct dream_data DREAM_DATA; typedef struct extra_descr_data XTRA_DESCR_DATA; typedef struct help_data HELP_DATA; typedef struct help_info HELP_INFO; typedef struct known_spell_data KNOWN_SPELL_DATA; typedef struct line_data LINE_DATA; typedef struct lodged_missile_info LODGED_MISSILE_INFO; typedef struct lodged_object_info LODGED_OBJECT_INFO; typedef struct memory_t MEMORY_T; typedef struct message_data MESSAGE_DATA; typedef struct mob_data MOB_DATA; typedef struct mobprog_data MOBPROG_DATA; typedef struct move_data MOVE_DATA; typedef struct mudmail_data MUDMAIL_DATA; typedef struct name_switch_data NAME_SWITCH_DATA; typedef struct negotiation_data NEGOTIATION_DATA; typedef struct newbie_hint NEWBIE_HINT; typedef struct obj_data OBJ_DATA; typedef struct object_damage OBJECT_DAMAGE; typedef struct pc_data PC_DATA; typedef struct phase_data PHASE_DATA; typedef struct poison_data POISON_DATA; typedef struct prog_data PROG_DATA; typedef struct qe_data QE_DATA; typedef struct random_ch_data RANDOM_CH_DATA; typedef struct recipe_data RECIPE_DATA; typedef struct reset_affect RESET_AFFECT; typedef struct reset_data RESET_DATA; typedef struct reset_time_data RESET_TIME_DATA; typedef struct role_data ROLE_DATA; typedef struct room_data ROOM_DATA; typedef struct room_direction_data ROOM_DIRECTION_DATA; typedef struct room_extra_data ROOM_EXTRA_DATA; typedef struct room_prog ROOM_PROG; typedef struct second_affect SECOND_AFFECT; typedef struct shop_data SHOP_DATA; typedef struct site_info SITE_INFO; typedef struct social_data SOCIAL_DATA; typedef struct stored_character STORED_PC_DATA; typedef struct subcraft_head_data SUBCRAFT_HEAD_DATA; typedef struct text_data TEXT_DATA; typedef struct threat_data THREAT_DATA; typedef struct time_info_data TIME_INFO_DATA; typedef struct track_data TRACK_DATA; typedef struct trigger_data TRIGGER_DATA; typedef struct var_data VAR_DATA; typedef struct viewed_data VIEWED_DATA; typedef struct wound_data WOUND_DATA; typedef struct writing_data WRITING_DATA; typedef struct written_descr_data WRITTEN_DESCR_DATA; typedef char bool; typedef char byte; typedef unsigned long bitflag; typedef signed char shortint; struct timeval time_now; #define IMPLEMENTOR_ACCOUNT "God" #define MYSQL_USERNAME "Someone" #define MYSQL_PASS "password" #define MYSQL_HOST "localhost" #define MYSQL_SOCK NULL #define PRIMARY_DATABASE "shadows" #define PFILES_DATABASE "shadows_pfiles" #define LOG_DATABASE "server_logs" #define CRYPT_PASS "specpassword" #define STAFF_EMAIL "Someone@yourmud.org" #define SERVER_LOCATION "127.0.0.1" #define MUD_NAME "Your Mud" #define MUD_EMAIL "newmud@yourmud.org" /* Define top directory containing all three ports */ //#define PATH_TO_TOPDIR "~" //#define PATH_TO_SENDMAIL "/usr/sbin/sendmail" /* Define the individual port directories */ #define PATH_TO_PP PATH_TO_TOPDIR "/pp" #define PATH_TO_BP PATH_TO_TOPDIR "/bp" #define PATH_TO_TP PATH_TO_TOPDIR "/tp" /* Other miscellaneous filepath defines; absolute filepaths only! */ #define PATH_TO_WEBSITE "~/public_html" #define B_BUF_SIZE 200000 #define ADDBUF buf + strlen (buf) /* Misc defines */ /* Special Rooms */ #define NOWHERE -1 #define AMPITHEATRE 70 #define LINKDEATH_HOLDING_ROOM 71 #define JUNKYARD 71 #define OOC_LOUNGE 111 #define BOAT_ROOM 1500 /* TODO: make up ths room??!! */ #define ALPHA_START_LOC 111 #define BETA_START_LOC 111 #define GAMMA_START_LOC 111 #define ALPHA_RELEASE_ROOM 111 /* released prisoners transfered here */ #define BETA_RELEASE_ROOM 111 /* see act.other.c to use these rooms */ #define GAMMA_RELEASE_ROOM 111 #define TOLL_CURRENCY 1 /** PC Races rpp < 999 **/ #define RACE_HUMAN 0 /*#define RACE_HUMAN 1*/ /*#define RACE_HUMAN 2*/ /*#define RACE_HUMAN 3*/ /*#define RACE_HUMAN 4*/ /*#define RACE_HUMAN 5*/ /*#define RACE_HUMAN 6*/ /** Special NPC Races rpp = 999 **/ /** NPC Races rpp = 999 **/ #define RACE_AMPHIBIAN 7 #define RACE_ARACHNID 8 #define RACE_BAT 9 #define RACE_BEAR 10 #define RACE_BIRD 11 #define RACE_BOAR 12 #define RACE_BOBCAT 13 #define RACE_CAT 14 #define RACE_COW 15 #define RACE_DEER 16 #define RACE_DOG 17 #define RACE_FERRET 18 #define RACE_FISH 19 #define RACE_FOX 20 #define RACE_FROG 21 #define RACE_GOAT 22 #define RACE_GOOSE 23 #define RACE_HORSE 24 #define RACE_INSECT 25 #define RACE_MINK 26 #define RACE_MOUSE 27 #define RACE_PONY 28 #define RACE_RABBIT 29 #define RACE_RAT 30 #define RACE_REPTILE 31 #define RACE_SCORPION 32 #define RACE_SERPENT 33 #define RACE_SHEEP 34 #define RACE_SNAKE 35 #define RACE_SWINE 36 #define RACE_TOAD 37 #define RACE_WARHORSE 38 #define RACE_WOLF 39 #define MAX_RACE 39 #define LAST_PC_RACE 6 #define LAST_ROLE 9 #define MAX_SPECIAL_ROLES 50 /* Damage absorption limit for any humanoid N/PC is 50 + con x multiplier */ #define CONSTITUTION_MULTIPLIER 3 #define MAX_CLANS 100 #define CLAN_MEMBER (1 << 0) #define CLAN_LEADER (1 << 1) #define CLAN_MEMBER_OBJ (1 << 2) #define CLAN_LEADER_OBJ (1 << 3) #define CLAN_RECRUIT (1 << 4) #define CLAN_PRIVATE (1 << 5) #define CLAN_CORPORAL (1 << 6) #define CLAN_SERGEANT (1 << 7) #define CLAN_LIEUTENANT (1 << 8) #define CLAN_CAPTAIN (1 << 9) #define CLAN_GENERAL (1 << 10) #define CLAN_COMMANDER (1 << 11) #define CLAN_APPRENTICE (1 << 12) #define CLAN_JOURNEYMAN (1 << 13) #define CLAN_MASTER (1 << 14) #define TREAT_ALL (1 << 0) #define TREAT_SLASH (1 << 1) #define TREAT_BLUNT (1 << 2) #define TREAT_PUNCTURE (1 << 3) #define TREAT_BURN (1 << 6) #define TREAT_FROST (1 << 7) #define SEARCH_KEYWORD 1 #define SEARCH_SDESC 2 #define SEARCH_LDESC 3 #define SEARCH_FDESC 4 #define SEARCH_RACE 5 #define SEARCH_CLAN 6 #define SEARCH_SKILL 7 #define SEARCH_ROOM 8 #define SEARCH_LEVEL 9 #define SPA_STAND 1 #define SPA_GET_OBJ 2 #define SPA_WEAR_OBJ 3 #define SPA_CLOSE_DOOR 4 #define SPA_WORLD_SWAP 5 #define SPA_CORONAN_ARENA 6 #define SPA_CORONAN_OPEN_PEN 7 #define SPA_CORONAN_PEN 8 #define SPA_CORONAN_TICKLE 9 #define SPA_CORONAN_THREAT 10 #define SPA_CORONAN_TOSS_CHUTE 11 #define SPA_WALK 12 #define SPA_RUN 13 #define SPA_FOLLOW 14 #define SPA_SWIM 15 #define SPA_SHADOW 16 #define SPA_FLOOD 17 #define SPA_KNOCK_OUT 18 #define SPA_ESCAPE 19 #define SPA_MOVE 20 #define SPA_RESCUE 21 #define COMBAT_BRUTALITY 1.85 /** A quick way to adjust the brutality of combat; a setting of 175% seems pretty nasty, brutish, and short. Be careful with this! **/ #define VNUM_JAILBAG 43 #define VNUM_TICKET 44 #define VNUM_HEAD 45 #define VNUM_CORPSE 46 #define VNUM_SPEAKER_TOKEN 175 #define VNUM_STATUE 195 #define LEANTO_OBJ_VNUM 95 /*TODO: I need to prototype this room!!!*/ #define HEALER_KIT_VNUM 900 #define DEFAULT_COIN_VNUM 13002 /**TODO: make a default coin prototype - needed for do_pay**/ #define MAX_COIN 10 #define HOLIDAY_METTARE 1 #define HOLIDAY_YESTARE 2 #define HOLIDAY_TUILERE 3 #define HOLIDAY_LOENDE 4 #define HOLIDAY_ENDERI 5 #define HOLIDAY_YAVIERE 6 #define SPRING 0 #define SUMMER 1 #define AUTUMN 2 #define WINTER 3 #define MAX_SEASONS 4 #define DIR_WEST_WIND 0 #define DIR_NORTH_WIND 1 #define CLEAR_SKY 0 #define LIGHT_CLOUDS 1 #define HEAVY_CLOUDS 2 #define OVERCAST 3 #define CALM 0 #define BREEZE 1 #define WINDY 2 #define GALE 3 #define STORMY 4 #define NO_FOG 0 #define THIN_FOG 1 #define THICK_FOG 2 #define NO_RAIN 0 #define CHANCE_RAIN 1 #define LIGHT_RAIN 2 #define STEADY_RAIN 3 #define HEAVY_RAIN 4 #define LIGHT_SNOW 5 #define STEADY_SNOW 6 #define HEAVY_SNOW 7 #define BASE_SPELL 1000 #define BLEEDING_INTERVAL 1 /* 1 minute per "bleeding pulse".*/ #define BASE_SPECIAL_HEALING 30 /* Increased healing rate, for special mobs/PCs.*/ #define BASE_PC_HEALING 40 /* Number of minutes per healing pulse for standard PCs.*/ /* debug parameters */ #define DEBUG_FIGHT 1 #define DEBUG_MISC 2 #define DEBUG_SKILLS 4 #define DEBUG_SUMMARY 8 #define DEBUG_SUBDUE 16 /* registry */ #define REG_REGISTRY 0 #define REG_MAXBONUS 1 #define REG_DURATION 3 #define REG_OV 4 #define REG_LV 5 #define REG_CAP 6 #define REG_SKILLS 7 /* Link to DURATION, OV, LV, CAP */ #define REG_MISC 8 #define REG_MISC_NAMES 9 /* Link to MISC */ #define REG_MISC_VALUES 10 #define REG_MAX_RATES 13 /* Learning rates table skill vs formula */ #define MISC_DELAY_OFFSET 0 #define MISC_MAX_CARRY_N 1 #define MISC_MAX_CARRY_W 2 #define MISC_MAX_MOVE 3 #define MISC_STEAL_DEFENSE 4 #define CRIM_FIGHTING 5 #define CRIM_STEALING 3 /* vehicle types */ #define VEHICLE_BOAT 1 #define VEHICLE_HITCH 2 /* color system */ #define BELL "\007" /* main loop pulse control */ #define PULSES_PER_SEC 4 #define PULSE_ZONE (PULSES_PER_SEC * 60) #define PULSE_MOBILE 40 #define PULSE_STATS (PULSES_PER_SEC * 60 * 5) #define PULSE_AUTOSAVE (PULSES_PER_SEC * 60) #define PULSE_DELAY 4 #define PULSE_SMART_MOBS (PULSES_PER_SEC * 1) #define PULSE_MOB_SURVIVAL (PULSES_PER_SEC * 1) /* generic find defines */ #define FIND_CHAR_ROOM (1<<0) #define FIND_CHAR_WORLD (1<<1) #define FIND_OBJ_INV (1<<2) #define FIND_OBJ_ROOM (1<<3) #define FIND_OBJ_WORLD (1<<4) #define FIND_OBJ_EQUIP (1<<5) /* mob/object hash */ #define GEN_MOB 1 #define GEN_OBJ 2 #define GEN_WLD 3 #define MAX_HASH 1000 /* 100 vnums per hash */ #ifndef SIGCHLD #define SIGCHLD SIGCLD #endif /* string stuff */ #ifndef shroud #define MAX_STRING_LENGTH 20000 #define SMALL_STRING_LENGTH 24 #define MAX_LINE_LENGTH 80 #else #define MAX_STRING_LENGTH 20000 #define SMALL_STRING_LENGTH 24 #define MAX_LINE_LENGTH 80 #endif #define MAX_INPUT_LENGTH 4000 #define MAX_MESSAGES 60 #define MAX_ITEMS 153 #define MAX_TEXTS 100 #define MESS_ATTACKER 1 #define MESS_VICTIM 2 #define MESS_ROOM 3 #define SECS_PER_REAL_MIN 60 #define SECS_PER_REAL_HOUR (60*SECS_PER_REAL_MIN) #define SECS_PER_REAL_DAY (24*SECS_PER_REAL_HOUR) #define SECS_PER_REAL_YEAR (365*SECS_PER_REAL_DAY) #define UPDATE_PULSE (4 * 4) #define SECOND_PULSE (4) #define BASE_YEAR 2433 #define MAX_CONNECTIONS 400 #define DESCRIPTOR_DISCONNECT_SECS (5 * 60) #define PLAYER_IDLE_SECS (15 * 60) #define PLAYER_DISCONNECT_SECS (30 * 60) #define WEATHER_TEMPERATE 0 #define WEATHER_COOL 1 #define WEATHER_COLD 2 #define WEATHER_ARCTIC 3 #define WEATHER_WARM 4 #define WEATHER_HOT 5 #define WEATHER_DESERT 6 /* Weather-room descrition constants - see weather_room in constants.c */ #define WR_DESCRIPTIONS 12 /* Doesn't include WR_NORMAL */ #define WR_FOGGY 0 #define WR_CLOUDY 1 #define WR_RAINY 2 #define WR_STORMY 3 #define WR_SNOWY 4 #define WR_BLIZARD 5 #define WR_NIGHT 6 #define WR_NIGHT_FOGGY 7 #define WR_NIGHT_RAINY 8 #define WR_NIGHT_STORMY 9 #define WR_NIGHT_SNOWY 10 #define WR_NIGHT_BLIZARD 11 #define WR_NORMAL 12 /* For 'type_flag' */ #define ITEM_LIGHT 1 #define ITEM_SCROLL 2 #define ITEM_WAND 3 #define ITEM_STAFF 4 #define ITEM_WEAPON 5 #define ITEM_SHIELD 6 #define ITEM_MISSILE 7 #define ITEM_TREASURE 8 #define ITEM_ARMOR 9 #define ITEM_POTION 10 #define ITEM_WORN 11 #define ITEM_OTHER 12 #define ITEM_TRASH 13 #define ITEM_TRAP 14 #define ITEM_CONTAINER 15 #define ITEM_NOTE 16 #define ITEM_DRINKCON 17 #define ITEM_KEY 18 #define ITEM_FOOD 19 #define ITEM_MONEY 20 /* coins and the like */ #define ITEM_ORE 21 #define ITEM_BOARD 22 #define ITEM_FOUNTAIN 23 #define ITEM_GRAIN 24 #define ITEM_PERFUME 25 #define ITEM_POTTERY 26 #define ITEM_SALT 27 #define ITEM_ZONE 28 #define ITEM_PLANT 29 #define ITEM_COMPONENT 30 #define ITEM_HERB 31 #define ITEM_SALVE 32 #define ITEM_LOCKPICK 33 #define ITEM_INST_WIND 34 #define ITEM_INST_PERCU 35 #define ITEM_INST_STRING 36 #define ITEM_FUR 37 #define ITEM_WOODCRAFT 38 #define ITEM_SPICE 39 #define ITEM_TOOL 40 #define ITEM_USURY_NOTE 41 #define ITEM_BRIDLE 42 #define ITEM_TICKET 43 #define ITEM_HEAD 44 #define ITEM_DYE 45 #define ITEM_CLOTH 46 #define ITEM_INGOT 47 #define ITEM_TIMBER 48 #define ITEM_FLUID 49 #define ITEM_LIQUID_FUEL 50 #define ITEM_HEALER_KIT 51 /* set as type remedy */ #define ITEM_PARCHMENT 52 #define ITEM_BOOK 53 #define ITEM_WRITING_INST 54 #define ITEM_INK 55 #define ITEM_QUIVER 56 #define ITEM_SHEATH 57 #define ITEM_KEYRING 58 #define ITEM_BULLET 59 #define ITEM_NPC_OBJECT 60 #define ITEM_DWELLING 61 #define ITEM_TENT 62 #define ITEM_REPAIR_KIT 63 #define ITEM_BLINDFOLD 64 /* Bitvector For 'wear_flags' */ #define ITEM_WEAR_HEAD ( 1 << 0 ) #define ITEM_WEAR_HAIR ( 1 << 1 ) #define ITEM_WEAR_EAR ( 1 << 2 ) #define ITEM_WEAR_EYE ( 1 << 3 ) #define ITEM_WEAR_FACE ( 1 << 4 ) #define ITEM_WEAR_MOUTH ( 1 << 5 ) #define ITEM_WEAR_THROAT ( 1 << 6 ) #define ITEM_WEAR_NECK ( 1 << 7 ) #define ITEM_WEAR_BODY ( 1 << 8 ) #define ITEM_WEAR_ABOUT ( 1 << 9 ) #define ITEM_WEAR_BACK ( 1 << 10 ) #define ITEM_WEAR_SHOULDER ( 1 << 11 ) #define ITEM_WEAR_ARMS ( 1 << 12 ) #define ITEM_WEAR_WRIST ( 1 << 13 ) #define ITEM_WEAR_HANDS ( 1 << 14 ) #define ITEM_WEAR_FINGER ( 1 << 15 ) #define ITEM_WEAR_WAIST ( 1 << 16 ) #define ITEM_WEAR_BELT ( 1 << 17 ) #define ITEM_WEAR_LEGS ( 1 << 18 ) #define ITEM_WEAR_FEET ( 1 << 19 ) #define ITEM_TAKE ( 1 << 20 ) #define ITEM_WEAR_SHIELD ( 1 << 21 ) #define ITEM_WIELD ( 1 << 22 ) #define ITEM_HOLD ( 1 << 23 ) #define ITEM_THROW ( 1 << 24 ) #define ITEM_WEAR_SHEATH ( 1 << 25 ) #define ITEM_WEAR_BLINDFOLD ( 1 << 26 ) /* NOTE: UPDATE wear_bits in constants.c */ /* Bitvector for 'extra_flags' */ #define ITEM_DESTROYED ( 1 << 0 ) #define ITEM_HUM ( 1 << 1 ) #define ITEM_INVISIBLE ( 1 << 2 ) #define ITEM_MAGIC ( 1 << 3 ) #define ITEM_NODROP ( 1 << 4 ) #define ITEM_BLESS ( 1 << 5 ) #define ITEM_GET_AFFECT ( 1 << 6 ) #define ITEM_DROP_AFFECT ( 1 << 7 ) #define ITEM_MULTI_AFFECT ( 1 << 8 ) #define ITEM_WEAR_AFFECT ( 1 << 9 ) #define ITEM_WIELD_AFFECT ( 1 << 10 ) #define ITEM_HIT_AFFECT ( 1 << 11 ) #define ITEM_OK ( 1 << 12 ) #define ITEM_COMBINABLE ( 1 << 13 ) #define ITEM_LEADER ( 1 << 14 ) #define ITEM_MEMBER ( 1 << 15 ) #define ITEM_OMNI ( 1 << 16 ) #define ITEM_ILLEGAL ( 1 << 17 ) #define ITEM_RESTRICTED ( 1 << 18 ) #define ITEM_MASK ( 1 << 19 ) #define ITEM_MOUNT ( 1 << 20 ) #define ITEM_TABLE ( 1 << 21 ) #define ITEM_STACK ( 1 << 22 ) /* Item stack with same vnum objs */ #define ITEM_CAPITAL ( 1 << 23 ) /* can be used for trade */ #define ITEM_LOADS ( 1 << 24 ) /* Item is loaded by a reset */ #define ITEM_VARIABLE ( 1 << 25 ) #define ITEM_TIMER ( 1 << 26 ) /* Will decay */ #define ITEM_PC_SOLD ( 1 << 27 ) /* Sold to shopkeep by PC.*/ #define ITEM_THROWING ( 1 << 28 ) /* Weapon is suitable for throwing */ #define ITEM_NEWSKILLS ( 1 << 29 ) /* Doesn't need to be converted */ #define ITEM_PITCHED ( 1 << 30 ) /* Whether tent has been pitched or not*/ #define ITEM_VNPC ( 1 << 31 ) /* Item exists but isn't visible to players*/ /* for containers - value[1] */ #define CONT_CLOSEABLE ( 1 << 0 ) #define CONT_PICKPROOF ( 1 << 1 ) #define CONT_CLOSED ( 1 << 2 ) #define CONT_LOCKED ( 1 << 3 ) #define CONT_TRAP ( 1 << 4 ) #define CONT_BEHEADED ( 1 << 5 ) #define OBJ_NOTIMER -7000000 /* Bitvector for obj 'tmp_flags' */ #define SPA_DROPPED ( 1 << 0 ) /* Bitvector For 'room_flags' */ #define DARK ( 1 << 0 ) #define RUINS ( 1 << 1 ) #define NO_MOB ( 1 << 2 ) #define INDOORS ( 1 << 3 ) #define LAWFUL ( 1 << 4 ) #define NO_MAGIC ( 1 << 5 ) #define TUNNEL ( 1 << 6 ) #define CAVE ( 1 << 7 ) #define SAFE_Q ( 1 << 8 ) #define DEEP ( 1 << 9 ) #define FALL ( 1 << 10 ) #define NO_MOUNT ( 1 << 11 ) #define VEHICLE ( 1 << 12 ) #define STIFLING_FOG ( 1 << 13 ) #define NO_MERCHANT ( 1 << 14 ) #define CLIMB ( 1 << 15 ) #define SAVE ( 1 << 16 ) #define LAB ( 1 << 17 ) #define ROAD ( 1 << 18 ) #define WEALTHY ( 1 << 19 ) #define POOR ( 1 << 20 ) #define SCUM ( 1 << 21 ) #define MARKET ( 1 << 22 ) #define ARENA ( 1 << 23 ) #define DOCK ( 1 << 24 ) #define WILD ( 1 << 25 ) #define LIGHT ( 1 << 26 ) #define NOHIDE ( 1 << 27 ) #define STORAGE ( 1 << 28 ) #define PC_ENTERED ( 1 << 29 ) #define ROOM_OK ( 1 << 30 ) #define OOC ( 1 << 31 ) /* For 'dir_option' */ #define DIR_NORTH 0 #define DIR_EAST 1 #define DIR_SOUTH 2 #define DIR_WEST 3 #define DIR_UP 4 #define DIR_DOWN 5 /* exit_info */ #define PASSAGE_ISDOOR ( 1 << 0 ) #define PASSAGE_CLOSED ( 1 << 1 ) #define PASSAGE_LOCKED ( 1 << 2 ) #define PASSAGE_RSCLOSED ( 1 << 3 ) #define PASSAGE_RSLOCKED ( 1 << 4 ) #define PASSAGE_PICKPROOF ( 1 << 5 ) #define PASSAGE_SECRET ( 1 << 6 ) #define PASSAGE_TRAP ( 1 << 7 ) #define PASSAGE_TOLL ( 1 << 8 ) /* For 'Sector types' */ #define SECT_INSIDE 0 #define SECT_CITY 1 #define SECT_ROAD 2 #define SECT_TRAIL 3 #define SECT_FIELD 4 #define SECT_WOODS 5 #define SECT_FOREST 6 #define SECT_HILLS 7 #define SECT_MOUNTAIN 8 #define SECT_SWAMP 9 #define SECT_DOCK 10 #define SECT_CROWSNEST 11 #define SECT_PASTURE 12 #define SECT_HEATH 13 #define SECT_PIT 14 #define SECT_LEANTO 15 #define SECT_LAKE 16 #define SECT_RIVER 17 #define SECT_OCEAN 18 #define SECT_REEF 19 #define SECT_UNDERWATER 20 #define MAX_SECTOR 20 /* ---- For new herb stuff ---- */ #define NUM_FORAGEABLES 17 /* Herb sectors */ #define HERB_NUMSECTORS 9 #define HERB_FIELD 0 #define HERB_PASTURE 1 #define HERB_WOODS 2 #define HERB_FOREST 3 #define HERB_MOUNTAINS 4 #define HERB_SWAMP 5 #define HERB_HEATH 6 #define HERB_HILLS 7 #define HERB_WATERNOSWIM 8 #define HERB_RARITIES 5 #define MAX_HERBS_PER_ROOM 3 #define HERB_RESET_DURATION 24 /* For 'equip' */ /** Position on character * see also const char *locations **/ #define WEAR_PRIM 0 #define WEAR_SEC 1 #define WEAR_BOTH 2 #define WEAR_HEAD 3 #define WEAR_HAIR 4 #define WEAR_EAR 5 #define WEAR_EYE 6 #define WEAR_FACE 7 #define WEAR_MOUTH 8 #define WEAR_THROAT 9 #define WEAR_NECK_1 10 #define WEAR_NECK_2 11 #define WEAR_BODY_1 12 #define WEAR_BODY_2 13 #define WEAR_BODY_3 14 #define WEAR_BODY_4 15 #define WEAR_BODY_5 16 #define WEAR_ABOUT 17 #define WEAR_BACK 18 #define WEAR_SHOULDER_R 19 #define WEAR_SHOULDER_L 20 #define WEAR_ARMS 21 #define WEAR_WRIST_R 22 #define WEAR_WRIST_L 23 #define WEAR_HANDS 24 #define WEAR_FINGER_R 25 #define WEAR_FINGER_L 26 #define WEAR_WAIST 27 #define WEAR_BELT_1 28 #define WEAR_BELT_2 29 #define WEAR_LEGS_1 30 #define WEAR_LEGS_2 31 #define WEAR_LEGS_3 32 #define WEAR_FEET_1 33 #define WEAR_FEET_2 34 #define WEAR_SHIELD 35 #define WEAR_BLINDFOLD 36 #define MAX_WEAR 36 #define MAX_SKILLS 150 #define MAX_AFFECT 25 /* conditions */ #define DRUNK 0 #define FULL 1 #define THIRST 2 /* Bitvector for 'affected_by' */ #define AFF_UNDEF1 ( 1 << 0 ) #define AFF_INVISIBLE ( 1 << 1 ) #define AFF_INFRAVIS ( 1 << 2 ) #define AFF_DETECT_INVISIBLE ( 1 << 3 ) #define AFF_DETECT_MAGIC ( 1 << 4 ) #define AFF_SENSE_LIFE ( 1 << 5 ) #define AFF_SANCTUARY ( 1 << 7 ) #define AFF_GROUP ( 1 << 8 ) #define AFF_CURSE ( 1 << 9 ) #define AFF_FLAMING ( 1 << 10 ) #define AFF_SCAN ( 1 << 11 ) #define AFF_SNEAK ( 1 << 12 ) #define AFF_HIDE ( 1 << 13 ) #define AFF_FOLLOW ( 1 << 14 ) #define AFF_HOODED ( 1 << 15 ) /* modifiers to char's abilities */ #define APPLY_NONE 0 #define APPLY_STR 1 #define APPLY_DEX 2 #define APPLY_INT 3 #define APPLY_CHA 4 #define APPLY_AUR 5 #define APPLY_WIL 6 #define APPLY_CON 7 #define APPLY_SEX 8 #define APPLY_AGE 9 #define APPLY_CHAR_WEIGHT 10 #define APPLY_CHAR_HEIGHT 11 #define APPLY_DEFENSE 12 /* Free - APPLY_DEFENSE not used */ #define APPLY_HIT 13 #define APPLY_MOVE 14 #define APPLY_CASH 15 #define APPLY_AC 16 #define APPLY_ARMOR 16 #define APPLY_OFFENSE 17 /* Free - APPLY_OFFENSE not used */ #define APPLY_DAMROLL 18 #define APPLY_SAVING_PARA 19 #define APPLY_SAVING_ROD 20 #define APPLY_SAVING_PETRI 21 #define APPLY_SAVING_BREATH 22 #define APPLY_SAVING_SPELL 23 #define APPLY_AGI 24 /* Above 100, don't reapply upon restore of character. */ #define APPLY_BRAWLING 123 #define APPLY_CLUB 124 #define APPLY_SPEAR 125 #define APPLY_SWORD 126 #define APPLY_DAGGER 127 #define APPLY_AXE 128 #define APPLY_WHIP 129 #define APPLY_POLEARM 130 #define APPLY_DUAL 131 #define APPLY_BLOCK 132 #define APPLY_PARRY 133 #define APPLY_SUBDUE 134 #define APPLY_DISARM 135 #define APPLY_SNEAK 136 #define APPLY_HIDE 137 #define APPLY_STEAL 138 #define APPLY_PICK 139 #define APPLY_SEARCH 140 #define APPLY_LISTEN 141 #define APPLY_FORAGE 142 #define APPLY_RITUAL 143 #define APPLY_SCAN 144 #define APPLY_BACKSTAB 145 #define APPLY_BARTER 146 #define APPLY_RIDE 147 #define APPLY_CLIMB 148 #define APPLY_PEEP 149 /* Obsoleted */ #define APPLY_HUNT 150 #define APPLY_SKIN 151 #define APPLY_SAIL 152 #define APPLY_ALCHEMY 153 #define APPLY_HERBALISM 154 #define FIRST_APPLY_SKILL APPLY_BRAWLING #define LAST_APPLY_SKILL APPLY_HERBALISM /* NOTE: Change affect_modify in handler.c if new APPLY's are added */ /* sex */ #define SEX_NEUTRAL 0 #define SEX_MALE 1 #define SEX_FEMALE 2 /* positions */ #define POSITION_DEAD 0 #define POSITION_MORTALLYW 1 #define POSITION_UNCONSCIOUS 2 #define POSITION_STUNNED 3 #define POSITION_SLEEPING 4 #define POSITION_RESTING 5 #define POSITION_SITTING 6 #define POSITION_FIGHTING 7 #define POSITION_STANDING 8 /* for mobile actions: specials.act */ #define ACT_MEMORY ( 1 << 0 ) #define ACT_SENTINEL ( 1 << 1 ) #define ACT_SCAVENGER ( 1 << 2 ) #define ACT_ISNPC ( 1 << 3 ) #define ACT_NOVNPC ( 1 << 4 ) /* Shopkeep doesn't have vNPC buyers */ #define ACT_AGGRESSIVE ( 1 << 5 ) #define ACT_STAY_ZONE ( 1 << 6 ) #define ACT_WIMPY ( 1 << 7 ) #define ACT_SAGGRESS ( 1 << 8 ) #define ACT_PURSUE ( 1 << 8 ) #define ACT_THIEF ( 1 << 9 ) #define ACT_HUNTER ( 1 << 10 ) #define ACT_KILLER ( 1 << 11 ) #define ACT_ENFORCER ( 1 << 12 ) #define ACT_STEALTHY ( 1 << 13 ) #define ACT_VEHICLE ( 1 << 14 ) #define ACT_STOP ( 1 << 15 ) /* Lines up with PLR_STOP */ #define ACT_CRIMINAL ( 1 << 16 ) #define ACT_PARIAH ( 1 << 17 ) #define ACT_MOUNT ( 1 << 18 ) #define ACT_DONTUSE ( 1 << 19 ) /* Was AUTOFLEE, use FLAG_AUTOFLEE */ #define ACT_PCOWNED ( 1 << 20 ) #define ACT_WILDLIFE ( 1 << 21 ) /* Wildlife doesn't attack wildlife */ #define ACT_STAYPUT ( 1 << 22 ) /* Saves between reboots */ #define ACT_PASSIVE ( 1 << 23 ) /* Won't assist clan members */ #define ACT_NICE_THIEF ( 1 << 24 ) #define ACT_ECONZONE ( 1 << 25 ) /* NPC uses econ zone discount/markups*/ #define ACT_JAILER ( 1 << 26 ) /* Jailer flag for NPCs */ #define ACT_NOBIND ( 1 << 27 ) #define ACT_NOBLEED ( 1 << 28 ) #define ACT_FLYING ( 1 << 29 ) #define ACT_PHYSICIAN ( 1 << 30 ) #define ACT_PREY ( 1 << 31 ) /* Animals may only be ambushed or hit with ranged weapons */ /* For players : specials.act */ #define PLR_QUIET ( 1 << 4 ) #define PLR_STOP ( 1 << 15 ) /* Target classes: */ #define TAR_AREA 0 #define TAR_CHAR_OFFENSIVE 1 #define TAR_CHAR_DEFENSIVE 2 #define TAR_CHAR_SELF 3 #define TAR_OBJ 4 #define TAR_OBJ_INV 5 #define TAR_CHAR_SECRET 6 #define TAR_IGNORE 7 #define JOB_1 600 #define JOB_2 601 #define JOB_3 602 /* Affect for toggling listen/mute */ #define MUTE_EAVESDROP 620 /* Affect for counting the number of times a room is herbed */ #define HERBED_COUNT 621 #define CRAFT_FIRST_OLD 650 /* Crafts can be assigned in the */ #define CRAFT_LAST_OLD 899 /* range CRAFT_FIRST..CRAFT_LAST */ #define AFFECT_SHADOW 900 /* Affected n/pc shadows another n/pc */ #define AFFECT_GUARD_DIR 950 /* Affected n/pc shadows another n/pc */ #define AFFECT_LOST_CON 980 #define AFFECT_HOLDING_BREATH 990 /* Swimming underwater! */ #define MAGIC_CRIM_BASE 1000 /* Criminal tags reservd from 1000..1100 */ #define MAGIC_CRIM_RESERVED 1100 /* 1000..1100 are reserved */ #define MAGIC_CLAN_MEMBER_BASE 1200 /* Clan tags reserved from 1200..1299 */ #define MAGIC_CLAN_LEADER_BASE 1300 /* Clan tags reserved from 1300..1399 */ #define MAGIC_CLAN_OMNI_BASE 1400 /* Clan tags reserved from 1400..1499 */ #define MAGIC_SKILL_GAIN_STOP 1500 /* Skill use spam 1500..1500+MAX_SKILLS */ #define MAGIC_SPELL_GAIN_STOP 1800 #define MAGIC_CRAFT_BRANCH_STOP 2000 #define MAGIC_CRAFT_DELAY 2010 #define MAGIC_HIDDEN 2011 #define MAGIC_SNEAK 2012 #define MAGIC_NOTIFY 2013 #define MAGIC_CLAN_NOTIFY 2014 #define MAGIC_TOLL 2015 #define MAGIC_TOLL_PAID 2016 #define MAGIC_DRAGGER 2017 #define MAGIC_GUARD 2018 #define MAGIC_WATCH1 2019 #define MAGIC_WATCH2 2020 #define MAGIC_WATCH3 2021 #define MAGIC_STAFF_SUMMON 2022 #define MAGIC_CRIM_HOODED 2600 /* Hooded criminal observed in zone .. */ #define MAGIC_STARED 2700 /* Don't stare again until this expires */ #define MAGIC_SKILL_MOD_FIRST 3000 /* Reserve 200 for skill mod affects */ #define MAGIC_SKILL_MOD_LAST 3200 #define MAGIC_SENT 3250 /* Used with the emote system. */ #define MAGIC_SMELL_FIRST 3300 #define MAGIC_AKLASH_ODOR 3300 #define MAGIC_ROSE_SCENT 3301 #define MAGIC_JASMINE_SCENT 3302 #define MAGIC_SEWER_STENCH 3303 #define MAGIC_SOAP_AROMA 3304 #define MAGIC_CINNAMON_SCENT 3305 #define MAGIC_LEORTEVALD_STENCH 3306 #define MAGIC_YULPRIS_ODOR 3307 #define MAGIC_FRESH_BREAD 3308 #define MAGIC_MOWN_HAY 3309 #define MAGIC_FRESH_LINEN 3310 #define MAGIC_INCENSE_SMOKE 3311 #define MAGIC_WOOD_SMOKE 3312 #define MAGIC_SMELL_LAST 3399 #define MAGIC_AFFECT_FIRST 3400 #define MAGIC_AFFECT_DMG 3400 #define MAGIC_AFFECT_HEAL 3401 #define MAGIC_AFFECT_PROJECTILE_IMMUNITY 3402 #define MAGIC_AFFECT_INFRAVISION 3403 #define MAGIC_AFFECT_CONCEALMENT 3404 #define MAGIC_AFFECT_INVISIBILITY 3405 #define MAGIC_AFFECT_SEE_INVISIBLE 3406 #define MAGIC_AFFECT_SENSE_LIFE 3407 #define MAGIC_AFFECT_TONGUES 3408 #define MAGIC_AFFECT_LEVITATE 3409 #define MAGIC_AFFECT_SLOW 3410 #define MAGIC_AFFECT_SPEED 3411 #define MAGIC_AFFECT_SLEEP 3412 #define MAGIC_AFFECT_PARALYSIS 3413 #define MAGIC_AFFECT_FEAR 3414 #define MAGIC_AFFECT_REGENERATION 3415 #define MAGIC_AFFECT_CURSE 3416 #define MAGIC_AFFECT_DIZZINESS 3417 #define MAGIC_AFFECT_FURY 3418 #define MAGIC_AFFECT_INVULNERABILITY 3419 #define MAGIC_AFFECT_ARMOR 3420 #define MAGIC_AFFECT_BLESS 3421 #define MAGIC_AFFECT_LAST 4999 #define MAGIC_ROOM_CALM 5000 #define MAGIC_ROOM_LIGHT 5001 #define MAGIC_ROOM_DARK 5002 #define MAGIC_ROOM_DEBUG 5003 #define MAGIC_ROOM_FLOOD 5004 #define MAGIC_WORLD_CLOUDS 5005 /* Blocks the sun */ #define MAGIC_WORLD_SOLAR_FLARE 5006 /* Creates an artificial sun */ #define MAGIC_WORLD_MOON 5006 /* Moonlight in all rooms */ #define MAGIC_BUY_ITEM 5400 #define MAGIC_ROOM_FIGHT_NOISE 5500 #define MAGIC_PETITION_MESSAGE 5600 #define MAGIC_STABLING_PAID 5700 #define MAGIC_STABLING_LAST 5999 #define MAGIC_FLAG_NOGAIN 6000 #define MAGIC_WARNED 6500 #define MAGIC_RAISED_HOOD 6600 #define MAGIC_SIT_TABLE 6700 /* PC acquires this affect when at a table*/ #define CRAFT_FIRST 8000 /* Crafts can be assigned in the */ #define CRAFT_LAST 10000 /* range CRAFT_FIRST..CRAFT_LAST */ #define MAGIC_FIRST_SOMA 11000 /* SOMATIC EFFECTS TBA */ #define SOMA_MUSCULAR_CRAMP 11001 /* pain echo */ #define SOMA_MUSCULAR_TWITCHING 11002 #define SOMA_MUSCULAR_TREMOR 11003 #define SOMA_MUSCULAR_PARALYSIS 11004 #define SOMA_DIGESTIVE_ULCER 11005 /* pain echo */ #define SOMA_DIGESTIVE_VOMITING 11006 #define SOMA_DIGESTIVE_BLEEDING 11007 /* vomiting blood */ #define SOMA_EYE_BLINDNESS 11008 #define SOMA_EYE_BLURRED 11009 #define SOMA_EYE_DOUBLE 11010 #define SOMA_EYE_DILATION 11011 /* light sensitivity */ #define SOMA_EYE_CONTRACTION 11012 /* tunnel vision? */ #define SOMA_EYE_LACRIMATION 11013 /* watery eyes */ #define SOMA_EYE_PTOSIS 11014 /* drooping lids */ #define SOMA_EAR_TINNITUS 11015 /* noise echo */ #define SOMA_EAR_DEAFNESS 11016 #define SOMA_EAR_EQUILLIBRIUM 11017 /* dizziness */ #define SOMA_NOSE_ANOSMIA 11018 /* ignore aroma effects */ #define SOMA_NOSE_RHINITIS 11019 /* itchy/runny nose */ #define SOMA_MOUTH_SALIVATION 11020 /* heh */ #define SOMA_MOUTH_TOOTHACHE 11021 /* pain echo / looseness */ #define SOMA_MOUTH_DRYNESS 11022 /* echo */ #define SOMA_MOUTH_HALITOSIS 11023 #define SOMA_CHEST_DIFFICULTY 11024 /* pain echo */ #define SOMA_CHEST_WHEEZING 11025 #define SOMA_CHEST_RAPIDBREATH 11026 #define SOMA_CHEST_SLOWBREATH 11027 #define SOMA_CHEST_FLUID 11028 #define SOMA_CHEST_PALPITATIONS 11029 #define SOMA_CHEST_COUGHING 11030 #define SOMA_CHEST_PNEUMONIA 11031 #define SOMA_NERVES_PSYCHOSIS 11032 #define SOMA_NERVES_DELIRIUM 11033 #define SOMA_NERVES_COMA 11034 /* depression & drowsiness too */ #define SOMA_NERVES_CONVULSIONS 11035 #define SOMA_NERVES_HEADACHE 11036 #define SOMA_NERVES_CONFUSION 11037 /* misdirection? ;) */ #define SOMA_NERVES_PARETHESIAS 11038 /* am i on fire? ;) */ #define SOMA_NERVES_ATAXIA 11039 /* --dex */ #define SOMA_NERVES_EQUILLIBRIUM 11040 #define SOMA_SKIN_CYANOSIS 11041 #define SOMA_SKIN_DRYNESS 11042 #define SOMA_SKIN_CORROSION 11043 #define SOMA_SKIN_JAUNDICE 11044 #define SOMA_SKIN_REDNESS 11045 #define SOMA_SKIN_RASH 11046 #define SOMA_SKIN_HAIRLOSS 11047 #define SOMA_SKIN_EDEMA 11048 #define SOMA_SKIN_BURNS 11049 #define SOMA_SKIN_PALLOR 11050 #define SOMA_SKIN_SWEATING 11051 #define SOMA_GENERAL_WEIGHTLOSS 11052 #define SOMA_GENERAL_LETHARGY 11053 #define SOMA_GENERAL_APPETITELOSS 11054 #define SOMA_GENERAL_PRESSUREDROP 11055 #define SOMA_GENERAL_PRESSURERISE 11056 #define SOMA_GENERAL_FASTPULSE 11057 #define SOMA_GENERAL_SLOWPULSE 11058 #define SOMA_GENERAL_HYPERTHERMIA 11059 #define SOMA_GENERAL_HYPOTHERMIA 11060 #define MAGIC_LAST_SOMA 11060 #define TYPE_UNDEFINED -1 #define TYPE_SUFFERING 200 /* KILLER CDR: Eliminate this line somehow */ /* skills */ /** see also skill_data[] in constants.c **/ #define SKILL_DEFENSE -3 /* Special cased; a pseudo skill */ #define SKILL_OFFENSE -2 /* Special cased; a pseudo skill */ /** Innate Skills **/ #define SKILL_BRAWLING 1 #define SKILL_LIGHT_EDGE 2 #define SKILL_MEDIUM_EDGE 3 #define SKILL_HEAVY_EDGE 4 #define SKILL_LIGHT_BLUNT 5 #define SKILL_MEDIUM_BLUNT 6 #define SKILL_HEAVY_BLUNT 7 #define SKILL_LIGHT_PIERCE 8 #define SKILL_MEDIUM_PIERCE 9 #define SKILL_HEAVY_PIERCE 10 #define SKILL_STAFF 11 #define SKILL_POLEARM 12 #define SKILL_THROWN 13 #define SKILL_BLOWGUN 14 #define SKILL_SLING 15 #define SKILL_SHORTBOW 16 #define SKILL_LONGBOW 17 #define SKILL_CROSSBOW 18 #define SKILL_DUAL 19 #define SKILL_BLOCK 20 #define SKILL_PARRY 21 #define SKILL_SUBDUE 22 #define SKILL_DISARM 23 #define SKILL_SNEAK 24 #define SKILL_HIDE 25 #define SKILL_STEAL 26 #define SKILL_PICK 27 #define SKILL_SEARCH 28 #define SKILL_LISTEN 29 #define SKILL_FORAGE 30 #define SKILL_RITUAL 31 #define SKILL_SCAN 32 #define SKILL_BACKSTAB 33 #define SKILL_BARTER 34 #define SKILL_RIDE 35 #define SKILL_CLIMB 36 #define SKILL_SWIMMING 37 #define SKILL_HUNT 38 #define SKILL_SKIN 39 #define SKILL_SAIL 40 #define SKILL_ALCHEMY 41 #define SKILL_HERBALISM 42 #define SKILL_CLAIRVOYANCE 43 #define SKILL_DANGER_SENSE 44 #define SKILL_EMPATHIC_HEAL 45 #define SKILL_HEX 46 #define SKILL_MENTAL_BOLT 47 #define SKILL_PRESCIENCE 48 #define SKILL_SENSITIVITY 49 #define SKILL_TELEPATHY 50 #define SKILL_SEAFARING 51 #define SKILL_DODGE 52 #define SKILL_TAME 53 #define SKILL_BREAK 54 #define SKILL_METALCRAFT 55 #define SKILL_WOODCRAFT 56 #define SKILL_TEXTILECRAFT 57 #define SKILL_COOKERY 58 #define SKILL_BAKING 59 #define SKILL_HIDEWORKING 60 #define SKILL_STONECRAFT 61 #define SKILL_CANDLERY 62 #define SKILL_BREWING 63 #define SKILL_DISTILLING 64 #define SKILL_LITERACY 65 #define SKILL_DYECRAFT 66 #define SKILL_APOTHECARY 67 #define SKILL_GLASSWORK 68 #define SKILL_GEMCRAFT 69 #define SKILL_MILLING 70 #define SKILL_MINING 71 #define SKILL_PERFUMERY 72 #define SKILL_POTTERY 73 #define SKILL_TRACKING 74 #define SKILL_FARMING 75 #define SKILL_HEALING 76 #define SKILL_SPEAK_ATLIDUK 77 #define SKILL_SPEAK_ADUNAIC 78 #define SKILL_SPEAK_HARADAIC 79 #define SKILL_SPEAK_WESTRON 80 #define SKILL_SPEAK_DUNAEL 81 #define SKILL_SPEAK_LABBA 82 #define SKILL_SPEAK_NORLIDUK 83 #define SKILL_SPEAK_ROHIRRIC 84 #define SKILL_SPEAK_TALATHIC 85 #define SKILL_SPEAK_UMITIC 86 #define SKILL_SPEAK_NAHAIDUK 87 #define SKILL_SPEAK_PUKAEL 88 #define SKILL_SPEAK_SINDARIN 89 #define SKILL_SPEAK_QUENYA 90 #define SKILL_SPEAK_SILVAN 91 #define SKILL_SPEAK_KHUZDUL 92 #define SKILL_SPEAK_ORKISH 93 #define SKILL_SPEAK_BLACK_SPEECH 94 #define SKILL_SCRIPT_SARATI 95 #define SKILL_SCRIPT_TENGWAR 96 #define SKILL_SCRIPT_BELERIAND_TENGWAR 97 #define SKILL_SCRIPT_CERTHAS_DAERON 98 #define SKILL_SCRIPT_ANGERTHAS_DAERON 99 #define SKILL_SCRIPT_QUENYAN_TENGWAR 100 #define SKILL_SCRIPT_ANGERTHAS_MORIA 101 #define SKILL_SCRIPT_GONDORIAN_TENGWAR 102 #define SKILL_SCRIPT_ARNORIAN_TENGWAR 103 #define SKILL_SCRIPT_NUMENIAN_TENGWAR 104 #define SKILL_SCRIPT_NORTHERN_TENGWAR 105 #define SKILL_SCRIPT_ANGERTHAS_EREBOR 106 #define SKILL_BLACK_WISE 107 #define SKILL_GREY_WISE 108 #define SKILL_WHITE_WISE 109 #define SKILL_RUNECASTING 110 #define LAST_SKILL SKILL_RUNECASTING #define PSIONIC_TALENTS 8 #define skill_lev(val) val >= 70 ? " Master " : val >= 50 ? " Adroit " : val >= 30 ? "Familiar" : " Novice " /* How much light is in the land ? */ #define SUN_DARK 0 #define SUN_RISE 1 #define SUN_LIGHT 2 #define SUN_SET 3 #define MOON_RISE 4 #define MOON_SET 5 /* And how is the sky ? */ #define SKY_CLOUDLESS 0 #define SKY_CLOUDY 1 #define SKY_RAINING 2 #define SKY_LIGHTNING 3 #define SKY_STORMY 4 #define SKY_FOGGY 5 #define MAX_OBJ_SAVE 15 /* modes of connectedness */ #define CON_PLYNG 0 #define CON_LOGIN 1 #define CON_NEW_ACCT_NAME 2 #define CON_ACCT_EMAIL 3 #define CON_ENTER_ACCT_NME 4 #define CON_EMAIL_CONFIRM 5 #define CON_ACCOUNT_SETUP 6 #define CON_PENDING_DISC 7 #define CON_PWDCHK 8 #define CON_ACCOUNT_MENU 9 #define CON_WRITING_EMAIL 10 #define CON_CHG_EMAIL 11 #define CON_CHG_EMAIL_CNF 12 #define CON_CHOOSE_PC 13 #define CON_VIEW_PC 14 #define CON_READING_WAIT 15 #define CON_RACE_CONFIRM 16 #define CON_NAME_CONFIRM 17 #define CON_SEX 18 #define CON_RMOTD 19 #define CON_SLCT1 20 #define CON_PWDNEW 21 #define CON_PWDNCNF 22 #define CON_QSTATS 23 #define CON_RACE 24 #define CON_DECOY 25 #define CON_CREATION 26 #define CON_ATTRIBUTES 27 #define CON_NEW_MENU 28 /*depreciated*/ #define CON_DOCUMENTS 29 /*depreciated*/ #define CON_WAIT_MSG 30 #define CON_DOC_WAIT 31 #define CON_SKILLS 32 #define CON_PLAYER_NEW 33 #define CON_AGE 34 #define CON_HEIGHT_WEIGHT 35 #define CON_INTRO_MSG 36 #define CON_INTRO_WAIT 37 #define CON_COMMENT 38 #define CON_READ_REJECT 39 #define CON_WEB_CONNECTION 40 #define CON_RACE_SELECT 41 #define CON_DELETE_PC 42 #define CON_TERMINATE_CONFIRM 43 #define CON_PWDGET 44 #define CON_PWDCNF 45 #define CON_CREATE_GUEST 46 #define CON_GUEST_ARRIVE 47 #define CON_ROLE_SELECT 48 #define CON_ROLE_CONFIRM 49 #define CON_SPECIAL_ROLE_SELECT 50 #define CON_SPECIAL_ROLE_CONFIRM 51 #define CON_MAIL_MENU 52 #define CON_COMPOSE_SUBJECT 53 #define CON_COMPOSE_MAIL_TO 54 #define CON_COMPOSING_MESSAGE 55 #define CON_COMPOSE_MESSAGE 56 #define CON_READ_MESSAGE 57 #define CON_PRIV_CONFIRM 58 #define CON_LOCATION 59 #define CON_RETIRE 60 #define CON_ACCT_POLICIES 61 #define CON_PROFESSION 62 #define CON_REFERRAL 63 /* script program commands */ #define RP_ATECHO 0 #define RP_GIVE 1 #define RP_TAKE 2 #define RP_TRANS 3 #define RP_LOAD 4 #define RP_FORCE 5 #define RP_LINK 6 #define RP_EXIT 7 #define RP_UNLOCK 8 #define RP_ATLOOK 9 #define RP_VSTR 10 #define RP_OSTR 11 #define RP_UNLINK 12 #define RP_UNEXIT 13 #define RP_PUT 14 #define RP_GET 15 #define RP_LOCK 16 #define RP_GETCASH 17 #define RP_GIVECASH 18 #define RP_LOADMOB 19 #define RP_EXMOB 20 #define RP_IF 21 #define RP_FI 22 #define RP_ELSE 23 #define RP_RFTOG 24 #define RP_PAIN 25 #define RP_SPARE2 26 #define RP_SPARE3 27 #define RP_SPARE4 28 #define RP_SPARE5 29 #define RP_SPARE6 30 /* Delay types */ #define DEL_PICK 1 #define DEL_SEARCH 2 #define DEL_RITUAL 3 #define DEL_BACKSTAB 4 #define DEL_SPELL 5 #define DEL_WORSHIP 6 #define DEL_FORAGE_SEEK 7 #define DEL_JOIN_FAITH 8 #define DEL_APP_APPROVE 9 #define DEL_CAST 10 #define DEL_SKIN_1 4002 #define DEL_SKIN_2 4003 #define DEL_SKIN_3 4004 #define DEL_COUNT_COIN 12 #define DEL_IDENTIFY 13 #define DEL_GATHER 14 #define DEL_COMBINE 15 #define DEL_WHAP 16 #define DEL_GET_ALL 17 #define DEL_AWAKEN 18 #define DEL_EMPATHIC_HEAL 19 #define DEL_MENTAL_BOLT 20 #define DEL_ALERT 21 #define DEL_INVITE 22 #define DEL_CAMP1 23 #define DEL_CAMP2 24 #define DEL_CAMP3 25 #define DEL_CAMP4 26 #define DEL_TAKE 28 #define DEL_PUTCHAR 29 #define DEL_STARE 30 #define DEL_HIDE 31 #define DEL_SCAN 32 #define DEL_QUICK_SCAN 33 #define DEL_HIDE_OBJ 34 #define DEL_PICK_OBJ 35 #define DEL_COUNT_copper 36 #define DEL_RUMMAGE 37 #define DEL_QUAFF 38 #define DEL_BIND_WOUNDS 39 #define DEL_TREAT_WOUND 40 #define DEL_LOAD_WEAPON 41 #define DEL_OOC 42 #define DEL_WEAVESIGHT 43 #define DEL_TRACK 44 #define DEL_FORAGE 45 #define DEL_PITCH 46 #define DEL_PURCHASE_ITEM 47 #define DEL_WATER_REMOVE 48 /* Zone flags */ #define Z_FROZEN 1 #define Z_LOCKED 2 /* Projectile-related defines */ #define NUM_BODIES 1 #define MAX_HITLOC 5 struct body_info { char part [10]; int damage_mult; int damage_div; int percent; int wear_loc1; int wear_loc2; }; #define RESULT_CS 1 #define RESULT_MS 2 #define RESULT_MF 3 #define RESULT_CF 4 #define GLANCING_HIT 1 #define HIT 2 #define CRITICAL_HIT 3 #define MISS 4 #define CRITICAL_MISS 5 #define SHIELD_BLOCK 7 /* Profession defines */ #define PROF_NONE 0 #define PROF_ARMORSMITH 1 #define PROF_BEGGAR 2 #define PROF_BAKER 3 #define PROF_BREWER 4 #define PROF_CAVALIER 5 #define PROF_CHANDLER 6 #define PROF_CLOTHIER 7 #define PROF_COOK 8 #define PROF_CRIMINAL 9 #define PROF_FARMER 10 #define PROF_FLETCHER 11 #define PROF_GLASSBLOWER 12 #define PROF_HEAVY_INF 13 #define PROF_HERBALIST 14 #define PROF_HUNTER 15 #define PROF_INF 16 #define PROF_JEWELLER 17 #define PROF_LAW_ENF 18 #define PROF_LEATHERWORKER 19 #define PROF_MINER 20 #define PROF_PEDDLER 21 #define PROF_SCOUT 22 #define PROF_SCRIBE 23 #define PROF_SURVIVALIST 24 #define PROF_TIMBERWRIGHT 25 #define PROF_WEAPONSMITH 26 #define PROF_WOODWORKER 27 #define PROF_LAST PROF_WOODWORKER struct recipe_data { int obj_created; int ingredient [7]; int reuse [7]; struct recipe_data *next; }; struct forage_data { long virt; int sector; struct forage_data *next; }; struct extra_descr_data { char *keyword; char *description; struct extra_descr_data *next; }; struct writing_data { char *message; char *author; char *date; char *ink; int language; int script; bool torn; int skill; WRITING_DATA *next_page; }; struct written_descr_data /* for descriptions written in languages */ { byte language; char *description; }; struct obj_flag_data { byte type_flag; bitflag wear_flags; int extra_flags; int weight; int cost; long bitvector; }; struct armor_data { int armor_value; int armor_type; int v2; int v3; int v4; }; struct weapon_data { int handedness; int dice; int sides; int use_skill; int hit_type; int delay; int basedamage; int attackclass; int defenseclass; int range; }; struct light_data { int capacity; int hours; int liquid; int on; int v4; int v5; }; struct drink_con_data { int capacity; int volume; int liquid; int spell_1; int spell_2; int spell_3; }; struct fountain_data { int capacity; int volume; int liquid; int spell_1; int spell_2; int spell_3; }; struct container_data { int capacity; int flags; int key; int pick_penalty; int v4; int table_max_sitting; }; struct cloak_data { int v0; int v1; int v2; int v3; int v4; }; struct ticket_data { int ticket_num; int keeper_vnum; int stable_date; int v3; int v4; int v5; }; struct perfume_data { int type; int duration; int aroma_strength; int doses; int v4; int v5; }; struct food_data { int food_value; int spell1; int spell2; int spell3; int spell4; int bites; }; struct poison_obj_data { int poison1; int poison2; int poison3; int poison4; int poison5; int doses; }; struct fluid_data { int alcohol; int water; int food; int v3; int v4; int v5; }; struct lodged_object_info { char *location; int vnum; LODGED_OBJECT_INFO *next; }; struct lodged_missile_info { int vnum; LODGED_MISSILE_INFO *next; }; struct wound_data { char *location; char *type; char *name; char *severity; int damage; int bleeding; int poison; int infection; int healerskill; int lasthealed; int lastbled; WOUND_DATA *next; }; struct object_damage { char *type; char *name; char *severity; int damage; OBJECT_DAMAGE *next; }; struct default_obj_data { int value [6]; }; union obj_info { struct weapon_data weapon; struct drink_con_data drinkcon; struct container_data container; struct default_obj_data od; struct light_data light; struct armor_data armor; struct cloak_data cloak; struct ticket_data ticket; struct perfume_data perfume; struct poison_obj_data poison; struct food_data food; struct fluid_data fluid; struct fountain_data fountain; }; /* ======================== Structure for object ========================= */ struct obj_data { int deleted; int virtual; int zone; int in_room; struct obj_flag_data obj_flags; union obj_info o; AFFECTED_TYPE *xaffected; char *name; char *description; char *short_description; char *full_description; char *omote_str; XTRA_DESCR_DATA *ex_description; WRITTEN_DESCR_DATA *wdesc; CHAR_DATA *carried_by; CHAR_DATA *equiped_by; OBJ_DATA *in_obj; OBJ_DATA *contains; OBJ_DATA *next_content; OBJ_DATA *next; OBJ_DATA *hnext; OBJ_DATA *lnext; int clock; int morphTime; int morphto; int location; int contained_wt; int activation; /* Affect applied when picked up */ int quality; int econ_flags; /* Flag means used enhanced prices*/ int size; int count; /* How many this obj represents */ int obj_timer; float coppers; /* value in coppers */ float silver; /* Partial value in silver coins */ WOUND_DATA *wounds; /* For corpses */ int item_wear; /* Percentile; 100%, brand new */ WRITING_DATA *writing; char *ink_color; int open; OBJ_DATA *loaded; LODGED_OBJECT_INFO *lodged; char *desc_keys; char *var_color; char *book_title; int title_skill; int title_language; int title_script; int material; int tmp_flags; bool writing_loaded; int coldload_id; OBJECT_DAMAGE *damage; char *indoor_desc; int sold_at; int sold_by; TRIGGER_DATA *triggers; }; struct room_direction_data { char *general_description; char *keyword; int exit_info; int key; int pick_penalty; int to_room; }; struct prog_vars { char *name; int value; struct prog_vars *next; }; struct room_prog { char *command; /* List of commands to trigger this program */ char *keys; /* List of valid arguments, NULL always executes */ char *prog; /* The program itself */ struct prog_vars *vars; struct room_prog *next; /* next program for this room */ }; struct secret { int diff; /* difficulty (search skill abil) */ char *stext; }; #define MAX_DELIVERIES 200 #define MAX_TRADES_IN 200 struct negotiation_data { int ch_coldload_id; int obj_vnum; int time_when_forgotten; int price_delta; int transactions; int true_if_buying; struct negotiation_data *next; }; struct shop_data { float markup; /* Objects sold are multiplied by this */ float discount; /* Objects bought are muliplied by this */ int shop_vnum; /* Rvnum of shop */ int store_vnum; /* Rvnum of inventory */ char *no_such_item1; /* Message if keeper hasn't got an item */ char *no_such_item2; /* Message if player hasn't got an item */ char *missing_cash1; /* Message if keeper hasn't got cash */ char *missing_cash2; /* Message if player hasn't got cash */ char *do_not_buy; /* If keeper dosn't buy such things. */ char *message_buy; /* Message when player buys item */ char *message_sell; /* Message when player sells item */ int delivery [MAX_DELIVERIES]; /* Merchant replaces these */ int trades_in [MAX_TRADES_IN]; /* item_type that can buy */ int econ_flags1; /* Bits which enhance price */ int econ_flags2; int econ_flags3; int econ_flags4; int econ_flags5; int econ_flags6; int econ_flags7; float econ_markup1; /* Sell markup for flagged items */ float econ_markup2; float econ_markup3; float econ_markup4; float econ_markup5; float econ_markup6; float econ_markup7; float econ_discount1; /* Buy markup for flagged items */ float econ_discount2; float econ_discount3; float econ_discount4; float econ_discount5; float econ_discount6; float econ_discount7; int nobuy_flags; /* Any econ flags set here arn't traded */ NEGOTIATION_DATA *negotiations; /* Haggling information */ int opening_hour; int closing_hour; int exit; }; struct room_extra_data { char *alas [6]; char *weather_desc [WR_DESCRIPTIONS]; }; #define PC_TRACK ( 1 << 0 ) #define BLOODY_TRACK ( 1 << 1 ) #define FLEE_TRACK ( 1 << 2 ) struct track_data { shortint race; shortint from_dir; shortint to_dir; shortint hours_passed; shortint speed; bitflag flags; TRACK_DATA *next; }; struct room_data { int virtual; /* Make sure this is 1st element */ shortint zone; /* Make sure this is 2nd element */ shortint sector_type; shortint deity; /* Deity owner of the room */ shortint light; int search_sequence; char *name; char *description; XTRA_DESCR_DATA *ex_description; struct written_descr_data *wdesc; struct room_direction_data *dir_option[6]; struct secret *secrets[6]; int room_flags; OBJ_DATA *contents; CHAR_DATA *people; struct room_prog *prg; ROOM_DATA *hnext; /* next in hash list */ ROOM_DATA *lnext; /* Link next room in room_list */ AFFECTED_TYPE *affects; ROOM_EXTRA_DATA *extra; char *creator; char *description_dup; int earth; int wind; int fire; int water; int shadow; int psave_loaded; TRACK_DATA *tracks; int entrance; int occupants; TRIGGER_DATA *triggers; }; struct reset_time_data { int month; int day; int minute; int hour; int second; int flags; }; struct time_info_data { int second; int hour; int day; int month; int year; int season; int minute; int holiday; }; struct time_data { time_t birth; /* This represents the characters age */ time_t logon; /* Time of the last logon (used to calculate played) */ long played; /* This is the total accumulated time played in secs */ }; struct memory_data { char *name; struct memory_data *next; }; struct char_ability_data { int str; int intel; int wil; int dex; int con; int aur; int agi; }; struct newbie_hint { char *hint; NEWBIE_HINT *next; }; struct role_data { char *summary; char *body; char *poster; char *date; int cost; int timestamp; ROLE_DATA *next; }; struct known_spell_data { char *name; int rating; struct known_spell_data *next; }; struct affect_spell_type { int duration; /* For how long its effects will last */ int modifier; /* This is added to apropriate ability */ int location; /* Tells which ability to change(APPLY_XXX) */ int bitvector; /* Tells which bits to set (AFF_XXX) */ int t; /* Extra information */ int sn; /* Acquired by spell number */ int technique; int form; int magnitude; int discipline; int mana_cost; }; struct charm_data { char *name; int original_hours; int current_hours; int power_source; int caster_skill; CHARM_DATA *next; }; struct affect_job_type { int days; int pay_date; int cash; int count; int object_vnum; int employer; }; struct affect_table_type { int uu1; int uu2; int uu3; int uu4; OBJ_DATA *obj; int uu6; }; struct affect_smell_type { int duration; int aroma_strength; int uu3; int uu4; int uu5; int uu6; }; struct affect_paralyze { int duration; int minutes_until_paralyzed; int uu3; int uu4; int uu5; int sn; }; struct affect_shadow_type { CHAR_DATA *shadow; /* target begin shadowed */ int edge; /* -1, center. 0-5 edge by direction */ }; struct affect_hidden_type { int duration; int hidden_value; int coldload_id; int uu4; int uu5; int uu6; }; struct affect_toll_type { int duration; /* Generally forever. */ int dir; int room_num; /* for verification */ int charge; /* Cost for others to pass toll crossing */ int uu5; int uu6; }; struct affect_room_type { int duration; int uu2; int uu3; int uu4; int uu5; int uu6; }; struct affect_craft_type { int timer; int skill_check; PHASE_DATA *phase; SUBCRAFT_HEAD_DATA *subcraft; CHAR_DATA *target_ch; OBJ_DATA *target_obj; }; struct affect_listen_type { /* For muting and later, directed listening */ int duration; /* Always on if it exists */ int on; /* nonzero is on*/ }; struct affect_herbed_type { /* For counting the number of herbs found in rooms*/ int duration; int timesHerbed; }; /* Agent FX - let the suffering begin (soon) enum AGENT_FORM { AGENT_NONE=0, AGENT_FUME, AGENT_POWDER, AGENT_SOLID, AGENT_SALVE, AGENT_LIQUID, AGENT_SPRAY }; enum AGENT_METHOD { AGENT_NONE=0, AGENT_INJECTED, AGENT_INHALED, AGENT_INGESTED, AGENT_INWOUND, AGENT_TOUCHED }; ****************************************/ /* SOMATIC RESPONSES by Sighentist Basically the idea here, is that the magnitude of the effect is enveloped over time. So after a delay, the effect begins to grow in strength until it reaches a peak. After cresting the peak the strength weakens to a fraction of the peak strength. It remains fixed there until the effect begins to wear off completely. Notes: If latency == duration the affected is a carrier. */ struct affect_soma_type { /* SOMA EFFECTS TBA */ int duration; /* rl hours */ unsigned short int latency; /* rl hours of delay */ unsigned short int minute; /* timer */ unsigned short int max_power; /* type-dependant value */ unsigned short int lvl_power; /* fraction of max_power */ unsigned short int atm_power; /* the current power */ unsigned short int attack; /* minutes to amp to max_power */ unsigned short int decay; /* minutes to decay to lvl_power */ unsigned short int sustain; /* minutes to lvl_power drops */ unsigned short int release; /* minutes to end of effect */ }; union affected_union { struct affect_spell_type spell; struct affect_job_type job; struct affect_table_type table; struct affect_shadow_type shadow; struct affect_paralyze paralyze; struct affect_smell_type smell; struct affect_hidden_type hidden; struct affect_room_type room; struct affect_toll_type toll; struct affect_craft_type *craft; struct affect_listen_type listening; struct affect_herbed_type herbed; struct affect_soma_type soma; }; struct affected_type { int type; union affected_union a; AFFECTED_TYPE *next; }; #ifdef HAHA struct affected_type { int type; /* The type of spell that caused this */ int duration; /* For how long its effects will last */ int modifier; /* This is added to apropriate ability */ int location; /* Tells which ability to change(APPLY_XXX) */ int bitvector; /* Tells which bits to set (AFF_XXX) */ int t; /* Extra information */ int sn; /* Acquired by spell number */ AFFECTED_TYPE *next; }; #endif struct second_affect { int type; int seconds; CHAR_DATA *ch; OBJ_DATA *obj; char *info; int info2; SECOND_AFFECT *next; }; struct var_data { char *name; int value; int type; struct var_data *next; }; #define MPF_BROKEN (1 << 0) struct mobprog_data { char *trigger_name; char *prog; char *line; int busy; int flags; int mob_virtual; struct mobprog_data *next; struct mobprog_data *next_full_prog; }; struct dream_data { char *dream; DREAM_DATA *next; }; struct site_info { char *name; char *banned_by; int banned_on; int banned_until; SITE_INFO *next; }; struct stored_character { char *name; int level; int state; STORED_PC_DATA *next; }; #define ACCOUNT_NOPETITION ( 1 << 0 ) #define ACCOUNT_NOBAN ( 1 << 1 ) #define ACCOUNT_NOGUEST ( 1 << 2 ) #define ACCOUNT_NOPSI ( 1 << 3 ) #define ACCOUNT_NORETIRE ( 1 << 4 ) #define ACCOUNT_NOVOTE ( 1 << 5 ) #define ACCOUNT_IPSHARER ( 1 << 6 ) #define ACCOUNT_RPPDISPLAY ( 1 << 7 ) struct account_data { char *name; char *pwd; char *email; char *last_ip; STORED_PC_DATA *pc; int roleplay_points; int created_on; int pwd_attempt; int color; int web_login; bool admin; bool newsletter; int flags; int forum_posts; int timezone; int deleted; int code; int last_rpp; ACCOUNT_DATA *next; }; #define CHARGEN_INT_FIRST ( 1 << 0 ) #define CHARGEN_INT_SECOND ( 1 << 1 ) #define CHARGEN_DPASSAGE_1ST2ND ( 1 << 2 ) struct pc_data { DREAM_DATA *dreams; DREAM_DATA *dreamed; int create_state; /* Approval system */ int mortal_mode; /* Immortals can act mortal */ int edit_obj; int edit_mob; int level; int boat_virtual; int staff_notes; int mount_speed; CHAR_DATA *edit_player; CHAR_DATA *target_mob; /* Used by 'mob' and 'resets' */ char *msg; /* SUBMIT/APPROVAL system */ char *email_address; char *creation_comment; char *imm_enter; char *imm_leave; char *site_lie; /* Lie about connecting site */ int start_str; int start_dex; int start_con; int start_wil; int start_aur; int start_intel; int start_agi; int load_count; /* See load_pc */ int common; /* Msg seen of common knowledge */ int chargen_flags; int last_global_pc_msg; int last_global_staff_msg; int sleep_needed; int auto_toll; /* Amount willing to pay if following */ int doc_type; /* Not saved. Current doc */ int doc_index; /* Not saved. type relative index */ DESCRIPTOR_DATA *owner; shortint skills [MAX_SKILLS]; CHAR_DATA *dot_shorthand; /* '.' indicates last referenced n/pc */ ALIAS_DATA *aliases; ALIAS_DATA *execute_alias; time_t last_logon; time_t last_logoff; time_t last_disconnect; time_t last_connect; time_t last_died; char *account; OBJ_DATA *writing_on; SUBCRAFT_HEAD_DATA *edit_craft; int app_cost; bitflag nanny_state; bitflag role; ROLE_DATA *special_role; bool admin_loaded; int time_last_activity; int is_guide; int profession; int last_rpp; }; struct threat_data { CHAR_DATA *source; int level; THREAT_DATA *next; }; struct attacker_data { CHAR_DATA *attacker; ATTACKER_DATA *next; }; struct viewed_data { CHAR_DATA *target; VIEWED_DATA *next; }; struct mob_data { int virtual; int zone; int spawnpoint; int merch_seven; /* Merchant set up for 7 economic rules like Regi wanted - punt in time */ int skinned_vnum; /* What mob skins into */ int carcass_vnum; /* What mob leaves for a carcass*/ int vehicle_type; /* Mobile value: boat, etc */ int helm_room; /* If boat, defines helm */ int access_flags; /* Flags; mob room access */ int noaccess_flags; /* Flags; mob room noaccess */ int reset_zone; /* mobs only */ int reset_cmd; /* mobs only */ int damnodice; int damsizedice; int damroll; CHAR_DATA *hnext; CHAR_DATA *lnext; COMBAT_DATA *combat; RESET_DATA *resets; int currency_type; char *owner; }; /* ================== Structure for player/non-player ===================== */ struct char_data { int in_room; ROOM_DATA *room; int deleted; int circle; /* Rank within church */ int fight_mode; /* Frantic..defensive */ int debug_mode; int primary_delay; /* ticks to next hit */ int secondary_delay;/* ticks to next hit */ int coldload_id; /* Uniq id of mob */ int natural_delay; /* Added delay for natural */ int body_type; /* Determines hit locations */ int poison_type; /* Bite causes poison */ int nat_attack_type;/* Bite, claw, slime, etc */ int flags; /* FLAG_ stuff */ int move_points; /* Not saved; move remainder */ int hit_points; /* Not saved; hit remainder */ int nightmare; /* Nightmare sequence # */ int speaks; /* Currently spoken language */ int alarm; /* Not saved. */ int trigger_delay; /* Not saved. */ int trigger_line; /* Used with trigger_delay */ int trigger_id; /* Used with trigger_delay */ int psionic_talents; CHAR_DATA *subdue; /* Subduer or subduee */ MOBPROG_DATA *prog; struct var_data *vartab; /* Mob program variable table */ SHOP_DATA *shop; CHAR_DATA *vehicle; /* Char that is the vehicle */ int str; int intel; int wil; int dex; int con; int aur; int agi; int tmp_str; int tmp_intel; int tmp_wil; int tmp_dex; int tmp_con; int tmp_aur; int tmp_agi; shortint skills [MAX_SKILLS]; AFFECTED_TYPE *hour_affects; OBJ_DATA *equip; DESCRIPTOR_DATA *desc; CHAR_DATA *next_in_room; CHAR_DATA *next; CHAR_DATA *next_fighting; CHAR_DATA *following; PC_DATA *pc; MOB_DATA *mob; MOVE_DATA *moves; char *casting_arg; /* Contains delayed spell */ int hit; int max_hit; int move; int max_move; int armor; int offense; int ppoints; CHAR_DATA *fighting; int distance_to_target; struct memory_data *remembers; long affected_by; int position; int default_pos; bitflag act; bitflag hmflags; /* depreciated*/ int carry_weight; int carry_items; int delay_type; int delay; char *delay_who; char *delay_who2; CHAR_DATA *delay_ch; OBJ_DATA *delay_obj; int delay_info1; int delay_info2; int was_in_room; int intoxication; int hunger; int thirst; int last_room; int attack_type; char *name; char *tname; char *short_descr; char *long_descr; char *pmote_str; char *voice_str; char *description; int sex; int deity; int race; int color; int speed; int age; int height; int frame; int idol; struct time_data time; char *clans; CHAR_DATA *mount; /* Rider/Ridee */ CHAR_DATA *hitcher; CHAR_DATA *hitchee; char *combat_log; WOUND_DATA *wounds; int damage; int lastregen; int defensive; int cell_1, cell_2, cell_3; /* NPC jailer cell VNUMS */ int laststuncheck; int knockedout; int writes; int stun; int curse; CHAR_DATA *aiming_at; CHAR_DATA *targeted_by; int aim; LODGED_OBJECT_INFO *lodged; int mana; int max_mana; int harness; int max_harness; int preparing_id; int preparing_time; CHARM_DATA *charms; int roundtime; OBJ_DATA *right_hand; OBJ_DATA *left_hand; bitflag plr_flags; CHAR_DATA *ranged_enemy; char *enemy_direction; THREAT_DATA *threats; ATTACKER_DATA *attackers; int whirling; int from_dir; VIEWED_DATA *sighted; POISON_DATA *venom; int balance; char *travel_str; int spells [1] [2];/* depreciated*/ TRIGGER_DATA *triggers; }; /* ======================================================================== */ struct weather_data { int fog; int sunlight; int trend; int temperature; int state; int clouds; int lightning; int wind_dir; int wind_speed; }; /* *********************************************************** * The Following structures are related to descriptor_data * *********************************************************** */ struct txt_block { char *text; struct txt_block *next; }; struct txt_q { struct txt_block *head; struct txt_block *tail; }; struct snoop_data { struct char_data *snooping; struct char_data *snoop_by; }; typedef void CALL_PROC ( DESCRIPTOR_DATA *d); struct line_data { char *line [2000]; }; struct descriptor_data { int descriptor; /* file descriptor for socket */ char *host; /* hostname */ char *ip_addr; /* original IP, just in case */ int connected; /* mode of 'connectedness' */ int wait; /* wait for how many loops */ char *showstr_head; /* for paging through texts */ char *showstr_point; /* - */ char *header; char **str; /* for the modify-str system */ int edit_type; /* Type of document being edited */ int edit_index; /* Type relative index for edit */ char *edit_string; /* String being edited by edit command */ int edit_length; /* Length of piece being edited */ int edit_line_first; /* Starting line edited in document */ int max_str; /* - */ int prompt_mode; /* control of prompt-printing */ char buf[MAX_STRING_LENGTH]; /* buffer for raw input */ char last_input[MAX_INPUT_LENGTH];/* the last input */ struct txt_q output; /* q of strings to send */ struct txt_q input; /* q of unprocessed input */ ACCOUNT_DATA *account; /* login account */ CHAR_DATA *character; /* linked to char */ CHAR_DATA *original; /* original char */ struct snoop_data snoop; /* to snoop people. */ DESCRIPTOR_DATA *next; /* link to next descriptor */ CALL_PROC *proc; /* Procedure to call after input */ int parm; char *screen; /* data being edited */ LINE_DATA *lines; int col; int line; int tos_line; /* top of screen line 1 */ int max_lines; int max_columns; int edit_mode; struct timeval login_time; MESSAGE_DATA *pending_message; int time_last_activity; int idle; char *web_buf; char *inputstream; int bytes_in_stream; char *stored; /* miscellaneous storage */ int color; /* ANSI color */ int resolved; }; struct msg_type { char *attacker_msg; char *victim_msg; char *room_msg; }; struct message_type { struct msg_type die_msg; struct msg_type miss_msg; struct msg_type hit_msg; struct msg_type sanctuary_msg; struct msg_type god_msg; struct message_type *next; }; struct message_list { int a_type; int number_of_attacks; struct message_type *msg; }; struct dex_skill_type { int p_pocket; int p_locks; int traps; int sneak; int hide; }; struct str_app_type { int tohit; /* To Hit (THAC0) Bonus/Penalty */ int todam; /* Damage Bonus/Penalty */ int carry_w; /* Maximum weight that can be carrried */ int wield_w; /* Maximum weight that can be wielded */ }; struct constant_data { char constant_name [20]; char description [80]; void **index; }; #define args( list ) list #define STR_ONE_LINE 2001 #define STR_MULTI_LINE 2000 #define MAX_NATURAL_SKILLS 50 struct skill_data_list { char skill_name[30]; int skill_type; int rpp_cost; }; struct race_data { char name [30]; int attr_mods [7]; int height_short; int height_average; int height_tall; int female_height_diff; int race_speaks; int natural_skills [MAX_NATURAL_SKILLS]; }; struct religion_data { char *tree [30]; }; #define MAX_REGISTRY 50 typedef struct registry_data REGISTRY_DATA; struct registry_data { int value; char *string; REGISTRY_DATA *next; }; struct fight_data { char name [12]; float offense_modifier; float defense_modifier; int delay; }; struct language_data { char name [16]; }; struct lang_info { char lang [20]; int skill; }; struct poison_data { int poison_type; int duration_die_1; int duration_die_2; int effect_die_1; int effect_die_2; POISON_DATA *next; }; struct encumberance_info { int str_mult_wt; /* if wt <= str * str_mult, then element applies */ int defense_pct; int delay; int offense_pct; int move; float penalty; char *encumbered_status; }; #define NUM_BUCKETS 1024 #define CUMBERANCE_ENTRIES 6 /* The FLAG_ bits are saved with the player character */ #define FLAG_KEEPER ( 1 << 0 ) #define FLAG_COMPACT ( 1 << 1 ) /* Player in compact mode */ #define FLAG_BRIEF ( 1 << 2 ) /* Player in brief mode */ #define FLAG_WIZINVIS ( 1 << 3 ) #define FLAG_SUBDUEE ( 1 << 4 ) #define FLAG_SUBDUER ( 1 << 5 ) #define FLAG_SUBDUING ( 1 << 6 ) #define FLAG_ANON ( 1 << 7 ) #define FLAG_COMPETE ( 1 << 8 ) #define FLAG_LEADER_1 ( 1 << 9 ) /* Clan 1 leader */ #define FLAG_LEADER_2 ( 1 << 10 ) /* Clan 2 leader */ #define FLAG_DEAD ( 1 << 11 ) /* Player has been killed */ #define FLAG_KILL ( 1 << 12 ) /* Player intends to kill */ #define FLAG_FLEE ( 1 << 13 ) /* Player wants to flee combat */ #define FLAG_BINDING ( 1 << 14 ) /* NPC is curently tending wounds */ #define FLAG_SEE_NAME ( 1 << 15 ) /* Show mortal name in says */ #define FLAG_AUTOFLEE ( 1 << 16 ) /* Flee automatically in combat */ #define FLAG_ENTERING ( 1 << 17 ) #define FLAG_LEAVING ( 1 << 18 ) #define FLAG_INHIBITTED ( 1 << 19 ) /* Mob event blocking on program */ #define FLAG_NOPROMPT ( 1 << 20 ) /* Make prompt disappear */ #define FLAG_WILLSKIN ( 1 << 21 ) /* Everyone can skin corpse */ #define FLAG_ALIASING ( 1 << 22 ) /* Executing an alias */ #define FLAG_OSTLER ( 1 << 23 ) /* Stablemaster */ #define FLAG_TELEPATH ( 1 << 24 ) /* Hears PC thoughts */ #define FLAG_PACIFIST ( 1 << 25 ) /* Character won't fight back */ #define FLAG_WIZNET ( 1 << 26 ) /* Immortal wiznet toggle */ #define FLAG_HARNESS ( 1 << 27 ) /* Display harness in prompt */ #define FLAG_VARIABLE ( 1 << 28 ) /* Randomized mob prototype */ #define FLAG_ISADMIN ( 1 << 29 ) /* Is an admin's mortal PC */ #define FLAG_AVAILABLE ( 1 << 30 ) /* Available for petitions */ #define FLAG_GUEST ( 1 << 31 ) /* Guest login */ /* plr_flags */ #define NEWBIE_HINTS ( 1 << 0 ) /* Toggle the hint system on or off */ #define NEWBIE ( 1 << 1 ) /* Has not yet commenced */ #define MORALE_BROKEN ( 1 << 2 ) #define MORALE_HELD ( 1 << 3 ) #define FLAG_PETRIFIED ( 1 << 4 ) #define NEW_PLAYER_TAG ( 1 << 5 ) /* Displays (new player) in their ldescs */ #define MENTOR ( 1 << 6 ) /* PC Mentor flag */ #define NOPETITION ( 1 << 7 ) /* No Petition */ #define PRIVATE ( 1 << 8 ) /* Non-Guide-reviewable app */ #define START_ALPHA ( 1 << 9 ) /* Human chose to start in ALPHA room */ #define START_BETA ( 1 << 10 ) /* Human chose to start in BETA room*/ #define START_GAMMA ( 1 << 11 ) /* Human chose to start in GAMMA room */ #define NO_PLAYERPORT ( 1 << 12 ) /* Admins w/out admin access to 4500 */ #define MUTE_BEEPS ( 1 << 13 ) /* Doesn't receive NOTIFY beeps */ #define COMBAT_FILTER ( 1 << 14 ) /* Only receive local combat messages */ #define GROUP_CLOSED ( 1 << 15 ) /* Not accepting any other followers */ #define STATE_NAME ( 1 << 0 ) /* Enter name */ #define STATE_GENDER ( 1 << 1 ) /* Choose gender */ #define STATE_RACE ( 1 << 2 ) /* Choose race */ #define STATE_AGE ( 1 << 3 ) /* Input age */ #define STATE_ATTRIBUTES ( 1 << 4 ) /* Distribute attributes */ #define STATE_SDESC ( 1 << 5 ) /* Enter short desc */ #define STATE_LDESC ( 1 << 6 ) /* Enter long desc */ #define STATE_FDESC ( 1 << 7 ) /* Enter full desc */ #define STATE_KEYWORDS ( 1 << 8 ) /* Enter keywords */ #define STATE_FRAME ( 1 << 9 ) /* Choose frame */ #define STATE_SKILLS ( 1 << 10 ) /* Skill selection */ #define STATE_COMMENT ( 1 << 11 ) /* Creation comment */ #define STATE_ROLES ( 1 << 12 ) /* Hardcoded roles/advantages */ #define STATE_SPECIAL_ROLES ( 1 << 13 ) /* Admin-posted special roles */ #define STATE_PRIVACY ( 1 << 14 ) /* Flag app private? */ #define STATE_LOCATION ( 1 << 15 ) /* Humans choose start loc */ #define STATE_PROFESSION ( 1 << 16 ) /* Choosing profession */ /* Hardcoded starting roles/options */ #define XTRA_COIN ( 1 << 0 ) /* Starts with surplus coin; 1 point */ #define APPRENTICE ( 1 << 1 ) /* Starts as low-ranking member of established org; 1 point */ #define STARTING_ARMOR ( 1 << 2 ) /* Starts with a full set of leather armor; 2 points */ #define SKILL_BONUS ( 1 << 3 ) /* Small bonus to starting skills; 2 points */ #define XTRA_SKILL ( 1 << 4 ) /* Extra starting skill; 3 points */ #define MAXED_STAT ( 1 << 5 ) /* Starts with one guaranteed 18; 3 points */ #define JOURNEYMAN ( 1 << 6 ) /* As apprentice, but higher-level; 4 points */ #define FELLOW ( 1 << 7 ) /* Starts as a fully-fledged Fellow; 5 points */ #define LESSER_NOBILITY ( 1 << 8 ) /* Starts in a minor noble/merchant family; 6 points */ #define APPRENTICE_MAGE ( 1 << 9 ) /* Self-explanatory; 7 points */ #define COLNUM_NONE 0 #define COLNUM_RED 1 #define COLNUM_GREEN 2 #define COLNUM_YELLOW 3 #define COLNUM_BLUE 4 #define COLNUM_MAGENTA 5 #define COLNUM_CYAN 6 #define COLNUM_WHITE 7 #define COLNUM_OFF 8 #define COLNUM_BOLD_RED 9 #define COLNUM_BOLD_GREEN 10 #define COLNUM_BOLD_YELLOW 11 #define COLNUM_BOLD_BLUE 12 #define COLNUM_BOLD_MAGENTA 13 #define COLNUM_BOLD_CYAN 14 #define COLNUM_BOLD_WHITE 15 #define COL_NONE "\x1B[0m" #define COL_RED "\x1B[31m" #define COL_GREEN "\x1B[32m" #define COL_YELLOW "\x1B[33m" #define COL_BLUE "\x1B[34m" #define COL_MAGENTA "\x1B[35m" #define COL_CYAN "\x1B[36m" #define COL_WHITE "\x1B[37m" #define COL_OFF "\x1B[0m" #define COL_BOLD_RED "\x1B[1;31m" #define COL_BOLD_GREEN "\x1B[1;32m" #define COL_BOLD_YELLOW "\x1B[1;33m" #define COL_BOLD_BLUE "\x1B[1;34m" #define COL_BOLD_MAGENTA "\x1B[1;35m" #define COL_BOLD_CYAN "\x1B[1;36m" #define COL_BOLD_WHITE "\x1B[1;37m" #define ANSI_AUTO_DETECT "\x1B[6n" #define TRIG_DONT_USE 0 #define TRIG_SAY 1 #define TRIG_ENTER 2 #define TRIG_PASSAGE 3 #define TRIG_HIT 4 #define TRIG_MOBACT 5 #define TRIG_ALARM 6 #define TRIG_HOUR 7 #define TRIG_DAY 8 #define TRIG_TEACH 9 #define TRIG_WHISPER 10 #define TRIG_PRISONER 11 #define TRIG_KNOCK 12 #define PLAYER_PORT 4500 #define BUILDER_PORT 4501 #define TEST_PORT 4502 #define MP_TYPE_INTEGER 1 #define MP_TYPE_CHAR_DATA 2 #define MP_TYPE_OBJ_DATA 3 #define MP_TYPE_ROOM_DATA 4 #define MP_TYPE_STRING 5 #define MP_FUNCTION 6 #define MP_LESS_THAN 7 /* First valid binary operations */ #define MP_GREATER_THAN 8 #define MP_EQUAL 9 #define MP_GREATER_EQUAL 10 #define MP_LESSER_EQUAL 11 #define MP_NOT_EQUAL 12 #define MP_MOD 13 #define MP_DIV 14 #define MP_SUB 15 #define MP_PLUS 16 #define MP_AND 17 #define MP_OR 18 #define MP_MULT 19 /* Last valid binary operation (ranged) */ #define MP_OPEN_PAR 20 #define MP_CLOSE_PAR 21 #define MP_COMMA 22 #define MP_TYPE_FOLLOW_DATA 23 #define MT_OPEN_PAREN 1 #define MT_VARIABLE 2 #define MT_COMMA 3 #define MT_EQUAL 4 #define MUD_YEAR 12 * MUD_MONTH #define MUD_MONTH 30 * MUD_DAY #define MUD_DAY 24 * MUD_HOUR #define MUD_HOUR 60 * 60 #define MUD_MINUTE 60 #define MODE_COMMAND (1 << 0) #define MODE_DONE_EDITING (1 << 1) #define HOME "\033[H" #define CLEAR "\033[2J" #define DEAD 0 #define MORT 1 #define UNCON 2 #define STUN 3 #define SLEEP 4 #define REST 5 #define SIT 6 #define FIGHT 7 #define STAND 8 #define C_LV1 ( 1 << 0 ) /* Immortal level 1 */ #define C_LV2 ( 1 << 1 ) /* Immortal level 2 */ #define C_LV3 ( 1 << 2 ) /* Immortal level 3 */ #define C_LV4 ( 1 << 3 ) /* Immortal level 4 */ #define C_LV5 ( 1 << 4 ) /* Immortal level 5 */ #define C_DEL ( 1 << 5 ) /* Will not break a delay */ #define C_SUB ( 1 << 6 ) /* Commands legal while subdued */ #define C_HID ( 1 << 7 ) /* Commands that keep character hidden */ #define C_DOA ( 1 << 8 ) /* Commands allowed when dead */ #define C_BLD ( 1 << 9 ) /* Commands allowed when blind */ #define C_WLK ( 1 << 10 ) /* Commands NOT allowed while moving */ #define C_XLS ( 1 << 11 ) /* Don't list command */ #define C_MNT ( 1 << 12 ) /* Commands NOT allowed while mounted */ #define C_PAR ( 1 << 13 ) /* Things you CAN do paralyzed */ #define C_GDE ( 1 << 14 ) /* Guide-only command */ #define C_SPL ( 1 << 15 ) /* Commands legal while preparing spell */ #define C_NLG ( 1 << 16 ) /* Command is not logged */ #define C_NWT ( 1 << 17 ) /* Command doesn't show up in SNOOP or WATCH */ struct command_data { char *command; void (*proc) (CHAR_DATA *ch, char *argument, int cmd); int min_position; int flags; }; struct social_data { char *social_command; int hide; int min_victim_position; /* Position of victim */ /* No argument was supplied */ char *char_no_arg; char *others_no_arg; /* An argument was there, and a victim was found */ char *char_found; /* if NULL, read no further, ignore args */ char *others_found; char *vict_found; /* An argument was there, but no victim was found */ char *not_found; /* The victim turned out to be the character */ char *char_auto; char *others_auto; }; /* data files used by the game system */ #define DFLT_DIR "lib" /* default data directory */ #define NEWS_FILE "../lib/news" /* for the 'news' command */ #define QSTAT_FILE "text/chargen/stat_message" #define GREET_FILE "text/greetings" #define MAINTENANCE_FILE "text/greetings.maintenance" #define MENU1_FILE "text/menu1" #define ACCT_APP_FILE "text/account_application" #define ACCT_REF_FILE "text/account_referral" #define ACCT_EMAIL_FILE "text/account_email" #define ACCT_POLICIES_FILE "text/account_policies" #define THANK_YOU_FILE "text/thankyou" #define PDESC_FILE "text/chargen/new_desc" #define NAME_FILE "text/chargen/new_name" #define PKEYWORDS_FILE "text/chargen/new_keyword" #define PLDESC_FILE "text/chargen/new_ldesc" #define PSDESC_FILE "text/chargen/new_sdesc" #define RACE_SELECT "text/chargen/race_select" /* Race choice question */ #define AGE_SELECT "text/chargen/age_select" /* Age choice question */ #define SEX_SELECT "text/chargen/sex_select" /* Sex choice question */ #define ROLE_SELECT "text/chargen/role_select" /* Explanation of roles */ #define SPECIAL_ROLE_SELECT "text/chargen/special_role_select" /* Explanation of special roles */ #define HEIGHT_FRAME "text/chargen/height_frame" #define COMMENT_HELP "text/chargen/comment_help" #define LOCATION "text/chargen/location" #define SKILL_SELECT "text/chargen/skills_select" #define PROFESSION_SELECT "text/chargen/professions" #define COMMON "text/common" /* Common knowledge */ #define PLAYER_NEW "text/player_new" #define IDEA_FILE "../log/ideas" /* for the 'idea'-command */ #define TYPO_FILE "../log/typos" /* 'typo' */ #define BUG_FILE "../log/bugs" /* 'bug' */ #define MESS_FILE "text/messages" /* damage message */ #define SOCMESS_FILE "text/actions" /* messgs for social acts */ #define HELP_FILE "text/help_table" /* for HELP <keywrd> */ #define BHELP_FILE "text/bhelp_table" /* for BHELP <keywrd> */ #define HELP_PAGE_FILE "text/help" /* for HELP <CR> */ #define BHELP_PAGE_FILE "text/bhelp" /* for BHELP <CR> */ #define INFO_FILE "text/info" /* for INFO */ #define WIZLIST_FILE "text/wizlist" /* for WIZLIST */ #define RECIPE_FILE "text/alchemy" /* alchemy combination defs */ #define SAVE_DIR "save" #define HELP_DIR "../lib/help/" #define INFO_DIR "../lib/info/" #define REGIONS "../regions" #define REGISTRY_FILE REGIONS "/registry" #define CRAFTS_FILE REGIONS "/crafts" #define BOARD_DIR "boards" #define JOURNAL_DIR "player_journals" #define BOARD_ARCHIVE "archive" #define PLAYER_BOARD_DIR "player_boards" #define VIRTUAL_BOARD_DIR "vboards" #define TICKET_DIR "tickets" #define STATS_FILE "stats" #define COLDLOAD_IDS "coldload_ids" #define CLAN_REGISTRY REGIONS "/clan_registry" #define STAYPUT_FILE "stayput" #define ZONE_SIZE 1000 #define MAX_TRADE 5 #define MAX_PROD 5 /* structure for the reset commands */ struct reset_affect { char *craft_name; int type; int duration; int modifier; int location; int bitvector; int t; int sn; }; struct reset_com { char command; /* current command */ bool if_flag; /* if TRUE: exe only if preceding exe'd */ int arg1; /* (Can be ptr to reset_affect data) */ int arg2; /* Arguments to the command */ int arg3; /* */ int arg4; /* */ int arg5; /* */ int enabled; /* true if this reset should be used */ /* * Commands: * * 'M': Read a mobile * * 'O': Read an object * * 'G': Give obj to mob * * 'P': Put obj in obj * * 'G': Obj to char * * 'E': Obj to char equip * * 'D': Set state of door * * 'C': Craft (an affect) * * 'A': Affect * * 'R': Room # * * 'r': Room Affect * * 'm': Mob reset (timed, reply variety) */ }; /* zone definition structure. for the 'zone-table' */ struct zone_data { char *name; /* name of this zone */ char *lead; /* Name of the project lead */ int lifespan; /* how long between resets (minutes) */ int age; /* current age of this zone (minutes) */ int top; int frozen; unsigned long flags; int reset_mode; /* conditions for reset (see below) */ struct reset_com *cmd; /* command table for reset */ int jailer; int jail_room_num; ROOM_DATA *jail_room; int earth_mod; int wind_mod; int fire_mod; int water_mod; int shadow_mod; int player_in_zone; int weather_type; }; #define MAX_MSGS_PER_BOARD 5000 struct board_data { char *name; char *title; int level; int next_virtual; int msg_nums [MAX_MSGS_PER_BOARD]; char *msg_titles [MAX_MSGS_PER_BOARD]; BOARD_DATA *next; }; #define MF_READ ( 1 << 0 ) #define MF_ANON ( 1 << 1 ) #define MF_PRIVATE ( 1 << 2 ) #define MF_URGENT ( 1 << 3 ) #define MF_DREAM ( 1 << 4 ) #define MF_REPLIED ( 1 << 5 ) struct mudmail_data { long flags; char *from; char *from_account; char *date; char *subject; char *message; MUDMAIL_DATA *next_message; }; struct message_data { int virtual; long flags; char *poster; char *date; char *subject; char *info; char *message; char *icdate; }; #define TO_ROOM ( 1 << 0 ) #define TO_VICT ( 1 << 1 ) #define TO_NOTVICT ( 1 << 2 ) #define TO_CHAR ( 1 << 3 ) #define TO_ACT_FORMAT ( 1 << 4 ) #define TO_IMMS ( 1 << 5 ) #define TO_ACT_COMBAT ( 1 << 6 ) struct fatigue_data { int percent; float penalty; char name [25]; }; struct use_table_data { int delay; }; /* NOTE: If adding a new COMBAT_, update cs_name in fight.c */ #define SUC_CF 0 #define SUC_MF 1 #define SUC_MS 2 #define SUC_CS 3 /* NOTE: If adding a new RESULT_, update rs_name in fight.c */ #define RESULT_NONE 0 #define RESULT_ADV 1 #define RESULT_BLOCK 2 #define RESULT_PARRY 3 #define RESULT_FUMBLE 4 #define RESULT_HIT 5 #define RESULT_HIT1 6 #define RESULT_HIT2 7 #define RESULT_HIT3 8 #define RESULT_HIT4 9 #define RESULT_STUMBLE 10 #define RESULT_NEAR_FUMBLE 11 #define RESULT_NEAR_STUMBLE 12 #define RESULT_DEAD 13 #define RESULT_ANY 14 #define RESULT_WEAPON_BREAK 15 #define RESULT_SHIELD_BREAK 16 #define RESULT_KO 17 #define RESULT_JUST_KO 18 struct combat_msg_data { int off_result; int def_result; int table; char *def_msg; char *off_msg; char *other_msg; COMBAT_MSG_DATA *next; }; struct clan_data { char *name; int zone; char *literal; int member_vnum; int leader_vnum; int omni_vnum; CLAN_DATA *next; }; #define STATE_REJECTED -1 #define STATE_APPLYING 0 #define STATE_SUBMITTED 1 #define STATE_APPROVED 2 #define STATE_SUSPENDED 3 #define STATE_DIED 4 #define MAP_FLEE_BACKSTAB 0 struct map_free_backstab_dt { int origin; CHAR_DATA *attacker; int hid; int backstabed; }; struct combat_data { int prog; union { struct map_free_backstab_dt backstab; } c; }; struct move_data { int dir; int flags; int desired_time; MOVE_DATA *next; char *travel_str; }; struct qe_data { /* Quarter second events data structure */ CHAR_DATA *ch; int dir; int speed_type; int flags; ROOM_DATA *from_room; int event_time; int arrive_time; int move_cost; QE_DATA *next; char *travel_str; }; #define MF_WALK ( 1 << 0 ) #define MF_RUN ( 1 << 1 ) #define MF_SWIM ( 1 << 2 ) #define MF_PASSDOOR ( 1 << 3 ) #define MF_ARRIVAL ( 1 << 4 ) #define MF_TOEDGE ( 1 << 5 ) #define MF_TONEXT_EDGE ( 1 << 6 ) #define MF_SNEAK ( 1 << 7 ) struct common_data { char *message; COMMON_DATA *next; }; #define SPEED_WALK 0 #define SPEED_CRAWL 1 #define SPEED_PACED 2 #define SPEED_JOG 3 #define SPEED_RUN 4 #define SPEED_SPRINT 5 #define SPEED_IMMORTAL 6 #define SPEED_SWIM 7 #define FRAME_FEATHER 0 #define FRAME_SCANT 1 #define FRAME_LIGHT 2 #define FRAME_MEDIUM 3 #define FRAME_HEAVY 4 #define FRAME_MASSIVE 5 #define FRAME_SUPER_MASSIVE 6 #define SIZE_UNDEFINED 0 #define SIZE_XXS 1 /* Smaller than PC sized mobs */ #define SIZE_XS 2 #define SIZE_S 3 #define SIZE_M 4 #define SIZE_L 5 #define SIZE_XL 6 #define SIZE_XXL 7 /* Larger than PC sized mobs */ struct mob_race_data { char race_name [30]; int male_ht_dice; int male_ht_sides; int male_ht_constant; int male_fr_dice; int male_fr_sides; int male_fr_constant; int female_ht_dice; int female_ht_sides; int female_ht_constant; int female_fr_dice; int female_fr_sides; int female_fr_constant; int can_subdue; }; struct db_race_data { char name [30]; int attr_mods [7]; int race_age_limits [2]; int race_point_reqs; /* rpp needed to play this race */ int race_speaks; int natural_skills [MAX_NATURAL_SKILLS]; /* possible skills to start */ int male_ht_dice; int male_ht_sides; int male_ht_constant; int male_fr_dice; int male_fr_sides; int male_fr_constant; int female_ht_dice; int female_ht_sides; int female_ht_constant; int female_fr_dice; int female_fr_sides; int female_fr_constant; int can_subdue; char race_desc[MAX_STRING_LENGTH]; }; struct cbt { char bt [100]; }; struct ibt { int i [25]; }; #define CRIME_KILL 1 /* 5 hours, see criminalize() */ #define CRIME_STEAL 2 /* 3 hours */ #define CRIME_PICKLOCK 3 /* 1 hour */ #define CRIME_BACKSTAB 4 /* 5 hours */ #define CRIME_SUBDUE 5 /* 1 hour */ struct memory_t { int dtype; int entry; int bytes; int time_allocated; }; struct random_ch_data { int *id; int random_char_count; int in_room; CHAR_DATA **ch_arr; struct random_ch_data *next; }; #define PHASE_CANNOT_LEAVE_ROOM ( 1 << 0 ) #define PHASE_OPEN_ON_SELF ( 1 << 1 ) #define PHASE_REQUIRE_ON_SELF ( 1 << 2 ) #define PHASE_REQUIRE_GREATER ( 1 << 3 ) /* These flags apply to objects within a phase */ #define SUBCRAFT_IN_ROOM ( 1 << 0 ) #define SUBCRAFT_IN_INVENTORY ( 1 << 1 ) #define SUBCRAFT_HELD ( 1 << 2 ) #define SUBCRAFT_WIELDED ( 1 << 3 ) #define SUBCRAFT_USED ( 1 << 4 ) #define SUBCRAFT_PRODUCED ( 1 << 5 ) #define SUBCRAFT_WORN ( 1 << 6 ) /* Subcraft flags */ #define SCF_TARGET_OBJ ( 1 << 0 ) /* Target object */ #define SCF_TARGET_CHAR ( 1 << 1 ) /* Target character */ #define SCF_DEFENSIVE ( 1 << 2 ) /* Defensive - default */ #define SCF_OFFENSIVE ( 1 << 3 ) /* Offensive spell */ #define SCF_AREA ( 1 << 4 ) /* Area spell, all objs or chars */ #define SCF_ROOM ( 1 << 5 ) /* Target room */ #define SCF_TARGET_SELF ( 1 << 6 ) /* Target self */ #define SCF_CANNOT_LEAVE_ROOM ( 1 << 0 ) /* SCF = Subcraft flag */ #define MAX_ITEMS_PER_SUBCRAFT 150 struct subcraft_head_data { char *craft_name; char *subcraft_name; char *command; char *failure; /* Failure message for subcraft */ char *failobjs; /* String of failure object numbers */ char *help; char *clans; PHASE_DATA *phases; DEFAULT_ITEM_DATA *items [MAX_ITEMS_PER_SUBCRAFT]; int subcraft_flags; long crafts_start; long crafts_end; int sectors[MAX_SECTOR]; int seasons[MAX_SEASONS]; int opening[25]; int race[LAST_PC_RACE]; int failmob; /* VNUM of mob it loads up on failure */ int delay; SUBCRAFT_HEAD_DATA *next; }; struct phase_data { char *first; /* First person message */ char *second; /* Second person message */ char *third; /* Third person message */ char *self; /* If targets self, use this as first */ char *second_failure;/* Failure message to 2nd person */ char *third_failure; /* Failure message to 3rd persons */ char *failure; /* Failure message for phase */ int flags; /* PHase flags */ int phase_seconds; /* Time in seconds of phase */ int skill; /* Only used for skill checks */ int dice; /* dice v skill */ int sides; /* sides v skill (diceDsides v skill) */ int targets; /* Spell target flags */ int duration; /* Hours on spell */ int power; /* Power of spell. eg -3 to +3 str */ int hit_cost; /* Hit cost of phase */ int move_cost; /* Move cost of phase */ int spell_type; /* Spell number */ int open_skill; /* Skill to open (crafter or target) */ int req_skill; /* Required skill */ int req_skill_value;/* Value req_skill must be > or < */ int attribute; /* Used for attribute check (like skill) */ DEFAULT_ITEM_DATA *tool; /* Usable tools */ int load_mob; /* Mob VNUM */ PHASE_DATA *next; }; #define MAX_DEFAULT_ITEMS 20 struct default_item_data { int flags; /* See SUBCRAFT_ flags */ int items [MAX_DEFAULT_ITEMS];/* Up to 20 default items */ short item_counts; /* instances of items */ PHASE_DATA *phase; /* Phase mentioned */ char *color; }; struct alias_data { char *command; char *line; ALIAS_DATA *next_line; ALIAS_DATA *next_alias; }; #define RESET_TIMED 1 #define RESET_REPLY 2 struct reset_data { int type; char *command; int planned; /* Gets set a minute before reset activates */ RESET_TIME_DATA when; RESET_DATA *next; }; struct text_data { char *filename; char *name; char *text; TEXT_DATA *next; }; #define COMPOSE_TYPE_DOCUMENT 0 #define COMPOSE_TYPE_HELP 1 #define COMPOSE_TYPE_BHELP 2 #define COMPOSE_TYPE_CRAFT 3 #define COMPOSE_TYPE_TEXT 4 struct help_info { char *keyword; char *master_list; int required_level; char *info; HELP_INFO *master_element; HELP_INFO *next; }; struct help_data { char *keyword; char *keywords; char *help_info; /* Will be null if main_element used */ HELP_DATA *master_element; /* Contains actual help_info */ HELP_DATA *next; }; struct name_switch_data { char *old_name; char *new_name; NAME_SWITCH_DATA *next; }; #define SHOP_ZONES 13 struct econ_data { char flag_name [25]; struct { float markup; float discount; } obj_econ_info [SHOP_ZONES]; }; /** Used for AI programs for mobs, objects and rooms **/ struct prog_data { char *trigger; /* TIME, SAY, RND, KNOCK, NOD */ char *script; /* script with the prog */ int busy; /* are we in the middle of a prog? */ int delay; /* delay timer */ int vnum; /* virtual number of the obj/mob/room */ int type; /* 1-mob, 2-obj, 3-room */ struct prog_data *next; /* link to the next prog */ }; struct trigger_data { int type; /* type of this trigger */ int source; /* what is this trigger set on? */ char *script; /* name of the script this trigger calls */ char *func; /* name of the function this trigger calls */ int me; /* the mob/room/item this trigger is set on */ TRIGGER_DATA *list; /* pointer to the head of the list */ TRIGGER_DATA *next; /* link to next trigger on the list */ }; struct larg_data { void *data; int type; /* one of the TS_* (trigger source) constants */ struct larg_data *next; }; /* Time scripts are called every 10 second */ #define PULSE_TIME_TRIGGER (10 RL_SEC) /* Trigger types (used by trigger_data.type) */ #define TT_TIME 1 #define TT_ENTER 2 #define TT_LEAVE 3 #define TT_TELL 4 #define TT_ASK 5 #define TT_SAY 6 #define TT_GIVE 7 #define MAX_TRIGGER 1 /* Trigger type flags, used by the room/object/char that has triggers */ #define TTF_TIME (1 << TT_TIME) #define TTF_ENTER (1 << TT_ENTER) #define TTF_LEAVE (1 << TT_LEAVE) #define TTF_TELL (1 << TT_TELL) #define TTF_ASK (1 << TT_ASK) #define TTF_SAY (1 << TT_SAY) #define TTF_GIVE (1 << TT_GIVE) /* Trigger sources (used by trigger_data.source) */ #define TS_ROOM 0 #define TS_OBJECT 1 #define TS_MOBILE 2 #define TS_PLAYER 3 #define TS_CHAR 4 #define TS_TEXT 5 /* Location of scripts **/ #define SCRIPT_DIR "../regions/Lscripts"