pennmush/game/
pennmush/game/data/
pennmush/game/log/
pennmush/game/save/
pennmush/game/txt/evt/
pennmush/game/txt/nws/
pennmush/os2/
/* match.h */

#ifndef __MATCH_H
#define __MATCH_H

#include "copyrite.h"
#include "mushdb.h"

/* match constants */
  /* match modifiers */
#define MAT_CHECK_KEYS   0x000001
#define MAT_GLOBAL       0x000002
#define MAT_REMOTES	 0x000004
#define MAT_CONTROL      0x000008
  /* individual things to match */
#define MAT_ME           0x000010
#define MAT_HERE         0x000020
#define MAT_ABSOLUTE     0x000040
#define MAT_PLAYER       0x000080
#define MAT_NEIGHBOR     0x000100
#define MAT_POSSESSION   0x000200
#define MAT_EXIT         0x004000
  /* special things to match */
#define MAT_CARRIED_EXIT     0x010000
#define MAT_CONTAINER        0x020000
#define MAT_REMOTE_CONTENTS  0x040000
#define MAT_NEAR             0x080000
  /* types of match results - used internally */
#define MAT_NOISY                0x100000
#define MAT_LAST                 0x200000
  /* groups of things to match */
#define MAT_EVERYTHING   (MAT_ME|MAT_HERE|MAT_ABSOLUTE|MAT_PLAYER| \
                          MAT_NEIGHBOR|MAT_POSSESSION|MAT_EXIT)
#define MAT_NEARBY       (MAT_EVERYTHING|MAT_NEAR)
#define MAT_OBJECTS      (MAT_ME|MAT_ABSOLUTE|MAT_PLAYER|MAT_NEIGHBOR| \
                          MAT_POSSESSION)
#define MAT_NEAR_THINGS  (MAT_OBJECTS|MAT_NEAR)
#define MAT_LIMITED      (MAT_ABSOLUTE|MAT_PLAYER|MAT_NEIGHBOR)
#define MAT_REMOTE       (MAT_ABSOLUTE|MAT_PLAYER|MAT_REMOTE_CONTENTS|MAT_EXIT)


/* Functions we can call */
/* These functions do the matching and return the result:
 * match_result - returns match, NOTHING, or AMBIGUOUS
 * noisy_match_result - notifies player, returns match or NOTHING
 * last_match_result - returns a match or NOTHING
 * match_controlled - returns match if player controls, or NOTHING
 */
extern dbref match_result _((const dbref who, const char *name, const int type, const long int flags));
extern dbref noisy_match_result _((const dbref who, const char *name, const int type, const long int flags));
extern dbref last_match_result _((const dbref who, const char *name, const int type, const long int flags));
extern dbref match_controlled _((dbref player, const char *name));

#define match_thing(player,name) \
  noisy_match_result((player), (name), NOTYPE, MAT_EVERYTHING)

#endif				/* __MATCH_H */