From 3f5c33fe66875ae2b7ec839a528835f8db8148d1 Mon Sep 17 00:00:00 2001 From: kinther Date: Thu, 1 Jan 2026 10:17:12 -0800 Subject: [PATCH] Standardize rset/oset command structure, fix bugs --- src/set.c | 138 ++++++++++++++++++++++++++---------------------------- src/set.h | 2 + 2 files changed, 68 insertions(+), 72 deletions(-) diff --git a/src/set.c b/src/set.c index c88dff8..93d7f97 100644 --- a/src/set.c +++ b/src/set.c @@ -7,7 +7,6 @@ #include "conf.h" #include "sysdep.h" - #include "structs.h" #include "utils.h" #include "comm.h" @@ -34,45 +33,45 @@ static void rset_show_usage(struct char_data *ch) send_to_char(ch, "Usage:\r\n" " rset show\r\n" - " rset set \r\n" - " rset add \r\n" - " rset del \r\n" - " rset desc\r\n" - " rset clear\r\n" - " rset validate\r\n" - "\r\n" - "Type:\r\n" - " rset set\r\n" - " rset add\r\n" - " rset del\r\n" - "\r\n" - "For command-specific options.\r\n"); + " rset add name \r\n" + " rset add sector \r\n" + " rset add flags [flag ...]\r\n" + " rset add exit \r\n" + " rset add door \r\n" + " rset add key \r\n" + " rset add hidden \r\n" + " rset add forage \r\n" + " rset add edesc \r\n" + " rset add desc\r\n" + " rset del \r\n" + " rset clear force\r\n" + " rset validate\r\n"); } static void rset_show_set_usage(struct char_data *ch) { send_to_char(ch, - "Sets specific configuration to the room.\r\n" + "Adds basic configuration to the room.\r\n" "\r\n" "Usage:\r\n" - " rset set name \r\n" - " rset set sector \r\n" + " rset add name \r\n" + " rset add sector \r\n" "\r\n" "Examples:\r\n" - " rset set name \"A wind-scoured alley\"\r\n" - " rset set sector desert\r\n"); + " rset add name \"A wind-scoured alley\"\r\n" + " rset add sector desert\r\n"); } static void rset_show_set_sector_usage(struct char_data *ch) { send_to_char(ch, - "Sets room sector type.\r\n" + "Adds room sector type.\r\n" "\r\n" "Usage:\r\n" - " rset set sector \r\n" + " rset add sector \r\n" "\r\n" "Examples:\r\n" - " rset set sector desert\r\n" + " rset add sector desert\r\n" "\r\n" "Sectors:\r\n"); column_list(ch, 0, sector_types, NUM_ROOM_SECTORS, FALSE); @@ -84,23 +83,16 @@ static void rset_show_add_usage(struct char_data *ch) "Adds specific configuration to the room.\r\n" "\r\n" "Usage:\r\n" - " rset add flags:\r\n" - " [flag ...]\r\n" + " rset add name \r\n" + " rset add sector \r\n" + " rset add flags [flag ...]\r\n" " rset add exit \r\n" " rset add door \r\n" " rset add key \r\n" " rset add hidden \r\n" " rset add forage \r\n" " rset add edesc \r\n" - "\r\n" - "Examples:\r\n" - " rset add flags INDOORS QUITSAFE\r\n" - " rset add exit n 101\r\n" - " rset add door n door\r\n" - " rset add key n 201\r\n" - " rset add hidden n\r\n" - " rset add forage 301 15\r\n" - " rset add edesc mosaic A beautiful mosaic is here on the wall.\r\n"); + " rset add desc\r\n"); } static void rset_show_del_usage(struct char_data *ch) @@ -127,18 +119,6 @@ static void rset_show_del_usage(struct char_data *ch) " rset del edesc mosaic\r\n"); } -static void rset_show_clear_usage(struct char_data *ch) -{ - send_to_char(ch, - "Clears all configuration from a room to start over fresh.\r\n" - "\r\n" - "Usage:\r\n" - " rset clear\r\n" - "\r\n" - "Examples:\r\n" - " rset clear\r\n"); -} - static void rset_show_validate_usage(struct char_data *ch) { send_to_char(ch, @@ -158,7 +138,7 @@ static void rset_show_desc_usage(struct char_data *ch) "Enters text editor for editing the main description of the room.\r\n" "\r\n" "Usage:\r\n" - " rset desc\r\n"); + " rset add desc\r\n"); } static void rset_show_rcreate_usage(struct char_data *ch) @@ -701,10 +681,12 @@ ACMD(do_rset) return; } - if (is_abbrev(arg1, "set")) { + if (is_abbrev(arg1, "add") || is_abbrev(arg1, "set")) { + bool set_alias = is_abbrev(arg1, "set"); + argument = one_argument(argument, arg2); if (!*arg2) { - rset_show_set_usage(ch); + rset_show_add_usage(ch); return; } @@ -753,26 +735,12 @@ ACMD(do_rset) return; } - { - int flag; - - flag = rset_find_room_flag(arg2); - if (flag >= 0) { - SET_BIT_AR(room->room_flags, flag); - rset_mark_room_modified(rnum); - send_to_char(ch, "Room flag set.\r\n"); + if (is_abbrev(arg2, "desc")) { + if (*argument) { + rset_show_add_usage(ch); return; } - } - - rset_show_set_usage(ch); - return; - } - - if (is_abbrev(arg1, "add")) { - argument = one_argument(argument, arg2); - if (!*arg2) { - rset_show_add_usage(ch); + rset_desc_edit(ch, room); return; } @@ -966,7 +934,7 @@ ACMD(do_rset) } if (!is_number(arg3) || !is_number(arg1)) { - send_to_char(ch, "Usage: rset add forage \r\n"); + rset_show_add_forage_usage(ch); return; } @@ -1021,6 +989,18 @@ ACMD(do_rset) return; } + if (set_alias) { + int flag; + + flag = rset_find_room_flag(arg2); + if (flag >= 0) { + SET_BIT_AR(room->room_flags, flag); + rset_mark_room_modified(rnum); + send_to_char(ch, "Room flag set.\r\n"); + return; + } + } + rset_show_add_usage(ch); return; } @@ -1194,7 +1174,7 @@ ACMD(do_rset) } if (!is_number(arg3)) { - send_to_char(ch, "Usage: rset del forage \r\n"); + rset_show_del_forage_usage(ch); return; } @@ -1269,8 +1249,13 @@ ACMD(do_rset) } if (is_abbrev(arg1, "clear")) { + argument = one_argument(argument, arg2); + if (!*arg2 || !is_abbrev(arg2, "force")) { + rset_show_usage(ch); + return; + } if (*argument) { - rset_show_clear_usage(ch); + rset_show_usage(ch); return; } @@ -1312,7 +1297,7 @@ static void oset_show_usage(struct char_data *ch) " oset add cost \r\n" " oset add oval \r\n" " oset del \r\n" - " oset clear \r\n" + " oset clear force\r\n" " oset validate \r\n"); } @@ -1498,10 +1483,10 @@ static void oset_show_clear_usage(struct char_data *ch) "Clears all configuration from an object to start over fresh.\r\n" "\r\n" "Usage:\r\n" - " oset clear \r\n" + " oset clear force\r\n" "\r\n" "Examples:\r\n" - " oset clear sword\r\n"); + " oset clear sword force\r\n"); } static struct obj_data *oset_get_target_obj_keyword(struct char_data *ch, char *keyword) @@ -2306,6 +2291,15 @@ ACMD(do_oset) send_to_char(ch, "You don't seem to have %s %s.\r\n", AN(arg2), arg2); return; } + argument = one_argument(argument, arg3); + if (!*arg3 || !is_abbrev(arg3, "force")) { + oset_show_clear_usage(ch); + return; + } + if (*argument) { + oset_show_clear_usage(ch); + return; + } oset_clear_object(obj); send_to_char(ch, "Object cleared.\r\n"); return; diff --git a/src/set.h b/src/set.h index c27724f..4eb6779 100644 --- a/src/set.h +++ b/src/set.h @@ -1,6 +1,8 @@ /** * @file set.h * Builder room/object creation and utility headers. +* +* This set of code was not originally part of the circlemud distribution. */ #ifndef SET_H