From 87c75da59c5720d4686e3e6e0a8062b6280976cc Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Apr 2026 22:52:52 +0200 Subject: [PATCH] Improve error message detail for wdoor/mdoor/odoor invalid args (#178) --- src/dg_mobcmd.c | 22 +++++++++++++++++----- src/dg_objcmd.c | 22 +++++++++++++++++----- src/dg_wldcmd.c | 22 +++++++++++++++++----- 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/dg_mobcmd.c b/src/dg_mobcmd.c index 1a89820..2c985dd 100644 --- a/src/dg_mobcmd.c +++ b/src/dg_mobcmd.c @@ -1024,17 +1024,27 @@ ACMD(do_mdoor) } if ((rm = get_room(target)) == NULL) { - mob_log(ch, "mdoor: invalid target"); + mob_log(ch, "mdoor: invalid target (arg == %s)", target); return; } if ((dir = search_block(direction, dirs, FALSE)) == -1) { - mob_log(ch, "mdoor: invalid direction"); + char dirs_str[256]; + int di, doff = 0; + dirs_str[0] = '\0'; + for (di = 0; *dirs[di] != '\n'; di++) + doff += snprintf(dirs_str + doff, sizeof(dirs_str) - doff, "%s%s", doff ? " " : "", dirs[di]); + mob_log(ch, "mdoor: invalid direction (arg == %s) not found in: [ %s ]", direction, dirs_str); return; } if ((fd = search_block(field, door_field, FALSE)) == -1) { - mob_log(ch, "odoor: invalid field"); + char fields_str[256]; + int fi, foff = 0; + fields_str[0] = '\0'; + for (fi = 0; *door_field[fi] != '\n'; fi++) + foff += snprintf(fields_str + foff, sizeof(fields_str) - foff, "%s%s", foff ? " " : "", door_field[fi]); + mob_log(ch, "mdoor: invalid field (arg == %s) not found in: [ %s ]", field, fields_str); return; } @@ -1081,8 +1091,10 @@ ACMD(do_mdoor) case 5: /* room */ if ((to_room = real_room(atoi(value))) != NOWHERE) newexit->to_room = to_room; - else - mob_log(ch, "mdoor: invalid door target"); + else { + newexit->to_room = NOWHERE; + mob_log(ch, "mdoor: invalid door target (arg == %s)", value); + } break; } } diff --git a/src/dg_objcmd.c b/src/dg_objcmd.c index 974150c..131b67a 100644 --- a/src/dg_objcmd.c +++ b/src/dg_objcmd.c @@ -625,17 +625,27 @@ static OCMD(do_odoor) } if ((rm = get_room(target)) == NULL) { - obj_log(obj, "odoor: invalid target"); + obj_log(obj, "odoor: invalid target (arg == %s)", target); return; } if ((dir = search_block(direction, dirs, FALSE)) == -1) { - obj_log(obj, "odoor: invalid direction"); + char dirs_str[256]; + int di, doff = 0; + dirs_str[0] = '\0'; + for (di = 0; *dirs[di] != '\n'; di++) + doff += snprintf(dirs_str + doff, sizeof(dirs_str) - doff, "%s%s", doff ? " " : "", dirs[di]); + obj_log(obj, "odoor: invalid direction (arg == %s) not found in: [ %s ]", direction, dirs_str); return; } if ((fd = search_block(field, door_field, FALSE)) == -1) { - obj_log(obj, "odoor: invalid field"); + char fields_str[256]; + int fi, foff = 0; + fields_str[0] = '\0'; + for (fi = 0; *door_field[fi] != '\n'; fi++) + foff += snprintf(fields_str + foff, sizeof(fields_str) - foff, "%s%s", foff ? " " : "", door_field[fi]); + obj_log(obj, "odoor: invalid field (arg == %s) not found in: [ %s ]", field, fields_str); return; } @@ -682,8 +692,10 @@ static OCMD(do_odoor) case 5: /* room */ if ((to_room = real_room(atoi(value))) != NOWHERE) newexit->to_room = to_room; - else - obj_log(obj, "odoor: invalid door target"); + else { + newexit->to_room = NOWHERE; + obj_log(obj, "odoor: invalid door target (arg == %s)", value); + } break; } } diff --git a/src/dg_wldcmd.c b/src/dg_wldcmd.c index 1b0152b..753fb9e 100644 --- a/src/dg_wldcmd.c +++ b/src/dg_wldcmd.c @@ -224,17 +224,27 @@ WCMD(do_wdoor) } if ((rm = get_room(target)) == NULL) { - wld_log(room, "wdoor: invalid target"); + wld_log(room, "wdoor: invalid target (arg == %s)", target); return; } if ((dir = search_block(direction, dirs, FALSE)) == -1) { - wld_log(room, "wdoor: invalid direction"); + char dirs_str[256]; + int di, doff = 0; + dirs_str[0] = '\0'; + for (di = 0; *dirs[di] != '\n'; di++) + doff += snprintf(dirs_str + doff, sizeof(dirs_str) - doff, "%s%s", doff ? " " : "", dirs[di]); + wld_log(room, "wdoor: invalid direction (arg == %s) not found in: [ %s ]", direction, dirs_str); return; } if ((fd = search_block(field, door_field, FALSE)) == -1) { - wld_log(room, "wdoor: invalid field"); + char fields_str[256]; + int fi, foff = 0; + fields_str[0] = '\0'; + for (fi = 0; *door_field[fi] != '\n'; fi++) + foff += snprintf(fields_str + foff, sizeof(fields_str) - foff, "%s%s", foff ? " " : "", door_field[fi]); + wld_log(room, "wdoor: invalid field (arg == %s) not found in: [ %s ]", field, fields_str); return; } @@ -281,8 +291,10 @@ WCMD(do_wdoor) case 5: /* room */ if ((to_room = real_room(atoi(value))) != NOWHERE) newexit->to_room = to_room; - else - wld_log(room, "wdoor: invalid door target"); + else { + newexit->to_room = NOWHERE; + wld_log(room, "wdoor: invalid door target (arg == %s)", value); + } break; } }