// /bin/user/_aim.c
// from the Nightmare mudlib
// the ability to aim for an oppenent's limbs
// created by Descartes of Borg 11 may 1993
#include <std.h>
inherit DAEMON;
int cmd_aim(string str) {
string what, whom;
object ob;
if(!str) {
notify_fail("Aim for what?\n");
return 0;
}
if(this_player()->query_disable()) return 1;
this_player()->set_disable();
if((int)this_player()->query_sp() < 1) {
notify_fail("You are too tired.\n");
return 0;
}
if(sscanf(str, "for %s on %s", what, whom) != 2) {
what = str;
ob = (object)this_player()->query_current_attacker();
if(!ob) {
notify_fail("Aim for what on whom?\n");
return 0;
}
}
else {
ob = present(lower_case(whom), environment(this_player()));
if(!ob) ob = parse_objects(environment(this_player()), lower_case(whom));
if(!ob) {
notify_fail("No "+capitalize(whom)+" here.\n");
return 0;
}
}
if(!living(ob)) {
notify_fail("That is not a living thing!\n");
return 0;
}
if(!ob->query_is_limb(lower_case(what))) {
notify_fail(ob->query_cap_name()+" has no "+what+".\n");
return 0;
}
write("You aim for "+ob->query_cap_name()+"'s "+what+".");
say(this_player()->query_cap_name()+" concentrates on "+ob->query_cap_name()+".");
if(random(101) < (int)this_player()->query_skill("attack"))
ob->set_target_limb(lower_case(what));
this_player()->add_sp(-1);
return 1;
}
void help() {
write("Syntax: <aim for [limb] on [enemy]>\n\n"
"Allows you to aim for a specific limb on an enemy before\n"
"or during attack. You may not always be successful.\n"
);
}