/
umud/DOC/
umud/DOC/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: /usr/users/mjr/hacks/umud/CMD/RCS/use.c,v 1.2 91/09/19 12:55:45 mjr Exp $";
#endif


#include	"config.h"


#include	"mud.h"
#include	"match.h"
#include	"vars.h"

static	int
stop_using(who,ud)
char	*who;
char	*ud;
{
	if(ut_listadd(who,who,var_cont,ud))
		return(1);
	if(ut_unset(who,who,var_using))
		return(1);

	say(who,"You stop holding ",ut_name(ud),".\n",(char *)0);
	return(0);
}


/* ARGSUSED */
cmd_use(ac,av,who,aswho)
int	ac;
char	*av[];
char	*who;
char	*aswho;
{
	char	*ud;

	ud = ut_getatt(who,0,typ_obj,var_using,(char *)0);

	/* no args stop using */
	if(ac <= 1) {
		if(ud == (char *)0) {
			say(who,"You aren't holding anything.\n",(char *)0);
			return(0);
		}
		return (stop_using(who,ud));
	} else
	if(ac == 2) {
		char	ob[MAXOID];

		if(ud != (char *)0 && stop_using(who,ud))
			return (1);
		if(matchinv(who,av[1],0,MTCH_UNIQ|MTCH_QUIET,ob) &&
				matchinv(who,av[1],0,MTCH_FRST|MTCH_QUIET,ob)) {
			if (cmd_take(ac,av,who,aswho))
				return(1);
			if(matchinv(who,av[1],0,MTCH_UNIQ|MTCH_QUIET,ob) &&
					matchinv(who,av[1],0,MTCH_FRST|MTCH_QUIET,ob))
				return(1);
		}
		if(ut_listdel(who,who,var_cont,ob))
			return(1);
		if(ut_set(who,who,typ_obj,var_using,ob))
			return(1);
		say(who,"You are now holding ",ut_name(ob),".\n",(char *)0);
		return(0);
	}

	say(who,"You can only use one thing at a time.\n",(char *)0);
	return(0);
}