inherit "inherit/weapon"; int charges; reset (arg) { if (arg) return; set_name("staff"); set_type("crush"); set_short("Staff of Escher"); set_long("This is a long, twisted oaken staff, with rubies enbedded\n"+ "in it at one end. A dark red line runs the length of it.\n"); set_wc(12); set_length(72); set_weight(4); set_value(2000); charges = 10 + random(10); set_sell_destruct(1); } init() { ::init(); add_action("strike", "strike"); } strike(str) { if(!str) { write("Strike whom?\n"); return 1; } if(str = this_player()->query_name()) { if(charges > 0) { write("You strike yourself in the head, and feel better.\n"); say(this_player()->query_name()+" strikes themself in the head"+ ", and seems to enjoy it.\n", this_player()); this_player()->adj_hp(1000); charges = charges - 1; return 1; } else { write("You strike yourself in the head, but nothing happens.\n"); say(this_player()->query_name()+" strikes themself in the head"+ ", and winces slightly.\n", this_player()); return 1; } } if(!present(find_living(str), environment(this_player()))) { write("Strike whom?\n"); return 1; } else { write("You strike "+capitalize(str)+", and they seem to enjoy it.\n"); tell_object(find_living(str), this_player()->query_name()+" strikes"+ " you in the head, and you feel better.\n"); say(this_player()->query_name()+" strikes "+capitalize(str)+" in the"+ " head, and they seem to enjoy it.\n", this_player()); find_living(str)->adj_hp(1000); charges = charges - 1; return 1; } }