/* ************************************************************************ * file: structs.h , Structures . Part of DIKUMUD * * Usage: Declarations of central data structures * ************************************************************************* */ #include <sys/types.h> typedef signed char sbyte; typedef unsigned char ubyte; typedef signed short int sh_int; typedef unsigned short int ush_int; typedef char bool; typedef char byte; #define PULSE_ZONE 240 #define PULSE_MOBILE 40 #define PULSE_VIOLENCE 12 #define WAIT_SEC 4 #define WAIT_ROUND 4 #define LV_IMMORTAL 21 #define LV_DEITY (LV_IMMORTAL+1) #define LV_DEMIGOD (LV_DEITY+1) #define LV_GOD (LV_DEMIGOD+1) #define LV_GREATER (LV_GOD+1) #define LV_IMPL (LV_GREATER+1) #define LV_ARCHITECT (LV_IMPL+1) #define MAX_STRING_LENGTH 4096 #define MAX_INPUT_LENGTH 160 #define MAX_MESSAGES 60 #define MAX_ITEMS 153 #define MAX_EXP 4000000 #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 SECS_PER_MUD_HOUR 75 #define SECS_PER_MUD_DAY (24*SECS_PER_MUD_HOUR) #define SECS_PER_MUD_MONTH (35*SECS_PER_MUD_DAY) #define SECS_PER_MUD_YEAR (17*SECS_PER_MUD_MONTH) /* The following defs are for obj_data */ /* 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_FIREWEAPON 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 #define ITEM_PEN 21 #define ITEM_BOAT 22 #define ITEM_BOOK 23 #define ITEM_BATTERY 24 #define ITEM_TELEPORT 25 /* To teleport to specific places */ /* I'll write the values here before I forget */ /* value[0]=dest VIRTUAL number */ /* value[1]=command to trigger teleport "rub ring" */ /* value[2]=charges left, -1 for infinite */ #define ITEM_TIMER 26 /* for "timer" objects (unimplemented)*/ #define ITEM_STONE 27 /* Bitvector For 'wear_flags' */ #define ITEM_TAKE 1 #define ITEM_WEAR_FINGER 2 #define ITEM_WEAR_NECK 4 #define ITEM_WEAR_BODY 8 #define ITEM_WEAR_HEAD 16 #define ITEM_WEAR_LEGS 32 #define ITEM_WEAR_FEET 64 #define ITEM_WEAR_HANDS 128 #define ITEM_WEAR_ARMS 256 #define ITEM_WEAR_SHIELD 512 #define ITEM_WEAR_ABOUT 1024 #define ITEM_WEAR_WAISTE 2048 #define ITEM_WEAR_WRIST 4096 #define ITEM_WIELD 8192 #define ITEM_HOLD 16384 #define ITEM_THROW 32768 /* UNUSED, CHECKS ONLY FOR ITEM_LIGHT #define ITEM_LIGHT_SOURCE 65536 */ /* Bitvector for 'extra_flags' */ #define ITEM_GLOW 1 #define ITEM_HUM 2 #define ITEM_DARK 4 #define ITEM_LOCK 8 #define ITEM_EVIL 16 #define ITEM_INVISIBLE 32 #define ITEM_MAGIC 64 #define ITEM_NODROP 128 #define ITEM_BLESS 256 #define ITEM_ANTI_GOOD 512 /* not usable by good people */ #define ITEM_ANTI_EVIL 1024 /* not usable by evil people */ #define ITEM_ANTI_NEUTRAL 2048 /* not usable by neutral people */ #define ITEM_SECRET 4096 /* Can only be found by search command */ #define ITEM_FLOAT 8192 /* Will it float in a liquid */ /* Some different kind of 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_LOCALSPC 8 #define LIQ_SLIME 9 #define LIQ_MILK 10 #define LIQ_TEA 11 #define LIQ_COFFE 12 #define LIQ_BLOOD 13 #define LIQ_SALTWATER 14 #define LIQ_COKE 15 /* for containers - value[1] */ #define CONT_CLOSEABLE 1 #define CONT_PICKPROOF 2 #define CONT_CLOSED 4 #define CONT_LOCKED 8 struct ban_t /* Struct to ban certain sites */ { char *name; /* Name of site */ struct ban_t *next; /* next in list */ }; struct extra_descr_data { char *keyword; /* Keyword in look/examine */ char *description; /* What to see */ struct extra_descr_data *next; /* Next in list */ }; #define MAX_OBJ_AFFECT 2 /* Used in OBJ_FILE_ELEM *DO*NOT*CHANGE* */ #define OBJ_NOTIMER -7000000 struct obj_flag_data { int value[4]; /* Values of the item (see list) */ byte type_flag; /* Type of item */ int wear_flags; /* Where you can wear it */ int extra_flags; /* If it hums,glows etc */ int weight; /* Weigt what else */ int cost; /* Value when sold (gp.) */ int cost_per_day; /* Cost to keep pr. real day */ int timer; /* Timer for object */ long bitvector; /* To set chars bits */ }; /* Used in OBJ_FILE_ELEM *DO*NOT*CHANGE* */ struct obj_affected_type { byte location; /* Which ability to change (APPLY_XXX) */ sbyte modifier; /* How much it changes by */ }; /* ======================== Structure for object ========================= */ struct obj_data { sh_int item_number; /* Where in data-base */ sh_int in_room; /* In what room -1 when conta/carr */ struct obj_flag_data obj_flags;/* Object information */ struct obj_affected_type affected[MAX_OBJ_AFFECT]; /* Which abilities in PC to change */ char *name; /* Title of object :get etc. */ char *description ; /* When in room */ char *short_description; /* when worn/carry/in cont. */ char *action_description; /* What to write when used */ struct extra_descr_data *ex_description; /* extra descriptions */ struct char_data *carried_by; /* Carried by :NULL in room/conta */ struct char_data *equipped_by; /* Who is equipping it? */ struct obj_data *in_obj; /* In what object NULL when none */ struct obj_data *contains; /* Contains objects */ struct obj_data *next_content; /* For 'contains' lists */ struct obj_data *next; /* For the object list */ }; /* ======================================================================= */ /* The following defs are for room_data */ #define NOWHERE -1 /* nil reference for room-database */ /* Bitvector For 'room_flags' */ /* signed short int for these */ #define DARK 1 /* Off really means just lit by Sun/Moon */ #define DEATH 2 #define NO_MOB 4 #define INDOORS 8 #define LAWFULL 16 #define NEUTRAL 32 #define CHAOTIC 64 #define NO_MAGIC 128 #define TUNNEL 256 #define PRIVATE 512 #define ARENA 1024 #define SAFE 2048 #define NO_PRECIP 4096 /* Only applies to outdoor rooms (canopies...) */ #define SINGLE_FILE 8192 /* Only for rooms with 1 or 2 exits */ #define JAIL 16384 /* Incarceration!!! - Can't quit out of room */ #define NO_TELEPORT 32768 /* Don't teleport in */ /* For 'dir_option' */ #define NORTH 0 #define EAST 1 #define SOUTH 2 #define WEST 3 #define UP 4 #define DOWN 5 #define EX_ISDOOR 1 #define EX_CLOSED 2 #define EX_LOCKED 4 #define EX_RSCLOSED 8 #define EX_RSLOCKED 16 #define EX_PICKPROOF 32 /* For 'Sector types' */ #define SECT_INSIDE 0 #define SECT_CITY 1 #define SECT_FIELD 2 #define SECT_FOREST 3 #define SECT_HILLS 4 #define SECT_MOUNTAIN 5 #define SECT_WATER_SWIM 6 #define SECT_WATER_NOSWIM 7 #define SECT_NO_GROUND 8 /* For Alignment of Room Mana Gain */ #define MANA_ALL_ALIGNS 0 #define MANA_GOOD 1 #define MANA_NEUTRAL 2 #define MANA_EVIL 3 struct room_direction_data { char *general_description; /* When look DIR. */ char *keyword; /* for open/close */ sh_int exit_info; /* Exit info */ sh_int key; /* Key's number (-1 for no key) */ sh_int to_room; /* Where direction leeds (NOWHERE) */ }; /* ========================= Structure for room ========================== */ struct room_data { sh_int number; /* Rooms number */ sh_int zone; /* Room zone (for resetting) */ int sector_type; /* sector type (move/hide) */ char *name; /* Rooms name 'You are ...' */ char *description; /* Shown when entered */ struct extra_descr_data *ex_description; /* for examine/look */ struct room_direction_data *dir_option[6]; /* Directions */ int room_flags; /* DEATH,DARK ... etc */ byte light; /* Number of lightsources in room */ byte chance_fall; /* % Chance of falling */ byte fall_flags; /* <not defined yet> */ byte minlvl,maxlvl; /* For restricting rooms to levels */ byte mana; /* Room mana gain */ byte mana_alignment; /* Alignment for room mana gain */ int (*funct)(); /* special procedure */ struct obj_data *contents; /* List of items in room */ struct char_data *people; /* List of NPC / PC in room */ }; /* ======================================================================== */ /* The following defs and structures are related to char_data */ /* For 'equipment' */ #define WEAR_LIGHT 0 #define WEAR_FINGER_R 1 #define WEAR_FINGER_L 2 #define WEAR_NECK_1 3 #define WEAR_NECK_2 4 #define WEAR_BODY 5 #define WEAR_HEAD 6 #define WEAR_LEGS 7 #define WEAR_FEET 8 #define WEAR_HANDS 9 #define WEAR_ARMS 10 #define WEAR_SHIELD 11 #define WEAR_ABOUT 12 #define WEAR_WAISTE 13 #define WEAR_WRIST_R 14 #define WEAR_WRIST_L 15 #define WIELD 16 #define HOLD 17 /* For 'char_payer_data' */ #define MAX_TOUNGE 3 /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */ #define MAX_SKILLS 53 /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */ #define MAX_WEAR 18 #define MAX_AFFECT 25 /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */ /* Predifined conditions */ #define DRUNK 0 #define FULL 1 #define THIRST 2 /* Bitvector for 'affected_by' */ #define AFF_BLIND 1 #define AFF_INVISIBLE 2 #define AFF_DETECT_EVIL 4 #define AFF_DETECT_INVISIBLE 8 #define AFF_DETECT_MAGIC 16 #define AFF_SENSE_LIFE 32 #define AFF_HOLD 64 #define AFF_SANCTUARY 128 #define AFF_GROUP 256 #define AFF_CURSE 1024 #define AFF_FLAMING 2048 #define AFF_POISON 4096 #define AFF_PROTECT_EVIL 8192 #define AFF_PARALYSIS 16384 #define AFF_MORDEN_SWORD 32768 #define AFF_FLAMING_SWORD 65536 #define AFF_SLEEP 131072 #define AFF_DODGE 262144 #define AFF_SNEAK 524288 #define AFF_HIDE 1048576 #define AFF_FEAR 2097152 #define AFF_CHARM 4194304 #define AFF_FOLLOW 8388608 #define AFF_WIMPY 16777216 #define AFF_INFRARED 33554432 #define AFF_LEVITATE 67108864 #define AFF_FLY 134217728 #define AFF_AWARE 268435456 /* modifiers to char's abilities */ #define APPLY_NONE 0 #define APPLY_STR 1 #define APPLY_DEX 2 #define APPLY_INT 3 #define APPLY_WIS 4 #define APPLY_CON 5 #define APPLY_SEX 6 #define APPLY_CLASS 7 #define APPLY_LEVEL 8 #define APPLY_AGE 9 #define APPLY_CHAR_WEIGHT 10 #define APPLY_CHAR_HEIGHT 11 #define APPLY_MANA 12 #define APPLY_HIT 13 #define APPLY_MOVE 14 #define APPLY_GOLD 15 #define APPLY_EXP 16 #define APPLY_AC 17 #define APPLY_ARMOR 17 #define APPLY_HITROLL 18 #define APPLY_DAMROLL 19 #define APPLY_SAVING_PARA 20 #define APPLY_SAVING_ROD 21 #define APPLY_SAVING_PETRI 22 #define APPLY_SAVING_BREATH 23 #define APPLY_SAVING_SPELL 24 /* 'class' for PC's */ #define CLASS_MAGIC_USER 1 #define CLASS_CLERIC 2 #define CLASS_THIEF 3 #define CLASS_WARRIOR 4 /* 'class' for NPC's */ #define CLASS_OTHER 0 /* These are not yet used! */ #define CLASS_UNDEAD 1 /* But may soon be so */ #define CLASS_HUMANOID 2 /* Idea is to use general */ #define CLASS_ANIMAL 3 /* monster classes */ #define CLASS_DRAGON 4 /* Then for example a weapon */ #define CLASS_GIANT 5 /* of dragon slaying is pos. */ #define CLASS_DEMON 6 #define CLASS_BIRD 7 #define CLASS_INSECT 8 /* sex */ #define SEX_NEUTRAL 0 #define SEX_MALE 1 #define SEX_FEMALE 2 /* positions */ #define POSITION_DEAD 0 #define POSITION_MORTALLYW 1 #define POSITION_INCAP 2 #define POSITION_STUNNED 3 #define POSITION_SLEEPING 4 #define POSITION_RESTING 5 #define POSITION_SITTING 6 /* Need to add POSITION_VEHICLE before standing*/ #define POSITION_FIGHTING 7 #define POSITION_STANDING 8 /*---SWIM should be before STAND */ #define POSITION_SWIMMING 9 /* Able to swim in SECT_SWIM rooms */ #define POSITION_LEVITATED 10 /* Just a bit above the ground */ #define POSITION_FLYING 11 /* Able to go upwards without support */ /* for mobile actions: specials.act */ #define ACT_SPEC 1 /* special routine to be called if exist */ #define ACT_SENTINEL 2 /* this mobile not to be moved */ #define ACT_SCAVENGER 4 /* pick up stuff lying around */ #define ACT_ISNPC 8 /* This bit is set for use with IS_NPC() */ #define ACT_NICE_THIEF 16 /* Set if a thief should NOT be killed */ #define ACT_AGGRESSIVE 32 /* Set if automatic attack on NPC's */ #define ACT_STAY_ZONE 64 /* MOB Must stay inside its own zone */ #define ACT_WIMPY 128 /* MOB Will flee when injured, and if */ /* aggressive only attack sleeping players */ /* * For ACT_AGGRESSIVE_XXX, you must also set ACT_AGGRESSIVE * These switches can be combined, if none are selected, then * the mobile will attack any alignment (same as if all 3 were set) */ #define ACT_AGGRESSIVE_EVIL 256 /* auto attack evil PC's only */ #define ACT_AGGRESSIVE_GOOD 512 /* auto attack good PC's only */ #define ACT_AGGRESSIVE_NEUTRAL 1024 /* auto attack neutral PC's only */ #define ACT_MEMORY 2048 /* remember your attackers */ /* only if you are struck first */ #define ACT_ISHUMANOID 4096 /* Is humanoid */ #define ACT_ISDRAGON 8192 /* Is dragon-like */ #define ACT_ISDEMON 16384 /* Is demon-like */ #define ACT_ISANIMAL 32768 /* Is animal-like */ #define ACT_ISINSECT 65536 /* Is insect-like */ #define ACT_CANFLY 131072 /* Can fly */ #define ACT_CANSWIM 262144 /* Can swim */ #define ACT_HAS_CL 524288 /* Has cleric's spells */ #define ACT_HAS_MU 1048576 /* Has Magic User's spells */ #define ACT_HAS_TH 2097152 /* Has Thief skills */ #define ACT_HAS_WA 4194304 /* Has Warrior skills */ #define ACT_SPEC_DIE 8388608 /* Overrides corpse-making, calls */ /* Spec_proc instead (only when */ /* ACT_SPEC is true) -Sman */ #define NPC_OUTLAW 16777216 /* For NPC Outlaws, Be careful */ /* Setting this is the mob file */ /* Different prefix, because */ /* There is a PLR version below */ #define ACT_BREAK_CHARM 33554432 /* Will break charm... */ /* For players : specials.act */ #define PLR_BRIEF 1 #define PLR_NOSHOUT 2 #define PLR_COMPACT 4 #define PLR_DONTSET 8 /* Dont EVER set */ #define PLR_NOTELL 16 #define PLR_ISTHIEF 32 /* Marks you as thief */ #define PLR_ISKILLER 64 /* Marks you as a PC Killer */ #define PLR_ISTRUSTED 128 /* May become an immortal */ #define PLR_ISMULTITH 256 /* Is a multi-classed char thief*/ #define PLR_ISMULTIWA 512 /* warrior */ #define PLR_ISMULTICL 1024 /* cleric */ #define PLR_ISMULTIMU 2048 /* magic user */ #define PLR_ISDWEEB 4096 /* total dork that doesn't need to play */ #define PLR_NOSUMMON 8192 /* Toggle allowing player to BE summoned or not */ #define PLR_TAG_FLAG 16384/* For the playing the game of tag - you're it! */ #define PLR_AUCTION 32768/* For the auction channel */ #define PLR_OUTLAW 65536/* For jailing pc's */ #define PLR_WIZMUFFED 131072 /* Won't hear wizmsgs */ #define PLR_MRTLNOSHOUT 262144 /* Mortal noshout */ #define PLR_MSG_ECHO 524288 /* For those who wish to hear what they say */ #define PLR_NOEMOTE 1048576 /* Ignore emotes */ typedef struct MEMtMemoryRec { char name[80]; /* This must be large enuf for player name. */ struct MEMtMemoryRec *next; } MEMtMemoryRec; /* This structure is purely intended to be an easy way to transfer */ /* and return information about time (real or mudwise). */ struct time_info_data { byte hours, day, month; sh_int year; }; /* These data contain information about a players time data */ struct time_data { time_t birth; /* This represents the characters age */ time_t logon; /* Time of the last logon (used to calculate played) */ int played; /* This is the total accumulated time played in secs */ }; struct char_player_data { char *name; /* PC / NPC s name (kill ... ) */ char *short_descr; /* for 'actions' */ char *long_descr; /* for 'look'.. Only here for testing */ char *description; /* Extra descriptions */ char *title; /* PC / NPC s title */ byte sex; /* PC / NPC s sex */ byte class; /* PC s class or NPC alignment */ byte level; /* PC / NPC s level */ int hometown; /* PC s Hometown (zone) */ bool talks[MAX_TOUNGE]; /* PC s Tounges 0 for NPC */ struct time_data time; /* PC s AGE in days */ ubyte weight; /* PC / NPC s weight */ ubyte height; /* PC / NPC s height */ }; /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */ struct char_ability_data { sbyte str; sbyte str_add; /* 000 - 100 if strength 18 */ sbyte intel; sbyte wis; sbyte dex; sbyte con; }; /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */ struct char_point_data { sh_int mana; sh_int max_mana; /* Not useable may be erased upon player file renewal */ sh_int hit; sh_int max_hit; /* Max hit for NPC */ sh_int move; sh_int max_move; /* Max move for NPC */ sh_int armor; /* Internal -100..100, external -10..10 AC */ int gold; /* Money carried */ int exp; /* The experience of the player */ sbyte hitroll; /* Any bonus or penalty to the hit roll */ sbyte damroll; /* Any bonus or penalty to the damage roll */ }; #define OVL_PULSE 18 /* Heartbeat counts for overload prevention */ #define OVL_NORMAL_LIMIT 5 /* Max intrusive acts during ovl period */ #define OVL_DWEEB_LIMIT 1 /* The limit applied to DWEEBS */ struct char_special_data { struct char_data *fighting; /* Opponent */ struct char_data *hunting; /* Hunting person.. */ unsigned long affected_by; /* Bitvector for spells/skills affected by */ byte position; /* Standing or ... */ byte default_pos; /* Default position for NPC */ unsigned long act; /* flags for NPC behavior */ byte spells_to_learn; /* How many can you learn yet this level */ int carry_weight; /* Carried weight */ byte carry_items; /* Number of items carried */ int timer; /* Timer for idle check(PC)/action delay(NPC)*/ sh_int was_in_room; /* storage of location for linkdead people */ sh_int apply_saving_throw[5]; /* Saving throw (Bonuses) */ sbyte conditions[3]; /* Drunk full etc. */ byte damnodice; /* The number of damage dice's */ byte damsizedice; /* The size of the damage dice's */ byte last_direction; /* The last direction the monster went */ int attack_type; /* The Attack Type Bitvector for NPC's */ int alignment; /* +-1000 for alignments */ bool dispHp; /* If TRUE, display Hit points in prompt */ bool dispMove; /* If TRUE, display Move points in prompt */ bool dispMana; /* If TRUE, display Mana points in prompt */ char *poofIn; /* Description on arrival of a god. */ char *poofOut; /* Description upon a god's exit. */ bool holyLite; /* Holy lite mode */ bool wizInvis; /* If on, people can't see you. */ MEMtMemoryRec *memory; /* List of attackers to remember... */ sh_int arena; /* The arena flag */ int arena_move; /* Stats to save when entering arena so */ int arena_mana; /* we can restore them upon leaving. */ int arena_hits; unsigned long arena_affvector; bool nokill; /* No attack of players unless this is false*/ int wimpyness; /* At what level of hit points to auto-flee */ int spec[4]; /* Some misc values for spec_proc mobs */ sh_int ovl_timer; /* For preventing (n)pc's from overloading */ sh_int ovl_count; /* the mud from saying, shouting, etc */ int warmth; /* So people can protect themselves from */ /* extreme heat and cold */ int jail_time; /* How long left to spend in jail */ struct char_data *arrest_by; /* Is this person on the way to jail?*/ struct char_data *arrest_link; /* for lists of arrested people */ /* char arrest_flags (resist arrest?) For future use */ struct char_data *witnessing; struct char_data *witness_vict; int witness_cmd; }; #define ARENA_NOTPLAYING 0 #define ARENA_BLUE_PLR 1 #define ARENA_BLUE_CAPT 2 #define ARENA_RED_PLR 3 #define ARENA_RED_CAPT 4 #define ARENA_WATCHER 5 /* Unimplemented at this time*/ /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */ struct char_skill_data { byte learned; /* % chance for success 0 = not learned */ }; /* Used in CHAR_FILE_U *DO*NOT*CHANGE* */ struct affected_type { sbyte type; /* The type of spell that caused this */ sh_int duration; /* For how long its effects will last */ sbyte modifier; /* This is added to apropriate ability */ byte location; /* Tells which ability to change(APPLY_XXX)*/ long bitvector; /* Tells which bits to set (AFF_XXX) */ struct aff * *********************************************************** */ struct txt_block { char *text; struct txt_block *next; }; struct txt_q { struct txt_block *head; struct txt_block *tail; }; /* modes of connectedness */ #define CON_PLYNG 0 #define CON_NME 1 #define CON_NMECNF 2 #define CON_PWDNRM 3 #define CON_PWDGET 4 #define CON_PWDCNF 5 #define CON_QSEX 6 #define CON_RMOTD 7 #define CON_SLCT 8 #define CON_EXDSCR 9 #define CON_QCLASS 10 #define CON_LDEAD 11 #define CON_PWDNEW 12 #define CON_PWDNEW2 13 #define CON_PWDNCNF 14 #define CON_CLOSE 15 #define CON_QHOMETOWN 16 struct snoop_data { struct descriptor_data *snooping; /* Who is this char snooping */ struct descriptor_data *snoop_by; /* And who is snooping on this char */ }; struct descriptor_data { int descriptor; /* file descriptor for socket */ char *name; /* Copy of the player name (pw bug) */ char host[50]; /* hostname */ char pwd[12]; /* password */ char pwdconf[12]; /* password for confirmation */ int pos; /* position in player-file */ int connected; /* mode of 'connectedness' */ int wait; /* wait for how many loops */ bool newline; /* newlines in input */ char *showstr_head; /* for paging through texts */ char *showstr_point; /* - */ char **str; /* for the modify-str system */ int max_str; /* - */ 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 */ struct char_data *character; /* linked to char */ struct char_data *original; /* original char */ struct snoop_data snoop; /* to snoop people. */ struct descriptor_data *next; /* link to next descriptor */ }; struct msg_type { char *attacker_msg; /* message to attacker */ char *victim_msg; /* message to victim */ char *room_msg; /* message to room */ }; struct message_type { struct msg_type die_msg; /* messages when death */ struct msg_type miss_msg; /* messages when miss */ struct msg_type hit_msg; /* messages when hit */ struct msg_type sanctuary_msg;/* messages when hit on sanctuary */ struct msg_type god_msg; /* messages when hit on god */ struct message_type *next;/* to next messages of this kind.*/ }; struct message_list { int a_type; /* Attack type */ int number_of_attacks; /* How many attack messages to chose from. */ struct message_type *msg; /* List of messages. */ }; struct dex_skill_type { sh_int p_pocket; sh_int p_locks; sh_int traps; sh_int sneak; sh_int hide; }; struct dex_app_type { sh_int reaction; sh_int miss_att; sh_int defensive; }; struct str_app_type { sh_int tohit; /* To Hit (THAC0) Bonus/Penalty */ sh_int todam; /* Damage Bonus/Penalty */ sh_int carry_w; /* Maximum weight that can be carrried */ sh_int wield_w; /* Maximum weight that can be wielded */ }; struct wis_app_type { byte bonus; /* how many bonus skills a player can */ /* practice pr. level */ }; struct int_app_type { byte learn; /* how many % a player learns a spell/skill */ }; struct con_app_type { sh_int hitp; sh_int shock; }; *NOT*CHANGE* */ struct affected_type { sbyte type; /* The type of spell that caused this */ sh_int duration; /* For how long its effects will last */ sbyte modifier; /* This is added to apropriate ability */ byte location; /* Tells which ability to change(APPLY_XXX)*/ long bitvector; /* Tells which bits to set (AFF_XXX) */ struct affftp_game.org 100644 0 0 2122 6377450051 11434 0 ustar root root ============================================================================= / ______ _______ ____ _____ ___ __ _ ______ ____ ____ _____ / \ | ____|__ __| _ \ / ____\ / _ \| \ / | ____| / __ \| _ \ / ____\ \ / | |__ | | | |_| | | | |_| | |\/| | |___ | | | | |_| | | / / | ___| | | | ___/| | __| _ | | | | ____| | | | | __/| | ___ \ \ | | | | | | | |___| | | | | | | | |____ | |__| | |\ \| |___| | / / |_| |_| |_| o \_____/|_| |_|_| |_|______|o \____/|_| \_|\_____/ \ \ / ============================================================================ ------------------------------------------------------------------------------ ftp://ftp.game.org/pub/mud FTP.GAME.ORG http://www.game.org/ftpsite/ ------------------------------------------------------------------------------ This archive came from FTP.GAME.ORG, the ultimate source for MUD resources. ------------------------------------------------------------------------------ ected_type *next; }; struct follow_type { struct char_data *follower; struct follow_type *next; }; /* ================== Structure for player/non-player ===================== */ struct char_data { sh_int nr; /* monster nr (pos in file) */ sh_int in_room; /* Location */ struct char_player_data player; /* Normal data */ struct char_ability_data abilities; /* Abilities */ struct char_ability_data tmpabilities;/* The abilities we will use */ struct char_point_data points; /* Points */ struct char_special_data specials; /* Special plaing constants */ struct char_skill_data skills[MAX_SKILLS]; /* Skills */ struct affected_type *affected; /* affected by what spells */ struct affected_type *tmp_affected; /* for arena usage */ struct obj_data *equipment[MAX_WEAR]; /* Equipment array */ struct obj_data *carrying; /* Head of list */ struct descriptor_data *desc; /* NULL for mobiles */ struct char_data *next_in_room; /* For room->people - list */ struct char_data *next; /* For either monster or ppl-list */ struct char_data *next_fighting; /* For fighting list */ struct follow_type *followers; /* List of chars followers */ struct char_data *master; /* Who is char following? */ }; /* ======================================================================== */ /* How much light is in the l