#include "path.h" inherit "/std/room/basic_room"; string *functions; void setup() { string word; /* The following two lines define the description of the room when you * glance at it, or enter it in brief mode. * It should be something that will make the sentence: * "This room is <determinate>+<short>." correct. * eg. here it would make: "This room is the entrance to learning." * This is also a useful test to see if you've used capital letters * correctly. */ set_short( "room of function examples" ); add_property( "determinate", "the " ); /* The next command define the description you see when you look at it, * and when you enter it in verbose mode. * It should consist of complete sentences. For normal rooms it should be * a description of the things the player can see. * Remember to use two spaces beween sentences. */ set_long( "This is the room that might lead you to better understanding " "of how to use some of the functions we have here.\n" "Try \"list\" to get a list of the functions known by the room, " "take the exit named by the function to get to a room with exits " "to the examples.\n" "If you have something you'd like to see here, " "mail "+ CURRENT_LORD +" and suggest it.\n" ); /* set_light sets the amount of light the room has. See help light * for a list of what the number means:) */ set_light( 50 ); /* This adds the exits, you'd never have guessed */ functions = SEARCH->query_functions(); foreach( word in functions ) { add_exit( word, "??", "path" ); modify_exit( word, ({ "obvious", 0 }) ); } add_exit( "exit", ENTRANCE, "door" ); /* add_property is used to add a value to an object, that can later be * queried for with query_property. * The "commented functions" and "keywords" properties are specific for * rooms in the learning domain and is used to make it possible to search * for subjects. * See /d/learning/handlers/search.c for the way this is done. */ add_property( "commented functions", ({ "set_long", "set_short", "add_property", "set_light" }) ); add_property( "keywords", ({ }) ); } /* setup() */ void init() { ::init(); add_command( "list" , "", (:this_object()->do_list():) ); //add_action( "do_word", functions ); // map(functions, (:add_command($1, "", (:do_word:)):)); } /* init() */ int do_list() { write( sprintf( "The following functions have examples of use:\n%#-*s\n", 75, implode( functions, "\n" ) ) ); return 1; } /* do_list() */ /* set_destination is called whenever an exit is looked through or walked * though. * The search handler will see if there's already a room defined by the * function, and if not, it'll make one. */ void set_destination( string word ) { if( word != "exit" ) { /* the exit is a function, and need recalculation */ modify_exit( word, ({ "dest", SEARCH->find_function_room( word ) }) ); } } /* set_destination() */