/* $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);

/* create.c */
extern void do_open(dbref player, const char *direction, const char *linkto);
extern void do_link(dbref player, const char *thing_name, const char *dest_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 player, const char *action_name, const char *source_name);
extern void do_attach(dbref player, const char *action_name, const char *source_name);
extern int unset_source(dbref player, dbref loc, dbref action, const char *other_room_msg);

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

/* move.c */
extern void moveto(dbref what, dbref where);
extern void send_contents(dbref loc, dbref dest);
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);

/* predicates.c */
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_loc);
extern int controls(dbref who, dbref what);
extern int can_link(dbref who, dbref what);
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_password(const char *password);

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

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

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

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

/* 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 player, const char *name, const char *password);
extern void do_boot(dbref player, const char *name);
extern void do_pcreate (dbref player, char *pname, char *pword);

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