/* Do not remove the headers from this file! see /USAGE for more info. */ // John // Sep 7 94 private nosave mixed throw_response = 1; private nosave function my_throw_hook; void add_hook(string, function); mixed move (object); private mixed prevent_throw() { return throw_response; } void set_throwmsg( string s ) { throw_response = s; if (!my_throw_hook) { my_throw_hook = (: prevent_throw :); add_hook("prevent_throw", my_throw_hook); } } string query_throwmsg() { if (stringp(throw_response)) return throw_response; } void set_throwable( int g ) { if (g == -1 || !g) throw_response = 0; else throw_response = 1; if (!my_throw_hook) { my_throw_hook = (: prevent_throw :); add_hook("prevent_throw", my_throw_hook); } } mixed do_throw(object target) { object env; mixed tmp; if (throw_response != 1) return throw_response; env = environment(); tmp = move(environment(this_body())); if (tmp == 1) { if(!target) { this_body()->simple_action("$N $vthrow a $o.", this_object()); return 1; } else { // Add skill stuff here... this_body()->targetted_action("$N $vthrow a $o at $t. It bounces off of $p1 head, and lands in front of $p1 feet.", target, this_object()); return 1; } } } int is_throwable() { return throw_response == 1; }