/* Quest Room, Ramses 1993. Revisions by Angel 1994 * Original code by Lemat(-jj), 1992. */ inherit "inherit/room2"; #define ELDER 60 void reset(status arg) { if(!present("Search For The Guyvers")) { move_object(clone_object("room/registry/crombie1"),this_object()); } if(!present("Myphon")) { move_object(clone_object("room/registry/cassidy1"),this_object()); } if(arg) return; set_weather(2, 1, 0); set_short("The Quest Room"); set_long( "-=[ The Quest Room ]=- \n"+ "Inside this room are all the quest objects required for the game.\n"+ "To find out how a quest works, please check ~doc/guidelines and \n"+ "read everything inside there. Before you can have a quest object \n"+ "placed in here, it must be checked by the head of the QC team. \n"); set_exits(({ "room/adv_inner", "inner", "room/city/square", "square", "room/void", "void", })); } string get_new_quest(object pl) { object *obj; string *quests_done; int level, i; string *quests_can_do; quests_can_do = ({}); quests_done = (string *)this_player()->query_done_quests(); if(!pl) pl = this_player(); level = (int)pl->query_level(); obj = all_inventory(this_object()); for(i=0; i<sizeof(obj); i++) { if(member_array(obj[i]->query_name(), quests_done) == -1) if(!obj[i]->query_test()) if((level >= obj[i]->query_min_level()) && (level <= obj[i]->query_max_level())) { if((string)obj[i]->query_object_type() == "Quest_object") quests_can_do += ({ obj[i]->query_name(), }); } } if(!sizeof(quests_can_do)) return 0; i = random(sizeof(quests_can_do)); return quests_can_do[i]; } int finish_quest(string quest_name, object caller, object who) { object quest; string tmp, caller_file, caller_room; int i; if(present(quest_name), this_object()) quest = present(quest_name, this_object()); if(!quest) { write("Error! Quest object missing!\n"); return 0; } if(quest->query_test()) { write("Quest completed for quest phaze Alpha.\n"); return 0; } /* must still be his current quest to finish it */ if((string)who->query_curr_quest() != quest_name) return 0; /* so an Elder can force a complete a quest */ if(caller->query_security_level() >= 60) { if(interactive(caller)) return (int)quest->query_qpoints(); } sscanf(file_name(caller), "%s", tmp); sscanf(file_name(caller), "%s#%d", tmp, i); if(tmp != (string)quest->query_req_caller()) { return 0; } if(file_name(environment(who)) != (string)quest->query_req_place()) return 0; i = (int)quest->query_qpoints(); return i; return (int)quest->query_qpoints(); } status get_quest_hint(string quest_name) { object quest; if(!quest_name) return 0; quest = present(quest_name, this_object()); if(!quest) return 0; write(quest->query_hint()); return 1; }