ncohafmuta-1.4.2/bot/
ncohafmuta-1.4.2/helpfiles/
ncohafmuta-1.4.2/lib/emailver/
ncohafmuta-1.4.2/tzinfo/Atlantic/
ncohafmuta-1.4.2/tzinfo/Brazil/
ncohafmuta-1.4.2/tzinfo/Chile/
ncohafmuta-1.4.2/tzinfo/Indian/
ncohafmuta-1.4.2/tzinfo/Mexico/
ncohafmuta-1.4.2/tzinfo/Mideast/
ncohafmuta-1.4.2/tzinfo/SystemV/
ncohafmuta-1.4.2/utils/
ncohafmuta-1.4.2/utils/code_fragments/new_config/
#if defined(HAVE_CONFIG_H)
#include "../hdrfiles/config.h"
#endif

#include "../hdrfiles/includes.h"

/*--------------------------------------------------------*/
/* Talker-related include files                           */ 
/*--------------------------------------------------------*/
#include "../hdrfiles/osdefs.h"
/*
#include "../hdrfiles/authuser.h"
#include "../hdrfiles/text.h"
*/
#include "../hdrfiles/constants.h"
#include "../hdrfiles/protos.h"


extern int commands;


/*** COMMAND LIST ***/

/* User command list structure */
struct command_struct sys[] = {
		  {".abbrs",    1,      117,    INFO,""},
		  {".afk",      0,      75,     SETS,""},
                  {".auto",     3,      186,    MISC,""},
		  {".bafk",     0,      99,     SETS,""},
		  {".bop",      1,      172,    NONE,""},
		  {".bubble",   1,      121,    MISC,""},
		  {".call",     1,      124,    COMM,""},
		  {".creply",   1,      125,    COMM,"?"},
		  {".cbuff",    1,      42,     MISC,"*"},
		  {".chicken",  1,      213,    NONE,""},
                  {".chuckle",  1,      192,    NONE,""},
                  {".cough",    1,      193,    NONE,""},
		  {".cls",      0,      84,     MISC,""},
		  {".cmail",    1,      47,     MAIL,""},
		  {".csent",    1,      142,    MAIL,""},
                  {".dance",    1,      194,    NONE,""},
		  {".desc",     0,      37,     SETS,""},
                  {".doh",      1,      195,    NONE,""},
		  {".emote",    1,      11,     COMM,";"},
		  {".entpro",   0,      105,    SETS,""},
		  {".entermsg", 1,      116,    SETS,""},
		  {".examine",  0,      107,    INFO,""},
		  {".exitmsg",  1,      158,    SETS,""},
		  {".faq",      0,      106,    INFO,""},
		  {".fight",    1,      85,     MISC,""},
		  {".find",     1,      123,    INFO,""},
                  {".flirt",    1,      196,    NONE,""},
		  {".fmail",    1,      133,    MAIL,""},
		  {".go",       0,      7,      MOOV,""},
                  {".goose",    1,      197,    NONE,""},
                  {".grab",     1,      198,    NONE,""},
		  {".gripe",    1,      156,    MESG,""},
                  {".growl",    1,      199,    NONE,""},
		  {".guess",    1,      218,    MISC,""},
		  {".guru",     1,      188,    MISC,""},
		  {".help",     0,      25,     INFO,""},
                  {".hiss",     1,      200,    NONE,""},
		  {".home",     1,      159,    MOOV,""},
		  {".hug",      1,      164,    NONE,""},
		  {".ignore",   0,      5,      SETS,""},
                  {".insult",   1,      201,    NONE,""},
		  {".invite",   1,      10,     MOOV,""},
                  {".kick",     1,      202,    NONE,""},
		  {".kiss",     1,      170,    NONE,""},
		  {".last",     1,      119,    INFO,""},
		  {".laugh",    1,      165,    NONE,""},
		  {".lick",     1,      175,    NONE,""},
		  {".listen",   0,      4,      SETS,""},
		  {".log",      0,      137,    INFO,""},
                  {".lol",      1,      203,    NONE,""},
		  {".look",     0,      6,      MISC,"@"},
		  {".macros",   1,      44,     SETS,""},
		  {".map",      0,      126,    MISC,""},
		  {".mutter",   1,      129,    COMM,"#"},
		  {".nerf",     1,      160,    MISC,""},
		  {".news",     0,      27,     INFO,""},
		  {".noogie",   1,      214,    NONE,""},
		  {".password", 0,      67,     MISC,""},
		  {".poke",     1,      166,    NONE,""},
		  {".quit",     0,      0,      MISC,""},
		  {".quote",    1,      136,    SETS,""},
		  {".read",     0,      15,     MESG,""},
		  {".reload",   1,      162,    MISC,""},
		  {".review",   1,      24,     MISC,"<"},
		  {".rmail",    1,      45,     MAIL,""},
		  {".rooms",    1,      12,     INFO,""},
		  {".rsent",    1,      143,    MAIL,""},
		  {".rules",    0,      212,    INFO,""},
		  {".say",      0,      90,     COMM,"\""},
		  {".schedule", 0,      148,    INFO,""},
		  {".semote",   1,      69,     COMM,"/"},
		  {".set",      0,      79,     SETS,""},
		  {".shout",    1,      2,      COMM,"!"},
                  {".shake",    1,      204,    NONE,""},
                  {".shove",    1,      205,    NONE,""},
		  {".sing",     1,      151,    MISC,"%"},
                  {".slap",     1,      206,    NONE,""},
		  {".smail",    1,      46,     MAIL,""},
		  {".smile",    1,      176,    NONE,""},
		  {".smirk",    1,      174,    NONE,""},
		  {".socials",  1,      163,    COMM,""},
		  {".sos",      0,      104,    MISC,""},
		  {".sthink",   1,      122,    COMM,""},
		  {".suggest",  1,      130,    MESG,""},
		  {".suicide",  0,      182,    MISC,""},
		  {".swho",     0,      118,    INFO,""},
		  {".tell",     0,      3,      COMM,","},
		  {".tackle",   1,      173,    NONE,""},
		  {".talker",   1,      120,    MISC,""},
		  {".think",    1,      103,    COMM,""},
		  {".thwap",    1,      171,    NONE,""},
		  {".tickle",   1,      169,    NONE,""},
		  {".time",     0,      76,     MISC,""},
		  {".to",       1,      183,    COMM,"$"},
		  {".version",  0,      111,    MISC,""},
		  {".who",      0,      1,      INFO,"{"},
		  {".wedgie",   1,      43,     NONE,""},
                  {".whine",    1,      207,    NONE,""},
                  {".wink",     1,      208,    NONE,""},
		  {".wlist",    0,      147,    INFO,""},
                  {".woohoo",   1,      209,    NONE,""},
		  {".write",    1,      14,     MESG,""},
		  {".alert",    1,      146,    SETS,""},
		  {".fail",     1,      127,    SETS,""},
		  {".femote",   1,      113,    COMM,""},
		  {".friends",  1,      191,    INFO,""},
		  {".ftell",    1,      161,    COMM,""},
		  {".gag",      1,      145,    SETS,""},
		  {".greet",    1,      40,     MISC,""},
		  {".hangman",  1,      219,    MISC,""},
		  {".knock",    1,      13,     MOOV,""},
		  {".meter",    1,      91,     MISC,""},
		  {".preview",  1,      66,     INFO,""},
		  {".private",  1,      8,      SETS,""},
		  {".public",   1,      9,      SETS,""},
		  {".search",   1,      23,     MESG,""},
		  {".shemote",  1,      112,    COMM,"&"},
		  {".shthink",  1,      181,    COMM,""},
		  {".succ",     1,      128,    SETS,""},
		  {".topic",    1,      18,     MISC,""},
		  {".ttt",      1,      217,    MISC,""},
		  {".ustat",    1,      78,     INFO,""},
		  {".vote",     1,      168,    MISC,""},
		  {".with",     1,      102,    INFO,""},
		  {".wizards",  0,      101,    INFO,""},
		  {".beep",     1,      74,     COMM,""},
		  {".echo",     1,      36,     COMM,""},
		  {".follow",   1,      72,     MOOV,""},
		  {".ptell",    1,      71,     COMM,""},
		  {".ranks",    1,      58,     MISC,""},
		  {".show",     2,      108,    MISC,"\'"},
		  {".anchor",   2,      135,    MOOV,""},
		  {".arrest",   2,      41,     MOOV,""},
		  {".unarrest", 2,      190,    MOOV,""},
		  {".memory",   2,      177,    INFO,""},
                  {".gagcomm",  2,      184,    COMM,""},
		  {".muzzle",   2,      51,     COMM,""},
		  {".system",   2,      28,     INFO,""},
		  {".unmuzzle", 2,      52,     COMM,""},
		  {".wipe",     2,      16,     MESG,""},
		  {".bcast",    2,      26,     COMM,""},
		  {".bring",    2,      54,     MOOV,""},
		  {".clist",    2,      167,    INFO,""},
		  {".hide",     2,      56,     SETS,""},
		  {".monitor",  2,      70,     SETS,""},
		  {".move",     2,      29,     MOOV,""},
		  {".picture",  1,      65,     MISC,""},
		  {".cline",    3,      109,    MISC,""},
		  {".wiztell",    2,    82,     COMM,">"},
		  {".demote",     3,    50,     SETS,""},
		  {".descroom",   3,    155,    SETS,""},
		  {".finger",     3,    140,    INFO,""},
		  {".force",      3,    153,    SETS,""},
                  {".frog",       2,    185,    COMM,""},
		  {".grant",      3,    216,    SETS,""},
		  {".whois",      2,    141,    INFO,""},
		  {".kill",       2,    21,     INFO,""},
		  {".nslookup",   2,    139,    INFO,""},
		  {".permission", 3,    68,     SETS,""},
		  {".promote",    3,    49,     SETS,""},
		  {".realuser",   3,    138,    INFO,""},
		  {".samesite",   2,    144,    INFO,""},
		  {".site",       2,    80,     INFO,""},
		  {".swipe",      3,    134,    MESG,""},
		  {".addatmos",   3,    178,    SETS,""},
		  {".delatmos",   3,    179,    SETS,""},
		  {".listatmos",  3,    180,    SETS,""},
		  {".atmos",      3,    35,     SETS,""},
		  {".bannew",     3,    149,    BANS,""},
		  {".banname",    3,    210,    BANS,""},
		  {".expire",     3,    152,    SETS,""},
		  {".nuke",       3,    83,     MISC,""},
		  {".pcreate",    3,    211,    MISC,""},
		  {".restrict",   3,    59,     BANS,""},
		  {".resolve",    3,    86,     MISC,""},
		  {".revoke",     3,    215,    SETS,""},
		  {".unbannew",   3,    150,    BANS,""},
		  {".unrestrict", 3,    60,     BANS,""},
		  {".users",      3,    77,     MISC,""},
		  {".wlog",       1,    189,    MESG,""},
		  {".wnote",      2,    97,     MESG,""},
		  {".xcomm",      3,    100,    COMM,""},
		  {".suname",     3,    114,    MISC,""},
		  {".supass",     3,    115,    MISC,""},
		  {".allow_new",  4,    38,     BANS,""},
		  {".backup",     4,    220,    SETS,""},
		  {".bbcast",     4,    110,    COMM,""},
		  {".close",      4,    30,     MISC,""},
		  {".gwipe",      4,    157,    MESG,""},
		  {".open",       4,    31,     MISC,""},
		  {".quota",      4,    95,     SETS,""},
		  {".readlog",    3,    154,    INFO,""},
		  {".reinit",     4,    73,     MISC,""},
		  {".shutdown",   4,    22,     MISC,""},
		  {".wwipe",      4,    98,     MESG,""},
		  /*-----------------------------------------------*/
		  /* this item marks the end of the list, do not   */
		  /* remove it                                     */
		  /*-----------------------------------------------*/
		  {"<EOL>",       -1,   -1,     -1,     ""}
		};

/* Bot command list structure */
struct botcommand_struct botsys[] = {
		  {"_who",    0,    INFO},
		  /*-----------------------------------------------*/
		  /* this item marks the end of the list, do not   */
		  /* remove it                                     */
		  /*-----------------------------------------------*/
		  {"<EOL>",	-1,	-1}
		};



/*** COMMAND FUNCTIONS ***/

/*** Call command function or execute command directly ***/
void exec_com(int com_num, int user, char *inpstr)
{
int z=0,gravoked=0;
char temp_mess[ARR_SIZE+65];
char filename[FILE_NAME_LEN];
FILE *fp;

/* See if user is suspended from using all commands */
if (ustr[user].suspended)
  {
    return;
  }

/* Check if command was granted to user - UNDER CONSTRUCTION */
for (z=0;z<MAX_GRAVOKES;++z) {
	if (!is_grant(ustr[user].revokes[z])) continue;
	if (strip_com(ustr[user].revokes[z])==sys[com_num].jump_vector) {
		gravoked=1; break;
	  }
  }
if (gravoked==1) {
gravoked=0;
ustr[user].tempsuper=strip_level(ustr[user].revokes[z]);
} /* end of granted if */
else {
 /* See if user has the required rank for this command */
 if (ustr[user].super < sys[com_num].su_com) 
   {
    write_str(user,NOT_WORTHY);
    return;
   }

 /* Check if command was revoked from user - UNDER CONSTRUCTION */
 for (z=0;z<MAX_GRAVOKES;++z) {
	if (!is_revoke(ustr[user].revokes[z])) continue;
	if (strip_com(ustr[user].revokes[z])==sys[com_num].jump_vector) { gravoked=1; break; }
   }
 if (gravoked==1) {
    write_str(user,NOT_WORTHY);
    gravoked=0; z=0;
    return;
    }

ustr[user].tempsuper=ustr[user].super;
} /* end of not granted else */

sprintf(filename,"%s/%s",LOGDIR,LASTFILE);
if (!(fp=fopen(filename,"w"))) {
   sprintf(temp_mess,"Couldn't write last command from %s, to file! %s",strip_color(ustr[user].say_name),get_error());
   btell(user,temp_mess); 
   write_log(ERRLOG,YESTIME,"%s\n",temp_mess);
   }
else {
fprintf(fp,"%s: Command < %s > from %s\n",get_time(0,0),inpstr,strip_color(ustr[user].say_name));
FCLOSE(fp);
temp_mess[0]=0;
}

if (ustr[user].numcoms==10000000) ustr[user].numcoms=1;
ustr[user].numcoms++;
commands++;
  
remove_first(inpstr);  /* get rid of commmand word */

switch(sys[com_num].jump_vector) {
	case 0 : user_quit(user,1); break;
	case 1 : t_who(user,inpstr,0); break;
	case 2 : shout(user,inpstr); break;
	case 3 : tell_usr(user,inpstr,0); break;
	case 4 : user_listen(user,inpstr); break;
	case 5 : user_ignore(user,inpstr); break;
	case 6 : look(user,inpstr);  break;
	case 7 : go(user,inpstr,0);  break;
	case 8 : room_access(user,1);  break; /* private */
	case 9 : room_access(user,0);  break; /* public */
	case 10: invite_user(user,inpstr);  break;
	case 11: emote(user,inpstr);  break;
	case 12: rooms(user,inpstr);  break;
	case 13: go(user,inpstr,1);  break;  /* knock */
	case 14: write_board(user,inpstr,0);  break; /* normal write */
	case 15: read_board(user,0,inpstr);  break;  /* normal read  */
	case 16: wipe_board(user,inpstr,0);  break;
	case 18: set_topic(user,inpstr);  break;
	case 21: kill_user(user,inpstr);  break;
	case 22: shutdown_d(user,inpstr);  break;
	case 23: search_boards(user,inpstr);  break;
	case 24: review(user);  break;
	case 25: help(user,inpstr);  break;
	case 26: broadcast(user,inpstr);  break;
	case 27: if (!cat(NEWSFILE,user,0)) 
			write_str(user,NO_NEWS);
                        write_str(user,"Ok");
		 break;

	case 28: system_status(user); break;
	case 29: move(user,inpstr);  break;
	case 30: system_access(user,inpstr,0);
	         break;  /* close */

	case 31: system_access(user,inpstr,1);
	         break;  /* open */

	case 35: toggle_atmos(user,inpstr); break;
	case 36: my_echo(user,inpstr);  break;
	case 37: old_func(user,inpstr,1);  break;
	case 38: toggle_allow(user,inpstr); break;
        case 40: greet(user,inpstr); break;
	case 41: arrest(user,inpstr,0); break;
	case 42: cbuff2(user,inpstr); break;
        case 43: socials(user,inpstr,32); break; /* wedgie */
	case 44: macros(user,inpstr); break;
        case 45: read_mail(user,inpstr); break;
        case 46: send_mail(user,inpstr,0); break;
        case 47: ustr[user].clrmail= -1;
                 clear_mail(user, inpstr); 
                 break;
                 
	case 49: promote(user,inpstr); break;
	case 50: demote(user,inpstr); break;
	case 51: muzzle(user,inpstr,0); break;
	case 52: unmuzzle(user,inpstr); break;
	case 54: bring(user,inpstr); break;
	case 56: hide(user,inpstr); break;
	case 58: display_ranks(user); break;
	case 59: restrict(user,inpstr,ANY); break;
	case 60: unrestrict(user,inpstr,ANY); break;
	case 65: picture(user,inpstr); break;                 
	case 66: preview(user,inpstr); break;                
	case 67: password(user,inpstr); break;              
	case 68: permission_u(user,inpstr); break;             
	case 69: semote(user,inpstr); break;               
	case 70: tog_monitor(user); break;                     
	case 71: ptell(user,inpstr); break;                
	case 72: follow(user,inpstr); break;                
	case 73: read_init_data(1); 
	         messcount();
	         write_str(user,"<ok>"); 
	         break;                  
	case 74: beep_u(user,inpstr); break;              
	case 75: set_afk(user,inpstr);  break;
	case 76: systime(user,inpstr);  break;
	case 77: print_users(user,inpstr);  break;
	case 78: usr_stat(user,inpstr,0);  break;
	case 79: set(user,inpstr);  break;
	case 80: swho(user,inpstr); break;
	case 82: btell(user,inpstr); break;
	case 83: nuke(user,inpstr,0); break;
	case 84: cls(user); break;
	case 85: fight_another(user,inpstr); break;
	case 86: resolve_names_set(user,inpstr); break;
	case 90: say(user,inpstr,1); break;
	case 91: meter(user, inpstr); break;
	case 95: set_quota(user, inpstr); break;
	case 96: command_disabled(user); break;
	case 97: write_board(user,inpstr,1);  break; /* wiz_note */
	case 98: wipe_board(user,inpstr,1);  break;  /* wiz wipe */
	case 99: set_bafk(user,inpstr);  break;  
        case 100: xcomm(user,inpstr);  break;  
	case 101: t_who(user,inpstr,1); break;
	case 102: t_who(user,inpstr,2); break;
        case 103: think(user,inpstr); break;
        case 104: sos(user,inpstr); break;
        case 105: old_func(user,inpstr,2); break;
        case 106: if (!cat(FAQFILE,user,0))
                        write_str(user,NO_FAQ);
                        write_str(user,"<ok>");
                        break;
	case 107: usr_stat(user,inpstr,1); break;
        case 108: show(user,inpstr); break;
        case 109: cline(user,inpstr); break;
        case 110: bbcast(user,inpstr); break;
        case 111: version(user); break;
        case 112: shemote(user,inpstr); break; 
        case 113: femote(user,inpstr); break;
        case 114: suname(user,inpstr);  break;
        case 115: supass(user,inpstr);  break;
        case 116: old_func(user,inpstr,5);  break;
        case 117: abbrev(user,inpstr);  break;
        case 118: newwho(user);  break;
        case 119: last_u(user,inpstr);  break;
        case 120: talker(user,inpstr);  break;
        case 121: bubble(user);  break;
        case 122: sthink(user,inpstr);  break;
        case 123: where(user,inpstr);  break;
        case 124: call(user,inpstr);  break;
        case 125: creply(user,inpstr);  break;
        case 126: if (!cat(MAPFILE,user,0))
                        write_str(user,NO_MAP);
                        write_str(user,"Ok");
                  break;
        case 127: old_func(user,inpstr,3);  break;
        case 128: old_func(user,inpstr,4);  break;
        case 129: mutter(user,inpstr);  break;
        case 130: write_board(user,inpstr,3); break; /* suggestions */
        case 131: break;
        case 132: break;
        case 133: fmail(user,inpstr);  break;
        case 134: swipe(user,inpstr);  break;
        case 135: anchor_user(user,inpstr); break;
        case 136: quote_op(user,inpstr);  break;
        case 137: list_last(user,inpstr);  break;
        case 138: real_user(user,inpstr);  break;
        case 139: pukoolsn(user,inpstr);  break;
        case 140: regnif(user,inpstr);  break;
        case 141: siohw(user,inpstr);  break;        
        case 142: ustr[user].clrmail= -1;
                  clear_sent(user,inpstr);  break;
        case 143: read_sent(user,inpstr);  break;
        case 144: same_site(user,inpstr);  break;
        case 145: gag(user,inpstr);  break;
        case 146: alert(user,inpstr);  break;
        case 147: if (!cat(WIZFILE,user,0))   
                        write_str(user,NO_WIZLIST);
                        write_str(user,"Ok");
                  break;
        case 148: schedule(user);  break;
        case 149: restrict(user,inpstr,NEW); break;
        case 150: unrestrict(user,inpstr,NEW); break;
        case 151: sing(user,inpstr); break;
        case 152: show_expire(user,inpstr); break;
        case 153: force_user(user,inpstr); break;
        case 154: readlog(user,inpstr); break;
        case 155: descroom(user,inpstr); break;
        case 156: write_board(user,inpstr,2);  break; /* gripe_note */
        case 157: wipe_board(user,inpstr,2);  break;  /* gripe wipe */
        case 158: old_func(user,inpstr,6);  break;
        case 159: home_user(user);  break;
        case 160: nerf(user,inpstr);  break;
        case 161: frtell(user,inpstr); break;
        case 162: reload(user);  break;
        case 163: list_socs(user);  break;
        case 164: socials(user,inpstr,1);  break;  /* hug */
        case 165: socials(user,inpstr,2);  break;  /* laugh */
        case 166: socials(user,inpstr,3);  break;  /* poke */
        case 167: clist(user,inpstr);  break;
        case 168: vote(user,inpstr);  break;
        case 169: socials(user,inpstr,4);  break;  /* tickle */
        case 170: socials(user,inpstr,5);  break;  /* kiss */
        case 171: socials(user,inpstr,6);  break;  /* thwap */
        case 172: socials(user,inpstr,7);  break;  /* bop */
        case 173: socials(user,inpstr,8);  break;  /* tackle */
        case 174: socials(user,inpstr,9);  break;  /* smirk */
        case 175: socials(user,inpstr,10);  break;  /* lick */
        case 176: socials(user,inpstr,11);  break;  /* smile */
        case 177: check_mem(user);  break;
        case 178: add_atmos(user,inpstr);  break;
        case 179: del_atmos(user,inpstr);  break;
        case 180: list_atmos(user);  break;
        case 181: shout_think(user,inpstr);  break;
        case 182: suicide_user(user,inpstr);  break;
        case 183: say_to_user(user,inpstr);  break;
        case 184: gag_comm(user,inpstr,0);  break;
        case 185: frog_user(user,inpstr);  break;
        case 186: auto_com(user,inpstr);  break;
        case 187: break;
        case 188: eight_ball(user,inpstr);  break;
        case 189: warning(user,inpstr,1);  break;
        case 190: arrest(user,inpstr,1);  break;
        case 191: t_who(user,inpstr,3);  break;
        case 192: socials(user,inpstr,12); break; /* chuckle */
        case 193: socials(user,inpstr,13); break; /* cough */
        case 194: socials(user,inpstr,14); break; /* dance */
        case 195: socials(user,inpstr,15); break; /* doh */
        case 196: socials(user,inpstr,16); break; /* flirt */
        case 197: socials(user,inpstr,17); break; /* goose */
        case 198: socials(user,inpstr,18); break; /* grab */
        case 199: socials(user,inpstr,19); break; /* growl */
        case 200: socials(user,inpstr,20); break; /* hiss */
        case 201: socials(user,inpstr,21); break; /* insult */
        case 202: socials(user,inpstr,22); break; /* kick */
        case 203: socials(user,inpstr,23); break; /* lol */
        case 204: socials(user,inpstr,24); break; /* shake */
        case 205: socials(user,inpstr,25); break; /* shove */
        case 206: socials(user,inpstr,26); break; /* slap */
        case 207: socials(user,inpstr,27); break; /* whine */
        case 208: socials(user,inpstr,28); break; /* wink */
        case 209: socials(user,inpstr,29); break; /* woohoo */
        case 210: banname(user,inpstr); break;
        case 211: player_create(user,inpstr); break;
        case 212: if (!cat(RULESFILE,user,0))   
                        write_str(user,NO_RULESFILE);
                        write_str(user,"Ok");
                  break;
        case 213: socials(user,inpstr,30); break; /* chicken */
        case 214: socials(user,inpstr,31); break; /* noogie */
	case 215: revoke_com(user,inpstr); break;
	case 216: grant_com(user,inpstr); break;
	case 217: ttt_cmd(user,inpstr); break;
	case 218: guess_hangman(user,inpstr);  break;
	case 219: play_hangman(user,inpstr);  break;
	case 220: backup_stuff(user,inpstr);  break;
        default: break;
	}
}

/*** Call command function or execute command directly ***/
void exec_bot_com(int com_num, int user, char *inpstr)
{
char temp_mess[ARR_SIZE+41];
char filename[FILE_NAME_LEN];
FILE *fp;

/* see if su command */
if (ustr[user].suspended)
  {
    return;
  }
  
sprintf(filename,"%s/%s",LOGDIR,LASTFILE);
if (!(fp=fopen(filename,"w"))) {
   sprintf(temp_mess,"Couldn't write last command from bot %s, to file! %s",strip_color(ustr[user].say_name),get_error());
   btell(user,temp_mess); 
   write_log(ERRLOG,YESTIME,"%s\n",temp_mess);
   FCLOSE(fp);
   }

fprintf(fp,"%s: Command < %s > from %s\n",get_time(0,0),inpstr,strip_color(ustr[user].say_name));
FCLOSE(fp);
temp_mess[0]=0;

if (ustr[user].numcoms==10000000) ustr[user].numcoms=1;
ustr[user].numcoms++;
  
remove_first(inpstr);  /* get rid of commmand word */

switch(botsys[com_num].jump_vector) {
	case 0 : bot_whoinfo(user,inpstr); break;
        default: break;
     }
}