The Discworld mudlib bundle that Cratylus fixed up and posted for download at http://www.lpmuds.net/downloads.html is a fine bit of work. It's also, I believe, around 20 years old by now. Whether due to libraries changing around it, or because of ragged edges left by the need to remove actual Discworld content for distribution, it does have some problems that I found I needed to address in order to get it running. ----- NOTE: None of this is intended for use in an actual MUD you are planning to let other people log into. These are hacks meant to get the thing running well enough to evaluate whether I wanted to continue working with it or not. I decided the answer was "not", but thought it might be helpful to take notes anyway in case I ever wanted to try it again. I repeat - do NOT take these as actual fixes to the problems discussed. They're sloppy workarounds at best. ----- * First, I couldn't get this to compile on a 64-bit system. I'm not saying it's impossible to do so, but I got tired of messing with it. Instead, I spun up a 32-bit vm of Debian 12.9 i386 and was able to compile it without any work beyond the recommended ./configure, make dw, etc... * Second problem I found was that I could make a new character and log in with it, but only once. If I ever logged off and then tried to get back in, the prompt would hang and the system's CPU would peg and never recover. I was sure for a while that it was something to do with changes to C's crypt() function over the years, but thankfully that turned out not to be the case. It's a check for the terminal type that's the culprit. ¯\_(ツ)_/¯ I have no idea why that caused this behavior. If I were going to continue using the mudlib I'd have to figure it out eventually, since knowing the terminal type can be pretty important. But I'm not, so I'll just leave the mystery be and let someone else figure it out if and when they need to. To also close your eyes and pretend the problem doesn't exist: ===== Comment out these two lines in lib/secure/login.c::player_login() if(_terminal_name) pl->terminal_type(_terminal_name); ===== * Third, the SQL provided to initialize the error databases isn't valid anymore and won't run. Just a couple changes needed to address added/deprecated keywords here: ===== In lib/db/errors: Change all instances of "TYPE" to "ENGINE", like this: ENGINE=MyISAM There's also a lone "ISAM" entry that needs to be "MyISAM" ===== In lib/db/discworld: Edit this block and change "exit" to "rexit" - --------------------------------------- CREATE TABLE roomexit ( id varchar(255) DEFAULT '' NOT NULL, ---> exit varchar(15), dest varchar(255), KEY bing (id) ); --------------------------------------- CREATE TABLE roomexit ( id varchar(255) DEFAULT '' NOT NULL, rexit varchar(15), dest varchar(255), KEY bing (id) ); ---------------------------------------- Then change "exit" to "rexit" in these two places: ---------------------------------------- obj/handlers/map.c: rows = db_exec(db, "select exit, dest from roomexit where id = '%s'", db_escape(room)); obj/handlers/map.c: rows = db_exec(db, "select exit, dest from roomexit where id = '%s'", db_escape(room)); ---------------------------------------- obj/handlers/map.c: rows = db_exec(db, "select rexit, dest from roomexit where id = '%s'", db_escape(room)); obj/handlers/map.c: rows = db_exec(db, "select rexit, dest from roomexit where id = '%s'", db_escape(room)); ===== * Fourth, there's something broken with the language system. You can use 'say' until you choose a nationality, and then when you try to speak it generates runtime errors. I wasn't interested in messing with languages at the time, so I employed a very lazy hack. If you feel the same, you can edit std/living/nationality.c to make query_nationality_accent always return "pumpkin": ===== string query_nationality_accent_ob() { /** if (_nationality_data && _nationality_data->nationality) { return _nationality_data->nationality->query_region_accent_ob(_nationality_data->region); } */ return "pumpkin"; } ===== This will enable your characters to continue speaking to one and all as though they never chose a nationality to begin with. Hooray!