Skip to content

Commit 70e19a0

Browse files
thefallentreeclaude
andcommitted
Port fy2's deep-test fixes to confirmed sibling fengyun2qinghua
Same 6 bug classes as fy2 (byte-identical pre-fix lineage), all ported directly and re-verified live: §7.12 tell_room() exclude-arg, §7.24 death/startroom-stomping (3 files), §7.25 unguarded make_inventory(), §7.28 enable_player() add_action stacking, §7.7-adjacent unguarded restore()/move() in bboard/jboard/emoted, and the stale "/d/wiz/" zone- rename paths (5 files). Also repaired the same 3 corrupted save-data files (byte-identical GBK-transcoding and embedded-newline corruption, confirmed via diff against fy2's already-verified fix) and removed the same debris files. Live-verified: 风云广场留言版 (13/13 messages) and 探花诗台 (4/4) render correctly, emotes work, sect-join/skill-learn/combat/shop-reject/quit- reconnect all clean. Independently reproduced fy2's own flagged net-dead- 900s anomaly without the concurrent-lpcc-sweep confound fy2 suspected; still not attributed to a mudlib bug (documented, not fixed). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VyQCUoTo1Z93Py9aVFHQi1
1 parent 5c62201 commit 70e19a0

482 files changed

Lines changed: 1109 additions & 2938 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

libs/fengyun2qinghua/NOTES.md

Lines changed: 288 additions & 0 deletions
Large diffs are not rendered by default.

libs/fengyun2qinghua/work/adm/daemons/emoted.lpc

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,20 @@ mapping emote;
3333
// Original by Annihilator@ESII (11/09/94)
3434

3535
void create() {
36-
if (!restore() && !mapp(emote))
37-
emote = ([]);
36+
// BUG FIX (deep functional test, AGENTS.md §7.7): restore() on
37+
// corrupted save data (confirmed live: data/emoted.o had raw
38+
// un-transcoded GBK bytes plus one genuinely malformed byte pair --
39+
// a conversion-pipeline gap, since fixed) used to throw uncaught
40+
// here, aborting the REST of create() -- leaving BOTH "emote"
41+
// unset (int 0, not even the "([])" fallback on the same line) AND
42+
// "channel_id" never set at all, silently disabling the ENTIRE
43+
// emote-command system (smile/nod/bow/... all became unrecognized
44+
// commands) for the whole boot with zero visible error to any
45+
// player. catch() so corrupt seed data degrades to an empty emote
46+
// table instead of skipping the rest of create(). Ported directly
47+
// from confirmed sibling fy2 (byte-identical lineage).
48+
catch(restore());
49+
if (!mapp(emote)) emote = ([]);
3850
set("channel_id", "动作精灵");
3951
}
4052

libs/fengyun2qinghua/work/adm/simul_efun/message.lpc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ void tell_object(object ob, string str) {
3232
}
3333

3434
varargs void tell_room(mixed ob, string str, object *exclude) {
35-
if (ob) message("tell_room", str, ob, exclude);
35+
if (ob) message("tell_room", str, ob, exclude || ({ }));
3636
}
3737

3838
void shout(string str) {

libs/fengyun2qinghua/work/d/death/inn1.lpc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,12 @@ int do_stuff(object ob) {
6060
if (ob->is_ghost())
6161
ob->reincarnate();
6262
ob->move("/d/fy/church");
63-
ob->set("startroom", base_name(environment(ob)));
63+
// BUG FIX (deep functional test, AGENTS.md §7.24) -- see
64+
// d/death/npc/bgargoyle.lpc for the full writeup; don't overwrite the
65+
// permanent startroom field from this brief death/limbo waypoint --
66+
// "/d/fy/church" doesn't carry the "valid_startroom" flag that
67+
// cmds/usr/save.lpc requires before legitimately updating this field.
68+
// Ported directly from confirmed sibling fy2 (byte-identical lineage).
6469
message("vision",
6570
"你忽然发现前面多了一个人影,不过那人影又好像已经在那里\n" +
6671
"很久了,只是你一直没发觉。\n", environment(ob), ob);

libs/fengyun2qinghua/work/d/death/npc/bgargoyle.lpc

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,19 @@ void death_stage(object ob, int stage) {
6868
ob->reincarnate();
6969

7070
ob->move(revive_loc[random(sizeof(revive_loc))]);
71-
ob->set("startroom", base_name(environment(ob)));
71+
// BUG FIX (deep functional test, AGENTS.md §7.24): this used to
72+
// unconditionally set the player's permanent login/respawn location
73+
// (query("startroom"), read by adm/daemons/logind.lpc's enter_world()
74+
// on every FUTURE full login) to whichever revive_loc waypoint the
75+
// player randomly landed in here. Neither "/d/fy/church" nor
76+
// "/u/guanwai/tower" carries the "valid_startroom" flag that
77+
// cmds/usr/save.lpc (the only other place that legitimately updates
78+
// this field) requires before doing the same thing -- this room is
79+
// meant to be a brief death/limbo waypoint, not a permanent home. Fix:
80+
// don't touch startroom here at all -- leave the player's real,
81+
// previously-chosen (valid_startroom-flagged) login location intact;
82+
// the move() above already handles the immediate post-death placement.
83+
// Ported directly from confirmed sibling fy2 (byte-identical lineage).
7284
message("vision",
7385
"你忽然发现前面多了一个人影,不过那人影又好像已经在那里\n"
7486
"很久了,只是你一直没发觉。\n", environment(ob), ob);

libs/fengyun2qinghua/work/d/death/npc/wgargoyle.lpc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ void death_stage(object ob, int stage) {
5858
ob->reincarnate();
5959

6060
ob->move(revive_loc[random(sizeof(revive_loc))]);
61-
ob->set("startroom", base_name(environment(ob)));
61+
// BUG FIX (deep functional test, AGENTS.md §7.24) -- see
62+
// d/death/npc/bgargoyle.lpc for the full writeup; don't overwrite the
63+
// permanent startroom field from this brief death/limbo waypoint.
64+
// Ported directly from confirmed sibling fy2 (byte-identical lineage).
6265
message("vision",
6366
"你忽然发现前面多了一个人影,不过那人影又好像已经在那里\n"
6467
"很久了,只是你一直没发觉。\n", environment(ob), ob);

libs/fengyun2qinghua/work/d/waterfog/hall1.lpc

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,19 @@ void create() {
99
选在这里举行,往东是巫师会客室。
1010
LONG
1111
);
12+
// BUG FIX (deep functional test, AGENTS.md §7.18): these exits
13+
// hardcoded the stale "/d/wiz/" path (visible in this file's own
14+
// header comment) left over from before this zone was renamed to
15+
// "/d/waterfog/" -- see d/waterfog/entrance.lpc, which already uses
16+
// the correct __DIR__-relative form for this same zone. The stale
17+
// paths made every exit here throw "call_other() couldn't find
18+
// object" (confirmed via lpcc), and the same stale "/d/wiz/hall1"
19+
// path in obj/board/wizard_b.lpc's "location" made this room's own
20+
// force-loaded message board fail to move() into it. Ported directly
21+
// from confirmed sibling fy2 (byte-identical lineage).
1222
set("exits", ([ /* sizeof() == 2 */
13-
"north": "/d/wiz/jobroom",
14-
"east": "/d/wiz/entrance",
23+
"north": __DIR__ "jobroom",
24+
"east": __DIR__ "entrance",
1525
]));
1626
set("no_clean_up", 0);
1727

libs/fengyun2qinghua/work/d/waterfog/jobroom.lpc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@ void create() {
1212
而降回玩家身分。
1313
LONG
1414
);
15+
// BUG FIX (deep functional test, AGENTS.md §7.18) -- see
16+
// d/waterfog/hall1.lpc for the full writeup; stale "/d/wiz/" path
17+
// from before this zone was renamed to "/d/waterfog/". Ported
18+
// directly from confirmed sibling fy2 (byte-identical lineage).
1519
set("exits", ([ /* sizeof() == 1 */
16-
"south": "/d/wiz/hall1",
20+
"south": __DIR__ "hall1",
1721
]));
1822
set("no_clean_up", 0);
1923

libs/fengyun2qinghua/work/data/board/fysquare_b.o

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#/std/bboard.c
2-
dbase (["capacity":30,"notes":({(["time":892909751,"msg":"����Ҳ.","author":"��ȸ��","title":"����Ҳ",]),(["time":892931695,"msg":"w,w,w,w,w,nǮ�ɲ����������Ҹ�ÿ������10gold","author":"����è","title":"������ҩ��",]),(["time":892983041,"msg":"���Ҳ���ʦ�����Ķ������ҿ��������8 [A","author":"���","title":"���ˣ�",]),(["time":893018069,"msg":"������ս����̫����,�����ϸ�������û����.","author":"���ξ�","title":"̫����",]),(["time":893103075,"msg":"distribute�ɷ��������","author":"��è","title":"distribute",]),(["time":893344053,"msg":"������ûǮ,������Ҳϴ����,��עλ��������,��ָм�..l;l [Dquit [D [D [D [B [B [A.","author":"����","title":"ûǮ",]),(["time":893416812,"msg":"hi,sbaa.sz fy �þò������ˣ�ԭ������������������*admire sbaa!ֻ��ϧ�ٶ�̫���ˣ�* cry","author":"��Ӧ��","title":"to sbaa",]),(["time":893435629,"msg":"��һֱ��Ϊ�����Դ����davis�ģ���ϸһ��ԭ�����ҵģ�sighsbaa����һ����ʦ��ô��","author":"ξ��ʮһ","title":"��֣�",]),(["time":894542088,"msg":" skills��Ŀǰ��ѧ�����ּ��ܣ���feixian-sword (feixian-sword) - �������� 23/ 0 force (force) - ��ͨƤë 18/ 0��jingyiforce (jingyiforce) - �������� 23/ 254 leadership (leadership) - ��֪һ�� 21/ 81 literate (literate) - ��ѧէ�� 9/ 94 parry (parry) - ��ѧէ�� 9/ 12 strategy (strategy) - �����ž� 15/ 165 sword (sword) - �������� 30/ 107��ôȫ��E��?","author":"����","title":"��ô����Ӣ��",]),(["time":885977031,"msg":"eI have no money.","author":"С���","title":"10",]),(["time":885977089,"msg":"I have no money.","author":"С���","title":"10",]),(["time":896431444,"msg":"where are you ?","author":"����","title":"only me here",]),(["msg":"����û��˼!!!!!!!!!.","time":898596271,"author":"������","title":"û��˼",]),}),"location":"/d/fy/fysquare","long":"����һ���������Լ��µ����԰塣","id":"board","name":"���ƹ㳡���԰�","no_get":1,"board_id":"fysquare_b",])
2+
dbase (["capacity":30,"notes":({(["time":892909751,"msg":"我来也.","author":"风雀儿","title":"我来也",]),(["time":892931695,"msg":"w,w,w,w,w,n钱可不好挣啊,我给每个新人10gold","author":"机器猫","title":"现在有药了",]),(["time":892983041,"msg":"我找不到师父在哪儿,而且快俄死了。8 [A","author":"风儿","title":"完了!",]),(["time":893018069,"msg":"练功和战斗都太慢了,老是上个动作还没结束.","author":"公治九","title":"太慢了",]),(["time":893103075,"msg":"distribute可分配参数点","author":"老猫","title":"distribute",]),(["time":893344053,"msg":"我由于没钱,所以澡也洗不起,请注位大侠资助,万分感激..l;l [Dquit [D [D [D [B [B [A.","author":"天龙","title":"没钱",]),(["time":893416812,"msg":"hi,sbaa.sz fy 好久不见你了,原来在这里潇洒!!!*admire sbaa!只可惜速度太慢了!* cry","author":"方应看","title":"to sbaa",]),(["time":893435629,"msg":"我一直以为这里的源码是davis的,仔细一看原来是我的,sighsbaa给我一个巫师好么?","author":"尉迟十一","title":"奇怪?",]),(["time":894542088,"msg":" skills你目前共学过九种技能:*feixian-sword (feixian-sword) - 半生不熟 23/ 0 force (force) - 粗通皮毛 18/ 0*jingyiforce (jingyiforce) - 半生不熟 23/ 254 leadership (leadership) - 略知一二 21/ 81 literate (literate) - 新学乍用 9/ 94 parry (parry) - 初学乍练 9/ 12 strategy (strategy) - 初窥门径 15/ 165 sword (sword) - 马马虎虎 30/ 107怎么全是E文?","author":"阿福","title":"怎么成了英文",]),(["time":885977031,"msg":"eI have no money.","author":"小蝌蚪","title":"10",]),(["time":885977089,"msg":"I have no money.","author":"小蝌蚪","title":"10",]),(["time":896431444,"msg":"where are you ?","author":"明儿","title":"only me here",]),(["msg":"风云没意思!!!!!!!!!.","time":898596271,"author":"冷如玉","title":"没意思",]),}),"location":"/d/fy/fysquare","long":"这是一个供人留言记事的留言板。","id":"board","name":"风云广场留言版","no_get":1,"board_id":"fysquare_b",])

libs/fengyun2qinghua/work/data/board/poem_b.o

Lines changed: 1 addition & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,2 @@
11
#/std/bboard.c
2-
dbase (["location":"/d/fy/poemp","board_id":"poem_b","capacity":30,"id":"tai","long":"你可以在这里留下你的千古名句。
3-
","notes":({(["title":"雀儿到此一游","msg":"我自横刀向天笑,去留肝胆两昆仑.
4-
","time":892910849,"author":"风雀儿",]),(["title":"杰到此一游","msg":"
5-
save
6-
save
7-
8-
9-
save
10-
q
11-
'.'
12-
dsbr
13-
save
14-
save
15-
save
16-
save
17-
asv
18-
l
19-
l
20-
21-
save
22-
23-
24-
save
25-
'.'
26-
'.'
27-
'.'
28-
q
29-
l
30-
post
31-
l board
32-
33-
34-
'.'
35-
36-
37-
38-
39-
40-
41-
42-
43-
44-
45-
46-
47-
48-
49-
50-
QUITY
51-
52-
/
53-
[B
54-
55-
56-
57-
58-
59-
60-
quit
61-
62-
63-
64-
65-
66-
save
67-
q
68-
'.'
69-
'.'
70-
'.
71-
;
72-
'.'
73-
'.'
74-
'.;'
75-
`'`
76-
`/'
77-
'/`
78-
`/'
79-
/`
80-
/`
81-
`.'
82-
","time":893171478,"author":"杰",]),(["title":"啊","msg":"再上高处,望尽天涯路
83-
","time":893282037,"author":"风雀儿",]),(["title":"每日一诗1","msg":"锄禾日当午,汗滴禾下土. 谁知盘中餐,粒粒皆辛苦..
84-
","time":893591498,"author":"风雀儿",]),}),"no_get":1,"name":"探花诗台",])
2+
dbase (["location":"/d/fy/poemp","board_id":"poem_b","capacity":30,"id":"tai","long":"你可以在这里留下你的千古名句。","notes":({(["title":"雀儿到此一游","msg":"我自横刀向天笑,去留肝胆两昆仑.","time":892910849,"author":"风雀儿",]),(["title":"杰到此一游","msg":"savesavesaveq'.'dsbrsavesavesavesaveasvllsavesave'.''.''.'qlpostl board'.' QUITY/ [Bquitsaveq'.''.''.;'.''.''.;'`'``/''/``/'/`/``.'","time":893171478,"author":"杰",]),(["title":"啊","msg":"再上高处,望尽天涯路","time":893282037,"author":"风雀儿",]),(["title":"每日一诗1","msg":"锄禾日当午,汗滴禾下土. 谁知盘中餐,粒粒皆辛苦..","time":893591498,"author":"风雀儿",]),}),"no_get":1,"name":"探花诗台",])

0 commit comments

Comments
 (0)