/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWizard (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 System Data Interface file * ****************************************************************************/ #ifndef SYSDATA_H #define SYSDATA_H #include "log.h" extern char *const SaveFlagNames []; enum AuthTypes { AU_WAIT, AU_AUTO, AU_IMMEDIATE, AU_DENY }; // Used to keep track of system settings and statistics -Thoric class CSystemData { public: CSystemData () { Clear (); } void Clear () { memset (this, 0, sizeof (CSystemData)); } void Empty (); // Same as Clear but frees strings first void Init (); BOOL Load (); BOOL ReLoad () { m_bLoaded = FALSE; return Load (); } void Read (FILE *fp); void Save (); BOOL IsLoaded () { return m_bLoaded; } void UpdateCounters (int count); BOOL IsSavePasswordOnChange () { return (m_SaveFlags & SV_PASSCHG) != 0; } void SetSavePasswordOnChange (BOOL f) { SetSave (SV_PASSCHG, f); } BOOL IsSaveOnGet () { return (m_SaveFlags & SV_GET) != 0; } void SetSaveOnGet (BOOL f) { SetSave (SV_GET, f); } BOOL IsSaveOnPut () { return (m_SaveFlags & SV_PUT) != 0; } void SetSaveOnPut (BOOL f) { SetSave (SV_PUT, f); } BOOL IsSaveOnDrop () { return (m_SaveFlags & SV_DROP) != 0; } void SetSaveOnDrop (BOOL f) { SetSave (SV_DROP, f); } BOOL IsSaveOnGive () { return (m_SaveFlags & SV_GIVE) != 0; } void SetSaveOnGive (BOOL f) { SetSave (SV_GIVE, f); } BOOL IsSaveOnReceive () { return (m_SaveFlags & SV_RECEIVE) != 0; } void SetSaveOnReceive (BOOL f) { SetSave (SV_RECEIVE, f); } BOOL IsSaveOnAuction () { return (m_SaveFlags & SV_AUCTION) != 0; } void SetSaveOnAuction (BOOL f) { SetSave (SV_AUCTION, f); } BOOL IsSaveOnKill () { return (m_SaveFlags & SV_KILL) != 0; } void SetSaveOnKill (BOOL f) { SetSave (SV_KILL, f); } BOOL IsSaveOnDeath () { return (m_SaveFlags & SV_DEATH) != 0; } void SetSaveOnDeath (BOOL f) { SetSave (SV_DEATH, f); } BOOL IsSaveOnZapDrop () { return (m_SaveFlags & SV_ZAPDROP) != 0; } void SetSaveOnZapDrop (BOOL f) { SetSave (SV_ZAPDROP, f); } BOOL IsSaveOnIdle () { return (m_SaveFlags & SV_IDLE) != 0; } void SetSaveOnIdle (BOOL f) { SetSave (SV_IDLE, f); } BOOL IsBackup () { return (m_SaveFlags & SV_BACKUP) != 0; } void SetBackup (BOOL f) { SetSave (SV_BACKUP, f); } BOOL IsAutoSave () { return (m_SaveFlags & SV_AUTO) != 0; } void SetAutoSave (BOOL f) { SetSave (SV_AUTO, f); } BOOL IsAutoReboot () { return m_bAutoReboot; } void SetAutoReboot (BOOL f) { m_bAutoReboot = f; } int GetRebootDelay () { return m_RebootDelay; } int GetRebootHour () { return m_RebootHour; } void SetRebootHour (int h) { m_RebootHour = h; } int GetRebootInterval () { return m_RebootDays; } void SetRebootInterval (int i) { m_RebootDays = i; } void SetRebootDelay (int d) { m_RebootDelay = d; } BOOL IsAutoStart () { return m_bAutoStart; } void SetAutoStart (BOOL f) { m_bAutoStart = f; } int GetStartDelay () { return m_StartDelay; } void SetStartDelay (int d) { m_StartDelay = d; } void ToggleSave (int bit) { TOGGLE_BIT (m_SaveFlags, bit); } void SetSave (int bit, BOOL f) { if (f) m_SaveFlags |= bit; else m_SaveFlags &= ~bit; } char* GetFlagString () { return flag_string (m_SaveFlags, SaveFlagNames); } int GetSaveFlag (const char *name); int GetPort () { return m_Port; } void SetPort (int p) { m_Port = p; } char* GetLongTitle () { return m_pLongTitle; } void SetLongTitle (const char* t) { m_pLongTitle = str_dup (t); } char* GetShortTitle () { return m_pShortTitle; } void SetShortTitle (const char* t) { m_pShortTitle = str_dup (t); } CString GetShortDesc (); char *GetSupremeEntity () { return m_pSupreme; } void SetSupremeEntity (const char* s) { m_pSupreme = str_dup (s); } BOOL IsLoggingToScreen (LogTypes Type); BOOL IsLogBootToScreen () { return (m_LogFlags & 0x1) != 0; } BOOL IsLogResetsToScreen () { return (m_LogFlags & 0x2) != 0; } BOOL IsLogBuildToScreen () { return (m_LogFlags & 0x4) != 0; } BOOL IsLogBugsToScreen () { return (m_LogFlags & 0x8) != 0; } BOOL IsLogPlayersToScreen () { return (m_LogFlags & 0x10) != 0; } BOOL IsLogCommToScreen () { return (m_LogFlags & 0x20) != 0; } BOOL IsLogBootToFile () { return (m_LogFlags & 0x40) != 0; } BOOL IsLogResetsToFile () { return (m_LogFlags & 0x80) != 0; } BOOL IsLogBuildToFile () { return (m_LogFlags & 0x100) != 0; } BOOL IsLogBugsToFile () { return (m_LogFlags & 0x200) != 0; } BOOL IsLogPlayersToFile () { return (m_LogFlags & 0x400) != 0; } BOOL IsLogCommToFile () { return (m_LogFlags & 0x800) != 0; } BOOL IsLogBuildToChannel () { return (m_LogFlags & 0x1000) != 0; } BOOL IsLogBugsToChannel () { return (m_LogFlags & 0x2000) != 0; } BOOL IsLogPlayersToChannel () { return (m_LogFlags & 0x4000) != 0; } BOOL IsLogCommToChannel () { return (m_LogFlags & 0x8000) != 0; } BOOL IsCloseStdErr () { return (m_LogFlags & 0x10000) != 0; } int GetMaxStdErrSize () { return m_MaxStdSize; } #define LSET(f,b) if(f) m_LogFlags |= b; else m_LogFlags &= ~b void SetLogBootToScreen (BOOL f) { LSET(f,0x1); } void SetLogResetsToScreen (BOOL f) { LSET(f,0x2); } void SetLogBuildToScreen (BOOL f) { LSET(f,0x4); } void SetLogBugsToScreen (BOOL f) { LSET(f,0x8); } void SetLogPlayersToScreen (BOOL f) { LSET(f,0x10); } void SetLogCommToScreen (BOOL f) { LSET(f,0x20); } void SetLogBootToFile (BOOL f) { LSET(f,0x40); } void SetLogResetsToFile (BOOL f) { LSET(f,0x80); } void SetLogBuildToFile (BOOL f) { LSET(f,0x100); } void SetLogBugsToFile (BOOL f) { LSET(f,0x200); } void SetLogPlayersToFile (BOOL f) { LSET(f,0x400); } void SetLogCommToFile (BOOL f) { LSET(f,0x800); } void SetLogBuildToChannel (BOOL f) { LSET(f,0x1000); } void SetLogBugsToChannel (BOOL f) { LSET(f,0x2000); } void SetLogPlayersToChannel (BOOL f) { LSET(f,0x4000); } void SetLogCommToChannel (BOOL f) { LSET(f,0x8000); } void SetCloseStdErr (BOOL f) { LSET(f,0x10000); } void SetMaxStdErrSize (int s) { m_MaxStdSize = s; } BOOL IsWaitForAuth () { return m_Authorization == AU_WAIT; } BOOL IsAutoAuth () { return m_Authorization == AU_AUTO; } BOOL IsImmediateAuth () { return m_Authorization == AU_IMMEDIATE; } BOOL IsDenyNew () { return m_Authorization == AU_DENY; } void SetWaitForAuth () { m_Authorization = AU_WAIT; } void SetAutoAuth () { m_Authorization = AU_AUTO; } void SetImmediateAuth () { m_Authorization = AU_IMMEDIATE; } void SetDenyNew () { m_Authorization = AU_DENY; } BOOL IsShowLevel () const { return m_bShowLevel; } void SetShowLevel (BOOL f) { m_bShowLevel = f; } BOOL IsLevelMsg () const { return m_bRestoreOnLevel; } void SetLevelMsg (BOOL f) { m_bRestoreOnLevel = f; } void AddSentBytes (ULONG b); ULONG GetSentHourBytes () { return m_SHourBytes; } ULONG GetSentDayKb () { return m_SDayKbytes; } CTime GetByteTime () { return m_ByteTime; } void LogBytes (); int MaxPlayers; // Maximum players this boot int AlltimeMax; // Maximum players ever char *pTimeOfMax; // Time of max ever BOOL bNameResolving; // Hostnames are resolved if TRUE short m_Authorization; // New players authorization method short m_AuthDelay; // New players authorization delay short ReadAllMailLev; // Read all player mail (was 54) short ReadMailFreeLev; // Read mail for free (was 51) short WriteMailFreeLev; // Write mail for free (was 51) short TakeOthersMailLev; // Take others mail (was 54) short MuseLevel; // Level of muse channel short ThinkLevel; // Level of think channel LEVEL_HIGOD short BuildLevel; // Level of build channel LEVEL_BUILD short LogLevel; // Level of log channel LEVEL LOG short ModifyProtoLevel; // Level to modify prototype stuff LEVEL_LESSER short OverridePrivateLev; // override private flag short MsetPlayerLevel; // Level to mset a player short StunPlayerLev; // Stun mod player vs. player short StunRegularLev; // Stun difficult short PlrPlrDamage; // Damage mod player vs. player short PlrMobDamage; // Damage mod player vs. mobile short MobPlrDamage; // Damage mod mobile vs. player short MobMobDamage; // Damage mod mobile vs. mobile short GetObjNoTakeLevel; // Get objects without take flag short ForcePcLevel; // The level at which you can use force on players. char *pGuildOverseer; // NC, Pointer to char containing the name of the char *pGuildAdvisor; // NC, guild overseer and advisor. short SaveFrequency; // How old to autosave someone int m_RoomAuthStart; int m_RoomSchool; int m_RoomHell; int m_RoomTemple; int m_RoomAltar; int m_RoomHallOfFallen; int m_RoomVoid; int m_RoomChat; int m_RoomLimbo; int m_RoomPoly; int m_ObjMace; int m_ObjDagger; int m_ObjSword; int m_ObjVest; int m_ObjShield; int m_ObjBanner; int m_ObjGuide; private: int m_SaveFlags; // Toggles for saving conditions int m_LogFlags; // Bit Flags for Logging int m_Port; // Communications port. BOOL m_bLoaded; BOOL m_bAutoReboot; int m_RebootDelay; int m_RebootHour; int m_RebootDays; BOOL m_bAutoStart; int m_StartDelay; char *m_pLongTitle; char *m_pShortTitle; char *m_pSupreme; int m_MaxStdSize; // in megabytes (1 - 100) ULONG m_SHourBytes; ULONG m_SDayKbytes; BOOL m_bShowLevel; // flag for showing a leveling msg to all players BOOL m_bRestoreOnLevel; // flag to restore players when they level CTime m_ByteTime; }; #ifdef SYSDATA_CPP char *const SaveFlagNames [] = { "death", "kill", "passwd", "drop", "put", "give", "auto", "zap", "auction", "get", "receive", "idle", "backup", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31" }; #endif extern CSystemData SysData; #ifdef SMAUGSERVER_CPP CSystemData SysData; #endif #endif