This isn't actalluy very easy to do, iirc.
The code responsible for this particular list is in
act.informative.c
:
Code:
static void do_auto_exits(struct char_data *ch)
{
int door, slen = 0;
send_to_char(ch, "%s[ Exits: ", CCCYN(ch, C_NRM));
for (door = 0; door < DIR_COUNT; door++) {
if (!EXIT(ch, door) || EXIT(ch, door)->to_room == NOWHERE)
continue;
if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED) && !CONFIG_DISP_CLOSED_DOORS)
continue;
if (EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) && !PRF_FLAGGED(ch, PRF_HOLYLIGHT))
continue;
if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED))
send_to_char(ch, "%s(%s)%s ", EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) ? CCWHT(ch, C_NRM) : CCRED(ch, C_NRM), autoexits[door], CCCYN(ch, C_NRM));
else if (EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN))
send_to_char(ch, "%s%s%s ", CCWHT(ch, C_NRM), autoexits[door], CCCYN(ch, C_NRM));
else
send_to_char(ch, "\t(%s\t) ", autoexits[door]);
slen++;
}
send_to_char(ch, "%s]%s\r\n", slen ? "" : "None!", CCNRM(ch, C_NRM));
}
This needs to be rewritten to take into consideration "special" doors.
Next, you'll need to change the command interpreter to check for "loose door names". That is, if it doesn't find anything in the command list, it needs to check if the entered command is the name of a door. This happens around
line 532 in interpreter.c
:
Code:
if (*complete_cmd_info[cmd].command == '\n') {
int found = 0;
send_to_char(ch, "%s", CONFIG_HUH);
for (cmd = 0; *cmd_info[cmd].command != '\n'; cmd++)
{
if (*arg != *cmd_info[cmd].command || cmd_info[cmd].minimum_level > GET_LEVEL(ch))
continue;
/* Only apply levenshtein counts if the command is not a trigger command. */
if ( (levenshtein_distance(arg, cmd_info[cmd].command) <= 2) &&
(cmd_info[cmd].minimum_level >= 0) )
{
if (!found)
{
send_to_char(ch, "\r\nDid you mean:\r\n");
found = 1;
}
send_to_char(ch, " %s\r\n", cmd_info[cmd].command);
}
}
}
In practice, this is a central thing in tbamud, and has been for very many years. There are bound to be many things that can go wrong with changing it, and I'm not comfortable with writing a forum post to show you what to do. I'm bound to miss a lot of edge cases - like what do we do about OLC? or stat room?
I suggest instead to see what can be done with triggers.