/****************************************************************************
* Eldhamud Codebase V2.2 *
* ------------------------------------------------------------------------ *
* EldhaMUD code (C) 2003-2008 by Robert Powell (Tommi) *
* ------------------------------------------------------------------------ *
* [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | \\._.// *
* -----------------------------------------------------------| (0...0) *
* SMAUG 1.4 (C) 1994, 1995, 1996, 1998 by Derek Snider | ).:.( *
* -----------------------------------------------------------| {o o} *
* SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, | / ' ' \ *
* Scryn, Rennard, Swordbearer, Gorog, Grishnakh, Nivek, |~'~.VxvxV.~'~*
* Tricops and Fireblade | *
* ------------------------------------------------------------------------ *
* Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* Win32 port by Nick Gammon *
* ------------------------------------------------------------------------ *
* blazerayne@hotmail.com Main mud header file *
****************************************************************************/
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <unistd.h>
#include <re_comp.h>
#include <sys/time.h>
typedef int ch_ret;
typedef int obj_ret;
#define args( list ) list
#define DECLARE_DO_FUN( fun ) DO_FUN fun
#define DECLARE_SPEC_FUN( fun ) SPEC_FUN fun
#define DECLARE_SPELL_FUN( fun ) SPELL_FUN fun
#if !defined(FALSE)
#define FALSE 0
#endif
#if !defined(TRUE)
#define TRUE 1
#endif
#if !defined(BERR)
#define BERR 255
#endif
typedef unsigned char bool;
/*
* Structure types.
*/
typedef struct affect_data AFFECT_DATA;
typedef struct area_data AREA_DATA;
typedef struct auction_data AUCTION_DATA; /* auction data */
typedef struct watch_data WATCH_DATA;
typedef struct ban_data BAN_DATA;
typedef struct extracted_char_data EXTRACT_CHAR_DATA;
typedef struct char_data CHAR_DATA;
typedef struct hunt_hate_fear HHF_DATA;
typedef struct fighting_data FIGHT_DATA;
typedef struct descriptor_data DESCRIPTOR_DATA;
typedef struct exit_data EXIT_DATA;
typedef struct extra_descr_data EXTRA_DESCR_DATA;
typedef struct help_data HELP_DATA;
typedef struct menu_data MENU_DATA;
typedef struct mob_index_data MOB_INDEX_DATA;
typedef struct nuisance_data NUISANCE_DATA;
typedef struct obj_data OBJ_DATA;
typedef struct obj_index_data OBJ_INDEX_DATA;
typedef struct pc_data PC_DATA;
typedef struct reset_data RESET_DATA;
typedef struct map_index_data MAP_INDEX_DATA; /* maps */
typedef struct map_data MAP_DATA; /* maps */
typedef struct room_index_data ROOM_INDEX_DATA;
typedef struct shop_data SHOP_DATA;
typedef struct race_type RACE_TYPE;
typedef struct repairshop_data REPAIR_DATA;
typedef struct reserve_data RESERVE_DATA;
typedef struct time_info_data TIME_INFO_DATA;
typedef struct hour_min_sec HOUR_MIN_SEC;
typedef struct weather_data WEATHER_DATA;
typedef struct neighbor_data NEIGHBOR_DATA; /* FB */
typedef struct clan_data CLAN_DATA;
typedef struct council_data COUNCIL_DATA;
typedef struct tourney_data TOURNEY_DATA;
typedef struct mob_prog_data MPROG_DATA;
typedef struct mob_prog_act_list MPROG_ACT_LIST;
typedef struct mpsleep_data MPSLEEP_DATA;
typedef struct editor_data EDITOR_DATA;
typedef struct teleport_data TELEPORT_DATA;
typedef struct timer_data TIMER;
typedef struct godlist_data GOD_DATA;
typedef struct system_data SYSTEM_DATA;
typedef struct smaug_affect SMAUG_AFF;
typedef struct who_data WHO_DATA;
typedef struct skill_type SKILLTYPE;
typedef struct social_type SOCIALTYPE;
typedef struct cmd_type CMDTYPE;
typedef struct killed_data KILLED_DATA;
typedef struct deity_data DEITY_DATA;
typedef struct wizent WIZENT;
typedef struct ignore_data IGNORE_DATA;
typedef struct extended_bitvector EXT_BV;
typedef struct lcnv_data LCNV_DATA;
typedef struct lang_data LANG_DATA;
typedef struct locker_data LOCKER_DATA;
typedef struct quest_data QUEST_DATA; /* questmaster data */
typedef struct olc_data OLC_DATA;
/*
* Function types.
*/
typedef void DO_FUN args( ( CHAR_DATA *ch, char *argument ) );
typedef bool SPEC_FUN args( ( CHAR_DATA *ch ) );
typedef ch_ret SPELL_FUN args( ( int sn, int level, CHAR_DATA *ch, void *vo ) );
#define DUR_CONV 23.333333333333333333333333
#define HIDDEN_TILDE '*'
/* 32bit bitvector defines */
#define BV00 (1 << 0)
#define BV01 (1 << 1)
#define BV02 (1 << 2)
#define BV03 (1 << 3)
#define BV04 (1 << 4)
#define BV05 (1 << 5)
#define BV06 (1 << 6)
#define BV07 (1 << 7)
#define BV08 (1 << 8)
#define BV09 (1 << 9)
#define BV10 (1 << 10)
#define BV11 (1 << 11)
#define BV12 (1 << 12)
#define BV13 (1 << 13)
#define BV14 (1 << 14)
#define BV15 (1 << 15)
#define BV16 (1 << 16)
#define BV17 (1 << 17)
#define BV18 (1 << 18)
#define BV19 (1 << 19)
#define BV20 (1 << 20)
#define BV21 (1 << 21)
#define BV22 (1 << 22)
#define BV23 (1 << 23)
#define BV24 (1 << 24)
#define BV25 (1 << 25)
#define BV26 (1 << 26)
#define BV27 (1 << 27)
#define BV28 (1 << 28)
#define BV29 (1 << 29)
#define BV30 (1 << 30)
#define BV31 (1 << 31)
/* 32 USED! DO NOT ADD MORE! SB */
/*
* String and memory management parameters.
*/
#define MAX_KEY_HASH 2048
#define MAX_STRING_LENGTH 8192 /* buf */
#define MAX_INPUT_LENGTH 2048 /* arg */
#define MAX_INBUF_SIZE 1024
#define MAX_RGRID_ROOMS 100 /*used in do_makerooms to set the maximum rooms you can create at one time*/
#define LAST_FILE_SIZE 500 /*maximum entries in the last file */
#define MAX_VNUM 65000 /*used in lots of ifchecks to determine the maximum vnum allowed*/
#define HASHSTR /* use string hashing */
#define MAX_LAYERS 8 /* maximum clothing layers */
#define MAX_NEST 100 /* maximum container nesting */
#define MAX_KILLTRACK 25 /* track mob vnums killed */
/*
* Game parameters.
* Increase the max'es if you add more of something.
* Adjust the pulse numbers to suit yourself.
*/
#define MAX_EXP_WORTH 500000
#define MIN_EXP_WORTH 20
#define MAX_REXITS 20 /* Maximum exits allowed in 1 room */
#define MAX_SKILL 500
#define SPELL_SILENT_MARKER "silent" /* No OK. or Failed. */
#define MAX_CLASS 9
#define MAX_NPC_CLASS 35
#define MAX_RACE 9
#define MAX_NPC_RACE 85
#define MAX_QDATA 20 /* You can set this to however many available slots you want. */
extern int MAX_PC_RACE;
extern int MAX_PC_CLASS;
extern bool mud_down;
#define MAX_LEVEL 45
#define MAX_CLAN 50
#define MAX_DEITY 50
#define MAX_CPD 4 /* Maximum council power level difference */
#define MAX_HERB 20
#define MAX_DISEASE 20
#define MAX_PERSONAL 5 /* Maximum personal skills */
#define MAX_WHERE_NAME 14
#define LEVEL_HERO (MAX_LEVEL - 15)
#define LEVEL_IMMORTAL (MAX_LEVEL - 14)
#define LEVEL_SUPREME MAX_LEVEL
#define LEVEL_INFINITE (MAX_LEVEL - 1)
#define LEVEL_ETERNAL (MAX_LEVEL - 2)
#define LEVEL_IMPLEMENTOR (MAX_LEVEL - 3)
#define LEVEL_SUB_IMPLEM (MAX_LEVEL - 4)
#define LEVEL_ASCENDANT (MAX_LEVEL - 5)
#define LEVEL_GREATER (MAX_LEVEL - 6)
#define LEVEL_GOD (MAX_LEVEL - 7)
#define LEVEL_LESSER (MAX_LEVEL - 8)
#define LEVEL_TRUEIMM (MAX_LEVEL - 9)
#define LEVEL_DEMI (MAX_LEVEL - 10)
#define LEVEL_SAVIOR (MAX_LEVEL - 11)
#define LEVEL_CREATOR (MAX_LEVEL - 12)
#define LEVEL_ACOLYTE (MAX_LEVEL - 13)
#define LEVEL_NEOPHYTE (MAX_LEVEL - 14)
#define LEVEL_AVATAR (MAX_LEVEL - 15)
#define LEVEL_LOG LEVEL_LESSER
#define LEVEL_HIGOD LEVEL_GOD
#include "overland.h"
#include "house.h" /* For housing module */
#include "bank.h" /* for banking code */
#include "pfiles.h"
#include "arena.h"
#include "color.h"
#include "hotboot.h"
#include "liquids.h" /* SMAUG Liquidtable Replacement -Nopey */
#include "do_fun.h"
#include "gsn.h"
#include "macros.h"
#include "mip.h"
/* This is to tell if act uses uppercasestring or not --Shaddai */
bool DONT_UPPER;
#define SECONDS_PER_TICK 60
#define PULSE_PER_SECOND 4
#define PULSE_VIOLENCE (3 * PULSE_PER_SECOND)
#define PULSE_MOBILE (4 * PULSE_PER_SECOND)
#define PULSE_TICK (SECONDS_PER_TICK * PULSE_PER_SECOND)
#define PULSE_AREA (SECONDS_PER_TICK * PULSE_PER_SECOND)
#define PULSE_AUCTION (SECONDS_PER_TICK * PULSE_PER_SECOND)
/*
* SMAUG Version -- Scryn
*/
#define SMAUG_VERSION_MAJOR "Eldhamud.V2.2"
#define SMAUG_VERSION_MINOR ".45"
/*
* Stuff for area versions --Shaddai
*/
int area_version;
#define HAS_SPELL_INDEX -1
#define AREA_VERSION_WRITE 2
/*
* Command logging types.
*/
typedef enum
{
LOG_NORMAL, LOG_ALWAYS, LOG_NEVER, LOG_BUILD, LOG_HIGH, LOG_COMM,
LOG_WARN, LOG_ALL
} log_types;
/* short cut crash bug fix provided by gfinello@mail.karmanet.it*/
typedef enum {
relMSET_ON, relOSET_ON
} relation_type;
typedef struct rel_data REL_DATA;
struct rel_data
{
void *Actor;
void *Subject;
REL_DATA *next;
REL_DATA *prev;
relation_type Type;
};
/*
* Return types for move_char, damage, greet_trigger, etc, etc
* Added by Thoric to get rid of bugs
*/
typedef enum
{
rNONE, rCHAR_DIED, rVICT_DIED, rBOTH_DIED, rCHAR_QUIT, rVICT_QUIT,
rBOTH_QUIT, rSPELL_FAILED, rOBJ_SCRAPPED, rOBJ_EATEN, rOBJ_EXPIRED,
rOBJ_TIMER, rOBJ_SACCED, rOBJ_QUAFFED, rOBJ_USED, rOBJ_EXTRACTED,
rOBJ_DRUNK, rCHAR_IMMUNE, rVICT_IMMUNE,
rCHAR_AND_OBJ_EXTRACTED = 128,
rERROR = 255
} ret_types;
/* Echo types for echo_to_all */
#define ECHOTAR_ALL 0
#define ECHOTAR_PC 1
#define ECHOTAR_IMM 2
/* defines for new do_who */
#define WT_MORTAL 0
#define WT_DEADLY 1
#define WT_IMM 2
#define WT_GROUPED 3
#define WT_GROUPWHO 4
/*
* Defines for extended bitvectors
*/
#ifndef INTBITS
#define INTBITS 32
#endif
#define XBM 31 /* extended bitmask ( INTBITS - 1 ) */
#define RSV 5 /* right-shift value ( sqrt(XBM+1) ) */
#define XBI 4 /* integers in an extended bitvector */
#define MAX_BITS XBI * INTBITS
/*
* Structure for extended bitvectors -- Thoric
*/
struct extended_bitvector
{
int bits[XBI];
};
#ifdef IMC
#include "imc.h"
#endif
/*
* Tongues / Languages structures
*/
struct lcnv_data
{
LCNV_DATA * next;
LCNV_DATA * prev;
char * old;
int olen;
char * new;
int nlen;
};
struct lang_data
{
LANG_DATA * next;
LANG_DATA * prev;
char * name;
LCNV_DATA * first_precnv;
LCNV_DATA * last_precnv;
char * alphabet;
LCNV_DATA * first_cnv;
LCNV_DATA * last_cnv;
};
/*
* do_who output structure -- Narn
*/
struct who_data
{
WHO_DATA *prev;
WHO_DATA *next;
char *text;
int type;
};
/*
* Player watch data structure --Gorog
*/
struct watch_data
{
WATCH_DATA * next;
WATCH_DATA * prev;
short imm_level;
char * imm_name; /* imm doing the watching */
char * target_name; /* player or command being watched */
char * player_site; /* site being watched */
};
/*
* Nuisance structure
*/
#define MAX_NUISANCE_STAGE 10 /* How many nuisance stages */
struct nuisance_data
{
long int time; /* The time nuisance flag was set */
long int max_time; /* Time for max penalties */
int flags; /* Stage of nuisance */
int power; /* Power of nuisance */
};
/*
* Ban Types --- Shaddai
*/
#define BAN_SITE 1
#define BAN_WARN -1
#define is_full_name is_name
/*
* Site ban structure.
*/
struct ban_data
{
BAN_DATA *next;
BAN_DATA *prev;
char *name; /* Name of site/Class/race banned */
char *note; /* Why it was banned */
char *ban_by; /* Who banned this site */
char *ban_time; /* Time it was banned */
int flag; /* Class or Race number */
int unban_date;/* When ban expires */
short duration; /* How long it is banned for */
short level; /* Level that is banned */
bool warn; /* Echo on warn channel */
bool prefix; /* Use of *site */
bool suffix; /* Use of site* */
};
/*
* Yeesh.. remind us of the old MERC ban structure? :)
*/
struct reserve_data
{
RESERVE_DATA *next;
RESERVE_DATA *prev;
char *name;
};
struct quest_data
{
int level_range;
int practice_amt;
int practice_cost;
int award_vnum[MAX_QDATA+1];
int award_value[MAX_QDATA+1];
int gold_amt;
int gold_cost;
};
/*
* Time and weather stuff.
*/
typedef enum
{
SUN_DARK, SUN_RISE, SUN_LIGHT, SUN_SET
} sun_positions;
typedef enum
{
SKY_CLOUDLESS, SKY_CLOUDY, SKY_RAINING, SKY_LIGHTNING
} sky_conditions;
struct time_info_data
{
int hour;
int day;
int month;
int year;
int sunlight;
};
struct hour_min_sec
{
int hour;
int min;
int sec;
int manual;
};
/* Define maximum number of climate settings - FB */
#define MAX_CLIMATE 5
struct weather_data
{
int temp; /* temperature */
int precip; /* precipitation */
int wind; /* umm... wind */
int temp_vector; /* vectors controlling */
int precip_vector; /* rate of change */
int wind_vector;
int climate_temp; /* climate of the area */
int climate_precip;
int climate_wind;
NEIGHBOR_DATA * first_neighbor; /* areas which affect weather sys */
NEIGHBOR_DATA * last_neighbor;
char * echo; /* echo string */
int echo_color; /* color for the echo */
};
struct neighbor_data
{
NEIGHBOR_DATA *next;
NEIGHBOR_DATA *prev;
char *name;
AREA_DATA *address;
};
/*
* Structure used to build wizlist
*/
struct wizent
{
WIZENT * next;
WIZENT * last;
char * name;
short level;
};
/*
* Connected state for a channel.
*/
typedef enum
{
CON_GET_NAME = -99, CON_GET_OLD_PASSWORD, CON_CONFIRM_NEW_NAME,
CON_GET_NEW_PASSWORD, CON_CONFIRM_NEW_PASSWORD, CON_GET_NEW_SEX,
CON_GET_NEW_CLASS, CON_READ_MOTD, CON_GET_NEW_RACE,
CON_GET_WANT_RIPANSI, CON_PRESS_ENTER, CON_COPYOVER_RECOVER,
CON_PLAYING = 0, CON_EDITING, CON_NOTE_TEXT,
CON_REDIT, CON_OEDIT, CON_MEDIT,
} connection_types;
/*
* Character substates
*/
typedef enum
{
SUB_NONE, SUB_PAUSE, SUB_PERSONAL_DESC, SUB_BAN_DESC, SUB_OBJ_SHORT,
SUB_OBJ_LONG, SUB_OBJ_EXTRA, SUB_MOB_LONG, SUB_MOB_DESC, SUB_ROOM_DESC,
SUB_ROOM_EXTRA, SUB_ROOM_EXIT_DESC, SUB_WRITING_NOTE, SUB_MPROG_EDIT,
SUB_HELP_EDIT, SUB_WRITING_MAP, SUB_PERSONAL_BIO, SUB_REPEATCMD,
SUB_RESTRICTED, SUB_DEITYDESC, SUB_PROJ_DESC, SUB_OVERLAND_DESC,
/* timer types ONLY below this point */
SUB_TIMER_DO_ABORT = 128, SUB_TIMER_CANT_ABORT
} char_substates;
/*
* Descriptor (channel) structure.
*/
struct descriptor_data
{
DESCRIPTOR_DATA * next;
DESCRIPTOR_DATA * prev;
DESCRIPTOR_DATA * snoop_by;
CHAR_DATA * character;
CHAR_DATA * original;
char * host;
int port;
int descriptor;
short connected;
int idle;
short lines;
short scrlen;
bool fcommand;
char inbuf [MAX_INBUF_SIZE];
char incomm [MAX_INPUT_LENGTH];
char inlast [MAX_INPUT_LENGTH];
int repeat;
char * outbuf;
unsigned long outsize;
int outtop;
char * pagebuf;
unsigned long pagesize;
int pagetop;
char * pagepoint;
char pagecmd;
char pagecolor;
int newstate;
unsigned char prevcolor;
short speed; /* descriptor speed settings */
OLC_DATA * olc;
};
/*
* Attribute bonus structures.
*/
struct str_app_type
{
short tohit;
short todam;
short carry;
short wield;
};
struct int_app_type
{
short learn;
};
struct wis_app_type
{
short practice;
};
struct dex_app_type
{
short defensive;
};
struct con_app_type
{
short hitp;
short shock;
};
struct cha_app_type
{
short charm;
};
struct lck_app_type
{
short luck;
};
/* the races */
typedef enum {
RACE_ANGEL, RACE_VANARA, RACE_NEZUMI, RACE_SPIRIT, RACE_UNDEAD, RACE_DEMON,
} race_types;
#define CLASS_NONE -1 /* For skill/spells according to guild */
#define CLASS_BUSHI 0
#define CLASS_SHUGENJA 1
#define CLASS_KISHI 2
#define CLASS_SOHEI 3
#define CLASS_KENSEI 4
#define CLASS_WU_JEN 5
#define CLASS_IAIJUTSU 6
#define CLASS_HENSHIN 7
/*
* Languages -- Altrag
*/
#define LANG_COMMON BV00 /* Human language */
#define LANG_NEZUMI BV01 /* Elf language */
#define LANG_DEMON BV02 /* Dwarf language */
#define LANG_ANGEL BV03 /* Halfling language */
#define LANG_VANARA BV04 /* Pixie language */
#define LANG_SPIRIT BV05 /* Minotuar language */
#define LANG_UNDEAD BV06 /* Orc language */
#define LANG_CLAN BV07 /* Insects */
#define LANG_UNKNOWN 0 /* Anything that doesnt fit a category */
#define VALID_LANGS ( LANG_COMMON | LANG_NEZUMI | LANG_DEMON | LANG_ANGEL | LANG_VANARA | LANG_SPIRIT | LANG_UNDEAD | LANG_CLAN )
/* 19 Languages */
/* Defining the bit vectors for tattoos */
#define TATTOO_BULL BV00
#define TATTOO_PANTHER BV01
#define TATTOO_WOLF BV02
#define TATTOO_BEAR BV03
#define TATTOO_RABBIT BV04
#define TATTOO_DRAGON BV05
#define TATTOO_MOON BV06
/*
* TO types for act.
*/
typedef enum { TO_ROOM, TO_NOTVICT, TO_VICT, TO_CHAR, TO_CANSEE } to_types;
#define INIT_WEAPON_CONDITION 12
#define MAX_ITEM_IMPACT 30
/*
* Help table types.
*/
struct help_data
{
HELP_DATA * next;
HELP_DATA * prev;
short level;
char * keyword;
char * text;
};
/*
* Shop types.
*/
#define MAX_TRADE 5
struct shop_data
{
SHOP_DATA * next; /* Next shop in list */
SHOP_DATA * prev; /* Previous shop in list */
int keeper; /* Vnum of shop keeper mob */
short buy_type [MAX_TRADE]; /* Item types shop will buy */
short profit_buy; /* Cost multiplier for buying */
short profit_sell; /* Cost multiplier for selling */
short open_hour; /* First opening hour */
short close_hour; /* First closing hour */
};
#define MAX_FIX 3
#define SHOP_FIX 1
#define SHOP_RECHARGE 2
struct repairshop_data
{
REPAIR_DATA * next; /* Next shop in list */
REPAIR_DATA * prev; /* Previous shop in list */
int keeper; /* Vnum of shop keeper mob */
short fix_type [MAX_FIX]; /* Item types shop will fix */
short profit_fix; /* Cost multiplier for fixing */
short shop_type; /* Repair shop type */
short open_hour; /* First opening hour */
short close_hour; /* First closing hour */
};
/* Mob program structures and defines */
/* Moved these defines here from mud_prog.c as I need them -rkb */
#define MAX_IFS 20 /* should always be generous */
#define IN_IF 0
#define IN_ELSE 1
#define DO_IF 2
#define DO_ELSE 3
#define MAX_PROG_NEST 20
struct act_prog_data
{
struct act_prog_data *next;
void *vo;
};
struct mob_prog_act_list
{
MPROG_ACT_LIST * next;
char * buf;
CHAR_DATA * ch;
OBJ_DATA * obj;
void * vo;
};
struct mob_prog_data
{
MPROG_DATA * next;
short type;
bool triggered;
int resetdelay;
char * arglist;
char * comlist;
};
/* Used to store sleeping mud progs. -rkb */
typedef enum {MP_MOB, MP_ROOM, MP_OBJ} mp_types;
struct mpsleep_data
{
MPSLEEP_DATA * next;
MPSLEEP_DATA * prev;
int timer; /* Pulses to sleep */
mp_types type; /* Mob, Room or Obj prog */
ROOM_INDEX_DATA*room; /* Room when type is MP_ROOM */
/* mprog_driver state variables */
int ignorelevel;
int iflevel;
bool ifstate[MAX_IFS][DO_ELSE];
/* mprog_driver arguments */
char * com_list;
CHAR_DATA * mob;
CHAR_DATA * actor;
OBJ_DATA * obj;
void * vo;
bool single_step;
};
bool MOBtrigger;
/*
* Per-Class stuff.
*/
struct Class_type
{
char * who_name; /* Name for 'who' */
EXT_BV affected;
short attr_prime; /* Prime attribute */
short attr_second; /* Second attribute */
short attr_deficient; /* Deficient attribute */
int resist;
int suscept;
int weapon; /* First weapon */
int guild; /* Vnum of guild room */
short skill_adept; /* Maximum skill level */
short thac0_00; /* Thac0 for level 0 */
short thac0_32; /* Thac0 for level 32 */
short hp_min; /* Min hp gained on leveling */
short hp_max; /* Max hp gained on leveling */
bool fMana; /* Class gains mana on level */
short exp_base; /* Class base exp */
};
/* race dedicated stuff */
struct race_type
{
char race_name [16]; /* Race name */
EXT_BV affected; /* Default affect bitvectors */
short str_plus; /* Str bonus/penalty */
short dex_plus; /* Dex " */
short wis_plus; /* Wis " */
short int_plus; /* Int " */
short con_plus; /* Con " */
short cha_plus; /* Cha " */
short lck_plus; /* Lck " */
short hit;
short mana;
int resist;
int suscept;
int Class_restriction; /* Flags for illegal Classes */
int language; /* Default racial language */
short ac_plus;
short alignment;
EXT_BV attacks;
EXT_BV defenses;
short minalign;
short maxalign;
short exp_multiplier;
short height;
short weight;
short hunger_mod;
short thirst_mod;
short saving_poison_death;
short saving_wand;
short saving_para_petri;
short saving_breath;
short saving_spell_staff;
char * where_name[MAX_WHERE_NAME];
short mana_regen;
short hp_regen;
short race_recall;
};
typedef enum
{
CLAN_DEATH, CLAN_LIFE, CLAN_GROWTH, CLAN_DECAY
} clan_types;
struct clan_data
{
CLAN_DATA * next; /* next clan in list */
CLAN_DATA * prev; /* previous clan in list */
char * filename; /* Clan filename */
char * name; /* Clan name */
char * motto; /* Clan motto */
char * description; /* A brief description of the clan */
char * deity; /* Clan's deity */
char * leader; /* Head clan leader */
char * number1; /* First officer */
char * number2; /* Second officer */
char * badge; /* Clan badge on who/where/to_room */
char * leadrank; /* Leader's rank */
char * onerank; /* Number One's rank */
char * tworank; /* Number Two's rank */
int pkills[7]; /* Number of pkills on behalf of clan */
int pdeaths[7]; /* Number of pkills against clan */
int mkills; /* Number of mkills on behalf of clan */
int mdeaths; /* Number of clan deaths due to mobs */
int illegal_pk; /* Number of illegal pk's by clan */
int score; /* Overall score */
short clan_type; /* See clan type defines */
short favour; /* Deities favour upon the clan */
short strikes; /* Number of strikes against the clan */
short members; /* Number of clan members */
short mem_limit; /* Number of clan members allowed */
short alignment; /* Clan's general alignment */
int board; /* Vnum of clan board */
int clanobj1; /* Vnum of first clan obj */
int clanobj2; /* Vnum of second clan obj */
int clanobj3; /* Vnum of third clan obj */
int clanobj4; /* Vnum of fourth clan obj */
int clanobj5; /* Vnum of fifth clan obj */
int recall; /* Vnum of clan's recall room */
int storeroom; /* Vnum of clan's store room */
int guard1; /* Vnum of clan guard type 1 */
int guard2; /* Vnum of clan guard type 2 */
int Class; /* For guilds */
};
struct council_data
{
COUNCIL_DATA * next; /* next council in list */
COUNCIL_DATA * prev; /* previous council in list */
char * filename; /* Council filename */
char * name; /* Council name */
char * description; /* A brief description of the council */
char * head; /* Council head */
char * head2; /* Council co-head */
char * powers; /* Council powers */
short members; /* Number of council members */
int board; /* Vnum of council board */
int meeting; /* Vnum of council's meeting room */
};
struct deity_data
{
DEITY_DATA * next;
DEITY_DATA * prev;
char * filename;
char * name;
char * description;
short alignment;
short worshippers;
short scorpse;
short sdeityobj;
short savatar;
short srecall;
short flee;
short flee_npcrace;
short flee_npcfoe;
short kill;
short kill_magic;
short kill_npcrace;
short kill_npcfoe;
short sac;
short bury_corpse;
short aid_spell;
short aid;
short backstab;
short steal;
short die;
short die_npcrace;
short die_npcfoe;
short spell_aid;
short dig_corpse;
int race;
int race2;
int Class;
int sex;
int npcrace;
int npcfoe;
int suscept;
int element;
EXT_BV affected;
int susceptnum;
int elementnum;
int affectednum;
int objstat;
};
struct tourney_data
{
int open;
int low_level;
int hi_level;
};
/*
* An affect.
*
* So limited... so few fields... should we add more?
*/
struct affect_data
{
AFFECT_DATA * next;
AFFECT_DATA * prev;
short type;
int duration;
short location;
int modifier;
EXT_BV bitvector;
};
/*
* A SMAUG spell
*/
struct smaug_affect
{
SMAUG_AFF * next;
char * duration;
short location;
char * modifier;
int bitvector; /* this is the bit number */
};
/***************************************************************************
* *
* VALUES OF INTEREST TO AREA BUILDERS *
* (Start of section ... start here) *
* *
***************************************************************************/
/*
* Well known mob virtual numbers.
* Defined in #MOBILES.
*/
#define MOB_VNUM_CITYGUARD 3060
#define MOB_VNUM_VAMPIRE 80
#define MOB_VNUM_ANIMATED_CORPSE 5
#define MOB_VNUM_DEITY 17
/*
* ACT bits for mobs.
* Used in #MOBILES.
*/
#define ACT_IS_NPC 0 /* Auto set for mobs */
#define ACT_SENTINEL 1 /* Stays in one room */
#define ACT_SCAVENGER 2 /* Picks up objects */
#define ACT_ONMAP 3
#define ACT_IS_TATTOOARTIST 4
#define ACT_AGGRESSIVE 5 /* Attacks PC's */
#define ACT_STAY_AREA 6 /* Won't leave area */
#define ACT_WIMPY 7 /* Flees when hurt */
#define ACT_PET 8 /* Auto set for pets */
#define ACT_NOTHING 9 /* Can train PC's */
#define ACT_PRACTICE 10 /* Can practice PC's */
#define ACT_IMMORTAL 11 /* Cannot be killed */
#define ACT_DEADLY 12 /* Has a deadly poison */
#define ACT_POLYSELF 13
#define ACT_META_AGGR 14 /* Attacks other mobs */
#define ACT_GUARDIAN 15 /* Protects master */
#define ACT_RUNNING 16 /* Hunts quickly */
#define ACT_NOWANDER 17 /* Doesn't wander */
#define ACT_MOUNTABLE 18 /* Can be mounted */
#define ACT_MOUNTED 19 /* Is mounted */
#define ACT_SCHOLAR 20 /* Can teach languages */
#define ACT_SECRETIVE 21 /* actions aren't seen */
#define ACT_HARDHAT 22 /* Immune to falling item damage */
#define ACT_MOBINVIS 23 /* Like wizinvis */
#define ACT_NOASSIST 24 /* Doesn't assist mobs */
#define ACT_AUTONOMOUS 25 /* Doesn't auto switch tanks */
#define ACT_PACIFIST 26 /* Doesn't ever fight */
#define ACT_NOATTACK 27 /* No physical attacks */
#define ACT_ANNOYING 28 /* Other mobs will attack */
#define ACT_STATSHIELD 29 /* prevent statting */
#define ACT_PROTOTYPE 30 /* A prototype mob */
#define ACT_BANKER 31 /* act flag for banking code*/
#define ACT_PKTOGGLE 32 /* allows PC's to turn off Pk for a price*/
#define ACT_QUESTMASTER 33 /* Questmaster */
#define ACT_NOQUEST 34 /* Mob cannot be quested to*/
#define ACT_TRAVELMAGE 35 /* Travelmage mob will send you places, for a price */
#define ACT_HEALER 36 /* Healer mob to fix you up */
#define ACT_FORGE 37
#define ACT_RESTRING 38
#define ACT_TRAINER 39
#define ACT_NULL 40
#define MAX_ACT 40
/* 32 acts */
/*
* Bits for 'affected_by'.
* Used in #MOBILES.
*
* hold and flaming are yet uncoded
*/
typedef enum
{
AFF_BLIND, AFF_INVISIBLE, AFF_DETECT_EVIL, AFF_DETECT_INVIS,
AFF_DETECT_MAGIC, AFF_DETECT_HIDDEN, AFF_HOLD, AFF_SANCTUARY,
AFF_FAERIE_FIRE, AFF_INFRARED, AFF_CURSE, AFF_FLAMING, AFF_POISON,
AFF_PROTECT, AFF_PARALYSIS, AFF_SNEAK, AFF_HIDE, AFF_SLEEP, AFF_CHARM,
AFF_FLYING, AFF_PASS_DOOR, AFF_FLOATING, AFF_TRUESIGHT, AFF_DETECTTRAPS,
AFF_SCRYING, AFF_FIRESHIELD, AFF_SHOCKSHIELD, AFF_HAUS1, AFF_ICESHIELD,
AFF_POSSESS, AFF_BERSERK, AFF_AQUA_BREATH, AFF_RECURRINGSPELL,
AFF_CONTAGIOUS, AFF_ACIDMIST, AFF_VENOMSHIELD, MAX_AFFECTED_BY
} affected_by_types;
/*
* Resistant Immune Susceptible flags
*/
#define RIS_FIRE BV00
#define RIS_COLD BV01
#define RIS_ELECTRICITY BV02
#define RIS_ENERGY BV03
#define RIS_BLUNT BV04
#define RIS_PIERCE BV05
#define RIS_SLASH BV06
#define RIS_ACID BV07
#define RIS_POISON BV08
#define RIS_DRAIN BV09
#define RIS_SLEEP BV10
#define RIS_CHARM BV11
#define RIS_HOLD BV12
#define RIS_NONMAGIC BV13
#define RIS_PLUS1 BV14
#define RIS_PLUS2 BV15
#define RIS_PLUS3 BV16
#define RIS_PLUS4 BV17
#define RIS_PLUS5 BV18
#define RIS_PLUS6 BV19
#define RIS_MAGIC BV20
#define RIS_PARALYSIS BV21
#define RIS_LASH BV22
#define RIS_HACK BV23
#define MAX_RIS_FLAG BV24
/* 21 RIS's*/
/* Defense types */
typedef enum
{
DFND_PARRY, DFND_DODGE, DFND_TUMBLE, DFND_GRIP,
MAX_DEFENSE_TYPE
} defense_types;
/*
* Body parts
*/
#define PART_HEAD BV00
#define PART_ARMS BV01
#define PART_LEGS BV02
#define PART_HEART BV03
#define PART_BRAINS BV04
#define PART_GUTS BV05
#define PART_HANDS BV06
#define PART_FEET BV07
#define PART_FINGERS BV08
#define PART_EAR BV09
#define PART_EYE BV10
#define PART_LONG_TONGUE BV11
#define PART_EYESTALKS BV12
#define PART_TENTACLES BV13
#define PART_FINS BV14
#define PART_WINGS BV15
#define PART_TAIL BV16
#define PART_SCALES BV17
/* for combat */
#define PART_CLAWS BV18
#define PART_FANGS BV19
#define PART_HORNS BV20
#define PART_TUSKS BV21
#define PART_TAILATTACK BV22
#define PART_SHARPSCALES BV23
#define PART_BEAK BV24
#define PART_HAUNCH BV25
#define PART_HOOVES BV26
#define PART_PAWS BV27
#define PART_FORELEGS BV28
#define PART_FEATHERS BV29
/*
* Autosave flags
*/
#define SV_DEATH BV00 /* Save on death */
#define SV_KILL BV01 /* Save when kill made */
#define SV_PASSCHG BV02 /* Save on password change */
#define SV_DROP BV03 /* Save on drop */
#define SV_PUT BV04 /* Save on put */
#define SV_GIVE BV05 /* Save on give */
#define SV_AUTO BV06 /* Auto save every x minutes (define in cset) */
#define SV_ZAPDROP BV07 /* Save when eq zaps */
#define SV_AUCTION BV08 /* Save on auction */
#define SV_GET BV09 /* Save on get */
#define SV_RECEIVE BV10 /* Save when receiving */
#define SV_IDLE BV11 /* Save when char goes idle */
#define SV_BACKUP BV12 /* Make backup of pfile on save */
#define SV_QUITBACKUP BV13 /* Backup on quit only --Blod */
#define SV_FILL BV14 /* Save on do_fill */
#define SV_EMPTY BV15 /* Save on do_empty */
/*
* Pipe flags
*/
#define PIPE_TAMPED BV01
#define PIPE_LIT BV02
#define PIPE_HOT BV03
#define PIPE_DIRTY BV04
#define PIPE_FILTHY BV05
#define PIPE_GOINGOUT BV06
#define PIPE_BURNT BV07
#define PIPE_FULLOFASH BV08
/*
* Flags for act_string -- Shaddai
*/
#define STRING_NONE 0
#define STRING_IMM BV01
/*
* old flags for conversion purposes -- will not conflict with the flags below
*/
#define OLD_SF_SAVE_HALF_DAMAGE BV18 /* old save for half damage */
#define OLD_SF_SAVE_NEGATES BV19 /* old save negates affect */
/*
* Skill/Spell flags The minimum BV *MUST* be 11!
*/
#define SF_WATER BV00
#define SF_EARTH BV01
#define SF_AIR BV02
#define SF_ASTRAL BV03
#define SF_AREA BV04 /* is an area spell */
#define SF_DISTANT BV05 /* affects something far away */
#define SF_REVERSE BV06
#define SF_NOSELF BV07 /* Can't target yourself! */
#define SF_UNUSED2 BV08 /* free for use! */
#define SF_ACCUMULATIVE BV09 /* is accumulative */
#define SF_RECASTABLE BV10 /* can be refreshed */
#define SF_NOSCRIBE BV11 /* cannot be scribed */
#define SF_NOBREW BV12 /* cannot be brewed */
#define SF_GROUPSPELL BV13 /* only affects group members */
#define SF_OBJECT BV14 /* directed at an object */
#define SF_CHARACTER BV15 /* directed at a character */
#define SF_SECRETSKILL BV16 /* hidden unless learned */
#define SF_PKSENSITIVE BV17 /* much harder for plr vs. plr */
#define SF_STOPONFAIL BV18 /* stops spell on first failure */
#define SF_NOFIGHT BV19 /* stops if char fighting */
#define SF_NODISPEL BV20 /* stops spell from being dispelled */
#define SF_RANDOMTARGET BV21 /* chooses a random target */
typedef enum { SS_NONE, SS_POISON_DEATH, SS_ROD_WANDS, SS_PARA_PETRI,
SS_BREATH, SS_SPELL_STAFF } save_types;
#define ALL_BITS INT_MAX
#define SDAM_MASK ALL_BITS & ~(BV00 | BV01 | BV02)
#define SACT_MASK ALL_BITS & ~(BV03 | BV04 | BV05)
#define SCLA_MASK ALL_BITS & ~(BV06 | BV07 | BV08)
#define SPOW_MASK ALL_BITS & ~(BV09 | BV10)
#define SSAV_MASK ALL_BITS & ~(BV11 | BV12 | BV13)
typedef enum { SD_NONE, SD_FIRE, SD_COLD, SD_ELECTRICITY, SD_ENERGY, SD_ACID,
SD_POISON, SD_DRAIN } spell_dam_types;
typedef enum { SA_NONE, SA_CREATE, SA_DESTROY, SA_RESIST, SA_SUSCEPT,
SA_DIVINATE, SA_OBSCURE, SA_CHANGE } spell_act_types;
typedef enum { SP_NONE, SP_MINOR, SP_GREATER, SP_MAJOR } spell_power_types;
typedef enum { SC_NONE, SC_LUNAR, SC_SOLAR, SC_TRAVEL, SC_SUMMON,
SC_LIFE, SC_DEATH, SC_ILLUSION } spell_Class_types;
typedef enum { SE_NONE, SE_NEGATE, SE_EIGHTHDAM, SE_QUARTERDAM, SE_HALFDAM,
SE_3QTRDAM, SE_REFLECT, SE_ABSORB } spell_save_effects;
/*
* Sex.
* Used in #MOBILES.
*/
typedef enum { SEX_NEUTRAL, SEX_MALE, SEX_FEMALE } sex_types;
typedef enum
{
TRAP_TYPE_POISON_GAS = 1, TRAP_TYPE_POISON_DART, TRAP_TYPE_POISON_NEEDLE,
TRAP_TYPE_POISON_DAGGER, TRAP_TYPE_POISON_ARROW, TRAP_TYPE_BLINDNESS_GAS,
TRAP_TYPE_SLEEPING_GAS, TRAP_TYPE_FLAME, TRAP_TYPE_EXPLOSION,
TRAP_TYPE_ACID_SPRAY, TRAP_TYPE_ELECTRIC_SHOCK, TRAP_TYPE_BLADE,
TRAP_TYPE_SEX_CHANGE
} trap_types;
#define MAX_TRAPTYPE TRAP_TYPE_SEX_CHANGE
#define TRAP_ROOM BV00
#define TRAP_OBJ BV01
#define TRAP_ENTER_ROOM BV02
#define TRAP_LEAVE_ROOM BV03
#define TRAP_OPEN BV04
#define TRAP_CLOSE BV05
#define TRAP_GET BV06
#define TRAP_PUT BV07
#define TRAP_PICK BV08
#define TRAP_UNLOCK BV09
#define TRAP_N BV10
#define TRAP_S BV11
#define TRAP_E BV12
#define TRAP_W BV13
#define TRAP_U BV14
#define TRAP_D BV15
#define TRAP_EXAMINE BV16
#define TRAP_NE BV17
#define TRAP_NW BV18
#define TRAP_SE BV19
#define TRAP_SW BV20
/*
* Well known object virtual numbers.
* Defined in #OBJECTS.
*/
#define OBJ_VNUM_MONEY_ONE 2
#define OBJ_VNUM_MONEY_SOME 3
#define OBJ_VNUM_CORPSE_NPC 10
#define OBJ_VNUM_CORPSE_PC 11
#define OBJ_VNUM_SEVERED_HEAD 12
#define OBJ_VNUM_TORN_HEART 13
#define OBJ_VNUM_SLICED_ARM 14
#define OBJ_VNUM_SLICED_LEG 15
#define OBJ_VNUM_SPILLED_GUTS 16
#define OBJ_VNUM_BLOOD 17
#define OBJ_VNUM_BLOODSTAIN 18
#define OBJ_VNUM_SCRAPS 19
#define OBJ_VNUM_MUSHROOM 20
#define OBJ_VNUM_LIGHT_BALL 21
#define OBJ_VNUM_SPRING 22
#define OBJ_VNUM_SKIN 23
#define OBJ_VNUM_SLICE 24
#define OBJ_VNUM_SHOPPING_BAG 25
#define OBJ_VNUM_BLOODLET 26
#define OBJ_VNUM_FIRE 30
#define OBJ_VNUM_TRAP 31
#define OBJ_VNUM_PORTAL 32
#define OBJ_VNUM_BLACK_POWDER 33
#define OBJ_VNUM_SCROLL_SCRIBING 34
#define OBJ_VNUM_FLASK_BREWING 35
#define OBJ_VNUM_NOTE 36
#define OBJ_VNUM_DEITY 64
#define OBJ_VNUM_CLOTHING 93
/*
* Item types.
* Used in #OBJECTS.
*/
typedef enum
{
ITEM_NONE, ITEM_LIGHT, ITEM_SCROLL, ITEM_WAND, ITEM_STAFF,
ITEM_WEAPON, ITEM_FIREWEAPON, ITEM_MISSILE, ITEM_TREASURE, ITEM_ARMOR,
ITEM_POTION, ITEM_WORN, ITEM_FURNITURE, ITEM_TRASH, ITEM_OLDTRAP,
ITEM_CONTAINER, ITEM_NOTE, ITEM_DRINK_CON, ITEM_KEY, ITEM_FOOD,
ITEM_MONEY, ITEM_PEN, ITEM_BOAT, ITEM_CORPSE_NPC, ITEM_CORPSE_PC,
ITEM_FOUNTAIN, ITEM_PILL, ITEM_BLOOD, ITEM_BLOODSTAIN, ITEM_SCRAPS,
ITEM_PIPE, ITEM_HERB_CON, ITEM_HERB, ITEM_INCENSE, ITEM_FIRE,
ITEM_BOOK, ITEM_SWITCH, ITEM_LEVER, ITEM_PULLCHAIN, ITEM_BUTTON,
ITEM_DIAL, ITEM_RUNE, ITEM_RUNEPOUCH, ITEM_MATCH, ITEM_TRAP,
ITEM_MAP, ITEM_PORTAL, ITEM_PAPER, ITEM_TINDER, ITEM_LOCKPICK,
ITEM_SPIKE, ITEM_DISEASE, ITEM_OIL, ITEM_FUEL, ITEM_EMPTY1,
ITEM_EMPTY2, ITEM_MISSILE_WEAPON, ITEM_PROJECTILE, ITEM_QUIVER, ITEM_SHOVEL,
ITEM_SALVE, ITEM_COOK, ITEM_KEYRING, ITEM_ODOR, ITEM_DYE,
ITEM_SEWKIT, ITEM_HANDMADE, ITEM_ORE, ITEM_DRINK_MIX, ITEM_QUESTTOKEN,
ITEM_FISHING_POLE, ITEM_FISHING_BAIT, ITEM_CHANCE
} item_types;
#define MAX_ITEM_TYPE ITEM_CHANCE
/*
* Extra flags.
* Used in #OBJECTS.
*/
typedef enum
{
ITEM_GLOW, ITEM_HUM, ITEM_DARK, ITEM_LOYAL, ITEM_EVIL,
ITEM_INVIS, ITEM_MAGIC, ITEM_NODROP, ITEM_BLESS, ITEM_ANTI_GOOD,
ITEM_ANTI_EVIL, ITEM_ANTI_NEUTRAL, ITEM_NOREMOVE, ITEM_INVENTORY, ITEM_ORGANIC,
ITEM_METAL, ITEM_DONATION, ITEM_CLANOBJECT, ITEM_CLANCORPSE, ITEM_HIDDEN,
ITEM_POISONED, ITEM_COVERING, ITEM_DEATHROT, ITEM_BURIED, ITEM_PROTOTYPE,
ITEM_NOLOCATE, ITEM_GROUNDROT, ITEM_LOOTABLE, ITEM_ONMAP, ITEM_QUEST,
ITEM_LODGED, ITEM_REFINED, ITEM_UNIQUE, ITEM_ELITE,
ITEM_ANTI_DEATH, ITEM_ANTI_LIFE, ITEM_ANTI_DECAY, ITEM_ANTI_GROWTH,
MAX_ITEM_FLAG
} item_extra_flags;
/* Magic flags - extra extra_flags for objects that are used in spells */
#define ITEM_RETURNING BV00
#define ITEM_BACKSTABBER BV01
#define ITEM_BANE BV02
#define ITEM_MAGIC_LOYAL BV03
#define ITEM_HASTE BV04
#define ITEM_DRAIN BV05
#define ITEM_LIGHTNING_BLADE BV06
#define ITEM_PKDISARMED BV07 /* Maybe temporary, not a perma flag */
/* Lever/dial/switch/button/pullchain flags */
#define TRIG_UP BV00
#define TRIG_UNLOCK BV01
#define TRIG_LOCK BV02
#define TRIG_D_NORTH BV03
#define TRIG_D_SOUTH BV04
#define TRIG_D_EAST BV05
#define TRIG_D_WEST BV06
#define TRIG_D_UP BV07
#define TRIG_D_DOWN BV08
#define TRIG_DOOR BV09
#define TRIG_CONTAINER BV10
#define TRIG_OPEN BV11
#define TRIG_CLOSE BV12
#define TRIG_PASSAGE BV13
#define TRIG_OLOAD BV14
#define TRIG_MLOAD BV15
#define TRIG_TELEPORT BV16
#define TRIG_TELEPORTALL BV17
#define TRIG_TELEPORTPLUS BV18
#define TRIG_DEATH BV19
#define TRIG_CAST BV20
#define TRIG_FAKEBLADE BV21
#define TRIG_RAND4 BV22
#define TRIG_RAND6 BV23
#define TRIG_TRAPDOOR BV24
#define TRIG_ANOTHEROOM BV25
#define TRIG_USEDIAL BV26
#define TRIG_ABSOLUTEVNUM BV27
#define TRIG_SHOWROOMDESC BV28
#define TRIG_AUTORETURN BV29
#define TELE_SHOWDESC BV00
#define TELE_TRANSALL BV01
#define TELE_TRANSALLPLUS BV02
/*
* Wear flags.
* Used in #OBJECTS.
*/
#define ITEM_TAKE BV00
#define ITEM_WEAR_HEAD BV01
#define ITEM_WEAR_BODY BV02
#define ITEM_WEAR_BACK BV03
#define ITEM_WEAR_ARMS BV04
#define ITEM_WEAR_HANDS BV05
#define ITEM_WIELD BV06
#define ITEM_WEAR_SHIELD BV07
#define ITEM_HOLD BV08
#define ITEM_WEAR_LEGS BV09
#define ITEM_WEAR_FEET BV10
#define ITEM_LODGE_RIB BV11
#define ITEM_LODGE_ARM BV12
#define ITEM_LODGE_LEG BV13
#define ITEM_MISSILE_WIELD BV14
#define ITEM_DUAL_WIELD BV15
#define ITEM_WEAR_MAX 13
/*
* Apply types (for affects).
* Used in #OBJECTS.
*/
typedef enum
{
APPLY_NONE, APPLY_STR, APPLY_DEX, APPLY_INT, APPLY_WIS,
APPLY_CON, APPLY_SEX, APPLY_CLASS, APPLY_LEVEL, APPLY_AGE,
APPLY_HEIGHT, APPLY_WEIGHT, APPLY_MANA, APPLY_HIT, APPLY_MOVE,
APPLY_GOLD, APPLY_EXP, APPLY_AC, APPLY_HITROLL, APPLY_DAMROLL,
APPLY_SAVING_POISON, APPLY_SAVING_ROD, APPLY_SAVING_PARA, APPLY_SAVING_BREATH, APPLY_SAVING_SPELL,
APPLY_CHA, APPLY_AFFECT, APPLY_RESISTANT, APPLY_IMMUNE, APPLY_SUSCEPTIBLE,
APPLY_WEAPONSPELL, APPLY_LCK, APPLY_BACKSTAB, APPLY_PICK, APPLY_TRACK,
APPLY_STEAL, APPLY_SNEAK, APPLY_HIDE, APPLY_PALM, APPLY_DETRAP,
APPLY_DODGE, APPLY_PEEK, APPLY_SCAN, APPLY_GOUGE, APPLY_SEARCH,
APPLY_MOUNT, APPLY_DISARM, APPLY_KICK, APPLY_PARRY, APPLY_BASH,
APPLY_STUN, APPLY_PUNCH, APPLY_CLIMB, APPLY_GRIP, APPLY_SCRIBE,
APPLY_BREW, APPLY_WEARSPELL, APPLY_REMOVESPELL, APPLY_STRIPSN, APPLY_REMOVE,
APPLY_DIG, APPLY_FULL, APPLY_THIRST, APPLY_DRUNK, APPLY_BLOOD,
APPLY_COOK, APPLY_RECURRINGSPELL, APPLY_CONTAGIOUS, APPLY_EXT_AFFECT, APPLY_ODOR,
APPLY_ROOMFLAG, APPLY_SECTORTYPE, APPLY_ROOMLIGHT, APPLY_TELEVNUM, APPLY_TELEDELAY, MAX_APPLY_TYPE
} apply_types;
#define REVERSE_APPLY 1000
/*
* Values for containers (value[1]).
* Used in #OBJECTS.
*/
#define CONT_CLOSEABLE BV00
#define CONT_PICKPROOF BV01
#define CONT_CLOSED BV02
#define CONT_LOCKED BV03
#define CONT_EATKEY BV04
/*
* Sitting/Standing/Sleeping/Sitting on/in/at Objects - Xerves
* Used for furniture (value[2]) in the #OBJECTS Section
*/
#define SIT_ON BV00
#define SIT_IN BV01
#define SIT_AT BV02
#define STAND_ON BV03
#define STAND_IN BV04
#define STAND_AT BV05
#define SLEEP_ON BV06
#define SLEEP_IN BV07
#define SLEEP_AT BV08
#define REST_ON BV09
#define REST_IN BV10
#define REST_AT BV11
/*
* Well known room virtual numbers.
* Defined in #ROOMS.
*/
#define ROOM_VNUM_LIMBO 2
#define ROOM_VNUM_CHAT 1200
#define ROOM_VNUM_TEMPLE 10040
#define ROOM_VNUM_ALTAR 10040
#define ROOM_VNUM_RECALL 10040
#define ROOM_VNUM_SCHOOL 4022
#define ROOM_VNUM_MORGUE 10040
#define ROOM_AUTH_START 100
#define ROOM_VNUM_HALLOFFALLEN 10040
#define ROOM_VNUM_DEADLY 10040
#define ROOM_VNUM_HELL 6
#define ROOM_VNUM_WEAPON 10084
#define ROOM_VNUM_ARMOR 10083
#define ROOM_VNUM_OTHER 10090
/*
* Sector types.
* Used in #ROOMS.
*/
typedef enum
{
SECT_INSIDE, SECT_CITY, SECT_FIELD, SECT_FOREST, SECT_HILLS, SECT_MOUNTAIN,
SECT_WATER_SWIM, SECT_WATER_NOSWIM, SECT_UNDERWATER, SECT_AIR, SECT_DESERT,
SECT_RIVER, SECT_OCEANFLOOR, SECT_UNDERGROUND, SECT_JUNGLE, SECT_SWAMP,
SECT_TUNDRA, SECT_ICE, SECT_OCEAN, SECT_LAVA, SECT_SHORE, SECT_TREE, SECT_STONE,
SECT_QUICKSAND, SECT_WALL, SECT_GLACIER, SECT_EXIT, SECT_TRAIL, SECT_BLANDS,
SECT_GRASSLAND, SECT_SCRUB, SECT_BARREN, SECT_BRIDGE, SECT_ROAD, SECT_DUNNO,
SECT_MAX
} sector_types;
/*
* Room flags now use ext_bit_vectors Tommi 2005
*/
typedef enum
{
ROOM_DARK, ROOM_DEATH, ROOM_NO_MOB, ROOM_INDOORS, ROOM_LAWFUL, ROOM_NEUTRAL, ROOM_CHAOTIC,
ROOM_NO_MAGIC, ROOM_TUNNEL, ROOM_PRIVATE, ROOM_SAFE, ROOM_SOLITARY, ROOM_PET_SHOP, ROOM_NO_RECALL,
ROOM_DONATION, ROOM_NODROPALL, ROOM_SILENCE, ROOM_LOGSPEECH, ROOM_NODROP, ROOM_CLANSTOREROOM,
ROOM_NO_SUMMON, ROOM_NO_ASTRAL, ROOM_TELEPORT, ROOM_TELESHOWDESC, ROOM_NOFLOOR, ROOM_NOSUPPLICATE,
ROOM_ARENA, ROOM_NOMISSILE, ROOM_MAP, ROOM_NOBUY, ROOM_PROTOTYPE, ROOM_DND, ROOM_LOCKER, ROOM_MAX
} room_types;
/*
* Directions.
* Used in #ROOMS.
*/
typedef enum
{
DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_UP, DIR_DOWN,
DIR_NORTHEAST, DIR_NORTHWEST, DIR_SOUTHEAST, DIR_SOUTHWEST, DIR_SOMEWHERE
} dir_types;
#define PT_WATER 100
#define PT_AIR 200
#define PT_EARTH 300
#define PT_FIRE 400
/*
* Push/pull types for exits -Thoric
* To differentiate between the current of a river, or a strong gust of wind
*/
typedef enum
{
PULL_UNDEFINED, PULL_VORTEX, PULL_VACUUM, PULL_SLIP, PULL_ICE, PULL_MYSTERIOUS,
PULL_CURRENT = PT_WATER, PULL_WAVE, PULL_WHIRLPOOL, PULL_GEYSER,
PULL_WIND = PT_AIR, PULL_STORM, PULL_COLDWIND, PULL_BREEZE,
PULL_LANDSLIDE = PT_EARTH, PULL_SINKHOLE, PULL_QUICKSAND, PULL_EARTHQUAKE,
PULL_LAVA = PT_FIRE, PULL_HOTAIR
} dir_pulltypes;
#define MAX_DIR DIR_SOUTHWEST /* max for normal walking */
#define DIR_PORTAL DIR_SOMEWHERE /* portal direction */
/*
* Exit flags. EX_RES# are reserved for use by the
* Used in #ROOMS. SMAUG development team
*/
#define EX_ISDOOR BV00
#define EX_CLOSED BV01
#define EX_LOCKED BV02
#define EX_SECRET BV03
#define EX_SWIM BV04
#define EX_PICKPROOF BV05
#define EX_FLY BV06
#define EX_CLIMB BV07
#define EX_DIG BV08
#define EX_EATKEY BV09
#define EX_NOPASSDOOR BV10
#define EX_HIDDEN BV11
#define EX_PASSAGE BV12
#define EX_PORTAL BV13
#define EX_RES1 BV14
#define EX_RES2 BV15
#define EX_xCLIMB BV16
#define EX_xENTER BV17
#define EX_xLEAVE BV18
#define EX_xAUTO BV19
#define EX_NOFLEE BV20
#define EX_xSEARCHABLE BV21
#define EX_BASHED BV22
#define EX_BASHPROOF BV23
#define EX_NOMOB BV24
#define EX_WINDOW BV25
#define EX_xLOOK BV26
#define EX_ISBOLT BV27
#define EX_BOLTED BV28
#define EX_OVERLAND BV29
#define MAX_EXFLAG 29
/*
* Equpiment wear locations.
* Used in #RESETS.
*/
typedef enum
{
WEAR_NONE = -1, WEAR_LIGHT = 0,
WEAR_HEAD, WEAR_BODY, WEAR_BACK, WEAR_ARMS, WEAR_HANDS,
WEAR_WIELD, WEAR_SHIELD, WEAR_HOLD, WEAR_LEGS, WEAR_FEET,
WEAR_LODGE_RIB, WEAR_LODGE_ARM, WEAR_LODGE_LEG, MAX_WEAR,
WEAR_DUAL_WIELD, WEAR_MISSILE_WIELD
} wear_locations;
/* Auth Flags */
#define FLAG_WRAUTH 1
#define FLAG_AUTH 2
/***************************************************************************
* *
* VALUES OF INTEREST TO AREA BUILDERS *
* (End of this section ... stop here) *
* *
***************************************************************************/
/*
* Positions.
*/
typedef enum
{
POS_DEAD, POS_MORTAL, POS_INCAP, POS_STUNNED, POS_SLEEPING, POS_BERSERK,
POS_RESTING, POS_AGGRESSIVE, POS_SITTING, POS_FIGHTING, POS_DEFENSIVE,
POS_EVASIVE, POS_STANDING, POS_MOUNTED, POS_SHOVE, POS_DRAG
} positions;
/*
* Styles.
*/
typedef enum
{
STYLE_BERSERK, STYLE_AGGRESSIVE, STYLE_FIGHTING, STYLE_DEFENSIVE, STYLE_EVASIVE
} styles;
/*
* ACT bits for players.
*/
typedef enum
{
PLR_IS_NPC,PLR_BOUGHT_PET, PLR_SHOVEDRAG, PLR_AUTOEXIT, PLR_AUTOLOOT,
PLR_AUTOSAC, PLR_BLANK, PLR_OUTCAST, PLR_BRIEF, PLR_COMBINE, PLR_PROMPT,
PLR_TELNET_GA, PLR_HOLYLIGHT, PLR_WIZINVIS, PLR_ROOMVNUM, PLR_SILENCE,
PLR_NO_EMOTE, PLR_ATTACKER, PLR_NO_TELL, PLR_LOG, PLR_DENY, PLR_FREEZE,
PLR_THIEF, PLR_KILLER, PLR_LITTERBUG, PLR_ANSI, PLR_RIP, PLR_NICE, PLR_FLEE,
PLR_AUTOGOLD, PLR_AUTOMAP, PLR_AFK, PLR_INVISPROMPT, PLR_ONMAP, PLR_MAPEDIT, PLR_COMPASS,
PLR_QUESTOR, PLR_MIP, PLR_EXEMPT
} player_flags;
/* Bits for pc_data->flags. */
#define PCFLAG_R1 BV00
#define PCFLAG_DEADLY BV01
#define PCFLAG_UNAUTHED BV02
#define PCFLAG_NORECALL BV03
#define PCFLAG_NOINTRO BV04
#define PCFLAG_GAG BV05
#define PCFLAG_RETIRED BV06
#define PCFLAG_GUEST BV07
#define PCFLAG_NOSUMMON BV08
#define PCFLAG_PAGERON BV09
#define PCFLAG_NOTITLE BV10
#define PCFLAG_GROUPWHO BV11
#define PCFLAG_DIAGNOSE BV12
#define PCFLAG_HIGHGAG BV13
#define PCFLAG_WATCH BV14 /* see function "do_watch" */
#define PCFLAG_HELPSTART BV15 /* Force new players to help start */
#define PCFLAG_DND BV16 /* Do Not Disturb flage */
/* DND flag prevents unwanted transfers of imms by lower level imms */
#define PCFLAG_IDLE BV17 /* Player is Linkdead */
#define PCFLAG_AUTOFLAGS BV18
#define PCFLAG_SECTORD BV19
#define PCFLAG_ANAME BV20
#define PCFLAG_HELPER BV21
typedef enum
{
TIMER_NONE, TIMER_RECENTFIGHT, TIMER_SHOVEDRAG, TIMER_DO_FUN,
TIMER_APPLIED, TIMER_PKILLED, TIMER_ASUPRESSED, TIMER_NUISANCE
} timer_types;
struct timer_data
{
TIMER * prev;
TIMER * next;
DO_FUN * do_fun;
int value;
short type;
int count;
};
/*
* Channel bits.
*/
#define CHANNEL_AUCTION BV00
#define CHANNEL_GOSSIP BV01
#define CHANNEL_OOC BV02
#define CHANNEL_IMMTALK BV03
#define CHANNEL_YELL BV04
#define CHANNEL_MONITOR BV05
#define CHANNEL_LOG BV06
#define CHANNEL_CLAN BV07
#define CHANNEL_BUILD BV08
#define CHANNEL_AVTALK BV09
#define CHANNEL_COMM BV10
#define CHANNEL_TELLS BV11
#define CHANNEL_NEWBIE BV12
#define CHANNEL_RACETALK BV13
#define CHANNEL_WARN BV14
#define CHANNEL_WHISPER BV15
#define CHANNEL_ANNOUNCE BV16
#define CHANNEL_SAYTO BV17
/* Area defines - Scryn 8/11
*
*/
#define AREA_DELETED BV00
#define AREA_LOADED BV01
/* Area flags - Narn Mar/96 */
#define AFLAG_NOPKILL BV00
#define AFLAG_FREEKILL BV01
#define AFLAG_NOTELEPORT BV02
#define AFLAG_SPELLLIMIT BV03
/*
* Prototype for a mob.
* This is the in-memory version of #MOBILES.
*/
struct mob_index_data
{
MOB_INDEX_DATA * next;
MOB_INDEX_DATA * next_sort;
SPEC_FUN * spec_fun;
SHOP_DATA * pShop;
REPAIR_DATA * rShop;
MPROG_DATA * mudprogs;
EXT_BV progtypes;
char * player_name;
char * short_descr;
char * long_descr;
char * description;
int vnum;
short count;
short killed;
short sex;
short level;
EXT_BV act;
EXT_BV affected_by;
short alignment;
short mobthac0; /* Unused */
short ac;
short hitnodice;
short hitsizedice;
short hitplus;
short damnodice;
short damsizedice;
short damplus;
short numattacks;
int gold;
int exp;
int xflags;
int immune;
int resistant;
int susceptible;
EXT_BV attacks;
EXT_BV defenses;
int speaks;
int speaking;
short position;
short defposition;
short height;
short weight;
short race;
short Class;
short hitroll;
short damroll;
short perm_str;
short perm_int;
short perm_wis;
short perm_dex;
short perm_con;
short perm_cha;
short perm_lck;
short saving_poison_death;
short saving_wand;
short saving_para_petri;
short saving_breath;
short saving_spell_staff;
};
struct hunt_hate_fear
{
char * name;
CHAR_DATA * who;
};
struct fighting_data
{
CHAR_DATA * who;
int xp;
short align;
short duration;
short timeskilled;
};
struct editor_data
{
short numlines;
short on_line;
short size;
char line[99][160];
};
struct extracted_char_data
{
EXTRACT_CHAR_DATA * next;
CHAR_DATA * ch;
ROOM_INDEX_DATA * room;
ch_ret retcode;
bool extract;
};
/*
* One character (PC or NPC).
* (Shouldn't most of that build interface stuff use substate, dest_buf,
* spare_ptr and tempnum? Seems a little redundant)
*/
struct char_data
{
CHAR_DATA * next;
CHAR_DATA * prev;
CHAR_DATA * next_in_room;
CHAR_DATA * prev_in_room;
CHAR_DATA * master;
CHAR_DATA * leader;
FIGHT_DATA * fighting;
CHAR_DATA * reply;
CHAR_DATA * retell;
CHAR_DATA * switched;
CHAR_DATA * mount;
HHF_DATA * hunting;
HHF_DATA * fearing;
HHF_DATA * hating;
SPEC_FUN * spec_fun;
MPROG_ACT_LIST * mpact;
int mpactnum;
short mpscriptpos;
MOB_INDEX_DATA * pIndexData;
DESCRIPTOR_DATA * desc;
AFFECT_DATA * first_affect;
AFFECT_DATA * last_affect;
OBJ_DATA * first_carrying;
OBJ_DATA * last_carrying;
ROOM_INDEX_DATA * in_room;
ROOM_INDEX_DATA * was_in_room;
PC_DATA * pcdata;
DO_FUN * last_cmd;
DO_FUN * prev_cmd; /* mapping */
void * dest_buf; /* This one is to assign to differen things */
char * alloc_ptr; /* Must str_dup and free this one */
void * spare_ptr;
int tempnum;
EDITOR_DATA * editor;
TIMER * first_timer;
TIMER * last_timer;
char * name;
char * short_descr;
char * long_descr;
char * description;
short num_fighting;
short substate;
short sex;
short Class;
short race;
short level;
short trust;
int played;
time_t logon;
time_t save_time;
short timer;
short wait;
short hit;
short max_hit;
short mana;
short max_mana;
short move;
short max_move;
short practice;
short numattacks;
short remorts;
int gold;
int exp;
EXT_BV act;
EXT_BV affected_by;
EXT_BV no_affected_by;
int carry_weight;
int carry_number;
int xflags;
int no_immune;
int no_resistant;
int no_susceptible;
int immune;
int resistant;
int susceptible;
EXT_BV attacks;
EXT_BV defenses;
int speaks;
int speaking;
short saving_poison_death;
short saving_wand;
short saving_para_petri;
short saving_breath;
short saving_spell_staff;
short alignment;
short barenumdie;
short baresizedie;
short mobthac0;
short hitroll;
short damroll;
short hitplus;
short damplus;
short position;
short defposition;
short style;
short height;
short weight;
short armor;
short wimpy;
int deaf;
short perm_str;
short perm_int;
short perm_wis;
short perm_dex;
short perm_con;
short perm_cha;
short perm_lck;
short mod_str;
short mod_int;
short mod_wis;
short mod_dex;
short mod_con;
short mod_cha;
short mod_lck;
int retran;
int regoto;
short mobinvis; /* Mobinvis level SB */
short colors[MAX_COLORS];
int home_vnum; /* hotboot tracker */
short x; /* Coordinates on the overland map - Samson 7-31-99 */
short y;
short map; /* Which map are they on? - Samson 8-3-99 */
short sector; /* Type of terrain to restrict a wandering mob to on overland - Samson 7-27-00 */
int hp_from_gain; /*for stat training*/
long tattoo;
OBJ_DATA * on;
short cmd_recurse;
CHAR_DATA * challenged;
CHAR_DATA * betted_on;
int bet_amt;
int pos;
};
struct killed_data
{
int vnum;
char count;
};
/* Structure for link list of ignored players */
struct ignore_data
{
IGNORE_DATA *next;
IGNORE_DATA *prev;
char *name;
};
/* Max number of people you can ignore at once */
#define MAX_IGN 6
/*
* Data which only PC's have.
*/
struct pc_data
{
CHAR_DATA * pet;
CLAN_DATA * clan;
COUNCIL_DATA * council;
AREA_DATA * area;
DEITY_DATA * deity;
char * homepage;
char * clan_name;
char * council_name;
char * deity_name;
char * pwd;
char * bamfin;
char * bamfout;
char * filename; /* For the safe mset name -Shaddai */
char * rank;
char * title;
char * bestowments; /* Special bestowed commands */
int flags; /* Whether the player is deadly and whatever else we add. */
int pkills; /* Number of pkills on behalf of clan */
int pdeaths; /* Number of times pkilled (legally) */
int mkills; /* Number of mobs killed */
int mdeaths; /* Number of deaths due to mobs */
int illegal_pk; /* Number of illegal pk's committed */
long int outcast_time; /* The time at which the char was outcast */
NUISANCE_DATA *nuisance; /* New Nuisance structure */
char * questarea; /* Questmaster */
char * questroom; /* Questmaster */
CHAR_DATA * questgiver; /* Questmaster */
short nextquest; /* Questmaster */
short countdown; /* Questmaster */
int questobj; /* Questmaster */
int questmob;
long int restore_time; /* The last time the char did a restore all */
int r_range_lo; /* room range */
int r_range_hi;
int m_range_lo; /* mob range */
int m_range_hi;
int o_range_lo; /* obj range */
int o_range_hi;
short wizinvis; /* wizinvis level */
short min_snoop; /* minimum snoop level */
short condition [MAX_CONDS];
short learned [MAX_SKILL];
KILLED_DATA killed [MAX_KILLTRACK];
short quest_number; /* current *QUEST BEING DONE* DON'T REMOVE! */
short quest_curr; /* current number of quest points */
int quest_accum; /* quest points accumulated in players life */
short favor; /* deity favor */
short charmies; /* Number of Charmies */
//int auth_state;
time_t release_date; /* Auto-helling.. Altrag */
char * helled_by;
char * bio; /* Personal Bio */
char * authed_by; /* what crazy imm authed this name ;) */
SKILLTYPE * special_skills[MAX_PERSONAL]; /* personalized skills/spells */
char * prompt; /* User config prompts */
char * fprompt; /* Fight prompts */
char * subprompt; /* Substate prompt */
short pagerlen; /* For pager (NOT menus) */
bool openedtourney;
IGNORE_DATA * first_ignored; /* keep track of who to ignore */
IGNORE_DATA * last_ignored;
char ** tell_history; /* for immortal only command lasttell */
short lt_index; /* last_tell index */
int balance; /* for banking code*/
LOCKER_DATA * locker;
ROOM_INDEX_DATA * locker_room; /* Pointer to virtual room */
short locker_vnum;
short remorts;
bool hotboot; /* hotboot tracker */
short secedit; /* Overland Map OLC - Samson 8-1-99 */
char * sec_code; /* MIP Security Code */
char * mip_ver; /* MIP Version Info */
#ifdef IMC
IMC_CHARDATA *imcchardata;
#endif
int version;
};
struct locker_data
{
short capacity;
short holding;
int flags;
int room;
};
/*
* Liquids.
*/
#define LIQ_WATER 0
#define LIQ_MAX 18
struct liq_type
{
char * liq_name;
char * liq_color;
short liq_affect[3];
};
/* Damage types from the attack_table[]
modified for new weapon_types - Grimm
Trimmed down to reduce duplicated types - Samson 1-9-00 */
typedef enum
{
DAM_HIT, DAM_SLASH, DAM_STAB, DAM_HACK, DAM_CRUSH, DAM_LASH,
DAM_PIERCE, DAM_THRUST, DAM_SLICE, DAM_MAGIC, MAX_DAM_TYPE
} damage_types;
/* New Weapon type array for profficiency checks - Samson 11-20-99 */
typedef enum
{
WEP_BAREHAND, WEP_SWORD, WEP_DAGGER, WEP_WHIP, WEP_TALON, WEP_HAMMER,
WEP_ARCHERY, WEP_BLOWGUN, WEP_SLING, WEP_AXE, WEP_SPEAR, WEP_STAFF, WEP_POLEARM,
WEP_MAX
} weapon_types;
/* New projectile type array for archery weapons - Samson 1-9-00 */
typedef enum
{
PROJ_BOLT, PROJ_ARROW, PROJ_DART, PROJ_STONE, PROJ_MAX
} projectile_types;
/*
* Extra description data for a room or object.
*/
struct extra_descr_data
{
EXTRA_DESCR_DATA *next; /* Next in list */
EXTRA_DESCR_DATA *prev; /* Previous in list */
char *keyword; /* Keyword in look/examine */
char *description; /* What to see */
};
/*
* Prototype for an object.
*/
struct obj_index_data
{
OBJ_INDEX_DATA * next;
OBJ_INDEX_DATA * next_sort;
EXTRA_DESCR_DATA * first_extradesc;
EXTRA_DESCR_DATA * last_extradesc;
AFFECT_DATA * first_affect;
AFFECT_DATA * last_affect;
MPROG_DATA * mudprogs; /* objprogs */
EXT_BV progtypes; /* objprogs */
char * name;
char * short_descr;
char * description;
char * action_desc;
int vnum;
short level;
short item_type;
EXT_BV extra_flags;
int magic_flags; /*Need more bitvectors for spells - Scryn*/
int wear_flags;
short count;
short weight;
int cost;
int value [6];
int serial;
short layers;
int rent; /* Unused */
};
/*
* One object.
*/
struct obj_data
{
OBJ_DATA * next;
OBJ_DATA * prev;
OBJ_DATA * next_content;
OBJ_DATA * prev_content;
OBJ_DATA * first_content;
OBJ_DATA * last_content;
OBJ_DATA * in_obj;
CHAR_DATA * carried_by;
EXTRA_DESCR_DATA * first_extradesc;
EXTRA_DESCR_DATA * last_extradesc;
AFFECT_DATA * first_affect;
AFFECT_DATA * last_affect;
OBJ_INDEX_DATA * pIndexData;
ROOM_INDEX_DATA * in_room;
char * name;
char * short_descr;
char * description;
char * action_desc;
char * creator;
short item_type;
short mpscriptpos;
EXT_BV extra_flags;
int magic_flags; /*Need more bitvectors for spells - Scryn*/
int wear_flags;
MPROG_ACT_LIST * mpact; /* mudprogs */
int mpactnum; /* mudprogs */
short wear_loc;
short weight;
int cost;
short level;
short timer;
int value [6];
short count; /* support for object grouping */
int serial; /* serial number */
int room_vnum; /* hotboot tracker */
short x; /* Object coordinates on overland maps - Samson 8-21-99 */
short y;
short map; /* Which map is it on? - Samson 8-21-99 */
short sewkit;
short handmade;
short material;
};
/*
* Exit data.
*/
struct exit_data
{
EXIT_DATA * prev; /* previous exit in linked list */
EXIT_DATA * next; /* next exit in linked list */
EXIT_DATA * rexit; /* Reverse exit pointer */
ROOM_INDEX_DATA * to_room; /* Pointer to destination room */
char * keyword; /* Keywords for exit or door */
char * description; /* Description of exit */
int vnum; /* Vnum of room exit leads to */
int rvnum; /* Vnum of room in opposite dir */
int exit_info; /* door states & other flags */
int key; /* Key vnum */
short vdir; /* Physical "direction" */
short distance; /* how far to the next room */
short pull; /* pull of direction (current) */
short pulltype; /* type of pull (current, wind) */
short x; /* Coordinates to Overland Map - Samson 7-31-99 */
short y;
};
/*
* Reset commands:
* '*': comment
* 'M': read a mobile
* 'O': read an object
* 'P': put object in object
* 'G': give object to mobile
* 'E': equip object to mobile
* 'H': hide an object
* 'B': set a bitvector
* 'T': trap an object
* 'D': set state of door
* 'R': randomize room exits
* 'S': stop (end of list)
*/
/*
* Area-reset definition.
*/
struct reset_data
{
RESET_DATA * next;
RESET_DATA * prev;
RESET_DATA * first_reset;
RESET_DATA * last_reset;
RESET_DATA * next_reset;
RESET_DATA * prev_reset;
char command;
int extra;
int arg1;
int arg2;
int arg3;
};
/* Constants for arg2 of 'B' resets. */
#define BIT_RESET_DOOR 0
#define BIT_RESET_OBJECT 1
#define BIT_RESET_MOBILE 2
#define BIT_RESET_ROOM 3
#define BIT_RESET_TYPE_MASK 0xFF /* 256 should be enough */
#define BIT_RESET_DOOR_THRESHOLD 8
#define BIT_RESET_DOOR_MASK 0xFF00 /* 256 should be enough */
#define BIT_RESET_SET BV30
#define BIT_RESET_TOGGLE BV31
#define BIT_RESET_FREEBITS 0x3FFF0000 /* For reference */
/*
* Area definition.
*/
struct area_data
{
AREA_DATA * next;
AREA_DATA * prev;
AREA_DATA * next_sort;
AREA_DATA * prev_sort;
AREA_DATA * next_sort_name; /* Used for alphanum. sort */
AREA_DATA * prev_sort_name; /* Ditto, Fireblade */
char * name;
char * filename;
int flags;
short status; /* h, 8/11 */
short age;
short nplayer;
short reset_frequency;
int low_r_vnum;
int hi_r_vnum;
int low_o_vnum;
int hi_o_vnum;
int low_m_vnum;
int hi_m_vnum;
int low_soft_range;
int hi_soft_range;
int low_hard_range;
int hi_hard_range;
int spelllimit;
int curr_spell_count;
char * author; /* Scryn */
char * resetmsg; /* Rennard */
short max_players;
int mkills;
int mdeaths;
int pkills;
int pdeaths;
int gold_looted;
int illegal_pk;
int high_economy;
int low_economy;
WEATHER_DATA * weather; /* FB */
short continent; /* Added for Overland support - Samson 9-16-00 */
ROOM_INDEX_DATA * first_room;
ROOM_INDEX_DATA * last_room;
};
/*
* Load in the gods building data. -- Altrag
*/
struct godlist_data
{
GOD_DATA * next;
GOD_DATA * prev;
int level;
int low_r_vnum;
int hi_r_vnum;
int low_o_vnum;
int hi_o_vnum;
int low_m_vnum;
int hi_m_vnum;
};
/*
* Used to keep track of system settings and statistics -Thoric
*/
struct system_data
{
int maxplayers; /* Maximum players this boot */
int alltimemax; /* Maximum players ever */
int global_looted; /* Gold looted this boot */
int upill_val; /* Used pill value */
int upotion_val; /* Used potion value */
int brewed_used; /* Brewed potions used */
int scribed_used; /* Scribed scrolls used */
char * time_of_max; /* Time of max ever */
char * mud_name; /* Name of mud */
bool NO_NAME_RESOLVING; /* Hostnames are not resolved */
bool DENY_NEW_PLAYERS; /* New players cannot connect */
bool WAIT_FOR_AUTH; /* New players must be auth'ed */
short read_all_mail; /* Read all player mail(was 54)*/
short read_mail_free; /* Read mail for free (was 51) */
short write_mail_free; /* Write mail for free(was 51) */
short take_others_mail; /* Take others mail (was 54) */
short muse_level; /* Level of muse channel */
short think_level; /* Level of think channel LEVEL_HIGOD*/
short build_level; /* Level of build channel LEVEL_BUILD*/
short log_level; /* Level of log channel LEVEL LOG*/
short level_modify_proto; /* Level to modify prototype stuff LEVEL_LESSER */
short level_override_private; /* override private flag */
short level_mset_player; /* Level to mset a player */
short bash_plr_vs_plr; /* Bash mod player vs. player */
short bash_nontank; /* Bash mod basher != primary attacker */
short gouge_plr_vs_plr; /* Gouge mod player vs. player */
short gouge_nontank; /* Gouge mod player != primary attacker */
short stun_plr_vs_plr; /* Stun mod player vs. player */
short stun_regular; /* Stun difficult */
short dodge_mod; /* Divide dodge chance by */
short parry_mod; /* Divide parry chance by */
short tumble_mod; /* Divide tumble chance by */
short dam_plr_vs_plr; /* Damage mod player vs. player */
short dam_plr_vs_mob; /* Damage mod player vs. mobile */
short dam_mob_vs_plr; /* Damage mod mobile vs. player */
short dam_mob_vs_mob; /* Damage mod mobile vs. mobile */
short level_getobjnotake; /* Get objects without take flag */
short level_forcepc; /* The level at which you can use force on players. */
short bestow_dif; /* Max # of levels between trust and command level for a bestow to work --Blodkai */
short max_sn; /* Max skills */
char *guild_overseer; /* Pointer to char containing the name of the */
char *guild_advisor; /* guild overseer and advisor. */
int save_flags; /* Toggles for saving conditions */
short save_frequency; /* How old to autosave someone */
short save_pets; /* Do pets save? */
short ban_site_level; /* Level to ban sites */
short ban_Class_level; /* Level to ban Classes */
short ban_race_level; /* Level to ban races */
short ident_retries; /* Number of times to retry broken pipes. */
short pk_loot; /* Pkill looting allowed? */
short newbie_purge; /* Level to auto-purge newbies at - Samson 12-27-98 */
short regular_purge; /* Level to purge normal players at - Samson 12-27-98 */
bool CLEANPFILES; /* Should the mud clean up pfiles daily? - Samson 12-27-98 */
void *dlHandle;
};
/*
* Room type.
*/
struct room_index_data
{
ROOM_INDEX_DATA * next;
ROOM_INDEX_DATA * next_sort;
CHAR_DATA * first_person; /* people in the room */
CHAR_DATA * last_person; /* .. */
OBJ_DATA * first_content; /* objects on floor */
OBJ_DATA * last_content; /* .. */
EXTRA_DESCR_DATA * first_extradesc; /* extra descriptions */
EXTRA_DESCR_DATA * last_extradesc; /* .. */
AREA_DATA * area;
EXIT_DATA * first_exit; /* exits from the room */
EXIT_DATA * last_exit; /* .. */
AFFECT_DATA * first_affect; /* effects on the room */
AFFECT_DATA * last_affect; /* .. */
MAP_DATA * map; /* maps */
MPROG_ACT_LIST * mpact; /* mudprogs */
int mpactnum; /* mudprogs */
MPROG_DATA * mudprogs; /* mudprogs */
short NULL_VAR;
short mpscriptpos;
char * name;
char * description;
int vnum;
EXT_BV room_flags;
EXT_BV progtypes; /* mudprogs */
short light; /* amount of light in the room */
short sector_type;
int tele_vnum;
short tele_delay;
short tunnel; /* max people that will fit */
RESET_DATA *first_reset;
RESET_DATA *last_reset;
RESET_DATA *last_mob_reset;
RESET_DATA *last_obj_reset;
ROOM_INDEX_DATA *next_aroom; /* Rooms within an area */
ROOM_INDEX_DATA *prev_aroom;
};
/*
* Delayed teleport type.
*/
struct teleport_data
{
TELEPORT_DATA * next;
TELEPORT_DATA * prev;
ROOM_INDEX_DATA * room;
short timer;
};
/*
* Types of skill numbers. Used to keep separate lists of sn's
* Must be non-overlapping with spell/skill types,
* but may be arbitrary beyond that.
*/
#define TYPE_UNDEFINED 1
#define TYPE_HIT 1000 /* allows for 1000 skills/spells */
#define TYPE_HERB 2000 /* allows for 1000 attack types */
#define TYPE_PERSONAL 3000 /* allows for 1000 herb types */
#define TYPE_RACIAL 4000 /* allows for 1000 personal types*/
#define TYPE_DISEASE 5000 /* allows for 1000 racial types */
/*
* Target types.
*/
typedef enum
{
TAR_IGNORE, TAR_CHAR_OFFENSIVE, TAR_CHAR_DEFENSIVE, TAR_CHAR_SELF,
TAR_OBJ_INV
} target_types;
typedef enum
{
SKILL_UNKNOWN, SKILL_SPELL, SKILL_SKILL, SKILL_WEAPON, SKILL_TONGUE,
SKILL_HERB, SKILL_RACIAL, SKILL_DISEASE
} skill_types;
struct timerset
{
int num_uses;
struct timeval total_time;
struct timeval min_time;
struct timeval max_time;
};
/*
* Skills include spells as a particular case.
*/
struct skill_type
{
char * name; /* Name of skill */
short skill_level[MAX_CLASS]; /* Level needed by Class */
short skill_adept[MAX_CLASS]; /* Max attainable % in this skill */
short race_level[MAX_RACE]; /* Racial abilities: level */
short race_adept[MAX_RACE]; /* Racial abilities: adept */
SPELL_FUN * spell_fun; /* Spell pointer (for spells) */
char * spell_fun_name; /* Spell function name - Trax */
DO_FUN * skill_fun; /* Skill pointer (for skills) */
char * skill_fun_name; /* Skill function name - Trax */
short target; /* Legal targets */
short minimum_position; /* Position for caster / user */
short slot; /* Slot for #OBJECT loading */
short min_mana; /* Minimum mana used */
short beats; /* Rounds required to use skill */
char * noun_damage; /* Damage message */
char * msg_off; /* Wear off message */
short guild; /* Which guild the skill belongs to */
short min_level; /* Minimum level to be able to cast */
short type; /* Spell/Skill/Weapon/Tongue */
short range; /* Range of spell (rooms) */
int info; /* Spell action/Class/etc */
int flags; /* Flags */
char * hit_char; /* Success message to caster */
char * hit_vict; /* Success message to victim */
char * hit_room; /* Success message to room */
char * hit_dest; /* Success message to dest room */
char * miss_char; /* Failure message to caster */
char * miss_vict; /* Failure message to victim */
char * miss_room; /* Failure message to room */
char * die_char; /* Victim death msg to caster */
char * die_vict; /* Victim death msg to victim */
char * die_room; /* Victim death msg to room */
char * imm_char; /* Victim immune msg to caster */
char * imm_vict; /* Victim immune msg to victim */
char * imm_room; /* Victim immune msg to room */
char * dice; /* Dice roll */
int value; /* Misc value */
int spell_sector; /* Sector Spell work */
char saves; /* What saving spell applies */
char difficulty; /* Difficulty of casting/learning */
SMAUG_AFF * affects; /* Spell affects, if any */
char * components; /* Spell components, if any */
char * teachers; /* Skill requires a special teacher */
char participants; /* # of required participants */
struct timerset userec; /* Usage record */
};
/* how many items to track.... prevent repeat auctions */
#define AUCTION_MEM 3
struct auction_data
{
OBJ_DATA * item; /* a pointer to the item */
CHAR_DATA * seller; /* a pointer to the seller - which may NOT quit */
CHAR_DATA * buyer; /* a pointer to the buyer - which may NOT quit */
int bet; /* last bet - or 0 if noone has bet anything */
short going; /* 1,2, sold */
short pulse; /* how many pulses (.25 sec) until another call-out ? */
int starting;
OBJ_INDEX_DATA * history[AUCTION_MEM]; /* store auction history */
short hist_timer; /* clear out history buffer if auction is idle */
};
/*
* So we can have different configs for different ports -- Shaddai
*/
extern int port;
/*
* Cmd flag names --Shaddai
*/
extern char *const cmd_flags[];
/*
* The functions for these prototypes can be found in misc.c
* They are up here because they are used by the macros below
*/
bool ext_is_empty args( ( EXT_BV *bits ) );
void ext_clear_bits args( ( EXT_BV *bits ) );
int ext_has_bits args( ( EXT_BV *var, EXT_BV *bits) );
bool ext_same_bits args( ( EXT_BV *var, EXT_BV *bits) );
void ext_set_bits args( ( EXT_BV *var, EXT_BV *bits) );
void ext_remove_bits args( ( EXT_BV *var, EXT_BV *bits) );
void ext_toggle_bits args( ( EXT_BV *var, EXT_BV *bits) );
/*
* Defines for the command flags. --Shaddai
*/
#define CMD_FLAG_POSSESS BV00
#define CMD_WATCH BV02 /* FB */
/*
* Structure for a command in the command lookup table.
*/
struct cmd_type
{
CMDTYPE * next;
char * name;
DO_FUN * do_fun;
char * fun_name;
int flags; /* Added for Checking interpret stuff -Shaddai*/
short position;
short level;
short log;
struct timerset userec;
int lag_count; /* count lag flags for this cmd - FB */
};
/*
* Structure for a social in the socials table.
*/
struct social_type
{
SOCIALTYPE * next;
char * name;
char * char_no_arg;
char * others_no_arg;
char * char_found;
char * others_found;
char * vict_found;
char * char_auto;
char * others_auto;
};
/*
* Global constants.
*/
extern time_t last_restore_all_time;
extern time_t boot_time; /* this should be moved down */
extern HOUR_MIN_SEC * set_boot_time;
extern struct tm *new_boot_time;
extern time_t new_boot_time_t;
extern FILE *fpArea;
extern char strArea[MAX_INPUT_LENGTH];
extern const struct str_app_type str_app [26];
extern const struct int_app_type int_app [26];
extern const struct wis_app_type wis_app [26];
extern const struct dex_app_type dex_app [26];
extern const struct con_app_type con_app [26];
extern const struct cha_app_type cha_app [26];
extern const struct lck_app_type lck_app [26];
extern const struct race_type _race_table [MAX_RACE];
extern struct race_type * race_table [MAX_RACE];
extern const struct liq_type liq_table [LIQ_MAX];
extern char *attack_table[MAX_DAM_TYPE];
extern char *attack_table_plural[MAX_DAM_TYPE];
extern char **const s_message_table[MAX_DAM_TYPE];
extern char **const p_message_table[MAX_DAM_TYPE];
extern char *weapon_skills[WEP_MAX]; /* Used in spell_identify */
extern char *projectiles[PROJ_MAX]; /* For archery weapons */
extern char * const skill_tname [];
extern short const movement_loss [SECT_MAX];
extern char * const dir_name [];
extern char * const where_name [MAX_WHERE_NAME];
extern const short rev_dir [];
extern const int trap_door [];
extern char * const r_flags [];
extern char * const w_flags [];
extern char * const sec_flags [];
extern char * const item_w_flags [];
extern char * const o_flags [];
extern char * const a_flags [];
extern char * const o_types [];
extern char * const a_types [];
extern char * const act_flags [];
extern char * const plr_flags [];
extern char * const pc_flags [];
extern char * const trap_flags [];
extern char * const ris_flags [];
extern char * const trig_flags [];
extern char * const part_flags [];
extern char * const npc_race [];
extern char * const npc_Class [];
extern char * const defense_flags [];
extern char * const attack_flags [];
extern char * const area_flags [];
extern char * const container_flags []; /* OasisOLC */
extern char * const ex_pmisc [];
extern char * const ex_pwater [];
extern char * const ex_pair [];
extern char * const ex_pearth [];
extern char * const ex_pfire [];
extern int const lang_array [];
extern char * const lang_names [];
extern char * const temp_settings []; /* FB */
extern char * const precip_settings [];
extern char * const wind_settings [];
extern char * const preciptemp_msg [6][6];
extern char * const windtemp_msg [6][6];
extern char * const precip_msg [];
extern char * const wind_msg [];
/*
* Global variables.
*/
extern char * bigregex;
extern char * preg;
extern MPSLEEP_DATA * first_mpwait; /* Storing sleeping mud progs */
extern MPSLEEP_DATA * last_mpwait; /* - */
extern MPSLEEP_DATA * current_mpwait; /* - */
extern char * target_name;
extern char * ranged_target_name;
extern int numobjsloaded;
extern int nummobsloaded;
extern int physicalobjects;
extern int last_pkroom;
extern int num_descriptors;
extern struct system_data sysdata;
extern int top_sn;
extern int top_vroom;
extern int top_herb;
extern CMDTYPE * command_hash [126];
extern struct Class_type * Class_table [MAX_CLASS];
extern char * title_table [MAX_CLASS]
[MAX_LEVEL+1]
[2];
extern SKILLTYPE * skill_table [MAX_SKILL];
extern SOCIALTYPE * social_index [27];
extern CHAR_DATA * cur_char;
extern ROOM_INDEX_DATA * cur_room;
extern bool cur_char_died;
extern ch_ret global_retcode;
extern SKILLTYPE * herb_table [MAX_HERB];
extern SKILLTYPE * disease_table [MAX_DISEASE];
extern int cur_obj;
extern int cur_obj_serial;
extern bool cur_obj_extracted;
extern obj_ret global_objcode;
extern HELP_DATA * first_help;
extern HELP_DATA * last_help;
extern SHOP_DATA * first_shop;
extern SHOP_DATA * last_shop;
extern REPAIR_DATA * first_repair;
extern REPAIR_DATA * last_repair;
extern WATCH_DATA * first_watch;
extern WATCH_DATA * last_watch;
extern BAN_DATA * first_ban;
extern BAN_DATA * last_ban;
extern RESERVE_DATA * first_reserved;
extern RESERVE_DATA * last_reserved;
extern CHAR_DATA * first_char;
extern CHAR_DATA * last_char;
extern DESCRIPTOR_DATA * first_descriptor;
extern DESCRIPTOR_DATA * last_descriptor;
extern OBJ_DATA * first_object;
extern OBJ_DATA * last_object;
extern CLAN_DATA * first_clan;
extern CLAN_DATA * last_clan;
extern COUNCIL_DATA * first_council;
extern COUNCIL_DATA * last_council;
extern DEITY_DATA * first_deity;
extern DEITY_DATA * last_deity;
extern AREA_DATA * first_area;
extern AREA_DATA * last_area;
extern AREA_DATA * first_build;
extern AREA_DATA * last_build;
extern AREA_DATA * first_asort;
extern AREA_DATA * last_asort;
extern AREA_DATA * first_bsort;
extern AREA_DATA * last_bsort;
extern AREA_DATA * first_area_name; /*alphanum. sort*/
extern AREA_DATA * last_area_name; /* Fireblade */
extern LANG_DATA * first_lang;
extern LANG_DATA * last_lang;
extern bool double_exp;
extern bool double_qp;
extern bool quad_damage;
extern int global_exp;
extern int global_qp;
extern int global_quad;
extern short display;
extern short qpdisplay;
extern short quaddisplay;
extern TELEPORT_DATA * first_teleport;
extern TELEPORT_DATA * last_teleport;
extern OBJ_DATA * extracted_obj_queue;
extern EXTRACT_CHAR_DATA * extracted_char_queue;
extern OBJ_DATA * save_equipment[MAX_WEAR][MAX_LAYERS];
extern CHAR_DATA * quitting_char;
extern CHAR_DATA * loading_char;
extern CHAR_DATA * saving_char;
extern OBJ_DATA * all_obj;
extern char bug_buf [];
extern time_t current_time;
extern bool fLogAll;
extern FILE * fpReserve;
extern FILE * fpLOG;
extern char log_buf [];
extern TIME_INFO_DATA time_info;
extern WEATHER_DATA weather_info;
extern int weath_unit;
extern int rand_factor;
extern int climate_factor;
extern int neigh_factor;
extern int max_vector;
extern AUCTION_DATA * auction;
extern struct act_prog_data * mob_act_list;
extern QUEST_DATA * questmaster;
/*
* Data files used by the server.
*
* AREA_LIST contains a list of areas to boot.
* All files are read in completely at bootup.
* Most output files (bug, idea, typo, shutdown) are append-only.
*
* The NULL_FILE is held open so that we have a stream handle in reserve,
* so players can go ahead and telnet to all the other descriptors.
* Then we close it whenever we need to open a file (e.g. a save file).
*/
#define PLAYER_DIR "../player/" /* Player files */
#define BACKUP_DIR "../player/backup/" /* Backup Player files */
#define GOD_DIR "../gods/" /* God Info Dir */
#define CLAN_DIR "../clans/" /* Clan data dir */
#define COUNCIL_DIR "../councils/" /* Council data dir */
#define DEITY_DIR "../deity/" /* Deity data dir */
#define BUILD_DIR "../building/" /* Online building save dir */
#define SYSTEM_DIR "../system/" /* Main system files */
#define PROG_DIR "mudprogs/" /* MUDProg files */
#define CORPSE_DIR "../corpses/" /* Corpses */
#define LOCKER_DIR "../lockers/" /* Player Lockers */
#define NULL_FILE "/dev/null" /* To reserve one stream */
#define CLASS_DIR "../classes/" /* Classes */
#define RACE_DIR "../races/"
#define WATCH_DIR "../watch/" /* Imm watch files --Gorog */
/*
* The watch directory contains a maximum of one file for each immortal
* that contains output from "player watches". The name of each file
* in this directory is the name of the immortal who requested the watch
*/
#define AREA_LIST "area.lst" /* List of areas */
#define WATCH_LIST "watch.lst" /* List of watches */
#define BAN_LIST SYSTEM_DIR "ban.lst" /* List of bans */
#define RESERVED_LIST "reserved.lst" /* List of reserved names */
#define CLAN_LIST "clan.lst" /* List of clans */
#define COUNCIL_LIST "council.lst" /* List of councils */
#define GUILD_LIST "guild.lst" /* List of guilds */
#define GOD_LIST "gods.lst" /* List of gods */
#define DEITY_LIST "deity.lst" /* List of deities */
#define CLASS_LIST "class.lst" /* List of Classes */
#define RACE_LIST "race.lst" /* List of races */
#define SHUTDOWN_FILE "shutdown.txt" /* For 'shutdown' */
#define LAST_LIST SYSTEM_DIR "last.lst" /*last list*/
#define LAST_TEMP_LIST SYSTEM_DIR "ltemp.lst" /*temp file for the last list so the data can be copyover over*/
#define BOOTLOG_FILE SYSTEM_DIR "boot.txt" /* Boot up error file */
#define PBUG_FILE SYSTEM_DIR "pbugs.txt" /* For 'bug' command */
#define IDEA_FILE SYSTEM_DIR "ideas.txt" /* For 'idea' */
#define TYPO_FILE SYSTEM_DIR "typos.txt" /* For 'typo' */
#define FIXED_FILE SYSTEM_DIR "fixed.txt" /* For 'fixed' command */
#define LOG_FILE SYSTEM_DIR "log.txt" /* For talking in logged rooms */
#define MOBLOG_FILE SYSTEM_DIR "moblog.txt" /* For mplog messages */
#define PLEVEL_FILE SYSTEM_DIR "plevel.txt" /* Char level info */
#define WIZLIST_FILE SYSTEM_DIR "WIZLIST" /* Wizlist */
#define REQUEST_PIPE SYSTEM_DIR "REQUESTS" /* Request FIFO */
#define SKILL_FILE SYSTEM_DIR "skills.dat" /* Skill table */
#define HERB_FILE SYSTEM_DIR "herbs.dat" /* Herb table */
#define TONGUE_FILE SYSTEM_DIR "tongues.dat" /* Tongue tables */
#define SOCIAL_FILE SYSTEM_DIR "socials.dat" /* Socials */
#define COMMAND_FILE SYSTEM_DIR "commands.dat" /* Commands */
#define ECONOMY_FILE SYSTEM_DIR "economy.txt" /* Gold looted, value of used potions/pills */
#define TEMP_FILE SYSTEM_DIR "charsave.tmp" /* More char save protect */
#define QUEST_FILE SYSTEM_DIR "quest.dat" /* Storing qmaster stuff */
/*
* Our function prototypes.
* One big lump ... this is every function in Merc.
*/
#define CD CHAR_DATA
#define MID MOB_INDEX_DATA
#define OD OBJ_DATA
#define OID OBJ_INDEX_DATA
#define RID ROOM_INDEX_DATA
#define SF SPEC_FUN
#define CL CLAN_DATA
#define EDD EXTRA_DESCR_DATA
#define RD RESET_DATA
#define ED EXIT_DATA
#define ST SOCIALTYPE
#define CO COUNCIL_DATA
#define DE DEITY_DATA
#define SK SKILLTYPE
/* act_comm.c */
bool circle_follow args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void add_follower args( ( CHAR_DATA *ch, CHAR_DATA *master ) );
void stop_follower args( ( CHAR_DATA *ch ) );
void die_follower args( ( CHAR_DATA *ch ) );
bool is_same_group args( ( CHAR_DATA *ach, CHAR_DATA *bch ) );
void to_channel args( ( const char *argument, int channel, const char *verb, short level ) );
void talk_auction args( ( char *argument ) );
int knows_language args( ( CHAR_DATA *ch, int language, CHAR_DATA *cch ) );
bool can_learn_lang args( ( CHAR_DATA *ch, int language ) );
int countlangs args( ( int languages ) );
char * translate args( ( int percent, const char *in, const char *name) );
char * obj_short args( ( OBJ_DATA *obj ) );
/* act_info.c */
int get_door args( ( char *arg ) );
char * num_punct args( ( int foo ) );
char * format_obj_to_char args( ( OBJ_DATA *obj, CHAR_DATA *ch, bool fShort ) );
void show_list_to_char args( ( OBJ_DATA *list, CHAR_DATA *ch, bool fShort, bool fShowNothing ) );
bool is_ignoring args( (CHAR_DATA *ch, CHAR_DATA *ign_ch) );
void show_race_line args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
/* act_move.c */
void clear_vrooms args( ( void ) );
ED * find_door args( ( CHAR_DATA *ch, char *arg, bool quiet ) );
ED * get_exit args( ( ROOM_INDEX_DATA *room, short dir ) );
ED * get_exit_to args( ( ROOM_INDEX_DATA *room, short dir, int vnum ) );
ED * get_exit_num args( ( ROOM_INDEX_DATA *room, short count ) );
ch_ret move_char( CHAR_DATA *ch, EXIT_DATA *pexit, int fall, int direction );
void teleport args( ( CHAR_DATA *ch, int room, int flags ) );
short encumbrance args( ( CHAR_DATA *ch, short move ) );
bool will_fall args( ( CHAR_DATA *ch, int fall ) );
ch_ret pullcheck args( ( CHAR_DATA *ch, int pulse ) );
char * rev_exit args( ( short vdir ) );
/* act_obj.c */
obj_ret damage_obj args( ( OBJ_DATA *obj ) );
short get_obj_resistance args( ( OBJ_DATA *obj ) );
void save_clan_storeroom args( ( CHAR_DATA *ch, CLAN_DATA *clan ) );
void obj_fall args( ( OBJ_DATA *obj, bool through ) );
/* act_wiz.c */
bool create_new_race args( (int rcindex, char *argument ) );
bool create_new_Class args( (int rcindex, char *argument ) );
RID * find_location args( ( CHAR_DATA *ch, char *arg ) );
void echo_to_all args( ( short AT_COLOR, char *argument, short tar ) );
void get_reboot_string args( ( void ) );
struct tm *update_time args( ( struct tm *old_time ) );
void free_social args( ( SOCIALTYPE *social ) );
void add_social args( ( SOCIALTYPE *social ) );
void free_command args( ( CMDTYPE *command ) );
void unlink_command args( ( CMDTYPE *command ) );
void add_command args( ( CMDTYPE *command ) );
/* build.c */
int get_cmdflag args (( char *flag ));
char * flag_string args( ( int bitvector, char * const flagarray[] ) );
char * ext_flag_string args( ( EXT_BV *bitvector, char * const flagarray[] ) );
int get_mpflag args( ( char *flag ) );
int get_dir args( ( char *txt ) );
char * strip_cr args( ( char *str ) );
char *sprint_reset( RESET_DATA *pReset, short *num );
void fix_exits( void );
/* clans.c */
CL * get_clan args( ( char *name ) );
void load_clans args( ( void ) );
void save_clan args( ( CLAN_DATA *clan ) );
CO * get_council args( ( char *name ) );
void load_councils args( ( void ) );
void save_council args( ( COUNCIL_DATA *council ) );
/* deity.c */
DE * get_deity args( ( char *name ) );
void load_deity args( ( void ) );
void save_deity args( ( DEITY_DATA *deity ) );
/* comm.c */
char * smaug_crypt( const char *pwd );
void close_socket args( ( DESCRIPTOR_DATA *dclose, bool force ) );
void write_to_buffer args( ( DESCRIPTOR_DATA *d, const char *txt, int length ) );
void write_to_pager( DESCRIPTOR_DATA *d, const char *txt, int length );
void send_to_char args( ( const char *txt, CHAR_DATA *ch ) );
void send_to_char_color args( ( const char *txt, CHAR_DATA *ch ) );
void send_to_pager args( ( const char *txt, CHAR_DATA *ch ) );
void send_to_pager_color args( ( const char *txt, CHAR_DATA *ch ) );
void ch_printf( CHAR_DATA * ch, char *fmt, ... ) __attribute__ ( ( format( printf, 2, 3 ) ) );
void ch_printf_color( CHAR_DATA *ch, char *fmt, ... );
void pager_printf( CHAR_DATA *ch, char *fmt, ... );
void pager_printf_color( CHAR_DATA *ch, char *fmt, ... );
void act args( ( short AType, const char *format, CHAR_DATA *ch, void *arg1, void *arg2, int type ));
char * myobj args( ( OBJ_DATA *obj ) );
void send_to_desc_color( const char *txt, DESCRIPTOR_DATA *d );
void send_to_desc_color_args( DESCRIPTOR_DATA * d, char *fmt, ... );
char *sha256_crypt( const char *pwd );
/* reset.c */
RD * make_reset args( ( char letter, int extra, int arg1, int arg2, int arg3 ) );
RD *add_reset( ROOM_INDEX_DATA *room, char letter, int extra, int arg1, int arg2, int arg3 );
void reset_area args( ( AREA_DATA * pArea ) );
/* db.c */
void show_file args( ( CHAR_DATA *ch, char *filename ) );
char * str_dup args( ( char const *str ) );
void boot_db args( ( bool fCopyOver ) );
void area_update args( ( void ) );
void add_char args( ( CHAR_DATA *ch ) );
CD * create_mobile args( ( MOB_INDEX_DATA *pMobIndex ) );
OD * create_object args( ( OBJ_INDEX_DATA *pObjIndex, int level ) );
void clear_char args( ( CHAR_DATA *ch ) );
void free_char args( ( CHAR_DATA *ch ) );
char * get_extra_descr args( ( const char *name, EXTRA_DESCR_DATA *ed ) );
MID * get_mob_index args( ( int vnum ) );
OID * get_obj_index args( ( int vnum ) );
RID * get_room_index args( ( int vnum ) );
char fread_letter args( ( FILE *fp ) );
int fread_number args( ( FILE *fp ) );
EXT_BV fread_bitvector args( ( FILE *fp ) );
void fwrite_bitvector args( ( EXT_BV *bits, FILE *fp ) );
char * print_bitvector args( ( EXT_BV *bits ) );
char * fread_string args( ( FILE *fp ) );
char * fread_string_nohash args( ( FILE *fp ) );
void fread_to_eol args( ( FILE *fp ) );
char * fread_word args( ( FILE *fp ) );
char * fread_line args( ( FILE *fp ) );
int number_fuzzy args( ( int number ) );
int number_range args( ( int from, int to ) );
int number_percent args( ( void ) );
int number_door args( ( void ) );
int number_bits args( ( int width ) );
int number_mm args( ( void ) );
int dice args( ( int number, int size ) );
int interpolate args( ( int level, int value_00, int value_32 ) );
void smash_tilde args( ( char *str ) );
void hide_tilde args( ( char *str ) );
char * show_tilde args( ( char *str ) );
bool str_cmp args( ( const char *astr, const char *bstr ) );
bool str_prefix args( ( const char *astr, const char *bstr ) );
bool str_infix args( ( const char *astr, const char *bstr ) );
bool str_suffix args( ( const char *astr, const char *bstr ) );
char * capitalize args( ( const char *str ) );
char * strlower args( ( const char *str ) );
char * strupper args( ( const char *str ) );
char * aoran args( ( const char *str ) );
void append_file args( ( CHAR_DATA *ch, char *file, char *str ) );
void append_to_file args( ( char *file, char *str ) );
void bug args( ( const char *str, ... ) );
void log_string_plus args( ( const char *str, short log_type, short level ) );
RID *make_room( int vnum, AREA_DATA *area );
OID * make_object args( ( int vnum, int cvnum, char *name ) );
MID * make_mobile args( ( int vnum, int cvnum, char *name, int level ) );
ED * make_exit args( ( ROOM_INDEX_DATA *pRoomIndex, ROOM_INDEX_DATA *to_room, short door ) );
void add_help args( ( HELP_DATA *pHelp ) );
void fix_area_exits args( ( AREA_DATA *tarea ) );
void load_area_file args( ( AREA_DATA *tarea, char *filename ) );
void randomize_exits args( ( ROOM_INDEX_DATA *room, short maxdir ) );
void make_wizlist args( ( void ) );
void tail_chain args( ( void ) );
void delete_room args( ( ROOM_INDEX_DATA *room ) );
void delete_obj args( ( OBJ_INDEX_DATA *obj ) );
void delete_mob args( ( MOB_INDEX_DATA *mob ) );
/* Functions to add to sorting lists. -- Altrag */
void sort_area args( ( AREA_DATA *pArea, bool proto ) );
void sort_area_by_name args( (AREA_DATA *pArea) ); /* Fireblade */
/* build.c */
void RelCreate( relation_type, void *, void * );
void RelDestroy( relation_type, void *, void * );
void start_editing args( ( CHAR_DATA *ch, char *data ) );
void stop_editing args( ( CHAR_DATA *ch ) );
void edit_buffer args( ( CHAR_DATA *ch, char *argument ) );
char *copy_buffer args( ( CHAR_DATA *ch ) );
char *copy_buffer_nohash( CHAR_DATA *ch );
bool can_rmodify args( ( CHAR_DATA *ch, ROOM_INDEX_DATA *room ) );
bool can_omodify args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
bool can_mmodify args( ( CHAR_DATA *ch, CHAR_DATA *mob ) );
bool can_medit args( ( CHAR_DATA *ch, MOB_INDEX_DATA *mob ) );
void free_reset args( ( AREA_DATA *are, RESET_DATA *res ) );
void free_area args( ( AREA_DATA *are ) );
void assign_area args( ( CHAR_DATA *ch ) );
EDD * SetRExtra args( ( ROOM_INDEX_DATA *room, char *keywords ) );
bool DelRExtra args( ( ROOM_INDEX_DATA *room, char *keywords ) );
EDD * SetOExtra args( ( OBJ_DATA *obj, char *keywords ) );
bool DelOExtra args( ( OBJ_DATA *obj, char *keywords ) );
EDD * SetOExtraProto args( ( OBJ_INDEX_DATA *obj, char *keywords ) );
bool DelOExtraProto args( ( OBJ_INDEX_DATA *obj, char *keywords ) );
void fold_area args( ( AREA_DATA *tarea, char *filename, bool install ) );
int get_otype args( ( char *type ) );
int get_atype args( ( char *type ) );
int get_aflag args( ( char *flag ) );
int get_oflag args( ( char *flag ) );
int get_wflag args( ( char *flag ) );
void init_area_weather args(( void ) );
void save_weatherdata args( ( void ) );
/* fight.c */
int max_fight args( ( CHAR_DATA *ch ) );
void violence_update args( ( void ) );
ch_ret multi_hit args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt ) );
ch_ret projectile_hit args( ( CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *wield,
OBJ_DATA *projectile, short dist ) );
short ris_damage args( ( CHAR_DATA *ch, short dam, int ris ) );
ch_ret damage args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dam,
int dt ) );
void update_pos args( ( CHAR_DATA *victim ) );
void set_fighting args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void stop_fighting args( ( CHAR_DATA *ch, bool fBoth ) );
void free_fight args( ( CHAR_DATA *ch ) );
CD * who_fighting args( ( CHAR_DATA *ch ) );
void check_killer args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void check_attacker args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void death_cry args( ( CHAR_DATA *ch ) );
void stop_hunting args( ( CHAR_DATA *ch ) );
void stop_hating args( ( CHAR_DATA *ch ) );
void stop_fearing args( ( CHAR_DATA *ch ) );
void start_hunting args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void start_hating args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void start_fearing args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool is_hunting args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool is_hating args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool is_fearing args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool is_safe args( ( CHAR_DATA *ch, CHAR_DATA *victim, bool SHOW ) );
bool legal_loot args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
short VAMP_AC args( ( CHAR_DATA *ch ) );
bool check_illegal_pk args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void raw_kill args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool in_arena args( ( CHAR_DATA *ch ) );
bool can_astral args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
/* makeobjs.c */
void make_corpse args( ( CHAR_DATA *ch, CHAR_DATA *killer ) );
void make_blood args( ( CHAR_DATA *ch ) );
void make_bloodstain args( ( CHAR_DATA *ch ) );
void make_scraps args( ( OBJ_DATA *obj ) );
void make_fire args( ( ROOM_INDEX_DATA *in_room, short timer) );
OD * make_trap args( ( int v0, int v1, int v2, int v3 ) );
OD * create_money args( ( int amount ) );
/* mapper.c */
size_t mudstrlcpy( char *dst, const char *src, size_t siz );
void draw_map( CHAR_DATA *ch, const char *desc );
char * roomdesc( CHAR_DATA *ch );
/* misc.c */
void actiondesc args( ( CHAR_DATA *ch, OBJ_DATA *obj, void *vo ) );
EXT_BV meb args( ( int bit ) );
EXT_BV multimeb args( ( int bit, ... ) );
/* deity.c */
void adjust_favor args( ( CHAR_DATA *ch, int field, int mod ) );
/* mud_comm.c */
char * mprog_type_to_name args( ( int type ) );
/* mud_prog.c */
#ifdef DUNNO_STRSTR
char * strstr args ( (const char *s1, const char *s2 ) );
#endif
void mprog_wordlist_check args ( ( char * arg, CHAR_DATA *mob,
CHAR_DATA* actor, OBJ_DATA* object,
void* vo, int type ) );
void mprog_percent_check args ( ( CHAR_DATA *mob, CHAR_DATA* actor,
OBJ_DATA* object, void* vo,
int type ) );
void mprog_act_trigger args ( ( char* buf, CHAR_DATA* mob,
CHAR_DATA* ch, OBJ_DATA* obj,
void* vo ) );
void mprog_bribe_trigger args ( ( CHAR_DATA* mob, CHAR_DATA* ch,
int amount ) );
void mprog_entry_trigger args ( ( CHAR_DATA* mob ) );
void mprog_give_trigger args ( ( CHAR_DATA* mob, CHAR_DATA* ch,
OBJ_DATA* obj ) );
void mprog_greet_trigger args ( ( CHAR_DATA* mob ) );
void mprog_fight_trigger args ( ( CHAR_DATA* mob, CHAR_DATA* ch ) );
void mprog_hitprcnt_trigger args ( ( CHAR_DATA* mob, CHAR_DATA* ch ) );
void mprog_death_trigger args ( ( CHAR_DATA *killer, CHAR_DATA* mob ) );
void mprog_random_trigger args ( ( CHAR_DATA* mob ) );
void mprog_speech_trigger args ( ( char* txt, CHAR_DATA* mob ) );
void mprog_script_trigger args ( ( CHAR_DATA *mob ) );
void mprog_hour_trigger args ( ( CHAR_DATA *mob ) );
void mprog_time_trigger args ( ( CHAR_DATA *mob ) );
void progbug args( ( char *str, CHAR_DATA *mob ) );
void rset_supermob args( ( ROOM_INDEX_DATA *room) );
void release_supermob args( ( void ) );
void mpsleep_update args( ( ) );
/* player.c */
void set_title args( ( CHAR_DATA *ch, char *title ) );
/* skills.c */
bool can_use_skill args( ( CHAR_DATA *ch, int percent, int gsn));
bool check_skill args( ( CHAR_DATA *ch, char *command, char *argument ) );
void learn_from_success args( ( CHAR_DATA *ch, int sn ) );
void learn_from_failure args( ( CHAR_DATA *ch, int sn ) );
bool check_parry args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool check_dodge args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool check_tumble args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool check_grip args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void disarm args( ( CHAR_DATA *ch, CHAR_DATA *victim) );
void trip args( ( CHAR_DATA *ch, CHAR_DATA *victim) );
bool mob_fire args( ( CHAR_DATA *ch, char *name ) );
CD * scan_for_victim args( ( CHAR_DATA *ch, EXIT_DATA *pexit, char *name ) );
/* ban.c */
int add_ban args( ( CHAR_DATA *ch, char *arg1, char *arg2,int btime,int type ) );
void show_bans args ( ( CHAR_DATA *ch, int type ) );
void save_banlist args ( ( void ) );
void load_banlist args ( ( void ) );
bool check_total_bans args ( ( DESCRIPTOR_DATA *d ) );
bool check_bans args ( ( CHAR_DATA *ch, int type ) );
/* handler.c */
AREA_DATA * get_area_obj args( ( OBJ_INDEX_DATA * obj));
int get_exp args( ( CHAR_DATA *ch ) );
int get_exp_worth args( ( CHAR_DATA *ch ) );
int exp_level args( ( CHAR_DATA *ch, short level ) );
short get_trust args( ( CHAR_DATA *ch ) );
short get_age args( ( CHAR_DATA *ch ) );
short get_curr_str args( ( CHAR_DATA *ch ) );
short get_curr_int args( ( CHAR_DATA *ch ) );
short get_curr_wis args( ( CHAR_DATA *ch ) );
short get_curr_dex args( ( CHAR_DATA *ch ) );
short get_curr_con args( ( CHAR_DATA *ch ) );
short get_curr_cha args( ( CHAR_DATA *ch ) );
short get_curr_lck args( ( CHAR_DATA *ch ) );
bool can_take_proto args( ( CHAR_DATA *ch ) );
int can_carry_n args( ( CHAR_DATA *ch ) );
int can_carry_w args( ( CHAR_DATA *ch ) );
bool is_name args( ( const char *str, char *namelist ) );
bool is_name_prefix args( ( const char *str, char *namelist ) );
bool nifty_is_name args( ( char *str, char *namelist ) );
bool nifty_is_name_prefix args( ( char *str, char *namelist ) );
void affect_modify args( ( CHAR_DATA *ch, AFFECT_DATA *paf, bool fAdd ) );
void affect_to_char args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) );
void affect_remove args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) );
void affect_strip args( ( CHAR_DATA *ch, int sn ) );
bool is_affected args( ( CHAR_DATA *ch, int sn ) );
void affect_join args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) );
void char_from_room args( ( CHAR_DATA *ch ) );
void char_to_room args( ( CHAR_DATA *ch, ROOM_INDEX_DATA *pRoomIndex ) );
OD * obj_to_char args( ( OBJ_DATA *obj, CHAR_DATA *ch ) );
void obj_from_char args( ( OBJ_DATA *obj ) );
int apply_ac args( ( OBJ_DATA *obj, int iWear ) );
OD * get_eq_char args( ( CHAR_DATA *ch, int iWear ) );
void equip_char args( ( CHAR_DATA *ch, OBJ_DATA *obj, int iWear ) );
void unequip_char args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
int count_obj_list args( ( OBJ_INDEX_DATA *obj, OBJ_DATA *list ) );
void obj_from_room args( ( OBJ_DATA *obj ) );
OD *obj_to_room( OBJ_DATA *obj, ROOM_INDEX_DATA *pRoomIndex, CHAR_DATA *ch );
OD * obj_to_obj args( ( OBJ_DATA *obj, OBJ_DATA *obj_to ) );
void obj_from_obj args( ( OBJ_DATA *obj ) );
void extract_obj args( ( OBJ_DATA *obj ) );
void extract_exit args( ( ROOM_INDEX_DATA *room, EXIT_DATA *pexit ) );
void extract_room args( ( ROOM_INDEX_DATA *room ) );
void clean_room args( ( ROOM_INDEX_DATA *room ) );
void clean_obj args( ( OBJ_INDEX_DATA *obj ) );
void clean_mob args( ( MOB_INDEX_DATA *mob ) );
void clean_resets( ROOM_INDEX_DATA *room );
void extract_char args( ( CHAR_DATA *ch, bool fPull ) );
CD * get_char_room args( ( CHAR_DATA *ch, char *argument ) );
CD * get_char_world args( ( CHAR_DATA *ch, char *argument ) );
OD * get_obj_type args( ( OBJ_INDEX_DATA *pObjIndexData ) );
OD * get_obj_list args( ( CHAR_DATA *ch, char *argument,
OBJ_DATA *list ) );
OD * get_obj_list_rev args( ( CHAR_DATA *ch, char *argument,
OBJ_DATA *list ) );
OD * get_obj_carry args( ( CHAR_DATA *ch, char *argument ) );
OD * get_obj_wear args( ( CHAR_DATA *ch, char *argument ) );
OD * get_obj_vnum args( ( CHAR_DATA *ch, int vnum ) );
OD * get_obj_here args( ( CHAR_DATA *ch, char *argument ) );
OD * get_obj_world args( ( CHAR_DATA *ch, char *argument ) );
int get_obj_number args( ( OBJ_DATA *obj ) );
int get_obj_weight args( ( OBJ_DATA *obj ) );
int get_real_obj_weight args( ( OBJ_DATA *obj ) );
bool room_is_dark args( ( ROOM_INDEX_DATA *pRoomIndex ) );
bool room_is_private args( ( ROOM_INDEX_DATA *pRoomIndex ) );
CD *room_is_dnd args( ( CHAR_DATA *ch, ROOM_INDEX_DATA *pRoomIndex) );
bool can_see( CHAR_DATA *ch, CHAR_DATA *victim, bool override );
bool can_see_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
bool can_drop_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
char * item_type_name args( ( OBJ_DATA *obj ) );
char * affect_loc_name args( ( int location ) );
char * affect_bit_name args( ( EXT_BV *vector ) );
char * extra_bit_name args( ( EXT_BV *extra_flags ) );
char * magic_bit_name args( ( int magic_flags ) );
char * pull_type_name args( ( int pulltype ) );
ch_ret check_for_trap args( ( CHAR_DATA *ch, OBJ_DATA *obj, int flag ) );
ch_ret check_room_for_traps args( ( CHAR_DATA *ch, int flag ) );
bool is_trapped args( ( OBJ_DATA *obj ) );
OD * get_trap args( ( OBJ_DATA *obj ) );
ch_ret spring_trap args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
void name_stamp_stats args( ( CHAR_DATA *ch ) );
void fix_char args( ( CHAR_DATA *ch ) );
void showaffect args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) );
void set_cur_obj args( ( OBJ_DATA *obj ) );
bool obj_extracted args( ( OBJ_DATA *obj ) );
void queue_extracted_obj args( ( OBJ_DATA *obj ) );
void clean_obj_queue args( ( void ) );
void set_cur_char args( ( CHAR_DATA *ch ) );
bool char_died args( ( CHAR_DATA *ch ) );
void queue_extracted_char args( ( CHAR_DATA *ch, bool extract ) );
void clean_char_queue args( ( void ) );
void add_timer args( ( CHAR_DATA *ch, short type, int count, DO_FUN *fun, int value ) );
TIMER * get_timerptr args( ( CHAR_DATA *ch, short type ) );
short get_timer args( ( CHAR_DATA *ch, short type ) );
void extract_timer args( ( CHAR_DATA *ch, TIMER *timer ) );
void remove_timer args( ( CHAR_DATA *ch, short type ) );
bool in_soft_range args( ( CHAR_DATA *ch, AREA_DATA *tarea ) );
bool in_hard_range args( ( CHAR_DATA *ch, AREA_DATA *tarea ) );
bool chance args( ( CHAR_DATA *ch, short percent ) );
bool chance_attrib args( ( CHAR_DATA *ch, short percent, short attrib ) );
OD * clone_object args( ( OBJ_DATA *obj ) );
void split_obj args( ( OBJ_DATA *obj, int num ) );
void separate_obj args( ( OBJ_DATA *obj ) );
bool empty_obj args( ( OBJ_DATA *obj, OBJ_DATA *destobj,
ROOM_INDEX_DATA *destroom ) );
OD * find_obj args( ( CHAR_DATA *ch, char *argument,
bool carryonly ) );
bool ms_find_obj args( ( CHAR_DATA *ch ) );
void worsen_mental_state args( ( CHAR_DATA *ch, int mod ) );
void better_mental_state args( ( CHAR_DATA *ch, int mod ) );
void boost_economy args( ( AREA_DATA *tarea, int gold ) );
void lower_economy args( ( AREA_DATA *tarea, int gold ) );
void economize_mobgold args( ( CHAR_DATA *mob ) );
bool economy_has args( ( AREA_DATA *tarea, int gold ) );
void add_kill args( ( CHAR_DATA *ch, CHAR_DATA *mob ) );
int times_killed args( ( CHAR_DATA *ch, CHAR_DATA *mob ) );
void update_aris args( ( CHAR_DATA *ch) );
AREA_DATA *get_area args( ( char *name ) ); /* FB */
OD * get_objtype args( ( CHAR_DATA *ch, short type ) );
char * tattoo_bit_name args( ( int tatto_flags ) );
CD * get_mob args( ( int vnum) );
OD * obj_by_vnum args( ( int vnum) );
/*infochan.c*/
void talk_info ( short AT_COLOR, char *argument );
/* interp.c */
bool check_pos args( ( CHAR_DATA *ch, short position ) );
void interpret args( ( CHAR_DATA *ch, char *argument ) );
bool is_number args( ( char *arg ) );
int number_argument args( ( char *argument, char *arg ) );
char * one_argument args( ( char *argument, char *arg_first ) );
char * one_argument2 args( ( char *argument, char *arg_first ) );
ST * find_social args( ( char *command ) );
CMDTYPE *find_command args( ( char *command ) );
void hash_commands args( ( void ) );
void start_timer args( ( struct timeval *sttime ) );
time_t end_timer args( ( struct timeval *sttime ) );
void send_timer args( ( struct timerset *vtime, CHAR_DATA *ch ) );
void update_userec args( ( struct timeval *time_used, struct timerset *userec ) );
/* magic.c */
bool process_spell_components args( ( CHAR_DATA *ch, int sn ) );
int ch_slookup args( ( CHAR_DATA *ch, const char *name ) );
int find_spell args( ( CHAR_DATA *ch, const char *name, bool know ) );
int find_skill args( ( CHAR_DATA *ch, const char *name, bool know ) );
int find_weapon args( ( CHAR_DATA *ch, const char *name, bool know ) );
int find_tongue args( ( CHAR_DATA *ch, const char *name, bool know ) );
int skill_lookup args( ( const char *name ) );
int herb_lookup args( ( const char *name ) );
int personal_lookup args( ( CHAR_DATA *ch, const char *name ) );
int slot_lookup args( ( int slot ) );
int bsearch_skill args( ( const char *name, int first, int top ) );
int bsearch_skill_exact args( ( const char *name, int first, int top ) );
int bsearch_skill_prefix args( ( const char *name, int first, int top ) );
bool saves_poison_death args( ( int level, CHAR_DATA *victim ) );
bool saves_wand args( ( int level, CHAR_DATA *victim ) );
bool saves_para_petri args( ( int level, CHAR_DATA *victim ) );
bool saves_breath args( ( int level, CHAR_DATA *victim ) );
bool saves_spell_staff args( ( int level, CHAR_DATA *victim ) );
ch_ret obj_cast_spell args( ( int sn, int level, CHAR_DATA *ch, CHAR_DATA *victim, OBJ_DATA *obj ) );
int dice_parse args( (CHAR_DATA *ch, int level, char *texp) );
SK * get_skilltype args( ( int sn ) );
short get_chain_type args( ( ch_ret retcode ) );
ch_ret chain_spells args( ( int sn, int level, CHAR_DATA *ch, void *vo, short chain ) );
void immune_casting( SKILLTYPE * skill, CHAR_DATA * ch, CHAR_DATA * victim, OBJ_DATA * obj );
void failed_casting( struct skill_type *skill, CHAR_DATA * ch, CHAR_DATA * victim, OBJ_DATA * obj );
void successful_casting( SKILLTYPE * skill, CHAR_DATA * ch, CHAR_DATA * victim, OBJ_DATA * obj );
int ris_save( CHAR_DATA * ch, int schance, int ris );
bool saves_wands( int level, CHAR_DATA * victim );
/* random.* */
char *create_weather_string(CHAR_DATA *ch, char *weather_string);
char *create_time_string(CHAR_DATA *ch, char *time_string);
/* request.c */
void init_request_pipe args( ( void ) );
void check_requests args( ( void ) );
/* save.c */
/* object saving defines for fread/write_obj. -- Altrag */
#define OS_CARRY 0
#define OS_CORPSE 1
#define OS_LOCKER 2
void save_char_obj args( ( CHAR_DATA *ch ) );
bool load_char_obj args( ( DESCRIPTOR_DATA *d, char *name, bool preload, bool copyover ) );
void set_alarm args( ( long seconds ) );
void requip_char args( ( CHAR_DATA *ch ) );
void fwrite_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, FILE *fp, int iNest, short os_type, bool hotboot ) );
void fread_obj args( ( CHAR_DATA *ch, FILE *fp, short os_type ) );
void de_equip_char args( ( CHAR_DATA *ch ) );
void re_equip_char args( ( CHAR_DATA *ch ) );
void read_char_mobile args( ( char *argument ) );
void write_char_mobile args( ( CHAR_DATA *ch, char *argument ) );
CHAR_DATA * fread_mobile args( ( FILE *fp ) );
void fwrite_mobile args ( ( FILE *fp, CHAR_DATA *mob ) );
/* shops.c */
/* special.c */
SF * spec_lookup args( ( const char *name ) );
char * lookup_spec args( ( SPEC_FUN *special ) );
/* tables.c */
int get_skill args( ( char *skilltype ) );
char * spell_name args( ( SPELL_FUN *spell ) );
char * skill_name args( ( DO_FUN *skill ) );
void load_skill_table args( ( void ) );
void save_skill_table args( ( void ) );
void sort_skill_table args( ( void ) );
void remap_slot_numbers args( ( void ) );
void load_socials args( ( void ) );
void save_socials args( ( void ) );
void load_commands args( ( void ) );
void save_commands args( ( void ) );
SPELL_FUN *spell_function args( ( char *name ) );
DO_FUN *skill_function args( ( char *name ) );
void write_Class_file args( ( int cl ) );
void save_Classes args( ( void ) );
void load_Classes args( ( void ) );
void load_herb_table args( ( void ) );
void save_herb_table args( ( void ) );
void load_races args( ( void ) );
void load_tongues args( ( void ) );
void read_last_file args((CHAR_DATA *ch, int count, char *name));
void write_last_file args((char *entry));
/* track.c */
void found_prey args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void hunt_victim args( ( CHAR_DATA *ch) );
/* update.c */
void advance_level args( ( CHAR_DATA *ch ) );
void gain_exp args( ( CHAR_DATA *ch, int gain ) );
void gain_condition args( ( CHAR_DATA *ch, int iCond, int value ) );
void check_alignment args( ( CHAR_DATA *ch ) );
void update_handler args( ( void ) );
void auction_update args( ( void ) );
void remove_portal args( ( OBJ_DATA *portal ) );
void weather_update args( ( void ) );
/* hashstr.c */
char * str_alloc args( ( const char *str ) );
char * quick_link args( ( char *str ) );
int str_free args( ( char *str ) );
void show_hash args( ( int count ) );
char * hash_stats args( ( void ) );
char * check_hash args( ( char *str ) );
void hash_dump args( ( int hash ) );
void show_high_hash args( ( int top ) );
/* newscore.c */
char * get_Class args( (CHAR_DATA *ch) );
char * get_race args( (CHAR_DATA *ch) );
#undef SK
#undef CO
#undef ST
#undef CD
#undef MID
#undef OD
#undef OID
#undef RID
#undef SF
#undef BD
#undef CL
#undef EDD
#undef RD
#undef ED
/*
* defines for use with this get_affect function
*/
#define RIS_000 BV00
#define RIS_R00 BV01
#define RIS_0I0 BV02
#define RIS_RI0 BV03
#define RIS_00S BV04
#define RIS_R0S BV05
#define RIS_0IS BV06
#define RIS_RIS BV07
#define GA_AFFECTED BV09
#define GA_RESISTANT BV10
#define GA_IMMUNE BV11
#define GA_SUSCEPTIBLE BV12
#define GA_RIS BV30
/*
* Map Structures
*/
DECLARE_DO_FUN( do_mapout );
DECLARE_DO_FUN( do_lookmap );
struct map_data /* contains per-room data */
{
int vnum; /* which map this room belongs to */
int x; /* horizontal coordinate */
int y; /* vertical coordinate */
char entry; /* code that shows up on map */
};
struct map_index_data
{
MAP_INDEX_DATA *next;
int vnum; /* vnum of the map */
int map_of_vnums[49][81]; /* room vnums aranged as a map */
};
MAP_INDEX_DATA *get_map_index(int vnum);
void init_maps( void );
/*
* mudprograms stuff
*/
extern CHAR_DATA *supermob;
void oprog_speech_trigger( char *txt, CHAR_DATA *ch );
void oprog_random_trigger( OBJ_DATA *obj );
void oprog_wear_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
bool oprog_use_trigger( CHAR_DATA *ch, OBJ_DATA *obj, CHAR_DATA *vict, OBJ_DATA *targ, void *vo );
void oprog_remove_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_sac_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_damage_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_repair_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_drop_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_zap_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
char *oprog_type_to_name( int type );
void oprog_greet_trigger( CHAR_DATA *ch );
void oprog_get_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_examine_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_pull_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
void oprog_push_trigger( CHAR_DATA *ch, OBJ_DATA *obj );
/* mud prog defines */
#define ERROR_PROG -1
#define IN_FILE_PROG -2
typedef enum
{
ACT_PROG, SPEECH_PROG, RAND_PROG, FIGHT_PROG, DEATH_PROG, HITPRCNT_PROG,
ENTRY_PROG, GREET_PROG, ALL_GREET_PROG, GIVE_PROG, BRIBE_PROG, HOUR_PROG,
TIME_PROG, WEAR_PROG, REMOVE_PROG, SAC_PROG, LOOK_PROG, EXA_PROG, ZAP_PROG,
GET_PROG, DROP_PROG, DAMAGE_PROG, REPAIR_PROG, RANDIW_PROG, SPEECHIW_PROG,
PULL_PROG, PUSH_PROG, SLEEP_PROG, REST_PROG, LEAVE_PROG, SCRIPT_PROG,
USE_PROG
} prog_types;
/*
* For backwards compatability
*/
#define RDEATH_PROG DEATH_PROG
#define ENTER_PROG ENTRY_PROG
#define RFIGHT_PROG FIGHT_PROG
#define RGREET_PROG GREET_PROG
#define OGREET_PROG GREET_PROG
void rprog_leave_trigger( CHAR_DATA *ch );
void rprog_enter_trigger( CHAR_DATA *ch );
void rprog_sleep_trigger( CHAR_DATA *ch );
void rprog_rest_trigger( CHAR_DATA *ch );
void rprog_rfight_trigger( CHAR_DATA *ch );
void rprog_death_trigger( CHAR_DATA *killer, CHAR_DATA *ch );
void rprog_speech_trigger( char *txt, CHAR_DATA *ch );
void rprog_random_trigger( CHAR_DATA *ch );
void rprog_time_trigger( CHAR_DATA *ch );
void rprog_hour_trigger( CHAR_DATA *ch );
char *rprog_type_to_name( int type );
#define OPROG_ACT_TRIGGER
#ifdef OPROG_ACT_TRIGGER
void oprog_act_trigger( char *buf, OBJ_DATA *mobj, CHAR_DATA *ch,
OBJ_DATA *obj, void *vo );
#endif
#define RPROG_ACT_TRIGGER
#ifdef RPROG_ACT_TRIGGER
void rprog_act_trigger( char *buf, ROOM_INDEX_DATA *room, CHAR_DATA *ch,
OBJ_DATA *obj, void *vo );
#endif