/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWiz (C) 1998 by Russ Pillsbury (Windows NT version) | (0...0) * * -----------------------------------------------------------| ).:.( * * SMAUG (C) 1994, 1995, 1996 by Derek Snider | {o o} * * -----------------------------------------------------------| / ' ' \ * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, |~'~.VxvxV.~'~* * Scryn, Swordbearer, Rennard, Tricops, and Gorog. | * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik Staerfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * Smaug Exits Interface file * ***************************************************************************/ #ifndef EXITS_H #define EXITS_H // Exit flags. // Used in #ROOMS. enum ExitTypes { EX_ISDOOR, EX_CLOSED, EX_LOCKED, EX_SECRET, EX_SWIM, EX_PICKPROOF, EX_FLY, EX_CLIMB, EX_DIG, EX_RES1, EX_NOPASSDOOR, EX_HIDDEN, EX_PASSAGE, EX_PORTAL, EX_RES2, EX_RES3, EX_xCLIMB, EX_xENTER, EX_xLEAVE, EX_xAUTO, EX_RES4, EX_xSEARCHABLE, EX_BASHED, EX_BASHPROOF, EX_NOMOB, EX_WINDOW, EX_xLOOK, EX_DISABLE, EX_MAX }; #ifdef SMAUGSERVER_CPP const char* ExitTypeNames [EX_MAX] = { "isdoor", "closed", "locked", "secret", "swim", "pickproof", "fly", "climb", "dig", "r1", "nopassdoor", "hidden", "passage", "portal", "r2", "r3", "can_climb", "can_enter", "can_leave", "auto", "r4", "searchable", "bashed", "bashproof", "nomob", "window", "can_look" "disabled" }; #endif extern const char* ExitTypeNames [EX_MAX]; // Exit data. class CExitData { public: CExitData () { ZeroMemory (this, sizeof (CExitData)); } CExitData *GetNext () { return m_pNext; } void SetNext (CExitData* n) { m_pNext = n; } CExitData *GetPrev () { return m_pPrev; } void SetPrev (CExitData* n) { m_pPrev = n; } CIntVector *GetFlags () { return &m_Flags; } void SetFlags (int v) { m_Flags = v; } BOOL IsSet (int b) { return m_Flags.IsSet (b); } void SetBit (int b) { m_Flags.SetBit (b); } void ClrBit (int b) { m_Flags.ClrBit (b); } void Toggle (int b) { m_Flags.ToggleBit (b); } CString PrintFlagVector () { return m_Flags.PrintVector (); } BOOL IsDisabled () { return m_Flags.IsSet (EX_DISABLE); } void SetDisabled () { m_Flags.SetBit (EX_DISABLE); } void ClrDisabled () { m_Flags.ClrBit (EX_DISABLE); } BOOL IsClosed () { return m_Flags.IsSet (EX_CLOSED); } void SetClosed () { m_Flags.SetBit (EX_CLOSED); } void ClrClosed () { m_Flags.ClrBit (EX_CLOSED); } BOOL IsWindow () { return m_Flags.IsSet (EX_WINDOW); } void SetWindow () { m_Flags.SetBit (EX_WINDOW); } BOOL IsDoor () { return m_Flags.IsSet (EX_ISDOOR); } void SetDoor () { m_Flags.SetBit (EX_ISDOOR); } BOOL IsPortal () { return m_Flags.IsSet (EX_PORTAL); } void SetPortal () { m_Flags.SetBit (EX_PORTAL); } BOOL IsNoMob () { return m_Flags.IsSet (EX_NOMOB); } void SetNoMob () { m_Flags.SetBit (EX_NOMOB); } BOOL IsNoPass () { return m_Flags.IsSet (EX_NOPASSDOOR); } void SetNoPass () { m_Flags.SetBit (EX_NOPASSDOOR); } BOOL IsSecret () { return m_Flags.IsSet (EX_SECRET); } void SetSecret () { m_Flags.SetBit (EX_SECRET); } void ClrSecret () { m_Flags.ClrBit (EX_SECRET); } BOOL IsDig () { return m_Flags.IsSet (EX_DIG); } void SetDig () { m_Flags.SetBit (EX_DIG); } BOOL IsFly () { return m_Flags.IsSet (EX_FLY); } void SetFly () { m_Flags.SetBit (EX_FLY); } BOOL IsClimb () { return m_Flags.IsSet (EX_CLIMB); } void SetClimb () { m_Flags.SetBit (EX_CLIMB); } BOOL IsLocked () { return m_Flags.IsSet (EX_LOCKED); } void SetLocked () { m_Flags.SetBit (EX_LOCKED); } void ClrLocked () { m_Flags.ClrBit (EX_LOCKED); } BOOL IsBashProof () { return m_Flags.IsSet (EX_BASHPROOF); } void SetBashProof () { m_Flags.SetBit (EX_BASHPROOF); } BOOL IsBashed () { return m_Flags.IsSet (EX_BASHED); } void SetBashed () { m_Flags.SetBit (EX_BASHED); } void ClrBashed () { m_Flags.ClrBit (EX_BASHED); } BOOL IsHidden () { return m_Flags.IsSet (EX_HIDDEN); } void SetHidden () { m_Flags.SetBit (EX_HIDDEN); } BOOL IsPickProof () { return m_Flags.IsSet (EX_PICKPROOF); } void SetPickProof () { m_Flags.SetBit (EX_PICKPROOF); } BOOL IsPassage () { return m_Flags.IsSet (EX_PASSAGE); } void SetPassage () { m_Flags.SetBit (EX_PASSAGE); } BOOL CanClimb () { return m_Flags.IsSet (EX_xCLIMB); } void SetCanClimb () { m_Flags.SetBit (EX_xCLIMB); } BOOL CanEnter () { return m_Flags.IsSet (EX_xENTER); } void SetCanEnter () { m_Flags.SetBit (EX_xENTER); } BOOL CanLeave () { return m_Flags.IsSet (EX_xLEAVE); } void SetCanLeave () { m_Flags.SetBit (EX_xLEAVE); } BOOL CanLook () { return m_Flags.IsSet (EX_xLOOK); } void SetCanLook () { m_Flags.SetBit (EX_xLOOK); } BOOL CanAuto () { return m_Flags.IsSet (EX_xAUTO); } void SetCanAuto () { m_Flags.SetBit (EX_xAUTO); } BOOL CanSearch () { return m_Flags.IsSet (EX_xSEARCHABLE); } void SetCanSearch () { m_Flags.SetBit (EX_xSEARCHABLE); } CRoomIndexData *GetToRoom () { return m_pToRoom; } void SetToRoom (CRoomIndexData* r) { m_pToRoom = r; } private: CExitData *m_pNext; // previous exit in linked list CExitData *m_pPrev; // next exit in linked list CIntVector m_Flags; // door states & other flags CRoomIndexData *m_pToRoom; // Pointer to destination room public: CExitData *rexit; // Reverse exit pointer char *keyword; // Keywords for exit or door char *description; // Description of exit int vnum; // Vnum of room exit leads to int rvnum; // Vnum of room in opposite dir int key; // Key vnum short vdir; // Physical "direction" short distance; // how far to the next room short pull; // pull of direction (current) short pulltype; // type of pull (current, wind) }; #endif