/* flags.h - object flags */
#include "copyright.h"
#ifndef __FLAGS_H
#define __FLAGS_H
#include "htab.h"
/* ---------------------------------------------------------------------------
* FLAGENT: Information about object flags.
*/
typedef struct flag_entry FLAGENT;
struct flag_entry {
char *flagname; /* Name of the flag */
int flagvalue; /* Which bit in the object is the flag */
char flaglett; /* Flag letter for listing */
int listperm; /* Who sees this flag when set */
int (*handler)(); /* Handler for setting/clearing this flag */
};
typedef struct flag_selection FLAGSEL;
struct flag_selection {
FLAG player_flags; /* Standard flags for players */
FLAG room_flags; /* Flags for rooms */
FLAG thing_flags; /* Flags for things */
FLAG exit_flags; /* Flags for exits */
FLAG player_eflags; /* Extended flags for players */
};
extern FLAGENT gen_flags[];
extern FLAGENT exit_flags[];
extern FLAGENT thing_flags[];
extern FLAGENT player_flags[];
extern FLAGENT room_flags[];
/* ---------------------------------------------------------------------------
* OBJENT: Fundamental object types
*/
typedef struct object_entry OBJENT;
struct object_entry {
char *name;
char lett;
int perm;
FLAGENT *flaglist;
HASHTAB *flaghtab;
};
extern OBJENT object_types[8];
extern void init_flagtab();
extern void display_flagtab (dbref player, FLAGENT *flagp, const char *prefix);
extern void flag_set (dbref target, dbref player, char *flag);
extern char *flag_description (dbref player, dbref target);
extern FLAGENT *find_flag (dbref thing, char *flagname);
extern char *decode_flags (dbref player, FLAG flagword, int flagtype);
extern char *unparse_object (dbref player, dbref target);
extern char *unparse_object_numonly (dbref target);
#define unparse_flags(p,t) decode_flags(p,Flags(t),Typeof(t))
#endif