/* Do not remove the headers from this file! see /USAGE for more info. */ // Define a function called dig(obj) for when obj tries to dig you. // This module requires that M_INPUT also be inherited. void modal_push(function,mixed); void modal_pop(); void modal_pass(string); int is_diggable() { return 1; } int direct_dig_in_obj() { return 1; } int direct_dig_out_obj() { return 1; } int direct_dig_up_obj() { return 1; } int direct_dig_obj() { return 1; } int direct_dig_obj_with_obj() { return 1; } int can_dig_in_obj() { return 1; } int can_dig_out_obj() { return 1; } int can_dig_up_obj() { return 1; } int direct_dig_in_obj_with_obj() { return 1; } int direct_dig_out_obj_with_obj() { return 1; } int direct_dig_up_obj_with_obj() { return 1; } int indirect_dig_with_obj_in_obj() { return 1; } private void answer_question(string input) { object o; if(!stringp(input)) { modal_pop(); return; } if(o = present(input, environment(this_body())) || o = present(input, this_body())) o->do_digging(this_object()); else modal_pass(input); modal_pop(); } void complete_dig() { object array obs; obs = filter(all_inventory(this_body())+all_inventory(environment(this_body())), (: $1->can_dig() :)); switch(sizeof(obs)) { case 0: write("You have nothing with which to dig.\n"); return; case 1: printf("[with %s]\n",obs[0]->the_short()); obs[0]->do_digging(this_object()); return; default: modal_push((:answer_question:), "What do you want to dig with? "); return; } }