#ifndef WINDOWS #define false 0 #define true 1 typedef int socket_t; #else #include "winsock.h" #include "windows.h" typedef SOCKET socket_t; #define NOCRYPT #endif #define FALSE 0 #define TRUE 1 #define yes 1 #define no 0 #define YES 1 #define NO 0 typedef unsigned char bool; extern socket_t control; typedef struct scriptassoc SA; typedef struct social_type SOCIAL; typedef struct item_info ITEM_INFO; typedef struct fight_data FGT; typedef struct dammsg_data DAM_MSG; typedef struct power_data POWER; typedef struct shell_command SHELL; typedef struct channel_type CHANNEL; typedef struct society_data SOCIETY_DATA; typedef struct caste_data CASTE_DATA; typedef struct auct_data AUCTION; typedef struct cmd_type COMMAND; typedef struct to_free TO_FREE; typedef struct item_book I_BOOK; typedef struct item_armor I_ARMOR; typedef struct item_weapon I_WEAPON; typedef struct item_missile I_MISSILE; typedef struct item_drink_container I_DRINK; typedef struct item_light I_LIGHT; typedef struct item_tool I_TOOL; typedef struct item_raw I_RAW; typedef struct item_trap I_TRAP; typedef struct item_shield I_SHIELD; typedef struct item_vehicle I_VEHICLE; typedef struct item_fountain I_FOUNTAIN; typedef struct item_potion I_POTION; typedef struct item_food I_FOOD; typedef struct item_gem I_GEM; typedef struct item_wand I_WAND; typedef struct item_furniture I_FURNITURE; typedef struct item_container I_CONTAINER; typedef struct item_climbable I_CLIMBABLE; typedef struct item_siege I_SIEGE; typedef struct item_ammo I_AMMO; typedef struct affect_data AFFECT_DATA; typedef struct area_data AREA_DATA; typedef struct ban_data BAN_DATA; typedef struct voting_data VOTING_DATA; typedef struct spell_data SPELL_DATA; typedef struct gld_data GUILD_DATA; /* Guild data struct */ typedef struct dam_moves PERCENT_STRUCT; typedef struct damages_struct DAM_STRUCT; typedef struct mna_data MANA_DATA; typedef struct track_data TRACK_DATA; typedef struct char_data CHAR_DATA; typedef struct online ONLINE; /* JRAJRA - keep track of who has been online */ typedef struct potion_ingredients POTION_INFO; typedef struct rank_data RANK_DATA; typedef struct bid_data BID_DATA; typedef struct descriptor_data DESCRIPTOR_DATA; typedef struct exit_data EXIT_DATA; typedef struct door_data DOOR_DATA; typedef struct extra_descr_data DESCRIPTION_DATA; typedef struct playerbase_data PLAYERBASE_DATA; typedef struct variable_data VARIABLE_DATA; typedef struct item_check ITEM_CHECK; typedef struct help_data HELP_DATA; typedef struct mob_proto_data MOB_PROTOTYPE; typedef struct script_dat SCRIPT_DAT; typedef struct note_data NOTE_DATA; typedef struct obj_data SINGLE_OBJECT; typedef struct obj_proto_data OBJ_PROTOTYPE; typedef struct temp_str TEMP_STR; typedef struct pc_data REALCHAR_DATA; typedef struct npc_data MOB_DATA; typedef struct optional_data OPTIONAL_DATA; typedef struct spec_procs SPEC_PROC; typedef struct guard_datas GUARD_DATA; typedef struct room_data ROOM_DATA; typedef struct sector_data SECTOR_DATA; typedef struct room_extended ROOM_MORE; typedef struct reset_data RESET_DATA; typedef struct shop_data SHOP_DATA; typedef struct time_info_data TIME_INFO_DATA; typedef struct weather_data WEATHER_DATA; typedef struct clan_data CLAN_DATA; typedef struct bank_item BANK_ITEM; typedef void CHR_FUNCTION (CHAR_DATA *, CHAR_DATA *, char *argy); typedef void DO_COMMAND (CHAR_DATA *, char *); typedef bool SPEC_FUNCTION (CHAR_DATA * ch); /* ======================================================================== */ /* All game-related DEFINES */ /* ======================================================================== */ #define HASH_MAX 6138 /* Max list heads for rooms, objs, mobs */ #define STD_LENGTH 8192 /* Standard length string*/ #define SML_LENGTH 2048 /* Small length string*/ #define BATTLEGROUND_START_VNUM 600 /* Start bground room vnum */ #define BATTLEGROUND_END_VNUM 620 /* End bground room vnum */ #define INDOOR_FLY_HEIGHT 24 /* Things above this height cannot fly indoors - JRAJRA */ #define SKILL_COUNT 600 /* Must be 600 or higher */ #define NUM_ROLLS 4 /* VERY unlikely to be changed */ #define DESC_CRASHER 0x00000001 #define DESC_ROLLING 0x00000002 #define DESC_ROLLED_YET 0x00000004 #define DESC_TPCOMMAND 0x00000008 #define DESC_WRONG_PWD 0x00000010 #define DESC_INSERT 0x00000020 #define DESC_BAD_LETTER 0x00000040 /* This is how deep bfs tracking goes before it stops. */ #define BFS_DEPTH 1000 #define STR 0 /* Strength raw power */ #define INT 1 /* Intelligence how well you use attack magic/learn */ #define WIS 2 /* Knowledge of ancient things and healing arts */ #define DEX 3 /* Manual dexterity...manipulating small things */ #define CON 4 /* Overall health */ #define LCK 5 /* Luck, affects many things... */ #define WIL 6 /* Willpower, how well you dominate/resist magic */ #define CHA 7 /* Charisma...helps you deal with mobs better. */ #define NUM_STATS 8 /* 5 stats str int wis dex con now added luck, willpower, agility, endurance and charisma */ #define NUM_ALIGNMENTS 5 /* Coding for 4+newbie aligments atm*/ #define NUM_ALIGN 5 /* Cuz I forget what I call it sometimes */ #define MAX_GROUPSIZE 8 /* This is the base max groupsize. */ #define TOP_LEVEL 110 /* The maximum level. */ #define MAX_NUM_BG_PRIZES 10 /* Max num of bg prizes */ #define MAX_COLORS 8 /* Maximum player configurable colors */ #define RACE_COUNT 25 /* Max races is 25. Don't change! */ #define MAX_CLAN_STORAGE 30 /* How many items can a clan have in their clan storage? */ #define MAXST 15 /* How many items can person have in person storage? */ #define MAX_IGNORE 20 /* Max number of ignore slots a player has */ #define MAX_TROPHY 20 /* Max number of trophies that someone has */ #define MAX_SCRIPT_FLAGS 300 /* Max number of scriptflags a person can have */ #define MAP_WIDTH 13 /* Overhead mapping width */ #define MAP_HEIGHT 7 /* Overhead mapping height */ #define MAX_RANKING_DATA 15 /* Max number listed for ranking */ #define RANKING_INFO 10 /* Types of ranking info */ #define WGT_MULT 10 /* The number of pebbles per stone in weight ratios. */ #define SKILL 0 /* Spell slot == 0 is skill */ #define SPELL 1 /* Spell slot == 1 is spell */ #define PROF 2 /* Spell slot == 2 is prof */ #define PK_QUIT_TIMER 8 /* Number of hours before you can quit to pk */ #define MOB_QUIT_TIMER 1 /* Number of hours before you can quit after fighting a mob */ #define REMORT_ROOM 1200 /* All must type remort here */ #define WAR_TOKEN_VNUM 8 /* Obj vnum you must have to seize a city */ #define COLOR_CHAT 0 #define COLOR_CLANTALK 1 #define COLOR_IMMTALK 6 #define COLOR_YELL 2 #define COLOR_SAY 3 #define COLOR_TELL 4 #define COLOR_GODTALK 5 #define MAX_TRADE 5 /* Don't change this. */ #define MAX_CHAR_NAME_LENGTH 14 /* max name length for a player */ #define STOREDIV 14 /* item cost is divided by this to determine the cost it will be to store the item */ #define MAX_LEVEL 110 /* max possible level */ #define LEVEL_BUILDER 103 /* Builder level */ #define LEVEL_IMMORTAL 100 /* Minimum immortal level */ #define IMM_LEVEL 100 /* New Min immortal level */ /* ======================================================================== */ /* Do not change these... */ /* ======================================================================== */ #define PULSE_PER_SECOND 10 #define PULSE_VIOLENCE 15 #define PULSE_MOBILE (6 * PULSE_PER_SECOND) /* 6 */ #define PULSE_TICK (35 * PULSE_PER_SECOND) /* 35 */ #define PULSE_AREA (120 * PULSE_PER_SECOND) /* 120 */ /* ======================================================================== */ /* Time of day defines. Compatable with diku style muds. */ /* ======================================================================== */ #define SUN_DARK 0 #define SUN_RISE 1 #define SUN_MORNING 2 #define SUN_MIDDAY 3 #define SUN_AFTERNOON 4 #define SUN_EVENING 5 #define SUN_SET 6 /* ======================================================================== */ /* Weather system model from Theisles, although I cannot guarentee similar */ /* implimentation... */ /* ======================================================================== */ #define SKY_CLOUDLESS 0 #define SKY_CLOUDY 1 #define SKY_RAINING 2 #define SKY_LIGHTNING 3 #define SKY_FOGGY 4 /* ======================================================================== */ /* Fight option defines. Can be toggled on/off through the 'fight' command. */ /* ======================================================================== */ #define F_HEADBUTT 0x00000001 #define F_JUJI 0x00000002 #define F_ELBOW 0x00000004 #define F_KNEE 0x00000008 #define F_BITE 0x00000010 #define F_CHOKE 0x00000020 #define F_AGGRESSIVE 0x00010000 #define F_POWER 0x00020000 #define F_GROUND 0x00040000 /* ======================================================================== */ /* POSITIONS for ground_pos. Many unused. */ /* ======================================================================== */ #define FP_CHOKE_1 0x00000001 #define FP_CHOKE_2 0x00000002 #define FP_CHOKE_3 0x00000004 #define FP_STUNNED 0x00000008 #define FP_BLEEDING 0x00000010 #define FP_TOO_HEAVY 0x00000020 #define FP_PUNCHING 0x00000040 /* ======================================================================== */ /* These bits describe a spell's behavior, for use with the online spell */ /* creation/editing system. */ /* ======================================================================== */ /*+-------------------------------------------------+*/ /*| These are the spell_bits 2 for "special spells" |*/ /*+-------------------------------------------------+*/ #define SPELL_ASTRAL 0x00000001 #define SPELL_SUMMON 0x00000002 /* Summons a mob/character. mob summoning can be toggled on/off in power.dat */ #define SPELL_TELEPORT 0x00000004 /* Teleports the victim */ #define SPELL_CHARM_PERSON 0x00000008 /* Unused for now. */ #define SPELL_MESSAGE 0x00000010 /* Sends a message to another player */ #define SPELL_DISPEL_MAGIC 0x00000020 /* Dispels magic */ #define SPELL_IDENTIFY 0x00000040 /* Behaves as an identify spell */ #define SPELL_LOCATE_OBJECT 0x00000080 /* Behaves as locate object spell */ #define SPELL_SCRY 0x00000100 /* Behaves as scry spell - used to look into the room where someone else in the game is. */ #define SPELL_LOCATE_PERSON 0x00000200 /* Behaves as locate spell - used to see the room name where someone is in. */ #define SPELL_RECALL 0x00000400 /* The recall spell */ #define SPELL_OBJ_TO_ROOM 0x00001000 /* If the spell creates an object, it will go into the room instead of the character's */ #define SPELL_PORTAL 0x00002000 /* Creates a portal from caster to target. */ #define SPELL_MOB_TO_ROOM 0x00004000 /* Spell "creates" a mob */ #define SPELL_DETECT_ALIGN 0x00008000 /* Makes opp align show up on "who" list. */ #define SPELL_NECROMANCY 0x00010000 /* Resurrects a corpse to serve the caster */ /*+------------------------------------------------+*/ /*| These are the spell_bits 1 for "normal spells" |*/ /*+------------------------------------------------+*/ #define SPELL_ICE 0x00000001 /* Ice spell */ #define SPELL_SHOCK 0x00000002 /* Electric spell */ #define SPELL_WIND 0x00000004 /* Wind spell */ #define SPELL_SHARD 0x00000020 /* Shard breath */ #define SPELL_VAMPIRIC 0x00000040 /* Drains hps to caster */ #define SPELL_ACID 0x00000080 /* Eats equipment */ #define SPELL_FIRE 0x00000100 /* Burns equipment */ #define SPELL_ADD_MOVE 0x00000200 /* Heals Moves */ #define SPELL_REMOVES_BIT 0x00000400 /* Removes a bit (like poison) */ #define SPELL_TWO_SAVES 0x00000800 /* Victim gets 2 saves, so the possibility of resisting is greatly increased. */ #define SPELL_HALVED_SAVE 0x00001000 /* If victim "saves", dam is halved */ #define SPELL_HEALS_DAM 0x00002000 /* Heals Hps */ #define SPELL_MASS_DISTORTION 0x00004000 /* Mass distortion...half */ #define SPELL_LIGHT 0x00008000 /* Light spells */ #define SPELL_NOCAST 0x00010000 /* Can't be cast */ #define SPELL_MULTIMANA 0x00020000 /* Multiple mana used */ #define SPELL_AREA 0x00040000 /* Area Spell */ #define SPELL_RANGED 0x00080000 /* Inherantly Ranged */ /* ======================================================================== */ /* Connected states, similar to MERC's, used to define what state a */ /* connection is in. */ /* ======================================================================== */ #define CON_PLAYING 0 /* Playing the game */ #define CON_STATE_ONE 1 /* At login screen */ #define CON_GET_OLD_PASSWORD 2 /* Entering password */ #define CON_CONFIRM_NEW_NAME 3 /* New user, confirming new name */ #define CON_GET_NEW_PASSWORD 4 /* Asking for new password */ #define CON_CONFIRM_NEW_PASSWORD 5 /* Confirming new password */ #define CON_GET_NEW_SEX 6 /* Get sex of new user */ #define CON_GET_NEW_RACE 7 /* Get race of new user */ #define CON_CONFIRM_NEW_RACE 8 /* Confirm this race */ #define CON_READ_MOTD 10 /* Reading the message of the day */ #define CON_CONFIRM_ROLL 11 /* Confirming stat roll */ #define CON_GET_NEW_ANSI 12 /* Asking for ANSI */ #define CON_ASK_MENU 13 /* Login Menu. Unused. */ #define CON_SHOW_TITLE 14 /* Showing the title screen. */ #define CON_GET_PAGELEN 15 /* Asking page length */ #define CON_CHANNELD 16 /* Special for mudlink */ #define CON_RWHO 17 /* Executing remote who */ #define CON_AEDITOR -1 /* Area Editor */ #define CON_REDITOR -2 /* Room Editor */ #define CON_MEDITOR -3 /* Mob Editor */ #define CON_OEDITOR -4 /* Object Editor */ #define CON_CEDITOR -5 /* Clan Editor */ #define CON_FSEDITOR -7 /* Fullscreen Editor */ #define CON_PEDITOR -8 /* Player editor */ #define CON_SEDITOR -9 /* Spell Editor */ #define CON_GODMENU -10 /* God Menu */ #define CON_SOCEDIT -11 /* Social Editor */ #define CON_SCRIPTEDITOR -12 /* Script/trigger Editor */ #define CON_SOCIEDITOR -13 /* Society Editor */ #define CON_SHELL -14 /* Shell */ #define CON_HEDITOR -15 /* Help Editor */ /* ======================================================================== */ /* Used for ACT calls, similar to diku style 'act' */ /* ======================================================================== */ #define TO_ROOM 0 /* Display to the room, not to char */ #define TO_NOTVICT 1 /* Display to the room, not char or victim */ #define TO_VICT 2 /* Display to the victim */ #define TO_CHAR 3 /* Display to the character */ #define TO_ROOM_SPAM 4 /* Display TO_ROOM only if spam mode off */ #define TO_NOTVICT_SPAM 5 /* Display TO_NOTVICT only if spam mode off */ #define TO_VICT_SPAM 6 /* Display TO_VICT only if spam mode off */ #define TO_CHAR_SPAM 7 /* Display TO_CHAR only if spam mode off */ #define RC_GOODRACE 0x04000000 /* Mask for good race */ #define RC_EVILRACE 0x08000000 /* Mask for evil race */ #define RC_NEUTRALRACE 0x10000000 /* Unused. */ /* ======================================================================== */ /* Mob types. */ /* ======================================================================== */ #define MOB_HUMAN 0 #define MOB_ELF 1 #define MOB_DWARF 2 #define MOB_GNOME 3 #define MOB_GIANT 4 #define MOB_DRAGON 5 #define MOB_CANINE 6 #define MOB_RODENT 7 #define MOB_INSECT 8 #define MOB_UNDEAD 9 #define MOB_GOLEM 10 #define MOB_DEMON 11 #define MOB_TROLL 12 #define MOB_BIRD 13 #define MOB_FISH 14 #define MOB_STATUE 15 #define MOB_FELINE 16 #define MOB_PLANT 17 #define MOB_GENERAL_ANIMAL 18 #define MOB_FAERIE 19 #define MOB_REPTILE 20 #define MOB_GHOST 21 #define MOB_OTHER 22 #define MOB_OGRE 23 #define MOB_ELEMENTAL 24 #define MOB_ORC 25 #define MOB_DUMMY 27 #define MOB_ARACHNID 28 #define MOB_GNOLL 29 #define MOB_BUGBEAR 30 #define MOB_SKAVEN 31 #define MOB_TROGLODYTE 32 #define MOB_GOBLIN 33 #define MOB_ILLITHID 34 #define MOB_KENDER 35 #define MOB_MINOTAUR 36 #define MOB_SPRITE 37 #define MOB_DRACONIAN 38 #define MOB_HOBGOBLIN 39 #define MOB_HOBBIT 40 #define MOB_CENTAUR 41 #define MOB_MUTANT 42 #define MOB_NUKE 43 #define MAX_MOB_TYPE 45 /* ======================================================================== */ /* Hit types for weapons. Some unused. Tried to maintain compatability */ /* with diku type muds... */ /* ======================================================================== */ #define TYPE_UNDEFINED -1 #define TYPE_HIT 1000 /* Max 1000 dynamic spells */ #define TYPE_SLASH 1001 #define TYPE_PIERCE 1002 #define TYPE_WHIP 1003 #define TYPE_POLEARM 1004 #define TYPE_POUND 1005 #define TYPE_SUCTION 1006 #define TYPE_SHOT 1090 #define MAX_ATTACK 17 /* Unused! (?) max index+1 */ #define MAX_ATTACK_TYPES 8 /* ======================================================================== */ /* Maximum player defined aliases a person can set up */ /* ======================================================================== */ #define MAXALIAS 35 /* ======================================================================== */ /* Color defines and other ANSI codes. */ /* ======================================================================== */ #define BLACK "\x1b[1;30m" #define RED "\x1b[31m" #define GREEN "\x1b[32m" #define YELLOW "\x1b[33m" #define BLUE "\x1b[34m" #define PURPLE "\x1b[35m" #define CYAN "\x1b[36m" #define GREY "\x1b[37m" #define B_BLACK "\x1b[40m" #define B_RED "\x1b[41m" #define B_GREEN "\x1b[42m" #define B_YELLOW "\x1b[43m" #define B_BLUE "\x1b[44m" #define B_PURPLE "\x1b[45m" #define B_CYAN "\x1b[46m" #define B_GREY "\x1b[47m" #define CLRSCR "\x1b[2J" #define CLREOL "\x1b[K" #define DOWNARROW "\x1b[B" #define RIGHTARROW "\x1b[C" #define UPARROW "\x1b[A" #define LEFTARROW "\x1b[D" #define HOMEPOS "\x1b[H" #define BOLD "\x1b[1m" #define FLASH "\x1b[5m" #define INVERSE "\x1b[7m" #define NTEXT "\x1b[0;37m" #define TAB "\x9" /* ======================================================================== */ /* The color for items laying on the ground. */ /* ======================================================================== */ #define ITEMCOLOR "\x1b[0;36m" #define ACT_CRASHER 0x00000001 /* ======================================================================== */ /* Tried to keep things similar to Diku/Merc, for area conversion, but I */ /* don't think it's very possible.. sigh */ /* ======================================================================== */ #define ACT_STAY_AREA 0x00000001 #define ACT_SENTINEL 0x00000002 #define ACT_SCAVENGER 0x00000004 #define ACT_AGGRESSIVE 0x00000008 #define ACT_WIMPY 0x00000010 #define ACT_KILLSQUISHY 0x00000020 #define ACT_PET 0x00000040 #define ACT_UNTOUCHABLE 0x00000080 #define ACT_PRACTICE 0x00000100 #define ACT_UNVAL 0x00000200 #define ACT_FASTHUNT 0x00000400 #define ACT_HUNTED_NOTHERE 0x00000800 #define ACT_SCRAMBLE 0x00001000 #define ACT_MOUNTABLE 0x00002000 #define ACT_ANGRY 0x00008000 #define ACT_BANK_TELLER 0x00020000 #define ACT_STAYOFFROAD 0x00020000 #define ACT_DEALER 0x00040000 /* ======================================================================== */ /* On all flags from here on, there was no attempt to keep other codebase */ /* value flags. */ /* ======================================================================== */ #define REPAIRS_FREE 0x00080000 /* Repairs items for free */ #define REPAIRS_ONE 0x00100000 /* repairs 1/8 cost */ #define REPAIRS_TWO 0x00200000 /* ditto except 1/4 cost */ #define ACT_ATTITUDE 0x04000000 /* attacks if looked at */ #define ACT_AVENGED 0x08000000 /* Avengers come if killed */ #define ACT_REBOOT_ONLY 0x10000000 /* Dont repop after killed */ /* ======================================================================== */ /* The following is coins data for 5 types of coins */ /* ======================================================================== */ #define COPPER 0 #define SILVER 1 #define GOLD 2 #define PLATINUM 3 #define OBSIDIAN 4 #define MAX_COINS 5 /* ======================================================================== */ /* Mob acts. */ /* ======================================================================== */ #define ACT3_GUARD_DOOR 0x00000002 /* Set to guard a door */ #define ACT3_GUARD_DOOR_ALIGN 0x00000008 /* Guards door from 'good'*/ #define ACT3_WALL 0x00000010 /* This mob is a wall */ #define ACT3_MIMIC 0x00000020 /* This mob looks like an item */ #define ACT3_AREA_CASTER 0x00000100 /* Mob casts area spells sometimes */ #define ACT3_THIEF 0x00000200 /* Mob steals and backstabs */ #define ACT3_MUTE 0x00010000 /* Can't yell */ #define ACT3_RIDE 0x00020000 /* Rides prev mob reset */ #define ACT3_FOLLOW 0x00040000 /* Will follow " " " " */ #define ACT3_REGENERATE 0x00080000 /* Regenerates fast rate */ #define ACT3_SLEEP 0x00400000 /* Sleeps sometimes*/ #define ACT3_DISABLED 0x01000000 /* Mapping disabled */ #define ACT3_STAYROAD 0x02000000 /* Stays on road */ #define ACT4_ENTERSCRIPT 0x00000001 /* Mob has an assoc enter script */ #define ACT4_LEAVESCRIPT 0x00000002 /* Mob has an assoc leave script */ #define ACT4_COMMANDSCRIPT 0x00000004 /* Mob has command script on it. */ #define ACT4_QUICKTICK 0x00000008 /* Mob has a script every quicktick */ #define ACT4_MOVESCRIPT 0x00000010 /* Mob has a script when it moves. */ /*+--------------------------------------------------------+*/ /*| These are the flags to check if the mob attacks anyone |*/ /*+--------------------------------------------------------+*/ #define ACT4_KILL_OPP 0x00004000 /* spams */ #define ACT4_KILL_SAME 0x00008000 /* spams KILL EVIL */ #define ACT4_KILL_CLAN 0x00010000 /* Kills members asshole clans */ #define ACT4_PROTECTOR 0x00020000 /* Casts spells at "enemy" */ #define ACT4_KILLALLONE 0x00040000 /* Kills everything flag one */ #define ACT4_KILLALLTWO 0x00080000 /* Kills everything flag two */ #define ACT4_KILLMOPP 0x00100000 /* Kills mobs of diff align */ #define ACT4_KILLMGOOD 0x00200000 /* Kills good mobs */ #define ACT4_SUMMONER 0x00400000 /* Summons help while in combat */ #define ACT4_KILLGLADIATOR 0x00800000 /* kills 'gladiator' */ #define ACT4_SLEEPAGGRO 0x01000000 /* aggro towards sleeping players */ #define ACT4_ASSISTONE 0x02000000 /* assists mobs with name AONE */ #define ACT4_ASSISTTWO 0x04000000 /* assists mobs with name ATWO */ #define ACT4_REST 0x08000000 /* mob rests when no PC's in room */ #define ACT4_RANGER 0x10000000 /* attacks "beast" */ #define ACT4_ASSISTALL 0x20000000 /* Will assist all fighting mobs in room */ #define ACT4_RESCUEONE 0x40000000 /* rescue mobs with name PRTCT */ #define ACT4_RESCUETWO 0x40000000 /* rescue mobs with name CODEONE */ /* ======================================================================== */ /* Aff flags are COMPLETELY different. Here is the idea. The first aff[0] */ /* gives the affects on a char (sometimes bad or good, the elemental stuff */ /* at the end of aff[0] is the shields like from Eye of the storm twinkmuds */ /* and the second aff[1] tells what the char is resistant to. It allows for */ /* what I feel is cleaner code. aff[2] are beneficial affects aff[3] are */ /* detects for things in aff[2] if necessary. */ /* ======================================================================== */ /*+--------------------------------+*/ /*| These are to ref things better |*/ /*+--------------------------------+*/ #define HURT 0 #define PROT 1 #define AFF 2 #define DET 3 #define REMOVE 4 /* Mob list 1 less than player list, Player list must be 1 less than total_list */ #define MOB_LIST 80 #define PLAYER_LIST 81 #define TOTAL_LIST 82 /* Split up object list like this... */ #define OBJ_TIMED 0 #define OBJ_UNTIMED 1 /* These are the flags for societies */ #define SOCIETY_EXPLORER 0x00000001 #define SOCIETY_AGGRESSIVE 0x00000002 #define SOCIETY_WARLIKE 0x00000004 #define SOCIETY_SPAWNING 0x00000008 #define SOCIETY_DESTRUCTIBLE 0x00000010 #define SOCIETY_XENOPHOBIC 0x00000020 #define SOCIETY_BUILDERS 0x00000040 #define SOCIETY_EXPANDING 0x00000080 #define CASTE_WARRIOR 0x00000001 #define CASTE_GATHERER 0x00000002 #define CASTE_LEADER 0x00000004 #define CASTE_BUILDER 0x00000008 #define CASTE_MERCHANT 0x00000010 #define CASTE_EXPLORER 0x00000020 /* These are for special combat things mobs do. */ #define TACTICS_BACKSTAB 0x00000001 #define TACTICS_CIRCLE 0x00000002 #define TACTICS_KICK 0x00000004 #define TACTICS_BASH 0x00000008 #define TACTICS_TACKLE 0x00000010 #define TACTICS_FLURRY 0x00000020 #define TACTICS_FLAIL 0x00000040 #define TACTICS_BASHCAST 0x00000080 #define TACTICS_DISARM 0x00000100 #define TACTICS_HEAL 0x00000200 /*+----------------------------------------------------------------------+*/ /*| These are used only in HURT and PROT. Makes it easier to add affects |*/ /*| to a person based on their resistances and things. |*/ /*+----------------------------------------------------------------------+*/ #define BLIND 0x00000001 /* Cannot see */ #define POISON 0x00000002 /* Poison - harder to regen */ #define PLAGUE 0x00000004 /* Bad sickness spreads */ #define CURSE 0x00000008 /* Cannot recall */ #define CONFUSE 0x00000010 /* Sometimes commands do random things */ #define OUTLINE 0x00000020 /* Easier to hit */ #define WOUND 0x00000040 /* Loses hps fast. same as leaves blood */ #define LETHARGY 0x00000080 /* Loses moves fast when moving. */ #define MINDSAP 0x00000100 /* Loses mana fast. */ #define PARALYZE 0x00000200 /* Cannot do anything. */ #define CHARM 0x00000400 /* Follows order from its master. */ #define FEAR 0x00000800 /* Harder time attacking - less dam etc */ #define SLOW 0x00001000 /* Fewer attacks, slower casting */ #define FUMBLE 0x00002000 /* More likely to drop stuff. */ #define BEACON 0x00004000 /* You are on where. prot = prot_locate */ #define MUTE 0x00008000 /* You cannot talk or cast */ #define DEAF 0x00010000 /* You cannot hear... */ #define NUMB 0x00020000 /* Hard to pick up and hold things... */ #define SLEEP 0x00040000 /* Character is forced to sleep. */ #define VAMPIRIC 0x00080000 /* No heal, drains hps attacking */ #define LIGHT 0x00100000 /* Creature is hurt by light. */ #define BURNING 0x00200000 /* You're on fire, makes you lose hp. */ /*+------------------------------------------------------------------------+*/ /*| These things are used under PROT And AFF And HURT under HURT they are |*/ /*| painful, under PROT they protect, and under AFF they are shields like |*/ /*| from Eye of the Storm twinkmuds. |*/ /*+------------------------------------------------------------------------+*/ #define GAS 0x00800000 /* Corrosive gas causes poison too */ #define FIRE 0x01000000 /* Fireshield/resist */ #define WIND 0x02000000 /* Air..causes spells to fail */ #define ACID 0x04000000 /* Causes Eq to be broken */ #define CHAOS 0x08000000 /* Chaos changes hps and stuff */ #define SHARDS 0x10000000 /* Shards of rocks spinning around */ #define SHOCK 0x20000000 /* Shockshield */ #define ICE 0x40000000 /* Iceshield/resist */ #define ETHEREAL 0x80000000 /* Ethereal, non_magical weapons pass through*/ /*+-------------------------------------------+*/ /*| These are used in DET and AFF for can_see |*/ /*+-------------------------------------------+*/ #define INVIS 0x00000001 /* Invis */ #define HIDE 0x00000002 /* Hidden */ #define CHAMELEON 0x00000004 /* Chameleoned (super hide) */ #define VANISH 0x00000008 /* Rarer invis */ #define FOGGY 0x00000010 /* Pass through doors, hard to see */ #define DARK 0x00000020 /* Needs infrared to see */ #define COLD 0x00000040 /* In dark, need more than infra to see. */ #define SNEAK 0x00000080 /* Makes no noise entering room */ /*+-----------------------------------------------+*/ /*| These are used in AFF regular affects |*/ /*| Don't go above 0x0040000 due to shields here. |*/ /*+-----------------------------------------------+*/ #define MAGIC 0x00000100 /* Is this person or thing magical? */ #define SANCTUARY 0x00000200 /* Some Dam prot */ #define FLYING 0x00000400 /* Flying or not */ #define REGENERATE 0x00000800 /* Fast hps regen */ #define MINDSHIELD 0x00001000 /* protects from spells */ #define WATER_BREATH 0x00002000 /* Breath underwater */ #define PROT_ALIGN 0x00004000 /* Absorb some dam from other aligns */ #define SPEED 0x00008000 /* More combat attacks */ #define SAFE 0x00010000 /* Safe from attacks */ #define REFLECT 0x00020000 /* Sends spells back at caster */ #define PROTECT 0x00040000 /* Massive reduction in combat damage */ /* ======================================================================== */ /* Sexflags - specifically follow Diku standard */ /* ======================================================================== */ #define SEX_NEUTRAL 0 #define SEX_MALE 1 #define SEX_FEMALE 2 /* ======================================================================== */ /* These loosely follow theisles std and mortal conquest std */ /* ======================================================================== */ #define OBJ_VNUM_CORPSE_NPC 10 /* vnum of generic mob corpse */ #define OBJ_VNUM_CORPSE_PC 11 /* vnum of generic player corpse */ #define OBJ_VNUM_SEVERED_HEAD 12 /* vnum of severed head */ #define OBJ_VNUM_TORN_HEART 13 /* torn heart */ #define OBJ_VNUM_SLICED_ARM 14 /* sliced arm */ #define OBJ_VNUM_SLICED_LEG 15 /* sliced leg */ #define OBJ_VNUM_INTESTINES 16 /* intestines */ #define OBJ_VNUM_BLOOD 40 /* Blood trails */ #define ROOM_VNUM_ARENA 504 /* Arena room number */ #define VNUM_WAITONE 508 /* Waiting room 1 for arena */ #define VNUM_WAITTWO 509 /* Waiting room 2 for arena */ #define ARENA_WAIT_TICK 2 /* Ticks in waiting room before the arena battle begins */ #define SEARCH_INV_FIRST 1 /* Search inventory first, for use with find_item_here. */ #define SEARCH_ROOM_FIRST 2 /* Search room first. */ /* ======================================================================== */ /* Full compatibility with Theisles, but possible additions. I can't */ /* guarentee all flags do exactly the same things. Ranged weapons are */ /* completely disabled, as I lifted the ranged weapon code from an old */ /* version of mortal conquest, and feel bad about using it. I'll code */ /* my own in due time. */ /* ======================================================================== */ #define ITEM_ARMOR 1 #define ITEM_WEAPON 2 #define ITEM_RAW 3 #define ITEM_FOOD 4 #define ITEM_CONTAINER 5 #define ITEM_DRINK_CON 6 #define ITEM_GEM 7 #define ITEM_LIGHT 8 #define ITEM_TOOL 9 #define ITEM_AMMO 10 #define ITEM_TREASURE 11 #define ITEM_POTION 12 #define ITEM_BOOK 13 #define ITEM_FURNITURE 14 #define ITEM_TRASH 15 #define ITEM_KEY 16 #define ITEM_SCROLL 17 #define ITEM_WAND 18 #define ITEM_VEHICLE 19 #define ITEM_CORPSE_NPC 20 #define ITEM_CORPSE_PC 21 #define ITEM_FOUNTAIN 22 #define ITEM_PILL 23 #define ITEM_STAFF 24 #define ITEM_CLIMBABLE 25 #define ITEM_SCALABLE 26 #define ITEM_SCALE_DEV 27 #define ITEM_MAP 28 #define ITEM_TRAP 29 #define ITEM_SHIELD 30 #define ITEM_MISSILE 31 #define ITEM_SIEGE 32 #define ITEM_NUKE 33 #define ITEM_MAX 34 /*+---------------------------------------------+*/ /*| Different types of raw materials this is v0 |*/ /*+---------------------------------------------+*/ #define RAW_MINERAL 1 #define RAW_HERB 2 #define RAW_WOOD 3 #define RAW_FIBER 4 #define RAW_CLOTH 5 #define RAW_HIDE 6 #define RAW_SHARD 7 /*+-------------------------------------+*/ /*| Pseudo oop - identifies a structure |*/ /*+-------------------------------------+*/ #define K_OBJECT 1 /* structure is an object */ #define K_OBJ 1 /* structure is an object */ #define K_CHAR 2 /* structure is a character */ #define K_ROOM 3 /* structure is a room */ #define K_PC 4 /* structure is a player structure */ #define K_ONLINE 5 /* structure is an online spot */ /*+---------------------------------------+*/ /*| These values follow Theisles standard |*/ /*+---------------------------------------+*/ #define CONT_CLOSEABLE 0x01 /* Can container be opened/closed? */ #define CONT_PICKPROOF 0x02 /* Is the container pickproof? */ #define CONT_CLOSED 0x04 /* Does the container default to closed? */ #define CONT_LOCKED 0x08 /* Is the container locked? */ #define CONT_INDESTRUCTABLE 0x10 /* This item cannot be destroyed by fire */ #define CONT_WHEELED 0x20 /* This item can be pulled */ #define CONT_MORTAR 0x40 /* This item is a mortar for brewing */ #define LIGHT_LIT 0x01 /* Is the light lit? */ #define LIGHT_FILLABLE 0x02 /* Is the light refillable? */ #define TOOL_TINDERBOX 0x01 /* Is this a tinderbox? */ #define TOOL_LOCKPICK 0x02 /* Is this a lockpick? */ #define TOOL_FLASH_POWDER 0x04 /* Is this flash powder? */ #define TOOL_FORGING 0x08 /* This is a forging hammer */ #define TOOL_PICKAXE 0x10 /* This is pickaxe for mining*/ #define TOOL_NEEDLE 0x20 /* This is a needle */ #define TOOL_PESTLE 0x40 /* This is a pestle for brewing */ /* ======================================================================== */ /* For portals. Value 4 to retain compatibility with mortal conquest code */ /* ======================================================================== */ #define FURN_EXIT 4 #define FURN_FORGE 8 /* This is a forge. */ #define FURN_ANVIL 16 /* This is an anvil */ #define FURN_LOOM 32 /* This is a loom for weaving */ #define FURN_PLAYABLE 64 /* This is a playable furniture */ /* ======================================================================== */ /* I tried to keep compatibility with merc/theisles. */ /* ======================================================================== */ #define ITEM_GLOW 0x00000001 /* Can hit ghosts if on a weapon */ #define ITEM_HUM 0x00000002 /* Can hit ghosts if on a weapon */ #define ITEM_COMMANDSCRIPT 0x00000004 /* Item has command script on it */ #define ITEM_DROPSCRIPT 0x00000008 /* Item has a script when dropped */ #define ITEM_EVIL 0x00000010 /* Registers with detect evil */ #define ITEM_INVIS 0x00000020 /* Item is invisible */ #define ITEM_MAGIC 0x00000040 /* Item registers with detect magic */ #define ITEM_NODROP 0x00000080 /* Can't drop this item */ #define ITEM_GIVESCRIPT 0x00000100 /* Item has a script when given */ #define ITEM_VAMPIRIC 0x00000400 /* Item drains hps to attacker */ #define ITEM_NOREMOVE 0x00001000 /* Can't unequip this item */ #define ITEM_INVENTORY 0x00002000 /* For shop use, internal */ #define ITEM_NOSAVE 0x00004000 /* Item doesn't save when you quit */ #define ITEM_POWER 0x00008000 /* Item of power.. Eats up sanct */ #define ITEM_UNSEEN 0x00010000 /* Hidden. - cannot search */ #define ITEM_PIERCE 0x00020000 /* Gives a bonus for piercing skill */ #define ITEM_SLASHING 0x00040000 /* slashing */ #define ITEM_CONCUSSION 0x00080000 /* pounding/concussion */ #define ITEM_WHIP 0x00100000 /* whipping */ #define ITEM_HEAVY_SLASH 0x00200000 /* VERY HEAVY - hitroll */ #define ITEM_LIGHT_SLASH 0x00400000 /* Gives a large slashing bonus */ #define ITEM_GOOD 0x00800000 /* Registers with detect good */ #define ITEM_SAVE 0x01000000 /* Item stays on death. */ #define ITEM_NOSTORE 0x02000000 /* Cannot store this item */ #define ITEM_POLEARM 0x04000000 /* Polearm */ #define ITEM_ELEMENTAL 0x08000000 /* Item causes elemental effects */ #define ITEM_WOUND 0x10000000 /* Wounding item */ #define ITEM_BLIND 0x20000000 /* Blinding item */ #define ITEM_POISON 0x40000000 /* Poison item */ #define ITEM_TAKE 0x00000001 #define ITEM_FLOATING 0x00000002 #define ITEM_WEAR_HEAD 0x00000004 #define ITEM_WEAR_EYES 0x00000008 #define ITEM_WEAR_EARS 0x00000010 #define ITEM_WEAR_FACE 0x00000020 #define ITEM_WEAR_NECK 0x00000040 #define ITEM_WEAR_ARMS 0x00000080 #define ITEM_WEAR_ELBOW 0x00000100 #define ITEM_WEAR_SHIELD 0x00000200 #define ITEM_WEAR_WRIST 0x00000400 #define ITEM_WEAR_HANDS 0x00000800 #define ITEM_WEAR_FINGER 0x00001000 #define ITEM_WIELD 0x00002000 #define ITEM_WEAR_SHOULDER 0x00004000 #define ITEM_WEAR_BODY 0x00008000 #define ITEM_WEAR_ABOUT 0x00010000 #define ITEM_WEAR_BACK 0x00020000 #define ITEM_WEAR_WAIST 0x00040000 #define ITEM_WEAR_BELT 0x00080000 #define ITEM_WEAR_KNEE 0x00100000 #define ITEM_WEAR_LEGS 0x00200000 #define ITEM_WEAR_ANKLE 0x00400000 #define ITEM_WEAR_FEET 0x00800000 #define MAX_WEAR 24 /* ======================================================================== */ /* Theisles/merc compatible, although many are unused */ /* ======================================================================== */ #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_LCK 6 #define APPLY_WIL 7 #define APPLY_AGI 8 #define APPLY_END 9 #define APPLY_CHA 10 /* 11 */ #define APPLY_MANA 12 #define APPLY_HIT 13 #define APPLY_MOVE 14 /* 15 16 */ #define APPLY_AC 17 /* Positive is good */ #define APPLY_HITROLL 18 /* Positive is good */ #define APPLY_DAMROLL 19 /* Positive is good */ #define APPLY_SAVING_THROW 20 /* Positive is good */ /* 21 */ #define APPLY_KICK_DAMAGE 22 #define APPLY_SNEAK 23 #define APPLY_HIDE 24 #define APPLY_WARMTH 25 #define APPLY_RANDOM_STAT 26 #define MAX_APPLY 27 /* ======================================================================== */ /* Once again, the room flags keep semi-compatibility, although manny are */ /* unused, and some are very different */ /* ======================================================================== */ #define R_MARK 0x00000001 /* Room is dark */ #define ROOM_NO_MOB 0x00000002 /* No mobs will wander in. */ #define ROOM_INDOORS 0x00000004 /* Room is indoors */ #define ROOM_LOWMAGIC 0x00000008 /* Room suppresses magic */ #define ROOM_HIGHMAGIC 0x00000010 /* Extra magic power here...*/ #define ROOM_UNDERGROUND 0x00000020 /* This room is underground */ #define ROOM_PET_SHOP 0x00000040 /* Is a pet shop */ #define ROOM_NOHEAR 0x00000080 /* cannot hear from here */ #define ROOM_NOISY 0x00000100 /* Noisy; yells don't go as far */ #define ROOM_DARK 0x00000200 /* Mark a room */ #define ROOM_NOSUMMON 0x00000400 /* Can't summon TO/FROM this room */ #define ROOM_UNTRACKABLE 0x00000800 /* Can't track through this room */ #define ROOM_NOMAGIC 0x00001000 /* No spells allowed here */ #define ROOM_SILENCE 0x00002000 /* Nobody can talk from here */ #define ROOM_NO_RECALL 0x00004000 /* Can't recall from here */ #define ROOM_CLANSTORE 0x00008000 /* This is a clan storage room */ #define ROOM_SHADED 0x00010000 /* Is room shaded or not? */ #define ROOM_LIT 0x00020000 /* Is room ALWAYS lit? */ #define ROOM_MINERALS 0x00040000 /* Room has minerals */ #define ROOM_COMMANDSCRIPT 0x08000000 /* Room has command script. */ #define ROOM_ENTERSCRIPT 0x10000000 /* Room has an enter script. */ #define ROOM_LEAVESCRIPT 0x20000000 /* Room has a leave script. */ #define ROOM_DROPSCRIPT 0x40000000 /* Room has a dropped item script */ #define ROOM_GETSCRIPT 0x01000000 /* Room has a get item script */ /* ======================================================================== */ /* These are for the transport update routine...to split them off from */ /* The rest of the types of things which are not checked each second or 2. */ /* ======================================================================== */ #define ROOM2_FALLSFAST 0x00000001 /* Person falls down if they are in*/ #define ROOM2_EXTRAHEAL 0x00000002 /* Slight healing bonus in this room2 */ #define ROOM2_EXTRAMANA 0x00000004 /* Slight mana bonus in this room2.. buggy */ #define ROOM2_MOVING 0x00000008 /* Room2 has a 'current' */ #define ROOM2_MANADRAIN 0x00000010 /* Drains all mana */ #define ROOM2_POISONTRAP 0x00000040 /* Poison arrows shoot characters */ #define ROOM2_ARROWTRAP 0x00000080 /* Arrows shoot characters */ #define ROOM2_ROCKTRAP 0x00000100 /* Rocks fall on characters */ #define ROOM2_SPIKETRAP 0x00000200 /* Spikes stab characters */ #define ROOM2_GASTRAPONE 0x00000400 /* Unused, not working */ #define ROOM2_GASTRAPTWO 0x00000800 /* Noxious gas poisons characters */ #define ROOM2_GEYSERTRAP 0x00001000 /* Gyser scalds */ #define ROOM2_AVALANCHE 0x00002000 /* Avalanche... goes off once (buggy) */ #define ROOM2_ACIDSPRAY 0x00004000 /* Sprays player with acid */ #define ROOM2_FIRETRAP 0x00008000 /* Fire burns characters */ /* ======================================================================== */ /* Direction compatibility with all diku-based muds */ /* ======================================================================== */ #define DIR_NORTH 0 #define DIR_EAST 1 #define DIR_SOUTH 2 #define DIR_WEST 3 #define DIR_UP 4 #define DIR_DOWN 5 #define MAX_DIR 6 /* ======================================================================== */ /* Mortal Conquest compatible exit flags */ /* ======================================================================== */ #define EX_ISDOOR 0x00000001 /* This IS a door */ #define EX_CLOSED 0x00000002 /* Door is closed */ #define EX_LOCKED 0x00000004 /* Door is locked */ #define EX_PICKPROOF 0x00000010 /* Door cannot be picked */ #define EX_BASHPROOF 0x00000020 /* Door cannot be broken */ #define EX_ISWALL 0x00000040 /* Exit is a wall... */ #define EX_HIDDEN 0x00000100 /* Hidden door */ #define EX_RESET 0x00000200 /* Resets on repop if broken */ #define EX_HASTRAP 0x00000400 /* This exit has a trap */ #define EX_EAT_KEY 0x00000800 /* The exit destroys keys used in it */ /* ======================================================================== */ /* Sector types. */ /* Small compatibility with Mortal Conquest */ /* ======================================================================== */ /*+-----------------------+*/ /*| easy movement sectors |*/ /*+-----------------------+*/ #define SECT_INSIDE 0 /* Inside, set INDOORS flag too! */ #define SECT_CITY 1 /* City, easy moving */ #define SECT_TOWN 2 /* Town area */ #define SECT_ROAD 3 /* Road sector */ #define SECT_TRAIL 4 /* Trail Sector */ #define SECT_PATH 5 /* A trail through wilderness */ #define SECT_BRIDGE 6 /* Bridge Sector */ #define SECT_FIELD 7 /* Field, easy moving */ #define SECT_GRASSLANDS 8 /* Grasslands - open rich */ #define SECT_SAVANNAH 9 /* Warm, lush grasslands */ /*+---------------------------------------------------------------------+*/ /*| End of easy movement sectors begin special sectors which need stuff.|*/ /*+---------------------------------------------------------------------+*/ #define SECT_WATER_SWIM 10 /* Swimable water */ #define SECT_WATER_NOSWIM 11 /* Unswimable water */ #define SECT_UNDERWATER 12 /* Underwater */ #define SECT_MOUNTAIN 13 /* Need mountain boots-vehicle */ #define SECT_AIR 14 /* Air sector */ #define SECT_CLOUDS 15 /* Up in the clouds */ #define SECT_SNOW 16 /* Hard moving, cold */ /*+---------------------------------------------------------+*/ /*| End special sectors that need stuff, now onto the rest. |*/ /*+---------------------------------------------------------+*/ #define SECT_ICE 17 /* Ice sector.. slippery footing */ #define SECT_ARCTIC 18 /* Cold like sect_snow... */ #define SECT_TUNDRA 19 /* Cold and barren wastes */ #define SECT_TROPICAL 20 /* Tropical, hot */ #define SECT_MARSH 21 /* Marsh sector.. no blood trails */ #define SECT_SWAMP 22 /* Swamp area..yeah im scraping */ #define SECT_HOLLOW 23 /* Cool and dark marsh... */ #define SECT_STEPPE 24 /* Cool, dry grasslands */ #define SECT_PLAINS 25 /* Plains sector (big field) */ #define SECT_BRUSH 26 /* Brush sector... */ #define SECT_FOREST 27 /* Forest, tough going */ #define SECT_WOODS 28 /* Another forest type */ #define SECT_CANYON 29 /* Canyon--dark alot */ #define SECT_HILLS 30 /* Hills, tough going */ #define SECT_ROCKY 31 /* Rocky, hard to keep footing */ #define SECT_WASTELAND 32 /* Almost as bad as desert, dry */ #define SECT_DESERT 33 /* Desert, -2 thirst, hot */ #define SECT_RUINS 34 /* Ancient, abandoned place */ #define SECT_LAVA 35 /* Lava Area */ #define SECT_ASTRAL 36 /* Astral sector...need spell */ /*+------------------------------------+*/ /*| These are the underground sectors! |*/ /*+------------------------------------+*/ #define SECT_CAVE 37 /* Underground cave */ #define SECT_HOLE 38 /* A Place over a hole */ #define SECT_CAVERN 39 /* BIG cave underground */ #define SECT_PASSAGE 40 /* A type of tunnel */ #define SECT_ALCOVE 41 /* A Small chamber */ #define SECT_CHAMBER 42 /* An underground opening */ #define SECT_VAULT 43 /* MASSIVE cave..can fly */ #define SECT_SUBTERRANIAN 44 /* under the earth area */ #define SECT_SHAFT 45 /* A shaft...dunno */ #define SECT_PIT 46 /* Above or in a pit */ #define SECT_TUNNEL 47 /* Underground path */ #define SECT_TUBE 48 /* Round formed tunnel */ #define SECT_NUKE 49 /* This is used to nuke rooms */ #define SECT_MAX 50 /* End of sectors */ /* ======================================================================== */ /* Food/Liquids player state */ /* ======================================================================== */ #define COND_DRUNK 0 #define COND_FULL 1 #define COND_THIRST 2 #define COND_STARVING 3 /* ======================================================================== */ /* Miscellaneous stuff */ /* ======================================================================== */ #define AUTH 2 #define MAX_HOLD 6 /* Number of hold slots chars get.. */ #define WEAR_NONE -1 #define WRITE_AUTH 1 /* ======================================================================== */ /* Guild Flags */ /* ======================================================================== */ #define GUILD_WARRIOR 0 #define GUILD_WIZARD 1 #define GUILD_HEALER 2 #define GUILD_THIEF 3 #define GUILD_RANGER 4 #define GUILD_MYSTIC 5 #define GUILD_ASSASSIN 6 #define GUILD_TINKER 7 #define GUILD_BATTLEMASTER 8 #define GUILD_SORCERER 9 #define NUM_GUILDS 10 #define NUM_TIERS 5 #define MAX_TIERS 5 /* ======================================================================== */ /* Positions */ /* ======================================================================== */ #define POSITION_DEAD 0 /* Dead */ #define POSITION_MORTAL 1 /* Mortally wounded */ #define POSITION_INCAP 2 /* Incapacitated */ #define POSITION_STUNNED 3 /* Stunned */ #define POSITION_SLEEPING 4 /* Sleeping */ #define POSITION_RESTING 5 /* Resting */ #define POSITION_BASHED 6 /* Bashed to ground */ #define POSITION_GROUNDFIGHTING 7 /* Groundfighting */ #define POSITION_FIGHTING 8 /* Fighting */ #define POSITION_CIRCLE 9 /* Circling */ #define POSITION_FALLING 10 /* Falling! */ #define POSITION_MEDITATING 11 /* Meditation */ #define POSITION_STANDING 12 /* Standing, not fighting */ #define POSITION_RUNNING 13 /* Running */ #define POSITION_SEARCHING 14 /* Searching for exit/item */ #define POSITION_BACKSTAB 15 /* Backstab preparation */ #define POSITION_INVEST 16 /* Investigating */ #define POSITION_CASTING 17 /* Casting a spell */ #define POSITION_SHOOTING 18 /* Shooting a wpn */ #define POSITION_MINING 19 /* Mining for chunks */ #define POSITION_FIRING 20 /* Firing a siege engine */ #define MAX_POSITIONS 20 /* MAX num positions. */ /* ======================================================================== */ /* Player set bits */ /* ======================================================================== */ #define PLR_HOLYLIGHT 0x00000004 /* Can see in the dark, invis, etc */ #define PLR_MAPPING 0x80000000 /* is the player mapping */ #define PLR_NOIBM 0x40000000 /* Plr does not use ibm for map */ #define PLR_VIEWMOBS 0x10000000 /* Plr views mobs on map */ #define PLR_VIEWPLAYERS 0x08000000 /* Plr views mobs on map */ #define PLR_MAPSPAM 0x08000000 /* Plr gets spammy updates */ #define PLR_LOG 0x00000010 /* Keep logs of this player's commands */ #define PLR_DENY 0x00000020 /* Deny this character from logging in */ #define PLR_FREEZE 0x00000040 /* Freeze this character */ #define PLR_HOLYPEACE 0x00010000 /* No on can fight in rooms you are */ #define PLR_HOLYWALK 0x00020000 /* Can walk through anything, anywhere */ #define PLR_HOLYLAG 0x00100000 /* Is this immortal delayed on delayed commands like mortals? */ #define PLR_NOCLAN 0x00200000 /* Is this person forbidden to join a clan? */ #define PLR_LAMER 0x00400000 /* Is this person a lamer? */ #define PLR_NOACTION 0x00800000 /* Is player forbidden to auct? */ #define PLR_NOAUCTION 0x02000000 /* Plr cannot auction anymore */ #define PLR_HAS_SHOES 0x04000000 /* Players has shoes on */ #define PLR_HAS_MTN_BOOTS 0x08000000 /* Players has mtn boots on*/ #define PLR_HAS_SCUBA 0x10000000 /* Players has scuba on */ #define PLR_HAS_BOAT 0x20000000 /* Players has a boat */ #define PLR_HAS_SNOWSHOES 0x40000000 /* Players snowshoes */ #define PLR_HAS_SHIELD 0x80000000 /* This player is using a shield */ /* ======================================================================== */ /* This is the new automatic description system different desc types */ /* set while creating a character. */ /* ======================================================================== */ #define DESC_BUILD 0 /* Character's Build */ #define DESC_FACIAL_FEATURE 1 /* Character's facial feature */ #define DESC_EYES_COLOR 2 /* Character's eyes color */ #define DESC_EYES_ASPECT 3 /* Character's eyes aspect */ #define DESC_SKIN_COMPLEXION 4 /* Character's skin complexion */ #define DESC_HAIR_LENGTH 5 /* Character's hair length */ #define DESC_HAIR_COLOR 6 /* Character's hair color */ #define DESC_HAIR_STYLE 7 /* Character's hair style */ #define DESC_FACIAL_HAIR 8 /* Character's facial hair */ #define DESC_FUR_COLOR 9 /* Character's fur color */ #define NUM_DESC_TYPES 9 /* ======================================================================== */ /* Bits for immort notification on events */ /* ======================================================================== */ #define WIZ_NOTIFY 0x00000080 #define WIZ_NOTIFY_1 0x00000100 #define WIZ_NOTIFY_2 0x00000200 #define WIZ_NOTIFY_LOGIN 0x00000400 #define WIZ_NOTIFY_DEATH 0x00000800 #define WIZ_NOTIFY_BUG 0x00001000 #define WIZ_NOTIFY_LOG 0x00002000 #define WIZ_NOTIFY_SCRIPT 0x00004000 /* ======================================================================== */ /* Internal channel ID's */ /* ======================================================================== */ #define CHANNEL_AUCTION 0x00000001 #define CHANNEL_CHAT 0x00000002 #define CHANNEL_CLANTALK 0x00000004 #define CHANNEL_IMMTALK 0x00000008 #define CHANNEL_NOTIFY 0x00000010 #define CHANNEL_YELL 0x00000080 #define CHANNEL_GODTALK 0x00000100 /* ======================================================================== */ /* Auto's conforming to theisles 1.0 and mortal conquest standards */ /* ======================================================================== */ #define PLR_AUTOGOLD 0x00000100 /* Gets gold from kills */ #define PLR_AUTOEXIT 0x00000200 /* Displays exits in room desc */ #define PLR_AUTOLOOT 0x00000400 /* Loots all kills */ #define PLR_AUTOSAC 0x00000800 /* Sacs corpses of all kills */ #define PLR_BLANK 0x00001000 /* Blank line before prompt */ #define PLR_BRIEF 0x00002000 /* Brief mode - no long room descs */ #define PLR_COMBINE 0x00004000 /* Combine object listings */ #define PLR_PROMPT 0x00008000 /* Prompt is on/off */ #define PLR_TELNET_GA 0x00010000 /* Non-compat, but same name! Warning */ #define PLR_ASSIST 0x00020000 /* Auto-assists people in group against mobs. To assist against other players, you must manually type assist. */ #define PLR_AUTOSPLIT 0x00040000 /* auto-splits any cash looted */ #define PLR_SILENCE 0x00080000 /* Player cannot use channels */ #define PLR_AUTOSCAN 0x00100000 /* You get the scan messages from players of opp align in adjacent rooms */ #define PLR_AUTOBLINK 0x00200000 /* Player uses blink skill. */ #define PLR_ANSI 0x00400000 /* Ansi is on/off for this player? */ #define PLR_ANONYMOUS 0x00800000 /* Use the old editors */ #define PLR_DESTROY 0x01000000 /* Player tries to destroy items */ #define PLR_PROMPT_UP 0x08000000 /* Prompt with map or down below? */ #define PLR_NOSUMMON 0x10000000 /* Plr cannot be summoned */ #define PLR_ASCII 0x20000000 /* Internal Ascii (high ibm chars) */ /* ======================================================================== */ /* Mana types retain full compatibility with Mortal conquest and Theisles */ /* ======================================================================== */ #define MANA_ANY 0x80 #define MANA_NONE 0x00 #define MANA_EARTH 0x01 #define MANA_AIR 0x02 #define MANA_FIRE 0x04 #define MANA_WATER 0x08 #define MANA_SPIRIT 0x10 #define MANA_TYPES 5 /* ======================================================================== */ /* Spelltype targets.. */ /* ======================================================================== */ #define TAR_IGNORE 0x00000000 /* No target needed */ #define TAR_CHAR_OFFENSIVE 0x00000001 /* Offensive spell */ #define TAR_CHAR_DEFENSIVE 0x00000002 /* Defensive spell */ #define TAR_CHAR_SELF 0x00000004 /* Self only */ #define TAR_OBJ_INV 0x00000008 /* Object in inventory */ #define TAR_ALL_IN_ROOM 0x00000010 /* Everyone in room */ #ifdef WINDOWS #define PLAYER_DIR "..\\plr\\" #define PLAYER_DIR_2 "..\\plr\\" #define NULL_FILE "..\\src\\LoC" #else #define PLAYER_DIR "../plr/" #define PLAYER_DIR_2 "../plr/" #define NULL_FILE "/dev/null" #endif #define AREA_LIST "playarea.lst" #define NOTE_FILE "plnotes.txt" extern char *globalalias_name[200]; extern char *globalalias_expansion[200]; struct scriptassoc { SA *next; char *flagname; char *flagtext; }; extern SA *sa_head[27]; /* 1=A, 26=Z */ /* ======================================================================== */ /* Auction Data */ /* ======================================================================== */ struct auct_data { CHAR_DATA *bychar; CHAR_DATA *tochar; short going; int minbid; int bid; int number; char item_name[SML_LENGTH]; SINGLE_OBJECT *item; AUCTION *next; }; /* ======================================================================== */ /* This reads from dam.dat. Allows for configurable damage messages */ /* ======================================================================== */ struct dammsg_data { short generic_range[20][2]; short generic_percent[20][2]; char *gen_m[20]; char *gen_m1[20]; char *gen_m2[20]; }; /* ======================================================================== */ /* This reads from power.dat. It can be used to configure the entire mud. */ /* ======================================================================== */ struct power_data { bool all_newbies_good; /* Do all newbies start as good? */ int level_to_choose; /* Level newbies choose their side */ int choose_in_room; /* Which room people choose sides in */ short initial_hp[2]; /* Initial hit points for newbies */ short remort_hp[2]; /* Remort initial hit points */ short initial_mv[2]; /* Initial move points for newbies */ short remort_mv[2]; /* Remort initial move points */ short hitgain[10][5]; /* Hit gains in a given level range */ short rem_hitgain[10][5]; /* Remort hit gains in a given level range */ short movegain[10][4]; /* Move gains in a given level range */ short rem_movegain[10][4]; /* Remort move gains in a given level range */ bool remort_bonus_fixed; /* Tells if remort bonus is fixed JRAJRA */ int remort_in_room; /* Must be here to "remort" */ int transform_in_room; /* Must be in this room to transform */ bool add_to_stats; /* Remorts add stats? */ short max_remorts; /* Maximum remorts */ short remorts_for_restart; /* Number of remorts needed to restart as a "restart race" */ short remort_level; /* Level you must be to remort */ bool vaporize_inv; /* Vaporize inventory when remorting? */ bool vaporize_all; /* Vaporize everything when remorting? */ int beams_to_room; /* Jump to this room after remorting? */ bool weather; /* Weather effects on/off */ bool player_prompt; /* Player defined prompts? */ bool skill_loss_on_mob_death; /* skills lost on mob death? */ bool skill_loss_on_pk_death; /* skills lost on pk death? */ int amount_lost_on_death; /* Actual skill amount lost on death */ bool arena_on; /* Arena active? */ bool arena_good_evil; /* Good/Evil fights in arena? */ bool validation; /* Validation system on/off */ char email_to[50]; /* Email to here for validation */ int space_allowed; /* Space allowed for bootup */ bool easier_moves; /* Easier movement method */ int max_prac_spells; /* Maximum spell percentage you can practice to */ int max_prac_skills; /* Maximum skill percentage you can practice to */ int newbie_object[10]; /* Newbies start with these objects */ bool allow_where; /* Allow use of 'where' command? */ int space_needed; /* Shared string space needed on bootup. */ bool evil_can_cast; /* Evil can cast spells? */ short practice_percent; /* Use to scale practices per level */ short repair_weapons[3]; /* Costs to repair weapons */ short repair_armors; /* Costs to repair armor */ short tinker_discount; /* Discount for tinker guild members */ short resize_divisor; /* Resize divisor for resize cost */ short groundfight_stand; /* Chance of standing in a groundfight */ bool equip_in_combat; /* Equip armor in combat? */ bool remove_while_fighting; /* Remove armor while fighting? */ bool score_while_fighting; /* Use score while fighting? */ bool give_while_fighting; /* Give objects while fighting? */ char *god_names[5]; /* Holds the name of mudgods. */ int level_to_see_numeric_stats; /* Level to see numeric stats, unused. */ short base_hp_regen; /* Base hp regen per heartbeat */ short base_mp_regen; /* Base mp regen per heartbeat */ short hp_bonus_resting; /* Hp regen bonus for resting */ short hp_bonus_sleeping; /* Hp regen bonus for sleeping */ short mp_bonus_resting; /* Move bonus for resting */ short mp_bonus_sleeping; /* Move bonus for sleeping */ short med_mana_regen_bonus; /* Meditating regen for mana */ short base_mana_regen_bonus; /* Non-meditating regen for mana */ bool tackle_with_weapon; /* Allow tackling with a weapon? */ bool tackle_person_with_weapon; /* Allow tackling a person with a weapon? */ bool allow_rerolls; /* Allow rerolls in old creation method? */ short flurry_mps; /* Move point cost for flurry */ char *learned[20]; /* Description of how well you know spells/skills */ short low_range[20]; /* Range for learned */ short high_range[20]; /* Range for learned */ char *exp_to_level; /* Interpretted exp to level. */ char *highlev_exp_to_level; /* Interpretted highlevel exp to level */ short prereq; /* Minimum you must know a given skill for it to count as a satisfied prerequisite. */ char *mob_exp; /* Mob exp to level, interpretted. */ short armor_lev_min[20]; /* Armor level range */ short armor_lev_max[20]; /* Armor level range */ char *armor_lev_word[20]; /* Armor level range descriptions. */ bool restore_when_level; /* Free restore when you level? */ bool can_summon_mobs; /* Does the game allow mob summoning? */ bool morts_use_color_chat; /* Can morts use colors in channels? */ bool show_race_select_info; /* Shows race stats to newbies? */ char flee_chance; /* Percent chance that fleeing will fail */ bool bash_slip_to_tackle; /* Can a bash slip into a groundfight? */ bool penalize_evil_in_sun; /* Penalize evil in direct sunlight? */ bool get_from_corpse_while_in_combat; /* Loot corpses while fighting? */ char plague_chance; /* Chance others in the room will catch plague from you, if infected. */ char *gods; /* Gods who run the place */ int max_level; /* maximum level, cannot exceed 90 */ bool can_fight_self; /* Can fight yourself? */ char loot_level; /* What level can you loot a corpse? */ bool auction_lag; bool good_kill_good; bool evil_kill_evil; int remort_req[13][6]; int augment_cost[12][7]; int big_group_pkill_whore; short stats_per_remort; short guild_points_per_remort; short resistance_points_per_remort; }; /* ======================================================================== */ /* Mob info (used in def.) */ /* ======================================================================== */ struct mob_nfo { char *name; char *attackname; short color; char symbol; }; /* ======================================================================== */ /* For use with syslag, sysfinger. */ /* ======================================================================== */ struct shell_command { SHELL *next; char caller[50]; char fname[20]; int wait; }; /* ======================================================================== */ /* Banned site data */ /* ======================================================================== */ struct ban_data { BAN_DATA *next; char *name; /* Numeric site ban */ bool newbie; /* Newbie banned? If so, people from this site must go through email validation to play! */ char *who_banned; /* Keep a trace of who banned */ char *ban_time; /* Time that the *name was sitebanned */ char *ban_reason; /* Reason why *name is banned */ }; /* ======================================================================== */ /* Bank item data */ /* ======================================================================== */ struct bank_item { int warpoints; int gold; }; /* ======================================================================== */ /* Combat Field Structure */ /* ======================================================================== */ /*+----------------------------------+*/ /*| Damages.. partially implimented. |*/ /*+----------------------------------+*/ struct damages_struct { char *kick_dam; }; /* See society.c for better documentation of this next part. This is designed to set up a community of mobs that grows and interacts and eventually does things like send out war parties and sends out new colonies etc. Very much in the beginning stages... */ #define NUM_CASTES 10 #define MAX_CASTE_RANKS 5 /* Change this if you want more ranks */ struct society_data { SOCIETY_DATA *next; /* Next society in the list */ int vnum; /* What the society number for this is. */ char *name; /* The name of the society */ int room_start_vnum; /* Society starts in this room */ int num_start_rooms; /* How many rooms above this number they start in */ CASTE_DATA *caste[NUM_CASTES]; int flags; /* Flags this society takes. */ }; struct caste_data { int num_ranks; /* How many ranks there are in this. */ int mob_start_vnum; /* The vnum where the mobs start */ char *name; /* The caste name */ short chance_to_advance[MAX_CASTE_RANKS]; /* How likely you are to adv */ short curr_pop[MAX_CASTE_RANKS]; /* How many of each rank exist.. */ short max_pop[MAX_CASTE_RANKS]; /* Max population of each rank */ int flags; /* Flags for this caste - goals etc.. */ }; /*+------------------------------+*/ /*| The key to the spell editor. |*/ /*+------------------------------+*/ struct spell_data { SPELL_DATA *next; /* Next spell, hashed by number */ SPELL_DATA *next_a; /* Next spell, hashed by spell name */ int slot; /* 0 = skill, 1 = spell, 2 = prof */ int gsn; /* General slot number. internal use */ int spell_type; /* Offensive, defensive, etc... */ int spell_bits; /* SPELL_SUMMON, etc.. */ int spell_bits2; /* More spell bits :P */ char *spell_name; /* The spell's name */ int spell_level; /* Minimum level to cast this spell */ char *prereq_1; /* Spell prereq #1 */ char *prereq_2; /* Spell prereq #2 */ SPELL_DATA *pre1; /* Prereq1 to be less cpu intensive */ SPELL_DATA *pre2; /* Prereq2 to be less cpu intensive */ int num_prereqs[3]; /* Number of prereqs for spell */ bool go_to_second; /* Is there vert line to second prereq? */ char *noun_damage; /* Noun damage for offensive combat spells */ char *act_to_ch_1; /* Shown to character when he/she casts */ char *act_to_ch_2; /* Just another line to show to char */ char *act_to_vict_1; /* To victim */ char *act_to_vict_2; char *act_to_notvict_1; /* To everyone in room besides char + vict */ char *act_to_notvict_2; int aff[4]; /* Affect flags added by spell. */ int location[5]; /* Modifies this location (str, dex, etc) */ char *duration; /* Needs to be a string so we can have vars */ char *modifier[5]; /* Amount to modify location */ char *damage; /* If combat spell, how much dam (w/vars) */ int mana; /* Minimum Mana cost */ int mana_type; /* Mana type */ int multi_mana_level[MANA_TYPES]; /* Multiple Mana Levels */ int multi_mana; /* Is it a Multiple Mana Spell? */ int casting_time; /* Casting delay time. 10 = 1 combat round */ int position; /* Position you must be in to cast */ char *wear_off_msg; /* When the spell wears off, this msg is disp'd */ int creates_obj; /* Creates this object vnum */ unsigned char min_stat[NUM_STATS]; unsigned char guilds[NUM_GUILDS]; int in_room; /* Must be in this room vnum to cast. */ int spell_lag; /* Number of hours between castings */ int fail_chance; /* percent chance it fails */ int pk_fail_chance; /* percent chance it succeeds if person has pk noquit timer set > 2 */ }; /* ======================================================================== */ /* Where a blow is struck. */ /* ======================================================================== */ #define STRIKE_BODY 1 #define STRIKE_HEAD 2 #define STRIKE_LEGS 3 #define STRIKE_ARMS 4 /* ======================================================================== */ /* Structure that armor has. */ /* ======================================================================== */ struct item_armor { char tag; signed char warmth; /* v9 */ signed char protects_legs; /* v0 */ signed char protects_body; /* v1 */ signed char protects_head; /* v2 */ signed char protects_arms; /* v3 */ signed char max_condition; /* v6 */ signed char condition_now; /* v7 */ }; /* ======================================================================== */ /* Weapons have these values. */ /* ======================================================================== */ struct item_weapon { char tag; signed short damage_p; /* v0 */ signed short strength; /* v1 */ unsigned short casts_spell; /* v2 */ signed short attack_type; /* v3 */ signed short firstdice; /* v7 */ signed short seconddice; /* v8 */ }; /* ======================================================================== */ /* Missiles have these values. */ /* ======================================================================== */ struct item_missile { char tag; signed char damage_p; /* v0 - How damaged is it */ signed char strength; /* v1 - How much damage it can absorb */ signed char aiming_time; /* v2 - How long it takes to aim */ signed char shots_per_use; /* v3 - Number of ammo released with each shot*/ signed char ammo_type; /* v4 - must match ammo... */ signed char range; /* v5 - How far it can shoot */ }; /* ======================================================================== */ /* Ammos have these values. */ /* ======================================================================== */ struct item_ammo { char tag; signed char firstdice; /* v7 - damage dice */ signed char seconddice; /* v8 - damage dice */ signed char ammo_type; /* v4 what kinds of ammo */ signed char shots_left; /* v0 */ signed char total_shots; /* v1 */ }; /* ======================================================================== */ /* Shields have these values. */ /* ======================================================================== */ struct item_shield { char tag; int current_power; /* v0 */ int max_power; /* v1 */ }; /* ======================================================================== */ /* Drink Containers have these values. */ /* ======================================================================== */ struct item_drink_container { char tag; signed char max_liquid; /* v1 */ signed char liquid_now; /* v0 */ signed char liquid_type; /* v2 */ signed char not_poison; /* v3 */ }; /* ======================================================================== */ /* Lights have these values. */ /* ======================================================================== */ struct item_light { char tag; signed char light_lit; /* v3 */ signed char light_now; /* v0 */ signed char max_light; /* v1 */ signed char light_fillable; /* v2 */ }; /* ======================================================================== */ /* Tools have these values. */ /* ======================================================================== */ struct item_tool { char tag; signed char tool_type; /* v0 */ signed char uses; /* v1 */ signed char max_uses; /* v2 */ }; /* ======================================================================== */ /* Raw items have these values. */ /* ======================================================================== */ struct item_raw { char tag; char type; /* v0 Cloth mineral wood herb etc... */ char rank; /* v1 iron, steel, adamantium etc... */ }; /* ======================================================================== */ /* Traps have these values. */ /* ======================================================================== */ struct item_trap { char tag; unsigned char location; /* v0 */ unsigned char type; /* v1 */ }; /* ======================================================================== */ /* Vehicules have these values. */ /* ======================================================================== */ struct item_vehicle { char tag; signed char sector_use; /* v0 */ }; /* ======================================================================== */ /* Fountains have these values. */ /* ======================================================================== */ struct item_fountain { char tag; signed short liquid; /* v0 */ signed short spells[3]; /* v1-> */ }; /* ======================================================================== */ /* Potions have these values. */ /* ======================================================================== */ struct item_potion { /* Scrolls/pills/potions */ char tag; unsigned char spell_level; /* v0 */ signed short spells[3]; /* v1-> */ }; /* ======================================================================== */ /* Food have these values. */ /* ======================================================================== */ struct item_food { char tag; signed char hours; /* v0 */ signed char not_poison; /* v3 */ }; /* ======================================================================== */ /* Gems have these values. */ /* ======================================================================== */ struct item_gem { char tag; signed short gem_type; /* v0 */ signed short mana_now; /* v1 */ signed short max_mana; /* v2 */ unsigned short max_level; /* v3 */ unsigned short casts_spell; /* v4 */ }; /* ======================================================================== */ /* Wands have these values. */ /* ======================================================================== */ struct item_wand { /* Wands/staffs */ char tag; unsigned char spell_level; /* v0 */ signed char max_charges; /* v1 */ signed char current_charges; /* v2 */ signed short spells[3]; /* v3-> */ }; /* ======================================================================== */ /* Furnitures have these values. */ /* ======================================================================== */ struct item_furniture { char tag; signed char type; /* v0 */ int to_room_vnum; /* v1 */ int gametype; /* v3 */ /* Used for play command. */ signed char portal_flags; /* v5 */ /* OR!!!! if it is an anvil, this number is the maximum rank of item that can be forged on it! */ }; /* ======================================================================== */ /* Siege engines have these values. */ /* ======================================================================== */ struct item_siege { char tag; signed char type; /* v0 */ signed char flags; /* v1 - usually ammo type */ signed char ammo_type; /* v2 - uses ammo just like bows */ signed char firing_time; /* v3 - how long it takes to fire */ signed char range; /* v4 - how far it can shoot */ short hps; /* v5 - how much damage it has left*/ short max_hps; /* v6 - how much damage it can take */ }; /* ======================================================================== */ /* Containers have these values. */ /* ======================================================================== */ struct item_container { char tag; int max_weight; /* v0 */ int flags; /* v1 */ int key_vnum; /* v2 */ int money; /* v8 */ int trap_type; /* v3 */ char reason_for_death[30]; char looted_by[30]; char looted_by_two[30]; }; /* ======================================================================== */ /* Climbable items have these values. */ /* ======================================================================== */ struct item_climbable { char tag; signed char up_down; /* v0 */ int above; /* v2 */ int below; /* v3 */ }; /* ======================================================================== */ /* Books items have these values. */ /* ======================================================================== */ struct item_book { char tag; signed short teaches; /* v0 */ }; /* ======================================================================== */ /* Time info data */ /* ======================================================================== */ struct time_info_data { short year; short month; short hour; short day; }; /* ======================================================================== */ /* Weather compatibility followed from Theisles.. may be different than */ /* expected though... warning! */ /* ======================================================================== */ struct weather_data { int mmhg; /* Mercury mm */ short temperature; /* Farenheight temp */ int change; /* Last change */ short sky; /* Sky value */ short sunlight; /* Sunlight value */ short winddir; /* Wind direction */ short windspeed; /* Wind speed */ }; /* ======================================================================== */ /* Item infos */ /* ======================================================================== */ struct item_info { char name[20]; /* The name of the item type */ int number; /* The actual type number */ char desc[200]; /* Brief description of what this type of item does. */ }; /* ======================================================================== */ /* The bidding is messy, but it's a port from long ago when I wrote it for */ /* midpoint void... */ /* ======================================================================== */ struct bid_data { char fighters[2][17]; /*[0] and [1] hold the two fighters' names */ char bidders[50][17]; /*Character names of bidders (didn't to structs cuz of quitting/etc */ long bids[50]; /*actually monetary bid */ bool bidfor[50]; /*FALSE for fighter 0, TRUE for fighter 1 */ bool taking_bids; /*Are we still up for bidding or has the fight begun? */ int waitticks; }; /*+------------------------------------------------------------+*/ /*| Ranking data holds top MAX_RANKING_DATA on multiple topics |*/ /*+------------------------------------------------------------+*/ struct rank_data { char name[17]; float value; int alignment; }; /* ======================================================================== */ /* Semi-compatibility with Theisles, but nothing guarenteed! */ /* ======================================================================== */ struct descriptor_data { socket_t descriptor; /* Actual file descriptor number */ DESCRIPTOR_DATA *next; DESCRIPTOR_DATA *snoop_by; /* Snooping by another descriptor */ CHAR_DATA *original; /* Original, for use in switching into mobs */ CHAR_DATA *character; /* player this descriptor is attached to */ int timeout_counter; /* Login screen timeout counter */ short connected; /* Connect state */ int atimes; /* Authorization ident attempts */ socket_t auth_fd; /* Authorization ident file desc */ int auth_state; /* Authorization state */ int auth_inc; char abuf[100]; /* Authorization buffer for in/out */ char host[30]; /* Hostname this player comes from */ char hosttwo[30]; /* Host prefix for extra checking */ char *hostname; /* Hostname. Unused due to slow dns lookups */ char *username; /* Username result from ident */ int max_outbuf; /* Maximum outbuffer size used so far. Outbuffer is allocated in 256 byte chunks, and can grow depending on how much text needs to be in the buffer at once. */ char inbuf[2002]; /* Input buffer */ char incomm[2004]; /* Input command buffer */ char inlast[2004]; /* Last Input buffer contents */ int repeat; /* Repeat count; catch spammers */ char *outbuf; /* Output buffer pointer */ char *showstr_head; /* Head of string pausing */ char *showstr_point; /* Pointer to showstring string pausing */ void *pEdit; /* Pointer to structure currently editing */ int outsize; /* Output size */ int outtop; /* Output max */ int location; /* Location in fullscreen editor */ char **pString; /* Pointer to string currently editing */ int fdpair[2]; /* File desc pair for shelling */ short roll[NUM_ROLLS]; /* Rolling choice for each option (current = 4) */ int act; /* Combines a lot of other stuff */ }; /* ======================================================================== */ /* Theisles and mortal conquest compat. Yes, I copied their file parsing */ /* and general helpfile format ideas! However, since it's not the exact */ /* same code, I can't guarentee files will be compat. */ /* ======================================================================== */ struct help_data { HELP_DATA *next; short level; /* Minimum level to see this helpfile */ char *keyword; /* Keyword list to get this helpfile */ char *text; /* Actual help text */ }; /* ======================================================================== */ /* CHANNELS follow.. */ /* ======================================================================== */ #define TO_ALL -2 #define TO_SAME -1 struct channel_type { CHANNEL *next; bool clan; /* Clan channel? */ bool clan2; /* Sect channel? */ char *channel_name; /* Channel name */ char *commands[3]; /* Commands to use this channel */ int level; /* Level to use this channel */ int to_level; /* Channel is seen by all higher than this level */ char *color; /* Color of this channel for newbies */ int moves; /* Takes this amount of moves to use channel */ char to_align; /* 1 = same align as you 2 = good 3 = evil 4 = both aligns */ }; /* ======================================================================== */ /* Shop Data */ /* Not compatible */ /* ======================================================================== */ struct shop_data { SHOP_DATA *next; int keeper; /* Vnum of shopkeeper */ short buy_type[MAX_TRADE]; /* What a shopkeeper will buy */ short profit_buy; /* Buying profit, in percent */ short decrease; /* Decrease percent for multiple items */ short items_until_decrease; /* Decrease percent after this many items */ short profit_sell; /* Selling profit, in percent */ unsigned char open_hour; /* Time the shop opens */ unsigned char close_hour; /* Time the shop closes */ int creates_vnum; /* Shopkeeper makes this object */ short creates_hours; /* ever creates_hours hours. */ }; /* ======================================================================== */ /* Clan Data */ /* ======================================================================== */ struct clan_data { CLAN_DATA *next; /* Next Clan in List */ short vnum; /* Clan vnum */ char leader[20]; /* Name of Clan's Leader/Owner */ char name[60]; /* Name of Clan Itself */ int start_vnum; /* Starting vnum of where clanhouse begins */ short alignment; /* 1=good,2=evil,0=neut,3=special */ short minlev; /* Minlevel of new members */ char *members[100]; /* Clan members */ SINGLE_OBJECT *storage[MAX_CLAN_STORAGE]; /* Clan storage */ bool shitlist; int upgrade_level; /* How far has this clan upgraded? */ }; /* ======================================================================== */ /* Race data for player races */ /* And now player aligns too */ /* ======================================================================== */ struct race_data { char name[40]; /* Name of the race */ short bonus[NUM_STATS]; /* Initial stat bonuses */ short limits[NUM_STATS]; /* Stat limits */ int start_room; /* Starting room,100-110 or so 100 = newbie */ int max_slots[3]; /* Max skills/spells/profs */ short height_min; /* Minimum height */ short height_max; /* Maximum height */ int aff[4]; int nat_augments; /* Natural augments for this race...*/ /*+------------------------------------------------------------------+*/ /*| This is set only when the player enters the game the first time. |*/ /*+------------------------------------------------------------------+*/ int natarmor; /* Natural skin armor class */ int regen_hit_percent; /* Hit point regeneration percent */ int regen_move_percent; /* Move point regenration percent */ bool restart_race; /* Can this race switch alignment? */ /*+------------------------------------------------------------------+*/ /*| These following things are to differentiate races so that they |*/ /*| are not all clones. The 100 = normal means its a percent of |*/ /*| normal. 0 = normal means its a straight number. |*/ /*+------------------------------------------------------------------+*/ int attack_spell_percent; /* Spell power bonus or penalty... 100 = normal */ int combat_damage_bonus; /* Natural APB 0 = normal */ int backstab_percent; /* Bonus to backstab damage 100 = normal*/ int heal_percent; /* Bonus to healing 100 = normal*/ int hps_bonus; /* Extra or negative hps per level 0 = normal */ int mana_percent; /* Natural extra or less mana 100 = normal */ int nat_skills[3]; /* Each race has up to three natural skills. */ short parts[4]; /* 0 = leg pairs, 1 = torsos, 2 = heads, 3 = pairs of arms */ }; /* ======================================================================== */ /* Color data */ /* Compat with mortal conquest */ /* ======================================================================== */ struct color_data { char code[10]; char act_code[5]; char name[15]; int number; }; /* ======================================================================== */ /* Material data */ /* ======================================================================== */ struct material_data { char *name; char *colorname; short weight; /* /4 for body, /5 for legs, /6 for arms, /7 for head, /7 for feet, /9 for gloves */ char strength; /* the armor durability/hp value */ short armor; int cost; /* /3 for body, /5 for legs, /5 for arms, /6 for head /7 for feet, /8 for gloves, etc */ short wpn_start_location; bool nametype; int initflags; short bonushit; short bonushp; short bonusmove; short bigbonus; short kickbonus; }; /* ======================================================================== */ /* Forged items */ /* ======================================================================== */ struct forged_items { char *name; /* For forging of first type */ char *name2; /* For items of second type */ int wear_loc; /* Not including item_take */ int item_type; /* armor wpns tool etc */ int chunk_cost; /* How many chunks to forge this? */ int weight_divisor; /* Divide chunk wgt by this to make the item */ int cost_divisor; /* Divide cost by this */ int num_wear_slots; /* 1 or 2 */ int location; /* Upper = 0; middle = 1; lower = 2 */ int adjust; /* Are armor or wpn values of this type adjusted up or down? */ int armor_location; /* Where does this armor give ac bonus? 4 = all */ }; /* ======================================================================== */ /* Flag data for online creation flags */ /* ======================================================================== */ struct flag_data { char what_you_type[50]; /* What you type to get the flag toggled */ char how_it_appears[50]; /* How the flag display appears */ int flagname; /* The actual FLAG */ }; /* ======================================================================== */ /* Wearing data */ /* ======================================================================== */ struct wearing_data { short part_of_body; char what_you_type[50]; char how_it_appears[50]; int flagname; char wear_name[50]; short num_slots; short weight; }; /* ======================================================================== */ /* Mana data */ /* ======================================================================== */ struct mna_data { char what_you_type[20]; /* The name of the mana type */ char how_it_appears[20]; /* What actually shows up */ char color[20]; /* This is the color seen when accessed */ char letter[3]; /* The single letter used for this */ int flagname; /* The flagname associated with this mana */ char colorname[20]; /* What color shows up on created gems */ }; /* ======================================================================== */ /* Note data base is compatible with mortal conquest */ /* ======================================================================== */ struct note_data { NOTE_DATA *next; char *sender; /* Note's sender */ char *date; /* Date it was sent */ char *to_list; /* List of people it is to */ char *subject; /* Subject of the note */ char *text; /* The actual note text */ int lines; /* Lines of text in the note */ time_t date_stamp; /* Date stamp for unread notes */ int board_num; /* Game Board number this note is located on */ int note_type; }; /* ======================================================================== */ /* Affect Data */ /* ======================================================================== */ struct affect_data { AFFECT_DATA *next; short type; /* Affect type (gsn) */ int aff[4]; /* Affects from this... */ short modifier; /* numeric modified */ short location; /* location modified */ short duration; /* duration of affect */ }; /* ======================================================================== */ /* Sector Data, to keep things neater. */ /* ======================================================================== */ struct sector_data { short moves; /* Moves required to get through this room */ short track_timer; /* How many hours tracks last before disappearing */ char name_seen[40]; char name_typed[40]; char desc[200]; char color[40]; char colort; }; /* ======================================================================== */ /* Compat with mortal conquest/Theisles, but not meant for use in */ /* this codebase. */ /* ======================================================================== */ struct attack_type { char *name; int hit_type; }; struct int_apply_type { short learn; }; struct con_apply_type { short hit; }; struct str_apply_type { short dam; }; struct wis_apply_type { short practice; }; struct weapon_damage { short firstdice; short seconddice; }; /* ======================================================================== */ /* Useful macros!! */ /* ======================================================================== */ #ifdef NEW_WORLD #define IS_IN_BOAT(ch) FALSE #else #define IS_IN_BOAT(ch) ( (ch)->ced->in_boat != NULL ) #endif /*+----------------------------------------------+*/ /*| Is the character builder in a specific area? |*/ /*+----------------------------------------------+*/ #define IS_BUILDER(ch, area) ( (LEVEL(ch)>=LEVEL_IMMORTAL && area->open!=1 && \ (ch->pcdata->security <= area->security \ || strstr( area->builders, ch->pcdata->name ) != NULL \ || strstr( area->builders, "All" ) != NULL \ )) \ || LEVEL(ch)>=MAX_LEVEL) #define HUNTING(ch) ((ch)->fgt ? (ch)->fgt->hunting : NULL) /* ======================================================================== */ /* Basic mob prototype used to create mobiles! */ /* ======================================================================== */ struct mob_proto_data { MOB_PROTOTYPE *next; char *name; /* Keywords used to talk about this mob */ char *short_descr; /* short description "a giant cow", etc.. */ char *long_descr; /* Long description, shown to room */ char *description; /* Full textual description */ char *attackname; /* Attack name, NULL for default attack type */ SHOP_DATA *pShop; /* Shop data, if attached to mob */ AREA_DATA *area; /* The area this mob saves in */ OPTIONAL_DATA *opt; /* Optional mob data */ GUARD_DATA *guard; /* Mob Guarding data */ SPEC_PROC *spec; /* Mob spec procs for fighting. */ short max_in_world; /* Maximum of this mob in the world at once */ int yeller_number; /*This is a unique number that can be used to match a help-yeller with its helper(s) in the area. */ char will_help; /*Will this mob set it's hunting string to the char name if another mob with the same yeller_number in the area recieves a yell_message? */ int vnum; /* The vnum of this mob */ unsigned char sex; /* Mob's sex */ short count; /* How many mobs are there of this type? */ short killed; /* How many times has this mob been killed since reboot? */ short timer; /* Mob's timer. Disappears after this many ticks */ short level; /* Mob's level */ int act; int act2; int act3; int act4; int race_hate; /* Races this mob hates and attacks */ int aff[4]; /* Standard affects on mob */ short alignment; /* Alignment of the mob */ short money; /* The amount of copper this mob has */ short height; /* The height of this mob, or 0 for default height for mob type */ signed char mobtype; /* Mob type for this mob */ short hpmult; /* Hit point and experience multiplier. */ short armcls; /* Armor class. 101 = default for level */ int hitroll; /* Extra hitroll. */ int damroll; /* Extra damroll. Can be - or + */ char symbol; /* Symbol on overhead map. */ short color; /* Mob color from colortable */ }; /* ======================================================================== */ /* Track data for tracking, hunting */ /* ======================================================================== */ struct track_data { void *who; /* Character whose tracks these are This is set to CHAR_DATA* in the case of mobs and ONLINE* in the case of pcs */ unsigned char dir; /* 0-5 means dir_from, 6 means no from. 10*(0-5) means dir_to, 60 means no to. */ unsigned char timer; /* How many hours till this thing goes poof. */ TRACK_DATA *next; /* Linked list in room */ }; /* ======================================================================== */ /* Temporary fight structure, for use with players or fighting mobs */ /* ======================================================================== */ struct fight_data { short ears; /* Ears left, and internally used */ char attacks; /* Internal use */ bool upd; /* Internal use */ signed char challenge; /* Has this bloke been challenged to arena fight? */ CHAR_DATA *leader; /* Leader, for following */ CHAR_DATA *master; /* Master, for grouping, charming */ CHAR_DATA *riding; /* Riding for mounts */ CHAR_DATA *mounted_by; /* Mounted by */ SINGLE_OBJECT *pulling; /* Pulling this object */ int compliance; /* how compliant this mob is atm. */ char *hunting; /* Hunting for/tracking */ CHAR_DATA *fighting; /* Currently fighting */ short combat_delay_count; /* Delay ticks, internal use */ CHAR_DATA *attackers[4]; /* Who is currently in combat with char. */ short ground_pos; /* Ground position */ }; /* ======================================================================== */ /* Internal use flags for list maintenance/checking */ /* ======================================================================== */ #define ISMOB 0x01 /* Is this a mob? */ #define IS_IN_FIGHTING_LIST 0x02 /* Is this person in the fighting list? */ #define IS_IN_AGGRO_LIST 0x04 /* Is this mob in the aggro list? */ #define CHAR_MODE 0x10 /* Is this player in character mode? */ /* ======================================================================== */ /* The main character data for mob characters and player characters! */ /* ======================================================================== */ struct char_data { signed char data_type; char special; /* Contains ismob, is_in_fighting_list, etc */ CHAR_DATA *next_fighting; /* Next in fighting list */ DESCRIPTOR_DATA *desc; /* Descriptor for players, NULL for mobs */ CHAR_DATA *gen_next; /* General next, for AGGRO list */ CHAR_DATA *next; /* Next in global character list */ CHAR_DATA *prev; /* Prev in global character list */ CHAR_DATA *next_in_room; /* Next person in room list */ REALCHAR_DATA *pcdata; /* Player Character Data pointer */ MOB_PROTOTYPE *pIndexData; /* Mob prototype reference. Kept it like DIKU pIndexData so people can port code easier! grr.. how annoying. */ AFFECT_DATA *affected; /* Linked list of affects */ SINGLE_OBJECT *carrying; /* Objects carrying */ SINGLE_OBJECT *hold[MAX_HOLD]; /* Enough info for races with 3 sets of arms. If you want more arms up this too... */ ROOM_DATA *in_room; /* Current room character is in */ FGT *fgt; /* Fight data */ int act; /* Action bits 1 */ int aff[4]; /* Affect bits 0 = evasion, maladictions, 1 = detect/prot_from, 2 = other prots. */ unsigned char list; /* Which char list is this thing on? */ short height; /* Height */ short timer; /* Timer, AFK for players, destroy for mobs */ short wait; /* Wait state */ long max_hit; /* Maximum hit points */ long hit; /* Hit points now */ short max_move; /* Maximum move points */ short move; /* Move points now */ short hitroll; /* Hitroll */ short damroll; /* Damroll */ short armor; /* General skin armor */ signed char position; /* Physical position */ short coins[MAX_COINS]; unsigned char society; /* What if any society does this belong to? */ }; /*+------------------------------------+*/ /*| Is the person in the battleground? |*/ /*+------------------------------------+*/ #define IN_BATTLE(ch) ((ch)->pcdata->battleground == BATTLE_FIGHTING ? 1 : 0) /*+------------------------------------+*/ /*| Is the person in the arena? |*/ /*+------------------------------------+*/ #define CHALLENGE(ch) ((ch)->pcdata ? (ch)->pcdata->arena : 0) #define IS_OPEN(area) ((area)->area_flags & AREA_OPEN) /*+------------------------------------+*/ /*| Long description of this char? |*/ /*+------------------------------------+*/ #define LD(ch) (IS_PLAYER((ch)) ? (ch)->pcdata->long_descr : (ch)->pIndexData->long_descr) /*+------------------------------------+*/ /*| Short description of this char? |*/ /*+------------------------------------+*/ #define SD(ch) (IS_PLAYER((ch)) ? (ch)->pcdata->short_descr : (ch)->pIndexData->short_descr) /*+------------------------------------+*/ /*| Description of this char? |*/ /*+------------------------------------+*/ #define DSC(ch) (IS_PLAYER((ch)) ? (ch)->pcdata->description : (ch)->pIndexData->description) /* ======================================================================== */ /* Temp_str holds delayed command targets for spells, searching, */ /* backstabbing, etc... */ /* ======================================================================== */ struct temp_str { TEMP_STR *next; /* List for free temp_str */ char temp_string[1024]; /* The actual string */ }; /* ======================================================================== */ /* JRAJRA - Thing to keep track of who has been online since the mud */ /* rebooted. The header will be set at bootup. */ /* ======================================================================== */ struct online { signed char data_type; char *name; ONLINE *next; int mined; /* Used to limit the number of mines per reboot */ int chopped; /* Used to limit the number of chops per reboot */ bool located; /* Have you located recently */ int pk_since_locate; /* How many times you pked since last locate */ int notes_this_reboot; /* How many notes you have written this boot. */ bool typed_who; int alignment; /* The player's alignment */ }; /* ======================================================================== */ /* Potion Ingredients */ /* ======================================================================== */ struct potion_ingredients { int gsn; int ingredients[10]; /* These are numbers which reference objects 561-602 */ int timer; int equipment_level; }; /* ======================================================================== */ /* The main player character data structure! */ /* This is the place to SPLURGE on memory... */ /* ======================================================================== */ struct pc_data { signed char data_type; REALCHAR_DATA *next; /* Next player character data */ char *pwd; /* Password */ char *rpwd; /* plaintext Password */ char *title; /* Character's title */ SINGLE_OBJECT *storage[MAXST]; /* Storage objects in the bank */ char *rprompt; /* Real string prompt */ char *ignore[MAX_IGNORE]; /* Ignored character list */ char *beamin; /* Beam in message (immorts) */ char *beamout; /* Beam out message (immorts) */ char *oldgrep; /* Last grep'd command (immorts) */ short security; /* Security level.. UNUSED */ short wizinvis; /* WizInvis level */ short deaf; /* Deaf to these channels */ int chan_ignore; /* Deaf to these new style channels */ char chan_color[30][10]; /* Channel colors */ short pray_points; /* Pray points, unused. */ bool kk; /* Show descripted rooms on maps */ bool mb; /* Show mobs on maps */ bool noibm; /* No IBM chars on maps */ bool dbs; /* Double space on maps? */ char maxx; /* Max X display on maps */ long played; /* Second played */ short n_mana; /* Natural mana */ short n_max_mana; /* Natural Max mana */ short saving_throw; /* Saving throw for spells */ int plus_kick; /* Extra kick bonus value */ int plus_sneak; /* Extra sneak bonus value */ int plus_hide; /* Extra hide bonus value */ /*+----------------------------------+*/ /*| New stuff for combat shortening. |*/ /*+----------------------------------+*/ int armor[4]; /* The four armor spots for chars... */ /*+------------------------------------------------------------+*/ /*| End of new stuff to try to cut down on combat extra CPU's. |*/ /*+------------------------------------------------------------+*/ int donated; /* Donated value */ int transport_quest; /* Unused!! Used internally */ bool listen_auction; /* Listening to the current auction bidding? */ short colors[MAX_COLORS]; /* Colors for old style channels */ short practice; /* Practice sessions left. */ short learn; /* Learn points left. */ bool new_exp; /* New experience format? Internal use */ int voting_on; /* Unused.. internal use */ short nat_armor; /* Natural armor class for skin */ int nat_aff[4]; /* Natural affects */ time_t logon; /* Logon time */ time_t last_note; /* Last note read date-time stamp */ char cursor; /* Cursor position */ short pet_move[20]; /* Pets' move points */ int pet_hps[20]; /* Pets' hit points */ int pet_temp[20]; /* Pet's temp values */ short clan; /* Clan number */ short clan2; /* Sect number */ bool bgf; /* Battleground flag, internal use */ char *script_flags[MAX_SCRIPT_FLAGS];/* Actual new script language flags. */ char email[45]; /* Email address */ int questflag; /* Questflag, internal use */ char remort_times; /* Remort times.. */ short tickcounts; /* Spell delay, internal use */ int auction_count; /* Spell delay, internal use */ short speedwalk; /* To stop speedwalking */ long warpoints; /* War points */ long total_wps; /* Total Wps */ unsigned long pklevels; /* Total levels pked */ unsigned long pkhelpers; /* Total number of helpers used to pk */ unsigned long pkers; /* Total number of people req to pkill */ int pkills; /* Total number of pkills */ int pkilled; /* Total number of times pked */ int warmth; /* Warmth of the char */ bool challenge_on; /* Arena challenges on/off? */ int arena_msg; /* Arena message status */ bool challenged; /* Has been challenged? */ char *challenged_by; /* Challenged by whom? */ short challenge_time; /* Challenge time counter */ TEMP_STR *temp; /* Temp string for delay command use */ char number_pets; /* Number of current pets */ short pagelen; /* Physical page length */ unsigned char guilds[NUM_GUILDS]; int guild_points; /* Guild flags */ int resist_points; char no_quit; /* No_quit timer values */ char no_quit_pk; /* No_quit timer values for PK fight */ char trophy_name[MAX_TROPHY][18]; /* PKill trophy storage */ short trophy_times[MAX_TROPHY]; /* Times PKilled these people */ short trophy_level[MAX_TROPHY]; /* Level of victim */ short trophy_remorts[MAX_TROPHY]; /* Remorts of victim */ short trophy_alignment[MAX_TROPHY]; /* Alignment of victim */ short trophy_race[MAX_TROPHY]; /* Race of victim */ char stat[NUM_STATS]; /* str, int, wis, dex, con */ signed char stat_mod[NUM_STATS]; /* Str, int, wis, dex, con */ short condition[3]; /* Drunk,Thirsty,Hungry stats */ signed char learned[SKILL_COUNT]; /* Learned level for skills and spells */ int spell_attack_rank; /* How well you can use attack spells. */ int spell_defense_rank; /* How well you use def/healing spells. */ int spell_bits_knowledge[8];/* How well you can use each of the kinds of spell bits associated with casting. note that 0-3 are HURT-AFF, and 4-7 are REMOVE HURT - REMOVE AFF. */ unsigned long bank; /* Money in the bank, in copper */ int totalkills; /* Total kills */ int killpoints; /* Kill points */ int deaths; /* Times the player has died */ signed char no_spam; /* NOspam setting */ short quiet; /* In quite mode/busy mode/normal mode */ char *aliasname[MAXALIAS]; /* Alias names */ char *alias[MAXALIAS]; /* Alias expansion */ /*+-------------------------------------+*/ /*| Unused or disabled for the moment.. |*/ /*+-------------------------------------+*/ char *wvar; /* Word variable */ int nvar; /* Number variable */ /*+-----------+*/ /*| Additions |*/ /*+-----------+*/ char name[50]; /* Name of player */ char *short_descr; /* Short description of player */ char *long_descr; /* Long description of player */ char *description; /* Textual description of player */ short alignment; /* Player's alignment */ int act2; /* Player's act2, special bits */ int act3; /* act3 */ int act4; /* act4 */ short level; /* Player's level */ short carry_weight; /* Player's current carrying weight */ short carry_number; /* Carrying this amount of items */ char sex; /* Male/female */ short race; /* Player race this character is */ char *last_tells[15]; /* Circular list of last tells */ short tell_counter; /* Tell counter "head" */ ROOM_DATA *temp_room; /* Temporary room, internal use */ char maxy; /* Max Y display on maps */ ONLINE *online_spot; /* JRAJRA - Players place in online list */ char light; /* Amt of light the person has. */ char command_objs; /* Number of objects the player has that are command objects (they start command driven scripts) */ CHAR_DATA *guarding; /* The person this one is guarding */ CHAR_DATA *guarded_by[4]; /* The people who are guarding this person. */ int faction[MAX_MOB_TYPE]; /* This determines how mobs view you */ int x; /* Plr location in the overhead map */ int y; /* Plr location in the overhead map */ int augments; /* Extra augmentations */ unsigned short board; /* Which noteboard is this char reading? */ time_t created; /* When was the player created? */ CHAR_DATA *reply; /* Last person who sent him/her a tell */ NOTE_DATA *pnote; /* Writing this temp note */ CHAR_DATA *original; /* Original data for switching */ short wimpy; /* Flee at this many hit points */ int fight_ops; /* Fighting options, via 'fight' command */ int wasroom; /* Room before bg or arena. */ unsigned long exp; /* Experience, or experience worth for mobs */ unsigned short arena; /* Arena status */ unsigned short battleground;/* Battleground status */ unsigned short play; /* What kind of betting you are doing. */ unsigned short play_ticks; /* How many ticks to end the game. */ unsigned short play_outcome[10]; /* partial outcomes */ unsigned int play_bet; /* How much you bet */ unsigned int play_dealer_vnum; /* Keep track of the vnum of the dealer for updates */ unsigned int play_obj_vnum; /* Keep track of the vnum of the object for updates */ unsigned int play_room_vnum; /* Keep track of the vnum of the room your start the game in for updates */ int recent_deaths; /* Number of times recently pkilled by*/ }; #define GAME_DECK 0x0001 #define GAME_ROULETTE 0x0002 #define GAME_SLOTS 0x0004 #define ARENA_CHALLENGE 0x01 #define ARENA_PREPARING 0x02 #define ARENA_FIGHTING 0x04 #define BATTLE_JOINING 0x01 #define BATTLE_FIGHTING 0x02 #define PKF(ch) (FIGHTING((ch)) && (IS_PLAYER(FIGHTING((ch))))) #define BLOOD_NORTH 0x00000001 #define BLOOD_EAST 0x00000002 #define BLOOD_SOUTH 0x00000004 #define BLOOD_WEST 0x00000008 #define BLOOD_UP 0x00000010 #define BLOOD_DOWN 0x00000020 /* ======================================================================== */ /* Augments */ /* ======================================================================== */ #define AUG_LEG_ARMOR 0x00000001 #define AUG_BODY_ARMOR 0x00000002 #define AUG_HEAD_ARMOR 0x00000004 #define AUG_ARM_ARMOR 0x00000008 #define AUG_BODY_STR 0x00000010 #define AUG_HAND_STR 0x00000020 #define AUG_LEG_STR 0x00000040 #define AUG_ARM_STR 0x00000080 #define AUG_HEAD_INT 0x00000100 #define AUG_HEAD_WIS 0x00000200 #define AUG_FACE_SPIKE 0x00000400 #define AUG_HAND_SPD 0x00000800 #define AUG_FOOT_SPD 0x00001000 #define AUG_LEG_SPD 0x00002000 #define AUG_FOOT_STR 0x00004000 #define AUG_FOOT_ARMOR 0x00008000 #define AUG_MANA_BOOST 0x00010000 #define AUG_CHANNEL 0x00020000 #define AUG_MENTAL_ARMOR 0x00040000 #define AUG_CONCENTRATION 0x00080000 /*+-------------------------------------------------------------+*/ /*| This number tells various functions where to stop counting. |*/ /*+-------------------------------------------------------------+*/ #define MAX_AUGMENT 17 /* ======================================================================== */ /* These are for determining what kind of a trap a particular trap can be */ /* used for. A trap can have more than one of these set meaning it can be */ /* used for more than one kind of trap. */ /* ======================================================================== */ #define TRAP_FOR_ROOM 0x01 #define TRAP_FOR_DOOR 0x02 #define TRAP_FOR_OBJECT 0x04 #define SIEGE_CATAPULT 0x0001 #define SIEGE_BALLISTA 0x0002 #define SIEGE_RAM 0x0004 #define SIEGE_TOWER 0x0008 #define SIEGE_TREBUCHET 0x0010 /* ======================================================================== */ /* These are some minerals flags which tell what kind of mineral we have */ /* found. */ /* ======================================================================== */ #define MINERAL_BRASS 1 #define MINERAL_BRONZE 2 #define MINERAL_COPPER 3 #define MINERAL_QUARTZ 4 #define MINERAL_IRON 5 #define MINERAL_SILVER 6 #define MINERAL_STEEL 7 #define MINERAL_GOLD 8 #define MINERAL_PLATINUM 9 #define MINERAL_OBSIDIAN 10 #define MINERAL_ONYX 11 #define MINERAL_MOLYBDENUM 12 #define MINERAL_MITHRIL 13 #define MINERAL_ADAMANTIUM 14 #define MINERAL_DIAMOND 15 /* ======================================================================== */ /* These are the various types of hide players can use to make stuff. */ /* ======================================================================== */ #define HIDE_SQUIRREL 1 #define HIDE_RABBIT 2 #define HIDE_RACCOON 3 #define HIDE_COW 4 #define HIDE_FOX 5 #define HIDE_DEER 6 #define HIDE_BOAR 7 #define HIDE_WOLF 8 #define HIDE_BEAR 9 #define HIDE_CAT 10 #define HIDE_DRAGON 11 /* ======================================================================== */ /* Guarding mobs data. */ /* ======================================================================== */ struct guard_datas { char guarding_door; /* Bits set for each direction guarded */ char guarding_clan; /* FOR this clan - blocks others */ char guarding_sect; /* Guards FOR this sect - blocks others */ int guarding_object; /* When obj is picked up, mob attacks */ int guarding_mob; /* When mob is attacked, this mob assists. */ int assists; /* Mob vnum it assists */ int rescues; /* Mob vnum it rescues */ }; /* ======================================================================== */ /* Optional data for mob_prototypes */ /* ======================================================================== */ struct optional_data { short skltaught[10]; /* Skills this mob teaches */ int guilds; /* What guildmaster is this mob? */ }; /* ======================================================================== */ /* Special procedures for mobs */ /* ======================================================================== */ struct spec_procs { int cast_spells[4]; /* Casts up to spells */ signed char cast_percent; /* Percent he/she will cast a spell */ signed char warrior_percent; /* Percent the mob does warrior stuff */ int summons; /* Mob number this one summons */ int avenger; /* Mob that appears when this one is killed */ int num_avengers; /* How many avengers show up */ int tactics; /* Special things mobs can do */ signed char range; /* Range mob can cast */ signed char area_percent; /* Pct Chance it area spells */ int switches_vnum; /* What this mob switches to */ unsigned char switches_hour; /* What hour this mob switches */ }; /* ======================================================================== */ /* Liquid idea from mortal conquest, and basic compatibility was kept */ /* ======================================================================== */ #define LIQ_WATER 0 #define LIQ_MAX 16 struct liq_type { char *liq_name; char *liq_color; short liq_affect[3]; /* 1=drunk 2=food 3=thirst */ }; /* ======================================================================== */ /* Extra descriptions for objects and rooms! */ /* ======================================================================== */ /*+----------------------------------------------------------------------+*/ /*| Once again.. I detest structure names like extra_descr_data, but for |*/ /*| diku coders' sake, I made it the same as diku since the structure is |*/ /*| the same (I think). I woulda called it edd. |*/ /*+----------------------------------------------------------------------+*/ struct extra_descr_data { DESCRIPTION_DATA *next; char *description; /* The actual extra description */ char *keyword; /* Keyword list to see this desc */ }; /* ======================================================================== */ /* Evil bits to set.. Aturion muds only */ /* ======================================================================== */ #define SUCK_ALL_MANA 1 #define SUCK_HALF_MANA 2 #define REMOVE_ALL_SPELLS 4 #define SUCK_HALF_HITS 8 #define SUCK_HALF_MOVES 16 #define DESTROY_OBJECT 32 #define DESTROY_RANDOM_OBJECT 64 /* ======================================================================== */ /* The main object prototype data! */ /* ======================================================================== */ struct obj_proto_data { OBJ_PROTOTYPE *next; AFFECT_DATA *affected; /* Affected by these extra affects */ AREA_DATA *area; /* Saves in this area */ char *name; /* Keyword list to access object */ char *short_descr; /* Short description "a longsword" */ char *long_descr; /* Description seen when on ground */ char *description; /* Description seen when looked at */ int vnum; /* Object vnum */ char item_type; /* The item type */ char max_in_room; /* Maximum that will pop in 1 room */ short timer; /* Object timer for disappearing objs */ short level; int extra_flags; /* Extra object flags, bonuses, etc */ int wear_flags; /* Where can this be worn? */ int cost; /* Cost of the object */ short count; /* internal use */ short weight; /* Weight of the object */ int value[10]; int aff[4]; /* Gives these affects to wearer when worn. */ char made_of; /* Material made of */ }; /* ======================================================================== */ /* Playerbase data, to finger old chars, player cleanup, etc */ /* ======================================================================== */ struct playerbase_data { PLAYERBASE_DATA *next; char player_name[17]; /* Player's name */ time_t player_last_login; /* Last login date-time stamp */ int player_align; /* What alignment is the player? */ short player_level; /* Current player level */ bool player_nodelete; /* Nodelete flag? */ char email_address[45]; /* Player's email addy */ short player_remort_times; /* Number of remorts the player has */ time_t player_created; /* Time stamp when player created. */ }; /* ======================================================================== */ /* A single object's data. */ /* ======================================================================== */ struct obj_data { signed char data_type; SINGLE_OBJECT *next; SINGLE_OBJECT *next_content;/* Generic 'next'/containers, etc */ SINGLE_OBJECT *contains; /* For containers */ SINGLE_OBJECT *in_obj; /* Inside of object reference */ CHAR_DATA *carried_by; /* Carried by this player */ OBJ_PROTOTYPE *pIndexData; /* Reference to object prototype */ ROOM_DATA *in_room; /* On the ground in this room? */ char *short_descr; /* Short description of the object */ char *long_descr; /* 'On ground' description of the object */ int extra_flags; /* Extra object flags */ int cost; /* Object cost. Change to ref back to proto */ signed char wear_loc; /* Location object is being worn - this is the same as the wear bits now */ unsigned char wear_num; /* The number that this is being worn because of multiple possible arms and legs and things we need to do this. */ short timer; /* Timer on this specific object */ unsigned char size; /* Size of this specific object */ void *more; /* More data.. armor/weapon data, etc */ AFFECT_DATA *affected; /* This lets people enchant objects. */ }; /* ======================================================================== */ /* An exit. Very small for low memory usage. */ /* ======================================================================== */ struct exit_data { int vnum; /* Vnum this exit leads to */ ROOM_DATA *to_room; /* Room data this exit leads to */ DOOR_DATA *d_info; /* Optional door info structure */ }; /* ======================================================================== */ /* Door info structure, optional on exits */ /* ======================================================================== */ struct door_data { unsigned short exit_info; /* Exit flags, mostly compat with diku */ int key; /* Key required to open the door */ char *keyword; /* keyword for exit description */ char *description; /* Exit description */ signed char maxstr; /* Maximum door strength */ signed char str; /* Door strength */ unsigned short rs_flags; /* Reset flags for the room reset */ char trap; /* This is the type of trap on the door */ }; /* ======================================================================== */ /* A single 'reset'. SHOULD be compat with merc.. no promises though. */ /* ======================================================================== */ struct reset_data { RESET_DATA *next; char command; /* command (Object Mob, etc) */ int rs_vnum; /* Reset vnum */ signed char loc; /* Location or amount for shopkeeprs */ char percent; /* Percent chance of pop */ }; /* ======================================================================== */ /* Guild data structure....this is so it is easier to add new guilds. */ /* ======================================================================== */ struct gld_data { char what_you_see[50]; /* Name you see on score */ char what_you_type[50]; /* What you type in to join/leave */ int flag; /* The guild bit */ int stat_modified; /* Which stat is modified based on STR INT WIS DEX CON */ }; /* ======================================================================== */ /* All reset values modelled from mortal conquest/theisles values, as to */ /* allow compatibility in converting areas, if annyone so desires to one */ /* day write the program the converts */ /* ======================================================================== */ #define RESET_LOC_WORN 0 #define RESET_LOC_INOBJ -3 #define RESET_LOC_ONOBJ -4 #define RESET_LOC_INROOM -5 #define RESET_LOC_PREVOBJ -6 /* ======================================================================== */ /* The basic AREA data */ /* ======================================================================== */ struct area_data { AREA_DATA *next; RESET_DATA *reset_first; /* First reset in this area */ char *name; /* Area name */ char *repop; /* Repop message */ char can_quit; /* Can_quit status; quit rules */ short desc_rooms; /* Descripted room count */ short desc_mobs; /* Descripted mob count */ short desc_objs; bool clanzone; /* Is this a clan zone? unused */ bool open; /* Open to mortals? */ int area_flags; /* Area flags, changed, etc */ char *builders; /* Builder list */ int lvnum; /* Lower vnum */ short security; /* Zone security level */ int uvnum; /* Upper vnum */ short nplayer; /* players in area */ char *filename; /* Area filename */ int vnum; /* Vnum of area */ int room_count; /* Rooms in area */ int mob_count; /* Mobs in area */ int obj_count; /* Objs in area */ int x; /* This will be used for the "map" */ int y; /* This will be used for the "map" */ int repop_rate; /* Repop rate in hours */ int power; /* Mob power in the area... */ int repop_counter; /* Current repop counter */ int alignment; /* Which align owns this... 0 = neutral */ ONLINE *lastkiller; /* Who was the last player to kill amob? */ }; /* ======================================================================== */ /* A single room structure */ /* ======================================================================== */ struct room_data { signed char data_type; ROOM_DATA *next; /* Next in hashed room list */ AREA_DATA *area; /* Room this area is in */ EXIT_DATA *exit[MAX_DIR]; /* Exits from this room */ int vnum; /* The room's vnum */ char *name; /* Name of the room */ char *description; /* The room description */ int room_flags; /* Room flags */ int room_flags2; /* More Room flags and dynamic desc flags */ unsigned char light; /* Light value of the room */ unsigned char sector_type; /* The type of sector this room is */ TRACK_DATA *tracks; /* Tracks in this room */ char ibm; /* Overhead mapping information ibm */ char noibm; /* Overhead mapping information noibm */ char color; /* Room color from the color table. */ RESET_DATA *resets; /* Resets in that room... */ SINGLE_OBJECT *contents; /* Object contents of room */ char pcs; /* Player characters in room */ CHAR_DATA *people; /* People list in room */ short coins[MAX_COINS]; DESCRIPTION_DATA *extra_descr; /* Extra descriptions in room */ char trap; /* The type of trap (if any) */ char blood; /* Blood info for room... */ char command_objs; /* number of command obj/mob in room */ }; /*+-----------------------+*/ /*| Is a room descripted? |*/ /*+-----------------------+*/ #define DESCRIPTED(room) ((room->description && room->description[0]!='\0') ) /* ======================================================================== */ /* A single command link */ /* ======================================================================== */ struct cmd_type { char *name; /* Name of the command */ char *help; /* Help text on the command */ DO_COMMAND *do_fun; /* Command executes this function */ short level; /* Minimum level you must be to execute command */ short position; /* Minimum physical position to execute command */ short log; /* Log command status */ COMMAND *next; /* hashed by starting letter */ }; /* ======================================================================== */ /* Social structure compat with theisles.. please note that the way they */ /* are saved/edited dynamically is VERY different!!! */ /* ======================================================================== */ struct social_type { char name[20]; char *char_no_arg; char *others_no_arg; char *char_found; char *others_found; char *vict_found; char *char_not_found; char *char_auto; char *others_auto; SOCIAL *next; SOCIAL *next_hashed; }; /* ======================================================================== */ /* Maximum scrollback for channels, and maximum random pop structures. */ /* ======================================================================== */ #define MAX_SCROLLBACK 30 /* ======================================================================== */ /* Some ideas below from theisles, but I can't guarentee they are exactly */ /* the same! */ /* ======================================================================== */ #define RIDING(ch) ((ch)->fgt ? (ch)->fgt->riding : NULL) #define MOUNTED_BY(ch) ((ch)->fgt ? (ch)->fgt->mounted_by : NULL) #define MASTER(ch) ((ch)->fgt ? (ch)->fgt->master : NULL) #define LEADER(ch) ((ch)->fgt ? (ch)->fgt->leader : NULL) #define LEVEL(ch) (IS_MOB((ch)) ? (ch)->pIndexData->level : (ch)->pcdata->level) #define UMIN(a, b) ((a)<(b) ? (a):(b)) #define UMAX(a, b) ((a)>(b) ? (a):(b)) #define URANGE(a, b, c) ((b)<(a) ? (a):((b)>(c) ? (c) : (b))) #define LOWER(c) ((c)>='A'&&(c)<='Z' ? (c)+'a'-'A' :(c)) #define UPPER(c) ((c)>='a'&&(c)<='z' ? (c)+'A'-'a' :(c)) #define IS_SET(flag, bit) ((flag)&(bit)) #define SET_BIT(var, bit) ((var)|=(bit)) #define REMOVE_BIT(var, bit) ((var)&=~(bit)) #define TOGGLE_BIT(var, bit) ((var)^=(bit)) #define RNAME(ch) (IS_PLAYER((ch)) ? (ch)->pcdata->name : (ch)->pIndexData->name) #define OOSTR(dat, field) (( (dat)->field != NULL \ ? (dat)->field \ : (dat)->pIndexData->field )) #define STRR(dat, field) (( (dat)->field != NULL \ ? (dat)->field \ : (dat)->pIndexData->field )) #define NST(pointer) (pointer == NULL ? "" : pointer) #define MARK( room ) ( SET_BIT( ( room )->room_flags, R_MARK)) #define UNMARK( room ) ( REMOVE_BIT( ( room )->room_flags, R_MARK)) #define IS_MARKED( room ) ( IS_SET( ( room )->room_flags, R_MARK)) #define TOROOM( room, y ) ( ((ROOM_DATA *) ( room )->exit[ ( y ) ]->to_room )) #define IS_CLOSED( room, y ) ( IS_SET( ( room )->exit[( y )]->exit_info, \ EX_CLOSED)) #define VALID_EDGE( room, y ) \ ( ( room )->exit[( y )] && \ ( TOROOM(( room ), ( y ) ) != NULL ) && \ ( !IS_MARKED( TOROOM( ( room ), ( y ) ) ) ) ) /* ======================================================================== */ /* These are the same as found in theisles. Act codes were designed to be */ /* almost exactly the same to allow easier code porting from base to base */ /* ======================================================================== */ #define SEX(ch) (IS_PLAYER((ch)) ? (ch)->pcdata->sex : (ch)->pIndexData->sex) #define HE_SHE(ch) ((SEX((ch)) == SEX_MALE ) ? "he" : \ ( (SEX((ch)) == SEX_FEMALE) ? "she" : "it" ) ) #define HIS_HER(ch) ((SEX((ch)) == SEX_MALE ) ? "his" : \ ( (SEX((ch)) == SEX_FEMALE) ? "her" : "its" ) ) #define HIM_HER(ch) ((SEX((ch)) == SEX_MALE ) ? "him" : \ ( (SEX((ch)) == SEX_FEMALE) ? "her" : "it" ) ) #define IN_SUN(ch) (IS_SUNNY && (ch)->in_room && (!IS_SET((ch)->in_room->room_flags,ROOM_INDOORS))&& ((ch)->in_room->sector_type != SECT_INSIDE) && ((ch)->in_room->sector_type< SECT_CAVE) && !IS_SET((ch)->in_room->room_flags, ROOM_UNDERGROUND)) #define MASTER(ch) ((ch)->fgt ? (ch)->fgt->master : NULL) #define FIGHTING(ch) ((ch)!=NULL ? ((ch)->fgt ? (ch)->fgt->fighting : NULL) : NULL) #define IS_AWAKE(ch) ((ch)->position > POSITION_SLEEPING || (ch)->position<0) #define IS_MOB(ch) (IS_SET((ch)->special,ISMOB)) #define IS_PLAYER(ch) (!IS_SET((ch)->special,ISMOB)) #define IS_IMMORTAL(ch) (LEVEL((ch)) >= LEVEL_IMMORTAL) #define IS_GOD(ch) (LEVEL((ch)) == TOP_LEVEL) #define IS_HURT(ch, sn) ((ch)->aff[0] & (sn)) #define IS_PROT(ch, sn) ((ch)->aff[1] & (sn)) #define IS_AFF(ch, sn) ((ch)->aff[2] & (sn)) #define IS_DET(ch, sn) ((ch)->aff[3] & (sn)) #define IS_AUGMENTED(ch, sn) ((IS_MOB((ch)) ? TRUE : (IS_SET((ch)->pcdata->augments, (sn))))) #define ALIGN(ch) (IS_MOB((ch)) ? (ch)->pIndexData->alignment : (ch)->pcdata->alignment) #define MAP_INROOM (ch) (((ch)->in_room)) /* ======================================================================== */ /* Alignment totally revamped for "kingdoms" code */ /* ======================================================================== */ #define GET_AC(ch) ((ch)->armor - (IS_MOB((ch)) ? 0 : (100 - (ch)->pcdata->nat_armor))) #define IS_OUTSIDE(ch) (!IS_SET((ch)->in_room->room_flags, ROOM_INDOORS) && ch->in_room->sector_type !=SECT_INSIDE && ch->in_room->sector_type < SECT_CAVE) #define WAIT_STATE(ch, npulse) ((ch)->wait = ( ((ch)->position==POSITION_CASTING) ? ((ch)->wait): (UMAX((ch)->wait, (npulse)) ) )) #define STRING_HITS(ch) (percent_hit[ (URANGE(0,(PERCENTAGE((ch)->hit, (ch)->max_hit)),101))/10 ] ) #define STRING_MOVES(ch) (percent_tired[ (URANGE(0,(PERCENTAGE((ch)->move, (ch)->max_move)),101))/10 ] ) #define FIND_EXP(lv, r) (translate(pow.exp_to_level,lv,NULL)) #define DIFF_ALIGN(ch, victim) (ALIGN((ch)) != ALIGN((victim)) && !alliance[ALIGN((ch))][ALIGN((victim))]) #define FIRSTDICE(obj) ( (obj)->pIndexData->value[7] ) #define SECONDDICE(obj) ( (obj)->pIndexData->value[8] ) #define MANANOW(obj) ( ((I_GEM *) (obj)->more)->mana_now ) #define TOPMANA(obj) ( ((I_GEM *) (obj)->more)->max_mana ) #define TOPLEVEL(obj) ( ((I_GEM *) (obj)->more)->max_level ) #define TYPEMANA(obj) ( ((I_GEM*) (obj)->more)->gem_type) #define CHAR_OBJ_SIZE(ch) ( (ch)->height<40 ? 1 : \ ( (ch)->height<55 ? 2 : \ ( (ch)->height<66 ? 3 : \ ( (ch)->height<75 ? 4 : \ ( (ch)->height<88 ? 5 : \ ( (ch)->height<114 ? 6 : 7 ) \ ) \ ) \ ) \ ) \ ) #define SET_OBJ_SIZE(ch,obj) ( (obj)->size = CHAR_OBJ_SIZE(ch) ) #define GET_OBJ_SIZE(ch) ( (obj)->size ) #define OBJ_TOO_BIG(obj,ch) ( (obj)->size > CHAR_OBJ_SIZE(ch) ) #define OBJ_TOO_SMALL(obj,ch) ( (obj)->size < CHAR_OBJ_SIZE(ch) ) #define OBJ_FITABLE(obj) ( (obj)->size == 0 ) #define OBJ_ANYSIZE(obj) ( (obj)->size == 8 ) #define OBJ_FITS(obj,ch) ( ((obj)->size == CHAR_OBJ_SIZE(ch) || \ (obj)->size+1 == CHAR_OBJ_SIZE(ch) || \ (obj)->size-1 == CHAR_OBJ_SIZE(ch) || \ OBJ_ANYSIZE((obj))) ) #define CAN_WEAR(obj, part) (IS_SET((obj)->pIndexData->wear_flags, part)) #define IS_OBJ_STAT(obj, stat) (IS_SET((obj)->pIndexData->extra_flags, stat)) #define IS_IN_MELEE(ch,victim) (!FIGHTING((ch)) || (ch)->position==POSITION_STANDING || (victim)->fgt->attackers[0]==(ch) || (victim)->fgt->attackers[1]==(ch) || (victim)->fgt->attackers[2]==(ch) || (victim)->fgt->attackers[3]==(ch)) #define NOT_WORN( obj ) ((obj)->wear_loc == WEAR_NONE || \ worn_flags[(obj)->wear_loc].flagname == \ ITEM_WEAR_BELT) #define IS_LIT( obj ) ( (obj)->pIndexData->item_type==ITEM_LIGHT && ((I_LIGHT *) (obj)->more)->light_now > 0 && \ IS_SET( ((I_LIGHT *) (obj)->more)->light_lit, LIGHT_LIT) ) #define NAME( ch ) (( IS_PLAYER( ch ) ? (ch)->pcdata->name : ch->pIndexData->short_descr )) #define PERS(ch, looker) (can_see_nextdoor( looker, (ch) ) ? NAME(ch) : "Someone") #define TPERS(ch, looker) (can_see(looker, (ch) ) ? NAME(ch) : "Someone") #define NOTIFY(buf, lvl, tog) ( do_global( buf, lvl, tog | WIZ_NOTIFY ) ) /* ======================================================================== */ /* Old Theisles and MC flag compatability... for the most part */ /* ======================================================================== */ #define AREA_NONE 0 #define SEX_NONE 4 #define AREA_CHANGED 0x00000001 /* Edited */ #define AREA_ADDED 0x00000002 /* New Zone */ #define AREA_CLANZONE 0x00000004 /* CLanzone or not? */ #define AREA_HOMELAND 0x00000008 /* Homeland-no group pk restrict*/ #define AREA_OPEN 0x00000010 /* Is this open or not? */ #define AREA_SECTZONE 0x00000020 /* Is this a secthouse? */ #define AREA_DANGEROUS 0x00000040 /* Is this area more dangerous? */ #define AREA_MORE_RAINY 0x00000080 /* More rainy? */ #define AREA_MORE_DRY 0x00000100 /* Less rainy? */ #define AREA_MORE_FOGGY 0x00000200 /* More fog? */ #define AREA_NO_QUIT 0x00000400 /* True means you can't quit */ #define AREA_NO_TRANS 0x00000800 /* Spells will not get you in/out of the zone */ #define AREA_RAIDABLE 0x00001000 /* this area can be taken over */ #define AREA_NUKE 0x00002000 /* Don't save this area */ #define AREA_TEMPFLAG 0x40000000 /* Temp flag on a society is unset a lot so don't use it for longterm things. */ #define ACT_NONE 0 #define DIR_MAX 6 #define ROOM_NONE 0 #define EXTRA_NONE 0 #define EX_NONE 0 #define ITEM_WEAR_NONE 0 #define ITEM_NONE 0 #define AFFECT_NONE 0 #define SPELL_HASH 204 #define LOG_ALWAYS 0 #define LOG_NEVER 1 #define LOG_NORMAL 2 /* ======================================================================== */ /* Allows for module interface without 'command' recompile!!!!!!!! */ /* ======================================================================== */ #ifdef WINDOWS #define DEFINE_COMMAND(chars,function,pos,lvl,loglvl,help) \ static bool dun=FALSE; \ if (!dun) { \ add_to_list((chars),(function),(pos),(lvl),(loglvl),(help)); \ dun=TRUE; return; \ } \ strcpy(cl,(chars)); strcat(cl,":"); \ if (ch) { \ strcat(cl,NAME(ch)); \ } \ if (argy) {strcat(cl,":");strcat(cl,argy);} #else #define DEFINE_COMMAND(chars,function,pos,lvl,loglvl,help) static bool dun=FALSE; \ if (!dun) { \ add_to_list((chars),(function),(pos),(lvl),(loglvl),(help)); \ dun=TRUE; return; \ } /* strcpy(cl,(chars)); strcat(cl,":"); \ if (ch) { \ strcat(cl,NAME(ch)); \ if (argy) { \ strcat(cl,":"); \ strcat(cl,argy); \ } \ if (ch->in_room) strcat(cl,itoa(ch->in_room->vnum)); \ else strcat(cl,"NULLROOM"); \ } */ #endif /* #define MARK_DEBUG(chars) strcpy(cl,(chars)); #define MARK_CHAR_DEBUG(chars,ch) \ strcpy(cl,(chars)); strcat(cl,":"); \ if (ch) {strcat(cl,NAME(ch)); strcat(cl,":");} */ #define MARK_DEBUG(c) #define MARK_CHAR_DEBUG(c,ch) /* ======================================================================== */ /* Short configurability macros!! */ /* ======================================================================== */ /* #define ALLOW_WHERE */ #define CAN_DROP_ITEMS_IN_ARENA(yn) if ( !(yn) && CHALLENGE(ch)==10) {send_to_char("You may not drop anything in the arena.\n\r",ch); return;} #define CAN_GIVE_ITEMS_IN_ARENA(yn) if ( !(yn) && CHALLENGE(ch)==10) {send_to_char("You may not give anything to anyone in the arena.\n\r",ch); return;} #define CAN_DROP_ITEMS_IN_BGROUND(yn) if ( !(yn) && IN_BATTLE(ch)) {send_to_char("You may not drop items in the battleground.\n\r",ch); return;} #define CAN_GIVE_ITEMS_IN_BGROUND(yn) if ( !(yn) && IN_BATTLE(ch)) {send_to_char("You may not give annything to anyone inn the battleground.\n\r",ch); return;} #define BUILDERS_CAN_GIVE(yn) if ( !(yn) && IS_PLAYER(ch) && ch->pcdata->level>99 && ch->pcdata->level<110 ) {send_to_char("Builders cannot use the 'give' command, sorry.\n\r",ch); return;} #define CAN_FILL_LIGHT_WHILE_LIT(yn) if ( !(yn) && IS_SET(lg->light_lit, LIGHT_LIT) ) {send_to_char("That's not a very good idea when it's lit...\n\r",ch); return;} #define ALLOW_UNMOTIVATED_PK(yn) return TRUE; #define PLAYERS_DONT_GET_A_CORPSE(yn) if ( (yn) && IS_PLAYER(ch) ) /* ======================================================================== */ /* OF INTEREST TO SCRIPTWRITERS, SEE ALSO script.doc!!! */ /* ======================================================================== */ #define STOP_FIGHTING(ch) ( stop_fighting( (ch), FALSE ) ) #define STOP_BOTH_FIGHTING(ch) ( stop_fighting( (ch), TRUE ) ) #define STOP_ALL_IN_ROOM_FIGHTING(ch) ( do_peace( (ch), "") ) #define START_FIGHTING(ch, opponent) ( multi_hit( (ch), (opponent), TYPE_UNDEFINED) ) #define FLEE(ch) ( do_flee( (ch), "") ) #define DELAY_CHAR(ch, val) ( (ch)->wait+=(val) ) #define DSAY(n, ch, text) MARK_CHUNK((n)){do_say((ch),(text));DELAY_SCRIPT(2);} #define SAY(ch, text) ( do_say( (ch), (text) ) ) #define DO_TELL(ch, recipient, text) sprintf(tmpt,"%s %s", NAME( (recipient) ), (text)); do_tell( (ch), tmpt ) #define TELL(ch, recipient, text) sprintf(tmpt,"%s %s", NAME( (recipient) ), (text)); do_tell( (ch), tmpt ) #define DTELL(n, ch, recipient, text) MARK_CHUNK((n)){TELL((ch),(recipient),(text));DELAY_SCRIPT(2);} #define SOCIAL_TO(ch, to, social) sprintf(tmpt,"%s %s", (social), NAME( (to) )); interpret( (ch), tmpt ) #define SOCIAL(ch, social) interpret( (ch), (social) ) #define SET(thing,value) ( (thing) = (value) ) #define ONE_COMBAT_ROUND ( 3 ) #define ONE_SECOND ( 1 ) #define WORKS_ON_MOBS_ONLY if (IS_PLAYER(ch)) return #define WORKS_ON_PLAYERS_ONLY if (IS_MOB(ch)) return #define INTEGER(name) static int (name) #define TEMPSTRING(name) char (name)[512] #define STRING(name) static char (name)[1024] #define OBJECT(name) static SINGLE_OBJECT (name) #define PLAYER(name) static CHAR_DATA (name) #define MOB(name) static CHAR_DATA (name) #define WRITELN(text,ch) send_to_char((text),(ch)); send_to_char("\n\r",(ch)) #define WRITE(text,ch) send_to_char((text),(ch)) #define SHOW_TO_ROOM(text,ch) do_recho( (ch), (text) ) #define SHOW_TO_OTHERS(text,ch) act((text),mob,NULL,ch,TO_NOTVICT) #define EXECUTE_COMMAND(ch,text) interpret( (ch), (text) ) #define TEMPFLAG(num) (ch->pcdata->tempflag[(num)]) #define FLAG(num) (ch->pcdata->complete[(num)]) #define DESTROY(ch,vnum) do_destroy( (ch), (vnum) ) #define NUM(str) (atoi((str))) #define AWARDXP(ch,amt) sprintf(tmpt,"pset %s addxp %d", NAME( (ch) ), (amt)); interpret( findmob(), tmpt ) #define COINS(ch,amt) sprintf(tmpt,"coins %d", (amt) ); interpret(ch,tmpt) #define GIVECOINS(from,ch,amt) sprintf(tmpt,"give %s %s", (amt), capitalize(NAME( (ch) )) ); interpret(from,tmpt) #define GIVEITEM(from,to,item) sprintf(tmpt,"give %s %s",(item), NAME( (to) )); interpret(from,tmpt) #define CONTAINS(looking,str) (!str_infix( (looking), (str) ) ) #define AWARDSKILL(ch,skill,amt) sprintf(tmpt,"award %s '%s' %d",NAME( (ch) ), (skill), (amt) ); interpret(findmob(), tmpt ) #define RAND(min,max) ( number_range( (min), (max) ) ) #define IS_WINTER ((time_info.month<=3 || time_info.month>19)) #define IS_SPRING ((time_info.month>3 && time_info.month<=7)) #define IS_SUMMER ((time_info.month>7 && time_info.month<=12)) #define IS_AUTUMN ((time_info.month>12 && time_info.month<=19)) #define IS_RAINING ((weather_info.sky==SKY_RAINING)) #define IS_CLEARSKY ((weather_info.sky==SKY_CLOUDLESS)) #define IS_CLOUDY ((weather_info.sky==SKY_CLOUDY)) #define IS_STORM ((weather_info.sky==SKY_LIGHTNING)) #define IS_NIGHT (weather_info.sunlight == SUN_DARK) #define IS_DAY (!IS_NIGHT) #define IS_SUNNY (weather_info.sky == SKY_CLOUDLESS && weather_info.sunlight > SUN_DARK) /* ======================================================================== */ /* Utility Defines */ /* ======================================================================== */ /*+--------------------------------------------------------------------+*/ /*| With loop, 'next' argument must be like "obj->next", or "obj_next" |*/ /*| Example: LOOP(ch,char_list,ch->next) { blah } |*/ /*+--------------------------------------------------------------------+*/ #define LOOP(thing,initial,next) for ((thing)=(initial);(thing)!=NULL;(thing)=(next)) /* ======================================================================== */ /* For timing; defines */ /* ======================================================================== */ #define FIGHT_LOOP 0 #define CHAR_ONLY_UPD 1 #define MOBILE_UPD 2 #define FIGHT_UPD 3 #define TRANSPORT_UPD 4 #define CHAR_UPDATE 5 #define OBJ_UPDATE 6 #define AGGRO_UPDATE 7 #define INTERPRETTED 8 #define SCRIPT_INT 9 #define ALL_UPD 10 #define MT 20 /* ======================================================================== */ /* All globals below!! */ /* ======================================================================== */ extern long average_time[MT]; extern long times_through[MT]; extern long total_time[MT]; extern long temp_time[MT]; extern long this_time[MT]; extern bool hitop; extern bool used_flash; extern bool actually_doing; extern int multi_hit_damage; extern int multi_hit_times; extern bool victim_is_dead; extern char *old_string_space; extern char *help_greeting; extern char *help_motd; extern int areas_controlled[NUM_ALIGN]; extern int max_area_power[NUM_ALIGN]; extern char *string_space; extern char *top_string; extern bool wpn_broke; extern bool being_attacked_yell; extern bool big_group_pkill_whore; extern char commandlog[500]; extern char prev_out[STD_LENGTH]; extern char last_out[STD_LENGTH]; extern int main_control; extern int affect_count; extern int roll_values[NUM_ROLLS][6][NUM_STATS][2]; /* 4 steps, 6 letter choices for each stat, lower and upper bounds for each stat..makes editing easier :) it looks ugly but its not so bad. */ extern bool kk; extern bool noibm; extern bool mb; extern bool dbs; extern int raidable; extern int entlab; extern SOCIAL *social_list; extern SOCIAL *social_hashed[255]; extern int outgoing[5]; extern char connection_names[5][5]; extern char *chan[NUM_ALIGN][30][MAX_SCROLLBACK]; extern short chan_count[NUM_ALIGN][30]; extern unsigned short resist_costs[]; extern bool supress_prompt_newline; extern bool allow_anything; extern bool alliance[NUM_ALIGN][NUM_ALIGN]; extern char grep[500]; extern int scrn[80][25][9]; extern int total_fgt; extern BANK_ITEM align_bank[NUM_ALIGN]; extern BANK_ITEM clan_bank[30]; extern FILE *plrchecker; extern FILE *corpsefile; extern CHAR_DATA *f_first; extern SOCIETY_DATA *society_list; extern int top_society; extern SINGLE_OBJECT *bg_prize[MAX_NUM_BG_PRIZES]; extern CHAR_DATA *aggro_check; extern int ti; extern bool oldflag; extern DAM_MSG dmsg; extern POWER pow; extern SHELL *shell_first; extern bool fLogAll; extern CHANNEL *chan_first; extern bool wwrap; extern char *ascii_score; extern char *score; extern char *sh_score; extern char *info; extern char reasonfd[30]; extern CHAR_DATA *last_pkiller; extern TO_FREE *head; extern bool is_equipwipe; extern CHR_FUNCTION *cf; extern int room_chunk; extern int obj_chunk; extern int mob_chunk; extern char tmpt[2048]; extern bool quit_flag; extern bool pet_flag; extern bool got; extern char hugebuf_o[70000]; extern bool refresh_oldchars; extern int current_vnum; extern bool builder_port; extern AREA_DATA *saving; extern bool area_spell; extern int max_connected; extern short top_temp; extern bool translate_on; extern short combat_state; extern PERCENT_STRUCT prcnt; extern DAM_STRUCT damt; extern long chars_sent; extern bool setskills; extern bool state_var_1; extern char *target_name; extern bool fBootDb; extern int meg_sent; extern CHAR_DATA *pedit_found; extern char outp[80][25]; extern char colrs[80][25]; extern int area_this_reboot; extern int pulse_timer; extern int min_level; extern int max_level; extern char max_remort_times[NUM_ALIGN]; extern long day_counter; extern int cons_damage; extern char *const color_name[]; extern char *const dist_name[]; extern char *const percent_ded[]; extern int top_vnum_room; extern int arena_timelimit; extern REALCHAR_DATA base_pc; extern PLAYERBASE_DATA *playerbase_zero; extern ITEM_CHECK itemcheck; extern char condition_var[500]; extern int ticks_to_reboot; extern int ticks_to_battlefield; extern bool changed_spells; extern bool changed_societies; extern const char *position_name[MAX_POSITIONS]; extern BID_DATA biddata; extern RANK_DATA ranking_data[MAX_RANKING_DATA][RANKING_INFO]; extern bool detect_opp_align; extern char tracking_string[SML_LENGTH]; extern CLAN_DATA *clan_index_free_2; extern CLAN_DATA *clan_index_free; extern bool scan_now; extern AUCTION *auction_list; extern int auction_number; extern int gsn_build; extern int gsn_alchemy; extern int gsn_ranged; extern int gsn_unarmed_combat; extern int gsn_double_backstab; extern int gsn_double_circle; extern int gsn_double_cast; extern int gsn_shoot; extern int gsn_fire; extern int gsn_throw; extern int gsn_chop; extern int gsn_enchant; extern int gsn_empower; extern int gsn_weave; extern int gsn_stitch; extern int gsn_mine; extern int gsn_destroy; extern int gsn_skin; extern int gsn_tanning; extern int gsn_patch; extern int gsn_detrap; extern int gsn_locate_trap; extern int gsn_awareness; extern int gsn_block; extern int gsn_flail; extern int gsn_critical; extern int gsn_guard; extern int gsn_warcry; extern int gsn_invest; extern int gsn_riding; extern int gsn_backstab; extern int gsn_penetration; extern int gsn_grapple; extern int gsn_swim; extern int gsn_butcher; extern int gsn_dodge; extern int gsn_enhanced_dodge; extern int gsn_riposte; extern int gsn_shieldbash; extern int gsn_hide; extern int gsn_peek; extern int gsn_pick_lock; extern int gsn_sneak; extern int gsn_steal; extern int gsn_bash; extern int gsn_track; extern int gsn_trapset; extern int gsn_circle; extern int gsn_fireshield; extern int gsn_gasshield; extern int gsn_windshield; extern int gsn_acidshield; extern int gsn_chaosshield; extern int gsn_shardshield; extern int gsn_shockshield; extern int gsn_iceshield; extern int gsn_sixth_sense; extern int gsn_disarm; extern int gsn_enhanced_damage; extern int gsn_enhanced_damage_two; extern int gsn_resilience; extern int gsn_accuracy; extern int gsn_kick; extern int gsn_double_kick; extern int gsn_smash; extern int gsn_impale; extern int gsn_flurry; extern int gsn_tackle; extern int gsn_flash; extern int gsn_parry; extern int gsn_blink; extern int gsn_steadiness; extern int gsn_shield_block; extern int gsn_rescue; extern int gsn_second_attack; extern int gsn_third_attack; extern int gsn_dual_wield; extern int gsn_dual_second; extern int gsn_dual_third; extern int gsn_fourth_attack; extern int gsn_fifth_attack; extern int gsn_pierce; extern int gsn_light_slash; extern int gsn_concussion; extern int gsn_polearm; extern int gsn_whip; extern int gsn_heavy_slash; extern int gsn_slashing; extern int gsn_search; extern int gsn_forge; extern int gsn_graft; extern int gsn_brew; extern int gsn_lore; extern int gsn_blindness; extern int gsn_spell_reflect; extern int gsn_chameleon; extern int gsn_charm_person; extern int gsn_curse; extern int gsn_invis; extern int gsn_poison; extern int gsn_sleep; extern int gsn_plague; extern int gsn_paralyze; /* JRAJRA */ extern int gsn_wound; /* JRAJRA */ extern int gsn_confuse; /* JRAJRA */ extern int gsn_lethargy; /* JRAJRA */ extern int gsn_mindsap; /* JRAJRA */ extern char yellbuff[1000]; extern const struct attack_type attack_table[]; extern const struct liq_type liq_table[]; extern char *const dir_name[]; extern char *const dir_letter[]; extern const short rev_dir[]; extern const int blood_number[]; extern char reasonone[30]; extern HELP_DATA *help_first; extern HELP_DATA *help_last; extern SHOP_DATA *shop_first; extern SHOP_DATA *shop_last; extern TEMP_STR *temp_first; extern TEMP_STR *temp_free; extern BAN_DATA *ban_list; extern CHAR_DATA *char_list[TOTAL_LIST + 1]; extern SPELL_DATA *spell_list[SPELL_HASH]; extern SPELL_DATA *spell_list_2[SPELL_HASH]; extern int top_spell; extern DESCRIPTOR_DATA *descriptor_list; extern NOTE_DATA *note_list; extern SINGLE_OBJECT *object_list[2]; /* One for updated objects, one for static */ extern AFFECT_DATA *affect_free; extern RESET_DATA *reset_free; extern BAN_DATA *ban_free; extern CHAR_DATA *char_free; extern DESCRIPTOR_DATA *descriptor_free; extern DESCRIPTION_DATA *extra_descr_free; extern NOTE_DATA *note_free; extern SINGLE_OBJECT *obj_free; extern REALCHAR_DATA *pcdata_free; extern MOB_DATA *npcdata_free; extern char bug_buf[]; extern time_t current_time; extern time_t startup_time; extern bool fLogAll; //extern FILE *fpReserve; extern char log_buf[]; extern TIME_INFO_DATA time_info; extern WEATHER_DATA weather_info; extern MOB_PROTOTYPE *mob_index_hash[HASH_MAX]; extern OBJ_PROTOTYPE *obj_index_hash[HASH_MAX]; extern ROOM_DATA *room_hash[HASH_MAX]; extern CLAN_DATA *clan_index_hash[20]; extern CLAN_DATA *clan_index_hash_2[20]; extern char *string_hash[HASH_MAX]; extern AREA_DATA *area_first; extern AREA_DATA *area_last; extern ONLINE *been_online; /* JRAJRA - been online checker list */ extern int top_affect; extern int top_area; extern int top_ed; extern int top_exit; extern int top_help; extern int top_clan; extern int top_clan_2; extern int top_mob_index; extern int top_obj_index; extern int top_reset; extern int top_room; extern int top_shop; extern DESCRIPTOR_DATA *connectiond[5]; extern int top_vnum_mob; extern int top_vnum_obj; extern int top_vnum_room; extern bool notracks; extern char str_empty[1]; extern bool consid; extern int consider_damage; /* ======================================================================== */ /* All functions below */ /* ======================================================================== */ void remove_from_fighting_list (CHAR_DATA *); void clear_fgt (CHAR_DATA *); SOCIAL * new_social (void); bool one_is_in_list_two (char *, char *); bool one_is_of_two (char *, char *); bool check_shields (CHAR_DATA *, CHAR_DATA *); bool check_tactics (CHAR_DATA *, CHAR_DATA *); void load_random_pops(void); void load_new_socials(void); void show_social (SOCIAL *, CHAR_DATA *); void social_update_hash(void); void xprereq (CHAR_DATA *, SPELL_DATA *); void save_new_socials (void); void save_helps (void); void clear_auction(AUCTION *); void auction_update (void); bool replace_mob (CHAR_DATA *, int); void menu_interp(CHAR_DATA *,char *); void check_background_processes(void); void save_char_tro(CHAR_DATA *); void view_scriptassoc (CHAR_DATA *, char *); void do_quests (CHAR_DATA *, char *); void do_resistance (CHAR_DATA *, char *); void reset_data (void); void go_display(CHAR_DATA *, ROOM_DATA *, int, int, int, int); void draw_data (CHAR_DATA *, int); void draw_small (CHAR_DATA *); void sml_noibm(CHAR_DATA *, ROOM_DATA *, int, int); void sml_ibm (CHAR_DATA *, ROOM_DATA *, int, int); void save_code (void); void save_triggers (void); char *show_guilds (CHAR_DATA *); void do_spico_help (CHAR_DATA *, char *); void do_shell (CHAR_DATA *, char *); void show_questflags (CHAR_DATA *, char *); void debug (CHAR_DATA *, char *); void online_coding (CHAR_DATA *, char *); void list_code (CHAR_DATA *, char *); void do_build (CHAR_DATA *, char *); void do_alchemy (CHAR_DATA *, char *); void do_chop (CHAR_DATA *, char *); void list_triggers (CHAR_DATA *, char *); void script_editor (CHAR_DATA *, char *); void do_seize (CHAR_DATA *, char *); void do_mat (CHAR_DATA *, char *); void do_soc_edit (CHAR_DATA *, char *); void z_areachange (CHAR_DATA *, char *); void do_setmiw (CHAR_DATA *, char *); void relocate_objs (CHAR_DATA *, char *); void relocate_mobs (CHAR_DATA *, char *); void relocate_all_areas (CHAR_DATA *, char *); void do_augment (CHAR_DATA *, char *); void do_ocopy (CHAR_DATA *, char *); void do_mcopy (CHAR_DATA *, char *); void do_rcopy (CHAR_DATA *, char *); void decode (CHAR_DATA *, char *); void compare (CHAR_DATA *, char *); void do_repop (CHAR_DATA *, char *); void clean_oldchars (CHAR_DATA *, char *); void clean_up (CHAR_DATA *, char *); void p_refresh (CHAR_DATA *, char *); void reload_pbase (CHAR_DATA *, char *); void replace (CHAR_DATA *, char *); void grab_hostnames (CHAR_DATA *, char *); void reload_power_dat (CHAR_DATA *, char *); void do_dir (CHAR_DATA *, char *); void create_standards (CHAR_DATA *, char *); void do_impale (CHAR_DATA *, char *); void do_flash (CHAR_DATA *, char *); void do_bs (CHAR_DATA *, char *); void do_cedit2 (CHAR_DATA *, char *); void do_say2 (CHAR_DATA *, char *); void do_emote2 (CHAR_DATA *, char *); void do_gtell2 (CHAR_DATA *, char *); void finger (CHAR_DATA *, char *); void do_color (CHAR_DATA *, char *); void do_eeffect (CHAR_DATA *, char *); void do_vscore (CHAR_DATA *, char *); void do_quickscore2 (CHAR_DATA *, char *); void do_take (CHAR_DATA *, char *); void do_swap (CHAR_DATA *, char *); void do_wield (CHAR_DATA *, char *); void do_hold (CHAR_DATA *, char *); void do_bury (CHAR_DATA *, char *); void do_read (CHAR_DATA *, char *); void do_clan_2 (CHAR_DATA *, char *); void do_answer (CHAR_DATA *, char *); void do_mplay (CHAR_DATA *, char *); void do_sing (CHAR_DATA *, char *); void do_flail (CHAR_DATA *, char *); void do_investigate (CHAR_DATA *, char *); void do_mobscatter (CHAR_DATA *, char *); void do_scatter (CHAR_DATA *, char *); void relocate_area (CHAR_DATA *, char *); void relocate_rooms (CHAR_DATA *, char *); void do_reload_help (CHAR_DATA *, char *); void do_gic (CHAR_DATA *, char *); void do_eic (CHAR_DATA *, char *); void do_ic (CHAR_DATA *, char *); void do_list_done_quests (CHAR_DATA *, char *); void do_drag (CHAR_DATA *, char *); void do_hitch (CHAR_DATA *, char *); void do_unhitch (CHAR_DATA *, char *); void do_pull (CHAR_DATA *, char *); void do_beat (CHAR_DATA *, char *); void do_yes (CHAR_DATA *, char *); void do_dam (CHAR_DATA *, char *); void do_beep (CHAR_DATA *, char *); void do_levels (CHAR_DATA *, char *); void disengage (CHAR_DATA *, char *); void do_disembark (CHAR_DATA *, char *); void do_board (CHAR_DATA *, char *); void drawit (CHAR_DATA *, char *); void do_drawmort (CHAR_DATA *, char *); void do_drawmini (CHAR_DATA *, char *); void do_drawtop (CHAR_DATA *, char *); void do_drawrooms (CHAR_DATA *, char *); void do_resize (CHAR_DATA *, char *); void clean_blank_rooms (CHAR_DATA *, char *); void do_setlevels (CHAR_DATA *, char *); void do_battleground (CHAR_DATA *, char *); void do_clanbuy (CHAR_DATA *, char *); void do_purgearea (CHAR_DATA *, char *); void do_mreset (CHAR_DATA *, char *); void do_oreset (CHAR_DATA *, char *); void do_topkiller (CHAR_DATA *, char *); void do_rating (CHAR_DATA *, char *); void do_ranking (CHAR_DATA *, char *); void do_clanstore (CHAR_DATA *, char *); void do_prereqs (CHAR_DATA *, char *); void do_clanunstore (CHAR_DATA *, char *); void do_store (CHAR_DATA *, char *); void do_unstore (CHAR_DATA *, char *); void do_world (CHAR_DATA *, char *); void do_preset (CHAR_DATA *, char *); void do_trophy (CHAR_DATA *, char *); void do_cadd (CHAR_DATA *, char *); void do_butcher (CHAR_DATA *, char *); void do_scan (CHAR_DATA *, char *); void do_silentscan (CHAR_DATA *, int); void do_cremove (CHAR_DATA *, char *); void do_clan (CHAR_DATA *, char *); void do_clan_notify (CHAR_DATA *, char *); void do_clantalk (CHAR_DATA *, char *); void do_tackle (CHAR_DATA *, char *); void do_repair (CHAR_DATA *, char *); void do_guild (CHAR_DATA *, char *); void show_guild_costs(CHAR_DATA *, char*); void show_augment_costs(CHAR_DATA *, char*); void mob_act_bits (CHAR_DATA *, char *); void show_augment_list(CHAR_DATA *, char*); void show_affect_list(CHAR_DATA *, char*); void show_affect_list2(CHAR_DATA *, char*); void check_stats (CHAR_DATA *); int check_group_pts (CHAR_DATA *); int get_num_augments(CHAR_DATA *); int get_num_guilds (CHAR_DATA *); int get_num_followers (CHAR_DATA *); void check_char_fight_init (CHAR_DATA *, CHAR_DATA *); void try_prompt (char *, CHAR_DATA *); int get_guild_num(CHAR_DATA *); void do_clear (CHAR_DATA *, char *); void do_skill (CHAR_DATA *, char *); void do_flurry (CHAR_DATA *, char *); void syslag (CHAR_DATA *, char *); void do_delete (CHAR_DATA *, char *); void do_empty (CHAR_DATA *, char *); void do_bid (CHAR_DATA *, char *); void do_surrender (CHAR_DATA *, char *); void do_bbounty (CHAR_DATA *, char *); void do_2forward (CHAR_DATA *, char *); void do_2backward (CHAR_DATA *, char *); void do_forward (CHAR_DATA *, char *); void do_backward (CHAR_DATA *, char *); void do_exchange (CHAR_DATA *, char *); void do_meditate (CHAR_DATA *, char *); void do_bash (CHAR_DATA *, char *); void do_coins (CHAR_DATA *, char *); void do_ansi (CHAR_DATA *, char *); void do_fight (CHAR_DATA *, char *); void do_fire (CHAR_DATA *, char *); void do_advance (CHAR_DATA *, char *); void do_areas (CHAR_DATA *, char *); void do_at (CHAR_DATA *, char *); void do_tauction (CHAR_DATA *, char *); void do_break (CHAR_DATA *, char *); void do_alias (CHAR_DATA *, char *); void do_auto (CHAR_DATA *, char *); void do_autosac (CHAR_DATA *, char *); void do_assist (CHAR_DATA *, char *); void do_autosplit (CHAR_DATA *, char *); void do_autoloot (CHAR_DATA *, char *); void do_autoblink (CHAR_DATA *, char *); void do_autoscan (CHAR_DATA *, char *); void do_autoexit (CHAR_DATA *, char *); void do_autoassist (CHAR_DATA *, char *); void do_autogold (CHAR_DATA *, char *); void do_backstab (CHAR_DATA *, char *); void do_circle (CHAR_DATA *, char *); void do_citymap (CHAR_DATA *, char *); void do_beamin (CHAR_DATA *, char *); void do_beamout (CHAR_DATA *, char *); void do_ban (CHAR_DATA *, char *); void do_blank (CHAR_DATA *, char *); void do_bounty (CHAR_DATA *, char *); void do_brief (CHAR_DATA *, char *); void do_brandish (CHAR_DATA *, char *); void do_buck (CHAR_DATA *, char *); void do_buy (CHAR_DATA *, char *); void do_cast (CHAR_DATA *, char *); void do_new_cast (CHAR_DATA *, char *); void do_unload(CHAR_DATA *, char *); void do_load (CHAR_DATA *, char *); void do_shoot (CHAR_DATA *, char *); void do_channels (CHAR_DATA *, char *); void do_gen_gos (CHAR_DATA *, char *); void do_chat (CHAR_DATA *, char *); void do_climb (CHAR_DATA *, char *); void do_close (CHAR_DATA *, char *); void do_commands (CHAR_DATA *, char *); void do_compare (CHAR_DATA *, char *); void do_config (CHAR_DATA *, char *); void do_consider (CHAR_DATA *, char *); void do_group_consider (CHAR_DATA *, char *); void do_count (CHAR_DATA *, char *); void do_credits (CHAR_DATA *, char *); void do_deny (CHAR_DATA *, char *); void do_description (CHAR_DATA *, char *); void do_disarm (CHAR_DATA *, char *); void do_disconnect (CHAR_DATA *, char *); void do_dismount (CHAR_DATA *, char *); void do_down (CHAR_DATA *, char *); void do_draw (CHAR_DATA *, char *); void do_drink (CHAR_DATA *, char *); void do_drop (CHAR_DATA *, char *); void do_east (CHAR_DATA *, char *); void do_eat (CHAR_DATA *, char *); void do_echo (CHAR_DATA *, char *); void do_emote (CHAR_DATA *, char *); void do_enter (CHAR_DATA *, char *); void do_equipment (CHAR_DATA *, char *); void do_examine (CHAR_DATA *, char *); void do_extinguish (CHAR_DATA *, char *); void do_fill (CHAR_DATA *, char *); void do_flee (CHAR_DATA *, char *); void do_fly (CHAR_DATA *, char *); void do_follow (CHAR_DATA *, char *); void do_sforce (CHAR_DATA *, char *); void do_force (CHAR_DATA *, char *); void do_freeze (CHAR_DATA *, char *); void do_noclan (CHAR_DATA *, char *); void do_lamer (CHAR_DATA *, char *); void do_shitlist (CHAR_DATA *, char *); void do_finger (CHAR_DATA *, char *); void do_get (CHAR_DATA *, char *); void do_give (CHAR_DATA *, char *); void do_godtalk (CHAR_DATA *, char *); void do_goto (CHAR_DATA *, char *); void do_group (CHAR_DATA *, char *); void do_gtell (CHAR_DATA *, char *); void do_help (CHAR_DATA *, char *); void show_help_text (CHAR_DATA *, char *); void do_events (CHAR_DATA *, char *); void do_news (CHAR_DATA *, char *); void do_changes (CHAR_DATA *, char *); void do_hide (CHAR_DATA *, char *); void do_hire (CHAR_DATA *, char *); void do_rawclear (CHAR_DATA *); void do_holypeace (CHAR_DATA *, char *); void do_mapping (CHAR_DATA *, char *); void do_mapspam (CHAR_DATA *, char *); void do_noibm (CHAR_DATA *, char *); void do_viewmobs (CHAR_DATA *, char *); void do_viewplayers (CHAR_DATA *, char *); void do_holylag (CHAR_DATA *, char *); void do_holyear (CHAR_DATA *, char *); void do_holylight (CHAR_DATA *, char *); void do_holywalk (CHAR_DATA *, char *); void do_idea (CHAR_DATA *, char *); void do_immtalk (CHAR_DATA *, char *); void do_inventory (CHAR_DATA *, char *); void do_invis (CHAR_DATA *, char *); void do_kick (CHAR_DATA *, char *); void do_raceinfo (CHAR_DATA *, char *); void do_alignmentinfo (CHAR_DATA *, char *); void do_kill (CHAR_DATA *, char *); void do_language (CHAR_DATA *, char *); void do_learn (CHAR_DATA *, char *); void do_unlearn (CHAR_DATA *, char *); void do_levels (CHAR_DATA *, char *); void do_list (CHAR_DATA *, char *); void do_light (CHAR_DATA *, char *); void do_lock (CHAR_DATA *, char *); void do_log (CHAR_DATA *, char *); void do_memory (CHAR_DATA *, char *); void do_mfind (CHAR_DATA *, char *); void do_mload (CHAR_DATA *, char *); void do_mount (CHAR_DATA *, char *); void do_mset (CHAR_DATA *, char *); void do_mstat (CHAR_DATA *, char *); void do_mwhere (CHAR_DATA *, char *); void do_murde (CHAR_DATA *, char *); void do_murder (CHAR_DATA *, char *); void do_pray (CHAR_DATA *, char *); void do_fix (CHAR_DATA *, char *); void do_throw (CHAR_DATA *, char *); void do_noemote (CHAR_DATA *, char *); void do_north (CHAR_DATA *, char *); void do_note (CHAR_DATA *, char *); void do_notell (CHAR_DATA *, char *); void do_notify (CHAR_DATA *, char *); void do_ofind (CHAR_DATA *, char *); void do_oload (CHAR_DATA *, char *); void do_open (CHAR_DATA *, char *); void do_order (CHAR_DATA *, char *); void do_oset (CHAR_DATA *, char *); void do_ostat (CHAR_DATA *, char *); void do_owhere (CHAR_DATA *, char *); void do_pagelen (CHAR_DATA *, char *); void do_password (CHAR_DATA *, char *); void no_spam (CHAR_DATA *, char *); void spam (CHAR_DATA *, char *); void do_glance (CHAR_DATA *, char *); void do_prompt (CHAR_DATA *, char *); void do_peace (CHAR_DATA *, char *); void do_pick (CHAR_DATA *, char *); void do_practice (CHAR_DATA *, char *); void do_pset (CHAR_DATA *, char *); void do_pstat (CHAR_DATA *, char *); void do_purge (CHAR_DATA *, char *); void do_put (CHAR_DATA *, char *); void do_quaff (CHAR_DATA *, char *); void do_quit (CHAR_DATA *, char *); void do_reboo (CHAR_DATA *, char *); void do_reboot (CHAR_DATA *, char *); void do_recall (CHAR_DATA *, char *); void do_recho (CHAR_DATA *, char *); void do_recite (CHAR_DATA *, char *); void do_remove (CHAR_DATA *, char *); void do_rent (CHAR_DATA *, char *); void do_reply (CHAR_DATA *, char *); void do_report (CHAR_DATA *, char *); void do_rescue (CHAR_DATA *, char *); void do_guard (CHAR_DATA *, char *); void do_rest (CHAR_DATA *, char *); void do_return (CHAR_DATA *, char *); void do_rfind (CHAR_DATA *, char *); void do_rstat (CHAR_DATA *, char *); void do_run (CHAR_DATA *, char *); void do_unguard (CHAR_DATA *, char *); void do_sacrifice (CHAR_DATA *, char *); void do_control (CHAR_DATA *, char *); void do_save (CHAR_DATA *, char *); void do_say (CHAR_DATA *, char *); void do_quickscore (CHAR_DATA *, char *); void do_purse (CHAR_DATA *, char *); void do_score (CHAR_DATA *, char *); void do_info (CHAR_DATA *, char *); void do_affect (CHAR_DATA *, char *); void do_search (CHAR_DATA *, char *); void do_think (CHAR_DATA *, char *); void do_sell (CHAR_DATA *, char *); void do_sheath (CHAR_DATA *, char *); void do_shout (CHAR_DATA *, char *); void do_shutdow (CHAR_DATA *, char *); void do_shutdown (CHAR_DATA *, char *); void do_silence (CHAR_DATA *, char *); void do_sit (CHAR_DATA *, char *); void do_sla (CHAR_DATA *, char *); void do_play (CHAR_DATA *, char *); void gotoxy (CHAR_DATA *, int, int); void do_slay (CHAR_DATA *, char *); void do_sleep (CHAR_DATA *, char *); void do_slist (CHAR_DATA *, char *); void do_slookup (CHAR_DATA *, char *); void do_sneak (CHAR_DATA *, char *); void do_snoop (CHAR_DATA *, char *); void do_socials (CHAR_DATA *, char *); void do_south (CHAR_DATA *, char *); void do_speak (CHAR_DATA *, char *); void do_armor (CHAR_DATA *, char *); void do_split (CHAR_DATA *, char *); void do_spells (CHAR_DATA *, char *); void do_sset (CHAR_DATA *, char *); void do_allsave (CHAR_DATA *, char *); void do_stand (CHAR_DATA *, char *); void do_steal (CHAR_DATA *, char *); void do_string (CHAR_DATA *, char *); void do_switch (CHAR_DATA *, char *); void do_tell (CHAR_DATA *, char *); void do_time (CHAR_DATA *, char *); void do_title (CHAR_DATA *, char *); void do_track (CHAR_DATA *, char *); void do_track_t (CHAR_DATA *, char *); void do_trapset (CHAR_DATA *, char *); /* JRAJRA - Set up a trap */ void do_detrap (CHAR_DATA *, char *); /* remove traps from stuff */ void do_patch (CHAR_DATA *, char *); /* repair wpns and armor */ void do_train (CHAR_DATA *, char *); void do_transfer (CHAR_DATA *, char *); void do_trust (CHAR_DATA *, char *); void do_unlock (CHAR_DATA *, char *); void do_up (CHAR_DATA *, char *); void do_users (CHAR_DATA *, char *); void do_value (CHAR_DATA *, char *); void do_visible (CHAR_DATA *, char *); void do_wake (CHAR_DATA *, char *); void do_wear (CHAR_DATA *, char *); void do_headbutt (CHAR_DATA *, char *); void do_bite (CHAR_DATA *, char *); void do_warcry (CHAR_DATA *, char *); void do_weather (CHAR_DATA *, char *); void do_west (CHAR_DATA *, char *); void do_where (CHAR_DATA *, char *); void do_who (CHAR_DATA *, char *); void do_wimpy (CHAR_DATA *, char *); void do_wizhelp (CHAR_DATA *, char *); void do_wizify (CHAR_DATA *, char *); void do_wizlock (CHAR_DATA *, char *); void do_wizlist (CHAR_DATA *, char *); void do_wizprompt (CHAR_DATA *, char *); void do_wp (CHAR_DATA *, char *); void do_yell (CHAR_DATA *, char *); void do_study (CHAR_DATA *, char *); void do_zap (CHAR_DATA *, char *); void do_donate ( CHAR_DATA *, char *); void do_alliance (CHAR_DATA *, char *); void do_bank (CHAR_DATA *, char *); /* JRAJRA */ void do_bankset (CHAR_DATA *, char*); void show_donate (CHAR_DATA *); void do_deposit (CHAR_DATA *, char *); void do_withdraw (CHAR_DATA *, char *); void do_balance (CHAR_DATA *, char *); void do_quiet (CHAR_DATA *, char *); void do_convert (CHAR_DATA *, char *); void do_award_skill (CHAR_DATA *, char *); void do_asave (CHAR_DATA *, char *); void do_astat (CHAR_DATA *, char *); void do_mindex (CHAR_DATA *, char *); void do_oindex (CHAR_DATA *, char *); void do_cindex (CHAR_DATA *, char *); void do_aedit (CHAR_DATA *, char *); void do_redit (CHAR_DATA *, char *); void do_sedit (CHAR_DATA *, char *); void do_oedit (CHAR_DATA *, char *); void do_medit (CHAR_DATA *, char *); void do_sociedit (CHAR_DATA *, char *); void do_hedit (CHAR_DATA *, char *); void do_set_fighters (CHAR_DATA *, char *); void do_cancel (CHAR_DATA *, char *); void do_challenge (CHAR_DATA *, char *); void do_acceptc (CHAR_DATA *, char *); void do_decline (CHAR_DATA *, char *); void do_bet (CHAR_DATA *, char *); void do_forge (CHAR_DATA *, char *); void do_weave (CHAR_DATA *, char *); void do_enchant (CHAR_DATA *, char *); void do_empower (CHAR_DATA *, char *); void do_unenchant (CHAR_DATA *, char *); void do_stitch (CHAR_DATA *, char *); void do_mine (CHAR_DATA *, char *); void do_skin (CHAR_DATA *, char *); void do_mine (CHAR_DATA *, char *); void do_skin (CHAR_DATA *, char *); void do_graft (CHAR_DATA *, char *); void do_tan (CHAR_DATA *, char *); void do_brew (CHAR_DATA *, char *); void do_lore (CHAR_DATA *, char *); void do_arena (CHAR_DATA *, char *); void do_ignore (CHAR_DATA *, char *); void do_clan_quit (CHAR_DATA *, char *); void do_attribute (CHAR_DATA *, char *); void do_ggossip (CHAR_DATA *, char *); void do_egossip (CHAR_DATA *, char *); void do_weight (CHAR_DATA *, char *); void do_alien (CHAR_DATA *, char *); void do_choosesides(CHAR_DATA *, char *); /* JRAJRA */ void do_remort (CHAR_DATA *, char *); /* JRAJRA */ void info_remort (CHAR_DATA *, char *); /* JRAJRA */ void show_remort_requirements (CHAR_DATA *, char *); /* JRAJRA */ void do_nodelete (CHAR_DATA *, char *); void do_minmana (CHAR_DATA *, char *); void do_noaffect (CHAR_DATA *, char *); void do_results (CHAR_DATA *, char *); void do_afk (CHAR_DATA *, char *); void do_busy (CHAR_DATA *, char *); void do_ditch (CHAR_DATA *, char *); void do_query (CHAR_DATA *, char *); void do_pedit (CHAR_DATA *, char *); void do_cedit (CHAR_DATA *, char *); void do_mana (CHAR_DATA *, char *); void do_tan (CHAR_DATA *, char *); void do_brew (CHAR_DATA *, char *); void do_lore (CHAR_DATA *, char *); void do_arena (CHAR_DATA *, char *); void do_ignore (CHAR_DATA *, char *); void do_clan_quit (CHAR_DATA *, char *); void do_attribute (CHAR_DATA *, char *); void do_ggossip (CHAR_DATA *, char *); void do_egossip (CHAR_DATA *, char *); void do_weight (CHAR_DATA *, char *); void do_alien (CHAR_DATA *, char *); void do_choosesides(CHAR_DATA *, char *); /* JRAJRA */ void do_remort (CHAR_DATA *, char *); /* JRAJRA */ void info_remort (CHAR_DATA *, char *); /* JRAJRA */ void show_remort_requirements (CHAR_DATA *, char *); /* JRAJRA */ void do_nodelete (CHAR_DATA *, char *); void do_minmana (CHAR_DATA *, char *); void do_noaffect (CHAR_DATA *, char *); void do_results (CHAR_DATA *, char *); void do_afk (CHAR_DATA *, char *); void do_busy (CHAR_DATA *, char *); void do_ditch (CHAR_DATA *, char *); void do_query (CHAR_DATA *, char *); void do_pedit (CHAR_DATA *, char *); void do_cedit (CHAR_DATA *, char *); void mana (CHAR_DATA *, char *); void do_startup_time (CHAR_DATA *, char *); void alignswitch(CHAR_DATA *, int); void raceswitch (CHAR_DATA *, int); void do_players (CHAR_DATA *, char *); void do_pdelete (CHAR_DATA *, char *); void do_resets (CHAR_DATA *, char *); void do_scriptr (CHAR_DATA *, char *); void do_mark (CHAR_DATA *, char *); int get_bfs_dir(CHAR_DATA *, void *, ROOM_DATA *, int, int); int get_bfs (CHAR_DATA *, void *); bool bfs_tracks (CHAR_DATA *, void *, ROOM_DATA *, int); void undo_it (ROOM_DATA *); int find_connection_num (DESCRIPTOR_DATA *); void soc_edit (CHAR_DATA *, char *); void scriptedit (CHAR_DATA *, char *); TRACK_DATA *new_track (void *, ROOM_DATA *, int, int); void remove_char_from_list (CHAR_DATA *); void add_char_to_list (CHAR_DATA *); void spell_locate_person (int, int, CHAR_DATA *, void *); void spell_portal (CHAR_DATA *, void*); void spell_detect_align (CHAR_DATA *); void spell_astral (CHAR_DATA *, void*); void spell_scry (int sn, int level, CHAR_DATA * ch, void *vo); void spell_necromancy (SPELL_DATA * spell, CHAR_DATA * ch); void spell_charm_person (int sn, int level, CHAR_DATA * ch, void *vo); void spell_control_weather (int sn, int level, CHAR_DATA * ch, void *vo); void spell_identify (int sn, int level, CHAR_DATA * ch, void *vo); void spell_locate_object (int sn, int level, CHAR_DATA * ch, void *vo); void spell_summon (int sn, int level, CHAR_DATA * ch, void *vo); void spell_acid_breath (int level, CHAR_DATA * ch, void *vo); void spell_fire_breath (int level, CHAR_DATA * ch, void *vo); void spell_ice_breath (int level, CHAR_DATA * ch, void *vo); void spell_shard_breath (int level, CHAR_DATA * ch, void *vo); void spell_wind_breath (int level, CHAR_DATA * ch, void *vo); void spell_shock_breath (int level, CHAR_DATA * ch, void *vo); void spell_message (int sn, int level, CHAR_DATA * ch, void *vo); void set_off_trap (CHAR_DATA *, SINGLE_OBJECT *, int); int find_char_mana (CHAR_DATA *, SPELL_DATA *, bool); char *star_a (int, int); char *star_b (int, int); bool has_key (CHAR_DATA * ch, int key); int find_door (CHAR_DATA * ch, char *arg); char *door_cond (int val); void set_area_align (AREA_DATA *, int, CHAR_DATA *); /*+----------------------------------------------------------------------+*/ /*| I included many standard prototypes here, although not all are |*/ /*| implimented as of now... |*/ /*+----------------------------------------------------------------------+*/ bool spec_breath_any (CHAR_DATA * ch); bool spec_breath_acid (CHAR_DATA * ch); bool spec_breath_fire (CHAR_DATA * ch); bool spec_breath_frost (CHAR_DATA * ch); bool spec_breath_gas (CHAR_DATA * ch); bool spec_breath_lightning (CHAR_DATA * ch); bool spec_eatcorpse (CHAR_DATA * ch); bool spec_guard (CHAR_DATA * ch); bool spec_janitor (CHAR_DATA * ch); bool spec_poison (CHAR_DATA * ch); bool spec_thief (CHAR_DATA * ch); bool spec_warrior (CHAR_DATA * ch); char *crypt (const char *key, const char *salt); /*+-----------------------------------------------------------------------+*/ /*| Thanks to Cym of delta.misha.net for helping me make the mud SYSV/SUN |*/ /*| compatible |*/ /*+-----------------------------------------------------------------------+*/ #if defined(sun) int fclose (FILE * stream); int fprintf (FILE * stream, const char *format,...); #if defined(SYSV) size_t fread (void *ptr, size_t size, size_t n, FILE * stream); #else int fread (void *ptr, int size, int n, FILE * stream); #endif int fseek (FILE * stream, long offset, int ptrname); void perror (const char *s); int ungetc (int c, FILE * stream); #endif #if defined(NOCRYPT) #define crypt(s1, s2) (s1) #endif void add_follower (CHAR_DATA *, CHAR_DATA *); bool is_note_to (CHAR_DATA *, NOTE_DATA *); void set_title (CHAR_DATA *, char *); bool move_char (CHAR_DATA * ch, int door); void make_blood (CHAR_DATA * ch, int door); CHAR_DATA *find_keeper (CHAR_DATA * ch); CHAR_DATA *find_repair (CHAR_DATA * ch, int rnum); int get_cost (CHAR_DATA *, CHAR_DATA *, SINGLE_OBJECT *, bool); void wear_obj (CHAR_DATA *, SINGLE_OBJECT *, bool); ROOM_DATA *find_location (CHAR_DATA *, char *); void die_follower (CHAR_DATA *); char *get_ansi_spaces (char *); int find_first_step (ROOM_DATA *, ROOM_DATA *); void do_chan_notify (CHAR_DATA *, char *); void do_restore (CHAR_DATA *, char *); void stop_follower (CHAR_DATA *); void update_area_control (void); bool is_same_group (CHAR_DATA *, CHAR_DATA *); void do_exits (CHAR_DATA *, char *); void do_land (CHAR_DATA *, char *); void do_look (CHAR_DATA *, char *); void close_socket (DESCRIPTOR_DATA * dclose); SHELL *new_shell (void); void write_to_buffer (DESCRIPTOR_DATA *, const char *, int); void do_global (char *, int, int); void send_to_char (const char *, CHAR_DATA * ch); void page_to_char (char *, CHAR_DATA * ch); char* add_color(char *); char* add_color_limited (char*); void ansi_color (const char *, CHAR_DATA * ch); void show_string (DESCRIPTOR_DATA *, char *); void act (const char *, CHAR_DATA *, const void *, const void *, int); void act_dam (const char *, CHAR_DATA *, SINGLE_OBJECT *, CHAR_DATA *, int); char *anseval (const char *, CHAR_DATA *); void boot_db (void); void area_update (void); void room_update (void); void reset_room (ROOM_DATA *); CHAR_DATA *create_mobile (MOB_PROTOTYPE *); SINGLE_OBJECT *create_object (OBJ_PROTOTYPE *, int); void clear_data (void *thing); REALCHAR_DATA *new_pc (void); CHAR_DATA *new_char (void); SINGLE_OBJECT *new_obj (void); char *get_extra_descr (const char *, DESCRIPTION_DATA *); int clan_number (CHAR_DATA *); int clan_number_2 (CHAR_DATA *); bool scan_clan (char *arg); bool scan_clan_2 (char *arg); CLAN_DATA *get_clan_index (int); CLAN_DATA *get_clan_index_2 (int); MOB_PROTOTYPE *get_mob_index (int); OBJ_PROTOTYPE *get_obj_index (int); ROOM_DATA *get_room_index (int); SPELL_DATA *spell_lookup (char *txt, int sn); void save_area (AREA_DATA *); void save_boats (void); void load_boats (void); bool check_prereq_depth (SPELL_DATA *, SPELL_DATA*); int lookup_gsn (char *nm); void setup_skills (void); int tally_spsk (CHAR_DATA *, int); int leftover_slots (CHAR_DATA *, int); int total_slots (CHAR_DATA *, int); void new_general_spell (CHAR_DATA *, char *); void general_spell (SPELL_DATA *, int, CHAR_DATA *, void *); void general_spell2 (SPELL_DATA *, int, CHAR_DATA *, void *, bool,ROOM_DATA *); void load_spells (void); void do_new_prereq (CHAR_DATA *, char *); void sedit (CHAR_DATA * ch, char *argy); void write_spells (void); void read_damages (void); void write_damages (void); void read_config (void); void write_config (void); SPELL_DATA *new_spell (void); SPELL_DATA *create_spell (int jj); long translate (char *line, int level, CHAR_DATA * ch); /*+-----------------------------------------------------------------------+*/ /*| These functions work similarly to the old Mortal Conquest ones. they |*/ /*| may not behave exactly the same... |*/ /*+-----------------------------------------------------------------------+*/ char fread_letter (FILE *); int fread_number (FILE *); char *fread_string2 (FILE *, CHAR_DATA *); char *fread_string (FILE *, CHAR_DATA *); char *fread_string_eol (FILE *); void fread_to_eol (FILE *); char *fread_word (FILE *); void *alloc_mem (int); void *alloc_perm (int); void free_mem (void *, int); char *str_dupn (const char *); char *str_dup (const char *); void free_string (char *); int number_fuzzy (int); int number_range (int, int); int number_percent (void); int number_door (void); int number_bits (int); int number_mm (void); int dice (int, int); void smash_tilde (char *); char * center_argument (int i, char *argy); bool str_cmp (const char *, const char *); bool str_prefix (const char *, const char *); bool str_infix (const char *, const char *); bool str_suffix (const char *, const char *); char *capitalize (const char *); void append_file (CHAR_DATA *, char *, char *); void bug (const char *, int); void log_string (const char *); bool is_safe (CHAR_DATA *, CHAR_DATA *); void death_cry (CHAR_DATA * ch, bool flaggy); void violence_update (void); void multi_hit (CHAR_DATA *, CHAR_DATA *, int); void ground_hit (CHAR_DATA *, CHAR_DATA *, int); void damage (CHAR_DATA *, CHAR_DATA *, int, int); ROOM_DATA *new_room (void); void update_pos (CHAR_DATA *); void update_prereq (void); void check_prereq (SPELL_DATA *); void stop_fighting (CHAR_DATA *, bool); void raw_kill (CHAR_DATA *, bool); bool has_killed (CHAR_DATA *, CHAR_DATA *, int); void do_mindexc (CHAR_DATA * ch, char *argy, bool windowed); int get_age (CHAR_DATA * ch); int get_stat(CHAR_DATA *, int); int get_curr_str (CHAR_DATA *ch); int get_curr_int (CHAR_DATA *ch); int get_curr_wis (CHAR_DATA *ch); int get_curr_dex (CHAR_DATA *ch); int get_curr_con (CHAR_DATA *ch); void small_map (CHAR_DATA *); bool is_name (const char *, char *); void affect_to_char (CHAR_DATA *, AFFECT_DATA *); void affect_remove (CHAR_DATA *, AFFECT_DATA *); void affect_strip (CHAR_DATA *, int); void affect_strip_bits (CHAR_DATA *, int, int); bool is_affected (CHAR_DATA *, int); bool is_affectedt (CHAR_DATA *, int); void affect_join (CHAR_DATA *, AFFECT_DATA *); void char_from_room (CHAR_DATA *); void char_to_room (CHAR_DATA *, ROOM_DATA *); void obj_to (SINGLE_OBJECT *, void *); void obj_from (SINGLE_OBJECT *); void free_it (void *); int apply_ac (SINGLE_OBJECT *, int); SINGLE_OBJECT *get_eq_char (CHAR_DATA *, int, int); void equip_char (CHAR_DATA *, SINGLE_OBJECT *, int, int); SINGLE_OBJECT *get_item_held (CHAR_DATA *, int); void NEW_POSITION(CHAR_DATA *, int); void SUBHIT(CHAR_DATA *, int); void ADDHIT(CHAR_DATA *, int); void ADDMOVE(CHAR_DATA *, int); void SUBMOVE(CHAR_DATA *, int); void MAXHIT(CHAR_DATA *); void MAXMOVE(CHAR_DATA *); void check_fgt(CHAR_DATA *); int hand_empty (CHAR_DATA *); int belt_empty (CHAR_DATA *); bool unequip_char (CHAR_DATA *, SINGLE_OBJECT *); int count_obj_list (OBJ_PROTOTYPE *, SINGLE_OBJECT *); void extract_char (CHAR_DATA *, bool); CHAR_DATA *get_char_room (CHAR_DATA *, char *); CHAR_DATA *get_char_room_near (CHAR_DATA *, ROOM_DATA *, int, char *); CHAR_DATA *get_char_room_near2 (CHAR_DATA *, ROOM_DATA *, int, char *, int); CHAR_DATA *get_char_room2 (CHAR_DATA *, ROOM_DATA *, char *); CHAR_DATA *get_char_world (CHAR_DATA *, char *); CHAR_DATA *get_char_world_2 (CHAR_DATA *, char *); SINGLE_OBJECT *get_obj_type (OBJ_PROTOTYPE *); SINGLE_OBJECT *get_obj_list (CHAR_DATA *, char *, SINGLE_OBJECT *); SINGLE_OBJECT *get_obj_carry (CHAR_DATA *, char *); SINGLE_OBJECT *get_obj_wear (CHAR_DATA *, char *); SINGLE_OBJECT *get_obj_inv (CHAR_DATA *, char *argy); SINGLE_OBJECT *get_obj_here (CHAR_DATA *, char *argy, int); SINGLE_OBJECT *get_obj_world (CHAR_DATA *, char *argy); void create_amount (int, CHAR_DATA *, ROOM_DATA *, SINGLE_OBJECT *); int tally_coins (CHAR_DATA *); char *name_amount (int); char *sub_coins (int, CHAR_DATA *); void fread_startup_time (void); int get_obj_number (SINGLE_OBJECT * obj); int get_obj_weight (SINGLE_OBJECT * obj); int room_is_dark (ROOM_DATA *); bool room_is_private (ROOM_DATA *); bool can_see (CHAR_DATA *, CHAR_DATA *); bool can_see_nextdoor (CHAR_DATA *, CHAR_DATA *); bool can_see_obj (CHAR_DATA *, SINGLE_OBJECT *); bool can_drop_obj (CHAR_DATA *, SINGLE_OBJECT *); char *mob_type_name (int); char *mob_type_attack (int); char *item_type_name (int); char *affect_loc_name (int); char *affect_bit_name (int, int, int, int); char *augment_bit_name (int); bool find_vehicle (CHAR_DATA *, int); void set_fighting (CHAR_DATA *, CHAR_DATA *); void clan_check_align (CHAR_DATA *); void clan_check_align_2 (CHAR_DATA *); int max_mana (CHAR_DATA *); int mana_now (CHAR_DATA *); void natural_mana (CHAR_DATA *); char *compr (char *txt); char *translate_output (char *inpt); void clan_notify (char *argy, int clan_num); void clan_notify_2 (char *argy, int clan_num); void group_notify (char *argy, CHAR_DATA * ch); void save_clans (void); void save_clans_2 (void); void dummy_mid (void); void dummy_npc (void); void dummy_pc (void); void save_playerbase (void); void save_itemcheck (void); void update_pbase (CHAR_DATA * ch); int itemcheck_forchar (CHAR_DATA * ch); void update_itemcheck (CHAR_DATA * ch); void save_day_counter (void); void save_ranking (void); void save_banlist (void); void update_weight_num (CHAR_DATA * ch); void dummycall (void); void check_add_trophy (CHAR_DATA * ch, CHAR_DATA * victim, int, int); int free_trophy_slot (CHAR_DATA * ch, CHAR_DATA * victim); void sort_trophy (CHAR_DATA *ch, char*); int free_storage (CHAR_DATA * ch); int free_clan_storage (CLAN_DATA * clan); void load_corpse (CHAR_DATA * read_ch); void save_corpse (CHAR_DATA * ch); void check_ranking_data (CHAR_DATA * ch); void raw_purge (ROOM_DATA * rid); void bust_a_prompt (CHAR_DATA * ch); void fwrite_clan_storage (int clan_num); void fread_clan_storage (int clan_num); void fwrite_align_bank (int align); /* JRAJRA */ void fread_align_bank (int align);/* JRAJRA */ void fread_clan_bank (int clan_num);/* JRAJRA */ void fread_alliance_data (void); void fwrite_alliance_data (void); void fwrite_clan_bank (int clan_num);/* JRAJRA */ void get_condition (SINGLE_OBJECT * obj); char *strip_ansi_codes (char *txty); void free_arena (void); bool write_to_descriptor2 (DESCRIPTOR_DATA *, char *, int); int get_bet_slot (char *charname); bool check_skill(CHAR_DATA *, int); char *bet_on (char *charname); void end_arena (CHAR_DATA * winner, CHAR_DATA * loser); void arena (void); long mytime (void); bool ignore (CHAR_DATA * blabber_char, CHAR_DATA * sent_tot); int chars_in_group (CHAR_DATA * ch); int rchars_in_group (CHAR_DATA * ch); int tchars_in_group (CHAR_DATA * ch); void bansite (char *argy); void do_arenaecho (CHAR_DATA * ch, char *argy, bool batspam); void give_back_money (void); void blank_prompt (CHAR_DATA * ch); char *format_obj_to_char (SINGLE_OBJECT *, CHAR_DATA *, bool); char *show_look_affects (CHAR_DATA *, CHAR_DATA *); void show_list_to_char (SINGLE_OBJECT *, CHAR_DATA *, bool, bool); void show_char_to_char_1 (CHAR_DATA *, CHAR_DATA *); void show_char_to_char (CHAR_DATA *, CHAR_DATA *); void show_char_to_char_0 (CHAR_DATA *, CHAR_DATA *); void show_equipment (CHAR_DATA *, CHAR_DATA *); bool check_blind (CHAR_DATA *); int words (char *s); char *ans_uppercase (const char *); bool remove_obj (CHAR_DATA * ch, SINGLE_OBJECT*); void syslag (CHAR_DATA * ch, char *argy); bool check_defense (CHAR_DATA *, CHAR_DATA *); void play_update (CHAR_DATA *ch); void deck_update (CHAR_DATA *ch); void slots_update (CHAR_DATA *ch); void roulette_update (CHAR_DATA *ch); void give_deck_prize (CHAR_DATA *ch); void dam_message (CHAR_DATA *, CHAR_DATA *, int, int, int); bool can_groundfight (CHAR_DATA * ch); void death_cry (CHAR_DATA * ch, bool flaggy); void group_gain (CHAR_DATA * ch, CHAR_DATA * victim); int xp_compute (CHAR_DATA * gch, CHAR_DATA * victim); bool is_safe (CHAR_DATA * ch, CHAR_DATA * victim); void *mem_alloc (int); void one_hit (CHAR_DATA *, CHAR_DATA *, int, SINGLE_OBJECT *); void raw_kill (CHAR_DATA * victim, bool used_sword); void set_fighting (CHAR_DATA * ch, CHAR_DATA * victim); void disarm (CHAR_DATA * ch, CHAR_DATA * victim); void trip (CHAR_DATA * ch, CHAR_DATA * victim); void display_toggles (CHAR_DATA * ch); PLAYERBASE_DATA *new_player (void); MOB_PROTOTYPE *new_mob_index (void); DOOR_DATA *new_door (void); TEMP_STR *new_temp (void); void free_temp (CHAR_DATA * ch); void check_temp (CHAR_DATA * ch); void free_ced (CHAR_DATA * ch); EXIT_DATA *new_exit (void); ROOM_DATA *new_room_index (void); AREA_DATA *get_vnum_area (int vnum); int strtoint (char *string); bool is_same_align (CHAR_DATA * ch, CHAR_DATA * victim); bool is_cheating (CHAR_DATA * ch); void hunt_victim (CHAR_DATA * ch); CHAR_DATA *get_player_world (CHAR_DATA * ch, char *argy, bool need_see); void do_auction (CHAR_DATA * ch, char *argy, int); CLAN_DATA *new_clan_index (void); CLAN_DATA *new_clan_index_2 (void); int get_sector_number (char *argy); void free_exit (EXIT_DATA *); int get_exit_flag_number (char *arg); /*+-----------------------------------------------------------------------+*/ /*| Write to descriptor. Do NOT use this for output. I leave this in only |*/ /*| so that it's compat with a diku comm package... ALWAYS use write_to_ |*/ /*| descriptor2() ... never use just plain ole write_to_descriptor! |*/ /*+-----------------------------------------------------------------------+*/ bool write_to_descriptor (int, char *, int); /*int read ( int, char *, int ); */ void free_affect (AFFECT_DATA *); AFFECT_DATA *new_affect (void); OBJ_PROTOTYPE *new_obj_index (void); DESCRIPTION_DATA *new_extra_descr (void); void free_extra_descr (DESCRIPTION_DATA *); OPTIONAL_DATA *new_optional (void); GUARD_DATA *new_guard(void); AUCTION *new_auction(void); SPEC_PROC *new_spec_proc(void); void new_shop (MOB_PROTOTYPE *); void free_shop (SHOP_DATA *); int get_mob_sex_number (char *); SPEC_FUNCTION *get_mob_spec (char *arg); int arg_count (char *); AREA_DATA *new_area (void); char *string_replace (char *orig, char *old, char *new); char *string_unpad (char *argy); char *string_proper (char *argy); void mindex_window (CHAR_DATA * ch, MOB_PROTOTYPE * victim, int update); int add_damroll (CHAR_DATA * ch); int add_hitroll (CHAR_DATA * ch); int GET_HITROLL (CHAR_DATA * ch); int GET_DAMROLL (CHAR_DATA * ch); void conv_height (CHAR_DATA * ch); char *jumble_name (char *st, bool unjumble); void jumble (char *name); void unjumble (char *name, bool convert); char *string_mana (int mana); char *string_mana_p (int mana); void fix_char (CHAR_DATA * ch); bool check_body_temp (CHAR_DATA * ch); void do_fatal (CHAR_DATA * victim, CHAR_DATA * ch, int dt); bool IS_CORPSE_MOB (CHAR_DATA * ch); char *rNAME (CHAR_DATA * to, CHAR_DATA * ch); void find_people_n (CHAR_DATA * ch, int n); char *wordwrap (char *txt, int); int lookup_questname (char *txt); ROOM_DATA *find_room_tag (char *tag); char *show_room_name (CHAR_DATA * ch, char *roomname); void place_pets (CHAR_DATA * ch); void clear_tracks (CHAR_DATA * ch); CHAR_DATA *find_mob (void); CHAR_DATA *findmob (void); void createobject (CHAR_DATA * ch, int vnum); void destroy (CHAR_DATA * mob, int i); void do_destroy (CHAR_DATA * mob, int i); void hardcode_give_scripts (CHAR_DATA *, CHAR_DATA *, char *); void hardcode_move_scripts (CHAR_DATA *, CHAR_DATA *); void hardcode_room_enter (CHAR_DATA *, ROOM_DATA *); void hardcode_interpret_scripts (CHAR_DATA *, CHAR_DATA *, char *); void hardcode_saytell_scripts (CHAR_DATA *, CHAR_DATA *, char *); /*char *itoa(int); */ void allocate_correct_datatype (SINGLE_OBJECT *, int *); void free_m (void *); void print_reasons (CHAR_DATA * ch, SINGLE_OBJECT * container); char *interpret_line (char *, CHAR_DATA *); char *natural_hurts (int); char *natural_protects (int); char *natural_affects (int); char *natural_detects (int); char *augmentss (int); void show_remort (CHAR_DATA *); void show_donate (CHAR_DATA *); void set_initial_hp (CHAR_DATA *); void remove_from_aggro_list (CHAR_DATA *); void add_to_fighting_list (CHAR_DATA *); void add_to_aggro_list (CHAR_DATA *); void set_default_prompt (CHAR_DATA *, char); void read_power_data (void); void read_race_info (void); void read_align_info (void); void place_one_mob (FILE *fp); void read_channel_data (void); void read_score (CHAR_DATA *, char *); bool check_pr (char *); void read_power_dat (void); void fix_exits (void); void load_society (void); void fread_society (FILE*); void do_society (CHAR_DATA *ch, char *argy); void fread_and_place_mobiles (void); void save_mobile_info (void); void save_object_info (void); void fread_and_place_objects (void); SOCIETY_DATA *society_lookup (char *, int); void fread_and_place_objects (void); void save_object_info (void); void update_society (void); void copy_society (SOCIETY_DATA *, SOCIETY_DATA *); void save_society (void); void fwrite_caste (SOCIETY_DATA*, int, FILE *); SOCIETY_DATA *new_society (void); CASTE_DATA *new_caste (void); void read_command_levels (void); void add_level_bonuses (CHAR_DATA *, int); int new_damage (CHAR_DATA *, int, int, int); void channel_function (CHAR_DATA *, char *, CHANNEL *, int, char *); void fcheck_pbase (char *); void reset_small (void); void area_sort (AREA_DATA *); void save_area_list (void); void undisplay(ROOM_DATA *); void drawstuff(CHAR_DATA *, char *, int, int); char *parse_txt (char *, CHAR_DATA *); char *how_good (CHAR_DATA *, int); char *format_obj_to (SINGLE_OBJECT *, CHAR_DATA *, bool); void check_clear_guard (MOB_PROTOTYPE *); void check_clear_spec (MOB_PROTOTYPE*); void check_clear_opt (MOB_PROTOTYPE *); void display_room (CHAR_DATA * ch, ROOM_DATA * rid, int x, int y); void strip_nonworn (CHAR_DATA * ch); void pc_death_penalty (CHAR_DATA * ch, CHAR_DATA * victim); int rating (CHAR_DATA * ch); int free_bet_slot (void); void make_corpse (CHAR_DATA * ch); void racehate_message (CHAR_DATA * ch); bool can_yell (CHAR_DATA * ch); bool check_clan (CLAN_DATA * clan, char *argy); bool check_clan_2 (CLAN_DATA * clan, char *argy); int clan_free (CLAN_DATA * clan); int clan_free_2 (CLAN_DATA * clan); int is_member (CHAR_DATA * ch, int guildflag); bool locate_person (CHAR_DATA * ch, int level, char *argy); bool scry (CHAR_DATA * ch, int level, char *argy); int get_race_look (char *argy); bool pkill (CHAR_DATA * ch, CHAR_DATA * victim); void check_pkill (CHAR_DATA * ch, CHAR_DATA * victim); void get_obj (CHAR_DATA * ch, SINGLE_OBJECT * obj, SINGLE_OBJECT * container, bool opp_align); int addoffense (CHAR_DATA * ch, SINGLE_OBJECT * obj); int addoffense2 (CHAR_DATA *ch, SINGLE_OBJECT *obj); char *extra_bit_name (int extra_flags); char *room_bit_name (int room_flags); char *society_bit_name (int); char *caste_bit_name (int); char *act_bit_name (int act); char *room_bit_name2 (int room_flags); char *act_bit_name2 (int act); char *act3_bit_name (int act); char *act4_bit_name (int act); char *race_bit_name (int); char *tactics_bit_name (int); char *plr_bit_name (int); char *wear_bit_name (int); char *wear_loc_name (int); char *exit_bit_name (int); char *area_bit_name (int); int society_name_bit (char *); int caste_name_bit (char *); int area_name_bit (char *); int area_name_bit (char *buf); int exit_name_bit (char *name); int mob_name_type (char *name); int item_name_type (char *name); int affect_name_loc (char *name); int affect_name_bit (int, char *buf); int augment_name_bit (char *buf); int tactics_name_bit (char *buf); int extra_name_bit (char *buf); int room_name_bit (char *buf); int room_name_bit2 (char *buf); int act_name_bit (char *buf); int race_name_bit (char *buf); int wear_name_bit (char *buf); int wear_name_loc (char *buf); char *is_are (char *); char *format_string (char *); char *replace_string (char *orig, char *old, char *new); char *get_extra_descr (const char *name, DESCRIPTION_DATA * ed); bool use_tool (SINGLE_OBJECT * obj, int bit); int PERCENTAGE (int amount, int max); void interpret (CHAR_DATA * ch, char *argy); void super_interpret (CHAR_DATA *, char *); bool is_number (char *arg); bool is_letter (char *arg); int num_args (char *argy); int number_argy (char *argy, char *arg); char *one_argy (char *argy, char *arg_first); char *one_argcase (char *argy, char *); bool check_social (CHAR_DATA *, char *, char *); SPELL_DATA *skill_lookup (char *, int); int slot_lookup (int); bool saves_spell (int, CHAR_DATA *); void obj_cast_spell (int, int, CHAR_DATA *, CHAR_DATA *, SINGLE_OBJECT *); void aedit (CHAR_DATA * ch, char *argy); void redit (CHAR_DATA * ch, char *argy); void renew_affect (CHAR_DATA * ch, AFFECT_DATA * aff); void oedit (CHAR_DATA * ch, char *argy); void medit (CHAR_DATA * ch, char *argy); void pedit (CHAR_DATA * ch, char *argy); void cedit (CHAR_DATA * ch, char *argy); void sociedit (CHAR_DATA * ch, char *argy); void hedit (CHAR_DATA * ch, char *argy); void fwrite_char (CHAR_DATA * ch, FILE * fp); void fwrite_storage_objs (CHAR_DATA * ch, FILE * fp); void fwrite_obj (CHAR_DATA * ch, SINGLE_OBJECT * obj, FILE * fp, int iNest); void fread_char (CHAR_DATA * ch, FILE * fp); void fread_obj (CHAR_DATA * ch, FILE * fp, int storage); void show_society (CHAR_DATA *, SOCIETY_DATA *, int line); void string_append (CHAR_DATA * ch, char **pString); void fullscreen_editor (CHAR_DATA * ch, char **pString); AREA_DATA *get_area_data (int vnum); char *fix_string (const char *str); void string_add (CHAR_DATA * ch, char *argy); void character_add (CHAR_DATA * ch, char *to_add); void save_char_obj (CHAR_DATA * ch); bool load_char_obj (DESCRIPTOR_DATA * d, char *name, bool ped); int cur_temp (CHAR_DATA * ch); char *first_arg (char *, char *, bool); SPEC_FUNCTION *spec_lookup (const char *); void advance_level (CHAR_DATA *); void gain_exp (CHAR_DATA *, int); void gain_condition (CHAR_DATA *, int, int value); void update_handler (void); int get_direction_number (char *arg); void load_helps (FILE * fp); int system (const char *); bool find_str (char *, char *); bool process_output (DESCRIPTOR_DATA *, bool); char *first (char *s); bool strsub (char *s, char *old, char *new); char *ans_uppercase (const char *string); void add_to_list (char *, DO_COMMAND, int, int, int, char *); void scanthru_commands (void); char *decompress (char *s); char *compress (char *s, long len); extern char *const mob_type[MAX_MOB_TYPE]; extern char *const mob_attack[MAX_MOB_TYPE]; /*+-----------------------------------------------------------------------+*/ /*| This is a list of all the stat word names. The order in which this is |*/ /*| done is each stat is listed in order STR INT WIS etc...and each of |*/ /*| the 6 choices for each stat is listed after it. This is just done so |*/ /*| it's easier to add new stats. |*/ /*+-----------------------------------------------------------------------+*/ extern char *const att_word_name[]; extern const int factions[MAX_MOB_TYPE][MAX_MOB_TYPE]; extern const struct material_data materials[]; extern const struct material_data hide_data[]; extern const struct material_data cloth_data[]; extern const struct forged_items forged[]; extern const struct forged_items textiles[]; extern const struct material_data hide_types[]; extern char *const apply_loc_names[]; extern char *const stat_short_name[]; extern char *const stat_long_name[]; extern const struct material_data cloth_types[]; extern const struct str_apply_type str_app[33]; extern const struct weapon_damage wdt[]; extern struct int_apply_type int_app[33]; extern struct wis_apply_type wis_app[33]; extern struct con_apply_type con_app[33]; extern const struct color_data color_table[]; extern struct race_data race_info[RACE_COUNT]; extern struct race_data align_info[NUM_ALIGN]; extern const struct flag_data affect_flags2[]; extern const struct flag_data tactics_flags[]; extern const struct potion_ingredients pot_info[]; extern const struct mna_data mana_data[]; extern const struct flag_data affect_flags1[]; extern const struct gld_data guild_data[]; extern const struct flag_data room_flagss[]; extern const struct flag_data exit_flagss[]; extern const struct flag_data room_flags2[]; extern const struct flag_data act_1[]; extern const struct flag_data act_3[]; extern const struct flag_data act_4[]; extern const struct flag_data area_flagss[]; extern const struct flag_data extra_flagss[]; extern const struct flag_data augment_flagss[]; extern const struct flag_data society_flagss[]; extern const struct flag_data caste_flagss[]; extern const struct wearing_data worn_flags[]; extern const struct sector_data sectors[]; extern const struct flag_data spell_flagss[]; extern const struct flag_data spell_flags2[]; extern char *const percent_hit[]; extern char *const percent_tired[]; extern const struct item_info item_types[]; extern COMMAND *command_hash[256]; extern int commands; extern int pulse_upd; extern int pulse_char; extern int pulse_transport; extern int pulse_society; extern int pulse_hour; extern int pulse_violence; extern int pulse_obj; extern int hours_up; extern int pulse_mobile; extern const struct mob_nfo mob_info[]; extern const char *coin_name[MAX_COINS]; extern const char *coin_color[MAX_COINS]; extern int coin_mult[MAX_COINS]; extern const char *desc_build[]; extern const char *desc_facial_feature[]; extern const char *desc_eyes_color[]; extern const char *desc_eye_aspect[]; extern const char *desc_skin_complexion[]; extern const char *desc_hair_length[]; extern const char *desc_hair_color[]; extern const char *desc_hair_style[]; extern const char *desc_facial_hair[]; extern const char *desc_fur_color[]; extern const char *num_desc_types[]; #include "script.h" #define FIXIT(ch) if ((ch)->in_room&&(IS_SET((ch)->in_room->room_flags,ROOM_INDOORS) ||(ch)->in_room->sector_type >= SECT_CAVE) && IS_SET((ch)->aff[2],FLYING)&& (ch)->height >INDOOR_FLY_HEIGHT) (ch)->aff[2]^= FLYING;