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

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


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


/* ARGSUSED */
cmd_drop(argc,argv,who,aswho)
int	argc;
char	*argv[];
char	*who;
char	*aswho;
{
	int	x;
	char	*loc;
	char	*dest;
	char	ob[MAXOID];
	char	*used;
	char	work[MAXOID]; /* Work buffer demanded by ut_dropto() */

	loc = ut_loc(who);

	for(x = 1; x < argc; x++) {
		if(matchinv(who,argv[x],1,MTCH_UNIQ|MTCH_QUIET,ob) &&
				matchinv(who,argv[x],1,MTCH_FRST,ob))
			continue;

		dest = ut_dropto(ob,loc,work);
		used = ut_getatt(who,0,typ_obj,var_using,(char *)0);

		if(used == (char *)0 || strcmp(used,ob)) {
			if(ut_listdel(who,who,var_cont,ob))
				return(1);
		} else {
			if(ut_unset(who,who,var_using))
				return(1);
		}
		if(ut_set(who,ob,typ_obj,var_loc,dest))
			return(1);
		if(ut_listadd(who,dest,var_cont,ob))
			return(1);

		if(!activate(ACTIV_PONLY,who,ob,loc,var_drop,argc,argv))
			say(who,"dropped ",ut_name(ob),".\n",(char *)0);

		if(!activate(ACTIV_ECAST,who,ob,loc,var_odrop,argc,argv))
			ut_roombcast(loc,who,ut_name(who)," dropped ",ut_name(ob),".\n",(char *)0);;
	}
	return(0);
}