//	File	:  /cmds/adm/_force.c
//	Creator	:  Buddah@TMI  (2-19/92)
//	Redone	:  Watcher@TMI (4-15-93)
//
//	This is the standard force command. It is presently restricted
//	to Admin use, tho you may wish to move it to the xtra directory
//	to lift this restriction. 
#include <mudlib.h>
#include <logs.h>
inherit DAEMON ;
#define SYNTAX	"Syntax: force <object> [to] <command>\n"
 
int cmd_force(string str) {
   object ob;
   string who, what;
 
   notify_fail( SYNTAX );
   if(!str || str == "" || (sscanf(str, "%s to %s", who, what) != 2 &&
      sscanf(str, "%s %s", who, what) != 2))
	return 0;
 
   if(!adminp(geteuid(this_player(1)))) {
   notify_fail("Force: You aren't authorized to force anyone.\n");
   return 0; }
 
   ob = get_object( who = lower_case(who) );
 
   if(!ob) {
   write("Force: No such living object found.\n");
   return 1; }
 
   if(!living(ob)) {
   write("Force: " + identify(ob) + " is not a living object.\n");
   return 1; }
 
#ifdef FORCE_LOG
   if(!ob->query("npc"))
   log_file(FORCE_LOG, wrap((string)this_player()->query("cap_name") +
	" forced " + (string)ob->query("cap_name") + " to \"" + what +
	"\" [" + extract(ctime(time()), 4, 15) + "]"));
#endif
 
   tell_object(ob, (string)this_player()->query("cap_name") + " forced you " +
	"to: " + what + "\n");
 
   ob->force_me( what );
   write("Ok.\n");
 
return 1; }
string help() {
 
   return( SYNTAX + "\n" +
"This command lets you force a player or monster to execute a specified\n"+
"command. You can only force living objects to do commands that are\n"+
"in their current paths or added by add_actions.\n") ;
 
 }