/
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/take.c,v 1.2 91/09/19 12:55:44 mjr Exp $";
#endif

/* configure all options BEFORE including system stuff. */
#include	"config.h"


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


/* ARGSUSED */
cmd_take(ac,av,who,aswho)
int	ac;
char	*av[];
char	*who;
char	*aswho;
{
	int	x;
	char	*loc;
	char	ob[MAXOID];

	loc = ut_loc(who);

	for(x = 1; x < ac; x++) {
		if(matchobjects(who,av[x],loc,MTCH_UNIQ|MTCH_QUIET,ob) &&
				matchobjects(who,av[x],loc,MTCH_FRST,ob))
			continue;

		/* check locks */
		if(bool_locked(who,ob,loc,var_lock,0)) {
			if(!activate(ACTIV_PONLY,who,ob,loc,var_fail,ac,av))
				say(who,"you can't take ",ut_name(ob),".\n",(char *)0);

			(void)activate(ACTIV_ECAST,who,ob,loc,var_ofail,ac,av);
			continue;
		}

		if(ut_listadd(who,who,var_cont,ob))
			return(1);
		if(ut_listdel(who,loc,var_cont,ob))
			return(1);
		if(ut_set(who,ob,typ_obj,var_loc,who))
			return(1);

		if(!activate(ACTIV_PONLY,who,ob,loc,var_succ,ac,av))
			say(who,"took ",ut_name(ob),".\n",(char *)0);

		(void)activate(ACTIV_ECAST,who,ob,loc,var_osucc,ac,av);
	}
	return(0);
}