/* Crimson2 Mud Server
* All source written/copyright Ryan Haksi 1995 *
* This source code is proprietary, if you are using it without my express
* permission you are violating the copyright act and can potentially be
* sued.
* That said, if you would like to use it, I'm not an ogre, gimme a call
* and maybe we can work something out.
*
* Current email addresses: cryogen@unix.infoserve.net
rhaksi@freenet.vancouver.bc.ca
* Phone number: (604) 591-9746
*/
#define EDIR_MIN -1
#define EDIR_NORTH 0
#define EDIR_EAST 1
#define EDIR_SOUTH 2
#define EDIR_WEST 3
#define EDIR_UP 4
#define EDIR_DOWN 5
#define EDIR_OUT 6
#define EDIR_UNDEFINED 7
#define EDIR_MAX 8
#define EF_ISDOOR 1<<0
#define EF_PICKPROOF 1<<1
#define EF_LOCKED 1<<2
#define EF_CLOSED 1<<3
#define EF_HIDDEN 1<<4
#define EF_ELECTRONIC 1<<5 /* hacking skill not picklock */
#define EF_NOPHASE 1<<6 /* cant phase through */
extern LWORD exitNum;
extern BYTE *dirList[];
extern LWORD eOrderList[];
extern BYTE *eFlagList[];
struct ExitType {
STR *eKey;
STR *eDesc;
LWORD eKeyObj;
FLAG eFlag;
THING *eWorld;
BYTE eDir;
EXIT *eNext;
};
extern EXIT *ExitAlloc(EXIT *eNext, BYTE eDir, STR *eKey, STR *eDesc, FLAG eFlag, WORD eKeyObj, THING *eWorld);
extern EXIT *ExitCreate(EXIT *eNext, BYTE eDir, BYTE *eKey, BYTE *eDesc, FLAG eFlag, WORD eKeyObj, THING *eWorld);
extern EXIT *ExitFind(EXIT *eList, BYTE *eKey);
extern EXIT *ExitDir(EXIT *eList, BYTE eDir);
extern EXIT *ExitReverse(THING *world, EXIT *exit);
extern LWORD ExitIsCorner(EXIT *exit, EXIT *reverse);
extern EXIT *ExitFree(EXIT *eList, EXIT *exit);
extern BYTE *ExitGetName(EXIT *exit, BYTE *buf);
#define EXITFREE(eList, exit) eList=ExitFree(eList, exit);
#define Exit(x) ((EXIT*)(x))