#include <sys/types.h> #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" #include "interp.h" #include "olc.h" bool check_social args ((CHAR_DATA * ch, char *command, char *argument)); bool keepincomm = FALSE; char last_command[MAX_STRING_LENGTH]; void cardgame_menu args ((CHAR_DATA * ch, char *argument)); /* * Command logging types. */ #define LOG_NORMAL 0 #define LOG_ALWAYS 1 #define LOG_NEVER 2 #define LOG_PASSWORD 3 /* * Log-all switch. */ bool fLogAll = FALSE; /* * Command table. */ const struct cmd_type cmd_table[] = { /* * Common movement commands. */ {"north", do_north, POS_STANDING, 0, LOG_NEVER, 0, FALSE}, {"east", do_east, POS_STANDING, 0, LOG_NEVER, 0, FALSE}, {"south", do_south, POS_STANDING, 0, LOG_NEVER, 0, FALSE}, {"west", do_west, POS_STANDING, 0, LOG_NEVER, 0, FALSE}, {"up", do_up, POS_STANDING, 0, LOG_NEVER, 0, FALSE}, {"down", do_down, POS_STANDING, 0, LOG_NEVER, 0, FALSE}, /* * Common other commands. * Placed here so one and two letter abbreviations work. */ {"donate", do_donate, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"dice", do_dice, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"write", do_write, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"at", do_at, POS_DEAD, L7, LOG_NORMAL, 1, FALSE}, {"cast", do_cast, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"cash", do_cash, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"cook", do_cook, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"hone", do_hone, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"catchup", do_catchup, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"circle", do_circle, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"pray", do_pray, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"pack", do_pack, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"unpack", do_unpack, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"fish", do_fish, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"camp", do_camp, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"addfake", do_addfake, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, {"remfake", do_remfake, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, {"finger", do_finger, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"explore", do_explored, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"charge", do_charge, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"auction", do_auction, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"balance", do_balance, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"buy", do_buy, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"channels", do_channels, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"delevel", do_delevel, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"relevel", do_relevel, POS_DEAD, 1, LOG_ALWAYS, 1, FALSE}, {"deposit", do_deposit, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"duel", do_duel, POS_RESTING, 9, LOG_NORMAL, 1, FALSE}, {"elist", do_elist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"exits", do_exits, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"exorcise", do_exorcise, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"get", do_get, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"goto", do_goto, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"group", do_group, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"gallop", do_gallop, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"hit", do_kill, POS_FIGHTING, 0, LOG_NORMAL, 0, FALSE}, {"inventory", do_inventory, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"ignore", do_ignore, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"kill", do_kill, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"killcount", do_killcount, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"kc", do_killcount, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"look", do_look, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"lore", do_lore, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"glance", do_glance, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"clan", do_clan, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"clantalk", do_clantalk, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"ct", do_clantalk, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"cls", do_cls, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"clear", do_cls, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"music", do_music, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"math", do_math, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"tell", do_tell, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"telepath", do_telepath, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"throw", do_throw, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"mount", do_mount, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"tether", do_tether, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"untether", do_untether, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"dismount", do_dismount, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"dismiss", do_dismiss, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"tame", do_tame, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"order", do_order, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"practice", do_practice, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"estimate", do_estimate, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"rest", do_rest, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"redirect", do_redirect, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"sit", do_sit, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"sockets", do_newsockets, POS_DEAD, L5, LOG_NORMAL, 1, FALSE}, {"stand", do_stand, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"stalk", do_stalk, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"unlock", do_unlock, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"wield", do_wear, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"withdraw", do_withdraw, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"wizhelp", do_wizhelp, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"newwizhelp", do_newwizhelp, POS_DEAD, 91, LOG_NORMAL, 1, FALSE}, /* * Informational commands. */ {"affects", do_affects, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"areas", do_areas, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"bet", do_bet, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"bug", do_bug, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"build", do_build, POS_STANDING, 0, LOG_ALWAYS, 1, FALSE}, {"coax", do_coax, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"commands", do_commands, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"compare", do_compare, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"consider", do_consider, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"count", do_count, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"create", do_create, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"credits", do_credits, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"equipment", do_equipment, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"examine", do_examine, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"help", do_help, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"info", do_info, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"motd", do_motd, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"read", do_read, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"report", do_report, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"repertoire", do_repertoire, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"rules", do_rules, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"score", do_score, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"scan", do_scanning, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"skills", do_skills, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"socials", do_socials, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"show", do_show, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"showmem", do_showmem, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"spells", do_spells, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"speedwalk", do_speedwalk, POS_STANDING, IM, LOG_NORMAL, 1, FALSE}, {"song", do_songs, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"songs", do_songs, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"chant", do_chant, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"chants", do_chants, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"prayers", do_prayers, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"stock", do_stock, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"unstock", do_unstock, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"hire", do_hire, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"showstats", do_showstats, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"story", do_story, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"time", do_time, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"typo", do_typo, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"weather", do_weather, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"who", do_who, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"whois", do_whois, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"wizlist", do_wizlist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"worth", do_worth, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, /* * Configuration commands. */ {"alia", do_alia, POS_DEAD, 0, LOG_NORMAL, 0, FALSE}, {"alias", do_alias, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autolist", do_autolist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autoassist", do_autoassist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autobutcher", do_autobutcher, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autoexit", do_autoexit, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autogold", do_autogold, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autoloot", do_autoloot, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autoreturn", do_autoreturn, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autosac", do_autosac, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"autosplit", do_autosplit, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"brief", do_brief, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"combine", do_combine, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"compact", do_compact, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"color", do_color, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"description", do_description, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"delet", do_delet, POS_DEAD, 0, LOG_PASSWORD, 0, FALSE}, {"delete", do_delete, POS_STANDING, 0, LOG_PASSWORD, 1, FALSE}, {"nofollow", do_nofollow, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"assassinate", do_assassinate, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"noloot", do_noloot, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"nosummon", do_nosummon, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"call", do_call, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"outfit", do_outfit, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"password", do_password, POS_DEAD, 0, LOG_PASSWORD, 1, FALSE}, {"prompt", do_prompt, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"scroll", do_scroll, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"title", do_title, POS_DEAD, 15, LOG_NORMAL, 1, FALSE}, {"unalias", do_unalias, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"wimpy", do_wimpy, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, /* * Communication commands. */ {"afk", do_afk, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"answer", do_answer, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"anonymous", do_anonymous, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"deaf", do_deaf, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"emote", do_emote, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"email", do_email, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"desecrate", do_desecrate, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"pmote", do_pmote, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {".", do_gossip, POS_SLEEPING, 0, LOG_NORMAL, 0, TRUE}, {"gossip", do_gossip, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"ooc", do_ooc, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {",", do_emote, POS_RESTING, 0, LOG_NORMAL, 0, TRUE}, {"grats", do_grats, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"gtell", do_gtell, POS_DEAD, 0, LOG_NORMAL, 1, TRUE}, {"]", do_gtell, POS_DEAD, 0, LOG_NORMAL, 0, TRUE}, {"cd", clan_donate, POS_RESTING, 0, LOG_NORMAL, 0, TRUE}, {"rpnote", do_note, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"rpreward", do_rpreward, POS_DEAD, 91, LOG_ALWAYS, 1, FALSE}, {"nhreward", do_nhreward, POS_DEAD, 93, LOG_ALWAYS, 1, FALSE}, {"qreward", do_qreward, POS_DEAD, 93, LOG_ALWAYS, 1, FALSE}, {"news", do_news, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"poetry", do_poetry, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"oocnote", do_oocnote, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"changes", do_changes, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"idea", do_idea, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"submit", do_submit, POS_SLEEPING, 92, LOG_NORMAL, 1, FALSE}, {"oldsockets", do_sockets, POS_DEAD, L5, LOG_NORMAL, 1, FALSE}, /* Command MAIL disabled as it made the mud lock up June 22. 2000, Morgan {"mail", do_mail, POS_SLEEPING, 99, LOG_NORMAL, 1, FALSE}, */ {"pose", do_pose, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, // {"question", do_question, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"quiet", do_quiet, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"reply", do_reply, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"replay", do_replay, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"layhands", do_layhands, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"say", do_say, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"'", do_say, POS_RESTING, 0, LOG_NORMAL, 0, TRUE}, {"#", do_multi, POS_DEAD, 0, LOG_NORMAL, 0, FALSE}, {"sanctify", do_sanctify, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"disperse", do_disperse, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"shout", do_shout, POS_RESTING, 3, LOG_NORMAL, 1, TRUE}, {"shriek", do_shout, POS_RESTING, 3, LOG_NORMAL, 1, TRUE}, {"unread", do_unread, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"yell", do_yell, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"brew", do_brew, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"scribe", do_scribe, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"bounty", do_bounty, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"brandish", do_brandish, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"close", do_close, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"drag", do_drag, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"drink", do_drink, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"drive", do_drive, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"drop", do_drop, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"eat", do_eat, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"envenom", do_envenom, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"fill", do_fill, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"give", do_give, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"heal", do_heal, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"hold", do_wear, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"list", do_list, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"lock", do_lock, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"open", do_open, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"pick", do_pick, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"doorbash", do_doorbash, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"db", do_doorbash, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"cw", do_clanwar, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"clanwar", do_clanwar, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"pour", do_pour, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"put", do_put, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"push", do_push, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"pull", do_pull, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"press", do_press, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"quaff", do_quaff, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"recite", do_recite, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"remove", do_remove, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"disrobe", do_disrobe, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"sell", do_sell, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"take", do_get, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"sacrifice", do_sacrifice, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"sail", do_sail, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"paddle", do_paddle, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"row", do_row, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"junk", do_sacrifice, POS_RESTING, 0, LOG_NORMAL, 0, FALSE}, {"tap", do_sacrifice, POS_RESTING, 0, LOG_NORMAL, 0, FALSE}, {"ban", do_ban, POS_DEAD, L2, LOG_ALWAYS, 1, FALSE}, {"value", do_value, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"wear", do_wear, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"zap", do_zap, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"zapchain", do_zapchain, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"backstab", do_backstab, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"sap", do_sap, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"knock", do_knock, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"feign", do_feign, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"prevent", do_prevent, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"dive", do_dive, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"toss", do_toss, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"art", do_art, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"strike", do_strike, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"whirlwind", do_whirlwind, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"fists", do_fists, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"bandage", do_bandage, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"mix", do_mix, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"repulse", do_repulse, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"tempt", do_tempt, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"falconry", do_falconry, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"deliver", do_deliver, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"fire", do_fire, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"fear", do_fear, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"pounce", do_pounce, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"disorient", do_disorient, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"carve", do_carve, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"attach", do_attach, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"reel", do_reel, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"bait", do_bait, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"noblink", do_noblink, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"peek", do_peek, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"superduel", do_superduel, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"illusion", do_illusion, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"eviscerate", do_eviscerate, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"uppercut", do_uppercut, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"kai", do_kai, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, /*{"stun", do_stun, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, */ {"bash", do_bash, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"bs", do_backstab, POS_FIGHTING, 0, LOG_NORMAL, 0, FALSE}, {"berserk", do_berserk, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"dirt", do_dirt, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"disarm", do_disarm, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"flee", do_flee, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"kick", do_kick, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, /* {"murde", do_murde, POS_FIGHTING, 0, LOG_NORMAL, 0, FALSE}, {"murder", do_murder, POS_FIGHTING, 5, LOG_NORMAL, 1, FALSE}, */ {"rescue", do_rescue, POS_FIGHTING, 0, LOG_NORMAL, 0, FALSE}, {"trip", do_trip, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"tripwire", do_tripwire, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"conceal", do_conceal, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"butcher", do_butcher, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"trample", do_trample, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"checksafe", do_checksafe, POS_DEAD, L2, LOG_ALWAYS, 1, FALSE}, {"checkbuild", do_checkbuild, POS_DEAD, L2, LOG_ALWAYS, 1, FALSE}, {"checkcity", do_checkcity, POS_DEAD, L2, LOG_ALWAYS, 1, FALSE}, {"killwipe", do_killwipe, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"enter", do_enter, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"board", do_board, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"climb", do_climb, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"scale", do_scale, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"entangle", do_entangle, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"tug", do_tug, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"ring", do_ring, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"shove", do_shove, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"smash", do_smash, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"sing", do_sing, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"play", do_play, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"compose", do_compose, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"jump", do_jump, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"crawl", do_crawl, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"descend", do_descend, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"follow", do_follow, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"gain", do_gain, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"go", do_enter, POS_STANDING, 0, LOG_NORMAL, 0, FALSE}, // {"groups", do_groups, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"hide", do_hide, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"camouflage", do_camouflage, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"qui", do_qui, POS_DEAD, 0, LOG_NORMAL, 0, FALSE}, {"quit", do_quit, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"recall", do_recall, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"/", do_recall, POS_FIGHTING, 0, LOG_NORMAL, 0, FALSE}, {"rent", do_rent, POS_DEAD, 0, LOG_NORMAL, 0, FALSE}, {"rename", do_rename, POS_DEAD, 98, LOG_ALWAYS, 1, FALSE}, {"battlecry", do_battlecry, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"save", do_save, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"defect", do_defect, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"disband", do_disband, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"sleep", do_sleep, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"sneak", do_sneak, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"stable", do_stable, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"retrieve", do_retrieve, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"split", do_split, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"steal", do_steal, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"swap", do_swap, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"sweep", do_sweep, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"palm", do_palm, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"plan", do_plan, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"plant", do_plant, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"pat", do_pat, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"topfishers", do_topfishers, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"train", do_train, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"track", do_track, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"visible", do_visible, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"land", do_land, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"mask", do_mask, POS_STANDING, 0, LOG_ALWAYS, 1, FALSE}, {"fly", do_fly, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"wake", do_wake, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"where", do_where, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"version", do_version, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"advance", do_advance, POS_DEAD, L4, LOG_ALWAYS, 1, FALSE}, {"dump", do_dump, POS_DEAD, ML, LOG_ALWAYS, 0, FALSE}, {"clist", do_clist, POS_DEAD, L6, LOG_NORMAL, 1, FALSE}, {"fakehost", do_fakehost, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"trust", do_trust, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"violate", do_violate, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"allow", do_allow, POS_DEAD, L1, LOG_ALWAYS, 1, FALSE}, {"deny", do_deny, POS_DEAD, L1, LOG_ALWAYS, 1, FALSE}, {"discon", do_disconnect, POS_DEAD, L4, LOG_ALWAYS, 1, FALSE}, {"flag", do_flag, POS_DEAD, L4, LOG_ALWAYS, 1, FALSE}, {"freeze", do_freeze, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"unfreeze", do_unfreeze, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"reward", do_reward, POS_DEAD, 93, LOG_ALWAYS, 1, FALSE}, {"permban", do_permban, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"permaff", do_permaff, POS_DEAD, L1, LOG_ALWAYS, 1, FALSE}, {"skillaff", do_skillaff, POS_DEAD, L1, LOG_ALWAYS, 1, FALSE}, {"whoinfo", do_whoinfo, POS_DEAD, L7, LOG_ALWAYS, 1, FALSE}, {"whomsg", do_whomsg, POS_DEAD, 93, LOG_ALWAYS, 1, FALSE}, {"noble", make_noble, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"protect", do_protect, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"reboo", do_reboo, POS_DEAD, L1, LOG_NORMAL, 0, FALSE}, {"reboot", do_reboot, POS_DEAD, L1, LOG_ALWAYS, 1, FALSE}, {"reclan", do_reclan, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"set", do_set, POS_DEAD, L4, LOG_ALWAYS, 1, FALSE}, {"script", do_script, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"shutdow", do_shutdow, POS_DEAD, L1, LOG_NORMAL, 0, FALSE}, {"shutdown", do_shutdown, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"seize", do_seize, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"drestore", do_deathrestore, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"quad_exp", do_quad_xp, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"double_exp", do_double_xp, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"half_exp", do_half_xp, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"cancel_exp", do_cancel_xp, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"battle_royale", do_battle_royale, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"slowns", do_slowns, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"wizlock", do_wizlock, POS_DEAD, L2, LOG_ALWAYS, 1, FALSE}, {"for", do_for, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"force", do_force, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"forage", do_forage, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"load", do_load, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"newlock", do_newlock, POS_DEAD, L4, LOG_ALWAYS, 1, FALSE}, {"nochannel", do_nochannels, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"shutup", do_shutup, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"noemote", do_noemote, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"noshout", do_noshout, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"notell", do_notell, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"notitle", do_notitle, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"pecho", do_pecho, POS_DEAD, L6, LOG_ALWAYS, 1, FALSE}, {"pardon", do_pardon, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"jail", do_jail, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"purge", do_purge, POS_DEAD, 0, LOG_ALWAYS, 1, FALSE}, {"zonepurge", do_zonepurge, POS_DEAD, 0, LOG_ALWAYS, 1, FALSE}, {"restore", do_restore, POS_DEAD, L3, LOG_ALWAYS, 1, FALSE}, {"restoremsg", do_restoremsg, POS_DEAD, L3, LOG_ALWAYS, 1, FALSE}, {"sla", do_sla, POS_DEAD, L4, LOG_NORMAL, 0, FALSE}, {"slay", do_slay, POS_DEAD, L4, LOG_ALWAYS, 1, FALSE}, {"teleport", do_transfer, POS_DEAD, L7, LOG_ALWAYS, 1, FALSE}, {"transfer", do_transfer, POS_DEAD, L7, LOG_ALWAYS, 1, FALSE}, //Shinowlan - 2/3/99 Rarity command {"rarity", do_rarity, POS_DEAD, L2, LOG_NORMAL, 1, FALSE}, {"poofin", do_bamfin, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"poofout", do_bamfout, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"gecho", do_echo, POS_DEAD, L4, LOG_ALWAYS, 1, FALSE}, {"holylight", do_holylight, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"incognito", do_incognito, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"invis", do_invis, POS_DEAD, IM, LOG_NORMAL, 0, FALSE}, {"log", do_log, POS_DEAD, L1, LOG_ALWAYS, 1, FALSE}, // Morgan June 20. 2000 - linkload/unload/chpass commands {"linkload", do_linkload, POS_DEAD, 97, LOG_ALWAYS, 1, FALSE}, {"lunload", do_lunload, POS_DEAD, 97, LOG_NORMAL, 1, FALSE}, {"chpass", do_chpass, POS_DEAD, 100, LOG_NORMAL, 1, FALSE}, // Morgan June 24. 2000 Administrator channel {"admin", do_admin, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"hearclan", do_hearclan, POS_DEAD, L5, LOG_NORMAL, 1, FALSE}, {"sendclan", do_sendclan, POS_DEAD, L5, LOG_NORMAL, 1, FALSE}, {"sendcw", do_sendcw, POS_DEAD, L5, LOG_NORMAL, 1, FALSE}, {"memory", do_memory, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, {"mwhere", do_mwhere, POS_DEAD, L6, LOG_NORMAL, 1, FALSE}, {"owhere", do_owhere, POS_DEAD, L6, LOG_NORMAL, 1, FALSE}, {"peace", do_peace, POS_DEAD, L5, LOG_NORMAL, 1, FALSE}, {"penalty", do_penalty, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"projects", do_projects, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"echo", do_recho, POS_DEAD, L8, LOG_ALWAYS, 1, FALSE}, {"return", do_return, POS_DEAD, L6, LOG_NORMAL, 1, FALSE}, {"retreat", do_retreat, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"snoop", do_snoop, POS_DEAD, L3, LOG_ALWAYS, 1, FALSE}, {"stat", do_stat, POS_DEAD, L7, LOG_NORMAL, 1, FALSE}, {"string", do_string, POS_DEAD, 91, LOG_ALWAYS, 1, FALSE}, {"switch", do_switch, POS_DEAD, L6, LOG_ALWAYS, 1, FALSE}, {"wizinvis", do_invis, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"vnum", do_vnum, POS_DEAD, L5, LOG_NORMAL, 1, FALSE}, {"zecho", do_zecho, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"clone", do_clone, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"grant", do_grant, POS_DEAD, ML, LOG_ALWAYS, 1, FALSE}, {"wiznet", do_wiznet, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"immtalk", do_immtalk, POS_DEAD, L8, LOG_NORMAL, 1, FALSE}, {"imotd", do_imotd, POS_DEAD, 99, LOG_NORMAL, 1, FALSE}, {":", do_immtalk, POS_DEAD, L8, LOG_NORMAL, 0, FALSE}, {"ocopy", do_ocopy, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"mcopy", do_mcopy, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"rcopy", do_rcopy, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"edit", do_olc, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"asave", do_asave, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"alist", do_alist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"blist", do_blist, POS_DEAD, L4, LOG_NORMAL, 1, FALSE}, {"rlist", do_rlist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"olist", do_olist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"mlist", do_mlist, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"resets", do_resets, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"aresets", do_aresets, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"smote", do_smote, POS_DEAD, L6, LOG_NORMAL, 1, FALSE}, {"prefi", do_prefi, POS_DEAD, IM, LOG_NORMAL, 0, FALSE}, {"prefix", do_prefix, POS_DEAD, IM, LOG_NORMAL, 1, FALSE}, //Adeon - 8/27/03 saves object triggers {"otlist", do_otlist, POS_DEAD, IM, LOG_NORMAL, 1, FALSE}, //Akamai - 2/26/99 exitlist, lists all exits from area {"exitlist", do_exlist, POS_DEAD, L2, LOG_NORMAL, 1, FALSE}, //Akamai - 4/15/99 badsummon, turns on and off the nasty summoning {"badsummon", do_badsummon, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, //Morgan - 9/19/04 exptrack, turns on and off the nasty summoning {"exptrack", do_tractivate, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, // Morgan - 6/29/2000, nonpk protection, toggles on and off {"safenopk", do_safe_nopk, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, {"elite", do_elite, POS_DEAD, 0, LOG_NORMAL, 0, FALSE}, {"edithelp", do_edithelp, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"remhelp", do_remhelp, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, // Akamai - 5/3/99 makehero makes a character a hero // while unhero unmakes the hero character {"makehero", do_hero, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, {"unhero", do_unhero, POS_DEAD, L1, LOG_NORMAL, 1, FALSE}, // Akamai - 6/24/99 garbage collection function to help with // memory leaks - primarily free up objects {"gc", do_garbage_collection, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, //Reaver related stuff {"nogate", do_nogate, POS_DEAD, 93, LOG_ALWAYS, 1, FALSE}, {"nogateall", do_nogateall, POS_DEAD, 93, LOG_ALWAYS, 1, FALSE}, {"sword", do_sword, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"invoke", do_invoke, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, //IBLIS 5/19/03 - command to help with conversion {"reroll", do_reroll, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"reincarnate", do_reincarnate, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"killable", do_killable, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"arena", do_arena, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"pk", do_pk, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"consent", do_consent, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"suck", do_suck, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"damage", do_damage, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"trecho", do_trecho, POS_DEAD, L8, LOG_ALWAYS, 1, FALSE}, {"aggression", do_aggression, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"leeching", do_leeching, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"draw", do_draw, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"embalm", do_embalm, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"corrupt", do_corrupt, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"feast", do_feast, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"hellbreath", do_hellbreath, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"unsummon", do_unsummon, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"rant", do_rant, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"rantonly", do_rantonly, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"familiar", do_familiar, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"makenecro", do_makenecro, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"undeadscore", do_undeadscore, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"undeadgain", do_undeadgain, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"puppet", do_puppet, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"defile", do_defile, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"despoil", do_despoil, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"contaminate", do_contaminate, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"flame", do_flame, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"startdouble", do_startdouble, POS_STANDING, 0, LOG_ALWAYS, 1, FALSE}, {"contribute", do_contribute, POS_STANDING, 0, LOG_ALWAYS, 1, FALSE}, {"flare", do_flare, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"makelich", do_makelich, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"makekalian", do_makekalian, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"makeavatar", do_makeavatar, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"quest", do_quest, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"questor", do_questor, POS_DEAD, 92, LOG_ALWAYS, 1, FALSE}, {"question", do_question, POS_SLEEPING, 0, LOG_NORMAL, 1, TRUE}, {"stripaffects", do_stripaffects, POS_DEAD, 92, LOG_ALWAYS, 1, FALSE}, {"lightningbreath", do_lightningbreath, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"swoop", do_swoop, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"makenerix", do_makenerix, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"poll", do_poll, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"sayto", do_sayto, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"whisper", do_whisper, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"gemote", do_gemote, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"gpmote", do_gpmote, POS_RESTING, 0, LOG_NORMAL, 1, TRUE}, {"nogemote", do_nogemote, POS_DEAD, 92, LOG_ALWAYS, 1, FALSE}, {"no_delete", do_nodelete, POS_DEAD, 92, LOG_ALWAYS, 1, FALSE}, {"toll", do_toll, POS_DEAD, 92, LOG_NORMAL, 1, FALSE}, {"bubble", do_bubble, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"spear", do_spear, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"locate", do_locate, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"find", do_find, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"swim", do_swim, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"transform", do_transform, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"ignoreac", do_ignoreac, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"ignorehitroll", do_ignorehitroll, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"ignoresave", do_ignoresave, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"paddle", do_paddle, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"forcetick", do_forcetick, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"newac", do_newac, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"blagbgone", do_blagbgone, POS_DEAD, 92, LOG_NORMAL, 1, FALSE}, {"opurge", do_opurge, POS_DEAD, 0, LOG_ALWAYS, 1, FALSE}, {"chop", do_chop, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"stop", do_stop, POS_SITTING, 0, LOG_NORMAL, 1, FALSE}, {"mill", do_mill, POS_SITTING, 0, LOG_NORMAL, 1, FALSE}, {"release", do_release, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"binder", do_binder, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"deck", do_deck, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"appraise", do_appraise, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"newfix", do_newfix, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"cardcheck", do_cardcheck, POS_DEAD, 92, LOG_NORMAL, 1, FALSE}, {"cardduel", do_cardduel, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"ante", do_ante, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"cardkill", do_cardkill, POS_SLEEPING, 0, LOG_NORMAL, 1, FALSE}, {"runecard", do_runecard, POS_DEAD, 95, LOG_NORMAL, 1, FALSE}, {"newfix", do_newfix, POS_DEAD, ML, LOG_NORMAL, 1, FALSE}, {"closestore", do_closestore, POS_STANDING, 0, LOG_ALWAYS, 1, FALSE}, {"openstore", do_openstore, POS_STANDING, 0, LOG_ALWAYS, 1, FALSE}, {"install", do_install, POS_SITTING, 0, LOG_ALWAYS, 1, FALSE}, {"disarmtrap", do_disarmtrap, POS_SITTING, 0, LOG_NORMAL, 1, FALSE}, {"qbitset", do_qbitset, POS_DEAD, 92, LOG_NORMAL, 1, FALSE}, {"qbitunset", do_qbitunset, POS_DEAD, 92, LOG_NORMAL, 1, FALSE}, {"qbitget", do_qbitget, POS_DEAD, 92, LOG_NORMAL, 1, FALSE}, {"cardcount", do_cardcount, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"present", do_present, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"otlistall", do_otlistall, POS_DEAD, IM, LOG_NORMAL, 1, FALSE}, {"makecj", do_makecj, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"makenidae", do_makenidae, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"warptouch", do_warptouch, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"madrush", do_madrush, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"coma", do_coma, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"vanish", do_vanish, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"persuade", do_persuade, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"maddance", do_maddance, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"firedance", do_firedance, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"escape", do_escape, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"noswitch", do_noswitch, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"flick", do_flick, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"shuffle", do_shuffle, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"lucky throw", do_luckythrow, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"friend", do_friend, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, {"friendscore", do_undeadscore, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"box", do_box, POS_RESTING, 0, LOG_NORMAL, 1, FALSE}, {"friendname", do_friendname, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"friendxp", do_friendxp, POS_DEAD, 0, LOG_NORMAL, 1, FALSE}, {"makenewbclannie", do_makenewbclannie, POS_DEAD, L5, LOG_ALWAYS, 1, FALSE}, {"checknplayers", do_checknplayers, POS_DEAD, 100, LOG_NORMAL, 1, FALSE}, {"dig", do_dig, POS_STANDING, 0, LOG_NORMAL, 1, FALSE}, /*{"smother", do_smother, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, {"attack", do_attack, POS_FIGHTING, 0, LOG_NORMAL, 1, FALSE}, */ {"", 0, POS_DEAD, 0, LOG_NORMAL, 0, FALSE} }; void do_multi (CHAR_DATA * ch, char *argument) { char command[MAX_INPUT_LENGTH]; char tmparg[MAX_INPUT_LENGTH], mycmd[MAX_INPUT_LENGTH]; bool found; int times, cmd; if (IS_NPC (ch)) return; argument = one_argument (argument, command); if ((times = atoi (command)) != 0) { if (times > 10) times = 10; strcpy (tmparg, argument); one_argument (tmparg, mycmd); found = FALSE; for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++) { if (mycmd[0] == cmd_table[cmd].name[0] && !str_prefix (mycmd, cmd_table[cmd].name) && (cmd_table[cmd].level <= ch->trust || cmd_table[cmd].level <= ch->level)) { found = TRUE; if (cmd_table[cmd].spams) { sprintf (mycmd, "Do you really feel the need to do that %d times?\n\r", atoi (command)); send_to_char (mycmd, ch); return; } break; } } if (!found) { send_to_char ("Huh?\n\r", ch); return; } interpret (ch, argument); if (times > 1) { sprintf (ch->desc->incomm, "#%d %s", times - 1, argument); keepincomm = TRUE; } } else send_to_char ("Huh?\n\r", ch); } /* * The main entry point for executing commands. * Can be recursively called from 'at', 'order', 'force'. */ void interpret (CHAR_DATA * ch, char *argument) { char command[MAX_STRING_LENGTH]; //char buf[MAX_STRING_LENGTH]; char logline[MAX_INPUT_LENGTH], *cptr; int cmd; int trust; int position; bool found; short x; /* * Strip leading spaces. */ while (isspace (*argument)) argument++; if (argument[0] == '\0') return; cptr = argument; while (*cptr != '\0') { if (*cptr == 7) *cptr = ';'; cptr++; } /* * No hiding. */ if (!IS_NPC (ch)) { if (argument[0] == '!') { if (argument[1] == '?') { char big_buf[MAX_STRING_LENGTH * 2]; strcpy (big_buf, "Command History:\n\r\n\r"); for (x = MAX_HISTORY - 1; x >= 0; x--) if (ch->pcdata->history[x] != NULL) sprintf (big_buf + strlen (big_buf), "%2d.\t%s\n\r", x + 1, ch->pcdata->history[x]); page_to_char (big_buf, ch); return; } else if (argument[1] == '\0' || argument[1] == '!') { if (ch->pcdata->history[0] != NULL) { strcpy (command, ch->pcdata->history[0]); interpret (ch, command); return; } } else { short num; num = atoi (argument + 1); if (num > 0 && num < 21) { if (ch->pcdata->history[num - 1] != NULL) { strcpy (command, ch->pcdata->history[num - 1]); interpret (ch, command); } else send_to_char ("No such history entry.\n\r", ch); return; } else { send_to_char ("Huh?\n\r", ch); return; } } } else { if (ch->pcdata->history[19] != NULL) free_string (ch->pcdata->history[19]); for (x = 18; x >= 0; x--) if (ch->pcdata->history[x] != NULL) ch->pcdata->history[x + 1] = ch->pcdata->history[x]; ch->pcdata->history[0] = str_dup (argument); } } /* * Implement freeze command. */ if (!IS_NPC (ch) && IS_SET (ch->act, PLR_FREEZE)) { send_to_char ("You're totally frozen!\n\r", ch); return; } /* * Grab the command word. * Special parsing so ' can be a command, * also no spaces needed after punctuation. */ strcpy (logline, argument); if (ch->in_room) sprintf (last_command, "%s in room[%d]: %s.", ch->name, ch->in_room->vnum, argument); else sprintf (last_command, "%s in Null room: %s.", ch->name, argument); if (!isalpha (argument[0]) && !isdigit (argument[0])) { command[0] = argument[0]; command[1] = '\0'; argument++; while (isspace (*argument)) argument++; } else { argument = one_argument (argument, command); } /* * Look for command in command table. */ found = FALSE; trust = get_trust (ch); for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++) { if (command[0] == cmd_table[cmd].name[0] && !str_prefix (command, cmd_table[cmd].name) && cmd_table[cmd].level <= trust) { found = TRUE; break; } } if (ch->in_room != NULL && !IS_NPC (ch) && !found) { CHAR_DATA *mob; TRIGGER_DATA *trig; for (mob = ch->in_room->people; mob != NULL; mob = mob->next_in_room) { if (IS_NPC (mob)) { for (trig = mob->triggers; trig != NULL; trig = trig->next) { if (trig->trigger_type == TRIG_COMMAND && !str_prefix (command, trig->keywords)) { if (trig->current == NULL) { act_trigger (mob, trig->name, argument, NAME (ch), NAME (mob)); trig->current = trig->script; trig->bits = SCRIPT_ADVANCE; } found = TRUE; } } } } if (found) return; } /* * Log and snoop. */ if (cmd_table[cmd].log == LOG_NEVER || cmd_table[cmd].log == LOG_PASSWORD) strcpy (logline, ""); if (cmd_table[cmd].log == LOG_PASSWORD) { sprintf (log_buf, "Log: %s: %s", ch->name, cmd_table[cmd].name); wiznet (log_buf, ch, NULL, WIZ_SECURE, 0, get_trust (ch)); log_string (log_buf); } else if ((!IS_NPC (ch) && IS_SET (ch->act, PLR_LOG)) || fLogAll || (cmd_table[cmd].log == LOG_ALWAYS && ch->desc != NULL)) { char s[2 * MAX_INPUT_LENGTH], *ps; int i; ps = s; sprintf (log_buf, "Log %s: %s", ch->name, logline); /* Make sure that was is displayed is what is typed */ for (i = 0; log_buf[i]; i++) { *ps++ = log_buf[i]; if (log_buf[i] == '$') *ps++ = '$'; if (log_buf[i] == '{') *ps++ = '{'; } *ps = 0; wiznet (s, ch, NULL, WIZ_SECURE, 0, get_trust (ch)); log_string (log_buf); } if (!IS_NPC (ch) && ch->pcdata && ch->pcdata->cg_state >= CG_START_PM_YT && ch->pcdata->cg_state <= CG_NYT_DONE) { if (!str_prefix (command, "a") || !str_prefix (command, "A") || !str_prefix (command, "b") || !str_prefix (command, "B") || !str_prefix (command, "c") || !str_prefix (command, "C") || !str_prefix (command, "d") || !str_prefix (command, "D") || !str_prefix (command, "e") || !str_prefix (command, "E") || !str_prefix (command, "f") || !str_prefix (command, "F") || !str_prefix (command, "g") || !str_prefix (command, "G") || !str_prefix (command, "y") || !str_prefix (command, "Y") || !str_prefix (command, "z") || !str_prefix (command, "Z")) // command[0] != '\0' && command[1] == '\0' { /* char buf2[MAX_INPUT_LENGTH]; sprintf(buf2,"!%s! - %d",command,strlen(command)); do_echo(ch,buf2);*/ cardgame_menu (ch, command); return; } } if (!found) { /* * Look for command in socials table. */ if (ch->race == PC_RACE_SWARM || !check_social (ch, command, argument)) { if (!IS_NPC (ch) && ch->pcdata && ch->pcdata->cg_state >= CG_START_PM_YT && ch->pcdata->cg_state <= CG_NYT_DONE) cardgame_menu (ch, command); else send_to_char ("Huh?\n\r", ch); } return; } if (cmd_table[cmd].position > POS_SLEEPING) REMOVE_BIT (ch->affected_by, AFF_HIDE); if (cmd_table[cmd].position > POS_SLEEPING) { REMOVE_BIT (ch->affected_by, AFF_CAMOUFLAGE); //Iblis - If the character does much, they stop feigning death if (ch->position == POS_FEIGNING_DEATH) { send_to_char ("You stop feigning death.\n\r", ch); ch->position = POS_STANDING; } } /* * Character not in position for command? */ position = get_position (ch); if (!IS_NPC (ch) && ch->pcdata && ch->pcdata->cg_state != 0) { if (cmd_table[cmd].position > POS_RESTING) { send_to_char ("You can't do that while playing cards.\n\r", ch); return; } } if (position < cmd_table[cmd].position) { if (!IS_NPC (ch)) ch->pcdata->speedlen = 0; if (ch->position == POS_STANDING && ch->fighting != NULL) ch->position = POS_FIGHTING; switch (ch->position) { case POS_DEAD: send_to_char ("Lie still; you are DEAD.\n\r", ch); break; case POS_MORTAL: case POS_INCAP: send_to_char ("You are hurt far too bad for that.\n\r", ch); break; case POS_STUNNED: send_to_char ("You are too stunned to do that.\n\r", ch); break; case POS_SLEEPING: send_to_char ("In your dreams, or what?\n\r", ch); break; case POS_RESTING: send_to_char ("Nah... You feel too relaxed...\n\r", ch); break; case POS_CHOPPING: send_to_char ("You're too busy chopping!\n\r", ch); break; case POS_MILLING: send_to_char ("You're too busy milling!\n\r", ch); break; case POS_CARVING: send_to_char ("You're too busy carving!\n\r", ch); break; case POS_SITTING: send_to_char ("Better stand up first.\n\r", ch); break; case POS_FIGHTING: send_to_char ("No way! You are still fighting!\n\r", ch); break; } return; } /* * Dispatch the command. */ //Iblis - This is a cheap hack to limit the commands a bone puppet can perform if (IS_SET (ch->act2, ACT_PUPPET)) { bool okcommand = FALSE; if (IS_NPC (ch)) { if (ch->pIndexData->vnum == MOB_VNUM_FROG || ch->pIndexData->vnum == MOB_VNUM_WARPED_CAT || ch->pIndexData->vnum == MOB_VNUM_WARPED_OWL) { if (!str_cmp (cmd_table[cmd].name, "say") || !str_cmp (cmd_table[cmd].name, "sayto") || !str_cmp (cmd_table[cmd].name, "whisper") || !str_cmp (cmd_table[cmd].name, "kill")) okcommand = TRUE; if (ch->pIndexData->vnum == MOB_VNUM_FROG) { if (!str_cmp (cmd_table[cmd].name, "cast")) okcommand = TRUE; } else if (ch->pIndexData->vnum == MOB_VNUM_WARPED_OWL) { if (!str_cmp (cmd_table[cmd].name, "swoop")) okcommand = TRUE; } } } if (!okcommand && !(!str_cmp (cmd_table[cmd].name, "east") || !str_cmp (cmd_table[cmd].name, "west") || !str_cmp (cmd_table[cmd].name, "exits") || !str_cmp (cmd_table[cmd].name, "north") || !str_cmp (cmd_table[cmd].name, "south") || !str_cmp (cmd_table[cmd].name, "look") || !str_cmp (cmd_table[cmd].name, "where") || !str_cmp (cmd_table[cmd].name, "emote") || !str_cmp (cmd_table[cmd].name, "exits") || !str_cmp (cmd_table[cmd].name, "enter") || !str_cmp (cmd_table[cmd].name, "exit") || !str_cmp (cmd_table[cmd].name, "climb") || !str_cmp (cmd_table[cmd].name, "descend") || !str_cmp (cmd_table[cmd].name, "scale") || !str_cmp (cmd_table[cmd].name, "board") || !str_cmp (cmd_table[cmd].name, "up") || !str_cmp (cmd_table[cmd].name, "down") || !str_cmp (cmd_table[cmd].name, "open") || !str_cmp (cmd_table[cmd].name, "puppet"))) { send_to_char ("You cannot perform that command.\n\r", ch); return; } } (*cmd_table[cmd].do_fun) (ch, argument); tail_chain (); return; } bool check_social (CHAR_DATA * ch, char *command, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; int cmd; bool found; found = FALSE; for (cmd = 0; social_table[cmd].name[0] != '\0'; cmd++) { if (command[0] == social_table[cmd].name[0] && !str_prefix (command, social_table[cmd].name)) { found = TRUE; break; } } if (!found) return FALSE; if (!IS_NPC (ch) && IS_SET (ch->comm, COMM_NOEMOTE)) { send_to_char ("You are anti-social!\n\r", ch); return TRUE; } switch (ch->position) { case POS_DEAD: send_to_char ("Lie still; you are DEAD.\n\r", ch); return TRUE; case POS_INCAP: case POS_MORTAL: send_to_char ("You are hurt far too bad for that.\n\r", ch); return TRUE; case POS_STUNNED: send_to_char ("You are too stunned to do that.\n\r", ch); return TRUE; case POS_SLEEPING: /* * I just know this is the path to a 12" 'if' statement. :( * But two players asked for it already! -- Furey */ if (!str_cmp (social_table[cmd].name, "snore")) break; send_to_char ("In your dreams, or what?\n\r", ch); return TRUE; } if (ch->in_room == NULL) return TRUE; if (IS_SET (ch->in_room->room_flags, ROOM_SILENT) && !IS_IMMORTAL (ch)) { send_to_char ("This room is shielded from disturbance by powerful wards of magic.\n\r", ch); return TRUE; } one_argument (argument, arg); victim = NULL; if (arg[0] == '\0') { act (social_table[cmd].others_no_arg, ch, NULL, victim, TO_ROOM); act (social_table[cmd].char_no_arg, ch, NULL, victim, TO_CHAR); } else if ((victim = get_char_room (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); } else if (victim == ch) { act (social_table[cmd].others_auto, ch, NULL, victim, TO_ROOM); act (social_table[cmd].char_auto, ch, NULL, victim, TO_CHAR); } else { act (social_table[cmd].others_found, ch, NULL, victim, TO_NOTVICT); act (social_table[cmd].char_found, ch, NULL, victim, TO_CHAR); act (social_table[cmd].vict_found, ch, NULL, victim, TO_VICT); if (!IS_NPC (ch) && IS_NPC (victim) && !IS_AFFECTED (victim, AFF_CHARM) && IS_AWAKE (victim) && victim->desc == NULL) { switch (number_bits (4)) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: act (social_table[cmd].others_found, victim, NULL, ch, TO_NOTVICT); act (social_table[cmd].char_found, victim, NULL, ch, TO_CHAR); act (social_table[cmd].vict_found, victim, NULL, ch, TO_VICT); break; case 9: case 10: case 11: case 12: act ("`N$n slaps $N.``", victim, NULL, ch, TO_NOTVICT); act ("`NYou slap $N.``", victim, NULL, ch, TO_CHAR); act ("`N$n slaps you.``", victim, NULL, ch, TO_VICT); break; } } } if (victim != NULL) { if (HAS_SCRIPT (victim)) { TRIGGER_DATA *pTrig; for (pTrig = victim->triggers; pTrig != NULL; pTrig = pTrig->next) { if (pTrig->trigger_type == TRIG_SOCIAL && pTrig->current == NULL && !IS_SET (victim->act, ACT_HALT)) { act_trigger (victim, pTrig->name, social_table[cmd].name, NAME (ch), NAME (victim)); pTrig->current = pTrig->script; pTrig->bits = SCRIPT_ADVANCE; } } } } return TRUE; } /* * Return true if an argument is completely numeric. */ bool is_number (char *arg) { if (*arg == '\0') return FALSE; if (*arg == '+' || *arg == '-') arg++; for (; *arg != '\0'; arg++) { if (!isdigit (*arg)) return FALSE; } return TRUE; } /* * Given a string like 14.foo, return 14 and 'foo' */ int number_argument (char *argument, char *arg) { char *pdot; int number; for (pdot = argument; *pdot != '\0'; pdot++) { if (*pdot == '.') { *pdot = '\0'; number = atoi (argument); *pdot = '.'; strcpy (arg, pdot + 1); return number; } } strcpy (arg, argument); return 1; } /* * Given a string like 14*foo, return 14 and 'foo' */ int mult_argument (char *argument, char *arg) { char *pdot; int number; for (pdot = argument; *pdot != '\0'; pdot++) { if (*pdot == '*') { *pdot = '\0'; number = atoi (argument); *pdot = '*'; strcpy (arg, pdot + 1); return number; } } strcpy (arg, argument); return 1; } /* * Contributed by Alander. */ void do_commands (CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; int cmd; int col; col = 0; for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++) { if (cmd_table[cmd].level < LEVEL_HERO && cmd_table[cmd].level <= get_trust (ch) && cmd_table[cmd].show) { sprintf (buf, "%-12s", cmd_table[cmd].name); send_to_char (buf, ch); if (++col % 6 == 0) send_to_char ("\n\r", ch); } } if (col % 6 != 0) send_to_char ("\n\r", ch); return; } void do_newwizhelp (CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; int cmd; int col; int clevel; col = 0; for (clevel = LEVEL_HERO + 1; clevel < MAX_LEVEL + 1; clevel++) { for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++) { if (cmd_table[cmd].level >= LEVEL_HERO && cmd_table[cmd].level <= get_trust (ch) && cmd_table[cmd].show && cmd_table[cmd].level == clevel) { sprintf (buf, "[%-3d] %-12s", cmd_table[cmd].level, cmd_table[cmd].name); send_to_char (buf, ch); if (++col % 5 == 0) send_to_char ("\n\r", ch); } } } if (col % 5 != 0) send_to_char ("\n\r", ch); return; } // Akamai 5/3/99 - Fix columns for wiz commands void do_wizhelp (CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; char command_buff[MAX_STRING_LENGTH]; char command_buff2[MAX_STRING_LENGTH]; int level = 0; bool match = FALSE; int cmd; int col; argument = one_argument (argument, arg); level = atoi (arg); // for showing level of commands when using level argument if (level > 91 && level <= get_trust (ch)) { sprintf (buf, "Level `o%d`` commands:\n\r", level); send_to_char (buf, ch); } buf[0] = '\0'; col = 0; for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++) { if ((cmd_table[cmd].level >= LEVEL_HERO) && (cmd_table[cmd].level <= get_trust (ch)) && cmd_table[cmd].show) { if (level != 0) { if (cmd_table[cmd].level == level && level <= get_trust (ch)) { match = TRUE; sprintf (buf, "%-15s", cmd_table[cmd].name); } else match = FALSE; } else { sprintf (command_buff, "%s", cmd_table[cmd].name); //Shinowlan -- 06/26/2000 -- "level" option to print levels of wizcommands if (arg[0] != '\0' && !str_prefix (arg, "level")) { sprintf (command_buff2, "(%d)", cmd_table[cmd].level); strcat (command_buff, command_buff2); } //sprintf(buf, "%-18s(%d)", cmd_table[cmd].name, cmd_table[cmd].level); sprintf (buf, "%-15s", command_buff); command_buff[0] = '\0'; match = TRUE; } send_to_char (buf, ch); buf[0] = '\0'; if (match) if (++col % 5 == 0) send_to_char ("\n\r", ch); } } if (col % 6 != 0) send_to_char ("\n\r", ch); return; }