// fixed by drakken 5.Nov.94 #include <std.h> inherit DAEMON; int cmd_peer(string str) { string *dirlist, *destlist; string ret, tmp, l, dest; object who; int i, x; if(!str) { message("my_action", "You peer around the room.", this_player()); message("other_action", sprintf("%s peers around the room", this_player()->query_cap_name()), environment(this_player()), ({ this_player() })); return 1; } if((x=effective_light(this_player())) > 6) return notify_fail("It is much too bright.\n"); if(x < 0) return notify_fail("It is too dark.\n"); if(who = present(str, environment(this_player()))) { message("my_action", "You peer at "+(string)who->query_cap_name()+".", this_player()); message("other_action", (string)this_player()->query_cap_name()+ " peers at "+(string)who->query_cap_name()+".", environment(this_player()), ({ this_player(), who })); message("other_action", (string)this_player()->query_cap_name()+ " peers at you.", who); return 1; } if(!sizeof(dirlist= (string *)environment(this_player())->query_exits())) return notify_fail("There are no openings through which to peer!\n"); if(member_array(str, dirlist) == -1) { if(member_array(str, (string)environment(this_player())->query_exits()) == -1) return notify_fail("You cannot see much like that!\n"); else return notify_fail("You cannot peer into something like that!\n"); } if(!(dest = (string)environment(this_player())->query_exit(str))) return notify_fail("You cannot see much in that direction.\n"); tmp = (string)(environment(this_player())->query_door(str)); if (tmp && !environment(this_player())->query_open(tmp)) return notify_fail("The "+tmp+" blocks your view.\n"); dest = replace_string(dest, ".c", ""); //Kalinash 1-14-94 if(!unguarded((: file_exists, dest+".c" :))) return notify_fail("You cannot see much in that direction.\n"); if((int)dest->query_property("light") < 0) message("my_action", "It is too dark.", this_player()); else if((int)dest->query_property("light") > 6) message("my_action", "It is too bright that way.", this_player()); else { message("room_description", (string)dest->query_long(0), this_player()); ret = (string)dest->describe_living_contents(({})); if (ret && ret != "") message("living_item", ret, this_player()); ret = (string)dest->describe_item_contents(({})); message("inanimate_item", ret, this_player()); } message("other_action", this_player()->query_cap_name()+ " peers "+str+".", environment(this_player()), ({this_player()})); return 1; } int help() { message("help","Syntax: <peer direction>\n\n" "Allows you to look into the neighbouring room in the given " "direction if nothing blocks your sight.", this_player() ); return 1; }