#include "defs.h"
/*
 * Example room for using /obj/surf_save and /obj/cont_save.
 */
inherit ROOM_OBJ;
object shelf, wardrobe;
void setup() {
   set_short("room of shelf and wardrobe examples");
   add_property( "determinate", "the " );
   set_long( "This room gives some simple examples of how to make shelves, "
            "wardrobes and such that'll save the content for you.\n"
            "To make a shelf, which is characterized by having a surface "
            "you can put things on, you make a clone of /obj/surf_save, "
            "configure it like all cloned objects, and call set_save_file( "
            "file_name ) do tell what file should be used to save the "
            "objects that are put on it.  If the savefile isn't in /save/ "
            "you should call check_euid() on the shelf before calling "
            "set_save_file().\n"
            "Making a wardrobe, you do the same, except you that it is "
            "/obj/cont_save you should clone.\n"
            "Note that since these are fixed parts of the room, and not "
            "something that is put here, I clone them directly in reset() "
            "instead of doing a call_out() to a function that makes them.\n" );
   set_light( 100 );
   add_exit( "back", LEARNING +"search", "path" );
   add_exit( "exit", ENTRANCE, "path" );
   /* 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", 
                ({ "check_euid", "set_save_file" }) );
   add_property( "keywords", 
                ({ "shelf", "wardrobe", "save" }) );
} /* setup() */
void reset() {
   if (!shelf) {
      /* The first parts of making a shelf it covered elsewhere, it's 
       * basically a matter of cloning the object and make it look like 
       * it should
       */
      shelf = clone_object("/obj/surf_save"); 
      shelf->set_name( "shelf" );
      shelf->set_short( "oaken shelf" );
      shelf->add_adjective( "wooden" );
      shelf->add_adjective( "oak" );
      shelf->add_adjective( "oaken" );
      shelf->add_property( "there", "hanging from the wall" );
      shelf->set_long( "This shelf is made from oak and "
                      "varnished to bring out the glow.\n" );
      shelf->set_weight( 2000 );
      shelf->set_max_weight( 2000 );
      shelf->reset_get();
      /* This call will allow the shelf to write the  savefile in the same
       * domain as the room is in, if you don't do this call, the savefile
       * will have to be somewhere in /save/ 
       */
      shelf->check_euid(); 
      /* This call tells the shelf what file should be used to save the stuff
       * placed on it.
       */
      shelf->set_save_file( SAVEPATH+"/oak_shelf" );
      /* end by putting the shelf in the room */
      shelf->move( this_object() );
   }
   if (!wardrobe) {
      wardrobe = clone_object("/obj/cont_save");
      wardrobe->set_name( "wardrobe" );
      wardrobe->set_short( "oaken wardrobe" );
      wardrobe->add_adjective( "wooden" );
      wardrobe->add_adjective( "oaken" );
      wardrobe->add_adjective( "oak" );
      wardrobe->set_long( "This wardrobe is made from oak and "
                         "varnished to bring out the glow.\n" );
      wardrobe->set_weight( 2000 );
      wardrobe->set_max_weight( 2000 );
      wardrobe->reset_get();
      /* This call will allow the wardrobe to write the savefile in the same
       * domain as the room is in, if you don't do this call, the savefile
       * will have to be somewhere in /save/ 
       */
      wardrobe->check_euid();
      /* This call tells the wardrobe what file should be used to save the
       * stuff placed in it.
       */
      wardrobe->set_save_file( SAVEPATH+"/wardrobe" );
      /* end by putting the wardrobe in the room */
      wardrobe->move( this_object() );
   }
} /* reset() */