/*
Basic Communication and other commands
*/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdarg.h>
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
#include <ctype.h>
#include <signal.h>
#include "mud.h"
char *one_argument( char *argument, char *arg_first )
{
char cEnd;
while ( isspace(*argument) )
argument++;
cEnd = ' ';
if ( *argument == '\'' || *argument == '"' )
cEnd = *argument++;
while ( *argument != '\0' )
{
if ( *argument == cEnd )
{
argument++;
break;
}
*arg_first = LOWER(*argument);
arg_first++;
argument++;
}
*arg_first = '\0';
while ( isspace(*argument) )
argument++;
return argument;
}
void stcf(D_MOBILE *dMob,const char *fmt,...)
{
char buf[MSL];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
text_to_mobile(dMob,buf);
}
void cmd_chat(D_MOBILE * dMob, char *argument)
{
D_MOBILE *xMob;
ITERATOR *pIter;
char arg[MIL];
char buf[MSL];
one_argument(argument, arg);
if (argument[0] == '\0') {
stcf(dMob,"How about saying something, %s?\n\r",dMob->name);
return;
}
stcf(dMob,"You chat '#C%s#n'\n\r",arg);
xprintf(buf,"#W%s#n chats '#C%s#n'\n\r",dMob->name,arg);
pIter = AllocIterator(dmobile_list);
while ((xMob = (D_MOBILE *) NextInList(pIter)) != NULL)
{
if (xMob == dMob) continue;
text_to_mobile(xMob, buf);
}
FreeIterator(pIter);
append_dfile(dMob, LOG_DIR CHAT_LOG, argument);
return;
}