/* Do not remove the headers from this file! see /USAGE for more info. */ // You must inherit M_INPUT for this stuff to work. void modal_push(function,mixed); void modal_pop(); void modal_pass(string); void do_digging(object); private void answer_question(string input) { object o; if(!stringp(input)) { modal_pop(); return; } if(o = present(input, environment(this_body()))) do_digging(o); else modal_pass(input); modal_pop(); } void do_digging(object arg) { object array o; if(!arg) { o = filter(all_inventory(environment(this_body())), (: $1->is_diggable() :)); switch(sizeof(o)) { case 0: write("There is nothing in which to dig here.\n"); return; case 1: printf("[in %s]\n",o[0]->the_short()); arg = o[0]; break; default: modal_push((:answer_question:), "What do you want to dig in? "); return; } } arg->dig(); } int can_dig() { return 1; } int can_dig_with_obj() { return 1; } int direct_dig_with_obj() { return 1; } int indirect_dig_obj_with_obj() { return 1; } int indirect_dig_in_obj_with_obj() { return 1; } int indirect_dig_up_obj_with_obj() { return 1; } int indirect_dig_out_obj_with_obj() { return 1; } int direct_dig_with_obj_in_obj() { return 1; }