Discworld MUD (FluffOS bundle, v1)

✅ 可玩

Discworld MUD lib (v1)

dw_fluffos_v1

更新 61907b2 2026-09-13 源码 下载 ZIP

▶ 开始游玩 · Play Now

Cratylus Discworld FluffOS bundle 的最早快照。mudlib 与已转换的`discworld`(v3)同系,单独转档。端口 40271。

English

The earliest of three Cratylus Discworld FluffOS-bundle snapshots in this collection (bundled fluffos-1.22c11 driver ignored). Same official Discworld mudlib as libs/discworld (v3), converted independently from dw_fluffos_v1/lib/ and given the same mechanical FluffOS-compat fixes (virtual.h self-include, add_method("lpc"), .ob #Class suffixes, command.lpc [0..<5], add_action catch-all "*" -> ""). Port 40271.

README

新角色落在 Ankh-Morpork 卷心菜仓库客栈的圆形 Discworld Room。登录 是英文名 + 密码;管理员账号尚未在本快照播种,走普通注册即可。

WASM status: playable. Pumpkin menu + terms + landing in the circular Discworld Room is verified under the shared WASM driver (NOTES.md WASM section). Play: https://mudlibs.fluffos.info/dw_fluffos_v1/

NOTES · 移植与修复记录

dw_fluffos_v1(Discworld bundle v1)-- porting notes

archives/901_dw_fluffos_v1_dw_fluffos_v1.tar.gz 是 Cratylus「Discworld Bundle」三份快照里最早的一份。捆绑的 fluffos-1.22c11/ 驱动按 §2 惯例忽略;mudlib 根是 dw_fluffos_v1/lib/master file : /secure/master)。

原先标 deprioritized,只留 scripts/non_mudlib_meta/dw_fluffos_v1.json。 按用户指示单独转换,不把 v3 的 work/ 当静默 overlay。

convert_lib.sh … GB18030:already_utf8=5945 converted=31 lossy=1 skipped_binary=509;2016 个 .lpc。lossy 是 doc/concepts/conversions(与 v3 相同的 Mac Roman 遗产,见 libs/discworld/NOTES.md)。

从 v3 已验证过的机械修复原样移植到这份独立转换树上(不是拷 libs/discworld/work/):

1. global/virtual/virtual.h#include "virtual.h" 改回 #include <virtual.h>(convert_lib 本地尖括号启发式自包含)。 2. global/virtual/server.lpcadd_method("lpc", …)。 3. 76 个 .ob::#Class:: "….c".lpc。 4. secure/command.lpc 指令名切片 [0..<3][0..<5]。 5. obj/{armour,clothing,shield,clothing_transport}.lpc__FILE__[0..<3][0..<5]。 6. 五处 add_action(fn, "*", …) 改成这个驱动认的 "" 万能动词; living/psoul 第三参改成 V_NOSPACE(2)。

另外从 v3 移植的开机阻断修复:

端口 40271。编号 901-1。已确认开机并出现南瓜菜单登录界面 (N/G/角色名)。客串角色创建能走到条款页;完整 look 还要按 v3 那样 把条款 more 翻完。

商店切片(2026-09-04)

英文 Discworld:shop/buy 是本轮角度;没有拜师。端口 40271, ~/src/fluffos/build-debug/src/driver config.fluffosconfig.fluffoslog directory : /log 是文件系统绝对路径,本机没有 /log,驱动 debug.log 对本 boot 是死的(fd 里没有 log 文件)。以 mudlib 自己的 work/log/runtime / work/log/catch / work/log/error-log 为准。

南瓜菜单 N 注册(shopdive / torchbuy / torchbee,密码 Play2026x),30 秒条款后 yes,落到 /d/liaison/NEWBIE/foyercommerce 进新手商店 /d/liaison/NEWBIE/shop

发现并修复的 bug

std/living/living.lpc 无条件前向声明 protected mixed command(string),在这个驱动上把真正的 command() efun 阴影成空的 FUNC_UNDEFINED global/psoul.lpc 里真正的 command() 定义包在 #if !efun_defined(add_action) 里,本驱动有原生 add_action,所以 那个定义被编译掉。玩家对象只剩一个空槽。live:第一次进 commerce 门,exit_moveroom_look()command("look")*Undefined function called: commandwork/log/runtime 17:14:17),玩家侧 "A runtime error occurred.",随后心跳停、指令全部 Queued。登录时 move_to_start_pos() 同一条也崩过一次(17:14:04)。这就是 v3 2026-08-27 笔记里把 shop list 标成"排队显示时序问题、未完全验证" 的根因——不是 soul 时序,是每次走门 room_look 都炸。修法与 v3 已有的同一处 guard 相同(import 时没移植过来):把前向声明也包进 #if !efun_defined(add_action)global/wiz_file_comm.lpc::command(txt) 覆盖同样在本驱动上编不过 (Unable to find the inherited function 'command'),一并 #ifdef 掉。修复后冷启动:commerce 走门立刻打出商店房间描述, runtime 不再出现 command 未定义。

global/newbie_junk.lpcstart_player()ARMOURY->request_item("bucket small") 返回值不判空,链式 bucket->set_short(...) 这份 distribution 缺 /obj/clothes/ 等 内容目录,request_item 常返回 0(v3 §7.147 同类)。第一次注册的 shopdive 走到商店后 money 是 "You are flat broke."——启动礼包里的 8 Pumpkin dollar / 100 Pumpkin pence 在崩溃点之后,根本没发出去。 修法:先发钱,再对 armoury/clone 返回值逐段判空。修复后新角色 torchbuy/torchbee 登录即 Your purse contains 8 Pumpkin dollar coins and 100 Pumpkin pence coins.

已验证的商店路径

没有拜师(distribution lib 公会内容未随包,见 libs/discworld/NOTES.md 2026-08-27)。

WASM(leftover 655,2026-09-11)

与 v3 discworld 同一套必经桩:dump_socket_status() 挖空(WASM 无 sockets)、compressedp() 常量化、create_dom_creator.lpccompress_file/uncompress_file 改成 no-op。/net/inherit/server.lpc 预加载仍因 socket_create 失败被跳过(BBS,不在登录路径),与 v3 相同。

node /tmp 一次性 walker(scripts/wasm_client.js 语义,条款前 idle 35s,登录后短间隔):南瓜菜单 N → fluffos / Play2026x / male → 条款 yes → 自动 look 落到 /d/liaison/NEWBIE/foyer(cavernous circular Discworld Room,Great A'Tuin / 四象,九个出口含 commerce, womble 在场)。MCCP 提示 "You are logged in uncompressed!" 证明 compressedp 桩。随后 score/quit 进 Discworld 指令队列(登录 no_time_left() + womble 心跳),与 v3 WASM 笔记同一条队列坑;原生 商店切片已验证 score/quit。wasm_status playable。

Do not invent extra pumpkin rooms. mundoscuro stays limited. realms stays noboot.

深度功能测试(§10.7,2026-09-13)

Native FluffOS boot (~/src/fluffos/build-debug/src/driver config.fluffos from libs/dw_fluffos_v1, port 40271). Fresh pass today after the 2026-09-04 shop slice. Account sectestg / Play2026x (pumpkin menu N register → terms yes → foyer). Later reconnect after driver restart: PID 4074608, cwd libs/dw_fluffos_v1/work.

Playthrough evidence

Logs this boot