inherit "/lib/std/room"; #define POINTS_NEEDED 100 #define QUEST_DIR "/domains/Praxis/quests/" void init() { ::init(); if(!archp(this_player())) this_player()->destruct(); } void create() { string *quest_ls; int i; ::create(); SetProperty("light", 1); SetShort( "Quest room"); SetLong( "Quests are stored here."); quest_ls = get_dir(QUEST_DIR); if(!sizeof(quest_ls)) return; for(i=0; i<sizeof(quest_ls); i++) { new(QUEST_DIR+quest_ls[i])->move(this_object()); } } void list_quests(object tp, int x) { object *inv; int i; string *quest_list; inv = all_inventory(this_object()); if(!sizeof(inv)) { tell_object(tp, "There are no quests."); return; } quest_list = ({}); for(i=0; i<sizeof(inv); i++) { if(member_array((string)inv[i]->query_name(), (string *)tp->query_quests()) == -1) quest_list += ({ inv[i] }); } if(!x) { tell_object(tp, "There are "+sizeof(quest_list)+" quests you " "have not solved. They are these quests:\n"); for(i=0; i<sizeof(quest_list); i++) { tell_object(tp, (i+1)+": "+(string)present(quest_list[i], this_object())->GetShort()+"\n"); } } else { if(x > sizeof(quest_list)) { tell_object(tp, "No such quest.\n"); return; } tell_object(tp, (string)present(quest_list[x-1], this_object())->GetLong()); } } int query_quest_points(string str) { int x; object ob; ob = present(str); x = (int)ob->query_quest_points(); return x; } int check_quests(object tp, int lev) { int qp; string *list; qp= (int)tp->query_quest_points(); if(lev>=5) if(qp < POINTS_NEEDED/4) return 0; else if(lev >= 10) if(qp < POINTS_NEEDED/2) return 0; else if(lev >= 15) if(qp < (3*POINTS_NEEDED)/4) return 0; else if(lev > 19) if(qp < POINTS_NEEDED) return 0; return 1; } void clean_up() { return; }