/*
 * clist.h
 */

/* The stuff for the dynamic rooms */
extern void dynamic_defrag_rooms();
extern void dynamic_test_func_blocks(), dynamic_test_func_keys();
extern void dynamic_dfstats();
extern void dynamic_validate_rooms();
/**/


extern char     *check_legal_entry(player *, char *, int);
extern char     *list_lines(list_ent *);
extern void     to_room1(), to_room2(), room_link();
extern void     say(), quit(), pulldown(), change_password(), change_email(),
                do_save(), wall(), tell(), grant(), remove(), nuke_player(),
                view_saved_lists(), banish_player(), unbanish(), sync_files(),
                sync_all_by_user(), restore_files(), check(),abort_shutdown(),
                make_new_character(), room_command(), change_room_limit(),
                test_fn(), unlink_from_room(), look(), trans_to(),
                validate_email(), go_room(), remote(), recho(), whisper(),
                emote(), echo(), gender(), shout(), exclude(),comments(),
                change_exit_limit(), change_auto_limit(), remove_shout(),
                set_title(), set_description(), set_plan(), set_prompt(),
                set_converse_prompt(), set_term_width(), set_word_wrap(),
                blank_password(), new_blankpass(), pemote(), premote(),
                converse_mode_on(), converse_mode_off(), swho(), set_pretitle(),
                clear_list(), change_list_absolute(), change_list_limit(),
                set_list(), reset_list(), toggle_list(), noisy(), ignore(),
                inform(), grab(), friend(), bar(), invite(), key(), listfind(),
                set_enter_msg(), set_ignore_msg(), view_commands(), qwho(),
                beep(), blocktells(), earmuffs(), move_to(),
                change_room_entermsg(), hide(), check_idle(), set_idle_msg(),
                view_ip(), view_player_email(), public_com(), do_grab(),
                examine(), go_quiet(), view_time(), toggle_tags(), echoall(),
                straight_home(), close_to_newbies(), su(), suemote(),
                su_hilited(), emergency(), finger(), see_echo(), dump_com(),
                news_command(), mail_command(), list_notes(), list_all_notes(),
                change_mail_limit(), toggle_news_inform(), toggle_mail_inform(),
                recap(), soft_eject(), show_malloc(), help(), reload(),
                hitells(), block(), privs(), boot_out(), wake(), view_note(),
                dest_note(), sneeze(), resident(), join(), crash(), port(),
                motd(), trace(), trans_fn(), remove_move(), relink_note(),
                add_lag(), toggle_iacga(), recount_news(), banish_edit(),
                same_site(), set_age(), set_birthday(), warn(), netstat(),
                nopager(), bounce(), vlog(), reset_sneeze(), splat_player(),
                block_su(), unsplat(), invites_list(), rename_player(),
                quiet_rename(), mindseye(), think(), set_session(),
                set_comment(), newthink(), view_session(), super_help(),
                set_yes_session(), reply(), ereply(), prison_player(), twho(),
                reset_session(), set_login_room(), room_entry(),
                assist_player(), on_duty(), barge(), report_error(),
                clear_screen(), confirm_password(), inform_room_enter(),
                show_exits(), blank_email(), hang(), frog(), unfrog(),
                unconverse(), unjail(), go_colony(), suthink(), script(),
                player_stats(), go_comfy(), mode(), hilltop(), yoyo(),
                tell_friends(), remote_friends(), remote_think(),
                blank_prefix();

extern void     edit_quit(), edit_end(), edit_wipe(), edit_view(),
                edit_view_line(), edit_back_line(), edit_forward_line(),
                edit_view_commands(), edit_goto_top(), edit_goto_bottom(),
                edit_stats(), edit_delete_line(), edit_goto_line(),
                toggle_quiet_edit(), change_auto_base();

extern void     check_wrap(), check_updates(), check_email(), check_rooms(),
                check_exits(), view_others_list(), do_list(), view_list(),
                view_check_commands(), check_info(), check_room(),
                check_entry(), check_alist();

extern void     exit_room_mode(), create_new_room(), change_room_id(),
                change_room_name(), delete_room(), add_exit(), remove_exit(),
                add_auto(), remove_auto(), check_autos(), autos_com(),
                view_room_commands(), view_room_key_commands(), who(), where(),
                room_lock(), room_bolt(), room_lockable(), room_open(),
                set_home(), go_home(), visit(), go_main(), room_edit(), with(),
                grabable(), transfer_room(), room_linkable();

extern void     view_news_commands(), exit_news_mode(), list_news(),
                post_news(), followup(), remove_article(), read_article(),
                reply_article();

extern void     view_mail_commands(), exit_mail_mode(), view_sent(),
                view_received(), send_letter(), read_letter(), reply_letter(),
                delete_received(), delete_sent(), toggle_anonymous(), lsu(),
                lnew(), ignoreprefix(), ignoreemoteprefix(), set_time_delay();

extern void     player_flags_verbose(),blank_list();

#ifdef PC
extern void     psuedo_person(), switch_person();
#endif

/* dummy commands for stack checks */

struct command  input_to = {"input_to fn", 0, 0, 0, 0, 0};
struct command  timer = {"timer fn", 0, 0, 0, 0, 0};

/* command list for editor */

struct command  editor_list[] = {
   {"del", edit_delete_line, 0, 0, 1, 0},
   {"-", edit_back_line, 0, 0, 1, 0},
   {"+", edit_forward_line, 0, 0, 1, 0},
   {"view", edit_view, 0, 0, 1, 0},
   {"l", edit_view_line, 0, 0, 1, 0},
   {"g", edit_goto_line, 0, 0, 1, 0},
   {"top", edit_goto_top, 0, 0, 1, 0},
   {"bot", edit_goto_bottom, 0, 0, 1, 0},
   {"end", edit_end, 0, 0, 1, 0},
   {"quit", edit_quit, 0, 0, 1, 0},
   {"wipe", edit_wipe, 0, 0, 1, 0},
   {"stats", edit_stats, 0, 0, 1, 0},
   {"quiet", toggle_quiet_edit, 0, 0, 1, 0},
   {"commands", edit_view_commands, 0, 0, 1, 0},
   {"?", help, 0, 0, 0, 0},
   {"help", help, 0, 0, 1, 0},
   {"man", help, 0, 0, 1, 0},
   {0, 0, 0, 0, 0, 0}
};

/* command list for the room function */

struct command  keyroom_list[] = {
   {"check", check_rooms, BUILD, 0, 1, 0},
   {"chekc", check_rooms, BUILD, 0, 1, 0},
   {"commands", view_room_key_commands, BUILD, 0, 1, 0},
   {"end", exit_room_mode, BUILD, 0, 1, 0},
   {"entermsg", change_room_entermsg, BUILD, 0, 1, 0},
   {"exits", check_exits, BUILD, 0, 1, 0},
   {"+exit", add_exit, BUILD, 0, 1, 0},
   {"-exit", remove_exit, BUILD, 0, 1, 0},
   {"go", go_room, BUILD, 0, 1, 0},
   {"?", help, 0, 0, 0, 0},
   {"help", help, 0, 0, 0, 0},
   {"info", check_room, BUILD, 0, 1, 0},
   {"lock", room_lock, BUILD, 0, 1, 0},
   {"lockable", room_lockable, BUILD, 0, 1, 0},
   {"look", look, BUILD, 0, 1, 0},
   {"linkable", room_linkable, BUILD, 0, 1, 0},
   {"man", help, 0, 0, 0, 0},
   {"name", change_room_name, BUILD, 0, 1, 0},
   {"open", room_open, BUILD, 0, 1, 0},
   {"trans", trans_fn, BUILD, 0, 1, 0},
   {0, 0, 0, 0, 0, 0}
};


struct command  room_list[] = {
   {"bolt", room_bolt, BUILD, 0, 1, 0},
   {"edit", room_edit, BUILD, 0, 1, 0},
   {"sethome", set_home, BUILD, 0, 1, 0},
   {"lock", room_lock, BUILD, 0, 1, 0},
   {"lockable", room_lockable, BUILD, 0, 1, 0},
   {"linkable", room_linkable, BUILD, 0, 1, 0},
   {"open", room_open, BUILD, 0, 1, 0},
   {"entrance", room_entry, BUILD, 0, 1, 0},
   {"entermsg", change_room_entermsg, BUILD, 0, 1, 0},
   {"+exit", add_exit, BUILD, 0, 1, 0},
   {"-exit", remove_exit, BUILD, 0, 1, 0},
   {"link", room_link, BUILD, 0, 1, 0},
   {"exits", check_exits, BUILD, 0, 1, 0},
   {"id", change_room_id, BUILD, 0, 1, 0},
   {"name", change_room_name, BUILD, 0, 1, 0},
   {"notify", inform_room_enter, BUILD, 0, 1, 0},
   {"end", exit_room_mode, BUILD, 0, 1, 0},
   {"info", check_room, BUILD, 0, 1, 0},
   {"check", check_rooms, BUILD, 0, 1, 0},
   {"chekc", check_rooms, BUILD, 0, 1, 0},
   {"+auto", add_auto, BUILD, 0, 1, 0},
   {"-auto", remove_auto, BUILD, 0, 1, 0},
   {"speed", change_auto_base, BUILD, 0, 1, 0},
   {"autos", autos_com, BUILD, 0, 1, 0},
   {"delete", delete_room, BUILD, 0, 1, 0},
   {"create", create_new_room, BUILD, 0, 1, 0},
   {"go", go_room, BUILD, 0, 1, 0},
   {"look", look, BUILD, 0, 1, 0},
   {"trans", trans_fn, BUILD, 0, 1, 0},
   {"home", go_home, BUILD, 0, 1, 0},
   {"commands", view_room_commands, BUILD, 0, 1, 0},
   {"?", help, 0, 0, 0, 0},
   {"help", help, 0, 0, 1, 0},
   {"man", help, 0, 0, 1, 0},
   {"transfer", transfer_room, ADMIN, 0, 1, 0},
   {0, 0, 0, 0, 0, 0}
};


/* command list for the check function */

struct command  check_list[] = {
   {"flags", player_flags_verbose, 0, 0, 1, 0},
   {"mail", view_received, MAIL, 0, 1, 0},
   {"sent", view_sent, MAIL, 0, 1, 0},
   {"news", list_news, 0, 0, 1, 0},
   {"exits", check_exits, 0, 0, 1, 0},
   {"entry", check_entry, 0, 0, 1, 0},
   {"list", check_alist, LIST, 0, 1, 0},
   {"autos", check_autos, BUILD, 0, 1, 0},
   {"room", check_room, 0, 0, 1, 0},
   {"rooms", check_rooms, BUILD, 0, 1, 0},
   {"email", check_email, 0, 0, 1, 0},
   {"wrap", check_wrap, 0, 0, 1, 0},
   {"res_list", view_saved_lists, ADMIN, 0, 1, 0},
   {"updates", check_updates, (LOWER_ADMIN | ADMIN), 0, 1, 0},
   {"info", check_info, ADMIN, 0, 1, 0},
   {"commands", view_check_commands, 0, 0, 1, 0},
   {"ip", view_ip, (SU | ADMIN), 0, 1, 0},
   {"mails", view_player_email, ADMIN, 0, 1, 0},
   {"?", help, 0, 0, 0, 0},
   {"help", help, 0, 0, 1, 0},
   {"man", help, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0}};

/* command list for the news sub command */

struct command  news_list[] = {
   {"check", list_news, 0, 0, 1, 0},
   {"chekc", list_news, 0, 0, 1, 0},
   {"read", read_article, 0, 0, 1, 0},
   {"view", list_news, 0, 0, 1, 0},
   {"reply", reply_article, MAIL, 0, 1, 0},
   {"areply", reply_article, MAIL, 0, 1, 0},
   {"post", post_news, MAIL, 0, 1, 0},
   {"apost", post_news, MAIL, 0, 1, 0},
   {"followup", followup, MAIL, 0, 1, 0},
   {"afollowup", followup, MAIL, 0, 1, 0},
   {"remove", remove_article, MAIL, 0, 1, 0},
   {"commands", view_news_commands, 0, 0, 1, 0},
   {"inform", toggle_news_inform, 0, 0, 1, 0},
   {"end", exit_news_mode, 0, 0, 1, 0},
   {"?", help, 0, 0, 0, 0},
   {"help", help, 0, 0, 1, 0},
   {"man", help, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0}};

/* command list for the mail sub command */

struct command  mail_list[] = {
   {"check", view_received, 0, 0, 1, 0},
   {"chekc", view_received, 0, 0, 1, 0},
   {"read", read_letter, MAIL, 0, 1, 0},
   {"post", send_letter, MAIL, 0, 1, 0},
   {"apost", send_letter, MAIL, 0, 1, 0},
   {"reply", reply_letter, MAIL, 0, 1, 0},
   {"areply", reply_letter, MAIL, 0, 1, 0},
   {"delete", delete_received, MAIL, 0, 1, 0},
   {"remove", delete_sent, MAIL, 0, 1, 0},
   {"commands", view_mail_commands, MAIL, 0, 1, 0},
   {"end", exit_mail_mode, MAIL, 0, 1, 0},
   {"sent", view_sent, MAIL, 0, 1, 0},
   {"view", view_received, MAIL, 0, 1, 0},
   {"inform", toggle_mail_inform, 0, 0, 1, 0},
   {"noanon", toggle_anonymous, 0, 0, 1, 0},
   {"?", help, 0, 0, 0, 0},
   {"help", help, 0, 0, 1, 0},
   {"man", help, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0}};


/* restricted command list for naughty peoples */

struct command  restricted_list[] = {
   {"'", say, 0, 0, 0, 0},
   {"`", say, 0, 0, 0, 0},
   {"\"", say, 0, 0, 0, 0},
   {"::", pemote, 0, 0, 0, 0},
   {":;", pemote, 0, 0, 0, 0},
   {";;", pemote, 0, 0, 0, 0},
   {";:", pemote, 0, 0, 0, 0},
   {";", emote, 0, 0, 0, 0},
   {":", emote, 0, 0, 0, 0},
   {"=", whisper, 0, 0, 0, 0},
   {"emote", emote, 0, 0, 1, 0},
   {"say", say, 0, 0, 1, 0},
   {"pemote", pemote, 0, 0, 1, 0},
   {"whisper", whisper, 0, 0, 1, 0},
   {"look", look, 0, 0, 1, 0},
   {"l", look, 0, 0, 1, 0},
   {"?", help, 0, 0, 1, 0},
   {"help", help, 0, 0, 1, 0},
   {"man", help, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0}};

/* this is the main command list */

struct command  complete_list[] = {	/* non alphabetic */
{"'", say, 0, 0, 0, 0},
{"`", say, 0, 0, 0, 0},
{"\"", say, 0, 0, 0, 0},
{"::", pemote, 0, 0, 0, 0},
{":;", pemote, 0, 0, 0, 0},
{";;", pemote, 0, 0, 0, 0},
{";:", pemote, 0, 0, 0, 0},
{";", emote, 0, 0, 0, 0},
{":", emote, 0, 0, 0, 0},
{">", tell, 0, 0, 0, 0},
{".", tell, 0, 0, 0, 0},
{"<:", premote, 0, 0, 0, 0},
{",:", premote, 0, 0, 0, 0},
{"<;", premote, 0, 0, 0, 0},
{",;", premote, 0, 0, 0, 0},
{"<", remote, 0, 0, 0, 0},
{",", remote, 0, 0, 0, 0},
{"=", whisper, 0, 0, 0, 0},
{"!", shout, 0, 0, 0, 0},
{"?", help, 0, 0, 0, 0},
{"+", echo, ECHO_PRIV, 0, 0, 0},
{"-", recho, ECHO_PRIV, 0, 0, 0},
{"]", reply, 0, 0, 0, 0},
{"[", ereply, 0, 0, 0, 0},
{"~", newthink, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},

{"abort", abort_shutdown, ADMIN, 0, 1, 0},
{"age", set_age, 0, 0, 1, 0},	/* A */
{"assist", assist_player, SU, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"banish", banish_player, (SU | ADMIN), 0, 1, 0},
{"bar", bar, LIST, 0, 1, 0},	/* B */
{"barge", barge, ADMIN, 0, 1, 0},
{"bedit", banish_edit,(LOWER_ADMIN | ADMIN), 0, 1, 0},
{"beep", beep, LIST, 0, 1, 0},
{"birthday", set_birthday, 0, 0, 1, 0},
{"blank_email", blank_email, (LOWER_ADMIN | ADMIN), 0, 1, 0},
{"blank_own_list",blank_list,LIST,1,0},
{"blank_prefix", blank_prefix, (SU | ADMIN), 0, 1, 0},
{"blankpass", new_blankpass, (SU | ADMIN), 0, 1, 0},
{"block", block, LIST, 0, 1, 0},
{"blocktells", blocktells, 0, 0, 1, 0},
{"boot", boot_out, BUILD, 0, 1, 0},
{"bounce", bounce, 0, 0, 1, 0},
{"bug", report_error, BASE, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"check", check, 0, 0, 1, 0},	/* C */
{"chekc", check, 0, 0, 1, 0},
{"chlim_auto", change_auto_limit, ADMIN, 0, 1, 0},
{"chlim_exit", change_exit_limit, ADMIN, 0, 1, 0},
{"chlim_list", change_list_limit, (LOWER_ADMIN|ADMIN), 0, 1, 0},
{"chlim_mail", change_mail_limit, ADMIN, 0, 1, 0},
{"chlim_room", change_room_limit, (LOWER_ADMIN|ADMIN), 0, 1, 0},
{"clist", clear_list, LIST, 0, 1, 0},
{"cls", clear_screen, 0, 0, 1, 0},
{"colony", go_colony, 0, 0, 1, 0},
{"comfy", go_comfy, SU, 0, 1, 0},
{"commands", view_commands, 0, 0, 1, 0},
{"comment", set_comment, 0, 0, 1, 0},
{"comments",comments,0,1,0},
{"confirm", confirm_password, PSU, 0, 1, 0},
{"connect_room", set_login_room, BASE, 0, 1, 0},
{"converse", converse_mode_on, 0, 0, 1, 0},
{"cprompt", set_converse_prompt, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

/* Stuff for dynamic rooms */
/* These seems to crash it by putting too much in the pager.
   {"dtb", dynamic_test_func_blocks, ADMIN, 0, 1, 0},
   {"dtk", dynamic_test_func_keys, ADMIN, 0, 1, 0},
   */
{"defrag", dynamic_defrag_rooms, ADMIN, 0, 1, 0},
{"description", set_description, 0, 0, 1, 0},	/* D */
{"dfcheck", dynamic_validate_rooms, ADMIN, 0, 1, 0},
{"dfstats", dynamic_dfstats, ADMIN, 0, 1, 0},
{"drag", soft_eject, SU, 0, 1, 0},
{"dump", dump_com, (LOWER_ADMIN | ADMIN), 0, 1, 0},
/**/
{0, 0, 0, 0, 0, 0},

{"earmuffs", earmuffs, 0, 0, 1, 0},
{"echo", echo, ECHO_PRIV, 0, 1, 0},
{"echoall", echoall,ADMIN,0,1,0},
{"emergency", emergency, 0, 0, 1, 0},
{"emote", emote, 0, 0, 1, 0},	/* E */
{"end", converse_mode_off, 0, 0, 1, 0},
{"entermsg", set_enter_msg, 0, 0, 1, 0},
{"ereply", ereply, 0, 0, 1, 0},
{"email", change_email, 0, 0, 1, 0},
{"evict", sneeze, (SU | ADMIN), HOUSE, 1, 0},
{"examine", examine, 0, 0, 1, 0},
{"exclude", exclude, 0, 0, 1, 0},
{"exits", check_exits, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"find", listfind, LIST, 0, 1, 0},
{"finger", finger, 0, 0, 1, 0},
{"flist", change_list_absolute, LIST, 0, 1, 0},
{"friend", friend, LIST, 0, 1, 0},	/* F */
{"frog", frog,(FROG|SU), 0, 1, 0},
{"fwho", qwho, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"gender", gender, 0, 0, 1, 0},
{"ghome", straight_home, BUILD, 0, 1, 0},
{"go", go_room, 0, 0, 1, 0},	/* G */
{"grab", do_grab, 0, 0, 1, 0},
{"grabable", grabable, 0, 0, 1, 0},
{"grabme", grab, LIST, 0, 1, 0},
{"grant", grant, (ADMIN | HCADMIN), 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"help", help, 0, 0, 1, 0},	/* H */
{"hide", hide, 0, 0, 1, 0},
{"hilltop", hilltop, 0, 0, 1, 0},
{"hitells", hitells, 0, 0, 1, 0},
{"home", go_home, BUILD, 0, 1, 0},
{"homeview", mindseye, BUILD, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"iacga", toggle_iacga, 0, 0, 1, 0},
{"idle", check_idle, 0, 0, 1, 0},	/* I */
{"idlemsg", set_idle_msg, 0, 0, 1, 0},
{"ignore", ignore, LIST, 0, 1, 0},
{"ignoremsg", set_ignore_msg, LIST, 0, 1, 0},
{"inform", inform, LIST, 0, 1, 0},
{"invite", invite, LIST, 0, 1, 0},
{"invites", invites_list, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"jail", prison_player, (SU | ADMIN), 0, 1, 0},
{"jetlag", set_time_delay, 0, 0, 1, 0},
{"join", join, 0, 0, 1, 0},	/* J */
{0, 0, 0, 0, 0, 0},

{"key", key, LIST, 0, 1, 0},
{0, 0, 0, 0, 0, 0},		/* K */

{"l", look, 0, 0, 1, 0},
{"lag", add_lag, ADMIN, 0, 1, 0},
{"leave", go_main, 0, 0, 1, 0},
{"linewrap", set_term_width, 0, 0, 1, 0},
{"list", view_list, LIST, 0, 1, 0},
{"list_new", lnew, PSU, 0, 1, 0},
{"list_notes", list_notes, ADMIN, 0, 1, 0},
{"list_res", view_saved_lists, (SU | ADMIN), 0, 1, 0},
{"list_su", lsu, 0, 0, 1, 0},
/*{"list_all_notes", list_all_notes, ADMIN, 0, 1, 0},*/
{"lock", room_lock, 0, 0, 1, 0},
{"look", look, 0, 0, 1, 0},	/* L */
{"lsn", lnew, PSU, 0, 1, 0},
{"lsu", lsu, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"mail", mail_command, MAIL, 0, 1, 0},	/* M */
{"main", go_main, 0, 0, 1, 0},
{"make", make_new_character, ADMIN, 0, 1, 0},
{"malloc", show_malloc, ( LOWER_ADMIN | ADMIN), 0, 1, 0},
{"man", help, 0, 0, 1, 0},
{"mindscape", go_home, BUILD, HOUSE, 1, 0},
{"mindseye", mindseye, BUILD, HOUSE, 1, 0},
{"mode", mode, ( PSU | SU | ADMIN ), 0, 1, 0},
{"motd", motd, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"netstat", netstat, ADMIN, 0, 1, 0},	/* N */
{"newbies", close_to_newbies, SU, 0, 1, 0},
{"news", news_command, 0, 0, 1, 0},
{"noisy", noisy, LIST, 0, 1, 0},
{"noeprefix", ignoreemoteprefix, 0, 0, 1, 0},
{"nopager", nopager, 0, 0, 1, 0},
{"noprefix", ignoreprefix, 0, 0, 1, 0},
{"nuke", nuke_player, (SU | ADMIN), 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"off_duty", block_su, PSU, 0, 1, 0},
{"on_duty", on_duty, PSU, 0, 1, 0},
{0, 0, 0, 0, 0, 0},		/* O */

{"password", change_password, 0, 0, 1, 0},	/* P */
{"pemote", pemote, 0, 0, 1, 0},
{"plan", set_plan, BASE, 0, 1, 0},
{"port", port, ADMIN, 0, 1, 0},
{"prefix", set_pretitle, BASE, 0, 1, 0},
{"premote", premote, 0, 0, 1, 0},
{"prompt", set_prompt, 0, 0, 1, 0},
{"privs", privs, BASE, 0, 1, 0},
#ifdef PC
{"pseudo", psuedo_person, 0, 0, 1, 0},
#endif
{"pstats", player_stats, PSU, 0, 1, 0},
{"public", public_com, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"quiet", go_quiet, 0, 0, 1, 0},
{"quit", quit, 0, 0, 1, 0},	/* Q */
{"qwho", qwho, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"recap", recap, 0, 0, 1, 0},	/* R */
{"recho", recho, ECHO_PRIV, 0, 1, 0},
{"recount", recount_news, ADMIN, 0, 1, 0},
{"relink", relink_note, ADMIN, 0, 1, 0},
{"remote", remote, 0, 0, 1, 0},
{"remove", remove, (ADMIN|HCADMIN), 0, 1, 0},
{"rename", rename_player, (SU | ADMIN), 0, 1, 0},
{"reply", reply, 0, 0, 1, 0},
{"reset_session", reset_session, SU, 0, 1, 0},
{"reset_sneeze", reset_sneeze, (SU | ADMIN), 0, 1, 0},
{"resident", resident, SU, 0, 1, 0},
{"restore", restore_files, ADMIN, 0, 1, 0},
{"rf", remote_friends, 0, 0, 1, 0},
{"rlist", reset_list, LIST, 0, 1, 0},
{"reload", reload, ( LOWER_ADMIN | ADMIN), 0, 1, 0},
{"rm_move", remove_move, ADMIN, 0, 1, 0},
{"rm_note", dest_note, ADMIN, 0, 1, 0},
{"rm_shout", remove_shout, (SU | ADMIN), 0, 1, 0},
{"room", room_command, BUILD, 0, 1, 0},
{"rt", remote_think, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"save", do_save, BASE, 0, 1, 0},
{"say", say, 0, 0, 1, 0},	/* S */
{"script", script, (SCRIPT), 0, 1, 0},
{"se", suemote, PSU, 0, 1, 0},
{"seeecho", see_echo, 0, 0, 1, 0},
{"seesess", view_session, 0, 0, 1, 0},
{"seetitle", set_yes_session, 0, 0, 1, 0},
{"session", set_session, SESSION, 0, 1, 0},
{"shelp", super_help, PSU, 0, 1, 0},
{"shout", shout, 0, 0, 1, 0},
{"show", toggle_tags, 0, 0, 1, 0},
{"showexits", show_exits, BASE, 0, 1, 0},
{"shutdown", pulldown, SU, 0, 1, 0},
{"site", same_site, (TRACE | SU | PSU), 0, 1, 0},
{"slist", set_list, LIST, 0, 1, 0},
{"sneeze", sneeze, (SU | ADMIN), 0, 1, 0},
{"splat", splat_player, SU, 0, 1, 0},
{"st", suthink, PSU, 0, 1, 0},
{"su", su, PSU, 0, 1, 0},
{"su_hi", su_hilited, PSU, 0, 1, 0},
{"su:", suemote, PSU, 0, 1, 0},
{"swho", swho, 0, 0, 1, 0},
#ifdef PC
{"switch", switch_person, 0, 0, 1, 0},
#endif
{"sync", sync_files, (LOWER_ADMIN | ADMIN), 0, 1, 0},
{"syncall", sync_all_by_user, (LOWER_ADMIN | ADMIN), 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"tell", tell, 0, 0, 1, 0},	/* T */
{"tf", tell_friends, 0, 0, 1, 0},
{"think", newthink, 0, 0, 1, 0},
{"tlist", toggle_list, LIST, 0, 1, 0},
{"time", view_time, 0, 0, 1, 0},
{"title", set_title, 0, 0, 1, 0},
{"trace", trace, (TRACE | SU | ADMIN), 0, 1, 0},
{"trans", trans_fn, 0, 0, 1, 0},
{"twho", twho, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

/* {"unlink",unlink_from_room,ADMIN,1,0},            U     */
{"unbanish", unbanish, (SU | ADMIN), 0, 1, 0},
{"unconverse", unconverse, (SU | ADMIN), 0, 1, 0},
{"unfrog", unfrog, (FROG | SU | ADMIN), 1 , 0},
{"unjail", unjail, (SU | ADMIN), 0, 1, 0},
{"unsplat", unsplat, (SU | ADMIN), 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"validate_email", validate_email, (SU | ADMIN), 0, 1, 0},
{"view_note", view_note, ADMIN, 0, 1, 0},
{"visit", visit, 0, 0, 1, 0},	/* V */
{"vlist", view_others_list, (LOWER_ADMIN | ADMIN), 0, 1, 0},
{"vlog", vlog, (LOWER_ADMIN|ADMIN), 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"wake", wake, 0, 0, 1, 0},
{"wall", wall, (LOWER_ADMIN | ADMIN), 0, 1, 0},
{"warn", warn, (WARN | SU ), 0, 1, 0},
{"where", where, 0, 0, 1, 0},
{"whisper", whisper, 0, 0, 1, 0},
{"who", who, 0, 0, 1, 0},	/* W */
{"with", with, 0, 0, 1, 0},
{"wordwrap", set_word_wrap, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0},

{"x", examine, 0, 0, 1, 0},	/* X */
{0, 0, 0, 0, 0, 0},

{"yoyo", yoyo, (SU | ADMIN), 0, 1, 0}, /* Y */
{0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0}		/* Z */
};

struct command *coms[27];