pennmush/game/
pennmush/game/data/
pennmush/game/log/
pennmush/game/save/
pennmush/game/txt/evt/
pennmush/game/txt/nws/
pennmush/os2/
/* cmds.c
 * Actual definitions of the commands
 * Parsing is handled in command.c
 */
#include "copyrite.h"
#include "config.h"

#ifdef I_STRING
#include <string.h>
#else
#include <strings.h>
#endif

#include "dbdefs.h"
#include "conf.h"

#include "mushdb.h"
#include "externs.h"
#include "intrface.h"
#include "match.h"
#include "game.h"
#include "globals.h"
#include "extmail.h"
#ifdef CHAT_SYSTEM
#include "extchat.h"
#endif
#include "getpgsiz.h"
#include "parse.h"
#include "access.h"
#include "version.h"

#include "function.h"
#include "command.h"

#include "confmagic.h"

/* External Stuff */
void do_config_list _((dbref player, const char *type));
void do_poor _((dbref player, char *arg1));
void do_dolist _((dbref player, char *list, char *command,
		  dbref cause, int flag, int notify_flag));
void do_list _((dbref player, char *arg));
void do_writelog _((dbref player, char *str, int ltype));
void do_reboot _((dbref player, int flag));
void do_readcache _((dbref player));
void do_scan _((dbref player, char *command, int flag));
void do_uptime _((dbref player));


COMMAND (cmd_allhalt) {
  do_allhalt(player);
}

#ifdef QUOTA
COMMAND (cmd_allquota) {
  do_allquota(player, arg_left, SW_ISSET(sw, SWITCH_QUIET));
}

#endif

COMMAND (cmd_atrlock) {
  do_atrlock(player, arg_left, arg_right);
}

COMMAND (cmd_attribute) {
  if (SW_ISSET(sw, SWITCH_ACCESS))
    do_attribute_access(player, arg_left, arg_right, SW_ISSET(sw, SWITCH_RETROACTIVE));
  else if (SW_ISSET(sw, SWITCH_DELETE))
    do_attribute_delete(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_RENAME))
    do_attribute_rename(player, arg_left, arg_right);
  else
    do_attribute_info(player, arg_left);
}

COMMAND (cmd_atrchown) {
  do_atrchown(player, arg_left, arg_right);
}

COMMAND (cmd_boot) {
  if (SW_ISSET(sw, SWITCH_PORT))
    do_boot(player, arg_left, 1);
  else if (SW_ISSET(sw, SWITCH_ME))
    do_boot(player, (char *) NULL, 2);
  else
    do_boot(player, arg_left, 0);
}

#ifdef CHAT_SYSTEM
COMMAND (cmd_cemit) {
  do_cemit(player, arg_left, arg_right);
}

COMMAND (cmd_channel) {
  if (switches)
    do_channel(player, arg_left, arg_right, switches);
  else if (SW_ISSET(sw, SWITCH_LIST))
    do_channel_list(player, arg_left);

  else if (SW_ISSET(sw, SWITCH_ADD))
    do_chan_admin(player, arg_left, arg_right, 0);
  else if (SW_ISSET(sw, SWITCH_DELETE))
    do_chan_admin(player, arg_left, arg_right, 1);
  else if (SW_ISSET(sw, SWITCH_NAME))
    do_chan_admin(player, arg_left, arg_right, 2);
  else if (SW_ISSET(sw, SWITCH_RENAME))
    do_chan_admin(player, arg_left, arg_right, 2);
  else if (SW_ISSET(sw, SWITCH_PRIVS))
    do_chan_admin(player, arg_left, arg_right, 3);
  else if (SW_ISSET(sw, SWITCH_QUIET))
    do_chan_admin(player, arg_left, arg_right, 4);
  else if (SW_ISSET(sw, SWITCH_DECOMPILE))
    do_chan_decompile(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_DESC))
    do_chan_desc(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_TITLE))
    do_chan_title(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_CHOWN))
    do_chan_chown(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_WIPE))
    do_chan_wipe(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_MUTE))
    do_chan_user_flags(player, arg_left, arg_right, 0, 0);
  else if (SW_ISSET(sw, SWITCH_HIDE))
    do_chan_user_flags(player, arg_left, arg_right, 1, 0);
  else if (SW_ISSET(sw, SWITCH_GAG))
    do_chan_user_flags(player, arg_left, arg_right, 2, 0);
  else if (SW_ISSET(sw, SWITCH_WHAT))
    do_chan_what(player, arg_left);
  else
    do_channel(player, arg_left, NULL, arg_right);
}

COMMAND (cmd_chat) {
  do_chat_by_name(player, arg_left, arg_right);
}

#endif

COMMAND (cmd_chownall) {
  do_chownall(player, arg_left, arg_right);
}

COMMAND (cmd_chown) {
  do_chown(player, arg_left, arg_right);
}

COMMAND (cmd_chzoneall) {
  do_chzoneall(player, arg_left, arg_right);
}

COMMAND (cmd_chzone) {
  do_chzone(player, arg_left, arg_right);
}

COMMAND (cmd_config) {
  if (SW_ISSET(sw, SWITCH_GLOBALS))
    do_config_list(player, NULL);
  else if (SW_ISSET(sw, SWITCH_DEFAULTS))
    do_config_list(player, NULL);
  else if (SW_ISSET(sw, SWITCH_COSTS))
    do_config_list(player, NULL);
  else if (SW_ISSET(sw, SWITCH_FUNCTIONS))
    do_list_functions(player);
  else if (SW_ISSET(sw, SWITCH_COMMANDS))
    do_list_commands(player);
  else if (SW_ISSET(sw, SWITCH_ATTRIBS))
    do_list_attribs(player);
  else if (SW_ISSET(sw, SWITCH_LIST))
    do_config_list(player, arg_left);
  else
    do_config_list(player, arg_left);
}

COMMAND (cmd_cpattr) {
  do_cpattr(player, arg_left, args_right, 0);
}

COMMAND (cmd_create) {
  do_create(player, arg_left, atol(arg_right));
}

COMMAND (cmd_clone) {
  do_clone(player, arg_left);
}

#ifdef CHAT_SYSTEM
COMMAND (cmd_clock) {
  if (SW_ISSET(sw, SWITCH_JOIN))
    do_chan_lock(player, arg_left, arg_right, CL_JOIN);
  else if (SW_ISSET(sw, SWITCH_SPEAK))
    do_chan_lock(player, arg_left, arg_right, CL_SPEAK);
  else if (SW_ISSET(sw, SWITCH_MOD))
    do_chan_lock(player, arg_left, arg_right, CL_MOD);
  else if (SW_ISSET(sw, SWITCH_SEE))
    do_chan_lock(player, arg_left, arg_right, CL_SEE);
  else if (SW_ISSET(sw, SWITCH_HIDE))
    do_chan_lock(player, arg_left, arg_right, CL_HIDE);
  else
    notify(player, "You must specify a type of lock");
}
#endif

COMMAND (cmd_dbck) {
  do_dbck(player);
}

COMMAND (cmd_decompile) {
  if (SW_ISSET(sw, SWITCH_DB))
    do_decompile(player, arg_left, 1);
  else if (SW_ISSET(sw, SWITCH_TF))
    do_decompile(player, arg_left, 2);
  else if (SW_ISSET(sw, SWITCH_FLAGS))
    do_decompile(player, arg_left, 3);
  else if (SW_ISSET(sw, SWITCH_ATTRIBS))
    do_decompile(player, arg_left, 4);
  else
    do_decompile(player, arg_left, 0);
}

COMMAND (cmd_destroy) {
  if (SW_ISSET(sw, SWITCH_OVERRIDE))
    do_destroy(player, arg_left, 1);
  else
    do_destroy(player, arg_left, 0);
}

COMMAND (cmd_dig) {
  if (SW_ISSET(sw, SWITCH_TELEPORT))
    do_dig(player, arg_left, args_right, 1);
  else
    do_dig(player, arg_left, args_right, 0);
}

COMMAND (cmd_disable) {
  do_enable(player, arg_left, 0);
}

COMMAND (cmd_doing) {
  if (SW_ISSET(sw, SWITCH_HEADER))
    do_poll(player, arg_left);
  else
    do_doing(player, arg_left);
}

COMMAND (cmd_dolist) {
  if (SW_ISSET(sw, SWITCH_NOTIFY))
    do_dolist(player, arg_left, arg_right, cause, 0, 1);
  else
    do_dolist(player, arg_left, arg_right, cause, 0, 0);
}

COMMAND (cmd_drain) {
  do_notify(player, cause, 2, arg_left, arg_right);
}

COMMAND (cmd_dump) {
  if (SW_ISSET(sw, SWITCH_PARANOID))
    do_dump(player, arg_left, 1);
  else if (SW_ISSET(sw, SWITCH_DEBUG))
    do_dump(player, arg_left, 2);
  else
    do_dump(player, arg_left, 0);
}

COMMAND (cmd_edit) {
  do_gedit(player, arg_left, args_right);
}

COMMAND (cmd_elock) {
  do_lock(player, arg_left, arg_right, (char *) Enter_Lock);
}

COMMAND (cmd_emit) {
  if (SW_ISSET(sw, SWITCH_ROOM))
    do_lemit(player, arg_left);
  else
    do_emit(player, arg_left);
}

COMMAND (cmd_enable) {
  do_enable(player, arg_left, 1);
}

COMMAND (cmd_entrances) {
  if (SW_ISSET(sw, SWITCH_EXITS))
    do_entrances(player, arg_left, args_right, 1);
  else if (SW_ISSET(sw, SWITCH_THINGS))
    do_entrances(player, arg_left, args_right, 2);
  else if (SW_ISSET(sw, SWITCH_PLAYERS))
    do_entrances(player, arg_left, args_right, 3);
  else if (SW_ISSET(sw, SWITCH_ROOMS))
    do_entrances(player, arg_left, args_right, 4);
  else
    do_entrances(player, arg_left, args_right, 0);
}

COMMAND (cmd_eunlock) {
  do_unlock(player, arg_left, (char *) Enter_Lock);
}

COMMAND (cmd_find) {
  do_find(player, arg_left, args_right);
}

COMMAND (cmd_firstexit) {
  do_firstexit(player, arg_left);
}

COMMAND (cmd_fixdb) {
  if (SW_ISSET(sw, SWITCH_LOCATION))
    do_fixdb(player, arg_left, arg_right, 0);
  else if (SW_ISSET(sw, SWITCH_CONTENTS))
    do_fixdb(player, arg_left, arg_right, 1);
  else if (SW_ISSET(sw, SWITCH_EXITS))
    do_fixdb(player, arg_left, arg_right, 2);
  else if (SW_ISSET(sw, SWITCH_NEXT))
    do_fixdb(player, arg_left, arg_right, 3);
  else
    notify(player, "Command MUST have a switch.");
}

COMMAND (cmd_force) {
  do_force(player, arg_left, arg_right);
}

COMMAND (cmd_function) {
  if (SW_ISSET(sw, SWITCH_DELETE))
    do_function_delete(player, arg_left);
  else
    do_function(player, arg_left, args_right);
}

COMMAND (cmd_gedit) {
  do_gedit(player, arg_left, args_right);
}

COMMAND (cmd_grep) {
  if (SW_ISSET(sw, SWITCH_PRINT))
    do_grep(player, arg_left, arg_right, 1, 0);
  else if (SW_ISSET(sw, SWITCH_ILIST))
    do_grep(player, arg_left, arg_right, 0, 1);
  else if (SW_ISSET(sw, SWITCH_IPRINT))
    do_grep(player, arg_left, arg_right, 1, 1);
  else
    do_grep(player, arg_left, arg_right, 0, 0);
}

COMMAND (cmd_halt) {
  if (SW_ISSET(sw, SWITCH_ALL))
    do_allhalt(player);
  else
    do_halt1(player, arg_left, arg_right);
}

COMMAND (cmd_hide) {
  if (SW_ISSET(sw, SWITCH_NO) || SW_ISSET(sw, SWITCH_OFF))
    hide_player(player, 0);
  else
    hide_player(player, 1);
}

COMMAND (cmd_kick) {
  do_kick(player, arg_left);
}

COMMAND (cmd_lemit) {
  do_lemit(player, arg_left);
}

COMMAND (cmd_link) {
  do_link(player, arg_left, arg_right);
}

COMMAND (cmd_listmotd) {
  do_motd(player, 3, "");
}

COMMAND (cmd_list) {
  if (SW_ISSET(sw, SWITCH_MOTD))
    do_motd(player, 3, "");
  else if (SW_ISSET(sw, SWITCH_FUNCTIONS))
    do_list_functions(player);
  else if (SW_ISSET(sw, SWITCH_COMMANDS))
    do_list_commands(player);
  else if (SW_ISSET(sw, SWITCH_ATTRIBS))
    do_list_attribs(player);
  else
    do_list(player, arg_left);
}

COMMAND (cmd_lock) {
  if ((switches) && (switches[0]))
    do_lock(player, arg_left, arg_right, switches);
  else
    do_lock(player, arg_left, arg_right, (char *) Basic_Lock);
}

COMMAND (cmd_log) {
  if (SW_ISSET(sw, SWITCH_CHECK))
    do_writelog(player, arg_left, LT_CHECK);
  else if (SW_ISSET(sw, SWITCH_CMD))
    do_writelog(player, arg_left, LT_CMD);
  else if (SW_ISSET(sw, SWITCH_CONN))
    do_writelog(player, arg_left, LT_CONN);
  else if (SW_ISSET(sw, SWITCH_ERR))
    do_writelog(player, arg_left, LT_ERR);
  else if (SW_ISSET(sw, SWITCH_TRACE))
    do_writelog(player, arg_left, LT_TRACE);
  else if (SW_ISSET(sw, SWITCH_WIZ))
    do_writelog(player, arg_left, LT_WIZ);
  else
    do_writelog(player, arg_left, LT_CMD);
}

#ifdef USE_MAILER
COMMAND (cmd_mail) {
  if (SW_ISSET(sw, SWITCH_STATS))
    do_mail_stats(player, arg_left, 0);
  else if (SW_ISSET(sw, SWITCH_DSTATS))
    do_mail_stats(player, arg_left, 1);
  else if (SW_ISSET(sw, SWITCH_FSTATS))
    do_mail_stats(player, arg_left, 2);
  else if (SW_ISSET(sw, SWITCH_DEBUG))
    do_mail_debug(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_NUKE))
    do_mail_nuke(player);
  else if (SW_ISSET(sw, SWITCH_FOLDER))
    do_mail_change_folder(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_UNFOLDER))
    do_mail_unfolder(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_LIST))
    do_mail_list(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_READ))
    do_mail_read(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_CLEAR))
    do_mail_clear(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_UNCLEAR))
    do_mail_unclear(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_PURGE))
    do_mail_purge(player);
  else if (SW_ISSET(sw, SWITCH_FILE))
    do_mail_file(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_TAG))
    do_mail_tag(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_UNTAG))
    do_mail_untag(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_FWD))
    do_mail_fwd(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_FORWARD))
    do_mail_fwd(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_SEND))
    do_mail_send(player, arg_left, arg_right, 0, 0);
  else if (SW_ISSET(sw, SWITCH_SILENT))
    do_mail_send(player, arg_left, arg_right, 0, 1);
  else if (SW_ISSET(sw, SWITCH_URGENT))
    do_mail_send(player, arg_left, arg_right, M_URGENT, 0);
  else
    do_mail(player, arg_left, arg_right);
}
#endif

COMMAND (cmd_map) {
  do_dolist(player, arg_left, arg_right, cause, 1, 0);
}

COMMAND (cmd_motd) {
  if (SW_ISSET(sw, SWITCH_CONNECT))
    do_motd(player, 1, arg_left);
  else if (SW_ISSET(sw, SWITCH_LIST))
    do_motd(player, 3, "");
  else if (SW_ISSET(sw, SWITCH_WIZARD))
    do_motd(player, 2, arg_left);
  else if (SW_ISSET(sw, SWITCH_DOWN))
    do_motd(player, 4, arg_left);
  else if (SW_ISSET(sw, SWITCH_FULL))
    do_motd(player, 5, arg_left);
  else
    do_motd(player, 1, arg_left);
}

COMMAND (cmd_mvattr) {
  do_cpattr(player, arg_left, args_right, 1);
}

COMMAND (cmd_name) {
  do_name(player, arg_left, arg_right);
}

COMMAND (cmd_newpassword) {
  do_newpassword(player, arg_left, arg_right);
}

COMMAND (cmd_notify) {
  if (SW_ISSET(sw, SWITCH_ALL))
    do_notify(player, cause, 1, arg_left, arg_right);
  else
    do_notify(player, cause, 0, arg_left, arg_right);
}

COMMAND (cmd_nuke) {
  do_destroy(player, arg_left, 1);
}

COMMAND (cmd_oemit) {
  do_oemit(player, arg_left, arg_right);
}

COMMAND (cmd_open) {
  do_open(player, arg_left, args_right);
}

COMMAND (cmd_parent) {
  do_parent(player, arg_left, arg_right);
}

COMMAND (cmd_password) {
  do_password(player, arg_left, arg_right);
}

COMMAND (cmd_pcreate) {
  do_pcreate(player, arg_left, arg_right);
}

COMMAND (cmd_pemit) {
  int silent;

  if (SW_ISSET(sw, SWITCH_SILENT))
    silent = 1;
  else if (SW_ISSET(sw, SWITCH_NOISY))
    silent = 0;
  else
    silent = SILENT_PEMIT ? 1 : 0;

  if (SW_ISSET(sw, SWITCH_LIST))
    do_pemit_list(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_CONTENTS))
    do_remit(player, arg_left, arg_right);
  else
    do_pemit(player, arg_left, arg_right, silent);
}

COMMAND (cmd_poll) {
  do_poll(player, arg_left);
}

COMMAND (cmd_poor) {
  do_poor(player, arg_left);
}

COMMAND (cmd_power) {
  do_power(player, arg_left, arg_right);
}

COMMAND (cmd_ps) {
  if (SW_ISSET(sw, SWITCH_ALL))
    do_queue(player, arg_left, 1);
  else if (SW_ISSET(sw, SWITCH_SUMMARY))
    do_queue(player, arg_left, 2);
  else if (SW_ISSET(sw, SWITCH_COUNT))
    do_queue(player, arg_left, 2);
  else if (SW_ISSET(sw, SWITCH_QUICK))
    do_queue(player, arg_left, 3);
  else
    do_queue(player, arg_left, 0);
}

COMMAND (cmd_purge) {
  do_purge(player);
}

#ifdef QUOTA
COMMAND (cmd_quota) {
  if (SW_ISSET(sw, SWITCH_ALL))
    do_allquota(player, arg_left, 0);
  else if (SW_ISSET(sw, SWITCH_SET))
    do_quota(player, arg_left, arg_right, 1);
  else
    do_quota(player, arg_left, "", 0);
}
#endif				/* QUOTA */

COMMAND (cmd_readcache) {
  do_readcache(player);
}

COMMAND (cmd_remit) {
  do_remit(player, arg_left, arg_right);
}

COMMAND (cmd_rejectmotd) {
  do_motd(player, 4, arg_left);
}

COMMAND (cmd_restart) {
  if (SW_ISSET(sw, SWITCH_ALL))
    do_allrestart(player);
  else
    do_restart_com(player, arg_left);
}

COMMAND (cmd_rwall) {
  do_wall(player, arg_left, 1, 1);
}

COMMAND (cmd_rwallpose) {
  do_wall(player, arg_left, 1, 2);
}

COMMAND (cmd_rwallemit) {
  do_wall(player, arg_left, 1, 3);
}

COMMAND (cmd_scan) {
  if (SW_ISSET(sw, SWITCH_ROOM))
    do_scan(player, arg_left, CHECK_NEIGHBORS | CHECK_HERE);
  else if (SW_ISSET(sw, SWITCH_SELF))
    do_scan(player, arg_left, CHECK_INVENTORY | CHECK_SELF);
  else if (SW_ISSET(sw, SWITCH_ZONE))
    do_scan(player, arg_left, CHECK_ZONE);
  else if (SW_ISSET(sw, SWITCH_GLOBALS))
    do_scan(player, arg_left, CHECK_GLOBAL);
  else
    do_scan(player, arg_left, CHECK_INVENTORY | CHECK_NEIGHBORS |
	    CHECK_SELF | CHECK_HERE | CHECK_ZONE | CHECK_GLOBAL);
}

COMMAND (cmd_search) {
  do_search(player, arg_left, args_right);
}

COMMAND (cmd_select) {
  do_switch(player, arg_left, args_right, cause, 1);
}

COMMAND (cmd_set) {
  do_set(player, arg_left, arg_right);
}

COMMAND (cmd_shutdown) {
  int paranoid;
  paranoid = (SW_ISSET(sw, SWITCH_PARANOID)) ? 1 : 0;
  if (SW_ISSET(sw, SWITCH_REBOOT))
    do_reboot(player, paranoid);
  else if (SW_ISSET(sw, SWITCH_PANIC))
    do_shutdown(player, -1);
  else
    do_shutdown(player, paranoid);
}

COMMAND (cmd_sitelock) {
  if (SW_ISSET(sw, SWITCH_BAN))
    do_sitelock(player, arg_left, NULL, 1);
  else if (SW_ISSET(sw, SWITCH_REGISTER))
    do_sitelock(player, arg_left, NULL, 0);
  else if (SW_ISSET(sw, SWITCH_NAME))
    do_sitelock(player, arg_left, NULL, 2);
  else
    do_sitelock(player, arg_left, arg_right, 0);
}

COMMAND (cmd_stats) {
  do_stats(player, arg_left);
}

COMMAND (cmd_sweep) {
  if (SW_ISSET(sw, SWITCH_CONNECTED))
    do_sweep(player, "connected");
  else if (SW_ISSET(sw, SWITCH_HERE))
    do_sweep(player, "here");
  else if (SW_ISSET(sw, SWITCH_INVENTORY))
    do_sweep(player, "inventory");
  else if (SW_ISSET(sw, SWITCH_EXITS))
    do_sweep(player, "exits");
  else
    do_sweep(player, arg_left);
}

COMMAND (cmd_switch) {
  if (SW_ISSET(sw, SWITCH_FIRST))
    do_switch(player, arg_left, args_right, cause, 1);
  else
    do_switch(player, arg_left, args_right, cause, 0);
}

#ifdef QUOTA
COMMAND (cmd_squota) {
  do_quota(player, arg_left, arg_right, 1);
}

#endif

COMMAND (cmd_teleport) {
  do_teleport(player, arg_left, arg_right);
}

COMMAND (cmd_trigger) {
  do_trigger(player, arg_left, args_right);
}

COMMAND (cmd_toad) {
  do_toad(player, arg_left);
}

COMMAND (cmd_ulock) {
  do_lock(player, arg_left, arg_right, (char *) Use_Lock);
}

COMMAND (cmd_undestroy) {
  do_undestroy(player, arg_left);
}

COMMAND (cmd_unlink) {
  do_unlink(player, arg_left);
}

COMMAND (cmd_unlock) {
  if ((switches) && (switches[0]))
    do_unlock(player, arg_left, switches);
  else
    do_unlock(player, arg_left, (char *) Basic_Lock);
}

COMMAND (cmd_uptime) {
  do_uptime(player);
}

COMMAND (cmd_uunlock) {
  do_unlock(player, arg_left, (char *) Use_Lock);
}

COMMAND (cmd_verb) {
  do_verb(player, cause, arg_left, args_right);
}

COMMAND (cmd_version) {
  do_version(player);
}

COMMAND (cmd_wait) {
  do_wait(player, cause, arg_left, arg_right);
}

COMMAND (cmd_wall) {
  int target = 2;
  int type = 1;
  if (SW_ISSET(sw, SWITCH_WIZARD))
    target = 0;
  if (SW_ISSET(sw, SWITCH_ROYALTY))
    target = 1;
  if (SW_ISSET(sw, SWITCH_EMIT))
    type = 3;
  if (SW_ISSET(sw, SWITCH_POSE))
    type = 2;
  do_wall(player, arg_left, target, type);
}

COMMAND (cmd_wallpose) {
  do_wall(player, arg_left, 2, 2);
}

COMMAND (cmd_wallemit) {
  do_wall(player, arg_left, 2, 3);
}

#ifdef USE_WARNINGS
COMMAND (cmd_warnings) {
  do_warnings(player, arg_left, arg_right);
}

COMMAND (cmd_wcheck) {
  if (SW_ISSET(sw, SWITCH_ALL))
    do_wcheck_all(player);
  else
    do_wcheck(player, arg_left);
}
#endif

COMMAND (cmd_whereis) {
  do_whereis(player, arg_left);
}

COMMAND (cmd_wipe) {
  do_wipe(player, arg_left);
}

COMMAND (cmd_wizwall) {
  do_wall(player, arg_left, 0, 1);
}

COMMAND (cmd_wizmotd) {
  do_motd(player, 2, arg_left);
}

COMMAND (cmd_wizpose) {
  do_wall(player, arg_left, 0, 2);
}

COMMAND (cmd_wizemit) {
  do_wall(player, arg_left, 0, 3);
}

COMMAND (cmd_zemit) {
  do_zemit(player, arg_left, arg_right);
}

COMMAND (cmd_ahelp) {
  do_new_spitfile(player, arg_left, HELPINDX, HELPTEXT, 1);
}

COMMAND (cmd_anews) {
  do_new_spitfile(player, arg_left, NEWSINDX, NEWS_FILE, 1);
}

COMMAND (cmd_brief) {
  do_examine(player, arg_left, 1);
}

COMMAND (cmd_drop) {
  do_drop(player, arg_left);
}

COMMAND (cmd_examine) {
  if (SW_ISSET(sw, SWITCH_BRIEF))
    do_examine(player, arg_left, 1);
  else if (SW_ISSET(sw, SWITCH_DEBUG))
    do_debug_examine(player, arg_left);
  else if (SW_ISSET(sw, SWITCH_MORTAL))
    do_examine(player, arg_left, 2);
  else
    do_examine(player, arg_left, 0);
}

COMMAND (cmd_enter) {
  do_enter(player, arg_left, 0);
}

COMMAND (cmd_events) {
  do_new_spitfile(player, arg_left, EVENTINDX, EVENT_FILE, 0);
}

COMMAND (cmd_follow) {
  notify(player, "COMMAND NOT IMPLEMENTED YET.");
}

COMMAND (cmd_get) {
  do_get(player, arg_left);
}

COMMAND (cmd_give) {
  do_give(player, arg_left, arg_right);
}

COMMAND (cmd_goto) {
  move_wrapper(player, arg_left);
}

COMMAND (cmd_help) {
  do_new_spitfile(player, arg_left, HELPINDX, HELPTEXT, 0);
}

COMMAND (cmd_inventory) {
  do_inventory(player);
}

COMMAND (cmd_index) {
  do_new_spitfile(player, arg_left, INDEXINDX, INDEX_FILE, 0);
}

COMMAND (cmd_kill) {
  do_kill(player, arg_left, atol(arg_right), 0);
}

COMMAND (cmd_look) {
  if (SW_ISSET(sw, SWITCH_OUTSIDE))
    do_look_at(player, arg_left, 1);
  else
    do_look_at(player, arg_left, 0);
}

COMMAND (cmd_leave) {
  do_leave(player);
}

COMMAND (cmd_news) {
  do_new_spitfile(player, arg_left, NEWSINDX, NEWS_FILE, 0);
}

COMMAND (cmd_page) {
  char *t;
  if ((arg_right) && (*arg_right)) {
    t = arg_right;
  } else {
    t = NULL;
  }
  if (SW_ISSET(sw, SWITCH_LIST))
    do_multipage(player, arg_left, t);
  else if (SW_ISSET(sw, SWITCH_BLIND))
    do_page(player, arg_left, t);
  else if (BLIND_PAGE)
    do_page(player, arg_left, t);
  else
    do_multipage(player, arg_left, t);
}

COMMAND (cmd_pose) {
  if (SW_ISSET(sw, SWITCH_NOSPACE))
    do_pose(player, arg_left, 1);
  else
    do_pose(player, arg_left, 0);
}

COMMAND (cmd_rob) {
  do_rob(player, arg_left);
}

#ifdef ALLOW_RPAGE
COMMAND (cmd_rpage) {
  if (SW_ISSET(sw, SWITCH_LIST))
    do_rpage_list(player);
  else if (SW_ISSET(sw, SWITCH_ADD))
    do_rpage_add(player, arg_left, arg_right);
  else if (SW_ISSET(sw, SWITCH_DELETE))
    do_rpage_delete(player, arg_left, arg_right);
  else
    do_rpage(player, arg_left, arg_right);
}
#endif

COMMAND (cmd_rules) {
  do_new_spitfile(player, arg_left, (char *) RULESINDX, RULES_FILE, 0);
}

COMMAND (cmd_say) {
  do_say(player, arg_left);
}

COMMAND (cmd_score) {
  do_score(player);
}

COMMAND (cmd_semipose) {
  do_pose(player, arg_left, 1);
}

COMMAND (cmd_slay) {
  do_kill(player, arg_left, 0, 1);
}

COMMAND (cmd_take) {
  do_get(player, arg_left);
}

COMMAND (cmd_think) {
  do_think(player, arg_left);
}

COMMAND (cmd_whisper) {
  int noisy;
  if (SW_ISSET(sw, SWITCH_NOISY))
    noisy = 1;
  else if (SW_ISSET(sw, SWITCH_SILENT))
    noisy = 0;
  else
    noisy = (NOISY_WHISPER ? 1 : 0);
  if (SW_ISSET(sw, SWITCH_LIST))
    do_whisper_list(player, arg_left, arg_right, noisy);
  else
    do_whisper(player, arg_left, arg_right, noisy);
}

COMMAND (cmd_use) {
  do_use(player, arg_left);
}

COMMAND (command_atrset) {
  dbref thing;

  if ((thing = match_controlled(player, arg_left)) == NOTHING)
    return;

  /* If it's &attr obj, we must pass a NULL. If &attr obj=, pass "" */
  if (strchr(raw, '=')) {
    do_set_atr(thing, switches, arg_right, player, 0x1 | (SW_ISSET(sw, SWITCH_NOEVAL) ? 0 : 0x02));
  } else {
    do_set_atr(thing, switches, NULL, player, 1);
  }
}

COMMAND (cmd_null) {
  return;
}