/
umud/DOC/
umud/DOC/U/
umud/DOC/U/U-examples/
umud/DOC/internals/
umud/DOC/wizard/
umud/MISC/
umud/MISC/dbchk/
umud/RWHO/rwhod/
/*
	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);
}