/*
Copyright (C) 1991, Marcus J. Ranum. All rights reserved.
*/
#ifndef lint
static char RCSid[] = "$Header: /home/mjr/hacks/umud/CMD/RCS/do.c,v 1.2 92/06/16 21:58:06 mjr Exp $";
#endif
/* configure all options BEFORE including system stuff. */
#include "config.h"
#include "mud.h"
#include "vars.h"
/*
TinyMUD-like "emote"
*/
/* ARGSUSED */
cmd_do(argc,argv,who,aswho)
int argc;
char *argv[];
char *who;
char *aswho;
{
char *uname;
char *room;
char *in;
int ax;
char nxtu[MAXOID];
room = ut_loc(run_actor());
in = ut_getatt(room,0,typ_list,var_ply,(char *)0);
if(in == (char *)0) {
/* We're not in a room, let's see if we're `in' a player. */
in = ut_getatt(room,0,typ_flag,var_isplay,(char *)0);
if (in == (char *)0) {
say(who,"You aren't anywhere. Sit still.\n",(char *)0);
return(UERR_PERM);
}
/* We're 'inside' a player. */
uname = ut_name(run_actor());
/* Do at the player. */
say(room,uname,(char *)0);
for(ax = 1; ax < argc; ax++)
say(room," ",argv[ax],(char *)0);
say(room,"\n",(char *)0);
/* Do at us. */
in = run_actor();
say(in,uname,(char *)0);
for(ax = 1; ax < argc; ax++)
say(in," ",argv[ax],(char *)0);
say(in,"\n",(char *)0);
return(UERR_NONE);
}
uname = ut_name(run_actor());
while((in = lstnext(in,nxtu,sizeof(nxtu))) != (char *)0) {
say(nxtu,uname,(char *)0);
for(ax = 1; ax < argc; ax++)
say(nxtu," ",argv[ax],(char *)0);
say(nxtu,"\n",(char *)0);
}
return(UERR_NONE);
}