#include <lib.h>

inherit LIB_VERB;

static void create() {
    verb::create();
    SetVerb("force");
    SetRules("LIV STR", "LIV to STR");
    SetErrorMessage("Force whom to do what?");
    SetHelp("Syntax: <force LIVING SOMETHING>\n"
      "        <force LIVING to DO SOMETHING>\n"
      "Allows you to command some living things to do "
      "your bidding.");
}

mixed can_force_liv_to_str(string str) { 
    if(!creatorp(this_player())) return 0;
    return 1;
}

mixed can_force_liv_str(string str) {
    return can_force_liv_to_str(str);
}

mixed do_force_liv_to_str(object target, string cmd) {
object who = this_player();

if(!who) return 0;
    if(archp(target) && !securep(who)){
	who->eventPrint(target->GetName()+" shakes "+possessive(target)+
	  " head and forces you to dest yourself.");
	tell_room(environment(who), who->GetName()+" dests "+objective(who)+
	  "self while trying to pull a foolish joke on "+target->GetName()+".", who);
        tell_player(target,who->GetName()+" tried to force you to "+cmd);
        tell_player(target,who->GetName()+" has been dested, instead.");
	who->eventDestruct();
	return 1;
    }
    target->eventPrint(who->GetName() + " forces you to: " + cmd);
    who->eventPrint("You force " + target->GetShort() + " to: " + cmd);
    target->eventForce(cmd);
    return 1;
}

mixed do_force_liv_str(object ob, string str) {
    return do_force_liv_to_str(ob, str);
}
