Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f6c8c764ca | |||
| 94b9b69eec | |||
| f6cbe30c10 | |||
|
|
1127cb5d3e | ||
| 60c28bbfee | |||
|
|
168bdc20b7 | ||
| 1433fb4145 | |||
| b38e0deaf8 | |||
|
|
cd6d42146b | ||
| 1a6953dc9f | |||
| 9b9bb8eab5 | |||
|
|
6fb926bd21 | ||
|
|
237948350d | ||
|
|
7ab0918c9c | ||
| b1844be82d | |||
| 8fd4d5b234 | |||
| 5ac7427a6f | |||
| 37ba5ea608 | |||
|
|
1678f66809 | ||
| e0083e3767 | |||
| 8125d736c9 | |||
| c8e9cd8dc6 | |||
| 44a7ac0308 | |||
|
|
4e1680db1a | ||
|
|
f6339b495e | ||
|
|
3e0c1ccc18 | ||
|
|
b9d84fc325 | ||
|
|
bdaca46e79 | ||
|
|
f1794521cf | ||
|
|
89eb009c4f | ||
|
|
9a0a096f85 | ||
|
|
ba7dc7bf6f | ||
|
|
558e71eed8 | ||
|
|
a4af23538f | ||
|
|
b471ff195e | ||
|
|
392f3d90b8 | ||
|
|
be8de64cf8 |
8
.clang-tidy
Normal file
8
.clang-tidy
Normal file
@@ -0,0 +1,8 @@
|
||||
Checks: >
|
||||
-*,
|
||||
clang-analyzer-*,
|
||||
bugprone-*,
|
||||
performance-*,
|
||||
portability-*
|
||||
#WarningsAsErrors: '*'
|
||||
HeaderFilterRegex: 'src/.*'
|
||||
10
.gitignore
vendored
10
.gitignore
vendored
@@ -11,8 +11,6 @@ src/.accepted
|
||||
src/depend
|
||||
src/util/depend
|
||||
build/*
|
||||
!build/create_solution.bat
|
||||
!build/README.md
|
||||
|
||||
# Do not commit files from players
|
||||
lib/plrfiles/A-E/*
|
||||
@@ -65,12 +63,18 @@ lib/plrobjs/index
|
||||
!lib/plrobjs/U-Z/00
|
||||
!lib/plrobjs/ZZZ/00
|
||||
|
||||
#don't commit logs
|
||||
!log/*
|
||||
!syslog.CRASH
|
||||
|
||||
# also not autogenerated config file
|
||||
/lib/etc/config
|
||||
# or the list of last logins
|
||||
/lib/etc/last
|
||||
# or mail
|
||||
lib/etc/plrmail
|
||||
#or time
|
||||
lib/etc/time
|
||||
|
||||
# test object files, etc
|
||||
src/test/depend
|
||||
@@ -82,7 +86,7 @@ src/test/testfile
|
||||
.vscode
|
||||
.project
|
||||
.settings
|
||||
|
||||
.idea
|
||||
.cproject
|
||||
|
||||
# macOS generated files
|
||||
|
||||
407
CMakeLists.txt
Normal file
407
CMakeLists.txt
Normal file
@@ -0,0 +1,407 @@
|
||||
cmake_minimum_required(VERSION 3.12)
|
||||
project(TbaMUD C)
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
|
||||
# Include checker modules
|
||||
include(CheckFunctionExists)
|
||||
include(CheckIncludeFile)
|
||||
include(CheckTypeSize)
|
||||
include(CheckStructHasMember)
|
||||
include(CheckSymbolExists)
|
||||
include(CheckCSourceCompiles)
|
||||
|
||||
# Output paths
|
||||
set(BIN_OUTPUT_DIR ${CMAKE_SOURCE_DIR}/bin)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIR})
|
||||
|
||||
# Include source and build paths
|
||||
include_directories(src ${CMAKE_BINARY_DIR})
|
||||
|
||||
# ========== Compiler flags ==========
|
||||
if (CMAKE_COMPILER_IS_GNUCC)
|
||||
include(CheckCCompilerFlag)
|
||||
|
||||
check_c_compiler_flag(-Wall SUPPORTS_WALL)
|
||||
check_c_compiler_flag(-Wno-char-subscripts SUPPORTS_WNO_CHAR_SUBSCRIPTS)
|
||||
|
||||
if (SUPPORTS_WALL)
|
||||
set(MYFLAGS "-Wall")
|
||||
if (SUPPORTS_WNO_CHAR_SUBSCRIPTS)
|
||||
set(MYFLAGS "${MYFLAGS} -Wno-char-subscripts")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MYFLAGS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# clang-tidy if available
|
||||
find_program(CLANG_TIDY_EXE NAMES clang-tidy)
|
||||
|
||||
if(CLANG_TIDY_EXE AND STATIC_ANALYSIS)
|
||||
message(STATUS "clang-tidy enabled: ${CLANG_TIDY_EXE}")
|
||||
set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_EXE}")
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
else()
|
||||
message(WARNING "clang-tidy not found. Static analysis disabled.")
|
||||
endif()
|
||||
|
||||
# ========== Header checks ==========
|
||||
check_include_file("fcntl.h" HAVE_FCNTL_H)
|
||||
check_include_file("errno.h" HAVE_ERRNO_H)
|
||||
check_include_file("string.h" HAVE_STRING_H)
|
||||
check_include_file("strings.h" HAVE_STRINGS_H)
|
||||
check_include_file("limits.h" HAVE_LIMITS_H)
|
||||
check_include_file("sys/select.h" HAVE_SYS_SELECT_H)
|
||||
check_include_file("sys/wait.h" HAVE_SYS_WAIT_H)
|
||||
check_include_file("sys/types.h" HAVE_SYS_TYPES_H)
|
||||
check_include_file("unistd.h" HAVE_UNISTD_H)
|
||||
check_include_file("memory.h" HAVE_MEMORY_H)
|
||||
check_include_file("assert.h" HAVE_ASSERT_H)
|
||||
check_include_file("arpa/telnet.h" HAVE_ARPA_TELNET_H)
|
||||
check_include_file("arpa/inet.h" HAVE_ARPA_INET_H)
|
||||
check_include_file("sys/stat.h" HAVE_SYS_STAT_H)
|
||||
check_include_file("sys/socket.h" HAVE_SYS_SOCKET_H)
|
||||
check_include_file("sys/resource.h" HAVE_SYS_RESOURCE_H)
|
||||
check_include_file("netinet/in.h" HAVE_NETINET_IN_H)
|
||||
check_include_file("netdb.h" HAVE_NETDB_H)
|
||||
check_include_file("signal.h" HAVE_SIGNAL_H)
|
||||
check_include_file("sys/uio.h" HAVE_SYS_UIO_H)
|
||||
check_include_file("mcheck.h" HAVE_MCHECK_H)
|
||||
check_include_file("stdlib.h" HAVE_STDLIB_H)
|
||||
check_include_file("stdarg.h" HAVE_STDARG_H)
|
||||
check_include_file("float.h" HAVE_FLOAT_H)
|
||||
|
||||
if (HAVE_STDLIB_H AND HAVE_STDARG_H AND HAVE_STRING_H AND HAVE_FLOAT_H)
|
||||
set(STDC_HEADERS 1)
|
||||
endif()
|
||||
|
||||
# macros
|
||||
macro(check_run_return_value CODE EXPECTED_RESULT VAR_NAME)
|
||||
set(_file "${CMAKE_BINARY_DIR}/check_run_${VAR_NAME}.c")
|
||||
file(WRITE "${_file}" "${CODE}")
|
||||
try_run(_run_result _compile_result
|
||||
${CMAKE_BINARY_DIR} ${_file}
|
||||
)
|
||||
if (_compile_result EQUAL 0 AND _run_result EQUAL ${EXPECTED_RESULT})
|
||||
set(${VAR_NAME} TRUE)
|
||||
else()
|
||||
set(${VAR_NAME} FALSE)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# ========== Function checks ==========
|
||||
foreach(FUNC gettimeofday select snprintf strcasecmp strdup strerror
|
||||
stricmp strlcpy strncasecmp strnicmp strstr vsnprintf vprintf
|
||||
inet_addr inet_aton)
|
||||
string(TOUPPER "${FUNC}" _upper_name)
|
||||
check_function_exists(${FUNC} HAVE_${_upper_name})
|
||||
endforeach()
|
||||
|
||||
if (NOT HAVE_VPRINTF)
|
||||
check_function_exists(_doprnt HAVE_DOPRNT)
|
||||
endif()
|
||||
|
||||
|
||||
# ========== Type checks ==========
|
||||
check_type_size("pid_t" HAVE_PID_T)
|
||||
check_type_size("size_t" HAVE_SIZE_T)
|
||||
check_type_size("ssize_t" HAVE_SSIZE_T)
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
|
||||
check_type_size("socklen_t" HAVE_SOCKLEN_T)
|
||||
unset(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
|
||||
|
||||
if (NOT HAVE_PID_T)
|
||||
set(pid_t int)
|
||||
endif()
|
||||
|
||||
if (NOT HAVE_SIZE_T)
|
||||
set(size_t "unsigned")
|
||||
endif()
|
||||
|
||||
if (NOT HAVE_SSIZE_T)
|
||||
set(ssize_t int)
|
||||
endif()
|
||||
|
||||
if (NOT HAVE_SOCKLEN_T)
|
||||
set(socklen_t int)
|
||||
endif()
|
||||
|
||||
# ========== const ==========
|
||||
check_c_source_compiles("
|
||||
int main() {
|
||||
|
||||
/* Ultrix mips cc rejects this. */
|
||||
typedef int charset[2]; const charset x;
|
||||
/* SunOS 4.1.1 cc rejects this. */
|
||||
char const *const *ccp;
|
||||
char **p;
|
||||
/* NEC SVR4.0.2 mips cc rejects this. */
|
||||
struct point {int x, y;};
|
||||
static struct point const zero = {0,0};
|
||||
/* AIX XL C 1.02.0.0 rejects this.
|
||||
It does not let you subtract one const X* pointer from another in an arm
|
||||
of an if-expression whose if-part is not a constant expression */
|
||||
const char *g = \"string\";
|
||||
ccp = &g + (g ? g-g : 0);
|
||||
/* HPUX 7.0 cc rejects these. */
|
||||
++ccp;
|
||||
p = (char**) ccp;
|
||||
ccp = (char const *const *) p;
|
||||
{ /* SCO 3.2v4 cc rejects this. */
|
||||
char *t;
|
||||
char const *s = 0 ? (char *) 0 : (char const *) 0;
|
||||
|
||||
*t++ = 0;
|
||||
}
|
||||
{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
|
||||
int x[] = {25, 17};
|
||||
const int *foo = &x[0];
|
||||
++foo;
|
||||
}
|
||||
{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
|
||||
typedef const int *iptr;
|
||||
iptr p = 0;
|
||||
++p;
|
||||
}
|
||||
{ /* AIX XL C 1.02.0.0 rejects this saying
|
||||
\"k.c\", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
|
||||
struct s { int j; const int *ap[3]; };
|
||||
struct s *b; b->j = 5;
|
||||
}
|
||||
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
|
||||
const int foo = 10;
|
||||
}
|
||||
|
||||
; return 0; }
|
||||
" HAVE_CONST)
|
||||
|
||||
if (HAVE_CONST)
|
||||
set(CONST_KEYWORD const)
|
||||
else()
|
||||
set(CONST_KEYWORD "")
|
||||
endif()
|
||||
|
||||
# ========== Struct checks ==========
|
||||
if (HAVE_NETINET_IN_H)
|
||||
check_struct_has_member("struct in_addr" s_addr netinet/in.h HAVE_STRUCT_IN_ADDR)
|
||||
endif()
|
||||
|
||||
# ========== crypt()/libcrypt ==========
|
||||
|
||||
find_library(CRYPT_LIBRARY crypt)
|
||||
if (CRYPT_LIBRARY)
|
||||
message(STATUS "Found libcrypt: ${CRYPT_LIBRARY}")
|
||||
list(APPEND EXTRA_LIBS ${CRYPT_LIBRARY})
|
||||
set(_saved_lib_list ${CMAKE_REQUIRED_LIBRARIES})
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${CRYPT_LIBRARY})
|
||||
check_include_file("crypt.h" HAVE_CRYPT_H)
|
||||
check_function_exists(crypt CIRCLE_CRYPT)
|
||||
|
||||
check_run_return_value("
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
${HAVE_CRYPT_H} ? \"#include <crypt.h>\" : \"\"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char pwd[11], pwd2[11];
|
||||
|
||||
strncpy(pwd, (char *)crypt(\"FooBar\", \"BazQux\"), 10);
|
||||
pwd[10] = '\\\\0';
|
||||
strncpy(pwd2, (char *)crypt(\"xyzzy\", \"BazQux\"), 10);
|
||||
pwd2[10] = '\\\\0';
|
||||
if (strcmp(pwd, pwd2) == 0)
|
||||
exit(0);
|
||||
exit(1);
|
||||
}
|
||||
" 0 HAVE_UNSAFE_CRYPT)
|
||||
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${_saved_lib_list})
|
||||
endif()
|
||||
|
||||
|
||||
# ========== network libs ==========
|
||||
check_function_exists(gethostbyaddr HAVE_GETHOSTBYADDR)
|
||||
if (NOT HAVE_GETHOSTBYADDR)
|
||||
message(STATUS "gethostbyaddr() not available, trying nsllib")
|
||||
find_library(NSL_LIBRARY nsl)
|
||||
if (NSL_LIBRARY)
|
||||
message(STATUS "...nsllib found.")
|
||||
list(APPEND EXTRA_LIBS ${NSL_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
check_function_exists(socket HAVE_SOCKET)
|
||||
if (NOT HAVE_SOCKET)
|
||||
message(STATUS "socket() not available, trying socketlib")
|
||||
find_library(SOCKET_LIBRARY socket)
|
||||
if (SOCKET_LIBRARY)
|
||||
message(STATUS "...socketlib found")
|
||||
list(APPEND EXTRA_LIBS ${SOCKET_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# ========== time.h needs special treatment ==========
|
||||
check_include_file("sys/time.h" HAVE_SYS_TIME_H)
|
||||
check_include_file("sys/time.h" HAVE_TIME_H)
|
||||
|
||||
if (HAVE_SYS_TIME_H AND HAVE_TIME_H)
|
||||
check_c_source_compiles("
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <time.h>
|
||||
int main() {
|
||||
struct tm *tp;
|
||||
; return 0; }
|
||||
" TIME_WITH_SYS_TIME)
|
||||
endif()
|
||||
|
||||
# ========== Determine return value of signal() ==========
|
||||
check_c_source_compiles("
|
||||
#include <signal.h>
|
||||
int handler(int sig) { return 0; }
|
||||
int main() {
|
||||
signal(SIGINT, handler);
|
||||
return 1;
|
||||
}
|
||||
" SIGNAL_RETURNS_INT FAIL_REGEX ".*incompatible pointer type.*")
|
||||
|
||||
check_c_source_compiles("
|
||||
#include <signal.h>
|
||||
void handler(int sig) { }
|
||||
int main() {
|
||||
signal(SIGINT, handler);
|
||||
return 1;
|
||||
}
|
||||
" SIGNAL_RETURNS_VOID FAIL_REGEX ".*incompatible pointer type.*")
|
||||
|
||||
if (SIGNAL_RETURNS_INT)
|
||||
message(STATUS "signal() returns int.")
|
||||
set(RETSIGTYPE int)
|
||||
elseif (SIGNAL_RETURNS_VOID)
|
||||
message(STATUS "signal() returns void.")
|
||||
set(RETSIGTYPE void)
|
||||
else()
|
||||
message(FATAL_ERROR "Could not determine return value from signal handler.")
|
||||
endif()
|
||||
|
||||
# ========== Define general UNIX-system ==========
|
||||
if (UNIX)
|
||||
set(CIRCLE_UNIX 1)
|
||||
endif()
|
||||
|
||||
set(PROTO_FUNCTIONS
|
||||
accept
|
||||
bind
|
||||
gettimeofday
|
||||
atoi
|
||||
atol
|
||||
bzero
|
||||
chdir
|
||||
close
|
||||
fclose
|
||||
fcntl
|
||||
fflush
|
||||
fprintf
|
||||
fputc
|
||||
fread
|
||||
fscanf
|
||||
fseek
|
||||
fwrite
|
||||
getpeername
|
||||
getpid
|
||||
getrlimit
|
||||
getsockname
|
||||
htonl
|
||||
htons
|
||||
inet_addr
|
||||
inet_aton
|
||||
inet_ntoa
|
||||
listen
|
||||
ntohl
|
||||
perror
|
||||
printf
|
||||
qsort
|
||||
read
|
||||
remove
|
||||
rewind
|
||||
select
|
||||
setitimer
|
||||
setrlimit
|
||||
setsockopt
|
||||
snprintf
|
||||
sprintf
|
||||
sscanf
|
||||
strcasecmp
|
||||
strdup
|
||||
strerror
|
||||
stricmp
|
||||
strlcpy
|
||||
strncasecmp
|
||||
strnicmp
|
||||
system
|
||||
time
|
||||
unlink
|
||||
vsnprintf
|
||||
write
|
||||
socket
|
||||
)
|
||||
|
||||
configure_file(
|
||||
${CMAKE_SOURCE_DIR}/src/conf.h.cmake.in
|
||||
${CMAKE_BINARY_DIR}/tmp_conf.h
|
||||
)
|
||||
|
||||
macro(check_function_prototype FUNCTION)
|
||||
set(_code "
|
||||
#define NO_LIBRARY_PROTOTYPES
|
||||
#define __COMM_C__
|
||||
#define __ACT_OTHER_C__
|
||||
#include \"${CMAKE_BINARY_DIR}/tmp_conf.h\"
|
||||
#include \"${CMAKE_SOURCE_DIR}/src/sysdep.h\"
|
||||
#ifdef ${FUNCTION}
|
||||
error - already defined!
|
||||
#endif
|
||||
void ${FUNCTION}(int a, char b, int c, char d, int e, char f, int g, char h);
|
||||
|
||||
int main() {
|
||||
|
||||
; return 0; }
|
||||
")
|
||||
string(TOUPPER "${FUNCTION}" _upper_name)
|
||||
check_c_source_compiles("${_code}" NEED_${_upper_name}_PROTO FAIL_REGEX ".*incompatible pointer type.*")
|
||||
if (NEED_${_upper_name}_PROTO)
|
||||
message(STATUS "${FUNCTION}() has no prototype, NEED_${_upper_name}_PROTO set!")
|
||||
else()
|
||||
message(STATUS "${FUNCTION}() has a prototype, not setting NEED_${_upper_name}_PROTO")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
foreach (FUNC ${PROTO_FUNCTIONS})
|
||||
check_function_prototype(${FUNC})
|
||||
endforeach()
|
||||
|
||||
|
||||
# ========== Generate conf.h ==========
|
||||
configure_file(
|
||||
${CMAKE_SOURCE_DIR}/src/conf.h.cmake.in
|
||||
${CMAKE_BINARY_DIR}/conf.h
|
||||
)
|
||||
|
||||
|
||||
|
||||
# ========== Source-filer ==========
|
||||
file(GLOB SRC_FILES src/*.c)
|
||||
|
||||
# ========== Bygg kjørbar ==========
|
||||
add_executable(circle ${SRC_FILES})
|
||||
target_link_libraries(circle ${EXTRA_LIBS})
|
||||
|
||||
add_subdirectory(src/util)
|
||||
|
||||
if (MEMORY_DEBUG)
|
||||
message(STATUS "MEMORY_DEBUG is activated, setting up zmalloc")
|
||||
target_compile_definitions(circle PRIVATE MEMORY_DEBUG)
|
||||
endif()
|
||||
@@ -1,3 +1,5 @@
|
||||
Files for tbaMUD.
|
||||
|
||||
Files for Grenzland-MUD
|
||||
|
||||
Files for grenzland-mud, forked from tbamud
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
cmake -B . -S ..\src -G "Visual Studio 17 2022"
|
||||
@@ -1,7 +1,7 @@
|
||||
Updated: Apr 2007
|
||||
tbaMUD README
|
||||
-------------
|
||||
All requests for help or bugs should be reported to: builderacademy.net 9091.
|
||||
All requests for help or bugs should be reported to: tbamud.com 9091.
|
||||
|
||||
Information about CircleMUD can be found at the CircleMUD Home Page and FTP:
|
||||
http://www.circlemud.org
|
||||
|
||||
93
doc/README.CMAKE.md
Normal file
93
doc/README.CMAKE.md
Normal file
@@ -0,0 +1,93 @@
|
||||
Updated 2025-04
|
||||
|
||||
## Building TbaMUD with the cmake tool
|
||||
|
||||
# Building with CMake
|
||||
|
||||
This document describes how to configure, build and install tbamud
|
||||
from source code using the CMake build tool. To build with CMake, you of
|
||||
course first have to install CMake. The minimum required version of CMake is
|
||||
specified in the file `CMakeLists.txt` found in the top of the tbamud source
|
||||
tree. Once the correct version of CMake is installed you can follow the
|
||||
instructions below for the platform you are building on.
|
||||
|
||||
CMake builds can be configured either from the command line, or from one of
|
||||
CMake's GUIs.
|
||||
|
||||
NOTE: The current CMakeLists.txt only supports linux.
|
||||
|
||||
# Configuring
|
||||
|
||||
A CMake configuration of tbamud is similar to the autotools build of curl.
|
||||
It consists of the following steps after you have unpacked the source.
|
||||
|
||||
We recommend building with CMake on Windows.
|
||||
|
||||
## Using `cmake`
|
||||
|
||||
You can configure for in source tree builds or for a build tree
|
||||
that is apart from the source tree.
|
||||
|
||||
- Build in a separate directory (parallel to the source tree in this
|
||||
example). The build directory is created for you. This is recommended over
|
||||
building in the source tree to separate source and build artifacts.
|
||||
|
||||
```shell
|
||||
$ cmake -B build -S .
|
||||
```
|
||||
|
||||
- Build in the source tree. Not recommended.
|
||||
|
||||
```shell
|
||||
$ cmake -B .
|
||||
```
|
||||
|
||||
The examples below will assume you have created a build folder.
|
||||
|
||||
The above commands will generate the build files. If you need to regenerate
|
||||
the files, you can delete the cmake cache file, and rerun the above command:
|
||||
|
||||
```shell
|
||||
$ rm build/CMakeCache.txt
|
||||
```
|
||||
|
||||
Once the build files are generated, the build is run with cmake
|
||||
|
||||
```shell
|
||||
$ cmake --build build
|
||||
```
|
||||
|
||||
This will generate the object files in a subdirectory under the specified
|
||||
build folder and link the executable. The resulting binaries will be in the
|
||||
bin/ folder.
|
||||
|
||||
### Utilities
|
||||
|
||||
It is possible to build only single tools, none or all of them,
|
||||
by specifying the target in the build command:
|
||||
|
||||
```shell
|
||||
# only build the mud
|
||||
$ cmake --build build --target circle
|
||||
|
||||
# only build tools
|
||||
$ cmake --build build --target utils
|
||||
|
||||
# only build one tool
|
||||
$ cmake --build build --target wld2html
|
||||
```
|
||||
|
||||
### Debugging memory
|
||||
|
||||
In case you want to run the mud with memory debugging turned on, you
|
||||
can set the MEMORY_DEBUG flag during configuration by specifying the
|
||||
flag:
|
||||
|
||||
```shell
|
||||
$ cmake -B build -S . -DMEMORY_DEBUG:int=1
|
||||
$ cmake --build build
|
||||
```
|
||||
|
||||
When the mud is shut down, the zmalloc code will identify any leaks in your code.
|
||||
Note that memory debugging may consume quite a lot of memory and take some time
|
||||
to be handled on shutdown.
|
||||
@@ -1,15 +1,21 @@
|
||||
### Overview
|
||||
This guide describes how to build TbaMUD in the Visual Studio through the new experimental CMake environment.
|
||||
|
||||
### Prerequisites
|
||||
* [Visual Studio 2022+](https://visualstudio.microsoft.com/ru/vs/)
|
||||
* [CMake 3.27+](https://cmake.org/)
|
||||
|
||||
### Build Steps
|
||||
1. Goto the folder `src` and copy `conf.h.win` to `conf.h`.
|
||||
|
||||
2. Goto the folder `build` and execute `create_solution.bat`.
|
||||
|
||||
3. Open `build/circle.sln` in Visual Studio.
|
||||
|
||||
Updated: Apr 2025
|
||||
Compiling CircleMUD under Microsoft Windows XP
|
||||
using Microsoft Visual C++ 2022 (8.0)
|
||||
|
||||
### Overview
|
||||
This guide describes how to build TbaMUD in the Visual Studio through the new experimental CMake environment.
|
||||
|
||||
### Prerequisites
|
||||
* [Visual Studio 2022+](https://visualstudio.microsoft.com/ru/vs/)
|
||||
* [CMake 3.27+](https://cmake.org/)
|
||||
|
||||
### Build Steps
|
||||
1. Goto the folder `src` and copy `conf.h.win` to `conf.h`.
|
||||
|
||||
2. Run this command in the root folder:
|
||||
|
||||
cmake -B build -S . -G "Visual Studio 17 2022"
|
||||
|
||||
3. Open `build/circle.sln` in Visual Studio.
|
||||
|
||||
4. Compile and run.
|
||||
30
doc/act.txt
30
doc/act.txt
@@ -24,7 +24,7 @@ Contents
|
||||
1.1 Overview
|
||||
The act() function is used to process and send strings of text to characters
|
||||
in a room. It can be used to send the same basic string to a number of
|
||||
characters filling in certain segments – designated by control characters –
|
||||
characters filling in certain segments – designated by control characters –
|
||||
in different ways, dependant on what each character can see and who each
|
||||
character is. Once the text string passed to the function has been parsed, it
|
||||
is capitalized and a newline is added to its tail.
|
||||
@@ -38,17 +38,17 @@ struct obj_data *obj, const void *vict_obj, int type)
|
||||
These pieces are used as follows:
|
||||
|
||||
str: This is the basic string, a null terminated character array, including
|
||||
control characters (see section 1.4 on ‘Control Characters’), to be sent to
|
||||
control characters (see section 1.4 on ‘Control Characters’), to be sent to
|
||||
characters designated by the targets.
|
||||
|
||||
hide_invisible: A TRUE or FALSE value indicating whether or not to hide the
|
||||
entire output from any characters that cannot see the “performing character”.
|
||||
entire output from any characters that cannot see the “performing character”.
|
||||
|
||||
ch: The “performing character”. This is the character that the output string
|
||||
ch: The “performing character”. This is the character that the output string
|
||||
is associated with. The character is used to determine the room for the output
|
||||
of the action in question.
|
||||
|
||||
obj: An object (an actual item – obj_data) used in the course of the action.
|
||||
obj: An object (an actual item – obj_data) used in the course of the action.
|
||||
|
||||
vict_obj: This can be either a character involved in the action, another
|
||||
object, or even a predefined string of text.
|
||||
@@ -73,7 +73,7 @@ The next parameter vict_objcan be a number of things ranging from a game object
|
||||
null terminated character array (char *).
|
||||
|
||||
Do note, however, that obj and vict_obj are both ignored if there is no control
|
||||
character reference (see section 1.4 ‘Control Characters’) to them and the type
|
||||
character reference (see section 1.4 ‘Control Characters’) to them and the type
|
||||
is set to TO_ROOM or TO_CHAR. In these cases, NULL should be supplied as the
|
||||
input to the function.
|
||||
|
||||
@@ -96,7 +96,7 @@ TO_CHAR: Finally, this option sends the output to the ch.
|
||||
|
||||
TO_SLEEP: This is a special option that must be combined with one of the above
|
||||
options. It tells act() that the output is to be sent even to characters that
|
||||
are sleeping. It is combined with a bitwise ‘or’. i.e. TO_VICT | TO_SLEEP.
|
||||
are sleeping. It is combined with a bitwise ‘or’. i.e. TO_VICT | TO_SLEEP.
|
||||
|
||||
When the string has been parsed, it is capitalized and a newline is added.
|
||||
|
||||
@@ -105,20 +105,20 @@ In a manner similar to the printf() family of functions, act() uses control
|
||||
characters. However, instead of using the % symbol, act() uses the $ character
|
||||
to indicate control characters.
|
||||
|
||||
$n Write name, short description, or “someone”, for ch, depending on whether
|
||||
$n Write name, short description, or “someone”, for ch, depending on whether
|
||||
ch is a PC, a NPC, or an invisible PC/NPC.
|
||||
$N Like $n, except insert the text for vict_obj.*
|
||||
$m “him,” “her,” or “it,” depending on the gender of ch.
|
||||
$m “him,” “her,” or “it,” depending on the gender of ch.
|
||||
$M Like $m, for vict_obj.*
|
||||
$s “his,” “her,”or “it,” depending on the gender of ch.
|
||||
$s “his,” “her,”or “it,” depending on the gender of ch.
|
||||
$S Like $s, for vict_obj.*
|
||||
$e “he,” “she,” “it,” depending on the gender of ch.
|
||||
$e “he,” “she,” “it,” depending on the gender of ch.
|
||||
$E Like $e, for vict_obj.*
|
||||
$o Name or “something” for obj, depending on visibility.
|
||||
$o Name or “something” for obj, depending on visibility.
|
||||
$O Like $o, for vict_obj.*
|
||||
$p Short description or “something” for obj.
|
||||
$p Short description or “something” for obj.
|
||||
$P Like $p for vict_obj.*
|
||||
$a “an” or“a”, depending on the first character of obj’s name.
|
||||
$a “an” or“a”, depending on the first character of obj’s name.
|
||||
$A Like $a, for vict_obj.*
|
||||
$T Prints the string pointed to by vict_obj.*
|
||||
$F Processes the string pointed to by vict_obj with the fname() function prior
|
||||
@@ -129,7 +129,7 @@ no action is taken.
|
||||
$U Processes the buffer and uppercases the first letter of the following word
|
||||
(the word immediately after to the control code). If there is no following
|
||||
word, no action is taken.
|
||||
$$ Print the character ‘$’.
|
||||
$$ Print the character ‘$’.
|
||||
|
||||
NOTE*: vict_obj must be a pointer of type struct char_data *.
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ to players in color in the tbaMUD game engine. Its intended audience is for
|
||||
Coders of tbaMUD.
|
||||
|
||||
tbaMUD allows you to create colorful messages by using ANSI control sequences.
|
||||
Each player may select what “level” of color he/she desires from the four
|
||||
levels “off,” “brief,” “normal,” and “complete.” Each player can select his/her
|
||||
Each player may select what “level” of color he/she desires from the four
|
||||
levels “off,” “brief,” “normal,” and “complete.” Each player can select his/her
|
||||
color level by using the TOGGLE COLOR command from within the MUD; you as the
|
||||
programmer must decide which messages will be colored for each of the color
|
||||
levels.
|
||||
@@ -21,17 +21,17 @@ All files in which you wish to use color must have the line:
|
||||
|
||||
This should be put in after all other includes in the beginning of the file.
|
||||
|
||||
There are 8 colors available – “normal,” red, green, yellow, blue, magenta,
|
||||
There are 8 colors available – “normal,” red, green, yellow, blue, magenta,
|
||||
cyan and white. They are accessible by sending control sequences as part of
|
||||
another string, for example:
|
||||
|
||||
sprintf(buf, "If you’re %shappy%s and you know it clap "
|
||||
sprintf(buf, "If you’re %shappy%s and you know it clap "
|
||||
"%d of your hands.\n\r", x, y, num_of_hands);
|
||||
send_to_char(ch, buf);
|
||||
|
||||
In this example, x and y are the “on” and “off” sequences for the color you
|
||||
want. There are 2 main series of color macros available for you to use (don’t
|
||||
actually use “x” and “y,” of course!): the K series and the CC series. The CC
|
||||
In this example, x and y are the “on” and “off” sequences for the color you
|
||||
want. There are 2 main series of color macros available for you to use (don’t
|
||||
actually use “x” and “y,” of course!): the K series and the CC series. The CC
|
||||
(Conditional Color) series is recommended for most general use.
|
||||
|
||||
The name of the actual sequence starts with the name of its series, plus a
|
||||
@@ -51,21 +51,21 @@ CCBLU() (arguments defined below).
|
||||
|
||||
The K series requires no arguments, and is simply a macro to the ANSI color
|
||||
code. Therefore, if you use a K-series color code, the color will ALWAYS be
|
||||
sent, even if the person you’re sending it to has color off. This can very bad.
|
||||
sent, even if the person you’re sending it to has color off. This can very bad.
|
||||
Some people who do not have ANSI-compatible terminals will see garbage
|
||||
characters instead of colors. If the terminal correctly ignores ANSI color
|
||||
codes, then nothing will show up on their screen at all. The K series is mainly
|
||||
used to print colors to a string if the player’s color level will later be
|
||||
used to print colors to a string if the player’s color level will later be
|
||||
tested manually (for an example, see do_gen_com in act.comm.c).
|
||||
|
||||
The recommended series is the CC series (i.e. CCNRM(), CCRED(), etc.) The CC
|
||||
series macros require two arguments – a pointer to the character to whom the
|
||||
series macros require two arguments – a pointer to the character to whom the
|
||||
string is being sent, and the minimum color level the player must be set to in
|
||||
order to see the color. Color sent as 'brief' (formerly known as sparse it was
|
||||
changed for consistency with the syslog command) (C_SPR) will be seen by people
|
||||
with color set to sparse, normal, or complete; color sent as ‘normal’ (C_NRM)
|
||||
with color set to sparse, normal, or complete; color sent as ‘normal’ (C_NRM)
|
||||
will be seen only by people with color set to normal or complete; color sent as
|
||||
‘complete’ (C_CMP) will be seen only by people with color set to complete.
|
||||
‘complete’ (C_CMP) will be seen only by people with color set to complete.
|
||||
|
||||
To illustrate the above, an example is in order:
|
||||
|
||||
@@ -76,29 +76,29 @@ ACMD(do_showcolor)
|
||||
{
|
||||
char buf[300];
|
||||
|
||||
sprintf(buf, "Don’t you just love %scolor%s, %scolor%s, " "%sCOLOR%s!\n\r",
|
||||
sprintf(buf, "Don’t you just love %scolor%s, %scolor%s, " "%sCOLOR%s!\n\r",
|
||||
CCBLU(ch, C_CMP), CCNRM(ch, C_CMP), CCYEL(ch, C_NRM), CCNRM(ch, C_NRM),
|
||||
CCRED(ch, C_SPR), CCNRM(ch, C_SPR));
|
||||
send_to_char(ch, buf);
|
||||
}
|
||||
|
||||
What does this do? For people with color set to Complete, it prints:
|
||||
Don’t you just love color, color, COLOR! (blue) (yellow) (red)
|
||||
Don’t you just love color, color, COLOR! (blue) (yellow) (red)
|
||||
|
||||
People who have color set to Normal will see:
|
||||
Don’t you just love color, color, COLOR! (yellow) (red)
|
||||
Don’t you just love color, color, COLOR! (yellow) (red)
|
||||
|
||||
People who have color set to Sparse will see:
|
||||
Don’t you just love color, color, COLOR! (red)
|
||||
Don’t you just love color, color, COLOR! (red)
|
||||
|
||||
People who have color set to Off will see:
|
||||
Don’t you just love color, color, COLOR! (no color, as you’d expect)
|
||||
Don’t you just love color, color, COLOR! (no color, as you’d expect)
|
||||
|
||||
There are several common pitfalls with using the CC series of color macros:
|
||||
|
||||
Do not confuse CCNRM with C_NRM. CCNRM() is a macro to turn the color back to
|
||||
normal; C_NRMis a color level of “normal.” Always make sure that every pair of
|
||||
“on” and “off” codes are at the same color level. For example:
|
||||
normal; C_NRMis a color level of “normal.” Always make sure that every pair of
|
||||
“on” and “off” codes are at the same color level. For example:
|
||||
|
||||
WRONG: sprintf(buf, "%sCOLOR%s\n\r", CCBLU(ch, C_NRM), CCNRM(ch, C_CMP));
|
||||
|
||||
@@ -110,14 +110,14 @@ WRONG: sprintf(buf, "%sCOLOR%s\n\r", CCBLU(ch, C_CMP), CCNRM(ch, C_NRM));
|
||||
|
||||
The above statement is also wrong, although not as bad. In this case, someone
|
||||
with color set to Normal will (correctly) not get the CCBLU code, but will then
|
||||
unnecessarily get the CCNRM code. Never send a color code if you don’t have to.
|
||||
unnecessarily get the CCNRM code. Never send a color code if you don’t have to.
|
||||
The codes are several bytes long, and cause a noticeable pause at 2400 baud.
|
||||
|
||||
This should go without saying, but don’t ever send color at the C_OFF level.
|
||||
This should go without saying, but don’t ever send color at the C_OFF level.
|
||||
|
||||
Special precautions must be taken when sending a colored string to a large
|
||||
group of people. You can’t use the color level of “ch” (the person sending the
|
||||
string) – each person receiving the string must get a string appropriately
|
||||
group of people. You can’t use the color level of “ch” (the person sending the
|
||||
string) – each person receiving the string must get a string appropriately
|
||||
colored for his/her level. In such cases, it is usually best to set up two
|
||||
strings (one colored and one not), and test each player’s color level
|
||||
strings (one colored and one not), and test each player’s color level
|
||||
individually (see do_gen_comin act.comm.c for an example).
|
||||
|
||||
@@ -4,14 +4,14 @@ Builder Academy at telnet://tbamud.com:9091 or email rumble@tbamud.com -- Rumble
|
||||
The Art of Debugging
|
||||
Originally by Michael Chastain and Sammy
|
||||
|
||||
The following documentation is excerpted from Merc 2.0’s hacker.txt file. It
|
||||
The following documentation is excerpted from Merc 2.0’s hacker.txt file. It
|
||||
was written by Furey of MERC Industries and is included here with his
|
||||
permission. We have packaged it with tbaMUD (changed in a couple of places,
|
||||
such as specific filenames) because it offers good advice and insight into the
|
||||
art and science of software engineering. More information about tbaMUD,
|
||||
can be found at the tbaMUD home page http://tbamud.com.
|
||||
|
||||
1 “I’m running a Mud so I can learn C programming!”
|
||||
1 “I’m running a Mud so I can learn C programming!”
|
||||
|
||||
Yeah, right. The purpose of this document is to record some of our knowledge,
|
||||
experience and philosophy. No matter what your level, we hope that this
|
||||
@@ -31,11 +31,11 @@ Play with it some more.
|
||||
Read documentation again.
|
||||
Get the idea?
|
||||
|
||||
The idea is that your mind can accept only so much “new data” in a single
|
||||
session. Playing with something doesn’t introduce very much new data, but it
|
||||
does transform data in your head from the “new” category to the “familiar”
|
||||
category. Reading documentation doesn’t make anything “familiar,” but it
|
||||
refills your “new” hopper.
|
||||
The idea is that your mind can accept only so much “new data” in a single
|
||||
session. Playing with something doesn’t introduce very much new data, but it
|
||||
does transform data in your head from the “new” category to the “familiar”
|
||||
category. Reading documentation doesn’t make anything “familiar,” but it
|
||||
refills your “new” hopper.
|
||||
|
||||
Most people, if they even read documentation in the first place, never return
|
||||
to it. They come to a certain minimum level of proficiency and then never
|
||||
@@ -47,17 +47,17 @@ through the two-step learning cycle many times to master it.
|
||||
|
||||
man gives you online manual pages.
|
||||
|
||||
grep stands for “global regular expression print;” searches for strings in text
|
||||
grep stands for “global regular expression print;” searches for strings in text
|
||||
files.
|
||||
|
||||
vi, emacs, jove use whatever editor floats your boat, but learn the hell out
|
||||
of it; you should know every command in your editor.
|
||||
|
||||
ctags mags “tags” for your editor which allows you to go to functions by name
|
||||
ctags mags “tags” for your editor which allows you to go to functions by name
|
||||
in any source file.
|
||||
|
||||
>, >>, <, | input and output redirection at the command line; get someone to
|
||||
show you, or dig it out of “man csh”
|
||||
show you, or dig it out of “man csh”
|
||||
|
||||
These are the basic day-in day-out development tools. Developing without
|
||||
knowing how to use all of these well is like driving a car without knowing
|
||||
@@ -70,21 +70,21 @@ the hypothesis, run the program and provide it experimental input, observe its
|
||||
behavior, and confirm or refute the hypothesis.
|
||||
|
||||
A good hypothesis is one which makes surprising predictions which then come
|
||||
true; predictions that other hypotheses don’t make.
|
||||
true; predictions that other hypotheses don’t make.
|
||||
|
||||
The first step in debugging is not to write bugs in the first place. This
|
||||
sounds obvious, but sadly, is all too often ignored.
|
||||
|
||||
If you build a program, and you get any errors or any warnings, you should fix
|
||||
them before continuing. C was designed so that many buggy ways of writing code
|
||||
are legal, but will draw warnings from a suitably smart compiler (such as “gcc”
|
||||
are legal, but will draw warnings from a suitably smart compiler (such as “gcc”
|
||||
with the -Wall flag enabled). It takes only minutes to check your warnings and
|
||||
to fix the code that generates them, but it takes hours to find bugs otherwise.
|
||||
|
||||
“Desk checking” (proof reading) is almost a lost art these days. Too bad. You
|
||||
“Desk checking” (proof reading) is almost a lost art these days. Too bad. You
|
||||
should desk check your code before even compiling it, and desk-check it again
|
||||
periodically to keep it fresh in mind and find new errors. If you have someone
|
||||
in your group whose only job it is to desk-check other people’s code, that
|
||||
in your group whose only job it is to desk-check other people’s code, that
|
||||
person will find and fix more bugs than everyone else combined.
|
||||
|
||||
One can desk-check several hundred lines of code per hour. A top-flight
|
||||
@@ -95,20 +95,20 @@ fixing technique. Compare that to all the hours you spend screwing around with
|
||||
broken programs trying to find one bug at a time.
|
||||
|
||||
The next technique beyond desk-checking is the time-honored technique of
|
||||
inserting “print” statements into the code, and then watching the logged
|
||||
inserting “print” statements into the code, and then watching the logged
|
||||
values. Within tbaMUD code, you can call printf(), fprintf(), or log()to dump
|
||||
interesting values at interesting times. Where and when to dump these values
|
||||
is an art, which you will learn only with practice.
|
||||
|
||||
If you don’t already know how to redirect output in your operating system, now
|
||||
is the time to learn. On Unix, type the command “man csh”, and read the part
|
||||
about the “>” operator. You should also learn the difference between “standard
|
||||
output” (for example, output from “printf”) and “standard error” (for example,
|
||||
output from “fprintf(stderr, ...)”).
|
||||
If you don’t already know how to redirect output in your operating system, now
|
||||
is the time to learn. On Unix, type the command “man csh”, and read the part
|
||||
about the “>” operator. You should also learn the difference between “standard
|
||||
output” (for example, output from “printf”) and “standard error” (for example,
|
||||
output from “fprintf(stderr, ...)”).
|
||||
|
||||
Ultimately, you cannot fix a program unless you understand how it is operating
|
||||
in the first place. Powerful debugging tools will help you collect data, but
|
||||
they can’t interpret it, and they can’t fix the underlying problems. Only you
|
||||
they can’t interpret it, and they can’t fix the underlying problems. Only you
|
||||
can do that.
|
||||
|
||||
When you find a bug... your first impulse will be to change the code, kill the
|
||||
@@ -117,9 +117,9 @@ observe is often just the symptom of a deeper bug. You should keep pursuing the
|
||||
bug, all the way down. You should grok the bug and cherish it in fullness
|
||||
before causing its discorporation.
|
||||
|
||||
Also, when finding a bug, ask yourself two questions: “What design and
|
||||
programming habits led to the introduction of the bug in the first place?” And:
|
||||
“What habits would systematically prevent the introduction of bugs like this?”
|
||||
Also, when finding a bug, ask yourself two questions: “What design and
|
||||
programming habits led to the introduction of the bug in the first place?” And:
|
||||
“What habits would systematically prevent the introduction of bugs like this?”
|
||||
|
||||
5 Debugging: Tools
|
||||
|
||||
@@ -127,20 +127,20 @@ When a Unix process accesses an invalid memory location, or (more rarely)
|
||||
executes an illegal instruction, or (even more rarely) something else goes
|
||||
wrong, the Unix operating system takes control. The process is incapable of
|
||||
further execution and must be killed. Before killing the process, however, the
|
||||
operating system does something for you: it opens a file named “core” and
|
||||
operating system does something for you: it opens a file named “core” and
|
||||
writes the entire data space of the process into it.
|
||||
|
||||
Thus, “dumping core” is not a cause of problems, or even an effect of problems.
|
||||
It’s something the operating system does to help you find fatal problems which
|
||||
Thus, “dumping core” is not a cause of problems, or even an effect of problems.
|
||||
It’s something the operating system does to help you find fatal problems which
|
||||
have rendered your process unable to continue.
|
||||
|
||||
One reads a “core” file with a debugger. The two most popular debuggers on Unix
|
||||
One reads a “core” file with a debugger. The two most popular debuggers on Unix
|
||||
are adb and gdb, although occasionally one finds dbx. Typically one starts a
|
||||
debugger like this: “gdb bin/circle” or “gdb bin/circle lib/core”.
|
||||
debugger like this: “gdb bin/circle” or “gdb bin/circle lib/core”.
|
||||
|
||||
The first thing, and often the only thing, you need to do inside the debugger
|
||||
is take a stack trace. In adb, the command for this is “$c”. In gdb, the
|
||||
command is “backtrace”. In dbx, the command is “where”. The stack trace will
|
||||
is take a stack trace. In adb, the command for this is “$c”. In gdb, the
|
||||
command is “backtrace”. In dbx, the command is “where”. The stack trace will
|
||||
tell you what function your program was in when it crashed, and what functions
|
||||
were calling it. The debugger will also list the arguments to these functions.
|
||||
Interpreting these arguments, and using more advanced debugger features,
|
||||
@@ -343,12 +343,12 @@ new tools.
|
||||
|
||||
7 Profiling
|
||||
|
||||
Another useful technique is “profiling,” to find out where your program is
|
||||
Another useful technique is “profiling,” to find out where your program is
|
||||
spending most of its time. This can help you to make a program more efficient.
|
||||
|
||||
Here is how to profile a program:
|
||||
|
||||
1. Remove all the .o files and the “circle” executable:
|
||||
1. Remove all the .o files and the “circle” executable:
|
||||
make clean
|
||||
|
||||
2. Edit your Makefile, and change the PROFILE=line:
|
||||
@@ -359,25 +359,25 @@ make
|
||||
|
||||
4. Run circle as usual. Shutdown the game with the shutdown command when you
|
||||
have run long enough to get a good profiling base under normal usage
|
||||
conditions. If you crash the game, or kill the process externally, you won’t
|
||||
conditions. If you crash the game, or kill the process externally, you won’t
|
||||
get profiling information.
|
||||
|
||||
5. Run the profcommand:
|
||||
prof bin/circle > prof.out
|
||||
|
||||
6. Read prof.out. Run “man prof” to understand the format of the output. For
|
||||
advanced profiling, you can use “PROFILE = -pg” in step 2, and use the “gprof”
|
||||
command in step 5. The “gprof” form of profiling gives you a report which lists
|
||||
6. Read prof.out. Run “man prof” to understand the format of the output. For
|
||||
advanced profiling, you can use “PROFILE = -pg” in step 2, and use the “gprof”
|
||||
command in step 5. The “gprof” form of profiling gives you a report which lists
|
||||
exactly how many times any function calls any other function. This information
|
||||
is valuable for debugging as well as performance analysis.
|
||||
|
||||
Availability of “prof” and “gprof” varies from system to system. Almost every
|
||||
Unix system has “prof”. Only some systems have “gprof”.
|
||||
Availability of “prof” and “gprof” varies from system to system. Almost every
|
||||
Unix system has “prof”. Only some systems have “gprof”.
|
||||
|
||||
7 Books for Serious Programmers
|
||||
|
||||
Out of all the thousands of books out there, three stand out:
|
||||
|
||||
Kernighan and Plaugher, “The Elements of Programming Style”
|
||||
Kernighan and Ritchie, “The C Programming Language”
|
||||
Brooks, “The Mythical Man Month”
|
||||
Kernighan and Plaugher, “The Elements of Programming Style”
|
||||
Kernighan and Ritchie, “The C Programming Language”
|
||||
Brooks, “The Mythical Man Month”
|
||||
|
||||
@@ -3,7 +3,7 @@ Builder Academy at telnet://tbamud.com:9091 or email rumble@tbamud.com -- Rumble
|
||||
|
||||
tbaMUD File Manifest
|
||||
|
||||
The main ‘tbaMUD/’ directory has the following subdirectories and files:
|
||||
The main ‘tbaMUD/’ directory has the following subdirectories and files:
|
||||
|
||||
autorun - Shell script to run the MUD (./autorun &).
|
||||
FAQ - Frequently Aske Questions with answers.
|
||||
@@ -16,7 +16,7 @@ lib/ - MUD data.
|
||||
log/ - System logs.
|
||||
src/ - Source code.
|
||||
|
||||
The bin/directory contains only binaries: ‘circle’ (the main MUD) and its
|
||||
The bin/directory contains only binaries: ‘circle’ (the main MUD) and its
|
||||
utilities, which are described in utils.txt.
|
||||
|
||||
The doc/ directory has its own README file, describing the contents of each
|
||||
@@ -51,12 +51,12 @@ time - Where the MUD time is saved.
|
||||
|
||||
The lib/misc/ directory contains the following files:
|
||||
|
||||
bugs - Bugs reported by players with the ’bug’ command.
|
||||
ideas - Ideas from players from ’idea’ command.
|
||||
bugs - Bugs reported by players with the ’bug’ command.
|
||||
ideas - Ideas from players from ’idea’ command.
|
||||
messages - Spell and skill damage messages.
|
||||
socials - Text file with text of the socials.
|
||||
socials.new - New format of socials you can edit via AEDIT.
|
||||
typos - Typos reported by players with the ’typo’ command.
|
||||
typos - Typos reported by players with the ’typo’ command.
|
||||
xnames - Text file of invalid names.
|
||||
|
||||
The lib/plrobjs/ contains the following files and directories:
|
||||
@@ -80,18 +80,18 @@ zzz/
|
||||
The lib/text/ directory contains the following files:
|
||||
|
||||
background - Background story (for option 3 from main menu).
|
||||
credits - Text for ’credits’ command.
|
||||
credits - Text for ’credits’ command.
|
||||
greetings - Greeting message.
|
||||
handbook - Text for Immortal Handbook (’handbook’ command).
|
||||
immlist - Text for ’immlist’ command.
|
||||
handbook - Text for Immortal Handbook (’handbook’ command).
|
||||
immlist - Text for ’immlist’ command.
|
||||
imotd - Immortal MOTD --seen by immortals on login.
|
||||
info - Text for ’info’ command.
|
||||
info - Text for ’info’ command.
|
||||
motd - MOTD --seen by mortals on login.
|
||||
news - Text for ’news’ command.
|
||||
policies - Text for ’policy’ command.
|
||||
wizlist - Text for ’wizlist’ command.
|
||||
/help/screen - Text for ’help’ command as a mortal with no arguments.
|
||||
/help/iscreen - Text for ’help’ command an an immortal with no arguments.
|
||||
news - Text for ’news’ command.
|
||||
policies - Text for ’policy’ command.
|
||||
wizlist - Text for ’wizlist’ command.
|
||||
/help/screen - Text for ’help’ command as a mortal with no arguments.
|
||||
/help/iscreen - Text for ’help’ command an an immortal with no arguments.
|
||||
|
||||
The lib/world/directory contains the following subdirectories:
|
||||
|
||||
@@ -103,8 +103,8 @@ wld - Contains *.wld files (world files)
|
||||
zon - Contains *.zon files (zone files)
|
||||
|
||||
Each of the 6 subdirectories in the lib/world/ directory also contains two
|
||||
additional files – one called ‘index’, which specifies which files in that
|
||||
directory should be loaded when the MUD boots, and ‘index.mini’, which
|
||||
additional files – one called ‘index’, which specifies which files in that
|
||||
directory should be loaded when the MUD boots, and ‘index.mini’, which
|
||||
specifies which files should be loaded if the MUD is booted with the -m
|
||||
(mini-mud) option.
|
||||
|
||||
@@ -128,6 +128,6 @@ trigger - Trigedit log messages.
|
||||
usage - Mud system usage (player load & memory usage info).
|
||||
|
||||
The src/ directory contains all of the C and header files for the MUD, along
|
||||
with a Makefile. The src/util/ directory contains source for tbaMUD’s utility
|
||||
with a Makefile. The src/util/ directory contains source for tbaMUD’s utility
|
||||
programs. See admin.txt for more information on how to compile the MUD. See
|
||||
utils.txt for more information on how to use tbaMUD’s utilities.
|
||||
utils.txt for more information on how to use tbaMUD’s utilities.
|
||||
|
||||
@@ -9,16 +9,16 @@ every platform that exists. This document is for experienced programmers
|
||||
trying to make tbaMUD work on their platform.
|
||||
|
||||
tbaMUD should work on most UNIX platforms without any modifications; simply run
|
||||
the “configure” script and it should automatically detect what type of system
|
||||
the “configure” script and it should automatically detect what type of system
|
||||
you have and anything that may be strange about it. These findings are all
|
||||
stored in a header file called conf.h which is created in the src directory
|
||||
from a template called conf.h.in. A Makefile is also created from the template
|
||||
Makefile.in.
|
||||
|
||||
Non-UNIX platforms are a problem. Some can’t run tbaMUD at all. However, any
|
||||
Non-UNIX platforms are a problem. Some can’t run tbaMUD at all. However, any
|
||||
multitasking OS that has an ANSI C compiler, and supports non-blocking I/O and
|
||||
socket-based TCP/IP networking, should theoretically be able to run tbaMUD; for
|
||||
example, OS/2, AmigaOS, Mac OS (Classic versions; Mac OS X supports tbaMUD’s
|
||||
example, OS/2, AmigaOS, Mac OS (Classic versions; Mac OS X supports tbaMUD’s
|
||||
configure script from the command line), and all versions of Windows.
|
||||
|
||||
The port can be very easy or very difficult, depending mainly on whether or nor
|
||||
@@ -26,7 +26,7 @@ your OS supports the Berkeley socket API.
|
||||
|
||||
The general steps for porting tbaMUD to a non-UNIX platform are listed below. A
|
||||
number of tips for porting can be found after the porting steps. Note that we
|
||||
have already ported tba to Windows, so if you’re confused as to how to perform
|
||||
have already ported tba to Windows, so if you’re confused as to how to perform
|
||||
some of these steps, you can look at what we have done as an example (see the
|
||||
files README.CYGWIN).
|
||||
|
||||
@@ -36,11 +36,11 @@ trying to port the code.
|
||||
|
||||
Porting the Code
|
||||
|
||||
Step 1. Create a “conf.h” file for your system. Copy the template “conf.h.in”
|
||||
to “conf.h”, and then define or undefine each item as directed by the comments
|
||||
Step 1. Create a “conf.h” file for your system. Copy the template “conf.h.in”
|
||||
to “conf.h”, and then define or undefine each item as directed by the comments
|
||||
and based on the characteristics of your system. To write the conf.h file,
|
||||
you’ll need to know which header files are included with your system, the
|
||||
return type of signals, whether or not your compiler supports the ‘const’
|
||||
you’ll need to know which header files are included with your system, the
|
||||
return type of signals, whether or not your compiler supports the ‘const’
|
||||
keyword, and whether or not you have various functions such as crypt()and
|
||||
random(). Also, you can ignore the HAVE_LIBxxx and HAVE_xxx_PROTO constants at
|
||||
the end of conf.h.in; they are not used in the code (they are part of UNIX
|
||||
@@ -58,12 +58,12 @@ be in the source file comm.c.
|
||||
|
||||
Step 4. Test your changes! Make sure that multiple people can log in
|
||||
simultaneously and that they can all type commands at the same time. No player
|
||||
should ever have a “frozen” screen just because another is waiting at a prompt.
|
||||
should ever have a “frozen” screen just because another is waiting at a prompt.
|
||||
Leave the MUD up for at least 24 hours, preferably with people playing it, to
|
||||
make sure that your changes are stable. Make sure that automatic events such as
|
||||
zone resets, point regeneration, and corpse decomposition are being timed
|
||||
correctly (a tick should be about 75 seconds). Try resetting all the zones
|
||||
repeatedly by typing “zr *” many times. Play the MUD and make sure that the
|
||||
repeatedly by typing “zr *” many times. Play the MUD and make sure that the
|
||||
basic commands (killing mobs as a mortal, casting spells, etc.) work correctly.
|
||||
|
||||
Step 5. If you are satisfied that your changes work correctly, you are
|
||||
@@ -71,20 +71,20 @@ encouraged to submit them to be included as part of the tbaMUD distribution so
|
||||
that future releases of tbaMUD will support your platform. This prevents you
|
||||
from re-porting the code every time a new version is released and allows other
|
||||
people who use your platform to enjoy tbaMUD as well. To submit your changes
|
||||
you must make a patch file using the GNU ‘diff’ program. diff will create a
|
||||
patch file which can be later used with the ‘patch’ utility to incorporate
|
||||
you must make a patch file using the GNU ‘diff’ program. diff will create a
|
||||
patch file which can be later used with the ‘patch’ utility to incorporate
|
||||
your changes into the stock tbaMUD distribution. For example, if you have a
|
||||
copy of tbaMUD in the “stock-tba” directory, and your changes are in “my-tba”,
|
||||
copy of tbaMUD in the “stock-tba” directory, and your changes are in “my-tba”,
|
||||
you can create a patch file like this:
|
||||
|
||||
diff -u --new-file --recursive stock-tba/src my-tba/src > patch
|
||||
|
||||
This will create a file called ‘patch’ with your patches. You should then try
|
||||
to use the ‘patch’ program (the inverse of ‘diff’) on a copy of tbaMUD to make
|
||||
This will create a file called ‘patch’ with your patches. You should then try
|
||||
to use the ‘patch’ program (the inverse of ‘diff’) on a copy of tbaMUD to make
|
||||
sure that tbaMUD is correctly changed to incorporate your patches. This step is
|
||||
very important: if you don’t create these patches correctly, your work will be
|
||||
very important: if you don’t create these patches correctly, your work will be
|
||||
useless because no one will be able to figure out what you did! Make sure to
|
||||
read the documentation to ‘diff’ and ‘patch’ if you don’t understand how to use
|
||||
read the documentation to ‘diff’ and ‘patch’ if you don’t understand how to use
|
||||
them. If your patches work, CELEBRATE!!
|
||||
|
||||
Step 6. Write a README file for your operating system that describes everything
|
||||
@@ -107,7 +107,7 @@ Each system to which tba is already ported has a CIRCLE_xx constant associated
|
||||
with it: CIRCLE_UNIX for plain vanilla UNIX tbaMUD, CIRCLE_WINDOWS for MS
|
||||
Windows, CIRCLE_OS2 for IBM OS/2, and CIRCLE_AMIGA for the Amiga. You must use
|
||||
a similar constant for your system. At the top of your conf.h, make sure to
|
||||
comment out “#define CIRCLE_UNIX” and add “#define CIRCLE_YOUR_SYSTEM”.
|
||||
comment out “#define CIRCLE_UNIX” and add “#define CIRCLE_YOUR_SYSTEM”.
|
||||
|
||||
3.2 ANSI C and GCC
|
||||
As long as your system has an ANSI C compiler, all of the code (except for
|
||||
@@ -122,22 +122,22 @@ you use gcc.
|
||||
Make absolutely sure to use non-blocking I/O; i.e. make sure to enable the
|
||||
option so that the read() system call will immediately return with an error if
|
||||
there is no data available. If you do not use non-blocking I/O, read() will
|
||||
“block,” meaning it will wait infinitely for one particular player to type
|
||||
“block,” meaning it will wait infinitely for one particular player to type
|
||||
something even if other players are trying to enter commands. If your system
|
||||
does not implement non-blocking I/O correctly, try using the
|
||||
POSIX_NONBLOCK_BROKEN constant in sysdep.h.
|
||||
|
||||
3.4 Timing
|
||||
tbaMUD needs a fairly precise (on the order of 5 or 10 ms) timer in order to
|
||||
correctly schedule events such as zone resets, point regeneration (“ticks”),
|
||||
correctly schedule events such as zone resets, point regeneration (“ticks”),
|
||||
corpse decomposition, and other automatic tasks. If your system supports the
|
||||
select() system call with sufficient precision, the default timing code should
|
||||
work correctly. If not, you’ll have to find out which system calls your system
|
||||
work correctly. If not, you’ll have to find out which system calls your system
|
||||
supports for determining how much time has passed and replace the select()
|
||||
timing method.
|
||||
|
||||
3.5 Signals and Signal Handlers
|
||||
A note about signals: Most systems don’t support the concept of signals in the
|
||||
A note about signals: Most systems don’t support the concept of signals in the
|
||||
same way that UNIX does. Since signals are not a critical part of how tbaMUD
|
||||
works anyway (they are only used for updating the wizlist and some other
|
||||
trivial things), all signal handling is turned off by default when compiling
|
||||
@@ -147,7 +147,7 @@ conf.h file and all signal code will be ignored automatically.
|
||||
|
||||
4 Final Note
|
||||
IMPORTANT: Remember to keep any changes you make surrounded by #ifdef
|
||||
statements (i.e. “#ifdef CIRCLE_WINDOWS ... #endif”). If you make absolutely
|
||||
statements (i.e. “#ifdef CIRCLE_WINDOWS ... #endif”). If you make absolutely
|
||||
sure to mark all of your changes with #ifdef statements, then your patches
|
||||
(once you get them to work) will be suitable for incorporation into the
|
||||
tbaMUD distribution, meaning that tbaMUD will officially support your platform.
|
||||
|
||||
@@ -143,7 +143,7 @@ communication channels
|
||||
totally ignores all commands from that player until they are thawed.
|
||||
--Even handier DELETE flag allows you to delete players on the fly.
|
||||
--"set" command (mentioned above) allows you to freeze/unfreeze/
|
||||
delete/siteok/un-siteok players --even if they aren’t logged in!
|
||||
delete/siteok/un-siteok players --even if they aren’t logged in!
|
||||
--Bad password attempts are written to the system log and saved;
|
||||
if someone tries to hack your account, you see "4 LOGIN FAILURES
|
||||
SINCE LAST SUCCESSFUL LOGIN" next time you log on.
|
||||
|
||||
@@ -110,12 +110,12 @@ is being specified. The command sort name is the shortest part of the command a
|
||||
player must type for it to match. The hide-flag can be either 0 or 1; if 1, the
|
||||
social is hidden from OTHERS if they cannot see the character performing the
|
||||
social. The action is not hidden from the VICTIM, even if s/he cannot see the
|
||||
character performing the social, although in such cases the character’s name
|
||||
will, of course, be replaced with “someone”. The min positions should be set to
|
||||
character performing the social, although in such cases the character’s name
|
||||
will, of course, be replaced with “someone”. The min positions should be set to
|
||||
dictate the minimum position a player must be in to target the victim and
|
||||
perform the social. Min level allows you to further customize who can use what
|
||||
socials.Where it makes sense to do so, text fields may be left empty. If
|
||||
editing manually you should by put a ‘#’ in the first column on the line. Aedit
|
||||
editing manually you should by put a ‘#’ in the first column on the line. Aedit
|
||||
does this automatically.
|
||||
|
||||
Examples:
|
||||
|
||||
@@ -34,7 +34,7 @@ older CircleMUD data files to the versions used in CircleMUD v3, while others
|
||||
are used to convert currently existing files into different formats.
|
||||
|
||||
Overall, these utilities have been created in an attempt to make the tbaMUD
|
||||
administrator’s life a bit easier, and to give the administrator some ideas of
|
||||
administrator’s life a bit easier, and to give the administrator some ideas of
|
||||
further and more grandiose utilities to create. Some are no longer applicable
|
||||
but are retained as examples.
|
||||
|
||||
@@ -61,7 +61,7 @@ the second, and so forth.
|
||||
The split utility is designed to split large world files into smaller, zone
|
||||
sized files that are easier to manage and maintain. The utility reads its input
|
||||
from the standard input and writes the output to files with names specified
|
||||
within the larger world file. This is done by inserting ‘=filename’ into the
|
||||
within the larger world file. This is done by inserting ‘=filename’ into the
|
||||
world file at the appropriate points, where filename is the name of the file
|
||||
for the following section.
|
||||
|
||||
@@ -141,8 +141,8 @@ The command line syntax for autowiz is as follows:
|
||||
autowiz <wizlev> <wizlistfile> <immlev> <immlistfile> [pid to signal]
|
||||
|
||||
where <wizlev> is equal to whatever LVL_GOD is set to in your tbaMUD server,
|
||||
<wizlistfile> is the filename for the file containing the game’s Wizlist.
|
||||
<immlev> should be set to your game’s LVL_IMMORT, while <immlistfile>
|
||||
<wizlistfile> is the filename for the file containing the game’s Wizlist.
|
||||
<immlev> should be set to your game’s LVL_IMMORT, while <immlistfile>
|
||||
is the name of the Immlist file.
|
||||
|
||||
This utility must be recompiled if you make any changes to the player file structure.
|
||||
|
||||
BIN
lib/etc/board.grenzland
Normal file
BIN
lib/etc/board.grenzland
Normal file
Binary file not shown.
@@ -1,8 +1,10 @@
|
||||
(lib/text/background)
|
||||
|
||||
There once was a guy who played MUDs
|
||||
But the MUDs that he played were all duds
|
||||
"I'll write one," said he.
|
||||
And he brushed off his C.
|
||||
And soon played his game with his buds.
|
||||
The mists part and you find yourself in a
|
||||
world unlike the one you have just left.
|
||||
Reality twisted and turned, and the land
|
||||
has found itself in a new configuration.
|
||||
Enter the borderland of reality and find
|
||||
your own way.
|
||||
In the Grenzland.
|
||||
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
T B A M U D
|
||||
2 0 2 5
|
||||
|
||||
|
||||
G R E N Z L A N D M U D
|
||||
2 0 2 6
|
||||
|
||||
|
||||
Based on tbaMUD, by The Builder Academy
|
||||
|
||||
Based on CircleMUD by Jeremy Elson and DikuMUD by Hans-Henrik Staerfeldt,
|
||||
Katja Nyboe, Tom Madsen, Michael Seifert, and Sebastian Hammer
|
||||
|
||||
By what name do you wish to be known?
|
||||
|
||||
Oh hero, by what name shall you wish to be known?
|
||||
|
||||
@@ -865,7 +865,7 @@ AUTOQUESTS QUESTS QUESTMASTERS QUEST-MOBS QUESTMOBS
|
||||
|
||||
An autoquest is a quest that can be automatically started and completed
|
||||
without the intervention of an immortal. Simply visit a questmaster and join
|
||||
an available quest, and get rewarded on it’s completion. Keep an eye out for
|
||||
an available quest, and get rewarded on it's completion. Keep an eye out for
|
||||
autoquests scattered throughout the World.
|
||||
|
||||
See Also: QUEST-FLAG, QUESTPOINTS
|
||||
@@ -1584,7 +1584,6 @@ qedit (quest editor)
|
||||
questpoints
|
||||
buildwalk
|
||||
dig
|
||||
tell m-w (an in game dictionary lookup)
|
||||
gemote
|
||||
history
|
||||
file
|
||||
@@ -2444,25 +2443,6 @@ Example:
|
||||
> diagnose doctor
|
||||
|
||||
See also: CONSIDER, HIT, KILL
|
||||
#0
|
||||
DICTIONARY DICTIONARIES THESAURUS M-W.COM DEFINITION MERRIAM-WEBSTER M-W-DEFINITION WEBSTER MW TELL-M-W BREATHER SPELLING WORDS
|
||||
|
||||
Usage: tell m-w <word>
|
||||
|
||||
We have a direct link to Merriam Webster. To use the dictionary just
|
||||
tell m-w <word>
|
||||
|
||||
>tell m-w breather
|
||||
You get this feedback from Merriam-Webster:
|
||||
That means:
|
||||
1 : one that breathes
|
||||
2 : a break in activity for rest or relief
|
||||
3 : a small vent in an otherwise airtight enclosure
|
||||
|
||||
A few obscure definitions are not available through m-w since they are in the
|
||||
unabridged version that requires membership. They also offer a thesaurus at:
|
||||
@Chttp://m-w.com/@n
|
||||
|
||||
#31
|
||||
DIG UNDIG RDIG RELINK RLINKS
|
||||
|
||||
@@ -3173,7 +3153,7 @@ game.
|
||||
Invest in a thesaurus. Makes a world of difference, and if that doesn't
|
||||
help, just make up your own words for things you create (just be sure to
|
||||
describe them very well. Use @Chttp://m-w.com/@n for an online thesaurus
|
||||
and dictionary. You can @Rtell m-w <word>@n to lookup a definition.
|
||||
and dictionary.
|
||||
|
||||
4. Where can I learn Trigedit?
|
||||
Here! Welcor is now the developer of trigedit. We have extensive help files,
|
||||
@@ -3564,8 +3544,8 @@ GRAMMAR GRAMMER TIPS
|
||||
words can be particularly tricky and elude electronic spell checkers. A good
|
||||
dictionary, however, will help you spell archaic words. Whenever I am building
|
||||
I use our Merriam Webster dictionary link on TBA to check any tough words for
|
||||
proper spelling. Test it out @RTELL M-W DEFINITION@n. We hope to add a thesaurus
|
||||
soon! Goto @Chttp://m-w.com/@n until then.
|
||||
proper spelling. We hope to add a thesaurus soon! Goto @Chttp://m-w.com/@n
|
||||
until then.
|
||||
I have found that a good principle to make is to avoid the use of all
|
||||
contractions. For example, if you mean to say "it is", do not use "it's", spell
|
||||
it out. This will help differentiate between "its" (which means 'belonging to
|
||||
@@ -7192,7 +7172,7 @@ prefer to add the quest in the zone where quest completion takes place.
|
||||
Quests use vnums in exactly the same way as mobiles, object and rooms. Each
|
||||
zone will normally have 100 vnums available (#00 to #99, where # is the zone
|
||||
number). Usually, when creating the first quest in a zone, #00 is used,
|
||||
then #01, etc…
|
||||
then #01, etc.
|
||||
|
||||
When you qedit <vnum> to create a new quest (or edit an existing one), you will
|
||||
see the menu in @RHELP QEDIT-MENU@n
|
||||
@@ -7203,12 +7183,12 @@ QEDIT-ACCEPT
|
||||
|
||||
This is the text that is sent to the player when they start the quest. It
|
||||
should describe in detail exactly what is required to complete the quest. The
|
||||
text is simply output on the player’s screen, so be creative here. An example
|
||||
text is simply output on the player's screen, so be creative here. An example
|
||||
of an accept message text could be something like:
|
||||
|
||||
The questmaster rummages in a large pile of papers.
|
||||
The questmaster says ‘Ah, here it is’
|
||||
The questmaster says ‘Bob, the local butcher has offered this quest’
|
||||
The questmaster says "Ah, here it is"
|
||||
The questmaster says "Bob, the local butcher has offered this quest"
|
||||
The questmaster shows you a hastily scrawled note, that reads:
|
||||
|
||||
I am willing to offer any plucky adventurer 10 quest points if they bring me a
|
||||
@@ -7218,7 +7198,7 @@ order to fill. I need these within 24 hours
|
||||
|
||||
Thanks, Bob the Butcher, Midgaard
|
||||
The questmaster sighs.
|
||||
The questmaster says ‘A tricky quest, but it’ll cost you 5qp to back out now’
|
||||
The questmaster says "A tricky quest, but it'll cost you 5qp to back out now"
|
||||
#31
|
||||
QEDIT-COMPLETED QEDIT-ABANDONED
|
||||
|
||||
@@ -7232,7 +7212,7 @@ all timed quests.
|
||||
QEDIT-COMPLETION
|
||||
|
||||
Just like the accept message, this is simply text that is output on the
|
||||
player’s screen when they successfully complete the quest. Prizes (quest
|
||||
player's screen when they successfully complete the quest. Prizes (quest
|
||||
points, gold coins, experience points or an object) are automatically
|
||||
announced after this text is shown, so this text does not need to have that
|
||||
information in it.
|
||||
@@ -7258,7 +7238,7 @@ Quest flags: @cNOBITS@n
|
||||
Enter quest flags, 0 to quit :
|
||||
|
||||
Currently, only one flag is available, the REPEATABLE flag. When you have
|
||||
finished turning this on or off, select ‘0’ (zero) to return to the main menu.
|
||||
finished turning this on or off, select "0" (zero) to return to the main menu.
|
||||
#31
|
||||
QEDIT-LEVELS
|
||||
|
||||
@@ -7312,12 +7292,12 @@ QEDIT-NEXT
|
||||
|
||||
This is the quest vnum of next quest in a chain. When a player completes
|
||||
the current quest, the next quest will automatically be joined. This allows
|
||||
for long quests with a number of ‘steps’.
|
||||
for long quests with a number of "steps".
|
||||
#31
|
||||
QEDIT-PREREQUISITE
|
||||
|
||||
This is the object vnum for a prerequisite object. The prerequisite object
|
||||
should be in the player’s inventory in order for them to be able to join the
|
||||
should be in the player's inventory in order for them to be able to join the
|
||||
quest. It is not taken from the player when the quest starts.
|
||||
#31
|
||||
QEDIT-PREVIOUS
|
||||
@@ -7328,15 +7308,15 @@ completed by the player in order to join this quest.
|
||||
QEDIT-QUANTITY
|
||||
|
||||
This is the number of times the player needs to repeat the quest. For
|
||||
example, it could be the number of items the player needs to find in a ‘object’
|
||||
quest of the number of mobs the player should kill in a ‘kill mob’ quest. This
|
||||
should be used with caution, however. In an object quest ‘picking up’ the same
|
||||
example, it could be the number of items the player needs to find in a "object"
|
||||
quest of the number of mobs the player should kill in a "kill mob" quest. This
|
||||
should be used with caution, however. In an object quest picking up the same
|
||||
object 20 times will also complete the quest.
|
||||
#31
|
||||
QEDIT-QUIT QEDIT-MESSAGE
|
||||
|
||||
The quit message is sent to the player when they type quest leave. Players
|
||||
can lose quest points for abandoning a quest (see “Abandoned” on the next
|
||||
can lose quest points for abandoning a quest (see "Abandoned" on the next
|
||||
page), so if they lose quest points, this text really should inform them of
|
||||
that.
|
||||
#31
|
||||
@@ -7365,14 +7345,14 @@ Room, Clear Room - Room VNUM
|
||||
#31
|
||||
QEDIT-TIME
|
||||
|
||||
This is the number of ‘ticks’ or game hours that the player has to complete
|
||||
This is the number of 'ticks' or game hours that the player has to complete
|
||||
the quest. If this is set, then the builder should really try to do the quest
|
||||
themselves, and time how long it takes (typing ‘time’ before and after the
|
||||
attempt), and then giving at least one extra ‘tick’ for players to complete it.
|
||||
themselves, and time how long it takes (typing 'time' before and after the
|
||||
attempt), and then giving at least one extra 'tick' for players to complete it.
|
||||
#31
|
||||
QEDIT-TYPE
|
||||
|
||||
There are a few different quest types. When you select option ‘7’ from the
|
||||
There are a few different quest types. When you select option '7' from the
|
||||
main menu, you will be shown a list to choose from:
|
||||
|
||||
0) Object - Player needs to find a particular object.
|
||||
@@ -7447,7 +7427,7 @@ Usage: quest [list | join <#> | progress | leave | history]
|
||||
|
||||
quest - Show usage information for the quest command.
|
||||
quest list - Used at the questmaster to see which quests are available.
|
||||
quest join # - Used to the questmaster to join the quest listed as number ‘nn’ on quest list.
|
||||
quest join # - Used to the questmaster to join the quest listed as number 'nn' on quest list.
|
||||
quest progress - Shows the player which quest they are doing, and their quest progress.
|
||||
quest leave - Allows the player to abandon the current quest, taking the quest point penalty.
|
||||
quest history - Shows all previously completed non-repeatable quests.
|
||||
@@ -9352,7 +9332,7 @@ and simply bearing artistic merit. Second, by ensuring that they are absolutely
|
||||
necessary to achieve the goals of the game! If your game is made for experience
|
||||
and equipment gathering, and failure to read descriptions directly impedes this
|
||||
goal, then players will learn to read everything. If your game is made for
|
||||
exploring or role-play, most of your players probably already read them Â-
|
||||
exploring or role-play, most of your players probably already read them -
|
||||
because knowing their environment is a basic requirement of play. In any case,
|
||||
builders exist to ensure that the goals of play are supported by game
|
||||
descriptions.
|
||||
@@ -9364,7 +9344,7 @@ meaning behind descriptions, areas to find, special items, unique nooks and
|
||||
crannies to spend time socializing, and hints that point to these things
|
||||
elsewhere outside of your own zone is an excellent idea. In fact, if you
|
||||
don't wish to be building descriptions no one will read, you should employ
|
||||
special secrets Â- most especially on games where knowing one's environment
|
||||
special secrets - most especially on games where knowing one's environment
|
||||
does deeply affect a character's development. No matter what kind of zone you
|
||||
are building, keep it interesting throughout!
|
||||
|
||||
@@ -9387,7 +9367,7 @@ road.
|
||||
shouldn't be the sole builder of your zone. Instead, seek the assistance of
|
||||
someone who adds creative merit to your descriptions. You can do practically
|
||||
everything from plot to secrets to minutiae, even write the zone in full and
|
||||
just ask someone you know who writes well to Â'say it better' and rewrite
|
||||
just ask someone you know who writes well to 'say it better' and rewrite
|
||||
what you intended to have there all along. Novels have editors, and so
|
||||
should any zone.
|
||||
|
||||
@@ -9659,19 +9639,19 @@ have a point and here it is: *drum roll please*
|
||||
Building is hard work! It is a form of expression and creativity. What kind
|
||||
of areas you build generally reflects on what kind of person you are. You
|
||||
do not have to be a good speller but you do need a good dictionary/thesaurus.
|
||||
@RHELP M-W@n. Sometimes building can seem like a thankless job and sometimes
|
||||
building can be a reward in itself. Building a few areas, even a few good
|
||||
ones, does not make you an Immortal or an Imp. It takes more than building to
|
||||
be one of those and it entails even more work. Respect others and they will
|
||||
respect you. The more detailed an area the better it is. Always choose Quality
|
||||
over Quantity. Put some pride in your areas, develop a style of your own. Try
|
||||
new things keep it interesting, if you become bored with building an area take
|
||||
a break and play a mortal or do something else, don't take advantage of builder
|
||||
privileges. Treat others as you wish to be treated. One more warning I would
|
||||
give to builders before they take things personally or get insulted. Everyone
|
||||
has their own ideas on how to run a MUD, what it comes down to is whoever owns
|
||||
the MUD makes the final decision, so it does not matter how good you think your
|
||||
idea is, it may never be used if the owner does not like it. Plain and simple.
|
||||
Sometimes building can seem like a thankless job and sometimes building can be
|
||||
a reward in itself. Building a few areas, even a few good ones, does not make
|
||||
you an Immortal or an Imp. It takes more than building to be one of those and
|
||||
it entails even more work. Respect others and they will respect you. The more
|
||||
detailed an area the better it is. Always choose Quality over Quantity. Put
|
||||
some pride in your areas, develop a style of your own. Try new things keep it
|
||||
interesting, if you become bored with building an area take a break and play a
|
||||
mortal or do something else, don't take advantage of builder privileges.
|
||||
Treat others as you wish to be treated. One more warning I would give to
|
||||
builders before they take things personally or get insulted. Everyone has their
|
||||
own ideas on how to run a MUD, what it comes down to is whoever owns the MUD
|
||||
makes the final decision, so it does not matter how good you think your idea
|
||||
is, it may never be used if the owner does not like it. Plain and simple.
|
||||
You see this on every MUD. So please keep the ideas coming, but do not try to
|
||||
force them onto anyone. Be constructive, not critical about peoples ideas.
|
||||
Everyone is allowed their opinions.
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
(lib/text/policies)
|
||||
|
||||
This file should list, in no uncertain terms, the policies you must abide
|
||||
by on this MUD.
|
||||
Right now we are all adults and should be able to interact with
|
||||
each other without any larger issues.
|
||||
But the Grenzland maxim still is in force:
|
||||
We are here to play, don't piss into anyone else's beer.
|
||||
|
||||
Bug the higher-ups to make some policies and write them in this file, lest
|
||||
a political disaster ensue...
|
||||
No harassing, no doxxing, no sexism, racism, or other unacceptable
|
||||
isms towards your fellow players.
|
||||
|
||||
We definitely should add something more worked out in here.
|
||||
|
||||
|
||||
@@ -10,4 +10,5 @@
|
||||
|
||||
Gods
|
||||
~~~~
|
||||
|
||||
|
||||
kyonshi
|
||||
|
||||
25
lib/world/mob/491.mob
Normal file
25
lib/world/mob/491.mob
Normal file
@@ -0,0 +1,25 @@
|
||||
#49100
|
||||
waiter~
|
||||
the waiter~
|
||||
A waiter who knows all his customers is serving drinks here.
|
||||
~
|
||||
He looks very nice. But I bet he packs a punch.
|
||||
~
|
||||
24586 0 0 0 0 0 0 0 600 E
|
||||
23 13 -3 4d4+230 3d3+3
|
||||
230 52900
|
||||
8 8 1
|
||||
E
|
||||
#49101
|
||||
shopkeeper~
|
||||
the shopkeeper~
|
||||
A friendly man reading a zine is sitting behind the counter.
|
||||
~
|
||||
He looks very nice. But I bet he packs a punch.
|
||||
~
|
||||
24586 0 0 0 0 0 0 0 600 E
|
||||
23 13 -3 4d4+230 3d3+3
|
||||
230 52900
|
||||
8 8 1
|
||||
E
|
||||
$
|
||||
66
lib/world/mob/492.mob
Normal file
66
lib/world/mob/492.mob
Normal file
@@ -0,0 +1,66 @@
|
||||
#49200
|
||||
book worm~
|
||||
the book worm~
|
||||
A creepy little book work is crawling through the books.
|
||||
~
|
||||
Yuck! I bet they eat books!
|
||||
~
|
||||
72 0 0 0 0 0 0 0 -250 E
|
||||
1 20 9 0d0+10 1d2+0
|
||||
10 100
|
||||
8 8 0
|
||||
E
|
||||
#49201
|
||||
apprentice~
|
||||
Master Ultan's apprentice~
|
||||
One of Master Ultan's apprentices stands here looking confused.
|
||||
~
|
||||
He is clinging to a book he has never read. He looks harmless, but
|
||||
you never can tell.
|
||||
~
|
||||
76 0 0 0 0 0 0 0 0 E
|
||||
2 20 8 0d0+20 1d2+0
|
||||
20 400
|
||||
8 8 1
|
||||
E
|
||||
#49202
|
||||
journeyman guard~
|
||||
Master Ultan's journeyman~
|
||||
One of Master Ultan's journeymen stands guard here.
|
||||
~
|
||||
The Journeyman is responsible for protecting the books from being read.
|
||||
What a strange guild they are!
|
||||
~
|
||||
10 0 0 0 0 0 0 0 0 E
|
||||
3 19 8 0d0+30 1d2+0
|
||||
30 900
|
||||
8 8 1
|
||||
E
|
||||
#49203
|
||||
book thief~
|
||||
the book thief~
|
||||
An imp-like thing is sneaking thorugh the shelves, stealing books.
|
||||
~
|
||||
A tiny, vaguely humanoid shaped creature. Before you ever get a
|
||||
good look at it, it darts back into the shelves.
|
||||
~
|
||||
236 0 0 0 0 0 0 0 -800 E
|
||||
3 19 8 0d0+30 1d2+0
|
||||
30 900
|
||||
8 8 1
|
||||
E
|
||||
#49204
|
||||
master ultan~
|
||||
Master Ultan~
|
||||
Master Ultan stands here, touching books with his creepy finger.
|
||||
~
|
||||
He is the head of the Librarians Guild, which hoards books. He is
|
||||
an old man, haggard and nearly blind. He looks like a harmless old
|
||||
man, but he has survived thus far.
|
||||
~
|
||||
10 0 0 0 0 0 0 0 0 E
|
||||
5 19 7 1d1+50 1d2+0
|
||||
50 2500
|
||||
8 8 1
|
||||
E
|
||||
$
|
||||
@@ -182,6 +182,8 @@
|
||||
343.mob
|
||||
345.mob
|
||||
346.mob
|
||||
491.mob
|
||||
492.mob
|
||||
555.mob
|
||||
556.mob
|
||||
653.mob
|
||||
|
||||
73
lib/world/obj/49.obj
Normal file
73
lib/world/obj/49.obj
Normal file
@@ -0,0 +1,73 @@
|
||||
#4900
|
||||
boards bulletin gen_boards~
|
||||
a bulletin board~
|
||||
A small bulletin board is mounted on a wall here.~
|
||||
~
|
||||
13 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0
|
||||
0 0 0 0 0
|
||||
E
|
||||
bulletin~
|
||||
Use 'look board' to read the board.
|
||||
~
|
||||
E
|
||||
board~
|
||||
If you can read this, the board is not working.
|
||||
~
|
||||
#4901
|
||||
bottle beer~
|
||||
a bottle~
|
||||
A beer bottle has been left here.~
|
||||
~
|
||||
17 0 0 0 0 a 0 0 0 0 0 0 0
|
||||
8 8 1 0
|
||||
10 20 8 0 0
|
||||
#4902
|
||||
bottle dark ale~
|
||||
a bottle~
|
||||
A dark bottle of ale has been left here.~
|
||||
~
|
||||
17 0 0 0 0 a 0 0 0 0 0 0 0
|
||||
8 8 3 0
|
||||
10 10 3 0 0
|
||||
#4903
|
||||
bottle firebreather~
|
||||
a bottle~
|
||||
A bottle of firebreather has been left here.~
|
||||
~
|
||||
17 0 0 0 0 a 0 0 0 0 0 0 0
|
||||
8 8 7 0
|
||||
10 50 17 0 0
|
||||
#4904
|
||||
bottle local~
|
||||
a bottle~
|
||||
A dark bottle has been left here.~
|
||||
~
|
||||
17 0 0 0 0 a 0 0 0 0 0 0 0
|
||||
8 8 8 0
|
||||
10 20 7 0 0
|
||||
#4905
|
||||
zine~
|
||||
the grenzland zine~
|
||||
A tiny zine labelled "Grenzland No. 7" was left here.~
|
||||
~
|
||||
12 0 0 0 0 a 0 0 0 0 0 0 0
|
||||
0 0 0 0
|
||||
1 4 0 0 0
|
||||
E
|
||||
zine~
|
||||
It looks like the 7th issue of the Grenzland Zine. This issue
|
||||
focuses on High Level Adventures, and - look! - there is a report from
|
||||
the ongoing Arden Vul campaign in there too!
|
||||
~
|
||||
#4906
|
||||
dagger~
|
||||
a dagger~
|
||||
A dagger is lying here.~
|
||||
~
|
||||
5 ag 0 0 0 ano 0 0 0 0 0 0 0
|
||||
0 1 4 11
|
||||
1 1 0 0
|
||||
A
|
||||
19 1
|
||||
$
|
||||
22
lib/world/obj/491.obj
Normal file
22
lib/world/obj/491.obj
Normal file
@@ -0,0 +1,22 @@
|
||||
#49103
|
||||
sink water~
|
||||
a sink~
|
||||
A sink with a tap.~
|
||||
~
|
||||
23 cde 0 0 0 0 0 0 0 0 0 0 0
|
||||
500 500 0 0
|
||||
505 0 0 0 0
|
||||
E
|
||||
sink tap~
|
||||
It is an ordinary sink with a tap. You might fill your canteen
|
||||
here.
|
||||
~
|
||||
#49104
|
||||
key~
|
||||
a small key~
|
||||
A smalk brass key.~
|
||||
~
|
||||
18 c 0 0 0 a 0 0 0 0 0 0 0
|
||||
1 0 0 0
|
||||
1 1 0 0
|
||||
$
|
||||
@@ -38,6 +38,7 @@
|
||||
44.obj
|
||||
45.obj
|
||||
46.obj
|
||||
49.obj
|
||||
50.obj
|
||||
51.obj
|
||||
52.obj
|
||||
@@ -181,6 +182,7 @@
|
||||
343.obj
|
||||
345.obj
|
||||
346.obj
|
||||
491.obj
|
||||
555.obj
|
||||
556.obj
|
||||
653.obj
|
||||
|
||||
51
lib/world/shp/491.shp
Normal file
51
lib/world/shp/491.shp
Normal file
@@ -0,0 +1,51 @@
|
||||
CircleMUD v3.0 Shop File~
|
||||
#49100~
|
||||
4901
|
||||
4902
|
||||
4903
|
||||
4904
|
||||
-1
|
||||
1.50
|
||||
0.75
|
||||
-1
|
||||
%s Sorry, I don't stock that item.~
|
||||
%s You don't seem to have that.~
|
||||
%s I don't trade in such items.~
|
||||
%s I can't afford that!~
|
||||
%s You are too poor!~
|
||||
%s That'll be %d coins, thanks.~
|
||||
%s I'll give you %d coins for that.~
|
||||
0
|
||||
2
|
||||
49100
|
||||
0
|
||||
49100
|
||||
-1
|
||||
0
|
||||
28
|
||||
0
|
||||
0
|
||||
#49102~
|
||||
4905
|
||||
-1
|
||||
1.50
|
||||
0.75
|
||||
-1
|
||||
%s Sorry, I don't stock that item.~
|
||||
%s You don't seem to have that.~
|
||||
%s I don't trade in such items.~
|
||||
%s I can't afford that!~
|
||||
%s You are too poor!~
|
||||
%s That'll be %d coins, thanks.~
|
||||
%s I'll give you %d coins for that.~
|
||||
0
|
||||
2
|
||||
49101
|
||||
0
|
||||
49102
|
||||
-1
|
||||
0
|
||||
28
|
||||
0
|
||||
0
|
||||
$~
|
||||
@@ -163,6 +163,7 @@
|
||||
343.shp
|
||||
345.shp
|
||||
346.shp
|
||||
491.shp
|
||||
555.shp
|
||||
556.shp
|
||||
653.shp
|
||||
|
||||
12
lib/world/trg/491.trg
Normal file
12
lib/world/trg/491.trg
Normal file
@@ -0,0 +1,12 @@
|
||||
0;190;19M0;190;19m#49100
|
||||
Editorial Room Key - 49104~
|
||||
2 c 0
|
||||
l~
|
||||
if %cmd.mudcommand% == look && !%actor.has_item(49104)%
|
||||
%echo% Wait? Is that a key lying there!? Better pick that up!
|
||||
%load% obj 49104 %actor% inv
|
||||
else
|
||||
return 0
|
||||
end
|
||||
~
|
||||
$~
|
||||
@@ -182,8 +182,10 @@
|
||||
343.trg
|
||||
345.trg
|
||||
346.trg
|
||||
491.trg
|
||||
555.trg
|
||||
556.trg
|
||||
653.trg
|
||||
654.trg
|
||||
|
||||
$
|
||||
|
||||
@@ -637,10 +637,17 @@ You see Poor Alley.
|
||||
S
|
||||
#3026
|
||||
The Dark Alley~
|
||||
The dark alley, to the west is the common square and to the south is the
|
||||
Guild of Thieves. The alley continues east.
|
||||
The dark alley, to the west is the common square and to the south
|
||||
is the Guild of Thieves. The alley continues east. You see a curious
|
||||
building to the north you swear wasn't here the last time you have
|
||||
been to this dark alley.
|
||||
~
|
||||
30 0 0 0 0 1
|
||||
D0
|
||||
This building wasn't here last time, right?
|
||||
~
|
||||
~
|
||||
0 -1 49101
|
||||
D1
|
||||
The alley continues east.
|
||||
~
|
||||
|
||||
10
lib/world/wld/49.wld
Normal file
10
lib/world/wld/49.wld
Normal file
@@ -0,0 +1,10 @@
|
||||
#4900
|
||||
In a Time and Place before Creation~
|
||||
You are standing in the Void. Earth and Sky have not yet been
|
||||
separated. Nothing has form here, except the Celestial Mound rising
|
||||
above the shapeless waters of Nu. Could this be a time and place
|
||||
before Creation?
|
||||
~
|
||||
49 ce 0 0 0 0
|
||||
S
|
||||
$
|
||||
162
lib/world/wld/491.wld
Normal file
162
lib/world/wld/491.wld
Normal file
@@ -0,0 +1,162 @@
|
||||
#49100
|
||||
The Grenzland Club~
|
||||
You are in the woodpaneled club room of the Grenzland Building.
|
||||
People are talking quietly or reading in silence. There is a fire
|
||||
crackling in the hearth to the North. To the West is a restroom. To
|
||||
the South is the Entry Hall. To the East is a nice looking bar.
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D2
|
||||
You see the Entry Hall to the Grenzland Building.
|
||||
~
|
||||
~
|
||||
1 -1 49101
|
||||
D3
|
||||
You see the restroom.
|
||||
~
|
||||
~
|
||||
1 -1 49103
|
||||
S
|
||||
#49101
|
||||
The Entry Hall to the Grenzland Building~
|
||||
You are in the Entry Hall to the Grenzland Building. To the North
|
||||
you see the Grenzland Club room. To the West is a door with a small
|
||||
note pinned to it. To the South you see the Entry Hall. To the South
|
||||
is a Dark Alley in Midgaard. To the East you see the Grenzland Shop.
|
||||
A double staircase leads up to the Balcony.
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D0
|
||||
You see the Grenzland Club room.
|
||||
~
|
||||
~
|
||||
1 -1 49100
|
||||
D1
|
||||
You see the Grenzland Shop.
|
||||
~
|
||||
~
|
||||
1 -1 49102
|
||||
D2
|
||||
You see a Dark Alley.
|
||||
~
|
||||
~
|
||||
1 -1 3026
|
||||
D4
|
||||
You see the Balcony from below.
|
||||
~
|
||||
~
|
||||
1 -1 49110
|
||||
E
|
||||
note~
|
||||
The note reads:
|
||||
|
||||
This door will lead to a teleporter room in the future.
|
||||
- a.
|
||||
~
|
||||
S
|
||||
#49102
|
||||
The Grenzland Shop~
|
||||
You are in the Grenzland Shop. The room is full of books, zines,
|
||||
dice, minis, and game boxes! The exit is to the West, but do you
|
||||
really want to leave?
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D1
|
||||
You see the Entry Hall.
|
||||
~
|
||||
~
|
||||
1 -1 49101
|
||||
S
|
||||
#49103
|
||||
The Restroom~
|
||||
You are in the restroom of the Grenzland Club. The exit is to the
|
||||
East. To the south are some bathroom stalls.
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D1
|
||||
You see the Grenzland Club room.
|
||||
~
|
||||
~
|
||||
1 -1 49100
|
||||
D2
|
||||
You see bathroom stalls.
|
||||
~
|
||||
~
|
||||
1 -1 49104
|
||||
S
|
||||
#49104
|
||||
Bathroom Stalls~
|
||||
Well, these are bathroom stalls. Quite clean.
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D0
|
||||
You see the sink and the exit.
|
||||
~
|
||||
~
|
||||
1 -1 49103
|
||||
E
|
||||
stall stalls toilet toilets room~
|
||||
Surprisingly clean.
|
||||
~
|
||||
S
|
||||
T 49100
|
||||
#49110
|
||||
The Balcony above the Entry Hall~
|
||||
This is the Balcony above the Entry Hall To the North is the
|
||||
Library. From the door to the East you hear busy typing. The door to
|
||||
has a brass plaque on it. A double staircase leads down to the Entry
|
||||
Hall.
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D0
|
||||
You see a double-winged door leading into the Library.
|
||||
~
|
||||
~
|
||||
1 -1 49112
|
||||
D1
|
||||
You see a door with a brass plaque on it.
|
||||
~
|
||||
~
|
||||
1 49104 49111
|
||||
D5
|
||||
You see the Entry Hall from above.
|
||||
~
|
||||
~
|
||||
1 -1 49101
|
||||
E
|
||||
note plaque door~
|
||||
The plaque reads: "Grenzland Zine Editorial Room"
|
||||
~
|
||||
S
|
||||
#49111
|
||||
The Grenzland Zine Editorial Room~
|
||||
This is supposed to be the editorial room of the Grenzland Zine.
|
||||
Dozens of monkeys chained to typwriters type frantically. This is a
|
||||
joke, right?
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D3
|
||||
You see the Balcony above the Entry Hall.
|
||||
~
|
||||
~
|
||||
1 49104 49110
|
||||
S
|
||||
#49112
|
||||
The Library~
|
||||
The walls are bookshelves and the room is filled with plenty of
|
||||
winged chairs, reading desks and map tables. One book shelves to the
|
||||
North seems to be a door of some sort?
|
||||
~
|
||||
491 de 0 0 0 0
|
||||
D0
|
||||
A curious door. Where might it lead?
|
||||
~
|
||||
~
|
||||
1 -1 49200
|
||||
D2
|
||||
You see the Balcony above the Entry.
|
||||
~
|
||||
~
|
||||
1 -1 49110
|
||||
S
|
||||
$
|
||||
286
lib/world/wld/492.wld
Normal file
286
lib/world/wld/492.wld
Normal file
@@ -0,0 +1,286 @@
|
||||
#49200
|
||||
The Entrance to the Library Maze~
|
||||
This seems to be some secret section of the library. There is
|
||||
shelves full of books everywhere! Let's hope you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D0
|
||||
The shelves continue North.
|
||||
~
|
||||
~
|
||||
0 -1 49202
|
||||
D3
|
||||
The shelves continue West.
|
||||
~
|
||||
~
|
||||
0 -1 49201
|
||||
D2
|
||||
Through the door you see the Library of the Grenzland Build.
|
||||
~
|
||||
~
|
||||
1 -1 49112
|
||||
S
|
||||
#49201
|
||||
A dead end in the Library Maze~
|
||||
This is a dead end. There is shelves full of books everywhere!
|
||||
Let's hope you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D1
|
||||
The shelves continue East.
|
||||
~
|
||||
~
|
||||
0 -1 49200
|
||||
S
|
||||
#49202
|
||||
A corridor in the Library Maze~
|
||||
This is a corridor. It continues North and South. There is
|
||||
shelves full of books everywhere! Let's hope you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D0
|
||||
The shelves continue North.
|
||||
~
|
||||
~
|
||||
0 -1 49203
|
||||
D2
|
||||
The shelves continue South.
|
||||
~
|
||||
~
|
||||
0 -1 49200
|
||||
S
|
||||
#49203
|
||||
A junktion in the Library Maze~
|
||||
This is a junktion. Corridors continue East, South, and West. A
|
||||
door leads North. There is shelves full of books everywhere! Let's
|
||||
hope you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D0
|
||||
A door leads north
|
||||
~
|
||||
~
|
||||
1 -1 49210
|
||||
D1
|
||||
The shelves continue East.
|
||||
~
|
||||
~
|
||||
0 -1 49207
|
||||
D2
|
||||
The shelves continue South.
|
||||
~
|
||||
~
|
||||
0 -1 49202
|
||||
D3
|
||||
The shelves continue West.
|
||||
~
|
||||
~
|
||||
0 -1 49204
|
||||
S
|
||||
#49204
|
||||
A corridor in the Library Maze~
|
||||
This is a corridor. It continues East and West. There is shelves
|
||||
full of books everywhere! Let's hope you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D1
|
||||
The shelves continue East.
|
||||
~
|
||||
~
|
||||
0 -1 49203
|
||||
D3
|
||||
The shelves continue West.
|
||||
~
|
||||
~
|
||||
0 -1 49205
|
||||
S
|
||||
#49205
|
||||
A corridor in the Library Maze~
|
||||
This is a corridor. It continues East. A door leads south. There
|
||||
is shelves full of books everywhere! Let's hope you don't get lost
|
||||
here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D1
|
||||
The shelves continue East.
|
||||
~
|
||||
~
|
||||
0 -1 49204
|
||||
D2
|
||||
A door leads South.
|
||||
~
|
||||
~
|
||||
1 -1 49206
|
||||
S
|
||||
#49206
|
||||
A Reading Room~
|
||||
This seems to be a reading room. There are a few desks here. The
|
||||
room has only one exit North.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D0
|
||||
A door leads North.
|
||||
~
|
||||
~
|
||||
1 -1 49205
|
||||
S
|
||||
#49207
|
||||
A corridor in the Library Maze~
|
||||
This is a corridor. It continues East and West. There is shelves
|
||||
full of books everywhere! Let's hope you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D1
|
||||
The shelves continue East.
|
||||
~
|
||||
~
|
||||
0 -1 49208
|
||||
D3
|
||||
The shelves continue West.
|
||||
~
|
||||
~
|
||||
0 -1 49203
|
||||
S
|
||||
#49208
|
||||
A junktion in the Library Maze~
|
||||
This is a junktion. Corridors continue South and West. A door
|
||||
leads North. There is shelves full of books everywhere! Let's hope
|
||||
you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D0
|
||||
A door leads north
|
||||
~
|
||||
~
|
||||
1 -1 49211
|
||||
D2
|
||||
The shelves continue South.
|
||||
~
|
||||
~
|
||||
0 -1 49209
|
||||
D3
|
||||
The shelves continue West.
|
||||
~
|
||||
~
|
||||
0 -1 49207
|
||||
S
|
||||
#49209
|
||||
A dead end in the Library Maze~
|
||||
This is a dead end. There is shelves full of books everywhere!
|
||||
Let's hope you don't get lost here.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D0
|
||||
The shelves continue North.
|
||||
~
|
||||
~
|
||||
0 -1 49208
|
||||
S
|
||||
#49210
|
||||
A dark corridor in the Library Maze~
|
||||
This is a corridor. There are no light sources! The corridor
|
||||
continues North. A door leads South. There is shelves full of books
|
||||
everywhere! Let's hope you don't get lost here.
|
||||
~
|
||||
492 ad 0 0 0 0
|
||||
D0
|
||||
The shelves continue North.
|
||||
~
|
||||
~
|
||||
0 -1 49214
|
||||
D2
|
||||
A door leads South.
|
||||
~
|
||||
~
|
||||
1 -1 49203
|
||||
S
|
||||
#49211
|
||||
A dark corridor in the Library Maze~
|
||||
This is a corridor. There are no light sources! The corridor
|
||||
continues North. A door leads South. There is shelves full of books
|
||||
everywhere! Let's hope you don't get lost here.
|
||||
~
|
||||
492 ad 0 0 0 0
|
||||
D0
|
||||
The shelves continue North.
|
||||
~
|
||||
~
|
||||
0 -1 49212
|
||||
D2
|
||||
A door leads South.
|
||||
~
|
||||
~
|
||||
1 -1 49208
|
||||
S
|
||||
#49212
|
||||
A dark corridor in the Library Maze~
|
||||
This is a corridor. There are no light sources! The corridor
|
||||
continues South and West. There is shelves full of books everywhere!
|
||||
Let's hope you don't get lost here.
|
||||
~
|
||||
492 ad 0 0 0 0
|
||||
D2
|
||||
The shelves continue South.
|
||||
~
|
||||
~
|
||||
0 -1 49211
|
||||
D3
|
||||
The shelves continue West.
|
||||
~
|
||||
~
|
||||
1 -1 49213
|
||||
S
|
||||
#49213
|
||||
A dark junktion in the Library Maze~
|
||||
This is a junktion. There are no light sources! Corridors
|
||||
continue East and West. A door leads North. There is shelves full
|
||||
of books everywhere! Let's hope you don't get lost here.
|
||||
~
|
||||
492 ad 0 0 0 0
|
||||
D0
|
||||
A door leads north
|
||||
~
|
||||
~
|
||||
1 -1 49215
|
||||
D1
|
||||
The shelves continue East.
|
||||
~
|
||||
~
|
||||
0 -1 49212
|
||||
D3
|
||||
The shelves continue West.
|
||||
~
|
||||
~
|
||||
0 -1 49214
|
||||
S
|
||||
#49214
|
||||
A dark corridor in the Library Maze~
|
||||
This is a corridor. There are no light sources! The corridor
|
||||
continues East and South. There is shelves full of books everywhere!
|
||||
Let's hope you don't get lost here.
|
||||
~
|
||||
492 ad 0 0 0 0
|
||||
D1
|
||||
The shelves continue East.
|
||||
~
|
||||
~
|
||||
1 -1 49213
|
||||
D2
|
||||
The shelves continue South.
|
||||
~
|
||||
~
|
||||
0 -1 49210
|
||||
S
|
||||
#49215
|
||||
Master Ultan's Hideout~
|
||||
This seems to be a reading room. There are no light sources here!
|
||||
There are a few desks here. The room has only one exit South.
|
||||
~
|
||||
492 d 0 0 0 0
|
||||
D2
|
||||
A door leads South.
|
||||
~
|
||||
~
|
||||
1 -1 49213
|
||||
S
|
||||
$
|
||||
@@ -38,6 +38,7 @@
|
||||
44.wld
|
||||
45.wld
|
||||
46.wld
|
||||
49.wld
|
||||
50.wld
|
||||
51.wld
|
||||
52.wld
|
||||
@@ -183,6 +184,8 @@
|
||||
343.wld
|
||||
345.wld
|
||||
346.wld
|
||||
491.wld
|
||||
492.wld
|
||||
555.wld
|
||||
556.wld
|
||||
653.wld
|
||||
|
||||
7
lib/world/zon/49.zon
Normal file
7
lib/world/zon/49.zon
Normal file
@@ -0,0 +1,7 @@
|
||||
#49
|
||||
GrenzlandMUD~
|
||||
Grenzland~
|
||||
4900 4999 15 2 d 0 0 0 1 33
|
||||
S
|
||||
$
|
||||
|
||||
21
lib/world/zon/491.zon
Normal file
21
lib/world/zon/491.zon
Normal file
@@ -0,0 +1,21 @@
|
||||
#491
|
||||
GrenzlandMUD~
|
||||
Grenzland Building~
|
||||
49100 49199 15 2 d 0 0 0 1 33
|
||||
M 0 49100 1 49100 (the waiter)
|
||||
G 1 4901 100 -1 (a bottle)
|
||||
G 1 4902 100 -1 (a bottle)
|
||||
G 1 4903 100 -1 (a bottle)
|
||||
G 1 4904 100 -1 (a bottle)
|
||||
M 0 49102 1 49101 (the shopkeeper)
|
||||
G 1 4905 50 -1 (a zine)
|
||||
R 0 49101 4900 -1 (a bulletin board)
|
||||
O 0 4900 99 49101 (a bulletin board)
|
||||
R 0 49103 49103 -1 (a sink)
|
||||
O 0 49103 99 49103 (a sink)
|
||||
R 0 49104 49104 -1 (a key)
|
||||
D 0 49110 1 2
|
||||
D 0 49111 3 2
|
||||
D 0 49112 0 1
|
||||
S
|
||||
$
|
||||
21
lib/world/zon/491.zon.save
Normal file
21
lib/world/zon/491.zon.save
Normal file
@@ -0,0 +1,21 @@
|
||||
#491
|
||||
GrenzlandMUD~
|
||||
Grenzland Building~
|
||||
49100 49199 15 2 d 0 0 0 1 33
|
||||
M 0 49100 1 49100 (the waiter)
|
||||
G 1 4901 100 -1 (a bottle)
|
||||
G 1 4902 100 -1 (a bottle)
|
||||
G 1 4903 100 -1 (a bottle)
|
||||
G 1 4904 100 -1 (a bottle)
|
||||
M 0 4901 1 49102 (the waiter)
|
||||
G 1 4905 100 -1 (a zine)
|
||||
R 0 49101 4900 -1 (a bulletin board)
|
||||
O 0 4900 99 49101 (a bulletin board)
|
||||
R 0 49103 49103 -1 (a sink)
|
||||
O 0 49103 99 49103 (a sink)
|
||||
R 0 49104 49104 -1 (a key)
|
||||
D 0 49110 1 2
|
||||
D 0 49111 3 2
|
||||
D 0 49112 0 1
|
||||
S
|
||||
$
|
||||
35
lib/world/zon/492.zon
Normal file
35
lib/world/zon/492.zon
Normal file
@@ -0,0 +1,35 @@
|
||||
#492
|
||||
GrenzlandMUD~
|
||||
The Library Maze~
|
||||
49200 49299 15 2 d 0 0 0 1 7
|
||||
M 0 49200 8 49200 (a book worm)
|
||||
M 0 49200 8 49201 (a book worm)
|
||||
M 0 49200 8 49201 (a book worm)
|
||||
M 0 49200 8 49202 (a book worm)
|
||||
M 0 49201 5 49202 (an apprentice)
|
||||
M 0 49201 5 49203 (an apprentice)
|
||||
M 0 49200 8 49205 (a book worm)
|
||||
M 0 49202 2 49206 (a journeyman)
|
||||
E 1 4906 99 16 (a dagger)
|
||||
M 0 49200 8 49207 (a book worm)
|
||||
M 0 49200 8 49208 (a book worm)
|
||||
M 0 49201 5 49209 (an apprentice)
|
||||
E 1 4906 99 16 (a dagger)
|
||||
M 0 49203 3 49210 (a book thief)
|
||||
M 0 49203 3 49212 (a book thief)
|
||||
M 0 49202 2 49213 (a journeyman)
|
||||
E 1 4906 99 16 (a dagger)
|
||||
M 0 49204 1 49215 (master ultan)
|
||||
E 1 4906 99 16 (a dagger)
|
||||
G 1 4905 99 -1 (the grenzland zine)
|
||||
D 0 49200 2 1
|
||||
D 0 49203 0 1
|
||||
D 0 49205 2 1
|
||||
D 0 49206 0 1
|
||||
D 0 49208 0 1
|
||||
D 0 49210 2 1
|
||||
D 0 49211 2 1
|
||||
D 0 49213 0 1
|
||||
D 0 49215 2 1
|
||||
S
|
||||
$
|
||||
@@ -38,6 +38,7 @@
|
||||
44.zon
|
||||
45.zon
|
||||
46.zon
|
||||
49.zon
|
||||
50.zon
|
||||
51.zon
|
||||
52.zon
|
||||
@@ -183,6 +184,8 @@
|
||||
343.zon
|
||||
345.zon
|
||||
346.zon
|
||||
491.zon
|
||||
492.zon
|
||||
555.zon
|
||||
556.zon
|
||||
653.zon
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
This directory is for log files.
|
||||
0
log/badpws
Normal file
0
log/badpws
Normal file
0
log/delete
Normal file
0
log/delete
Normal file
13
log/errors
Normal file
13
log/errors
Normal file
@@ -0,0 +1,13 @@
|
||||
SYSERR: bind: Address already in use
|
||||
SYSERR: bind: Address already in use
|
||||
SYSERR: bind: Address already in use
|
||||
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
|
||||
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
|
||||
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
|
||||
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
|
||||
Jan 26 21:34:42 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
|
||||
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
|
||||
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
|
||||
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
|
||||
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
|
||||
Jan 26 21:38:19 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
|
||||
0
log/godcmds
Normal file
0
log/godcmds
Normal file
0
log/levels
Normal file
0
log/levels
Normal file
1
log/newplayers
Normal file
1
log/newplayers
Normal file
@@ -0,0 +1 @@
|
||||
Jan 26 21:36:53 2026 :: Karrn [localhost] new player.
|
||||
0
log/rentgone
Normal file
0
log/rentgone
Normal file
5
log/restarts
Normal file
5
log/restarts
Normal file
@@ -0,0 +1,5 @@
|
||||
Jan 26 21:00:54 2026 :: Running game on port 4000.
|
||||
Jan 26 21:17:40 2026 :: Running game on port 4000.
|
||||
Jan 26 21:25:55 2026 :: Running game on port 4000.
|
||||
Jan 26 21:34:13 2026 :: Running game on port 4000.
|
||||
Jan 26 21:34:49 2026 :: Running game on port 4000.
|
||||
265
log/syslog.1
Normal file
265
log/syslog.1
Normal file
@@ -0,0 +1,265 @@
|
||||
autorun starting game Mo 26. Jan 21:34:13 CET 2026
|
||||
running bin/circle -q 4000
|
||||
nohup: Eingabe wird ignoriert
|
||||
No etc/config file, using defaults: No such file or directory
|
||||
Jan 26 21:34:13 2026 :: Loading configuration.
|
||||
Jan 26 21:34:13 2026 :: tbaMUD 2025
|
||||
Jan 26 21:34:13 2026 :: Using lib as data directory.
|
||||
Jan 26 21:34:13 2026 :: Running game on port 4000.
|
||||
Jan 26 21:34:13 2026 :: Finding player limit.
|
||||
Jan 26 21:34:13 2026 :: Setting player limit to 300 using rlimit.
|
||||
Jan 26 21:34:13 2026 :: Opening mother connection.
|
||||
Jan 26 21:34:13 2026 :: Binding to all IP interfaces on this host.
|
||||
Jan 26 21:34:13 2026 :: Boot db -- BEGIN.
|
||||
Jan 26 21:34:13 2026 :: Resetting the game time:
|
||||
Jan 26 21:34:13 2026 :: No time file 'etc/time' starting from the beginning.
|
||||
Jan 26 21:34:13 2026 :: Current Gametime: 23H 29D 15M 1044Y.
|
||||
Jan 26 21:34:13 2026 :: Initialize Global Lists
|
||||
Jan 26 21:34:13 2026 :: Initializing Events
|
||||
Jan 26 21:34:13 2026 :: Reading news, credits, help, ihelp, bground, info & motds.
|
||||
Jan 26 21:34:13 2026 :: Loading spell definitions.
|
||||
Jan 26 21:34:13 2026 :: Loading zone table.
|
||||
Jan 26 21:34:13 2026 :: 192 zones, 13824 bytes.
|
||||
Jan 26 21:34:13 2026 :: Loading triggers and generating index.
|
||||
Jan 26 21:34:13 2026 :: Loading rooms.
|
||||
Jan 26 21:34:14 2026 :: 12758 rooms, 2347472 bytes.
|
||||
Jan 26 21:34:14 2026 :: Renumbering rooms.
|
||||
Jan 26 21:34:14 2026 :: Checking start rooms.
|
||||
Jan 26 21:34:14 2026 :: Loading mobs and generating index.
|
||||
Jan 26 21:34:14 2026 :: 3712 mobs, 118784 bytes in index, 2138112 bytes in prototypes.
|
||||
Jan 26 21:34:14 2026 :: Loading objs and generating index.
|
||||
Jan 26 21:34:14 2026 :: 4774 objs, 152768 bytes in index, 1145760 bytes in prototypes.
|
||||
Jan 26 21:34:14 2026 :: Renumbering zone table.
|
||||
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
|
||||
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
|
||||
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
|
||||
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
|
||||
Jan 26 21:34:14 2026 :: Loading shops.
|
||||
Jan 26 21:34:14 2026 :: Loading quests.
|
||||
Jan 26 21:34:14 2026 :: 1 entries, 128 bytes.
|
||||
Jan 26 21:34:14 2026 :: Loading help entries.
|
||||
Jan 26 21:34:14 2026 :: 2640 entries, 84480 bytes.
|
||||
Jan 26 21:34:14 2026 :: Generating player index.
|
||||
Jan 26 21:34:14 2026 :: Loading fight messages.
|
||||
Jan 26 21:34:14 2026 :: Loaded 37 Combat Messages...
|
||||
Jan 26 21:34:14 2026 :: Loading social messages.
|
||||
Jan 26 21:34:14 2026 :: Social table contains 490 socials.
|
||||
Jan 26 21:34:14 2026 :: Building command list.
|
||||
Jan 26 21:34:14 2026 :: Command info rebuilt, 766 total commands.
|
||||
Jan 26 21:34:14 2026 :: Assigning function pointers:
|
||||
Jan 26 21:34:14 2026 :: Mobiles.
|
||||
Jan 26 21:34:14 2026 :: Shopkeepers.
|
||||
Jan 26 21:34:14 2026 :: Objects.
|
||||
Jan 26 21:34:14 2026 :: Rooms.
|
||||
Jan 26 21:34:14 2026 :: Questmasters.
|
||||
Jan 26 21:34:14 2026 :: Assigning spell and skill levels.
|
||||
Jan 26 21:34:14 2026 :: Sorting command list and spells.
|
||||
Jan 26 21:34:14 2026 :: Booting mail system.
|
||||
Jan 26 21:34:14 2026 :: Mail file read -- 0 messages.
|
||||
Jan 26 21:34:14 2026 :: Reading banned site and invalid-name list.
|
||||
Jan 26 21:34:14 2026 :: Loading Ideas.
|
||||
Jan 26 21:34:14 2026 :: Loading Bugs.
|
||||
Jan 26 21:34:14 2026 :: Loading Typos.
|
||||
Jan 26 21:34:14 2026 :: Booting houses.
|
||||
Jan 26 21:34:14 2026 :: No houses to load. File 'etc/hcontrol' does not exist.
|
||||
Jan 26 21:34:14 2026 :: Cleaning up last log.
|
||||
Jan 26 21:34:14 2026 :: Resetting #0: The Builder Academy Zone (rooms 0-99).
|
||||
Jan 26 21:34:14 2026 :: Resetting #1: Sanctus (rooms 100-199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #2: Sanctus II (rooms 200-299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #3: Sanctus III (rooms 300-399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #4: Rename (rooms 400-499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #5: Newbie Farm (rooms 500-599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #6: Sea of Souls (rooms 600-699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #7: Camelot (rooms 700-799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #9: River Island of Minos (rooms 900-999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #11: Frozen Castle (rooms 1100-1199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #12: God Complex Merged with 343 (rooms 1200-1299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #13: TBA Examples (rooms 1300-1399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #14: TBA Examples II (rooms 1400-1499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #15: Straight Path (rooms 1500-1599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #16: Camelot II (rooms 1600-1699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #17: Camelot III (rooms 1700-1799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #18: Nuclear Wasteland (rooms 1800-1899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #19: Spider Swamp (rooms 1900-1999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #20: Arena (rooms 2000-2099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #22: Tower of the Undead (rooms 2200-2299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #25: High Tower of Magic (rooms 2500-2599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #26: High Tower of Magic II (rooms 2600-2699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #27: Memlin Caverns (rooms 2700-2799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #28: Mudschool (rooms 2800-2899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #30: Northern Midgaard (rooms 3000-3099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #31: Southern Midgaard (rooms 3100-3199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #32: Midgaard (rooms 3200-3299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #33: Three of Swords (rooms 3300-3399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #35: Miden'Nir (rooms 3500-3599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #36: Chessboard of Midgaard (rooms 3600-3699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #37: Capital Sewer System (rooms 3700-3799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #38: Capital Sewer System II (rooms 3800-3899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #39: Haven (rooms 3900-3999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #40: Mines of Moria (rooms 4000-4099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #41: Mines of Moria (rooms 4100-4199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #42: Dragon Chasm (rooms 4200-4299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #43: Arctic Zone (rooms 4300-4399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #44: Orc Camp (rooms 4400-4499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #45: Woodland Monastery (rooms 4500-4599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #46: Ant Hill (rooms 4600-4699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #49: Grenzland (rooms 4900-4999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #50: Great Eastern Desert (rooms 5000-5099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #51: Drow City (rooms 5100-5199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #52: City of Thalos (rooms 5200-5299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #53: Great Pyramid (rooms 5300-5399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #54: New Thalos (rooms 5400-5499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #55: New Thalos II (rooms 5500-5599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #56: New Thalos Wilderness (rooms 5600-5699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #57: Zodiac (rooms 5700-5799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #60: Haon-Dor, Light Forest (rooms 6000-6099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #61: Haon-Dor, Light Forest II (rooms 6100-6199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #62: Orc Enclave (rooms 6200-6299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #63: Arachnos (rooms 6300-6399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #64: Rand's Tower (rooms 6400-6499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #65: Dwarven Kingdom (rooms 6500-6599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #70: Sewer, First Level (rooms 7000-7099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #71: Second Sewer (rooms 7100-7199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #72: Sewer Maze (rooms 7200-7299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #73: Tunnels in the Sewer (rooms 7300-7399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #74: Newbie Graveyard (rooms 7400-7499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #75: Zamba (rooms 7500-7599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #78: Gideon (rooms 7800-7899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #79: Redferne's Residence (rooms 7900-7999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #83: Glumgold's Sea (rooms 8300-8399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #86: Duke Kalithorn's Keep (rooms 8600-8699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #90: Oasis (rooms 9000-9099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #96: Domiae (rooms 9600-9699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #100: Northern Highway (rooms 10000-10099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #101: South Road (rooms 10100-10199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #103: DBZ World (rooms 10300-10399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #104: Land of Orchan (rooms 10400-10499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #106: Elcardo (rooms 10600-10699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #107: Realms of Iuel (rooms 10700-10799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #115: Monestary Omega (rooms 11500-11599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #117: Los Torres (rooms 11700-11799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #118: The Dollhouse (rooms 11800-11899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #120: Rome (rooms 12000-12099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #125: Hannah (rooms 12500-12599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #130: Mist Maze (rooms 13000-13099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #140: Wyvern City (rooms 14000-14099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #150: King Welmar's Castle (rooms 15000-15099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #169: Gibberling Caves (rooms 16900-16999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #175: Cardinal Wizards (rooms 17500-17599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #186: Newbie Zone (rooms 18600-18699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #187: Circus (rooms 18700-18799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #200: Western Highway (rooms 20000-20099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #201: Sapphire Islands (rooms 20100-20199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #211: Tarot (rooms 21100-21199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #220: The Enchanted Kitchen (rooms 22000-22099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #232: Terringham (rooms 23200-23299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #233: Dragon Plains (rooms 23300-23399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #234: Newbie School (rooms 23400-23499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #235: Dwarven Mines (rooms 23500-23599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #236: Aldin (rooms 23600-23699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #237: Dwarven Trade Route (rooms 23700-23799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #238: Crystal Castle (rooms 23800-23899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #239: South Pass (rooms 23900-23999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #240: Dun Maura (rooms 24000-24099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #241: Starship Enterprise (rooms 24100-24199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #242: New Southern Midgaard (rooms 24200-24299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #243: Snowy Valley (rooms 24300-24399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #244: Cooland Prison (rooms 24400-24499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #245: The Nether (rooms 24500-24599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #246: The Nether II (rooms 24600-24699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #247: Graveyard (rooms 24700-24799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #248: Elven Woods (rooms 24800-24899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #249: Jedi Clan House (rooms 24900-24999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #250: DragonSpyre (rooms 25000-25099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #251: Ape Village (rooms 25100-25199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #252: Castle of the Vampyre (rooms 25200-25299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #253: Windmill (rooms 25300-25399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #254: Mordecai's Village (rooms 25400-25499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #255: Shipwreck (rooms 25500-25599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #256: Lord's Keep (rooms 25600-25699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #257: Jareth Main City (rooms 25700-25799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #258: Light Forest (rooms 25800-25899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #259: Haunted Mansion (rooms 25900-25999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #260: Grasslands (rooms 26000-26099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #261: Inna & Igor's Castle (rooms 26100-26199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #262: Forest Trails (rooms 26200-26299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #263: Farmlands (rooms 26300-26399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #264: Banshide (rooms 26400-26499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #265: Beach & Lighthouse (rooms 26500-26599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #266: Realm of Lord Ankou (rooms 26600-26699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #267: Vice Island (rooms 26700-26799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #268: Vice Island II (rooms 26800-26899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #269: Southern Desert (rooms 26900-26999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #270: Wasteland (rooms 27000-27099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #271: Sundhaven (rooms 27100-27199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #272: Sundhaven II (rooms 27200-27299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #273: Space Station Alpha (rooms 27300-27399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #274: Adria: Saint Brigid (rooms 27400-27499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #275: New Sparta (rooms 27500-27599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #276: New Sparta II (rooms 27600-27699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #277: Shire (rooms 27700-27799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #278: Oceania (rooms 27800-27899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #279: Notre Dame (rooms 27900-27999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #280: Living Motherboard (rooms 28000-28099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #281: Forest of Khanjar (rooms 28100-28199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #282: Infernal Pit of Kerjim (rooms 28200-28299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #283: Haunted House (rooms 28300-28399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #284: Ghenna (rooms 28400-28499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #285: Descent to Hell II (rooms 28500-28599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #286: Descent to Hell (rooms 28600-28699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #287: Ofingia and the Goblin Town (rooms 28700-28799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #288: Galaxy (rooms 28800-28899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #289: Werith's Wayhouse (rooms 28900-28999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #290: Lizard Lair Safari (rooms 29000-29099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #291: Black Forest (rooms 29100-29199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #292: Kerofk (rooms 29200-29299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #293: Kerofk II (rooms 29300-29399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #294: Trade Road (rooms 29400-29499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #295: Jungle (rooms 29500-29599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #296: Froboz Fun Factory (rooms 29600-29699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #298: Castle of Desire (rooms 29800-29899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #299: Abandoned Cathedral (rooms 29900-29999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #300: Ancalador (rooms 30000-30099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #301: Campus (rooms 30100-30199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #302: Campus II (rooms 30200-30299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #303: Campus III (rooms 30300-30399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #304: Temple of the Bull (rooms 30400-30499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #305: Chessboard (rooms 30500-30599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #306: Newbie Tree (rooms 30600-30699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #307: Castle (rooms 30700-30799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #308: Baron Cailveh (rooms 30800-30899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #309: Keep of Baron Westlawn (rooms 30900-30999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #310: Graye Area (rooms 31000-31099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #311: The Dragon's Teeth (rooms 31100-31199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #312: Leper Island (rooms 31200-31299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #313: Farmlands of Ofingia (rooms 31300-31399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #314: X'Raantra's Altar of Sacrifice (rooms 31400-31499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #315: McGintey Business District (rooms 31500-31599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #316: McGintey Guild Area (rooms 31600-31699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #317: Wharf (rooms 31700-31799).
|
||||
Jan 26 21:34:14 2026 :: Resetting #318: Dock Area (rooms 31800-31899).
|
||||
Jan 26 21:34:14 2026 :: Resetting #319: Yllythad Sea (rooms 31900-31999).
|
||||
Jan 26 21:34:14 2026 :: Resetting #320: Yllythad Sea II (rooms 32000-32099).
|
||||
Jan 26 21:34:14 2026 :: Resetting #321: Yllythad Sea III (rooms 32100-32199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #322: McGintey Bay (rooms 32200-32299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #323: Caverns of the Pale Man (rooms 32300-32399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #324: Army Encampment (rooms 32400-32499).
|
||||
Jan 26 21:34:14 2026 :: Resetting #325: Revelry (rooms 32500-32599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #326: Army Perimeter (rooms 32600-32699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #343: God Complex (rooms 34300-34399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #345: Asylum for the Insane (rooms 34500-34599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #346: God Hall Ext 346 for God Hall Cmplx (rooms 34600-34699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #491: Grenzland Building (rooms 49100-49199).
|
||||
Jan 26 21:34:14 2026 :: Resetting #492: The Library Maze (rooms 49200-49299).
|
||||
Jan 26 21:34:14 2026 :: Resetting #555: Ultima (rooms 55500-55599).
|
||||
Jan 26 21:34:14 2026 :: Resetting #556: Ultima II (rooms 55600-55699).
|
||||
Jan 26 21:34:14 2026 :: Resetting #653: Apartment (rooms 65300-65399).
|
||||
Jan 26 21:34:14 2026 :: Resetting #654: Subdivision (rooms 65400-65499).
|
||||
Jan 26 21:34:14 2026 :: Boot db -- DONE.
|
||||
Jan 26 21:34:14 2026 :: Signal trapping.
|
||||
Jan 26 21:34:14 2026 :: Entering game loop.
|
||||
Jan 26 21:34:14 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:34:42 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
|
||||
Quick boot mode -- rent check supressed.
|
||||
Using file descriptor for logging.
|
||||
Improper shutdown of autorun detected, rotating syslogs before startup.
|
||||
16
log/syslog.2
Normal file
16
log/syslog.2
Normal file
@@ -0,0 +1,16 @@
|
||||
autorun starting game Mo 26. Jan 21:25:55 CET 2026
|
||||
running bin/circle -q 4000
|
||||
nohup: Eingabe wird ignoriert
|
||||
No etc/config file, using defaults: No such file or directory
|
||||
Jan 26 21:25:55 2026 :: Loading configuration.
|
||||
Jan 26 21:25:55 2026 :: tbaMUD 2025
|
||||
Jan 26 21:25:55 2026 :: Using lib as data directory.
|
||||
Jan 26 21:25:55 2026 :: Running game on port 4000.
|
||||
Jan 26 21:25:55 2026 :: Finding player limit.
|
||||
Jan 26 21:25:55 2026 :: Setting player limit to 300 using rlimit.
|
||||
Jan 26 21:25:55 2026 :: Opening mother connection.
|
||||
Jan 26 21:25:55 2026 :: Binding to all IP interfaces on this host.
|
||||
SYSERR: bind: Address already in use
|
||||
Quick boot mode -- rent check supressed.
|
||||
Using file descriptor for logging.
|
||||
autoscript terminated Mo 26. Jan 21:25:55 CET 2026
|
||||
269
log/syslog.4
Normal file
269
log/syslog.4
Normal file
@@ -0,0 +1,269 @@
|
||||
autorun starting game Mo 26. Jan 21:34:49 CET 2026
|
||||
running bin/circle -q 4000
|
||||
nohup: Eingabe wird ignoriert
|
||||
No etc/config file, using defaults: No such file or directory
|
||||
Jan 26 21:34:49 2026 :: Loading configuration.
|
||||
Jan 26 21:34:49 2026 :: tbaMUD 2025
|
||||
Jan 26 21:34:49 2026 :: Using lib as data directory.
|
||||
Jan 26 21:34:49 2026 :: Running game on port 4000.
|
||||
Jan 26 21:34:49 2026 :: Finding player limit.
|
||||
Jan 26 21:34:49 2026 :: Setting player limit to 300 using rlimit.
|
||||
Jan 26 21:34:49 2026 :: Opening mother connection.
|
||||
Jan 26 21:34:49 2026 :: Binding to all IP interfaces on this host.
|
||||
Jan 26 21:34:49 2026 :: Boot db -- BEGIN.
|
||||
Jan 26 21:34:49 2026 :: Resetting the game time:
|
||||
Jan 26 21:34:49 2026 :: No time file 'etc/time' starting from the beginning.
|
||||
Jan 26 21:34:49 2026 :: Current Gametime: 23H 29D 15M 1044Y.
|
||||
Jan 26 21:34:49 2026 :: Initialize Global Lists
|
||||
Jan 26 21:34:49 2026 :: Initializing Events
|
||||
Jan 26 21:34:49 2026 :: Reading news, credits, help, ihelp, bground, info & motds.
|
||||
Jan 26 21:34:49 2026 :: Loading spell definitions.
|
||||
Jan 26 21:34:49 2026 :: Loading zone table.
|
||||
Jan 26 21:34:49 2026 :: 192 zones, 13824 bytes.
|
||||
Jan 26 21:34:49 2026 :: Loading triggers and generating index.
|
||||
Jan 26 21:34:49 2026 :: Loading rooms.
|
||||
Jan 26 21:34:49 2026 :: 12758 rooms, 2347472 bytes.
|
||||
Jan 26 21:34:49 2026 :: Renumbering rooms.
|
||||
Jan 26 21:34:49 2026 :: Checking start rooms.
|
||||
Jan 26 21:34:49 2026 :: Loading mobs and generating index.
|
||||
Jan 26 21:34:49 2026 :: 3712 mobs, 118784 bytes in index, 2138112 bytes in prototypes.
|
||||
Jan 26 21:34:49 2026 :: Loading objs and generating index.
|
||||
Jan 26 21:34:49 2026 :: 4774 objs, 152768 bytes in index, 1145760 bytes in prototypes.
|
||||
Jan 26 21:34:49 2026 :: Renumbering zone table.
|
||||
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
|
||||
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
|
||||
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
|
||||
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
|
||||
Jan 26 21:34:49 2026 :: Loading shops.
|
||||
Jan 26 21:34:49 2026 :: Loading quests.
|
||||
Jan 26 21:34:49 2026 :: 1 entries, 128 bytes.
|
||||
Jan 26 21:34:49 2026 :: Loading help entries.
|
||||
Jan 26 21:34:49 2026 :: 2640 entries, 84480 bytes.
|
||||
Jan 26 21:34:49 2026 :: Generating player index.
|
||||
Jan 26 21:34:49 2026 :: Loading fight messages.
|
||||
Jan 26 21:34:49 2026 :: Loaded 37 Combat Messages...
|
||||
Jan 26 21:34:49 2026 :: Loading social messages.
|
||||
Jan 26 21:34:49 2026 :: Social table contains 490 socials.
|
||||
Jan 26 21:34:49 2026 :: Building command list.
|
||||
Jan 26 21:34:49 2026 :: Command info rebuilt, 766 total commands.
|
||||
Jan 26 21:34:49 2026 :: Assigning function pointers:
|
||||
Jan 26 21:34:49 2026 :: Mobiles.
|
||||
Jan 26 21:34:49 2026 :: Shopkeepers.
|
||||
Jan 26 21:34:49 2026 :: Objects.
|
||||
Jan 26 21:34:49 2026 :: Rooms.
|
||||
Jan 26 21:34:49 2026 :: Questmasters.
|
||||
Jan 26 21:34:49 2026 :: Assigning spell and skill levels.
|
||||
Jan 26 21:34:49 2026 :: Sorting command list and spells.
|
||||
Jan 26 21:34:49 2026 :: Booting mail system.
|
||||
Jan 26 21:34:49 2026 :: Mail file read -- 0 messages.
|
||||
Jan 26 21:34:49 2026 :: Reading banned site and invalid-name list.
|
||||
Jan 26 21:34:49 2026 :: Loading Ideas.
|
||||
Jan 26 21:34:49 2026 :: Loading Bugs.
|
||||
Jan 26 21:34:49 2026 :: Loading Typos.
|
||||
Jan 26 21:34:49 2026 :: Booting houses.
|
||||
Jan 26 21:34:49 2026 :: No houses to load. File 'etc/hcontrol' does not exist.
|
||||
Jan 26 21:34:49 2026 :: Cleaning up last log.
|
||||
Jan 26 21:34:49 2026 :: Resetting #0: The Builder Academy Zone (rooms 0-99).
|
||||
Jan 26 21:34:49 2026 :: Resetting #1: Sanctus (rooms 100-199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #2: Sanctus II (rooms 200-299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #3: Sanctus III (rooms 300-399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #4: Rename (rooms 400-499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #5: Newbie Farm (rooms 500-599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #6: Sea of Souls (rooms 600-699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #7: Camelot (rooms 700-799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #9: River Island of Minos (rooms 900-999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #11: Frozen Castle (rooms 1100-1199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #12: God Complex Merged with 343 (rooms 1200-1299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #13: TBA Examples (rooms 1300-1399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #14: TBA Examples II (rooms 1400-1499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #15: Straight Path (rooms 1500-1599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #16: Camelot II (rooms 1600-1699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #17: Camelot III (rooms 1700-1799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #18: Nuclear Wasteland (rooms 1800-1899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #19: Spider Swamp (rooms 1900-1999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #20: Arena (rooms 2000-2099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #22: Tower of the Undead (rooms 2200-2299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #25: High Tower of Magic (rooms 2500-2599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #26: High Tower of Magic II (rooms 2600-2699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #27: Memlin Caverns (rooms 2700-2799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #28: Mudschool (rooms 2800-2899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #30: Northern Midgaard (rooms 3000-3099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #31: Southern Midgaard (rooms 3100-3199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #32: Midgaard (rooms 3200-3299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #33: Three of Swords (rooms 3300-3399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #35: Miden'Nir (rooms 3500-3599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #36: Chessboard of Midgaard (rooms 3600-3699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #37: Capital Sewer System (rooms 3700-3799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #38: Capital Sewer System II (rooms 3800-3899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #39: Haven (rooms 3900-3999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #40: Mines of Moria (rooms 4000-4099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #41: Mines of Moria (rooms 4100-4199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #42: Dragon Chasm (rooms 4200-4299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #43: Arctic Zone (rooms 4300-4399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #44: Orc Camp (rooms 4400-4499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #45: Woodland Monastery (rooms 4500-4599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #46: Ant Hill (rooms 4600-4699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #49: Grenzland (rooms 4900-4999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #50: Great Eastern Desert (rooms 5000-5099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #51: Drow City (rooms 5100-5199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #52: City of Thalos (rooms 5200-5299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #53: Great Pyramid (rooms 5300-5399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #54: New Thalos (rooms 5400-5499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #55: New Thalos II (rooms 5500-5599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #56: New Thalos Wilderness (rooms 5600-5699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #57: Zodiac (rooms 5700-5799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #60: Haon-Dor, Light Forest (rooms 6000-6099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #61: Haon-Dor, Light Forest II (rooms 6100-6199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #62: Orc Enclave (rooms 6200-6299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #63: Arachnos (rooms 6300-6399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #64: Rand's Tower (rooms 6400-6499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #65: Dwarven Kingdom (rooms 6500-6599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #70: Sewer, First Level (rooms 7000-7099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #71: Second Sewer (rooms 7100-7199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #72: Sewer Maze (rooms 7200-7299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #73: Tunnels in the Sewer (rooms 7300-7399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #74: Newbie Graveyard (rooms 7400-7499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #75: Zamba (rooms 7500-7599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #78: Gideon (rooms 7800-7899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #79: Redferne's Residence (rooms 7900-7999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #83: Glumgold's Sea (rooms 8300-8399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #86: Duke Kalithorn's Keep (rooms 8600-8699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #90: Oasis (rooms 9000-9099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #96: Domiae (rooms 9600-9699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #100: Northern Highway (rooms 10000-10099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #101: South Road (rooms 10100-10199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #103: DBZ World (rooms 10300-10399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #104: Land of Orchan (rooms 10400-10499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #106: Elcardo (rooms 10600-10699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #107: Realms of Iuel (rooms 10700-10799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #115: Monestary Omega (rooms 11500-11599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #117: Los Torres (rooms 11700-11799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #118: The Dollhouse (rooms 11800-11899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #120: Rome (rooms 12000-12099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #125: Hannah (rooms 12500-12599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #130: Mist Maze (rooms 13000-13099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #140: Wyvern City (rooms 14000-14099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #150: King Welmar's Castle (rooms 15000-15099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #169: Gibberling Caves (rooms 16900-16999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #175: Cardinal Wizards (rooms 17500-17599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #186: Newbie Zone (rooms 18600-18699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #187: Circus (rooms 18700-18799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #200: Western Highway (rooms 20000-20099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #201: Sapphire Islands (rooms 20100-20199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #211: Tarot (rooms 21100-21199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #220: The Enchanted Kitchen (rooms 22000-22099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #232: Terringham (rooms 23200-23299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #233: Dragon Plains (rooms 23300-23399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #234: Newbie School (rooms 23400-23499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #235: Dwarven Mines (rooms 23500-23599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #236: Aldin (rooms 23600-23699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #237: Dwarven Trade Route (rooms 23700-23799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #238: Crystal Castle (rooms 23800-23899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #239: South Pass (rooms 23900-23999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #240: Dun Maura (rooms 24000-24099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #241: Starship Enterprise (rooms 24100-24199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #242: New Southern Midgaard (rooms 24200-24299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #243: Snowy Valley (rooms 24300-24399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #244: Cooland Prison (rooms 24400-24499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #245: The Nether (rooms 24500-24599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #246: The Nether II (rooms 24600-24699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #247: Graveyard (rooms 24700-24799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #248: Elven Woods (rooms 24800-24899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #249: Jedi Clan House (rooms 24900-24999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #250: DragonSpyre (rooms 25000-25099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #251: Ape Village (rooms 25100-25199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #252: Castle of the Vampyre (rooms 25200-25299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #253: Windmill (rooms 25300-25399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #254: Mordecai's Village (rooms 25400-25499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #255: Shipwreck (rooms 25500-25599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #256: Lord's Keep (rooms 25600-25699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #257: Jareth Main City (rooms 25700-25799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #258: Light Forest (rooms 25800-25899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #259: Haunted Mansion (rooms 25900-25999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #260: Grasslands (rooms 26000-26099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #261: Inna & Igor's Castle (rooms 26100-26199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #262: Forest Trails (rooms 26200-26299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #263: Farmlands (rooms 26300-26399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #264: Banshide (rooms 26400-26499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #265: Beach & Lighthouse (rooms 26500-26599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #266: Realm of Lord Ankou (rooms 26600-26699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #267: Vice Island (rooms 26700-26799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #268: Vice Island II (rooms 26800-26899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #269: Southern Desert (rooms 26900-26999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #270: Wasteland (rooms 27000-27099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #271: Sundhaven (rooms 27100-27199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #272: Sundhaven II (rooms 27200-27299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #273: Space Station Alpha (rooms 27300-27399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #274: Adria: Saint Brigid (rooms 27400-27499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #275: New Sparta (rooms 27500-27599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #276: New Sparta II (rooms 27600-27699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #277: Shire (rooms 27700-27799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #278: Oceania (rooms 27800-27899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #279: Notre Dame (rooms 27900-27999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #280: Living Motherboard (rooms 28000-28099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #281: Forest of Khanjar (rooms 28100-28199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #282: Infernal Pit of Kerjim (rooms 28200-28299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #283: Haunted House (rooms 28300-28399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #284: Ghenna (rooms 28400-28499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #285: Descent to Hell II (rooms 28500-28599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #286: Descent to Hell (rooms 28600-28699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #287: Ofingia and the Goblin Town (rooms 28700-28799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #288: Galaxy (rooms 28800-28899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #289: Werith's Wayhouse (rooms 28900-28999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #290: Lizard Lair Safari (rooms 29000-29099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #291: Black Forest (rooms 29100-29199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #292: Kerofk (rooms 29200-29299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #293: Kerofk II (rooms 29300-29399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #294: Trade Road (rooms 29400-29499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #295: Jungle (rooms 29500-29599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #296: Froboz Fun Factory (rooms 29600-29699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #298: Castle of Desire (rooms 29800-29899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #299: Abandoned Cathedral (rooms 29900-29999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #300: Ancalador (rooms 30000-30099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #301: Campus (rooms 30100-30199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #302: Campus II (rooms 30200-30299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #303: Campus III (rooms 30300-30399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #304: Temple of the Bull (rooms 30400-30499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #305: Chessboard (rooms 30500-30599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #306: Newbie Tree (rooms 30600-30699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #307: Castle (rooms 30700-30799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #308: Baron Cailveh (rooms 30800-30899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #309: Keep of Baron Westlawn (rooms 30900-30999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #310: Graye Area (rooms 31000-31099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #311: The Dragon's Teeth (rooms 31100-31199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #312: Leper Island (rooms 31200-31299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #313: Farmlands of Ofingia (rooms 31300-31399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #314: X'Raantra's Altar of Sacrifice (rooms 31400-31499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #315: McGintey Business District (rooms 31500-31599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #316: McGintey Guild Area (rooms 31600-31699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #317: Wharf (rooms 31700-31799).
|
||||
Jan 26 21:34:49 2026 :: Resetting #318: Dock Area (rooms 31800-31899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #319: Yllythad Sea (rooms 31900-31999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #320: Yllythad Sea II (rooms 32000-32099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #321: Yllythad Sea III (rooms 32100-32199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #322: McGintey Bay (rooms 32200-32299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #323: Caverns of the Pale Man (rooms 32300-32399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #324: Army Encampment (rooms 32400-32499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #325: Revelry (rooms 32500-32599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #326: Army Perimeter (rooms 32600-32699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #343: God Complex (rooms 34300-34399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #345: Asylum for the Insane (rooms 34500-34599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #346: God Hall Ext 346 for God Hall Cmplx (rooms 34600-34699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #491: Grenzland Building (rooms 49100-49199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #492: The Library Maze (rooms 49200-49299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #555: Ultima (rooms 55500-55599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #556: Ultima II (rooms 55600-55699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #653: Apartment (rooms 65300-65399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #654: Subdivision (rooms 65400-65499).
|
||||
Jan 26 21:34:49 2026 :: Boot db -- DONE.
|
||||
Jan 26 21:34:49 2026 :: Signal trapping.
|
||||
Jan 26 21:34:49 2026 :: Entering game loop.
|
||||
Jan 26 21:34:49 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:36:26 2026 :: New connection. Waking up.
|
||||
Jan 26 21:36:53 2026 :: Karrn [localhost] new player.
|
||||
Jan 26 21:37:11 2026 :: Karrn had no variable file
|
||||
Jan 26 21:37:11 2026 :: Karrn entering game with no equipment.
|
||||
Jan 26 21:38:19 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
|
||||
Quick boot mode -- rent check supressed.
|
||||
Using file descriptor for logging.
|
||||
Improper shutdown of autorun detected, rotating syslogs before startup.
|
||||
2
log/trigger
Normal file
2
log/trigger
Normal file
@@ -0,0 +1,2 @@
|
||||
Jan 26 21:34:13 2026 :: Loading triggers and generating index.
|
||||
Jan 26 21:34:49 2026 :: Loading triggers and generating index.
|
||||
81
power_curve.ipynb
Normal file
81
power_curve.ipynb
Normal file
File diff suppressed because one or more lines are too long
@@ -150,39 +150,7 @@ ACMD(do_tell)
|
||||
|
||||
if (!*buf || !*buf2)
|
||||
send_to_char(ch, "Who do you wish to tell what??\r\n");
|
||||
else if (!strcmp(buf, "m-w")) {
|
||||
#ifdef CIRCLE_WINDOWS
|
||||
/* getpid() is not portable */
|
||||
send_to_char(ch, "Sorry, that is not available in the windows port.\r\n");
|
||||
#else /* all other configurations */
|
||||
char word[MAX_INPUT_LENGTH], *p, *q;
|
||||
|
||||
if (last_webster_teller != -1L) {
|
||||
if (GET_IDNUM(ch) == last_webster_teller) {
|
||||
send_to_char(ch, "You are still waiting for a response.\r\n");
|
||||
return;
|
||||
} else {
|
||||
send_to_char(ch, "Hold on, m-w is busy. Try again in a couple of seconds.\r\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Only a-z and +/- allowed. */
|
||||
for (p = buf2, q = word; *p ; p++)
|
||||
if ((LOWER(*p) <= 'z' && LOWER(*p) >= 'a') || (*p == '+') || (*p == '-'))
|
||||
*q++ = *p;
|
||||
|
||||
*q = '\0';
|
||||
|
||||
if (!*word) {
|
||||
send_to_char(ch, "Sorry, only letters and +/- are allowed characters.\r\n");
|
||||
return;
|
||||
}
|
||||
snprintf(buf, sizeof(buf), "../bin/webster %s %d &", word, (int) getpid());
|
||||
last_webster_teller = GET_IDNUM(ch);
|
||||
send_to_char(ch, "You look up '%s' in Merriam-Webster.\r\n", word);
|
||||
#endif /* platform specific part */
|
||||
} else if (GET_LEVEL(ch) < LVL_IMMORT && !(vict = get_player_vis(ch, buf, NULL, FIND_CHAR_WORLD)))
|
||||
else if (GET_LEVEL(ch) < LVL_IMMORT && !(vict = get_player_vis(ch, buf, NULL, FIND_CHAR_WORLD)))
|
||||
send_to_char(ch, "%s", CONFIG_NOPERSON);
|
||||
else if (GET_LEVEL(ch) >= LVL_IMMORT && !(vict = get_char_vis(ch, buf, NULL, FIND_CHAR_WORLD)))
|
||||
send_to_char(ch, "%s", CONFIG_NOPERSON);
|
||||
|
||||
@@ -46,10 +46,10 @@ static void list_obj_to_char(struct obj_data *list, struct char_data *ch, int mo
|
||||
static void show_obj_to_char(struct obj_data *obj, struct char_data *ch, int mode);
|
||||
static void show_obj_modifiers(struct obj_data *obj, struct char_data *ch);
|
||||
/* do_where utility functions */
|
||||
static void perform_immort_where(struct char_data *ch, char *arg);
|
||||
static void perform_immort_where(char_data *ch, const char *arg);
|
||||
static void perform_mortal_where(struct char_data *ch, char *arg);
|
||||
static void print_object_location(int num, struct obj_data *obj, struct char_data *ch, int recur);
|
||||
|
||||
static size_t print_object_location(int num, const obj_data *obj, const char_data *ch,
|
||||
char *buf, size_t len, size_t buf_size, int recur);
|
||||
/* Subcommands */
|
||||
/* For show_obj_to_char 'mode'. /-- arbitrary */
|
||||
#define SHOW_OBJ_LONG 0
|
||||
@@ -1603,41 +1603,71 @@ static void perform_mortal_where(struct char_data *ch, char *arg)
|
||||
}
|
||||
}
|
||||
|
||||
static void print_object_location(int num, struct obj_data *obj, struct char_data *ch,
|
||||
int recur)
|
||||
static size_t print_object_location(const int num, const obj_data *obj, const char_data *ch, // NOLINT(*-no-recursion)
|
||||
char *buf, size_t len, const size_t buf_size, const int recur)
|
||||
{
|
||||
size_t nlen = 0;
|
||||
|
||||
if (num > 0)
|
||||
send_to_char(ch, "O%3d. %-25s%s - ", num, obj->short_description, QNRM);
|
||||
nlen = snprintf(buf + len, buf_size - len, "O%4d. %-25s%s - ", num, obj->short_description, QNRM);
|
||||
else
|
||||
send_to_char(ch, "%33s", " - ");
|
||||
nlen = snprintf(buf + len, buf_size - len, "%37s", " - ");
|
||||
|
||||
len += nlen;
|
||||
nlen = 0;
|
||||
if (len > buf_size)
|
||||
return len; // let the caller know we overflowed
|
||||
|
||||
if (SCRIPT(obj)) {
|
||||
if (!TRIGGERS(SCRIPT(obj))->next)
|
||||
send_to_char(ch, "[T%d] ", GET_TRIG_VNUM(TRIGGERS(SCRIPT(obj))));
|
||||
nlen = snprintf(buf + len, buf_size - len, "[T%d] ", GET_TRIG_VNUM(TRIGGERS(SCRIPT(obj))));
|
||||
else
|
||||
send_to_char(ch, "[TRIGS] ");
|
||||
nlen = snprintf(buf + len, buf_size - len, "[TRIGS] ");
|
||||
}
|
||||
|
||||
len += nlen;
|
||||
if (len > buf_size)
|
||||
return len; // let the caller know we overflowed
|
||||
|
||||
if (IN_ROOM(obj) != NOWHERE)
|
||||
send_to_char(ch, "[%5d] %s%s\r\n", GET_ROOM_VNUM(IN_ROOM(obj)), world[IN_ROOM(obj)].name, QNRM);
|
||||
else if (obj->carried_by)
|
||||
send_to_char(ch, "carried by %s%s\r\n", PERS(obj->carried_by, ch), QNRM);
|
||||
else if (obj->worn_by)
|
||||
send_to_char(ch, "worn by %s%s\r\n", PERS(obj->worn_by, ch), QNRM);
|
||||
else if (obj->in_obj) {
|
||||
send_to_char(ch, "inside %s%s%s\r\n", obj->in_obj->short_description, QNRM, (recur ? ", which is" : " "));
|
||||
if (recur)
|
||||
print_object_location(0, obj->in_obj, ch, recur);
|
||||
nlen = snprintf(buf + len, buf_size - len, "[%5d] %s%s\r\n", GET_ROOM_VNUM(IN_ROOM(obj)), world[IN_ROOM(obj)].name, QNRM);
|
||||
else if (obj->carried_by) {
|
||||
if (PRF_FLAGGED(ch, PRF_SHOWVNUMS))
|
||||
nlen = snprintf(buf + len, buf_size - len, "carried by [%5d] %s%s\r\n", GET_MOB_VNUM(obj->carried_by), PERS(obj->carried_by, ch), QNRM);
|
||||
else
|
||||
nlen = snprintf(buf + len, buf_size - len, "carried by %s%s\r\n", PERS(obj->carried_by, ch), QNRM);
|
||||
if (PRF_FLAGGED(ch, PRF_VERBOSE) && IN_ROOM(obj->carried_by) != NOWHERE && len + nlen < buf_size)
|
||||
nlen += snprintf(buf + len + nlen, buf_size - len - nlen, "%37sin [%5d] %s%s\r\n", " - ", GET_ROOM_VNUM(IN_ROOM(obj->carried_by)), world[IN_ROOM(obj->carried_by)].name, QNRM);
|
||||
} else if (obj->worn_by) {
|
||||
if (PRF_FLAGGED(ch, PRF_SHOWVNUMS))
|
||||
nlen = snprintf(buf + len, buf_size - len, "worn by [%5d] %s%s\r\n", GET_MOB_VNUM(obj->worn_by), PERS(obj->worn_by, ch), QNRM);
|
||||
else
|
||||
nlen = snprintf(buf + len, buf_size - len, "worn by %s%s\r\n", PERS(obj->worn_by, ch), QNRM);
|
||||
if (PRF_FLAGGED(ch, PRF_VERBOSE) && IN_ROOM(obj->worn_by) != NOWHERE && len + nlen < buf_size)
|
||||
nlen += snprintf(buf + len + nlen, buf_size - len - nlen, "%37sin [%5d] %s%s\r\n", " - ", GET_ROOM_VNUM(IN_ROOM(obj->worn_by)), world[IN_ROOM(obj->worn_by)].name, QNRM);
|
||||
} else if (obj->in_obj) {
|
||||
nlen = snprintf(buf + len, buf_size - len, "inside %s%s%s\r\n", obj->in_obj->short_description, QNRM, (recur ? ", which is" : " "));
|
||||
if (recur && nlen + len < buf_size) {
|
||||
len += nlen;
|
||||
nlen = 0;
|
||||
len = print_object_location(0, obj->in_obj, ch, buf, len, buf_size, recur);
|
||||
}
|
||||
} else
|
||||
send_to_char(ch, "in an unknown location\r\n");
|
||||
nlen = snprintf(buf + len, buf_size - len, "in an unknown location\r\n");
|
||||
len += nlen;
|
||||
return len;
|
||||
}
|
||||
|
||||
static void perform_immort_where(struct char_data *ch, char *arg)
|
||||
static void perform_immort_where(char_data *ch, const char *arg)
|
||||
{
|
||||
struct char_data *i;
|
||||
struct obj_data *k;
|
||||
char_data *i;
|
||||
obj_data *k;
|
||||
struct descriptor_data *d;
|
||||
int num = 0, found = 0;
|
||||
int num = 0, found = FALSE; // "num" here needs to match the lookup in do_stat, so "stat 4.sword" finds the right one
|
||||
const char *error_message = "\r\n***OVERFLOW***\r\n";
|
||||
char buf[MAX_STRING_LENGTH];
|
||||
size_t len = 0, nlen = 0;
|
||||
const size_t buf_size = sizeof(buf) - strlen(error_message) - 1;
|
||||
|
||||
if (!*arg) {
|
||||
send_to_char(ch, "Players Room Location Zone\r\n");
|
||||
@@ -1658,26 +1688,64 @@ static void perform_immort_where(struct char_data *ch, char *arg)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (PRF_FLAGGED(ch, PRF_VERBOSE))
|
||||
len = snprintf(buf, buf_size, " ### Mob name - Room # Room name\r\n");
|
||||
|
||||
for (i = character_list; i; i = i->next)
|
||||
if (CAN_SEE(ch, i) && IN_ROOM(i) != NOWHERE && isname(arg, i->player.name)) {
|
||||
found = 1;
|
||||
send_to_char(ch, "M%3d. %-25s%s - [%5d] %-25s%s", ++num, GET_NAME(i), QNRM,
|
||||
nlen = snprintf(buf + len, buf_size - len, "M%4d. %-25s%s - [%5d] %-25s%s", ++num, GET_NAME(i), QNRM,
|
||||
GET_ROOM_VNUM(IN_ROOM(i)), world[IN_ROOM(i)].name, QNRM);
|
||||
if (len + nlen >= buf_size) {
|
||||
len += snprintf(buf + len, buf_size - len, "%s", error_message);
|
||||
break;
|
||||
}
|
||||
len += nlen;
|
||||
if (SCRIPT(i) && TRIGGERS(SCRIPT(i))) {
|
||||
if (!TRIGGERS(SCRIPT(i))->next)
|
||||
send_to_char(ch, "[T%d] ", GET_TRIG_VNUM(TRIGGERS(SCRIPT(i))));
|
||||
nlen = snprintf(buf + len, buf_size - len, "[T%d]", GET_TRIG_VNUM(TRIGGERS(SCRIPT(i))));
|
||||
else
|
||||
send_to_char(ch, "[TRIGS] ");
|
||||
nlen = snprintf(buf + len, buf_size - len, "[TRIGS]");
|
||||
|
||||
if (len + nlen >= buf_size) {
|
||||
snprintf(buf + len, buf_size - len, "%s", error_message);
|
||||
break;
|
||||
}
|
||||
len += nlen;
|
||||
}
|
||||
send_to_char(ch, "%s\r\n", QNRM);
|
||||
nlen = snprintf(buf + len, buf_size - len, "%s\r\n", QNRM);
|
||||
if (len + nlen >= buf_size) {
|
||||
snprintf(buf + len, buf_size - len, "%s", error_message);
|
||||
break;
|
||||
}
|
||||
len += nlen;
|
||||
}
|
||||
for (num = 0, k = object_list; k; k = k->next)
|
||||
if (CAN_SEE_OBJ(ch, k) && isname(arg, k->name)) {
|
||||
found = 1;
|
||||
print_object_location(++num, k, ch, TRUE);
|
||||
|
||||
if (PRF_FLAGGED(ch, PRF_VERBOSE) && len < buf_size) {
|
||||
nlen = snprintf(buf + len, buf_size - len, " ### Object name Location\r\n");
|
||||
if (len + nlen >= buf_size) {
|
||||
snprintf(buf + len, buf_size - len, "%s", error_message);
|
||||
}
|
||||
len += nlen;
|
||||
}
|
||||
|
||||
if (len < buf_size) {
|
||||
for (k = object_list; k; k = k->next) {
|
||||
if (CAN_SEE_OBJ(ch, k) && isname(arg, k->name)) {
|
||||
found = 1;
|
||||
len = print_object_location(++num, k, ch, buf, len, buf_size, TRUE);
|
||||
if (len >= buf_size) {
|
||||
snprintf(buf + buf_size, sizeof(buf) - buf_size, "%s", error_message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
send_to_char(ch, "Couldn't find any such thing.\r\n");
|
||||
else
|
||||
page_string(ch->desc, buf, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1937,6 +2005,9 @@ ACMD(do_toggle)
|
||||
{"pagelength", 0, 0, "\n", "\n"},
|
||||
{"screenwidth", 0, 0, "\n", "\n"},
|
||||
{"color", 0, 0, "\n", "\n"},
|
||||
{"verbose", PRF_VERBOSE, LVL_IMMORT,
|
||||
"You will no longer see verbose output in listings.\n",
|
||||
"You will now see verbose listings.\n"},
|
||||
{"\n", 0, -1, "\n", "\n"} /* must be last */
|
||||
};
|
||||
|
||||
@@ -1950,7 +2021,8 @@ ACMD(do_toggle)
|
||||
if (!GET_WIMP_LEV(ch))
|
||||
strcpy(buf2, "OFF"); /* strcpy: OK */
|
||||
else
|
||||
sprintf(buf2, "%-3.3d", GET_WIMP_LEV(ch)); /* sprintf: OK */
|
||||
snprintf(buf2, sizeof(buf2), "%-3.3d", GET_WIMP_LEV(ch)); /* thanks to Ironfist for the fix for the buffer overrun here */
|
||||
|
||||
|
||||
if (GET_LEVEL(ch) == LVL_IMPL) {
|
||||
send_to_char(ch,
|
||||
@@ -1970,7 +2042,8 @@ ACMD(do_toggle)
|
||||
" NoHassle: %-3s "
|
||||
" Holylight: %-3s "
|
||||
" ShowVnums: %-3s\r\n"
|
||||
" Syslog: %-3s%s ",
|
||||
" Syslog: %-3s "
|
||||
" Verbose: %-3s%s ",
|
||||
|
||||
ONOFF(PRF_FLAGGED(ch, PRF_BUILDWALK)),
|
||||
ONOFF(PRF_FLAGGED(ch, PRF_NOWIZ)),
|
||||
@@ -1979,6 +2052,7 @@ ACMD(do_toggle)
|
||||
ONOFF(PRF_FLAGGED(ch, PRF_HOLYLIGHT)),
|
||||
ONOFF(PRF_FLAGGED(ch, PRF_SHOWVNUMS)),
|
||||
types[(PRF_FLAGGED(ch, PRF_LOG1) ? 1 : 0) + (PRF_FLAGGED(ch, PRF_LOG2) ? 2 : 0)],
|
||||
ONOFF(PRF_FLAGGED(ch, PRF_VERBOSE)),
|
||||
GET_LEVEL(ch) == LVL_IMPL ? "" : "\r\n");
|
||||
}
|
||||
if (GET_LEVEL(ch) >= LVL_IMPL) {
|
||||
|
||||
@@ -785,6 +785,9 @@ void name_from_drinkcon(struct obj_data *obj)
|
||||
if (!obj || (GET_OBJ_TYPE(obj) != ITEM_DRINKCON && GET_OBJ_TYPE(obj) != ITEM_FOUNTAIN))
|
||||
return;
|
||||
|
||||
if (obj->name == obj_proto[GET_OBJ_RNUM(obj)].name)
|
||||
obj->name = strdup(obj_proto[GET_OBJ_RNUM(obj)].name);
|
||||
|
||||
liqname = drinknames[GET_OBJ_VAL(obj, 2)];
|
||||
|
||||
remove_from_string(obj->name, liqname);
|
||||
|
||||
@@ -53,6 +53,7 @@ struct board_info_type board_info[NUM_OF_BOARDS] = {
|
||||
{1226, 0, 0, LVL_IMPL, LIB_ETC "board.builder", 0},
|
||||
{1227, 0, 0, LVL_IMPL, LIB_ETC "board.staff", 0},
|
||||
{1228, 0, 0, LVL_IMPL, LIB_ETC "board.advertising", 0},
|
||||
{4900, 0, 0, LVL_IMMORT, LIB_ETC "board.grenzland", 0},
|
||||
};
|
||||
|
||||
/* local (file scope) global variables */
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#ifndef _BOARDS_H_
|
||||
#define _BOARDS_H_
|
||||
|
||||
#define NUM_OF_BOARDS 7 /* change if needed! */
|
||||
#define NUM_OF_BOARDS 8 /* change if needed! */
|
||||
#define MAX_BOARD_MESSAGES 60 /* arbitrary -- change if needed */
|
||||
#define MAX_MESSAGE_LENGTH 4096 /* arbitrary -- change if needed */
|
||||
|
||||
|
||||
70
src/comm.c
70
src/comm.c
@@ -104,8 +104,7 @@ unsigned long pulse = 0; /* number of pulses since game start */
|
||||
ush_int port;
|
||||
socket_t mother_desc;
|
||||
int next_tick = SECS_PER_MUD_HOUR; /* Tick countdown */
|
||||
/* used with do_tell and handle_webster_file utility */
|
||||
long last_webster_teller = -1L;
|
||||
|
||||
|
||||
/* static local global variable declarations (current file scope only) */
|
||||
static struct txt_block *bufpool = 0; /* pool of large output buffers */
|
||||
@@ -113,14 +112,11 @@ static int max_players = 0; /* max descriptors available */
|
||||
static int tics_passed = 0; /* for extern checkpointing */
|
||||
static struct timeval null_time; /* zero-valued time structure */
|
||||
static byte reread_wizlist; /* signal: SIGUSR1 */
|
||||
/* normally signal SIGUSR2, currently orphaned in favor of Webster dictionary
|
||||
* lookup
|
||||
static byte emergency_unban;
|
||||
*/
|
||||
static byte emergency_unban; /* signal: SIGUSR2 */
|
||||
|
||||
static int dg_act_check; /* toggle for act_trigger */
|
||||
static bool fCopyOver; /* Are we booting in copyover mode? */
|
||||
static char *last_act_message = NULL;
|
||||
static byte webster_file_ready = FALSE;/* signal: SIGUSR2 */
|
||||
|
||||
/* static local function prototypes (current file scope only) */
|
||||
static RETSIGTYPE reread_wizlists(int sig);
|
||||
@@ -160,9 +156,6 @@ static int open_logfile(const char *filename, FILE *stderr_fp);
|
||||
#if defined(POSIX)
|
||||
static sigfunc *my_signal(int signo, sigfunc *func);
|
||||
#endif
|
||||
/* Webster Dictionary Lookup functions */
|
||||
static RETSIGTYPE websterlink(int sig);
|
||||
static void handle_webster_file(void);
|
||||
|
||||
static void msdp_update(void); /* KaVir plugin*/
|
||||
|
||||
@@ -958,7 +951,7 @@ void game_loop(socket_t local_mother_desc)
|
||||
mudlog(CMP, LVL_IMMORT, TRUE, "Signal received - rereading wizlists.");
|
||||
reboot_wizlists();
|
||||
}
|
||||
/* Orphaned right now as signal trapping is used for Webster lookup
|
||||
|
||||
if (emergency_unban) {
|
||||
emergency_unban = FALSE;
|
||||
mudlog(BRF, LVL_IMMORT, TRUE, "Received SIGUSR2 - completely unrestricting game (emergent)");
|
||||
@@ -966,11 +959,7 @@ void game_loop(socket_t local_mother_desc)
|
||||
circle_restrict = 0;
|
||||
num_invalid = 0;
|
||||
}
|
||||
*/
|
||||
if (webster_file_ready) {
|
||||
webster_file_ready = FALSE;
|
||||
handle_webster_file();
|
||||
}
|
||||
|
||||
|
||||
#ifdef CIRCLE_UNIX
|
||||
/* Update tics_passed for deadlock protection (UNIX only) */
|
||||
@@ -2232,18 +2221,10 @@ static RETSIGTYPE reread_wizlists(int sig)
|
||||
reread_wizlist = TRUE;
|
||||
}
|
||||
|
||||
/* Orphaned right now in place of Webster ...
|
||||
static RETSIGTYPE unrestrict_game(int sig)
|
||||
{
|
||||
emergency_unban = TRUE;
|
||||
}
|
||||
*/
|
||||
|
||||
static RETSIGTYPE websterlink(int sig)
|
||||
{
|
||||
webster_file_ready = TRUE;
|
||||
}
|
||||
|
||||
|
||||
#ifdef CIRCLE_UNIX
|
||||
|
||||
@@ -2318,7 +2299,7 @@ static void signal_setup(void)
|
||||
|
||||
/* user signal 2: unrestrict game. Used for emergencies if you lock
|
||||
* yourself out of the MUD somehow. */
|
||||
my_signal(SIGUSR2, websterlink);
|
||||
my_signal(SIGUSR2, unrestrict_game);
|
||||
|
||||
/* set up the deadlock-protection so that the MUD aborts itself if it gets
|
||||
* caught in an infinite loop for more than 3 minutes. */
|
||||
@@ -2780,45 +2761,6 @@ static void circle_sleep(struct timeval *timeout)
|
||||
|
||||
#endif /* CIRCLE_WINDOWS */
|
||||
|
||||
static void handle_webster_file(void) {
|
||||
FILE *fl;
|
||||
struct char_data *ch = find_char(last_webster_teller);
|
||||
char retval[MAX_STRING_LENGTH], line[READ_SIZE];
|
||||
size_t len = 0, nlen = 0;
|
||||
|
||||
last_webster_teller = -1L;
|
||||
|
||||
if (!ch) /* they quit ? */
|
||||
return;
|
||||
|
||||
fl = fopen("websterinfo", "r");
|
||||
if (!fl) {
|
||||
send_to_char(ch, "It seems the dictionary is offline..\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
unlink("websterinfo");
|
||||
|
||||
get_line(fl, line);
|
||||
while (!feof(fl)) {
|
||||
nlen = snprintf(retval + len, sizeof(retval) - len, "%s\r\n", line);
|
||||
if (len + nlen >= sizeof(retval))
|
||||
break;
|
||||
len += nlen;
|
||||
get_line(fl, line);
|
||||
}
|
||||
|
||||
if (len >= sizeof(retval)) {
|
||||
const char *overflow = "\r\n**OVERFLOW**\r\n";
|
||||
strcpy(retval + sizeof(retval) - strlen(overflow) - 1, overflow); /* strcpy: OK */
|
||||
}
|
||||
fclose(fl);
|
||||
|
||||
send_to_char(ch, "You get this feedback from Merriam-Webster:\r\n");
|
||||
page_string(ch->desc, retval, 1);
|
||||
}
|
||||
|
||||
|
||||
/* KaVir's plugin*/
|
||||
static void msdp_update( void )
|
||||
{
|
||||
|
||||
@@ -60,9 +60,6 @@ void game_loop(socket_t mother_desc);
|
||||
void heartbeat(int heart_pulse);
|
||||
void copyover_recover(void);
|
||||
|
||||
/** webster dictionary lookup */
|
||||
extern long last_webster_teller;
|
||||
|
||||
extern struct descriptor_data *descriptor_list;
|
||||
extern int buf_largecount;
|
||||
extern int buf_overflows;
|
||||
|
||||
337
src/conf.h.cmake.in
Normal file
337
src/conf.h.cmake.in
Normal file
@@ -0,0 +1,337 @@
|
||||
/* src/conf.h.cmake.in. Used as basis for conf.h when building with cmake */
|
||||
|
||||
#ifndef _CONF_H_
|
||||
#define _CONF_H_
|
||||
|
||||
/* Define to empty if the keyword does not work. */
|
||||
#define const @CONST_KEYWORD@
|
||||
|
||||
/* Define if you don't have vprintf but do have _doprnt. */
|
||||
#cmakedefine HAVE_DOPRNT
|
||||
|
||||
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
|
||||
#cmakedefine HAVE_SYS_WAIT_H
|
||||
|
||||
/* Define if you have the vprintf function. */
|
||||
#cmakedefine HAVE_VPRINTF
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#cmakedefine pid_t @pid_t@
|
||||
|
||||
/* Define as the return type of signal handlers (int or void). */
|
||||
#define RETSIGTYPE @RETSIGTYPE@
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> doesn't define. */
|
||||
#cmakedefine size_t @size_t@
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
#cmakedefine STDC_HEADERS
|
||||
|
||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#cmakedefine TIME_WITH_SYS_TIME
|
||||
|
||||
/* Define if we're compiling CircleMUD under any type of UNIX system. */
|
||||
#cmakedefine CIRCLE_UNIX
|
||||
|
||||
/* Define if the system is capable of using crypt() to encrypt. */
|
||||
#cmakedefine CIRCLE_CRYPT
|
||||
|
||||
/* Define if we don't have proper support for the system's crypt(). */
|
||||
#cmakedefine HAVE_UNSAFE_CRYPT
|
||||
|
||||
/* Define is the system has struct in_addr. */
|
||||
#cmakedefine HAVE_STRUCT_IN_ADDR
|
||||
|
||||
/* Define to `int' if <sys/socket.h> doesn't define. */
|
||||
#cmakedefine socklen_t @socklen_t@
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#cmakedefine ssize_t @ssize_t@
|
||||
|
||||
/* Define if you have the gettimeofday function. */
|
||||
#cmakedefine HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define if you have the inet_addr function. */
|
||||
#cmakedefine HAVE_INET_ADDR
|
||||
|
||||
/* Define if you have the inet_aton function. */
|
||||
#cmakedefine HAVE_INET_ATON
|
||||
|
||||
/* Define if you have the select function. */
|
||||
#cmakedefine HAVE_SELECT
|
||||
|
||||
/* Define if you have the snprintf function. */
|
||||
#cmakedefine HAVE_SNPRINTF
|
||||
|
||||
/* Define if you have the strcasecmp function. */
|
||||
#cmakedefine HAVE_STRCASECMP
|
||||
|
||||
/* Define if you have the strdup function. */
|
||||
#cmakedefine HAVE_STRDUP
|
||||
|
||||
/* Define if you have the strerror function. */
|
||||
#cmakedefine HAVE_STRERROR
|
||||
|
||||
/* Define if you have the stricmp function. */
|
||||
#cmakedefine HAVE_STRICMP
|
||||
|
||||
/* Define if you have the strlcpy function. */
|
||||
#cmakedefine HAVE_STRLCPY
|
||||
|
||||
/* Define if you have the strncasecmp function. */
|
||||
#cmakedefine HAVE_STRNCASECMP
|
||||
|
||||
/* Define if you have the strnicmp function. */
|
||||
#cmakedefine HAVE_STRNICMP
|
||||
|
||||
/* Define if you have the strstr function. */
|
||||
#cmakedefine HAVE_STRSTR
|
||||
|
||||
/* Define if you have the vsnprintf function. */
|
||||
#cmakedefine HAVE_VSNPRINTF
|
||||
|
||||
/* Define if you have the <arpa/inet.h> header file. */
|
||||
#cmakedefine HAVE_ARPA_INET_H
|
||||
|
||||
/* Define if you have the <arpa/telnet.h> header file. */
|
||||
#cmakedefine HAVE_ARPA_TELNET_H
|
||||
|
||||
/* Define if you have the <assert.h> header file. */
|
||||
#cmakedefine HAVE_ASSERT_H
|
||||
|
||||
/* Define if you have the <crypt.h> header file. */
|
||||
#cmakedefine HAVE_CRYPT_H
|
||||
|
||||
/* Define if you have the <errno.h> header file. */
|
||||
#cmakedefine HAVE_ERRNO_H
|
||||
|
||||
/* Define if you have the <fcntl.h> header file. */
|
||||
#cmakedefine HAVE_FCNTL_H
|
||||
|
||||
/* Define if you have the <limits.h> header file. */
|
||||
#cmakedefine HAVE_LIMITS_H
|
||||
|
||||
/* Define if you have the <mcheck.h> header file. */
|
||||
#cmakedefine HAVE_MCHECK_H
|
||||
|
||||
/* Define if you have the <memory.h> header file. */
|
||||
#cmakedefine HAVE_MEMORY_H
|
||||
|
||||
/* Define if you have the <net/errno.h> header file. */
|
||||
#cmakedefine HAVE_NET_ERRNO_H
|
||||
|
||||
/* Define if you have the <netdb.h> header file. */
|
||||
#cmakedefine HAVE_NETDB_H
|
||||
|
||||
/* Define if you have the <netinet/in.h> header file. */
|
||||
#cmakedefine HAVE_NETINET_IN_H
|
||||
|
||||
/* Define if you have the <signal.h> header file. */
|
||||
#cmakedefine HAVE_SIGNAL_H
|
||||
|
||||
/* Define if you have the <string.h> header file. */
|
||||
#cmakedefine HAVE_STRING_H
|
||||
|
||||
/* Define if you have the <strings.h> header file. */
|
||||
#cmakedefine HAVE_STRINGS_H
|
||||
|
||||
/* Define if you have the <sys/fcntl.h> header file. */
|
||||
#cmakedefine HAVE_SYS_FCNTL_H
|
||||
|
||||
/* Define if you have the <sys/resource.h> header file. */
|
||||
#cmakedefine HAVE_SYS_RESOURCE_H
|
||||
|
||||
/* Define if you have the <sys/select.h> header file. */
|
||||
#cmakedefine HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define if you have the <sys/socket.h> header file. */
|
||||
#cmakedefine HAVE_SYS_SOCKET_H
|
||||
|
||||
/* Define if you have the <sys/stat.h> header file. */
|
||||
#cmakedefine HAVE_SYS_STAT_H
|
||||
|
||||
/* Define if you have the <sys/time.h> header file. */
|
||||
#cmakedefine HAVE_SYS_TIME_H
|
||||
|
||||
/* Define if you have the <sys/types.h> header file. */
|
||||
#cmakedefine HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define if you have the <sys/uio.h> header file. */
|
||||
#cmakedefine HAVE_SYS_UIO_H
|
||||
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#cmakedefine HAVE_UNISTD_H
|
||||
|
||||
/* Define if you have the malloc library (-lmalloc). */
|
||||
#cmakedefine HAVE_LIBMALLOC
|
||||
|
||||
/* Check for a prototype to accept. */
|
||||
#cmakedefine NEED_ACCEPT_PROTO
|
||||
|
||||
/* Check for a prototype to atoi. */
|
||||
#cmakedefine NEED_ATOI_PROTO
|
||||
|
||||
/* Check for a prototype to atol. */
|
||||
#cmakedefine NEED_ATOL_PROTO
|
||||
|
||||
/* Check for a prototype to bind. */
|
||||
#cmakedefine NEED_BIND_PROTO
|
||||
|
||||
/* Check for a prototype to bzero. */
|
||||
#cmakedefine NEED_BZERO_PROTO
|
||||
|
||||
/* Check for a prototype to chdir. */
|
||||
#cmakedefine NEED_CHDIR_PROTO
|
||||
|
||||
/* Check for a prototype to close. */
|
||||
#cmakedefine NEED_CLOSE_PROTO
|
||||
|
||||
/* Check for a prototype to crypt. */
|
||||
#cmakedefine NEED_CRYPT_PROTO
|
||||
|
||||
/* Check for a prototype to fclose. */
|
||||
#cmakedefine NEED_FCLOSE_PROTO
|
||||
|
||||
/* Check for a prototype to fcntl. */
|
||||
#cmakedefine NEED_FCNTL_PROTO
|
||||
|
||||
/* Check for a prototype to fflush. */
|
||||
#cmakedefine NEED_FFLUSH_PROTO
|
||||
|
||||
/* Check for a prototype to fprintf. */
|
||||
#cmakedefine NEED_FPRINTF_PROTO
|
||||
|
||||
/* Check for a prototype to fputc. */
|
||||
#cmakedefine NEED_FPUTC_PROTO
|
||||
|
||||
/* Check for a prototype to fputs. */
|
||||
#cmakedefine NEED_FPUTS_PROTO
|
||||
|
||||
/* Check for a prototype to fread. */
|
||||
#cmakedefine NEED_FREAD_PROTO
|
||||
|
||||
/* Check for a prototype to fscanf. */
|
||||
#cmakedefine NEED_FSCANF_PROTO
|
||||
|
||||
/* Check for a prototype to fseek. */
|
||||
#cmakedefine NEED_FSEEK_PROTO
|
||||
|
||||
/* Check for a prototype to fwrite. */
|
||||
#cmakedefine NEED_FWRITE_PROTO
|
||||
|
||||
/* Check for a prototype to getpeername. */
|
||||
#cmakedefine NEED_GETPEERNAME_PROTO
|
||||
|
||||
/* Check for a prototype to getpid. */
|
||||
#cmakedefine NEED_GETPID_PROTO
|
||||
|
||||
/* Check for a prototype to getrlimit. */
|
||||
#cmakedefine NEED_GETRLIMIT_PROTO
|
||||
|
||||
/* Check for a prototype to getsockname. */
|
||||
#cmakedefine NEED_GETSOCKNAME_PROTO
|
||||
|
||||
/* Check for a prototype to gettimeofday. */
|
||||
#cmakedefine NEED_GETTIMEOFDAY_PROTO
|
||||
|
||||
/* Check for a prototype to htonl. */
|
||||
#cmakedefine NEED_HTONL_PROTO
|
||||
|
||||
/* Check for a prototype to htons. */
|
||||
#cmakedefine NEED_HTONS_PROTO
|
||||
|
||||
/* Check for a prototype to inet_addr. */
|
||||
#cmakedefine NEED_INET_ADDR_PROTO
|
||||
|
||||
/* Check for a prototype to inet_aton. */
|
||||
#cmakedefine NEED_INET_ATON_PROTO
|
||||
|
||||
/* Check for a prototype to inet_ntoa. */
|
||||
#cmakedefine NEED_INET_NTOA_PROTO
|
||||
|
||||
/* Check for a prototype to listen. */
|
||||
#cmakedefine NEED_LISTEN_PROTO
|
||||
|
||||
/* Check for a prototype to ntohl. */
|
||||
#cmakedefine NEED_NTOHL_PROTO
|
||||
|
||||
/* Check for a prototype to perror. */
|
||||
#cmakedefine NEED_PERROR_PROTO
|
||||
|
||||
/* Check for a prototype to printf. */
|
||||
#cmakedefine NEED_PRINTF_PROTO
|
||||
|
||||
/* Check for a prototype to qsort. */
|
||||
#cmakedefine NEED_QSORT_PROTO
|
||||
|
||||
/* Check for a prototype to read. */
|
||||
#cmakedefine NEED_READ_PROTO
|
||||
|
||||
/* Check for a prototype to remove. */
|
||||
#cmakedefine NEED_REMOVE_PROTO
|
||||
|
||||
/* Check for a prototype to rewind. */
|
||||
#cmakedefine NEED_REWIND_PROTO
|
||||
|
||||
/* Check for a prototype to select. */
|
||||
#cmakedefine NEED_SELECT_PROTO
|
||||
|
||||
/* Check for a prototype to setitimer. */
|
||||
#cmakedefine NEED_SETITIMER_PROTO
|
||||
|
||||
/* Check for a prototype to setrlimit. */
|
||||
#cmakedefine NEED_SETRLIMIT_PROTO
|
||||
|
||||
/* Check for a prototype to setsockopt. */
|
||||
#cmakedefine NEED_SETSOCKOPT_PROTO
|
||||
|
||||
/* Check for a prototype to snprintf. */
|
||||
#cmakedefine NEED_SNPRINTF_PROTO
|
||||
|
||||
/* Check for a prototype to socket. */
|
||||
#cmakedefine NEED_SOCKET_PROTO
|
||||
|
||||
/* Check for a prototype to sprintf. */
|
||||
#cmakedefine NEED_SPRINTF_PROTO
|
||||
|
||||
/* Check for a prototype to sscanf. */
|
||||
#cmakedefine NEED_SSCANF_PROTO
|
||||
|
||||
/* Check for a prototype to strcasecmp. */
|
||||
#cmakedefine NEED_STRCASECMP_PROTO
|
||||
|
||||
/* Check for a prototype to strdup. */
|
||||
#cmakedefine NEED_STRDUP_PROTO
|
||||
|
||||
/* Check for a prototype to strerror. */
|
||||
#cmakedefine NEED_STRERROR_PROTO
|
||||
|
||||
/* Check for a prototype to stricmp. */
|
||||
#cmakedefine NEED_STRICMP_PROTO
|
||||
|
||||
/* Check for a prototype to strlcpy. */
|
||||
#cmakedefine NEED_STRLCPY_PROTO
|
||||
|
||||
/* Check for a prototype to strncasecmp. */
|
||||
#cmakedefine NEED_STRNCASECMP_PROTO
|
||||
|
||||
/* Check for a prototype to strnicmp. */
|
||||
#cmakedefine NEED_STRNICMP_PROTO
|
||||
|
||||
/* Check for a prototype to system. */
|
||||
#cmakedefine NEED_SYSTEM_PROTO
|
||||
|
||||
/* Check for a prototype to time. */
|
||||
#cmakedefine NEED_TIME_PROTO
|
||||
|
||||
/* Check for a prototype to unlink. */
|
||||
#cmakedefine NEED_UNLINK_PROTO
|
||||
|
||||
/* Check for a prototype to vsnprintf. */
|
||||
#cmakedefine NEED_VSNPRINTF_PROTO
|
||||
|
||||
/* Check for a prototype to write. */
|
||||
#cmakedefine NEED_WRITE_PROTO
|
||||
|
||||
|
||||
#endif /* _CONF_H_ */
|
||||
@@ -877,6 +877,7 @@ const char *trig_types[] = {
|
||||
"Door",
|
||||
"UNUSED",
|
||||
"Time",
|
||||
"Damage",
|
||||
"\n"
|
||||
};
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "dg_scripts.h"
|
||||
|
||||
#define NUM_TRIG_TYPE_FLAGS 20
|
||||
#define NUM_TRIG_TYPE_FLAGS 21
|
||||
|
||||
/* Submodes of TRIGEDIT connectedness. */
|
||||
#define TRIGEDIT_MAIN_MENU 0
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
#define MTRIG_DOOR (1 << 17) /* door manipulated in room */
|
||||
|
||||
#define MTRIG_TIME (1 << 19) /* trigger based on game hour */
|
||||
#define MTRIG_DAMAGE (1 << 20) /* trigger whenever mob is damaged */
|
||||
|
||||
/* obj trigger types */
|
||||
#define OTRIG_GLOBAL (1 << 0) /* unused */
|
||||
@@ -264,6 +265,7 @@ void time_wtrigger(room_data *room);
|
||||
|
||||
int login_wtrigger(struct room_data *room, char_data *actor);
|
||||
|
||||
int damage_mtrigger(char_data *ch, char_data *victim, int dam, int attacktype);
|
||||
/* function prototypes from dg_scripts.c */
|
||||
ACMD(do_attach) ;
|
||||
ACMD(do_detach);
|
||||
|
||||
@@ -554,6 +554,33 @@ int cast_mtrigger(char_data *actor, char_data *ch, int spellnum)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int damage_mtrigger(char_data *actor, char_data *victim, int dam, int attacktype)
|
||||
{
|
||||
trig_data *t;
|
||||
char buf[MAX_INPUT_LENGTH];
|
||||
|
||||
if (victim == NULL)
|
||||
return dam;
|
||||
|
||||
if (!SCRIPT_CHECK(victim, MTRIG_DAMAGE) || AFF_FLAGGED(victim, AFF_CHARM))
|
||||
return dam;
|
||||
|
||||
for (t = TRIGGERS(SCRIPT(victim)); t; t = t->next) {
|
||||
if (TRIGGER_CHECK(t, MTRIG_DAMAGE) &&
|
||||
(rand_number(1, 100) <= GET_TRIG_NARG(t))) {
|
||||
ADD_UID_VAR(buf, t, char_script_id(actor), "actor", 0);
|
||||
ADD_UID_VAR(buf, t, char_script_id(victim), "victim", 0);
|
||||
sprintf(buf, "%d", dam);
|
||||
add_var(&GET_TRIG_VARS(t), "damage", buf, 0);
|
||||
add_var(&GET_TRIG_VARS(t), "attacktype", skill_name(attacktype), 0);
|
||||
return script_driver(&victim, t, MOB_TRIGGER, TRIG_NEW);
|
||||
}
|
||||
}
|
||||
|
||||
return dam;
|
||||
}
|
||||
|
||||
|
||||
int leave_mtrigger(char_data *actor, int dir)
|
||||
{
|
||||
trig_data *t;
|
||||
|
||||
@@ -620,6 +620,11 @@ int damage(struct char_data *ch, struct char_data *victim, int dam, int attackty
|
||||
if (!IS_NPC(victim) && ((GET_LEVEL(victim) >= LVL_IMMORT) && PRF_FLAGGED(victim, PRF_NOHASSLE)))
|
||||
dam = 0;
|
||||
|
||||
dam = damage_mtrigger(ch, victim, dam, attacktype);
|
||||
if (dam == -1) {
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (victim != ch) {
|
||||
/* Start the attacker fighting the victim */
|
||||
if (GET_POS(ch) > POS_STUNNED && (FIGHTING(ch) == NULL))
|
||||
|
||||
@@ -146,7 +146,8 @@ static void prefedit_disp_main_menu(struct descriptor_data *d)
|
||||
"%sImmortal Preferences\r\n"
|
||||
"%s1%s) Syslog Level %s[%s%8s%s] %s4%s) ClsOLC %s[%s%3s%s]\r\n"
|
||||
"%s2%s) Show Flags %s[%s%3s%s] %s5%s) No WizNet %s[%s%3s%s]\r\n"
|
||||
"%s3%s) No Hassle %s[%s%3s%s] %s6%s) Holylight %s[%s%3s%s]\r\n",
|
||||
"%s3%s) No Hassle %s[%s%3s%s] %s6%s) Holylight %s[%s%3s%s]\r\n"
|
||||
"%s7%s) Verbose %s[%s%3s%s] ",
|
||||
CBWHT(d->character, C_NRM),
|
||||
/* Line 1 - syslog and clsolc */
|
||||
CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
|
||||
@@ -159,12 +160,17 @@ static void prefedit_disp_main_menu(struct descriptor_data *d)
|
||||
/* Line 3 - nohassle and holylight */
|
||||
CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
|
||||
ONOFF(PREFEDIT_FLAGGED(PRF_NOHASSLE)), CCCYN(d->character, C_NRM), CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM),
|
||||
CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(PREFEDIT_FLAGGED(PRF_HOLYLIGHT)), CCCYN(d->character, C_NRM)
|
||||
CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(PREFEDIT_FLAGGED(PRF_HOLYLIGHT)), CCCYN(d->character, C_NRM),
|
||||
/* Line 4 - Verbose */
|
||||
CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
|
||||
ONOFF(PREFEDIT_FLAGGED(PRF_VERBOSE)), CCCYN(d->character, C_NRM)
|
||||
);
|
||||
if (GET_LEVEL(PREFEDIT_GET_CHAR) == LVL_IMPL)
|
||||
send_to_char(d->character, "%s7%s) Zone Resets %s[%s%3s%s]\r\n",
|
||||
send_to_char(d->character, "%s8%s) Zone Resets %s[%s%3s%s]\r\n",
|
||||
CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
|
||||
ONOFF(PREFEDIT_FLAGGED(PRF_ZONERESETS)), CCCYN(d->character, C_NRM));
|
||||
else
|
||||
send_to_char(d->character, "\r\n");
|
||||
}
|
||||
|
||||
/* Finishing Off */
|
||||
@@ -505,7 +511,19 @@ void prefedit_parse(struct descriptor_data * d, char *arg)
|
||||
}
|
||||
break;
|
||||
|
||||
case '7':
|
||||
case '7':
|
||||
if (GET_LEVEL(PREFEDIT_GET_CHAR) < LVL_IMMORT)
|
||||
{
|
||||
send_to_char(d->character, "%sInvalid choice!%s\r\n", CBRED(d->character, C_NRM), CCNRM(d->character, C_NRM));
|
||||
prefedit_disp_main_menu(d);
|
||||
}
|
||||
else
|
||||
{
|
||||
TOGGLE_BIT_AR(PREFEDIT_GET_FLAGS, PRF_VERBOSE);
|
||||
}
|
||||
break;
|
||||
|
||||
case '8':
|
||||
if (GET_LEVEL(PREFEDIT_GET_CHAR) < LVL_IMPL)
|
||||
{
|
||||
send_to_char(d->character, "%sInvalid choice!%s\r\n", CBRED(d->character, C_NRM), CCNRM(d->character, C_NRM));
|
||||
@@ -901,6 +919,10 @@ void prefedit_Restore_Defaults(struct descriptor_data *d)
|
||||
if (PREFEDIT_FLAGGED(PRF_AUTODOOR))
|
||||
SET_BIT_AR(PREFEDIT_GET_FLAGS, PRF_AUTODOOR);
|
||||
|
||||
/* PRF_VERBOSE - On */
|
||||
if (PREFEDIT_FLAGGED(PRF_VERBOSE))
|
||||
SET_BIT_AR(PREFEDIT_GET_FLAGS, PRF_VERBOSE);
|
||||
|
||||
/* Other (non-toggle) options */
|
||||
PREFEDIT_GET_WIMP_LEV = 0; /* Wimpy off by default */
|
||||
PREFEDIT_GET_PAGELENGTH = 22; /* Default telnet screen is 22 lines */
|
||||
|
||||
@@ -1768,7 +1768,26 @@ static void PerformSubnegotiation( descriptor_t *apDescriptor, char aCmd, char *
|
||||
Write(apDescriptor, RequestTTYPE);
|
||||
}
|
||||
|
||||
if ( PrefixString("Mudlet", pClientName) )
|
||||
if ( PrefixString("MTTS ", pClientName) )
|
||||
{
|
||||
pProtocol->pVariables[eMSDP_CLIENT_VERSION]->ValueInt = atoi(pClientName+5);
|
||||
|
||||
if (pProtocol->pVariables[eMSDP_CLIENT_VERSION]->ValueInt & 1)
|
||||
{
|
||||
pProtocol->pVariables[eMSDP_ANSI_COLORS]->ValueInt = 1;
|
||||
}
|
||||
if (pProtocol->pVariables[eMSDP_CLIENT_VERSION]->ValueInt & 4)
|
||||
{
|
||||
pProtocol->pVariables[eMSDP_UTF_8]->ValueInt = 1;
|
||||
}
|
||||
if (pProtocol->pVariables[eMSDP_CLIENT_VERSION]->ValueInt & 8)
|
||||
{
|
||||
pProtocol->pVariables[eMSDP_XTERM_256_COLORS]->ValueInt = 1;
|
||||
pProtocol->b256Support = eYES;
|
||||
}
|
||||
|
||||
}
|
||||
else if ( PrefixString("Mudlet", pClientName) )
|
||||
{
|
||||
/* Mudlet beta 15 and later supports 256 colours, but we can't
|
||||
* identify it from the mud - everything prior to 1.1 claims
|
||||
|
||||
@@ -136,6 +136,7 @@ void assign_objects(void)
|
||||
ASSIGNOBJ(3097, gen_board); /* freeze board */
|
||||
ASSIGNOBJ(3098, gen_board); /* immortal board */
|
||||
ASSIGNOBJ(3099, gen_board); /* mortal board */
|
||||
ASSIGNOBJ(4900, gen_board); /* mortal board */
|
||||
|
||||
ASSIGNOBJ(115, bank);
|
||||
ASSIGNOBJ(334, bank); /* atm */
|
||||
|
||||
@@ -262,9 +262,10 @@
|
||||
#define PRF_AUTOMAP 31 /**< Show map at the side of room descs */
|
||||
#define PRF_AUTOKEY 32 /**< Automatically unlock locked doors when opening */
|
||||
#define PRF_AUTODOOR 33 /**< Use the next available door */
|
||||
#define PRF_ZONERESETS 34
|
||||
#define PRF_ZONERESETS 34 /**< Show when zones reset */
|
||||
#define PRF_VERBOSE 35 /**< Listings like where are more verbose */
|
||||
/** Total number of available PRF flags */
|
||||
#define NUM_PRF_FLAGS 35
|
||||
#define NUM_PRF_FLAGS 36
|
||||
|
||||
/* Affect bits: used in char_data.char_specials.saved.affected_by */
|
||||
/* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */
|
||||
|
||||
45
src/util/CMakeLists.txt
Normal file
45
src/util/CMakeLists.txt
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
set(TOOLS
|
||||
asciipasswd
|
||||
autowiz
|
||||
plrtoascii
|
||||
rebuildIndex
|
||||
rebuildMailIndex
|
||||
shopconv
|
||||
sign
|
||||
split
|
||||
wld2html
|
||||
)
|
||||
|
||||
# common includes and flags
|
||||
include_directories(${CMAKE_SOURCE_DIR}/src)
|
||||
add_definitions(-DCIRCLE_UTIL)
|
||||
|
||||
find_library(CRYPT_LIBRARY crypt)
|
||||
find_library(NETLIB_LIBRARY nsl socket) # for sign.c, hvis nødvendig
|
||||
|
||||
foreach(tool ${TOOLS})
|
||||
if(${tool} STREQUAL "rebuildIndex")
|
||||
add_executable(rebuildIndex rebuildAsciiIndex.c)
|
||||
else()
|
||||
add_executable(${tool} ${tool}.c)
|
||||
endif()
|
||||
|
||||
# Set output location
|
||||
set_target_properties(${tool} PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin
|
||||
)
|
||||
|
||||
# Link to libcrypt for asciipasswd
|
||||
if(${tool} STREQUAL "asciipasswd" AND CRYPT_LIBRARY)
|
||||
target_link_libraries(${tool} ${CRYPT_LIBRARY})
|
||||
endif()
|
||||
|
||||
# Link to netlib for sign
|
||||
if(${tool} STREQUAL "sign" AND NETLIB_LIBRARY)
|
||||
target_link_libraries(${tool} ${NETLIB_LIBRARY})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
add_custom_target(utils DEPENDS ${TOOLS})
|
||||
|
||||
@@ -23,7 +23,7 @@ CFLAGS = @CFLAGS@ $(MYFLAGS) $(PROFILE) -I$(INCDIR)
|
||||
|
||||
default: all
|
||||
|
||||
all: $(BINDIR)/asciipasswd $(BINDIR)/autowiz $(BINDIR)/plrtoascii $(BINDIR)/rebuildIndex $(BINDIR)/rebuildMailIndex $(BINDIR)/shopconv $(BINDIR)/sign $(BINDIR)/split $(BINDIR)/wld2html $(BINDIR)/webster
|
||||
all: $(BINDIR)/asciipasswd $(BINDIR)/autowiz $(BINDIR)/plrtoascii $(BINDIR)/rebuildIndex $(BINDIR)/rebuildMailIndex $(BINDIR)/shopconv $(BINDIR)/sign $(BINDIR)/split $(BINDIR)/wld2html
|
||||
|
||||
asciipasswd: $(BINDIR)/asciipasswd
|
||||
|
||||
@@ -43,8 +43,6 @@ split: $(BINDIR)/split
|
||||
|
||||
wld2html: $(BINDIR)/wld2html
|
||||
|
||||
webster: $(BINDIR)/webster
|
||||
|
||||
$(BINDIR)/asciipasswd: asciipasswd.c
|
||||
$(CC) $(CFLAGS) -o $(BINDIR)/asciipasswd asciipasswd.c @CRYPTLIB@
|
||||
|
||||
@@ -72,9 +70,6 @@ $(BINDIR)/split: split.c
|
||||
$(BINDIR)/wld2html: wld2html.c
|
||||
$(CC) $(CFLAGS) -o $(BINDIR)/wld2html wld2html.c
|
||||
|
||||
$(BINDIR)/webster: webster.c
|
||||
$(CC) $(CFLAGS) -o $(BINDIR)/webster webster.c
|
||||
|
||||
# Dependencies for the object files (automagically generated with
|
||||
# gcc -MM)
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ void read_file(void)
|
||||
while (get_line(fl, line))
|
||||
if (*line != '~')
|
||||
recs++;
|
||||
rewind(fl);
|
||||
rewind(fl);
|
||||
|
||||
for (i = 0; i < recs; i++) {
|
||||
get_line(fl, line);
|
||||
|
||||
@@ -155,7 +155,7 @@ static int boot_the_shops_conv(FILE * shop_f, FILE * newshop_f, char *filename)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
FILE *sfp, *nsfp;
|
||||
char fn[256], part[256];
|
||||
char fn[120], part[256];
|
||||
int result, index, i;
|
||||
|
||||
if (argc < 2) {
|
||||
@@ -173,20 +173,20 @@ int main(int argc, char *argv[])
|
||||
perror(fn);
|
||||
} else {
|
||||
if ((nsfp = fopen(fn, "w")) == NULL) {
|
||||
printf("Error writing to %s.\n", fn);
|
||||
continue;
|
||||
printf("Error writing to %s.\n", fn);
|
||||
continue;
|
||||
}
|
||||
printf("%s:\n", fn);
|
||||
result = boot_the_shops_conv(sfp, nsfp, fn);
|
||||
fclose(nsfp);
|
||||
fclose(sfp);
|
||||
if (result) {
|
||||
sprintf(part, "mv %s.tmp %s", fn, fn);
|
||||
i = system(part);
|
||||
sprintf(part, "mv %s.tmp %s", fn, fn);
|
||||
i = system(part);
|
||||
} else {
|
||||
sprintf(part, "mv %s.tmp %s.bak", fn, fn);
|
||||
i = system(part);
|
||||
printf("Done!\n");
|
||||
sprintf(part, "mv %s.tmp %s.bak", fn, fn);
|
||||
i = system(part);
|
||||
printf("Done!\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,175 +0,0 @@
|
||||
/* ************************************************************************
|
||||
* File: webster.c Part of tbaMUD *
|
||||
* Usage: Use an online dictionary via tell m-w <word>. *
|
||||
* *
|
||||
* Based on the Circle 3.0 syntax checker and wld2html programs. *
|
||||
************************************************************************ */
|
||||
|
||||
#define log(msg) fprintf(stderr, "%s\n", msg)
|
||||
|
||||
#include "conf.h"
|
||||
#include "sysdep.h"
|
||||
|
||||
|
||||
#define MEM_USE 10000
|
||||
char buf[MEM_USE];
|
||||
|
||||
int get_line(FILE * fl, char *buf);
|
||||
void skip_spaces(char **string);
|
||||
void parse_webster_html(char *arg);
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int pid = 0;
|
||||
if (argc != 3) {
|
||||
return 0; /* no word/pid given */
|
||||
}
|
||||
pid = atoi(argv[2]);
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
"lynx -accept_all_cookies -source http://www.thefreedictionary.com/%s"
|
||||
" >webster.html", argv[1]);
|
||||
system(buf);
|
||||
|
||||
parse_webster_html(argv[1]);
|
||||
|
||||
if (pid)
|
||||
kill(pid, SIGUSR2);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
void parse_webster_html(char *arg) {
|
||||
FILE *infile, *outfile;
|
||||
char scanbuf[MEM_USE], outline[MEM_USE], *p, *q;
|
||||
|
||||
outfile = fopen("websterinfo", "w");
|
||||
if (!outfile)
|
||||
exit(1);
|
||||
|
||||
infile = fopen("webster.html", "r");
|
||||
if (!infile) {
|
||||
fprintf(outfile, "A bug has occured in webster. (no webster.html) Please notify Welcor.");
|
||||
fclose(outfile);
|
||||
return;
|
||||
}
|
||||
|
||||
unlink("webster.html"); /* We can still read */
|
||||
|
||||
for ( ; get_line(infile, buf)!=0; ) {
|
||||
|
||||
if (strncmp(buf, "<script>write_ads(AdsNum, 0, 1)</script>", 40) != 0)
|
||||
continue; // read until we hit the line with results in it.
|
||||
|
||||
p = buf+40;
|
||||
|
||||
if (strncmp(p, "<br>", 4) == 0)
|
||||
{
|
||||
fprintf(outfile, "That word could not be found.\n");
|
||||
goto end;
|
||||
}
|
||||
else if (strncmp(p, "<div ", 5) == 0) // definition is here, all in one line.
|
||||
{
|
||||
while (strncmp(p, "ds-list", 7)) //seek to the definition
|
||||
p++;
|
||||
|
||||
strncpy(scanbuf, p, sizeof(scanbuf)); // strtok on a copy.
|
||||
|
||||
p = strtok(scanbuf, ">"); // chop the line at the end of tags: <br><b>word</b> becomes "<br" "<b" "word</b"
|
||||
p = strtok(NULL, ">"); // skip the rest of this tag.
|
||||
|
||||
fprintf(outfile, "Info on: %s\n\n", arg);
|
||||
|
||||
while (1)
|
||||
{
|
||||
q = outline;
|
||||
|
||||
while (*p != '<')
|
||||
{
|
||||
assert(p < scanbuf+sizeof(scanbuf));
|
||||
*q++ = *p++;
|
||||
}
|
||||
if (!strncmp(p, "<br", 3) || !strncmp(p, "<p", 2) || !strncmp(p, "<div class=\"ds-list\"", 23) || !strncmp(p, "<div class=\"sds-list\"", 24))
|
||||
*q++ = '\n';
|
||||
// if it's not a <br> tag or a <div class="sds-list"> or <div class="ds-list"> tag, ignore it.
|
||||
|
||||
*q++='\0';
|
||||
fprintf(outfile, "%s", outline);
|
||||
|
||||
if (!strncmp(p, "</table", 7))
|
||||
goto end;
|
||||
|
||||
p = strtok(NULL, ">");
|
||||
}
|
||||
}
|
||||
else if (strncmp(p, "<div>", 5) == 0) // not found, but suggestions are ample:
|
||||
{
|
||||
strncpy(scanbuf, p, sizeof(scanbuf)); // strtok on a copy.
|
||||
|
||||
p = strtok(scanbuf, ">"); // chop the line at the end of tags: <br><b>word</b> becomes "<br>" "<b>" "word</b>"
|
||||
p = strtok(NULL, ">"); // skip the rest of this tag.
|
||||
|
||||
while (1)
|
||||
{
|
||||
q = outline;
|
||||
|
||||
while (*p != '<')
|
||||
*q++ = *p++;
|
||||
|
||||
if (!strncmp(p, "<td ", 4))
|
||||
*q++ = '\n';
|
||||
// if it's not a <td> tag, ignore it.
|
||||
|
||||
*q++='\0';
|
||||
fprintf(outfile, "%s", outline);
|
||||
|
||||
if (!strncmp(p, "</table", 7))
|
||||
goto end;
|
||||
|
||||
p = strtok(NULL, ">");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// weird.. one of the above should be correct.
|
||||
fprintf(outfile, "It would appear that the free online dictionary has changed their format.\n"
|
||||
"Sorry, but you might need a webrowser instead.\n\n"
|
||||
"See http://www.thefreedictionary.com/%s", arg);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
fclose(infile);
|
||||
|
||||
fprintf(outfile, "~");
|
||||
fclose(outfile);
|
||||
}
|
||||
|
||||
/* get_line reads the next non-blank line off of the input stream.
|
||||
* The newline character is removed from the input.
|
||||
*/
|
||||
int get_line(FILE * fl, char *buf)
|
||||
{
|
||||
char temp[MEM_USE];
|
||||
|
||||
do {
|
||||
fgets(temp, MEM_USE, fl);
|
||||
if (*temp)
|
||||
temp[strlen(temp) - 1] = '\0';
|
||||
} while (!feof(fl) && !*temp);
|
||||
|
||||
if (feof(fl))
|
||||
return (0);
|
||||
else {
|
||||
strcpy(buf, temp);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Function to skip over the leading spaces of a string.
|
||||
*/
|
||||
void skip_spaces(char **string)
|
||||
{
|
||||
for (; **string && isspace(**string); (*string)++);
|
||||
}
|
||||
574
syslog
Normal file
574
syslog
Normal file
@@ -0,0 +1,574 @@
|
||||
autorun starting game Mo 26. Jan 21:38:52 CET 2026
|
||||
running bin/circle -q 4000
|
||||
nohup: Eingabe wird ignoriert
|
||||
No etc/config file, using defaults: No such file or directory
|
||||
Jan 26 21:38:52 2026 :: Loading configuration.
|
||||
Jan 26 21:38:52 2026 :: tbaMUD 2025
|
||||
Jan 26 21:38:52 2026 :: Using lib as data directory.
|
||||
Jan 26 21:38:52 2026 :: Running game on port 4000.
|
||||
Jan 26 21:38:52 2026 :: Finding player limit.
|
||||
Jan 26 21:38:52 2026 :: Setting player limit to 300 using rlimit.
|
||||
Jan 26 21:38:52 2026 :: Opening mother connection.
|
||||
Jan 26 21:38:52 2026 :: Binding to all IP interfaces on this host.
|
||||
Jan 26 21:38:52 2026 :: Boot db -- BEGIN.
|
||||
Jan 26 21:38:52 2026 :: Resetting the game time:
|
||||
Jan 26 21:38:52 2026 :: No time file 'etc/time' starting from the beginning.
|
||||
Jan 26 21:38:52 2026 :: Current Gametime: 2H 30D 15M 1044Y.
|
||||
Jan 26 21:38:52 2026 :: Initialize Global Lists
|
||||
Jan 26 21:38:52 2026 :: Initializing Events
|
||||
Jan 26 21:38:52 2026 :: Reading news, credits, help, ihelp, bground, info & motds.
|
||||
Jan 26 21:38:52 2026 :: Loading spell definitions.
|
||||
Jan 26 21:38:52 2026 :: Loading zone table.
|
||||
Jan 26 21:38:52 2026 :: 192 zones, 13824 bytes.
|
||||
Jan 26 21:38:52 2026 :: Loading triggers and generating index.
|
||||
Jan 26 21:38:52 2026 :: Loading rooms.
|
||||
Jan 26 21:38:52 2026 :: 12758 rooms, 2347472 bytes.
|
||||
Jan 26 21:38:52 2026 :: Renumbering rooms.
|
||||
Jan 26 21:38:52 2026 :: Checking start rooms.
|
||||
Jan 26 21:38:52 2026 :: Loading mobs and generating index.
|
||||
Jan 26 21:38:52 2026 :: 3712 mobs, 118784 bytes in index, 2138112 bytes in prototypes.
|
||||
Jan 26 21:38:52 2026 :: Loading objs and generating index.
|
||||
Jan 26 21:38:52 2026 :: 4774 objs, 152768 bytes in index, 1145760 bytes in prototypes.
|
||||
Jan 26 21:38:52 2026 :: Renumbering zone table.
|
||||
Jan 26 21:38:52 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
|
||||
Jan 26 21:38:52 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
|
||||
Jan 26 21:38:52 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
|
||||
Jan 26 21:38:52 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
|
||||
Jan 26 21:38:52 2026 :: Loading shops.
|
||||
Jan 26 21:38:52 2026 :: Loading quests.
|
||||
Jan 26 21:38:52 2026 :: 1 entries, 128 bytes.
|
||||
Jan 26 21:38:52 2026 :: Loading help entries.
|
||||
Jan 26 21:38:52 2026 :: 2640 entries, 84480 bytes.
|
||||
Jan 26 21:38:52 2026 :: Generating player index.
|
||||
Jan 26 21:38:52 2026 :: Loading fight messages.
|
||||
Jan 26 21:38:52 2026 :: Loaded 37 Combat Messages...
|
||||
Jan 26 21:38:52 2026 :: Loading social messages.
|
||||
Jan 26 21:38:52 2026 :: Social table contains 490 socials.
|
||||
Jan 26 21:38:52 2026 :: Building command list.
|
||||
Jan 26 21:38:52 2026 :: Command info rebuilt, 766 total commands.
|
||||
Jan 26 21:38:52 2026 :: Assigning function pointers:
|
||||
Jan 26 21:38:52 2026 :: Mobiles.
|
||||
Jan 26 21:38:52 2026 :: Shopkeepers.
|
||||
Jan 26 21:38:52 2026 :: Objects.
|
||||
Jan 26 21:38:52 2026 :: Rooms.
|
||||
Jan 26 21:38:52 2026 :: Questmasters.
|
||||
Jan 26 21:38:52 2026 :: Assigning spell and skill levels.
|
||||
Jan 26 21:38:52 2026 :: Sorting command list and spells.
|
||||
Jan 26 21:38:52 2026 :: Booting mail system.
|
||||
Jan 26 21:38:52 2026 :: Mail file read -- 0 messages.
|
||||
Jan 26 21:38:52 2026 :: Reading banned site and invalid-name list.
|
||||
Jan 26 21:38:52 2026 :: Loading Ideas.
|
||||
Jan 26 21:38:52 2026 :: Loading Bugs.
|
||||
Jan 26 21:38:52 2026 :: Loading Typos.
|
||||
Jan 26 21:38:52 2026 :: Booting houses.
|
||||
Jan 26 21:38:52 2026 :: No houses to load. File 'etc/hcontrol' does not exist.
|
||||
Jan 26 21:38:52 2026 :: Cleaning up last log.
|
||||
Jan 26 21:38:52 2026 :: Resetting #0: The Builder Academy Zone (rooms 0-99).
|
||||
Jan 26 21:38:52 2026 :: Resetting #1: Sanctus (rooms 100-199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #2: Sanctus II (rooms 200-299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #3: Sanctus III (rooms 300-399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #4: Rename (rooms 400-499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #5: Newbie Farm (rooms 500-599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #6: Sea of Souls (rooms 600-699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #7: Camelot (rooms 700-799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #9: River Island of Minos (rooms 900-999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #11: Frozen Castle (rooms 1100-1199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #12: God Complex Merged with 343 (rooms 1200-1299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #13: TBA Examples (rooms 1300-1399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #14: TBA Examples II (rooms 1400-1499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #15: Straight Path (rooms 1500-1599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #16: Camelot II (rooms 1600-1699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #17: Camelot III (rooms 1700-1799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #18: Nuclear Wasteland (rooms 1800-1899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #19: Spider Swamp (rooms 1900-1999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #20: Arena (rooms 2000-2099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #22: Tower of the Undead (rooms 2200-2299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #25: High Tower of Magic (rooms 2500-2599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #26: High Tower of Magic II (rooms 2600-2699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #27: Memlin Caverns (rooms 2700-2799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #28: Mudschool (rooms 2800-2899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #30: Northern Midgaard (rooms 3000-3099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #31: Southern Midgaard (rooms 3100-3199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #32: Midgaard (rooms 3200-3299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #33: Three of Swords (rooms 3300-3399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #35: Miden'Nir (rooms 3500-3599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #36: Chessboard of Midgaard (rooms 3600-3699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #37: Capital Sewer System (rooms 3700-3799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #38: Capital Sewer System II (rooms 3800-3899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #39: Haven (rooms 3900-3999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #40: Mines of Moria (rooms 4000-4099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #41: Mines of Moria (rooms 4100-4199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #42: Dragon Chasm (rooms 4200-4299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #43: Arctic Zone (rooms 4300-4399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #44: Orc Camp (rooms 4400-4499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #45: Woodland Monastery (rooms 4500-4599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #46: Ant Hill (rooms 4600-4699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #49: Grenzland (rooms 4900-4999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #50: Great Eastern Desert (rooms 5000-5099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #51: Drow City (rooms 5100-5199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #52: City of Thalos (rooms 5200-5299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #53: Great Pyramid (rooms 5300-5399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #54: New Thalos (rooms 5400-5499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #55: New Thalos II (rooms 5500-5599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #56: New Thalos Wilderness (rooms 5600-5699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #57: Zodiac (rooms 5700-5799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #60: Haon-Dor, Light Forest (rooms 6000-6099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #61: Haon-Dor, Light Forest II (rooms 6100-6199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #62: Orc Enclave (rooms 6200-6299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #63: Arachnos (rooms 6300-6399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #64: Rand's Tower (rooms 6400-6499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #65: Dwarven Kingdom (rooms 6500-6599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #70: Sewer, First Level (rooms 7000-7099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #71: Second Sewer (rooms 7100-7199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #72: Sewer Maze (rooms 7200-7299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #73: Tunnels in the Sewer (rooms 7300-7399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #74: Newbie Graveyard (rooms 7400-7499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #75: Zamba (rooms 7500-7599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #78: Gideon (rooms 7800-7899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #79: Redferne's Residence (rooms 7900-7999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #83: Glumgold's Sea (rooms 8300-8399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #86: Duke Kalithorn's Keep (rooms 8600-8699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #90: Oasis (rooms 9000-9099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #96: Domiae (rooms 9600-9699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #100: Northern Highway (rooms 10000-10099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #101: South Road (rooms 10100-10199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #103: DBZ World (rooms 10300-10399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #104: Land of Orchan (rooms 10400-10499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #106: Elcardo (rooms 10600-10699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #107: Realms of Iuel (rooms 10700-10799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #115: Monestary Omega (rooms 11500-11599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #117: Los Torres (rooms 11700-11799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #118: The Dollhouse (rooms 11800-11899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #120: Rome (rooms 12000-12099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #125: Hannah (rooms 12500-12599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #130: Mist Maze (rooms 13000-13099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #140: Wyvern City (rooms 14000-14099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #150: King Welmar's Castle (rooms 15000-15099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #169: Gibberling Caves (rooms 16900-16999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #175: Cardinal Wizards (rooms 17500-17599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #186: Newbie Zone (rooms 18600-18699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #187: Circus (rooms 18700-18799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #200: Western Highway (rooms 20000-20099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #201: Sapphire Islands (rooms 20100-20199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #211: Tarot (rooms 21100-21199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #220: The Enchanted Kitchen (rooms 22000-22099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #232: Terringham (rooms 23200-23299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #233: Dragon Plains (rooms 23300-23399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #234: Newbie School (rooms 23400-23499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #235: Dwarven Mines (rooms 23500-23599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #236: Aldin (rooms 23600-23699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #237: Dwarven Trade Route (rooms 23700-23799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #238: Crystal Castle (rooms 23800-23899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #239: South Pass (rooms 23900-23999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #240: Dun Maura (rooms 24000-24099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #241: Starship Enterprise (rooms 24100-24199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #242: New Southern Midgaard (rooms 24200-24299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #243: Snowy Valley (rooms 24300-24399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #244: Cooland Prison (rooms 24400-24499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #245: The Nether (rooms 24500-24599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #246: The Nether II (rooms 24600-24699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #247: Graveyard (rooms 24700-24799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #248: Elven Woods (rooms 24800-24899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #249: Jedi Clan House (rooms 24900-24999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #250: DragonSpyre (rooms 25000-25099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #251: Ape Village (rooms 25100-25199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #252: Castle of the Vampyre (rooms 25200-25299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #253: Windmill (rooms 25300-25399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #254: Mordecai's Village (rooms 25400-25499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #255: Shipwreck (rooms 25500-25599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #256: Lord's Keep (rooms 25600-25699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #257: Jareth Main City (rooms 25700-25799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #258: Light Forest (rooms 25800-25899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #259: Haunted Mansion (rooms 25900-25999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #260: Grasslands (rooms 26000-26099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #261: Inna & Igor's Castle (rooms 26100-26199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #262: Forest Trails (rooms 26200-26299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #263: Farmlands (rooms 26300-26399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #264: Banshide (rooms 26400-26499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #265: Beach & Lighthouse (rooms 26500-26599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #266: Realm of Lord Ankou (rooms 26600-26699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #267: Vice Island (rooms 26700-26799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #268: Vice Island II (rooms 26800-26899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #269: Southern Desert (rooms 26900-26999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #270: Wasteland (rooms 27000-27099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #271: Sundhaven (rooms 27100-27199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #272: Sundhaven II (rooms 27200-27299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #273: Space Station Alpha (rooms 27300-27399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #274: Adria: Saint Brigid (rooms 27400-27499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #275: New Sparta (rooms 27500-27599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #276: New Sparta II (rooms 27600-27699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #277: Shire (rooms 27700-27799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #278: Oceania (rooms 27800-27899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #279: Notre Dame (rooms 27900-27999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #280: Living Motherboard (rooms 28000-28099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #281: Forest of Khanjar (rooms 28100-28199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #282: Infernal Pit of Kerjim (rooms 28200-28299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #283: Haunted House (rooms 28300-28399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #284: Ghenna (rooms 28400-28499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #285: Descent to Hell II (rooms 28500-28599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #286: Descent to Hell (rooms 28600-28699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #287: Ofingia and the Goblin Town (rooms 28700-28799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #288: Galaxy (rooms 28800-28899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #289: Werith's Wayhouse (rooms 28900-28999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #290: Lizard Lair Safari (rooms 29000-29099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #291: Black Forest (rooms 29100-29199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #292: Kerofk (rooms 29200-29299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #293: Kerofk II (rooms 29300-29399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #294: Trade Road (rooms 29400-29499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #295: Jungle (rooms 29500-29599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #296: Froboz Fun Factory (rooms 29600-29699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #298: Castle of Desire (rooms 29800-29899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #299: Abandoned Cathedral (rooms 29900-29999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #300: Ancalador (rooms 30000-30099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #301: Campus (rooms 30100-30199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #302: Campus II (rooms 30200-30299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #303: Campus III (rooms 30300-30399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #304: Temple of the Bull (rooms 30400-30499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #305: Chessboard (rooms 30500-30599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #306: Newbie Tree (rooms 30600-30699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #307: Castle (rooms 30700-30799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #308: Baron Cailveh (rooms 30800-30899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #309: Keep of Baron Westlawn (rooms 30900-30999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #310: Graye Area (rooms 31000-31099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #311: The Dragon's Teeth (rooms 31100-31199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #312: Leper Island (rooms 31200-31299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #313: Farmlands of Ofingia (rooms 31300-31399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #314: X'Raantra's Altar of Sacrifice (rooms 31400-31499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #315: McGintey Business District (rooms 31500-31599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #316: McGintey Guild Area (rooms 31600-31699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #317: Wharf (rooms 31700-31799).
|
||||
Jan 26 21:38:52 2026 :: Resetting #318: Dock Area (rooms 31800-31899).
|
||||
Jan 26 21:38:52 2026 :: Resetting #319: Yllythad Sea (rooms 31900-31999).
|
||||
Jan 26 21:38:52 2026 :: Resetting #320: Yllythad Sea II (rooms 32000-32099).
|
||||
Jan 26 21:38:52 2026 :: Resetting #321: Yllythad Sea III (rooms 32100-32199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #322: McGintey Bay (rooms 32200-32299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #323: Caverns of the Pale Man (rooms 32300-32399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #324: Army Encampment (rooms 32400-32499).
|
||||
Jan 26 21:38:52 2026 :: Resetting #325: Revelry (rooms 32500-32599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #326: Army Perimeter (rooms 32600-32699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #343: God Complex (rooms 34300-34399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #345: Asylum for the Insane (rooms 34500-34599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #346: God Hall Ext 346 for God Hall Cmplx (rooms 34600-34699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #491: Grenzland Building (rooms 49100-49199).
|
||||
Jan 26 21:38:52 2026 :: Resetting #492: The Library Maze (rooms 49200-49299).
|
||||
Jan 26 21:38:52 2026 :: Resetting #555: Ultima (rooms 55500-55599).
|
||||
Jan 26 21:38:52 2026 :: Resetting #556: Ultima II (rooms 55600-55699).
|
||||
Jan 26 21:38:52 2026 :: Resetting #653: Apartment (rooms 65300-65399).
|
||||
Jan 26 21:38:52 2026 :: Resetting #654: Subdivision (rooms 65400-65499).
|
||||
Jan 26 21:38:52 2026 :: Boot db -- DONE.
|
||||
Jan 26 21:38:52 2026 :: Signal trapping.
|
||||
Jan 26 21:38:52 2026 :: Entering game loop.
|
||||
Jan 26 21:38:52 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:39:50 2026 :: New connection. Waking up.
|
||||
Jan 26 21:39:57 2026 :: Karrn has connected.
|
||||
Jan 26 21:40:02 2026 :: Karrn had no variable file
|
||||
Jan 26 21:40:02 2026 :: Karrn retrieving crash-saved items and entering game.
|
||||
Jan 26 21:40:02 2026 :: Karrn (level 1) has 0 objects (max 30).
|
||||
Jan 26 21:41:03 2026 :: Karrn has quit the game.
|
||||
Jan 26 21:41:11 2026 :: PCLEAN: karrn Lev: 1 Last: Mon Jan 26 21:39:55 2026
|
||||
Jan 26 21:41:11 2026 :: Karrn (lev 1) has self-deleted.
|
||||
Jan 26 21:41:11 2026 :: Losing player: Karrn.
|
||||
Jan 26 21:41:11 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:41:14 2026 :: New connection. Waking up.
|
||||
Jan 26 21:41:31 2026 :: Boggins [localhost] new player.
|
||||
Jan 26 21:41:35 2026 :: Boggins had no variable file
|
||||
Jan 26 21:41:35 2026 :: Boggins entering game with no equipment.
|
||||
Jan 26 21:44:35 2026 :: Boggins has quit the game.
|
||||
Jan 26 21:44:40 2026 :: Losing player: Boggins.
|
||||
Jan 26 21:44:40 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:44:42 2026 :: New connection. Waking up.
|
||||
Jan 26 21:44:55 2026 :: nusage: 1 sockets connected, 0 sockets playing
|
||||
Jan 26 21:45:01 2026 :: Losing player: Butterbart.
|
||||
Jan 26 21:45:01 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:45:02 2026 :: New connection. Waking up.
|
||||
Jan 26 21:45:11 2026 :: Losing player: Alex.
|
||||
Jan 26 21:45:11 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:45:12 2026 :: New connection. Waking up.
|
||||
Jan 26 21:45:29 2026 :: Karrn [localhost] new player.
|
||||
Jan 26 21:45:34 2026 :: Losing player: Karrn.
|
||||
Jan 26 21:45:34 2026 :: No connections. Going to sleep.
|
||||
Jan 26 22:56:13 2026 :: New connection. Waking up.
|
||||
Jan 26 22:56:20 2026 :: Losing player: <null>.
|
||||
Jan 26 22:56:20 2026 :: No connections. Going to sleep.
|
||||
Jan 26 22:58:37 2026 :: New connection. Waking up.
|
||||
Jan 26 22:58:46 2026 :: Alex has connected.
|
||||
Jan 26 22:58:58 2026 :: Alex had no variable file
|
||||
Jan 26 22:58:58 2026 :: Alex un-renting and entering game.
|
||||
Jan 26 22:58:58 2026 :: Alex (level 5) has 26 objects (max 30).
|
||||
Jan 26 23:02:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:07:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:12:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:16:09 2026 :: Alex advanced 1 level to level 6.
|
||||
Jan 26 23:17:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:22:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:27:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:32:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:37:53 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 26 23:40:31 2026 :: Alex has quit the game.
|
||||
Jan 26 23:40:37 2026 :: Losing player: Alex.
|
||||
Jan 26 23:40:37 2026 :: No connections. Going to sleep.
|
||||
Jan 27 10:57:27 2026 :: New connection. Waking up.
|
||||
Jan 27 10:57:32 2026 :: Butterbart has connected.
|
||||
Jan 27 10:57:35 2026 :: Butterbart had no variable file
|
||||
Jan 27 10:57:35 2026 :: Butterbart un-renting and entering game.
|
||||
Jan 27 10:57:35 2026 :: Butterbart (level 7) has 31 objects (max 30).
|
||||
Jan 27 10:59:42 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 27 11:02:57 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 11:02:57 2026 :: Closing link to: Butterbart.
|
||||
Jan 27 11:02:57 2026 :: No connections. Going to sleep.
|
||||
Jan 27 11:27:45 2026 :: New connection. Waking up.
|
||||
Jan 27 11:27:52 2026 :: Butterbart [aftr-62-216-209-15.dynamic.mnet-online.d] has reconnected.
|
||||
Jan 27 11:28:23 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 11:28:23 2026 :: Closing link to: Butterbart.
|
||||
Jan 27 11:28:23 2026 :: No connections. Going to sleep.
|
||||
Jan 27 12:50:13 2026 :: New connection. Waking up.
|
||||
Jan 27 12:50:25 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 12:50:25 2026 :: Losing descriptor without char.
|
||||
Jan 27 12:50:25 2026 :: No connections. Going to sleep.
|
||||
Jan 27 13:34:42 2026 :: New connection. Waking up.
|
||||
Jan 27 13:34:59 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 13:34:59 2026 :: Losing descriptor without char.
|
||||
Jan 27 13:34:59 2026 :: No connections. Going to sleep.
|
||||
Jan 27 15:14:36 2026 :: New connection. Waking up.
|
||||
Jan 27 15:14:50 2026 :: Butterbart [aftr-62-216-209-15.dynamic.mnet-online.d] has reconnected.
|
||||
Jan 27 15:15:14 2026 :: nusage: 1 sockets connected, 1 sockets playing
|
||||
Jan 27 15:17:59 2026 :: Butterbart has quit the game.
|
||||
Jan 27 15:18:00 2026 :: Losing player: Butterbart.
|
||||
Jan 27 15:18:00 2026 :: No connections. Going to sleep.
|
||||
Jan 27 20:03:26 2026 :: New connection. Waking up.
|
||||
SYSERR: gethostbyaddr: Success
|
||||
Jan 27 20:03:28 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 20:03:28 2026 :: Losing player: <null>.
|
||||
Jan 27 20:03:28 2026 :: No connections. Going to sleep.
|
||||
Jan 27 20:03:28 2026 :: New connection. Waking up.
|
||||
SYSERR: gethostbyaddr: Success
|
||||
Jan 27 20:03:30 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 20:03:30 2026 :: Losing player: <null>.
|
||||
Jan 27 20:03:30 2026 :: No connections. Going to sleep.
|
||||
Jan 27 20:08:09 2026 :: New connection. Waking up.
|
||||
Jan 27 20:08:10 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 20:08:10 2026 :: Losing descriptor without char.
|
||||
Jan 27 20:08:10 2026 :: WARNING: Attempting to get content from iterator with NULL list.
|
||||
Jan 27 20:08:10 2026 :: WARNING: Attempting to remove iterator from NULL list.
|
||||
Jan 27 20:08:10 2026 :: No connections. Going to sleep.
|
||||
Jan 27 21:19:25 2026 :: New connection. Waking up.
|
||||
Jan 27 21:19:31 2026 :: Butterbart has connected.
|
||||
Jan 27 21:19:32 2026 :: Butterbart had no variable file
|
||||
Jan 27 21:19:32 2026 :: Butterbart un-renting and entering game.
|
||||
Jan 27 21:19:32 2026 :: Butterbart (level 7) has 30 objects (max 30).
|
||||
Jan 27 21:20:42 2026 :: Butterbart has quit the game.
|
||||
Jan 27 21:20:44 2026 :: Losing player: Butterbart.
|
||||
Jan 27 21:20:44 2026 :: No connections. Going to sleep.
|
||||
Jan 27 21:43:57 2026 :: New connection. Waking up.
|
||||
SYSERR: gethostbyaddr: Success
|
||||
Jan 27 21:43:57 2026 :: Losing descriptor without char.
|
||||
Jan 27 21:43:57 2026 :: WARNING: Attempting to get content from iterator with NULL list.
|
||||
Jan 27 21:43:57 2026 :: WARNING: Attempting to remove iterator from NULL list.
|
||||
Jan 27 21:43:57 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:16 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:19 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:19 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:19 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:19 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:22 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:22 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:22 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:23 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:26 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:26 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:26 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:26 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:29 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:29 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:29 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:29 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:33 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:33 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:33 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:33 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:36 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:36 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:36 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:36 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:39 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:39 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:39 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:40 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:43 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:43 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:43 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:43 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:46 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:46 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:46 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:46 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:50 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:50 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:50 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:50 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:53 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:53 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:53 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:53 2026 :: New connection. Waking up.
|
||||
Jan 27 22:33:56 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:33:56 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:33:56 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:33:57 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:00 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:00 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:02 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:02 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:03 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:03 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:06 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:06 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:06 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:06 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:08 2026 :: nusage: 1 sockets connected, 0 sockets playing
|
||||
Jan 27 22:34:09 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:09 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:09 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:09 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:13 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:13 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:13 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:13 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:16 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:16 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:16 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:16 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:20 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:20 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:20 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:20 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:23 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:23 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:23 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:23 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:26 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:26 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:26 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:27 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:30 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:30 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:30 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:30 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:33 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:33 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:33 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:33 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:37 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:37 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:37 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:37 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:40 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:40 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:40 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:40 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:44 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:44 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:44 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:44 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:47 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:47 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:47 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:47 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:50 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:50 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:50 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:51 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:54 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:54 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:54 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:54 2026 :: New connection. Waking up.
|
||||
Jan 27 22:34:57 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:34:57 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:34:57 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:34:57 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:01 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:01 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:01 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:01 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:04 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:04 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:04 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:04 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:08 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:08 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:08 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:08 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:11 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:11 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:11 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:11 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:15 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:15 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:15 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:15 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:19 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:19 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:19 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:19 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:22 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:22 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:22 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:23 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:26 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:26 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:26 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:26 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:30 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:30 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:30 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:30 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:33 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:33 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:33 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:34 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:37 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:37 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:37 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:37 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:40 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:40 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:40 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:40 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:44 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:44 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:44 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:44 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:47 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:47 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:47 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:47 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:51 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:51 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:51 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:51 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:54 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:54 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:54 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:54 2026 :: New connection. Waking up.
|
||||
Jan 27 22:35:57 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:35:57 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:35:57 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:35:58 2026 :: New connection. Waking up.
|
||||
Jan 27 22:36:01 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:36:01 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:36:01 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:36:01 2026 :: New connection. Waking up.
|
||||
Jan 27 22:36:04 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:36:04 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:36:04 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:36:04 2026 :: New connection. Waking up.
|
||||
Jan 27 22:36:08 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:36:08 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:36:08 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:36:08 2026 :: New connection. Waking up.
|
||||
Jan 27 22:36:11 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:36:11 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:36:11 2026 :: No connections. Going to sleep.
|
||||
Jan 27 22:36:11 2026 :: New connection. Waking up.
|
||||
Jan 27 22:36:15 2026 :: WARNING: EOF on socket read (connection broken by peer)
|
||||
Jan 27 22:36:15 2026 :: Losing descriptor without char.
|
||||
Jan 27 22:36:15 2026 :: No connections. Going to sleep.
|
||||
30
syslog.CRASH
Normal file
30
syslog.CRASH
Normal file
@@ -0,0 +1,30 @@
|
||||
Jan 26 21:34:49 2026 :: Resetting #318: Dock Area (rooms 31800-31899).
|
||||
Jan 26 21:34:49 2026 :: Resetting #319: Yllythad Sea (rooms 31900-31999).
|
||||
Jan 26 21:34:49 2026 :: Resetting #320: Yllythad Sea II (rooms 32000-32099).
|
||||
Jan 26 21:34:49 2026 :: Resetting #321: Yllythad Sea III (rooms 32100-32199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #322: McGintey Bay (rooms 32200-32299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #323: Caverns of the Pale Man (rooms 32300-32399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #324: Army Encampment (rooms 32400-32499).
|
||||
Jan 26 21:34:49 2026 :: Resetting #325: Revelry (rooms 32500-32599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #326: Army Perimeter (rooms 32600-32699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #343: God Complex (rooms 34300-34399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #345: Asylum for the Insane (rooms 34500-34599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #346: God Hall Ext 346 for God Hall Cmplx (rooms 34600-34699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #491: Grenzland Building (rooms 49100-49199).
|
||||
Jan 26 21:34:49 2026 :: Resetting #492: The Library Maze (rooms 49200-49299).
|
||||
Jan 26 21:34:49 2026 :: Resetting #555: Ultima (rooms 55500-55599).
|
||||
Jan 26 21:34:49 2026 :: Resetting #556: Ultima II (rooms 55600-55699).
|
||||
Jan 26 21:34:49 2026 :: Resetting #653: Apartment (rooms 65300-65399).
|
||||
Jan 26 21:34:49 2026 :: Resetting #654: Subdivision (rooms 65400-65499).
|
||||
Jan 26 21:34:49 2026 :: Boot db -- DONE.
|
||||
Jan 26 21:34:49 2026 :: Signal trapping.
|
||||
Jan 26 21:34:49 2026 :: Entering game loop.
|
||||
Jan 26 21:34:49 2026 :: No connections. Going to sleep.
|
||||
Jan 26 21:36:26 2026 :: New connection. Waking up.
|
||||
Jan 26 21:36:53 2026 :: Karrn [localhost] new player.
|
||||
Jan 26 21:37:11 2026 :: Karrn had no variable file
|
||||
Jan 26 21:37:11 2026 :: Karrn entering game with no equipment.
|
||||
Jan 26 21:38:19 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
|
||||
Quick boot mode -- rent check supressed.
|
||||
Using file descriptor for logging.
|
||||
Improper shutdown of autorun detected, rotating syslogs before startup.
|
||||
Reference in New Issue
Block a user