This file details the effects of configuration parameters in /secure/include/config.h

#ifndef s_config_h
#define s_config_h
    This means, "If the s_config_h parameter is not defined, define it now
and also define the stuff in this file."


#define DEFAULT_PROMPT           "> "
    Self-explanatory. Can be overridden per player with the "prompt" command.


#define HOST_IP                  "127.0.0.1"
    Sometimes your mud's actual IP will be a fake internal address,
like 10.0.1.1. But this may be confusing under some circumstances,
and especially in the case of the hftp server, an address like this
will interfere with proper operation.
    Normally the right and safe thing to do is leave this parameter
alone. A host IP definition of 127.0.0.1 lets the mud know it needs to
figure out its IP address the normal way. If you are running hftp, or
have some unusual situation where your actual IP address is not reachable
but some other one is, then this is where you'd put that external-facing
IP address.
    General advice: leave this alone.
    

#define MUD_STATUS               "mudlib development"
    Self explanatory.


#define ADMIN_EMAIL              "cratylus@comcast.net"
    Self explanatory. Note that it is very important to have a valid
email defined here. Otherwise if the I3 router moves, or your mud
malfunctions and needs to be blacklisted, there is no way to contact
you to straighten things out.


#define DEBUGGER                 "cratylus"
    The tc() sefun is a special kind of debugger for admin use. It
will send its messages to the one person specified here.


#define LOCAL_NEWS_PREFIX        "nm"
    Deprecated. Once used for an intermud news system that is
not currently supported.


#define MUD_IS_LOCKED            0
    If this is a nonzero integer, only people in the allowed groups
are permitted to log in. By default, these groups are: SECURE, ASSIST,
ELDER, TEST.


#define AUTO_WIZ                 0
    If this is a 1, new users are given the option to
join your mud as either players or creators, as they choose. If
it is anything other than 0 or 1, new users are automatically
made creators, without being given the option to be players.


#define RESTRICTED_INTERMUD      0
    If this is a nonzero integer, users must be added to the INTERMUD
group by an admin if you want them to be able to use intermud channels.
This can be done conveniently with the "groupmod" command.


#define DISABLE_INTERMUD         0
    If this is a nonzero integer, no intermud functions will work. Your
intermud daemon will refuse to load, and you will therefore not be
connected to the intermud network. Note that disabling intermud here
disables both Intermud-3 and IMC2.


#define DISABLE_IMC2             0
    IMC2 is an intermud protocol, like i3. Its packet syntax is
different enough that it needs its own handler and subsystem. To use
it, leave it enabled here and avail yourself of the imc2 command.    


#define MINUTES_REBOOT_WARNING   20
    Self explanatory.


#define TIME_TO_RESET            3600
    The interval between calls to eventReset() in
the master daemon. 20000 means that every 5 hours, the master
daemon will call evetReset() in itself. This function will randomly
pick 25% of all loaded objects, and call reset() and clean_up() on them.


#define RESET_ALL                0
    If this is a nonzero integer, eventReset() in MASTER_D will
eventReset() 100% of all loaded objects, not 25%. Not recommended
for large muds, as this can cause noticeable lag if there are
many loaded objects.


#define GMT_OFFSET               -32000
    A way to tinker with time settings, if you live in a strange
place. Recommendation: leave this alone.


#define LOCAL_TIME               1
    If this is a non-zero integer, the mud will simply believe
whatever time the system thinks it is. Most OS'es can be trusted to
return the time you want, but if your server is in another time zone,
or your OS returns a GMT (aka UTC) offset rather than local time,
then you may need to set this to 0 and tinker with GMT_OFFSET and
EXTRA_TIME_OFFSET.


#define EXTRA_TIME_OFFSET        0
    Another tool for tuning your local time. Set in hours, not seconds.
Play with offset settings at your own risk. The correct time of day on your
own system is your own responsibility.


#define MAX_LOG_SIZE             150000
    The log rotation daemon uses this parameter as its trigger for
backing up logs. When log rotation check happens, approximately every
two hours (this is set in the events daemon, see the "events" command)
any log file the daemon is set to scan that is larger than this size
is renamed to something unique and archived.


#define MAX_NET_DEAD_TIME        1800
    The maximum number of seconds allowed for a player to be "disconnected
but not having quit". Players whose link dies are normally moved to ROOM_FREEZER
where they stay until their link is re-established. If it doesn't happen in
the specified number of seconds, their player object if force-quit.


#define MIN_HISTORY_SIZE         20
#define MAX_HISTORY_SIZE         30
    The number of lines stored in a player's command history buffer.


#define LOGON_TIMEOUT            360
    If a user does not complete their login within this number of seconds,
their connection is dropped.


#define IDLE_TIMEOUT             3600
    If a player is idle for this number of seconds, they are force-quit.


#define LINK_WAIT_PERIOD         1800
    Unsupported. This is part of a multi-character play control system that
may or may not work in Dead Souls 2.


#define MAX_PASSWORD_TRIES       3
#define MIN_USER_NAME_LENGTH     2
#define MAX_USER_NAME_LENGTH     15
#define MAX_USER_CAP_NAME_LENGTH 20
    Self explanatory. The "cap name" indicates the special name that a player may
have which includes special characters. This name is spacified on character
creation.


#define LOCKED_ACCESS_ALLOWED    ({ "SECURE", "ASSIST", "ELDER", "TEST" })
    Members of these user groups are allowed to log in when the mud is locked.


#define SUPPORTED_CLIENTS       ({ "amcp", "amcp/1.1" })
    UNSUPPORTED. This is a remote administration protocol that has not been made
to work on Dead Souls 2.


#define HOUR_LENGTH              1200
#define DAY_LENGTH               20
    Mud-time definitions. Dead Souls hours and days are shorter than "real world"
hours and days. Here is where that is specified.


#define MAX_NEWBIE_LEVEL         3
    Players below this level get special treatment. They gain access to
special newbie areas, can see in the dark, and understand all languages.


#define AUTOSAVE_TIME            450
    Interval between automatic saves in users.


#define MORTAL_POSITIONS         ({ "player", "high mortal", "ambassador" })
    Unsupported. Part of a roles system that does not apply to Dead Souls 2
by default.


#define DEFAULT_GRAVITY          1.0
    Affects the amount of stuff players can carry.


#define DEFAULT_ITEM_MESSAGE     "You do not see that here."
    Self explanatory.


#define RESET_INTERMUD           0
    If this is a nonzer integer, your intermud data cache will be wiped on reboot.
 

#define ENGLISH_ONLY             0
    Forces the use of English only for users.


#define HUMANS_ONLY              0
    Prevents new users from picking a race other than human.


#define PINGING_MUDS             ({})
    Defines the muds used by the ping daemon for its periodic i3
connection status check. If empty, you only ping yourself. It is
recommended to leave it empty.


#define PING_INTERVAL            290
    The number of seconds between automated i3 pings. 


#define ENABLE_ENCUMBRANCE       0
    If this is a nonzero integer, players will find it near-impossible
to engage in successful combat if they're carring stuff. Anything that is
not worn or wielded creates a major obstacle to fighting.


#define GLOBAL_MONITOR           0
    If this is set to 1, all users are automatically snooped when they
connect and their sessions are logged in /secure/adm.
    If this is set to 2, only non-admin users are logged this way.


#define PLAYER_KILL              0
    This must be set to a nonzero integer if playerkilling zones are
to work in the mud.


#define NPC_CATCH_TELL_DEBUG     0
    If a nonzero integer, then anything seen or heard by any NPC is
echoed to /domains/default/room/catchtell, along with some debugging
info. Recommendation: do not use this. It is noisier than you expect,
will tend to lag a busy mud, and is really for debugging purposes only.


#define SAME_IP_MAX              4
    The maximum number of connections permitted from an IP. IP's
from which an admin has previously logged in are excluded from this,
and IP's to be excluded from this can be specified in /secure/cfg/ip_unrestrict.cfg
(by adding the ip's on their own lines).


#define COMPAT_MODE              1
    This enables the lib to use defines that translate old code from
TMI-2 and Nightmare 3 (among others) into usable DS2 code on the fly. 
See /secure/include/compat.h and /secure/sefun/legacy.c


#define RETAIN_ON_QUIT           1
    If this is a nonzero integer, when a character quits, her inventory is
saved, and it is restored to her when she logs back in. If this is zero,
then when a character quits, her inventory is moved to her environment, and
it is not restored to her when she logs back in.
    Unique items are moved to the quitter's environment regardless of
what this is set to.


#define MAX_COMMANDS_PER_SECOND  10
    Defines for non-admins the maximum number of commands allowed per second.
This avoids both player scripting foolishness, and certain errors
that can occur when "command stacking" hundreds of commands per second that can 
ruin things for everyone.


#define DEFAULT_PARSING          1
    If this is a nonzero integer, lib-based extension to the driver parser
will attempt re-parse ambiguous commands, making things like "drop book"
parse like "drop a book" if you have more than one. This adds some overhead
to each ambiguous command that needs to be reparsed, so disable it if you
are having performance problems.


#define CALL_OUT_LOGGING         0
    This will log the use of the call_out() efun by objects outside the
/daemon and /secure filesystems. Recommendation: do not use this. While it
has been fixed so it does not break things, this is strictly a debugging
tool to ferret out errors, not a "normal use" logger.


#define EVENTS_LOGGING           1
    A nonzero integer here will enable the logging of events initiated by the
events daemon.


#define DISABLE_REBOOTS          0
    A nonzero integer here will cause your mud's periodic reboots not to
occur.


#define BARE_EXITS               1
    A nonzero integer here allows the use of exits such that typing
"house" is possible, rather than "go house" or "enter house". This adds
some overhead to every command, so disable it if you are having performance
problems.


#define COMMAND_MATCHING         1
    A nonzero integer here allows the use of "shortest unique command matching".
This means you might, for example, be able to "gi book to knight" rather than
"give book to knight". This adds some overhead to every command, so disable it if
you are having performance problems.


#define OBJECT_MATCHING          1
    A nonzero integer here allows the use of "shortest unique object matching".
This means you might, for example, be able to "give bo to kni" rather than
"give book to knight". This adds some overhead to every command, so disable it if
you are having performance problems.


#define LIVEUPGRADE_SERVER       "Dead Souls"
    Deprecated. Specifies the mud to use for OOB liveupgrades. OOB liveupgrades
are no longer supported and have been replaced by the faster and more secure
web based liveupgrade system.


#define CARRIAGE_RETURN          "\r"
    In some cases, this pesky little character has to be wiped from files without
wiping the thing that specifies what character to wipe. This define helps avoid
problems when a file has to clean itself of this character. Don't change this.


#define OLD_STYLE_PLURALS        1
    A nonzero integer here allows you to use stuff like "book 2" or "2.book"
rather than "second book" in a command. This adds some overhead to every command,
so disable it if you are having performance problems.


#define NM_STYLE_EXITS           0
    A nonzero integer here enables the old "obvious exits" behavior, which was to
display them over the long desc in the form: [n, s, enter lodge]
    Otherwise, they display below the long desc, in the form:
Obvious exits: north, south, enter lodge


#define WEB_SOURCE_IP               "204.209.44.12"
    Specifies the ip to use during liveupgrades. 


#define WEB_SOURCE_NAME          "lpmuds.net"
    Specifies the website used for liveupgrades. This is often
necessary if the target webserver uses virtual hosts.


#define DESTRUCT_LOGGING         0
    If set to a nonzero integer, this enables the logging of
the destruct() efun being called on objects. You are strongly
advised not to enable this except in the most dire cases of
things breaking.


#define ROUTER_NAME              "Alpha"
#define IRN_PASSWORD             "Alpha"
#define IRN_PASSWORD1            "Bravo"
#define IRN_PASSWORD2            "Charlie"
#define IRN_PASSWORD3            "Delta"
#define ROUTER_TESTING           1
    Definitions specific to running an Intermud-3 router as
a node in an IRN (Inter Router Network). It is a good idea to
leave these settings alone unless you are 100% certain you
need to change them.


#define SEFUN_PLURALIZE          0
    Indicates whether you wish to override the driver's
built-in pluralize() efun with the sefun of the same name.


#define LOG_REMOTE_CHANS         0
    Controls the logging of remote (i.e. intermud) channels. Intermud
channels can be extremely spammy and if you are paying for diskspace
on a commercial host, logging them can lead to running out of room.


#define LOG_LOCAL_CHANS          1
    Controls the logging of channels local to your mud.


#define IMC2_CLIENT_PW           "clientpass"
#define IMC2_SERVER_PW           "serverpass"
    Passwords for the IMC2 connection. These are automatically
changed into random strings when you first install your mud. If
you upgrade your mud, or reinstall, make sure you keep a copy of
the old randomized passwords and put them in the new config.h.


#define ENABLE_CGI               0
    Determines whether the built-in webserver will accept CGI
requests. This is required for CreWeb to work. Note that while
CreWeb attempts to avoid obvious security problems, maintaining
your mud's security is your responsibility.


#define WWW_DIR_LIST             0
    Determines whether directory listings are allowed on the
built-in webserver. This is required for CreWeb to work. See the
above note regarding security.


#define ENABLE_CREWEB            0
    Self explanatory.


#define F_TERMINAL_COLOR         1
    Old workaround to a strange FluffOS issue. May no longer
be needed, but I can't be bothered to check.


#define MAX_CALL_OUTS            750
    The call_out() efun is a way to schedule events. In MudOS this
efun's abuse could be the cause of grief, as overall mud performance
could be severely impacted. On FluffOS this is less of a concern, but
runaway callouts are still a threat to your mud's availability. The
number defined here is the threshold at which the mud will stop
accepting new callouts from unprivileged objects, such as things
in /realms/. Privileged, lib, and domain objects can still issue
callouts even if this threshold is reached.

    
#define REQUIRE_QUESTING         1
    By default, Dead Souls muds require players not just to have
enough XP to advance, but also to have been awarded quest points as
specified in PLAYERS_D. This define controls whether that
requirement is in force.


#define AUTO_ADVANCE             1
    Older versions of Dead Souls required that you visit a specific
NPC in the Adventurers' Hall and request advancement. If this define
is set to a nonzero integer, players will automatically advance when
they achieve the XP/QP requirement for their next level as specified
in PLAYERS_D, without having to go see Dirk.


#define MAX_INVENTORY_SIZE       2048
    If an object's inventory reaches this number of items, it will
stop accepting additional objects. This is intended to prevent the
accidental clogging of a mud through careless recursive coding.


#define MAX_ATTACKS_PER_HB       40
    If your creators have enabled godmode and have jacked up their
stats and skills to astronomical levels and then try to PK each other,
this define will prevent your mud from locking up as a result of
their foolishness.


#define MEMUSE_SOFT_LIMIT        0
    If the mud's memory use hits this limit, it will enter a
more aggressive posture regarding resets, garbage, and environmentless
objects. Non-privileged objects will be restricted from cloning
new objects until memory use is again below this limit.
IMPORTANT NOTE: The mud's memory use is NOT the same thing as
the memory allocated by the operating system. The actual amount
of memory in use is usually much much lower than the memory
allocation indicated in programs such as top. If you're going to
experiment with this, start with a low number, such as 10000000
(10 million bytes, aka 10 megs). 0 here disables the limit.


#define MEMUSE_HARD_LIMIT        0
    If the mud's memory use hits this limit, it will try to
throw as much junk overboard as possible. If the memory use is
still above this limit after that attempt, the mud will then
schedule a reboot to occur within one minute. 0 here disables 
the limit.


#define MAX_USERS                0
    LIB_CONNECT automatically determines how many players
your mud is theoretically able to handle. Based on this,
it establishes a maximum limit of players logged in simultaneously.
In some cases this estimation is overly generous, and it may
be necessary to limit maximum players to what your server
can actually handle, not what it can theoretically do. The
MAX_USERS define overrides the LIB_CONNECT calculated maximum.
Setting it to 0 allows LIB_CONNECT to figure the max out on its own. 
Note that users in the LOCKED_ACCESS_ALLOWED groups defined
above are allowed to log in despite the player cap.
    To find out the current limit:
eval return LIB_CONNECT->GetMaxPlayers()


#define MIN_PERF                 2000
    Some fancy stuff, like object matching and overhead mapping,
require your mud server to have a minimum performance score for the
feature to work properly. This is where that score is set. The
closer to 0, the faster the computer. 2000 is a rather slow computer.


#define MINIMAP                  1
    Whether players can have the minimap show up as part of their
room description data.


#define WIZMAP                   1
    Whether creators can have the wizmap show up as part of their
room description data.


#define GRID                     1
    Whether the mud grid system is enabled for your mud. This will
be overridden by the "minimum performance" score. If your computer
is too slow, the grid is disabled regardless of what this setting is.


#define ENABLE_INSTANCES         0
    If 1, the mud will assume it is an instance, and will apply
special naming conventions to savefiles. Your "dev instance"
should have this set to 0. Your "player instance" should have this
set to 1. If you don't know what this stuff means, LEAVE IT AT 0.
For more info: help instances


#endif /* s_config_h */
    End configuration.
