/* ************************************************************************
* 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