/* -*- LPC -*- */
/*
* $Locker: $
* $Id: logroom.c,v 1.1 1998/01/06 05:06:10 ceres Exp $
* $Log: logroom.c,v $
* Revision 1.1 1998/01/06 05:06:10 ceres
* Initial revision
*
*/
#include <terrain.h>
#define SAVE_FILE RESTORE_PATH +"logroom"
inherit "/std/room";
mapping locations;
void setup() {
set_short( "limbo" );
set_light( 50 );
set_long( "You are between worlds, surrounded by raw potentiality and "+
"not a lot else.\n" );
add_item( "potentiality", "Well, it's sort of potentially something and "+
"potentially nothing, and it can't quite decide at the moment. "+
"With any luck, though, you won't be here long enough to find "+
"out...\n" );
add_exit( "drum", "/d/am/am/mendeddrum", "path" );
locations = ([ ]);
if ( file_size( SAVE_FILE +".o" ) )
unguarded((: restore_object, SAVE_FILE :));
} /* setup() */
void save_this() {
unguarded((: save_object, SAVE_FILE :));
}
void player_quitting( object player, object place ) {
if ( player->query_property( "guest" ) )
return;
locations[ (string)player->query_name() ] =
({ (string)place->query_property( "terrain name" ),
(int *)place->query_co_ord() });
save_this();
call_out( "check_quitted", 5, (string)player->query_name() );
} /* player_quitting() */
void check_quitted( string word ) {
if ( !find_player( word ) )
return;
if ( locations[ word ] )
locations = m_delete( locations, word );
save_this();
} /* check_quitted() */
void event_enter( object player, string words, object thing ) {
object location;
mixed *data;
data = locations[ (string)player->query_name() ];
if ( !data ) {
player->move( (string)player->query_start_pos(),
"$N enter$s the game." );
return;
}
location = (object)TERRAIN_MAP->find_location( data[ 0 ],
data[ 1 ] );
player->move( location );
locations = m_delete( locations, (string)player->query_name() );
save_this();
} /* event_enter() */