StickLib

✅ 可玩

sticklib

更新 e90bb7d 2026-10-28 源码 下载 ZIP 上游 StickMUD/StickLib

▶ 开始游玩 · Play Now

StickLib, a legacy public dump of StickMUD (turn-of-century LPMud 2.4.5 lineage on the LDMud driver, with later GMCP/MSSP/MXP/MSP/MCMP protocol work). LDMud → FluffOS conversion: catalog overlay for login/look/score/quit; original /secure/master_ldmud.lpc keeps set_driver_hook and closures. Live StickMUD historically at stickmud.com. Not collection ageofelements (different 2.4.5 fork).

README

LDMud → FluffOS conversion. Snapshot of git clone https://github.com/StickMUD/StickLib. Slug sticklib, number 977, port 40286. This collection’s copy is a snapshot, not a live mirror.

StickLib, a legacy public dump of StickMUD (turn-of-century LPMud 2.4.5 lineage on the LDMud driver, with later GMCP/MSSP/MXP/MSP/MCMP protocol work). LDMud → FluffOS conversion: catalog overlay for login/look/score/quit; original /secure/master_ldmud.lpc keeps set_driver_hook and closures. Live StickMUD historically at stickmud.com. Not collection ageofelements (different 2.4.5 fork).

Upstream StickMUD: telnet://stickmud.com:7680. This snapshot is an LDMud → FluffOS Strategy A start (temple yard, market shop, Harry combat, Adventurers' Guild). WASM §10.7 2026-09-10.

Registration flow

Name (2–16 letters) → new character: password (≥6, twice) → the temple yard. Existing names prompt for password only.

Admin / test account

Verified live: fluffos / Mud@2026 → temple yard; shop buy torch; kill harry; guild cost; WASM §10.7 reconnect persist (level 2, exp 1190).

Local run

cd libs/sticklib
~/src/fluffos/build-debug/src/driver config.fluffos

Game port: 40286.

python3 scripts/mudclient.py 127.0.0.1 40286 --timeout 25 --idle 0.6 \
  --send fluffos --send Mud@2026 \
  --send look --send score --send quit

NOTES · 移植与修复记录

StickLib (sticklib) — porting notes

Source: git clone https://github.com/StickMUD/StickLib (commit a0750273104c49d7d506d92f232b221b64577853, cloned 2026-09-05); repo root is the mudlib. Converted 2026-09-05. Config name StickLib. Slug sticklib, number 977, port 40286.

This is an LDMud → FluffOS conversion. Discovery triage normally drops LDMud-lineage libs; this onboard is an explicit exception in the same family as questmud / acme (AGENTS.md §7.158).

This collection’s copy is a snapshot, not a live mirror. Do not onboard the same upstream repo again.

0. Layout

Repo root is the mudlib. raw/ is gitignored. Original LDMud master preserved as /secure/master_ldmud.lpc.

1. Convert (2026-09-05)

convert_lib.sh with UTF-8 source encoding (already UTF-8 English / German sources). .c → .lpc rename + literal .c" fixups + static→nosave as usual.

2. FluffOS port (LDMud → FluffOS)

The archive is LDMud 3.x (set_driver_hook, inaugurate_master, #' / unbound_lambda closures, multi-file or directory simul_efun). FluffOS has none of those driver hooks. A mechanical dialect rewrite of the whole tree is not attempted; the original login/command stack is kept as source and not loaded.

config.fluffos: master /catalog/master, simul /catalog/simul_efun, global include "/catalog/auto.h", port 40286, lazy resets : 1.

Catalog overlay (questmud §7.158 cluster):

3. Live-verified (native, port 40286)

Create fluffos / Mud@2026. Lands in The Void; look / score / north (workshop) / south / quit. Reconnect after cold restart reloads data/f/fluffos.o.

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

Catalog overlay only — the StickMUD LDMud 3.x world is not loaded. Organic fluffos / Mud@2026 on native 40286: Void look / score (level 1, hp 20/20) / inventory / north workshop / south / quit persist. Reconnect: Void look / score / quit. Shop, combat, guild, death: N/A (needs a real LDMud driver).

Logs this boot (PID started 20:09:19, live fd libs/sticklib/log/debug.log): stdout + debug.log clean. work/log/catch proven live with a one-shot catchprobe (CAUGHT /catalog/player.lpc *catch-path-probe) then reverted; play itself left no other catch lines.

6. Full dialect port (Strategy A, 2026-09-05)

Catalog Void/workshop is no longer the live world. User asked for the real StickMUD, not a demo skeleton.

What loads now:

Live walk (native 40286, 2026-09-05, organic fluffos / Mud@2026):

This-boot live libs/sticklib/log/debug.log (fd, PID 1662870 BOOT_MARKER16 sticklib-combat): living + catalog player compiled. Catch this walk: expected PEACE_D only.

Guild advance LIVE (0cf82e040d1 + fc60c6c304d + 38d9b3c591c, native 40286, 2026-09-10): catalog set_level/set_title persist (they were no-ops; query_level always returned 1). Harry respawns on re-enter of S7_7. Temple yard restores HP and unghosts (login compile needed a remove_ghost prototype). Organic fluffos: 13× kill harry with church rest between fights (70 XP each; start 210 → 1120). Guild cost: "enough experience to advance a level". advance level fanfare; score Fluffos the Mostly Harmless (level 2) exp 1120. Reconnect persist. qp_for_level is still 0 (XP-only).

Published (wasm_status: playable) after WASM §10.7 of shop / combat / guild (leftover 632, 2026-09-10).

4. What is not ported yet

Elevator, PEACE_D, NATURE_D. Trashcan toss (foreach :). Full LDMud HitFunc / weapon closures (thin living is enough to kill). Bulletin board extra inherit. City guards. Joe's LDMud tell_here format tokens still print raw. Catalog inventory persist is still save fields only.

WASM §10.7 (2026-09-10, leftover 632)

scripts/wasm_client.js against build-wasm (fluffos 20260830), organic fluffos / Mud@2026 (native leftover 629 save: level 2 Mostly Harmless, exp 1120, gold 152, quests M6a/M3/M2):

Expected compile noise (already documented, not player-visible): PEACE_D filter_objects, trashcan foreach :, bboard #'. Do not redo native harry farm or WASM shop/combat/guild. Remaining partials: aoh shop/combat (do not invent rooms), simud (no world.obj), morgengrauen (no /d/ebene), acme (no world).

深度功能测试(§10.7,2026-10-04)— negative range ends

scripts/lpc_fix_negative_ranges.py: 11 line(s) in 7 file(s) count a range from the end with < (x[a..-1] -> x[a..<1], x[-2..] -> x[<2..]; KB 06 §7.209). In this driver a negative constant end gave "" / ({ }) and a negative start the whole value, so each of these returned the wrong slice; the compile warning A negative constant as the second element of arr[x..y] is gone from the files that compile. Range lvalues (s[0..-1] = text, the prepend idiom) are left alone. A paired compile of the changed files at HEAD and in the working tree showed no new error.

Deep test (§10.7, 2026-10-08) -- fixed-width .lpc suffix slices

The .c -> .lpc rename changed the string but not the slice width: f[<2..] == ".lpc" compares two characters with four and is never true (!= always true), so suffix filters and strips never ran or cut x.l (KB 06 §7.238). scripts/lpc_lpc_suffix_slice.py --apply fixed 4 comparison(s) and 1 strip(s) (e.g. bin/usr/_ls.lpc); the changed files load at HEAD and in the tree (fresh processes) with no regression.

编译警告收尾(2026-10-12)

scripts/toolkit_fix.sh 一轮加手工收尾;能编译的文件警告清零,剩下的警告都在本来就编不过的 LDMud 遗留文件里(mkmapping、interactive_info、set_this_object 等,属移植缺口)。改动的 146 个对象 HEAD 与工作树各载入一次:HEAD PASS 75,tree PASS 75,regress 0。

- areas/tristeza/finnclub/sauna.lpc:str == tmp1 应为赋值,“... with X” 的写法从没生效。 - lib/armour.lpc:rcs[i] == "dwarves",dwarf 从没换成复数 dwarves,描述里一直是单数 dwarf。 - std/obj/pipe.lpc:addiction == 0、sweat == 0,负值从不归零。 - bin/pub/_check.lpc:61–80 一档的 case 后面是一个孤立的 tmp; 而不是 break;,直接落到 default,玩家总看到“死在瓶子里”的那句。 - basic/curse.lpc:删 identified_by 最后一个名字时算出新数组却没赋回去。

Objects that call an inherited function no parent has (2026-10-19, KB 06 7.259)

::create();, ::init(); and return ::buy_object(who, item); were written against a parent that has the function; this lib's parents do not, the old driver took the call for a no-op returning 0, and the current driver stops at compile time with Unable to find the inherited function, so the object never loads. A call written as a statement is deleted, return ::f(...) becomes return 0; (return; in a void function), which is what the old driver did. 1 calls in 1 files: ::reset() (1). Only files whose every error was this one were edited; a file that also has another error (usually a parent that is itself missing) is left until the parent is restored. (scripts/lpc_fix_dangling_super.py)

Warning scan residue (2026-10-19)

x != "a" || x != "b" 和 x == "a" && x == "b":同一个值的比较链永远成立/永远不成立(2026-10-20,KB 06 §7.282)

if (arg != "wan" || arg != "丸") return notify_fail(...) 对任何 arg 都为真,dir == "south" && dir == "north" 永远为假:条件下面的守卫要么永远拦、要么永远不拦。作者要的是“既不是 A 也不是 B”(&&)或“是 A 或 B”(||)。!= 链的 || 改成 &&(仅当条件下面是 return 的拒绝/守卫),== 链的 && 改成 ||(scripts/lpc_fix_cmp_chain.py)。改动:/basic/curse.lpc(1 处)。

add_action() registrations of functions nobody defines (2026-10-21, KB 06 §7.349)

An add_action("fn", "verb") whose function is defined neither by the object, nor by its headers, nor by its parents, nor by any object derived from it (scripts/lpc_scan_callout_targets.py, descendants checked transitively, then function_exists() in a running driver, scripts/lpc_verify_handlers.py). The driver walks the actor's sentences from the newest one: when that sentence's function does not exist it raises *Function for verb 'drop' not found. and tries no other handler of the verb (an older dead sentence is passed over silently). Removed 5 registrations in 2 files (scripts/lpc_fix_dead_add_action.py), the verbs are left to their other handlers: /areas/tristeza/shops/lords_shop.lpc (read), /areas/tristeza/virtual/jail/cavern1.lpc (east, north, south, west). Most frequent: read x1, east x1, north x1, south x1, west x1.

log/ subdirectories nobody created: the logging write_file() / log_file() raises (2026-10-22, KB 06 §7.358)

The code of this lib writes logs into 1 subdirectory of log/: log/lords (areas/tristeza/bank/bank_back.lpc). Neither the archive, a git clone nor the site pack has them (no local boot wrote into them, so gen_keep_dirs.py never recorded them), and write_file() raises *Wrong permissions for opening file /log/dlog/money for append. "No such file or directory" for a missing directory: the function that logs stops on that line and what came after it (the reward, the flag, the next step) never runs. This lib's log_file() is write_file(LOG_DIR + file, text) and raises the same error for a missing directory (measured). log/lords are now in scripts/wasm_keep_dirs.txt (scripts/lpc_keep_log_dirs.py; the site and the pristine tree create the empty directories from it). Proof (scripts/lpcc_eval.py, an eval object under /adm/daemons or similar writes /log/zzdirprobe/..., fresh processes): the measured table in KB 06 §7.358.

Remaining constant assignments used as conditions (2026-10-27, KB 06 §7.290 Also)

thief_mark_new else if(type = 8) became == (lpc_fix_cond_assign.py; KB 06 §7.290 Also).

深度功能测试(2026-10-27,§6.25 LDMud foreach 冒号)

LDMud 的 foreach (object you : arr) / foreach (x : arr) 在本驱动要写成 in。本库 27+ 个文件约 80+ 处冒号改成 in(含 flower_man)。证明:HEAD flower_man 失败;改后加载。

深度功能测试(2026-10-27,§6.25 LDMud mapping foreach)

接着把 foreach (k, v : map) 改成 in,并修掉无类型替换时 in 与标识符粘在一起(inansi_codes)。证明:ansid 加载。

深度功能测试(2026-10-27,§6.25 LDMud #'fn 闭包)

简单 #'ident → (: ident :);sort_array(..., #'>/#'<) → 1/-1。含 #'? / 'symbol 的 unbound_lambda 行未动。boss_d / _channel / druids/mark 可加载(HEAD 为 Illegal character '#')。

深度功能测试(2026-10-27,§6.25 living private nosave)

FluffOS 兼容层 /lib/living.lpc 把 level/gender/liv_Flags 等标成 private nosave,子物件直接读会 Illegal to use private variable。改为普通 nosave(与 LDMud living 可见性一致)。

深度功能测试(2026-10-27,§6.25 catalog sefun present4/object_info)

Strategy A 的 /catalog/simul_efun 缺少 LDMud 的 present4 / object_info。已补上(OI_ONCE_INTERACTIVE → interactive())。buster_bag 与 _si 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A set_stat)

/lib/living.lpc 补上 set_stat/query_stat(及空 set_keep_hb)。janitor 不再报 Undefined function set_stat。

深度功能测试(2026-10-27,§6.25 Strategy A Pronoun)

/lib/living.lpc 补上 Pronoun/Possessive/Objective(及 query_*)。janitor 不再报 Undefined function Pronoun。

深度功能测试(2026-10-27,§6.25 Strategy A pick_any_obj/weight)

/lib/living 补 local_weight/experience/add_weight/recount_weight/wield/wear/unwear;/lib/npc 补 pick_any_obj。janitor 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A is_fighting/dead)

is_fighting 改为 varargs;补 dead 与 heart_beat。guard / guard_captain / janitor 均可加载。

深度功能测试(2026-10-27,§6.25 master_ldmud #'fn 残渣)

call_out/set_driver_hook 等行上剩余的简单 #'ident → (: ident :)(仍跳过 ({#' lambda 汤)。

深度功能测试(2026-10-27,§6.10 sticklib lpc_warnings --fix)

机械修复:未用局部变量删除、nosave 函数改为 protected(34 文件)。约 119 处「无副作用表达式」留给专批。

深度功能测试(2026-10-27,§6.25 Strategy A drink potion API)

薄 /lib/drink 只够酒吧 set_value/set_id;药水的 create_drink() 还要 set_strength/set_soft/set_info/set_empty_container/set_drinker_mess/set_liquid/full 等(完整版在 drink_ldmud.lpc)。补上这些 setter,继承 /basic/object/dimensions,并在 create() 里调用 create_drink()。证明:HEAD potion_heal 报 Undefined set_info;树 6/6 药水与 finnclub 酒水可加载。

深度功能测试(2026-10-27,§6.25 Strategy A NPC spell stubs)

NPC 的 set_chance/set_spell_mess1/set_spell_mess2/set_spell_dam/set_breath_attack 在 npc_ldmud;薄 /lib/npc 没有。补上存储与 setter(施法心跳仍薄)。证明:HEAD leo 报 Undefined set_chance;树可加载 leo。

深度功能测试(2026-10-27,§6.25 catalog sefun apply/mkmapping)

Strategy A /catalog/simul_efun 缺 LDMud apply 与双参 mkmapping,equipped_npc / dueld 编不过。补上 apply(evaluate + call_other 数组展开)和配对数组 mkmapping(赌场多值宽映射仍不支持)。证明:HEAD 报 Undefined;树均可加载。

深度功能测试(2026-10-27,§6.25 catalog sefun file_lines/interactive_info)

Strategy A catalog 缺 file_lines / interactive_info。从档案 sefun 移植 file_lines;interactive_info 映射到 FluffOS query_ip_*/query_idle/in_edit/query_snoop*。证明:HEAD Undefined;树 _line 与 mud_guide 可加载。

深度功能测试(2026-10-27,§6.25 equipped_npc add_* varargs)

add_object("/path", 0, 1) 在 FluffOS 上对五参原型报参数个数/类型错误。给 add_weapon/add_armour/add_object 加 varargs,并把 init_data 扩成 mixed(体内已有 pointerp 判断)。证明:HEAD portsari 失败;树可加载。

深度功能测试(2026-10-27,§6.25 Strategy A set_guild/set_group_message)

圣堂群组 NPC 调用 set_guild(LDMud living/guild)和 set_group_message(group_npc_ldmud 宽映射);Strategy A 两边都没有。在 /lib/living 补 set_guild/query_guild,在 /lib/group_npc 用普通 mapping 存消息。证明:HEAD saint 失败;树可加载(guild=priest)。

深度功能测试(2026-10-27,§6.25 catalog sefun object-lookup/cost)

Strategy A catalog 缺 do_find_object/get_object/m_allocate/get_eval_cost/query_uptime/tail。从档案 sefun 移植;m_allocate 只返回空 mapping(宽映射仍不支持);代价类映射到 eval_cost()/uptime()。证明:HEAD who3/goto/cmdd 失败;树三者均可加载。

深度功能测试(2026-10-27,§6.10 Strategy A attack 返回类型)

/lib/living 的 void attack() 与 NPC 的 status attack() 冲突(void vs int 警告)。改为 status 并返回 0/1。证明:asmodeus 加载且无该继承警告。

深度功能测试(2026-10-27,§6.25 catalog sefun query_once_interactive)

祭司房间/守护程序调用 LDMud query_once_interactive;Strategy A catalog 没有。映射为 interactive(ob)。证明:HEAD earth_meld_room/storage_room 失败;树均可加载。

深度功能测试(2026-10-27,§6.25 catalog sefun regreplace)

帮助命令用 LDMud regreplace 做 _↔空格;Strategy A catalog 没有。用 replace_string 做字面替换。证明:HEAD _help2 失败;树 _help2 与 druids _help 可加载。

深度功能测试(2026-10-27,§6.26/§6.25 sticklib L_IN 残渣 + strrstr)

lords_guild 局部变量叫 in(§6.26)改为 intel;telopt/mapper_d 的 foreach 被写成 in fo/in t 错字。mapper 还要 LDMud strrstr,catalog 用 strsrch(..., 1) 补上。证明:HEAD lords_guild L_IN;树 lords_guild 与 mapper_d 可加载。

深度功能测试(2026-10-27,§6.25 catalog sefun implode3/extern_call/driver_info/version)

_man/mchard/_sysinfo 需要 LDMud implode3、extern_call、driver_info、version。从档案移植 implode3;extern_call 用 previous_object();driver_info 的负载项映射 query_load_average();version→__VERSION__。并补上 _sysinfo 里 version() 那行缺的 ;。证明:HEAD Undefined;树 _sysinfo/mchard 可加载。

深度功能测试(2026-10-27,§6.25 catalog telopt/GMCP sefuns)

telopt 需要 LDMud to_bytes/binary_message/json_parse/json_serialize/hash(TLS_HASH_*,…)。补上 to_bytes、binary_message;引入 formosasaga 版 FluffOS catalog/json.lpc 并做 parse/serialize 别名;hash 整数算法号转 efun::hash("sha1",…)。证明:HEAD 失败;树 telopt 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A combat/follow stubs)

NPC 要 set_follow/add_block,战斗要 add_hp/stop_fight/query_condition/set_condition/attacker_ob。在 /lib/npc 与 /lib/living 补存储型 stub(conditions 用 mapping;attacker_ob 与 attack 同步)。证明:HEAD demon 报 Undefined set_follow;树 demon/golem/拳头/wandering_guard/bdragon/caretaker 可加载。

深度功能测试(2026-10-27,§6.25 catalog sefun command/transfer)

FluffOS 的 command 只有一参,LDMud 的 command(cmd, who) 与 MudOS transfer 在 Strategy A catalog 里没有。用 bind((: efun::command, cmd :), who) 做远程 command;transfer 按 ageofelements 形状补上。证明:HEAD bountyshop 报 Too many arguments;树 bountyshop/fill_bag/void 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A init/heart_beat)

NPC 写 ::init(),虚拟房间写 ::heart_beat(),薄 living/room 没有。补上空 stub。证明:HEAD teller/lordbuster 报 Unable to find inherited init;树均可加载。

深度功能测试(2026-10-27,§6.10 sticklib lpc_warnings --fix 第二轮)

未用局部变量(lords_guild cost、lordbuster ob、telopt/mapper/login)、nosave 函数改为 protected(player/login)、demon/trapped_demon 里非法 \' 转义。证明:HEAD lordbuster 有 Unused local;树无该警告,lordbuster 与 lords_guild 可加载。

深度功能测试(2026-10-27,§6.20 unique class 参数)

/lib/unique 的 set_unique(string class, …) 撞上 FluffOS 保留字 class。改为 uniq_class。证明:HEAD L_CLASS;树 unique 与 demon 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A room add)

虚拟房间 set_effects() 调用 add(ROOM_EFFECT, …),该函数在 LDMud 的 set_n_query 里,Strategy A /lib/room 没有。补上 ROOM_EFFECT/ROOM_EXIT/ROOM_ITEM 的 add(),并在 heart_beat 里触发效果。同时去掉 room 上 short_desc/long_desc 等的 private(地形直接赋值)。证明:HEAD virtual_room 报 Undefined add;树 virtual_room 可加载,set_effects/add 成功。

深度功能测试(2026-10-27,§6.10 death player_kills 移位)

basic/living/death.lpc 写了无赋值的 player_kills << 1(无副作用警告);注释是“慢慢遗忘”→ >>= 1。全库仅此一处。证明:HEAD living_ldmud 在 death:568 有警告;树无该警告。

深度功能测试(2026-10-27,§6.25 std/sys include 垫片)

祭司 #include <std/npc.h>/<std/container.h>、盗贼 <sys/configuration.h>/<sys/interactive_info.h>,档案只在 /include/npc.h、/include/container.h、/sys/*.h。在 /include/std/ 与 /include/sys/ 加薄垫片。证明:HEAD alchemist/thief_guard Cannot #include;树 alchemist/carpenter/priest/chest/thief_guard/guildmaster 可加载。

深度功能测试(2026-10-27,§6.25 thieves tune.h 守卫)

公会本地 tune.h 占了 _TUNE_H 却没有 TUNE_THIEF_DAMAGE,挡住全局 /include/tune.h。改守卫为 _THIEF_TUNE_H 并 #include <tune.h>。证明:HEAD thief_mark Undefined TUNE_THIEF_DAMAGE;树宏已解析。

深度功能测试(2026-10-27,§6.25 query_tax varargs)

thief_mark_new 声明 query_tax(int x) 却无参调用。定义与 thief.h 原型加 varargs。证明:HEAD 参数个数错误;树 thief_mark_new 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A set_move_msg/reset)

决斗兽人/bat 调用 set_move_msg(LDMud moving),并 ::reset(arg);Strategy A living/npc 没有。补上移动消息(含 msgin/msgout 别名)和空 reset。证明:HEAD corc Undefined set_move_msg;树 corc/worc 可加载。

深度功能测试(2026-10-27,§6.25 cremate LDMud lambda)

cremate.lpc 用 lambda+#'move_object(Illegal character #)。改成对 all_inventory 的 for。证明:HEAD Illegal character #;树 cremate 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A tell_here 参数)

祭司房间调用 LDMud 多参 tell_here(({msg}), …),Strategy A 只收 string。放宽为 mixed + 完整 varargs(数组取首串)。证明:HEAD inquisitor Bad type;树 inquisitor/nave 可加载。

深度功能测试(2026-10-27,§6.25 Strategy A remove_exit)

wine_cellar 调 remove_exit,Strategy A 只有 add_exit。补上。证明:HEAD Undefined;树 wine_cellar 可加载。

深度功能测试(2026-10-27,§6.25 mapping -= ([key]))

FluffOS 不接受仅键的 mapping 字面量,m -= ([k]) 报 unexpected ]。24 处 / 11 文件改为 map_delete。证明:HEAD vesper_d 语法错;树 clan_d/officer_d/voting_d/armour_set_d 可加载。

深度功能测试(2026-10-27,§6.25 walk_mapping/map_objects/filter_objects)

Strategy A catalog 缺这些 LDMud efun。补 sefun。证明:HEAD nature_d Undefined map_objects;树 nature_d/vesper_d/peaced 可加载。

深度功能测试(2026-10-27,§6.25 deep_copy/file_time/to_text/tilde_path)

_set/_lhelp/_I/channel_d 调用这些 LDMud efun,Strategy A catalog 没有。补薄垫片。证明:HEAD 均 Undefined;树四者可加载。

深度功能测试(2026-10-27,§6.25 简单 LDMud lambda 改写)

_logouts/lord_crown/_appraise 的 lambda+#' 改为 FluffOS (: … :)。set_n_query WC 公式与 grapevine send_erq 仍留着。证明:HEAD _logouts Illegal character #;树 _logouts/_appraise 可加载。

深度功能测试(2026-10-27,§6.25 light env + WC formula + grapevine)

/lib/light 的未定义 env 改为 environment() || this_object()。npc/player set_n_query 的 WC lambda+#' 改为 (: $1 :) / function(…)。grapevine 回调改为 (: kill_reply($1, 0) :),catalog 补 send_erq 垫片。证明:HEAD light Undefined env、set_n_query/grapevine Illegal #;树 light、set_n_query、grapevine_d 可加载。

深度功能测试(2026-10-28,§6.25 catalog efuns + living stubs + drink mixed)

Catalog 补 master_object/wizlist/localcmd/unshadow/varargs snoop;/lib/living 补 SP/money/query_race_stat/set_resistance/transfer_all_to;/lib/drink 的 set_short/set_long 改为 mixed(含 evaluate)并补 id_name/invis_level。证明:HEAD title_shadow/demon/priest_bottle/coder_cmds 失败;树上述对象均可加载。

深度功能测试(2026-10-28,§6.21 find_player 形参类型)

guild_room.calculate_average_rank 的形参从 object 改为 mixed,经 object pl = find_player(...) 再取公会物件。证明:HEAD Bad argument find_player;树 guild_room 可加载。

深度功能测试(2026-10-28,living API + angel remove_call_out)

transfer_all_to(mixed)、varargs set_wimpy、set_frog/frog_curse、query_can_move;angel 的 remove_call_out((:inform_owner:)) 改为字符串名。证明:chimpanzee/frog/angel 可加载。

深度功能测试(2026-10-28,corpus remove_call_out 闭包)

moving.lpc 的 remove_call_out((:clean_queue:)) 改为字符串;同批 corpus 扫 aoh/morgengrauen/nirvlp312/simud。证明:HEAD moving Bad argument;树可加载。

深度功能测试(2026-10-28,sort_array 方向闭包)

剩余 LDMud sort_array 的 #'> / #'< 改为 1 / -1(KB 06 7.234)。

深度功能测试(2026-10-28,room add_object 第二参 mixed)

add_object/add_monster 第二参改为 mixed,整型时当作 reset_chance。证明:HEAD bank Bad type;树 bank 可加载。