nightmare4_fluffos_v1/
nightmare4_fluffos_v1/bin/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/ChangeLog.old/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/Win32/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/compat/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/compat/simuls/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/include/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/clone/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/command/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/data/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/etc/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/include/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/inherit/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/inherit/master/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/log/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/tests/compiler/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/tests/efuns/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/tests/operators/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/u/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/tmp/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/windows/
nightmare4_fluffos_v1/lib/cfg/
nightmare4_fluffos_v1/lib/cmds/admins/
nightmare4_fluffos_v1/lib/cmds/common/
nightmare4_fluffos_v1/lib/cmds/creators/include/
nightmare4_fluffos_v1/lib/cmds/creators/include/SCCS/
nightmare4_fluffos_v1/lib/cmds/hm/
nightmare4_fluffos_v1/lib/daemon/services/
nightmare4_fluffos_v1/lib/doc/
nightmare4_fluffos_v1/lib/doc/faq/
nightmare4_fluffos_v1/lib/doc/help/classes/
nightmare4_fluffos_v1/lib/doc/help/creators/
nightmare4_fluffos_v1/lib/doc/help/hm/
nightmare4_fluffos_v1/lib/doc/help/players/
nightmare4_fluffos_v1/lib/doc/help/races/
nightmare4_fluffos_v1/lib/doc/help/religion/
nightmare4_fluffos_v1/lib/doc/mudlib/
nightmare4_fluffos_v1/lib/doc/mudlib/cfg/
nightmare4_fluffos_v1/lib/domains/Ylsrim/
nightmare4_fluffos_v1/lib/domains/Ylsrim/adm/
nightmare4_fluffos_v1/lib/domains/Ylsrim/armour/
nightmare4_fluffos_v1/lib/domains/Ylsrim/fish/
nightmare4_fluffos_v1/lib/domains/Ylsrim/meal/
nightmare4_fluffos_v1/lib/domains/Ylsrim/npc/
nightmare4_fluffos_v1/lib/domains/Ylsrim/virtual/
nightmare4_fluffos_v1/lib/domains/Ylsrim/weapon/
nightmare4_fluffos_v1/lib/domains/Ylsrim/xtra/
nightmare4_fluffos_v1/lib/lib/comp/
nightmare4_fluffos_v1/lib/lib/lvs/
nightmare4_fluffos_v1/lib/lib/std/
nightmare4_fluffos_v1/lib/lib/user/
nightmare4_fluffos_v1/lib/news/
nightmare4_fluffos_v1/lib/obj/
nightmare4_fluffos_v1/lib/obj/include/
nightmare4_fluffos_v1/lib/save/
nightmare4_fluffos_v1/lib/save/kills/a/
nightmare4_fluffos_v1/lib/save/kills/b/
nightmare4_fluffos_v1/lib/save/kills/f/
nightmare4_fluffos_v1/lib/save/kills/m/
nightmare4_fluffos_v1/lib/save/kills/q/
nightmare4_fluffos_v1/lib/save/kills/r/
nightmare4_fluffos_v1/lib/secure/cfg/
nightmare4_fluffos_v1/lib/secure/cfg/classes/
nightmare4_fluffos_v1/lib/secure/cfg/races/SCCS/
nightmare4_fluffos_v1/lib/secure/cmds/creators/include/
nightmare4_fluffos_v1/lib/secure/cmds/players/
nightmare4_fluffos_v1/lib/secure/cmds/players/include/
nightmare4_fluffos_v1/lib/secure/daemon/include/
nightmare4_fluffos_v1/lib/secure/lib/
nightmare4_fluffos_v1/lib/secure/lib/include/
nightmare4_fluffos_v1/lib/secure/lib/net/
nightmare4_fluffos_v1/lib/secure/lib/std/
nightmare4_fluffos_v1/lib/secure/obj/
nightmare4_fluffos_v1/lib/secure/obj/include/
nightmare4_fluffos_v1/lib/secure/save/
nightmare4_fluffos_v1/lib/secure/save/boards/
nightmare4_fluffos_v1/lib/secure/save/votes/
nightmare4_fluffos_v1/lib/spells/
nightmare4_fluffos_v1/lib/verbs/admins/include/
nightmare4_fluffos_v1/lib/verbs/common/
nightmare4_fluffos_v1/lib/verbs/common/include/
nightmare4_fluffos_v1/lib/verbs/creators/
nightmare4_fluffos_v1/lib/verbs/creators/include/
nightmare4_fluffos_v1/lib/verbs/players/include/SCCS/
nightmare4_fluffos_v1/lib/verbs/rooms/
nightmare4_fluffos_v1/lib/verbs/rooms/include/
nightmare4_fluffos_v1/lib/www/
nightmare4_fluffos_v1/old/
nightmare4_fluffos_v1/old/tools/
nightmare4_fluffos_v1/win32/
#!/usr/local/bin/perl
#################################################################
# The Nightmare V LPC Library Server and Library Configuration #
# copyright (c) 1996 George Reese                               #
# This script will automatically configure your server and your #
# LPC library for execution                                     #
# Simply type ./Configure and answer the questions              #
# If at any time you need to execute a command, preceed the     #
# command with a !                                              #
#################################################################

$MAKE = "make";
print "This is the Nightmare V Object Library's Server and Library\n";
print "Configuration Script.  This script will ask you a few questions\n";
print "and then compile your driver, install it, configure your library,\n";
print "and install it.  If at any time you need to execute a UNIX command\n";
print "In order to answer a question, preceed the command by a ! symbol\n";
print "and this program will execute it for you.\n\n";

print "The Nightmare V Object Library is copyright (c)1992-1996 George Reese\n";
print "Use of the library signifies agreement to the terms of the agreement\n";
print "as specified in Agreement.Nightmare.\n";

do {
    print "Do you wish to read this file now? ";
} until ($Answer = &GetAnswer(""));

system("more Agreement.Nightmare") if substr(lc($Answer), 0, 1) eq "y";

print "\n\nThe name MudOS is copyright 1991-1992 by Erik Kay, Adam Beeman,\n";
print "Stephan Iannce and John Garnett.  The MudOS package is copyright\n";
print "1995,1996 Tim Hollebeek.  This copyright is included in Copyright.MudOS.\n";

do {
    print "Do you wish to read this file now? ";
} until ($Answer = &GetAnswer(""));

system("more Copyright.MudOS") if substr(lc($Answer), 0, 1) eq "y";

do {
    print "\nWhat is the name of your MUD?\n[] ";
} until ($MudName = GetAnswer(""));

do {
    print "\nIn which directory should your LPC library be placed?\n";
    print "[$ENV{'HOME'}] ";
} until ($Mudlib = GetAnswer($ENV{'HOME'}));

if( ! -d $Mudlib ) {
    die "Failed to create library dir $Mudlib ...\n" 
	unless mkdir($Mudlib, 0770);
}

do {
    print "\nIn which directory should the MudOS executables be placed?\n";
    print "[$ENV{'HOME'}/bin] "
} until ($Bindir = GetAnswer($ENV{'HOME'}."/bin"));

if( ! -d $Bindir ) {
    die "Failed to create bin directory $Bindir ...\n" 
	unless mkdir($Bindir, 0770);
}

print "\n\nGenerating Makefile...\n";

chdir("server") || die "Could not change dir.\n";

system("build.MudOS develop");

print "\n\nBuilding the MudOS driver, this will take a very long time.\n";
print "Do not panic if it takes especially long for interpret.c and\n";
print "object.c\n\nBuidling MudOS...\n\n";

die "Make clean failed, aborting...\n" if system("$MAKE clean");
die "Make failed, aborting Configure script...\n" if system("$MAKE");

print "\n\nInstalling the driver...\n";

die "Failed to install driver binaries, aborting...\n" 
    if system("cp driver addr_server $Bindir");

die "Failed to copy mudlib tar file, aborting...\n" 
    if system("cp ../lib.tar $Mudlib");

chdir("$Mudlib") || die "Could not change dir.\n";

die "Could not untar lib.tar, aborting...\n"
    if system("tar -xf lib.tar");

print "\n\nCreating MudOS runtime config file...\n";

open(CFG, ">$Bindir/mudos.cfg");

print CFG <<"EOM";
###############################################################################
#              Customizable runtime config file for MudOS v21                 #
###############################################################################
# NOTE: All paths specified here are relative to the mudlib directory except  #
#       for mudlib directory, and binary directory.                           #
# Lines beginning with a # or a newline are ignored.                          #
###############################################################################

# name of this mud
EOM

print CFG "name : $MudName\n\n";

print CFG <<"EOM";
# the address server is an external program that lets the mud translate
# internet names to numbers (and vice versa).  select an unused port.
address server ip : localhost
address server port : 9999

# absolute pathname of mudlib
EOM

    print CFG "mudlib directory : $Mudlib/lib\n\n";
print CFG "# absolute pathname of driver/config dir\n";
print CFG "binary directory : $Bindir\n\n";

print CFG <<"EOM";
# debug.log and author/domain stats are stored here
log directory : /log

# the directories which are searched by #include <...>
# for multiple dirs, separate each path with a ':'
include directories : /secure/include:/include

# Directory to save binaries in.  (if BINARIES is defined)
save binaries directory : /secure/save/bin

# the file which defines the master object
master file : /secure/daemon/master

# the file where all global simulated efuns are defined.
simulated efun file : /secure/sefun/sefun

# file to swap out objects; not used if time to swap is 0
swap file : /secure/tmp/swap

# alternate debug.log file name (assumed to be in specified 'log directory')
debug log file : runtime

# This is an include file which is automatically #include'd in all objects
global include file : <global.h>

# if an object is left alone for a certain time, then the
# function clean_up will be called. This function can do anything,
# like destructing the object. If the function isn't defined by the
# object, then nothing will happen.
# This time should be substantially longer than the swapping time.
time to clean up : 1200

# How long time until an unused object is swapped out.
# Machine with too many players and too little memory: 900 (15 minutes)
# Machine with few players and lot of memory: 10000
# Machine with infinite memory: 0 (never swap).
time to swap : 600

# How many seconds until an object is reset again.
time to reset : 1800

# Maximum number of bits in a bit field. They are stored in printable
# strings, 6 bits per byte.
maximum bits in a bitfield : 1200

# Max number of local variables in a function.
maximum local variables : 30

# Maximum amount of "eval cost" per thread - execution is halted when 
# it is exceeded.
maximum evaluation cost : 500000

# This is the maximum array size allowed for one single array.
maximum array size : 15000

# This is the maximum allowed size of a variable of type 'buffer'.
maximum buffer size : 400000

# Max size for a mapping
maximum mapping size : 15000

# Max inherit chain size
inherit chain size : 30

# maximum length of a string variable
maximum string length : 200000

# Max size of a file allowed to be read by 'read_file()'.
maximum read file size : 200000

# max number of bytes you allow to be read and written with read_bytes 
# and write_bytes
maximum byte transfer : 10000

# Reserve an extra memory area from malloc(), to free when we run out
# of memory and allow the mudlib to shutdown.
# If this value is 0, no area will be reserved.
reserved size : 0

# Define the size of the shared string hash table.  This number should
# a prime, probably between 1000 and 30000; if you set it to about 1/5
# of the number of distinct strings you have, you will get a hit ratio
# (number of comparisons to find a string) very close to 1, as found strings
# are automatically moved to the head of a hash chain.  You will never
# need more, and you will still get good results with a smaller table.
hash table size : 7001

# Object hash table size.
# Define this like you did with the strings; probably set to about 1/4 of
# the number of objects in a game, as the distribution of accesses to
# objects is somewhat more uniform than that of strings.
object table size : 1501

# default no-matching-action message
default fail message : What?

# default message when error() occurs (optional)
default error message :

# the external ports we support
external_port_1 : telnet 4000

###############################################################################
#          The following aren't currently used or implemented (yet)           #
###############################################################################

# maximum number of users in the game (unused currently)
maximum users : 40

# Define the maximum stack size of the stack machine. This stack will also
# contain all local variables and arguments.  (unused currently)
evaluator stack size : 1000

# Define the size of the compiler stack. This defines how complex
# expressions the compiler can parse.  (unused currently)
compiler stack size : 200

# Define the maximum call depth for functions. (unused currently)
maximum call depth : 30

# There is a hash table for living objects, used by find_living().
# (unused currently)
living hash table size : 100
EOM
close(CFG);

print "\n\nCreating driver wrapper script...\n";

open(WRAPPER, ">$Bindir/startmudos");
print WRAPPER "#!/bin/csh\n\n";
print WRAPPER "while(1)\n\t$Bindir/driver mudos.cfg\nend\n";
close(WRAPPER);

system("chmod 770 $Bindir/startmudos");

print "Configuration complete.\n\n";
print "Issue the following commands:\n";
print "\t$Bindir/startmudos &\n";
print "\ttelnet localhost 4000\n";

sub GetAnswer {
    local($def) = @_[0];
    local($ans) = "";
    $ans = <>;
    chop($ans);
    if( length($ans) == 0 ) { return $def; }
    if( substr($ans, 0, 1) eq "!" ) { 
	system(substr($ans, 1, length($ans) - 1)); 
    }
    else { return $ans; }
    return "";
}