/* externs.h - Prototypes for externs not defined elsewhere */
#include "copyright.h"
#ifndef __EXTERNS__H
#define __EXTERNS__H
#include "db.h"
#include "mudconf.h"
#define ToLower(s) (isupper(s) ? tolower(s) : (s))
#define ToUpper(s) (islower(s) ? toupper(s) : (s))
extern long random(void);
/* From cque.c */
extern int halt_que (dbref player, dbref object);
extern void wait_que (dbref player, dbref cause, int key, int wait, dbref sem,
char *command, char *args[], int nargs);
/* From eval.c */
extern char *parse_to(char **dstr, char delim, int stripbrackets);
extern char *parse_arglist (dbref player, dbref cause, char *dstr, char delim,
int eval, char *fargs[], int nfargs, char *cargs[], int ncargs);
extern char *exec(dbref player, dbref cause, int func_opt, char *dstr,
char *cargs[], int ncargs);
/* From game.c */
#define notify(p,m) notify_check(p,p,m,0)
#define notify_with_cause(p,c,m) notify_check(p,c,m,0)
#define notify_puppet(p,c,m) notify_check(p,c,m,1)
extern void notify_check(dbref player, dbref enactor, const char *msg,
int check_puppet);
extern int Hearer(dbref thing);
extern void report(void);
extern void panic(const char *message, int dump);
extern void do_rwho(dbref player, dbref cause, int key);
/* From help.c */
extern void spit_file(dbref player,const char *filename);
extern int helpindex_read (HASHTAB *htab, char *filename);
extern void helpindex_load (dbref player);
extern void helpindex_init (void);
/* From log.c */
extern int start_log(const char *primary, const char *secondary);
extern void end_log();
extern void log_text(char *text);
extern void log_number(int num);
extern void log_name(dbref target);
extern void log_name_and_loc(dbref target);
extern char *OBJTYP(dbref thing);
extern void log_type_and_name(dbref thing);
extern void log_type_and_num(dbref thing);
/* From look.c */
extern void look_in(dbref player,dbref loc, int show_exits);
/* From move.c */
extern void move_object (dbref thing, dbref dest);
extern void move_via_generic (dbref thing, dbref dest, dbref cause,
int hush);
extern void move_via_exit (dbref thing, dbref dest, dbref cause, dbref exit,
int hush);
extern int move_via_teleport (dbref thing, dbref dest, dbref cause,
int hush);
extern void move_exit (dbref player, dbref exit, int divest,
const char *failmsg, int hush);
extern void do_enter_internal (dbref player, dbref thing, int quiet);
/* From object.c */
extern dbref start_home(void);
extern dbref default_home(void);
extern int can_set_home (dbref player, dbref thing, dbref home);
extern dbref new_home (dbref player);
extern dbref clone_home (dbref player, dbref thing);
extern void divest_object (dbref thing);
extern dbref create_obj (dbref player, int objtype, char *name, int cost);
extern void destroy_obj (dbref player, dbref obj);
extern void empty_obj (dbref obj);
/* From player.c */
extern void record_login (dbref player, int isgood, char *ldate, char *lhost);
extern int check_pass(dbref player, const char *password);
extern dbref connect_player(char *name, char *password, char *host);
extern dbref create_player(char *name, char *password, dbref creator,
int isrobot);
extern int add_player_name (dbref player, char *name);
extern int delete_player_name (dbref player, char *name);
extern dbref lookup_player (dbref doer, char *name, int check_who);
extern void load_player_names (void);
extern void badname_add (char *bad_name);
extern int badname_check (char *bad_name);
extern void badname_list (dbref player, const char *prefix);
/* From predicates.c */
extern char *tprintf();
extern dbref insert_first (dbref head, dbref thing);
extern dbref remove_first (dbref head, dbref thing);
extern dbref reverse_list(dbref list);
extern int member(dbref thing,dbref list);
extern int is_number (char *str);
extern int could_doit(dbref player, dbref thing, int locknum);
extern int can_see(dbref player,dbref thing,int can_see_loc);
extern void add_quota(dbref who, int payment);
extern int canpayfees(dbref player, dbref who, int pennies, int quota);
extern void giveto(dbref who,int pennies);
extern int payfor(dbref who,int cost);
extern int ok_name(const char *name);
extern int ok_player_name(const char *name);
extern int ok_attr_name(const char *attr_name);
extern int ok_password(const char *password);
extern void handle_ears (dbref thing, int could_hear, int can_hear);
extern dbref is_possess(dbref player, char *arg1);
extern dbref where_is (dbref what);
extern int nearby (dbref player, dbref thing);
extern dbref next_exit(dbref player,dbref this, int exam_here);
extern void did_it(dbref player,dbref thing,int what,const char *def,int owhat,
const char *odef,int awhat, char *args[], int nargs);
extern void pool_init(POOL *poolp, int poolsize);
extern void pool_check(const char *tag);
extern char *pool_alloc(POOL *poolp, const char *tag);
extern void pool_free(POOL *poolp, char **buf);
extern void list_bufstats(dbref player);
extern void list_buftrace(dbref player);
/* From set.c */
extern int parse_attrib(dbref player, char *str, dbref *thing, int *atr);
extern int parse_attrib_wild(dbref player, char *str, dbref *thing,
int get_locks);
extern void edit_string (char *src, char **dst, char *from, char *to);
extern dbref match_controlled(dbref player,const char *name);
extern dbref match_affected(dbref player,const char *name);
extern dbref match_examinable(dbref player,const char *name);
/* From speech.c */
extern void notify_all(dbref loc, dbref player,
const char *msg, const int forward);
extern void notify_except(dbref loc, dbref player, dbref exception,
const char *msg, const int forward);
extern void notify_except2(dbref loc, dbref player, dbref exc1, dbref exc2,
const char *msg, const int forward);
extern int check_filter(dbref object, dbref player, int filter,
const char *msg);
extern char *add_prefix(dbref object, dbref player, int prefix,
const char *msg, const char *dflt);
/* From stringutil.c */
extern char *munge_space(char *string);
extern char *trim_spaces(char *string);
extern char *grabto (char **str, char targ);
extern int string_compare(const char *s1,const char *s2);
extern int string_prefix(const char *string,const char *prefix);
extern const char *string_match(const char *src,const char *sub);
extern char *dollar_to_space(const char *dollars);
extern char *replace_string(const char *old,
const char *new,const char *string);
extern char *replace_string_inplace(const char *old,
const char *new, char *string);
extern char *skip_space(const char *s);
extern char *seek_char(const char *s, char c);
extern int prefix_match(const char *s1, const char *s2);
extern int minmatch (char *str, char *target, int min);
extern char* strsave(const char *s);
extern int safe_copy_str(char *src, char *buff, char **bufp, int max);
extern int safe_copy_chr(char src, char *buff, char **bufp, int max);
extern int matches_exit_from_list (char *str, char *pattern);
/* From boolexp.c */
extern int eval_boolexp(dbref player, dbref thing, struct boolexp *b);
struct boolexp *parse_boolexp(dbref player,const char *buf);
int eval_boolexp_atr(dbref player, dbref thing, char *key);
/* From unparse.c */
extern char *unparse_boolexp(dbref player,struct boolexp *b);
extern char *unparse_boolexp_quiet(dbref player,struct boolexp *b);
extern char *unparse_boolexp_decompile(dbref player,struct boolexp *b);
extern char *unparse_boolexp_function(dbref player,struct boolexp *b);
/* From walkdb.c */
extern int chown_all (dbref from_player, dbref to_player);
extern void olist_init (void);
extern void olist_add (dbref item);
extern dbref olist_first (void);
extern dbref olist_next (void);
/* From wild.c */
extern int wild(char *tstr, char *dstr, char *args[], int nargs);
extern int wild_match(char *tstr, char *dstr, char *args[], int nargs);
extern int quick_wild(char *s, char *d);
/* From match.c */
dbref pref_match(dbref player,dbref list,const char *string);
/* From compress.c */
const char *uncompress(const char *s);
extern const char *compress();
char *uncompress_str(char *dest, const char *s);
/* from db.c */
extern int Commer(dbref thing);
void s_Pass(dbref thing, const char *s);
void s_Pennies(dbref thing, int p);
void s_Flags(dbref thing, FLAG f);
void s_Owner(dbref thing, dbref new);
void s_Name(dbref thing, const char *s);
void s_Exits(dbref thing, dbref new);
void s_Next(dbref thing, dbref new);
void s_Location(dbref thing, dbref new);
void s_Contents(dbref thing, dbref new);
void s_Zone(dbref thing, dbref new);
void s_Link(dbref thing, dbref new);
void s_Parent(dbref thing, dbref new);
#define s_Home(x,h) s_Link(x,h)
#define s_Dropto(x,h) s_Location(x,h)
char *Name(dbref thing);
int Pennies(dbref thing);
FLAG Flags(dbref thing);
dbref Owner(dbref thing);
dbref Exits(dbref thing);
dbref Next(dbref thing);
dbref Location(dbref thing);
dbref Contents(dbref thing);
dbref Zone(dbref thing);
dbref Link(dbref thing);
dbref Parent(dbref thing);
#define Home(x) Link(x)
#define Dropto(x) Location(x)
extern void clone_object(dbref a, dbref b);
extern void init_min_db(void);
extern void atr_push(void);
extern void atr_pop(void);
extern int atr_head(dbref thing, char **attrp);
extern int atr_next(char **attrp);
extern int init_gdbm_db(char *gdbmfile);
extern void atr_cpy (dbref dest, dbref source);
extern void atr_chown (dbref obj);
extern void atr_clr (dbref thing, int atr);
extern void atr_add_raw (dbref thing, int atr, char *buff);
extern void atr_add (dbref thing, int atr, char *buff, dbref owner, int flags);
extern void atr_set_owner(dbref thing, int atr, dbref owner);
extern void atr_set_flags(dbref thing, int atr, int flags);
extern char *atr_get_raw(dbref thing, int atr);
extern char *atr_get(dbref thing, int atr, dbref *owner, int *flags);
extern char *atr_pget(dbref thing, int atr, dbref *owner, int *flags);
extern char *atr_get_str(char *buff, dbref thing, int atr,
dbref *owner, int *flags);
extern char *atr_pget_str(char *buff, dbref thing, int atr,
dbref *owner, int *flags);
extern int atr_get_info(dbref thing, int atr, dbref *owner, int *flags);
extern int atr_pget_info(dbref thing, int atr, dbref *owner, int *flags);
extern void atr_free (dbref thing);
extern VATTR *define_vattr (char *aname, int anum, int aflags);
extern VATTR *alloc_vattr (char *aname, int aflags);
extern void free_vattr (int anum);
#ifdef notdef
/* From cque.c */
extern void parse_que ();
extern int halt_que ();
extern void wait_que ();
/* From create.c */
extern int can_set_home ();
/* From destroy.c */
extern dbref free_get();
extern void destroy_object ();
/* From eval.c */
extern char *parse_to();
extern char *parse_arglist ();
extern char *exec();
/* From game.c */
extern void notify();
extern void notify_check();
extern int Hearer();
extern void report();
extern void panic();
extern int list_check(dbref thing, dbref player, char type, char *str,
int check_parents);
extern int atr_match(dbref thing, dbref player, char type, char *str,
int check_parents);
extern void do_rwho();
/* From help.c */
extern void spit_file();
extern int helpindex_read ();
extern void helpindex_load ();
extern void helpindex_init ();
/* From log.c */
extern int start_log();
extern void end_log();
extern void log_text();
extern void log_name();
extern void log_name_and_loc();
/* From look.c */
extern void look_room();
extern void do_look_around();
/* From move.c */
extern void safe_tel();
extern void do_move_internal();
extern void enter_room();
/* From player.c */
extern void record_login();
extern int check_pass();
extern dbref connect_player();
extern dbref create_player();
/* From player_list.c */
extern dbref lookup_player();
extern void delete_player();
extern void clear_players();
void add_player();
/* From predicates.c */
extern dbref where_is ();
extern int nearby ();
extern int could_doit();
extern void did_it();
extern int is_number ();
extern int can_see();
extern int payfor();
extern void giveto();
extern int ok_name();
extern int ok_attr_name();
extern int ok_password();
extern int ok_player_name();
extern char *tprintf();
extern void pronoun_substitute();
extern int canpayfees();
extern dbref is_possess();
extern dbref next_exit();
extern void pool_init();
extern char *pool_alloc();
extern void pool_free();
extern char *pool_stats();
extern void pool_trace();
extern void list_bufstats();
extern void list_buftrace();
/* From set.c */
extern int parse_attrib();
extern dbref match_controlled();
extern dbref match_affected();
extern dbref match_examinable();
/* From speech.c */
extern void notify_all();
extern void notify_except();
extern void notify_except2();
/* From stringutil.c */
extern char *munge_space();
extern char *grabto();
extern int string_compare();
extern int string_prefix();
extern const char *string_match();
extern char *dollar_to_space();
extern char *replace_string();
extern char *replace_string_inplace();
extern char *skip_space();
extern char *seek_char();
extern int prefix_match();
extern int minmatch ();
extern char* strsave();
extern int safe_copy_str();
extern int safe_copy_chr();
/* From utils.c */
extern int member();
extern dbref remove_first();
extern dbref reverse();
extern dbref find_entrance();
/* From boolexp.c */
extern int eval_boolexp();
struct boolexp *parse_boolexp();
int eval_boolexp_atr();
/* From unparse.c */
extern char *unparse_boolexp();
extern char *unparse_boolexp_quiet();
extern char *unparse_boolexp_decompile();
extern char *unparse_boolexp_function();
/* From walkdb.c */
extern int chown_all ();
extern void olist_init ();
extern void olist_add ();
extern dbref olist_first ();
extern dbref olist_next ();
/* From wild.c */
extern int wild();
extern int wild_match();
extern int quick_wild();
/* From match.c */
extern dbref pref_match();
/* From compress.c */
extern const char *uncompress();
extern const char *compress();
extern void init_compress();
extern char *uncompress_str();
/* from db.c */
extern int Commer();
void s_Pass();
void s_Pennies();
void s_Flags();
void s_Owner();
void s_Name();
void s_Exits();
void s_Next();
void s_Location();
void s_Contents();
void s_Zone();
void s_Link();
void s_Parent();
char *Name();
int Pennies();
FLAG Flags();
dbref Owner();
dbref Exits();
dbref Next();
dbref Location();
dbref Contents();
dbref Zone();
dbref Link();
dbref Parent();
void clone_object();
void init_min_db();
int atr_head();
int atr_nexet();
extern int init_gdbm_db();
extern void atr_cpy ();
extern void atr_chown ();
extern void atr_clr ();
extern void atr_add_raw ();
extern void atr_add ();
extern void atr_set_owner();
extern void atr_set_flags();
extern char *atr_get_raw();
extern char *atr_get();
extern char *atr_get_str();
extern int atr_get_info();
extern void atr_free ();
extern VATTR *define_vattr ();
extern VATTR *alloc_vattr ();
extern void free_vattr ();
#endif /* notdef */
/* Powers keys */
/* IMPORTANT -- Keep this table in sync with the powers table in command.c
* The constants are used as array indexes into the powers table.
*/
#define POW_CHG_QUOTAS 0 /* May change quotas of controlled players */
#define POW_CHOWN_ANY 1 /* Ignore loc/holding restrictions on @chown */
#define POW_CHOWN_ME 2 /* May @chown things to me */
#define POW_CHOWN_OTHER 3 /* May @chown things to others */
#define POW_CHOWN_PLYR 4 /* May @chown players */
#define POW_CONTROL_ALL 5 /* I control everything */
#define POW_WIZARD_WHO 6 /* See extra WHO information */
#define POW_EXAM_ALL 7 /* I can examine everything */
#define POW_FIND_UNFIND 8 /* Can find unfindable players */
#define POW_FREE_MONEY 9 /* I have infinite money */
#define POW_FREE_QUOTA 10 /* I have infinite quota */
#define POW_GRAB_PLAYER 11 /* Can @tel players to me */
#define POW_IGNORE_RST 12 /* Ignore penalty flags in access checks */
#define POW_JOIN_PLAYER 13 /* Can @tel to loc of player */
#define POW_LONGFINGERS 14 /* Can get/whisper/etc from a distance */
#define POW_NO_BOOT 15 /* Player is immune from @booting */
#define POW_NO_TOAD 16 /* Player is immune from @toading/@destroying */
#define POW_RENAME_ME 17 /* Player can change name or password */
#define POW_SEE_AFLAGS 18 /* Player can see admin (hidden) flags */
#define POW_SEE_QUEUE 19 /* Player can see the entire queue */
#define POW_SEE_HIDDEN 20 /* Player can see hidden players on WHO list */
#define POW_SEE_IATTRS 21 /* Player can see invisible attributes */
#define POW_SEE_MFLAGS 22 /* Player can see game maintenance flags */
#define POW_SEE_AATTRS 23 /* Player can set administration attributes */
#define POW_SET_AFLAGS 24 /* Player can set admin flags */
#define POW_SET_MATTRS 25 /* Player can set maintenance attributes */
#define POW_SET_MFLAGS 26 /* Player can set game maintenance flags */
#define POW_STAT_ANY 27 /* Can @stat anyone */
#define POW_STEAL 28 /* Can give negative money */
#define POW_TEL_ANYWHR 29 /* Ignore control/JUMP_OK on @tel */
#define POW_TEL_UNRST 30 /* Ignore object type restrictions on @tel */
#define POW_UNKILLABLE 31 /* Can't be killed */
/* Command handler keys */
#define ATTRIB_ACCESS 1 /* Change access to attribute */
#define ATTRIB_RENAME 2 /* Rename attribute */
#define ATTRIB_DELETE 4 /* Delete attribute */
#define BOOT_QUIET 1 /* Inhibit boot message to victim */
#define BOOT_PORT 2 /* Boot by port number */
#define CHOWN_ONE 1 /* item = new_owner */
#define CHOWN_ALL 2 /* old_owner = new_owner */
#define CLONE_LOCATION 0 /* Create cloned object in my location */
#define CLONE_INHERIT 1 /* Keep INHERIT bit if set */
#define CLONE_PRESERVE 2 /* Preserve the owner of the object */
#define CLONE_INVENTORY 4 /* Create cloned object in my inventory */
#define CLONE_SET_COST 8 /* ARG2 is cost of cloned object */
#define CLONE_SET_LOC 16 /* ARG2 is location of cloned object */
#define CLONE_SET_NAME 32 /* ARG2 is alternate name of cloned object */
#define CLONE_PARENT 64 /* Set parent on obj instd of cloning attrs */
#define CRE_INVENTORY 0 /* Create object in my inventory */
#define CRE_LOCATION 1 /* Create object in my location */
#define CRE_SET_LOC 2 /* ARG2 is location of new object */
#define DBCK_DEFAULT 1 /* Get default tests too */
#define DBCK_REPORT 2 /* Report info to invoker */
#define DBCK_FULL 4 /* Do all tests */
#define DBCK_FLOATING 8 /* Look for floating rooms */
#define DBCK_PURGE 16 /* Purge the db of refs to going objects */
#define DBCK_LINKS 32 /* Validate exit and object chains */
#define DBCK_WEALTH 64 /* Validate object value/wealth */
#define DBCK_OWNER 128 /* Do more extensive owner checking */
#define DBCK_OWN_EXIT 256 /* Check exit owner owns src or dest */
#define DBCK_WIZARD 512 /* Check for wizards/wiz objects */
#define DBCK_TYPES 1024 /* Check for valid & appropriate types */
#define DBCK_SPARE 2048 /* Make sure spare header fields are NOTHING */
#define DBCK_HOMES 4096 /* Make sure homes and droptos are valid */
#define DEST_ONE 1 /* object */
#define DEST_ALL 2 /* owner */
#define DEST_OVERRIDE 4 /* override Safe() */
#define DIG_TELEPORT 1 /* teleport to room after @digging */
#define DOING_MESSAGE 0 /* Set my DOING message */
#define DOING_HEADER 1 /* Set the DOING header */
#define DOING_POLL 2 /* List DOING header */
#define DROP_QUIET 1 /* Don't do odrop/adrop if control */
#define DUMP_STRUCT 1 /* Dump flat structure file */
#define DUMP_TEXT 2 /* Dump text (gdbm) file */
#define EXAM_DEFAULT 0 /* Default */
#define EXAM_BRIEF 1 /* Nonowner sees just owner */
#define EXAM_LONG 2 /* Nonowner sees public attrs too */
#define EXAM_DEBUG 4 /* Display more info for finding db problems */
#define EXAM_PARENT 8 /* Get attr from parent when exam obj/attr */
#define FIXDB_OWNER 1 /* Fix OWNER field */
#define FIXDB_LOC 2 /* Fix LOCATION field */
#define FIXDB_CON 4 /* Fix CONTENTS field */
#define FIXDB_EXITS 8 /* Fix EXITS field */
#define FIXDB_NEXT 16 /* Fix NEXT field */
#define FIXDB_PENNIES 32 /* Fix PENNIES field */
#define FIXDB_ZONE 64 /* Fix ZONE field */
#define FIXDB_LINK 128 /* Fix LINK field */
#define FIXDB_PARENT 256 /* Fix PARENT field */
#define FIXDB_DEL_PN 512 /* Remove player name from player name index */
#define FIXDB_ADD_PN 1024 /* Add player name to player name index */
#define FIXDB_NAME 2048 /* Set NAME attribute */
#define FRC_PREFIX 0 /* #num command */
#define FRC_COMMAND 1 /* what=command */
#define GET_QUIET 1 /* Don't do osucc/asucc if control */
#define GLOB_ENABLE 1 /* key to enable */
#define GLOB_DISABLE 2 /* key to disable */
#define GLOB_LIST 3 /* key to list */
#define HALT_ALL 1 /* halt everything */
#define HELP_HELP 1 /* get data from help file */
#define HELP_NEWS 2 /* get data from news file */
#define HELP_WIZHELP 3 /* get data from wizard help file */
#define KILL_KILL 1 /* gives victim insurance */
#define KILL_SLAY 2 /* no insurance */
#define LOOK_LOOK 1 /* list desc (and succ/fail if room) */
#define LOOK_EXAM 2 /* full listing of object */
#define LOOK_DEXAM 3 /* debug listing of object */
#define LOOK_INVENTORY 4 /* list inventory of object */
#define LOOK_SCORE 5 /* list score (# coins) */
#define MARK_SET 0 /* Set mark bits */
#define MARK_CLEAR 1 /* Clear mark bits */
#define MOTD_ALL 0 /* login message for all */
#define MOTD_WIZ 1 /* login message for wizards */
#define MOTD_DOWN 2 /* login message when logins disabled */
#define MOTD_FULL 4 /* login message when too many players on */
#define MOTD_LIST 8 /* Display current login messages */
#define MOVE_QUIET 1 /* Dont do osucc/ofail/asucc/afail if ctrl */
#define NFY_NFY 0 /* Notify first waiting command */
#define NFY_NFYALL 1 /* Notify all waiting commands */
#define NFY_DRAIN 2 /* Delete waiting commands */
#define OPEN_LOCATION 0 /* Open exit in my location */
#define OPEN_INVENTORY 1 /* Open exit in me */
#define PASS_ANY 1 /* name=newpass */
#define PASS_MINE 2 /* oldpass=newpass */
#define PCRE_PLAYER 1 /* create new player */
#define PCRE_ROBOT 2 /* create robot player */
#define PEMIT_PEMIT 1 /* emit to named player */
#define PEMIT_OEMIT 2 /* emit to all in current room except named */
#define PEMIT_WHISPER 3 /* whisper to player in current room */
#define PEMIT_FSAY 4 /* force controlled obj to say */
#define PEMIT_FEMIT 5 /* force controlled obj to emit */
#define PEMIT_FPOSE 6 /* force controlled obj to pose */
#define PEMIT_FPOSE_NS 7 /* force controlled obj to pose w/o space */
#define PEMIT_CONTENTS 8 /* Send to contents (additive) */
#define PS_BRIEF 0 /* Short PS report */
#define PS_LONG 1 /* Long PS report */
#define PS_SUMM 2 /* Queue counts only */
#define PS_ALL 4 /* List entire queue */
#define QUEUE_KICK 1 /* Process commands from queue */
#define QUEUE_WARP 2 /* Advance or set back wait queue clock */
#define QUOTA_SET 1 /* Set a quota */
#define QUOTA_FIX 2 /* Repair a quota */
#define QUOTA_TOT 4 /* Operate on total quota */
#define QUOTA_REM 8 /* Operate on remaining quota */
#define QUOTA_ALL 16 /* Operate on all players */
#define RWHO_START 1 /* Start transmitting to remote RWHO srvr */
#define RWHO_STOP 2 /* Close connection to remote RWHO srvr */
#define SAY_SAY 1 /* say in current room */
#define SAY_NOSPACE 1 /* OR with xx_EMIT to get nospace form */
#define SAY_POSE 2 /* pose in current room */
#define SAY_POSE_NOSPC 3 /* pose w/o space in current room */
#define SAY_PREFIX 4 /* first char indicates foratting */
#define SAY_EMIT 5 /* emit in current room */
#define SAY_SHOUT 8 /* shout to all logged-in players */
#define SAY_WALLPOSE 9 /* Pose to all logged-in players */
#define SAY_WALLEMIT 10 /* Emit to all logged-in players */
#define SAY_WIZSHOUT 12 /* shout to all logged-in wizards */
#define SAY_WIZPOSE 13 /* Pose to all logged-in wizards */
#define SAY_WIZEMIT 14 /* Emit to all logged-in wizards */
#define SAY_GRIPE 16 /* Complain to management */
#define SAY_NOTE 17 /* Comment to log for wizards */
#define SAY_NOTAG 32 /* Don't put Broadcast: in front (additive) */
#define SAY_HERE 64 /* Output to current location */
#define SAY_ROOM 128 /* Output to containing room */
#define SRCH_SEARCH 1 /* Do a normal search */
#define SRCH_MARK 2 /* Set mark bit for matches */
#define SRCH_UNMARK 3 /* Clear mark bit for matches */
#define STAT_PLAYER 0 /* Display stats for one player or tot objs */
#define STAT_ALL 1 /* Display global stats */
#define STAT_ME 2 /* Display stats for me */
#define SWITCH_DEFAULT 0 /* Use the configured default for switch */
#define SWITCH_ANY 1 /* Execute all cases that match */
#define SWITCH_ONE 2 /* Execute only first case that matches */
#define SWEEP_ME 1 /* Check my inventory */
#define SWEEP_HERE 2 /* Check my location */
#define SWEEP_COMMANDS 4 /* Check for $-commands */
#define SWEEP_LISTEN 8 /* Check for @listen-ers */
#define SWEEP_PLAYER 16 /* Check for players and puppets */
#define SWEEP_CONNECT 32 /* Search for connected players/puppets */
#define SWEEP_EXITS 64 /* Search the exits for audible flags */
#define TOAD_NO_CHOWN 1 /* Don't change ownership */
#define TWARP_QUEUE 1 /* Warp the wait and sem queues */
#define TWARP_DUMP 2 /* Warp the dump interval */
#define TWARP_CLEAN 4 /* Warp the cleaning interval */
#define TWARP_IDLE 8 /* Warp the idle check interval */
#define TWARP_RWHO 16 /* Warp the RWHO dump interval */
/* Hush codes for movement messages */
#define HUSH_ENTER 1 /* xENTER/xEFAIL */
#define HUSH_LEAVE 2 /* xLEAVE/xLFAIL */
#define HUSH_EXIT 4 /* xSUCC/xDROP/xFAIL from exits */
/* Evaluation directives */
#define EV_FMASK 0x0300 /* Mask for function type check */
#define EV_FIGNORE 0x0000 /* Don't treat text before () as func name */
#define EV_FMAND 0x0100 /* Text before () must be a function name */
#define EV_FCHECK 0x0200 /* Check text before () for function */
#define EV_STRIP 0x0400 /* Strip one level of brackets */
#define EV_EVAL 0x0800 /* Evaluate results before returning */
#define EV_STRIP_TS 0x1000 /* Strip trailing spaces */
#define EV_STRIP_LS 0x2000 /* Strip leading spaces */
/* Buffer reuse directives */
#define RU_ARG1_COPY 0x0000 /* Callee makes its own copy of arg1 */
#define RU_ARG1_TAKE 0x0100 /* Callee uses and disposes of arg1 lbuf */
#define RU_ARG1_TMPL 0x0200 /* Callee uses but does not dispose of arg1 */
#define RU_ARG2_COPY 0x0000 /* Callee makes its own copy of arg1 */
#define RU_ARG2_TAKE 0x0400 /* Callee uses and disposes of arg2 lbuf */
#define RU_ARG2_TMPL 0x0800 /* Callee uses but does not dispose of arg2 */
#define STARTLOG(key,p,s) \
if ((((key) & mudconf.log_options) != 0) && start_log(p, s)) {
#define ENDLOG \
end_log(); }
#define LOG_SIMPLE(key,p,s,m) \
STARTLOG(key,p,s) \
log_text(m); \
ENDLOG
#define test_top() ((mudstate.qfirst != NULL) ? 1 : 0)
#define controls(p,x) Controls(p,x)
#ifndef STANDALONE
#define alloc_lbuf(s) pool_alloc(&mudstate.lbuf_pool,s)
#define free_lbuf(b) pool_free(&mudstate.lbuf_pool,((char **)&(b)))
#define alloc_mbuf(s) pool_alloc(&mudstate.mbuf_pool,s)
#define free_mbuf(b) pool_free(&mudstate.mbuf_pool,((char **)&(b)))
#define alloc_sbuf(s) pool_alloc(&mudstate.sbuf_pool,s)
#define free_sbuf(b) pool_free(&mudstate.sbuf_pool,((char **)&(b)))
#define alloc_bool(s) (struct boolexp *)pool_alloc(&mudstate.bool_pool,s)
#define free_bool(b) pool_free(&mudstate.bool_pool,((char **)&(b)))
#define alloc_qentry(s) (BQUE *)pool_alloc(&mudstate.qentry_pool,s)
#define free_qentry(b) pool_free(&mudstate.qentry_pool,((char **)&(b)))
#else
#define alloc_lbuf(s) (char *)malloc(LBUF_SIZE)
#define free_lbuf(b) if (b) free(b)
#define alloc_mbuf(s) (char *)malloc(MBUF_SIZE)
#define free_mbuf(b) if (b) free(b)
#define alloc_sbuf(s) (char *)malloc(SBUF_SIZE)
#define free_sbuf(b) if (b) free(b)
#define alloc_bool(s) (struct boolexp *)malloc(sizeof(struct boolexp))
#define free_bool(b) if (b) free(b)
#define alloc_qentry(s) (BQUE *)malloc(sizeof(BQUE));
#define free_qentry(b) if (b) free(b)
#endif
#define safe_str(s,b,p) safe_copy_str(s,b,p,(LBUF_SIZE-1))
#define safe_chr(c,b,p) safe_copy_chr(c,b,p,(LBUF_SIZE-1))
#define safe_sb_str(s,b,p) safe_copy_str(s,b,p,(SBUF_SIZE-1))
#define safe_sb_chr(c,b,p) safe_copy_chr(c,b,p,(SBUF_SIZE-1))
#define safe_mb_str(s,b,p) safe_copy_str(s,b,p,(MBUF_SIZE-1))
#define safe_mb_chr(c,b,p) safe_copy_chr(c,b,p,(MBUF_SIZE-1))
#endif /* __EXTERNS_H */