/* $Header: externs.h,v 1.4 90/05/02 20:25:21 lachesis Exp $
 * $Log:	externs.h,v $
 * Revision 1.4  90/05/02  20:25:21  lachesis
 * Converted gender substitution code to read properties, 
 * changed page to provide a message, too.
 * 
 * Revision 1.3  90/04/21  17:20:44  lachesis
 * Added property lists.
 * 
 * Revision 1.2  90/04/20  14:06:29  lachesis
 * Added @odrop && @drop.
 * 
 * Revision 1.1  90/04/14  14:56:35  lachesis
 * Initial revision
 * 
 */
#include "copyright.h"

/* Prototypes for externs not defined elsewhere */
#include "db.h"

/* from db.c */
extern struct plist *new_prop(void);
extern void free_prop(struct plist *p);
extern int  number(char *s);
extern void putproperties(FILE *f, struct plist *p);
extern void putprop(FILE *f, struct plist *p);
extern struct plist *getproperties(FILE *f);

/* From create.c */
extern void do_open(dbref player, const char *direction, const char *linkto);
extern void do_link(dbref player, const char *name, const char *room_name);
extern void do_dig(dbref player, const char *name);
extern void do_create(dbref player, const char *name, int cost);
extern void do_action(dbref, const char *, const char *);
extern void do_attach(dbref, const char *, const char *);

/* From game.c */
extern void do_dump(dbref player);
extern void do_shutdown(dbref player);

/* From help.c */
extern void spit_file(dbref player, const char *filename);
extern void do_help(dbref player);
extern void do_news(dbref player);

/* From look.c */
extern void look_room(dbref player, dbref room);
extern void do_look_around(dbref player);
extern void do_look_at(dbref player, const char *name);
extern void do_examine(dbref player, const char *name);
extern void do_score(dbref player);
extern void do_inventory(dbref player);
extern void do_find(dbref player, const char *name);

/* From move.c */
extern void moveto(dbref what, dbref where);
extern void enter_room(dbref player, dbref loc);
extern void send_home(dbref thing);
extern int can_move(dbref player, const char *direction);
extern void do_move(dbref player, const char *direction);
extern void do_get(dbref player, const char *what);
extern void do_drop(dbref player, const char *name);
#ifdef RECYCLE
extern void do_recycle(dbref player, const char *name);
#endif

/* From player.c */
extern dbref lookup_player(const char *name);
extern void do_password(dbref player, const char *old, const char *newobj);
extern void clear_players(void);
extern void add_player(dbref);
extern void delete_player(dbref);

/* From predicates.h */
extern int can_link_to(dbref who, dbref where);
extern int could_doit(dbref player, dbref thing);
extern int can_doit(dbref player, dbref thing, const char *default_fail_msg);
extern int can_see(dbref player, dbref thing, int can_see_location);
extern int controls(dbref who, dbref what);
extern int payfor(dbref who, int cost);

/* From rob.c */
extern void do_kill(dbref player, const char *what, int cost);
extern void do_give(dbref player, char *recipient, int amount);
extern void do_rob(dbref player, const char *what);

/* From set.c */
extern void do_name(dbref player, const char *name, char *newname);
extern void do_describe(dbref player, const char *name, const char *description);
extern void do_fail(dbref player, const char *name, const char *message);
extern void do_success(dbref player, const char *name, const char *message);
extern void do_drop_message(dbref player, const char *name, const char *message);
extern void do_osuccess(dbref player, const char *name, const char *message);
extern void do_ofail(dbref player, const char *name, const char *message);
extern void do_odrop(dbref player, const char *name, const char *message);
extern void do_lock(dbref player, const char *name, const char *keyname);
extern void do_unlock(dbref player, const char *name);
extern void do_unlink(dbref player, const char *name);
extern void do_chown(dbref player, const char *name, const char *newobj);
extern void do_set(dbref player, const char *name, const char *flag);

/* From speech.c */
extern void do_wall(dbref player, const char *arg1, const char *arg2);
extern void do_gripe(dbref player, const char *arg1, const char *arg2);
extern void do_pose(dbref player, const char *arg1, const char *arg2);
extern void do_say(dbref player, const char *arg1, const char *arg2);
extern void do_page(dbref player, const char *arg1, const char *arg2);
extern void do_whisper(dbref player, const char *arg1, const char *arg2);
extern void notify_except(dbref first, dbref exception, const char *msg);
extern void notify_except2(dbref first, dbref ex1, dbref ex2, const char *msg);

/* From stringutil.c */
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 void pronoun_substitute(char *, dbref, const char *, int);

/* From utils.c */
extern int member(dbref thing, dbref list);
extern dbref remove_first(dbref first, dbref what);

/* From wiz.c */
extern void do_teleport(dbref player, const char *arg1, const char *arg2);
extern void do_force(dbref player, const char *what, char *command);
extern void do_stats(dbref player, const char *name);
extern void do_toad(dbref player, const char *name);
extern void do_newpassword(dbref, const char *, const char *);

/* From boolexp.c */
extern int eval_boolexp(dbref player, struct boolexp *b);
extern struct boolexp *parse_boolexp(dbref player, const char *string);

/* From unparse.c */
extern const char *unparse_object(dbref player, dbref object);
extern const char *unparse_boolexp(dbref, struct boolexp *);

/* from property.c */
extern void add_property(dbref player, const char *type, const char *class, int value);
extern void remove_property(dbref player, const char *type);
extern int has_property(dbref player, const char *type, const char *class, int value);
extern int has_property_strict(dbref player, const char *type, const char *class, int value);
extern const char *get_property_class(dbref player, const char *type);
extern int get_property_value(dbref, const char *);
extern int genderof(dbref player);
extern char *get_string(const char *s); /* non const alloc_string */

/* From compress.c */
#ifdef COMPRESS
extern const char *compress(const char *);
extern const char *uncompress(const char *);
extern void init_compress(void);
#endif /* COMPRESS */