/
LIB3/
LIB3/D/ADMIN/
LIB3/D/ADMIN/OBJ/
LIB3/D/ADMIN/ROOM/W/
LIB3/D/HOME/
LIB3/D/HOME/CITY/ARENA/
LIB3/D/HOME/CITY/ITEMS/
LIB3/D/HOME/CITY/POSTOFFI/
LIB3/DOC/
LIB3/GLOBAL/SPECIAL/
LIB3/GLOBAL/VIRTUAL/
LIB3/NET/
LIB3/NET/CONFIG/
LIB3/NET/DAEMON/CHARS/
LIB3/NET/GOPHER/
LIB3/NET/INHERIT/
LIB3/NET/OBJ/
LIB3/NET/SAVE/
LIB3/NET/VIRTUAL/
LIB3/OBJ/B_DAY/
LIB3/OBJ/HANDLERS/TERM_TYP/
LIB3/PLAYERS/B/
LIB3/PLAYERS/N/
LIB3/ROOM/
LIB3/SAVE/
LIB3/SAVE/BOARDS/
LIB3/SAVE/ENVIRON/
LIB3/SAVE/POST/
LIB3/STD/COMMANDS/SHADOWS/
LIB3/STD/CREATOR/
LIB3/STD/DOM/
LIB3/STD/EFFECTS/
LIB3/STD/EFFECTS/HEALING/
LIB3/STD/EFFECTS/OTHER/
LIB3/STD/EFFECTS/POISONS/
LIB3/STD/ENVIRON/
LIB3/STD/GUILDS/
LIB3/STD/LIQUIDS/
LIB3/STD/ROOM/
LIB3/STD/TRIGGER/SHADOW/
LIB3/W/
LIB3/W/BANNOR/
LIB3/W/NEWSTYLE/
#pragma save_binary
static int light, int_light;

int     query_light()
{
    return light + int_light;
}
int     query_my_light()
{
    return light;
}
int     query_int_light()
{
    return int_light;
}

/* Hmm. Interesting functions, very useful. */
int     set_opaque()
{
    if( !this_object()->query_property( "opaque" ) && environment() )
	environment()->adjust_light( -int_light );
    this_object()->add_property( "opaque", 1 );
    return 1;
}
int     reset_opaque()
{
    if( this_object()->query_property( "opaque" ) && environment() )
	environment()->adjust_light( int_light );
    this_object()->remove_property( "opaque" );
}

/* this is used by objects being added to the inventory etc. */
int     adjust_light( int i )
{
    if( i )
    {
	if( environment() && !this_object()->query_property( "opaque" ) )
	    environment()->adjust_light( i );
	event( this_object(), "light_change", i );
    }
    return( int_light += i );
}

int     set_light( int i )
{
    if( light - i )
    {
	if( environment() )
	    environment()->adjust_light( i - light );
	event( this_object(), "light_change", i - light );
    }
    return( light = i );
}

mixed  *stats()
{
    return({ 
		({ "light", light }),
		({ "int light", int_light }),
		({ "opaque", this_object()->query_property( "opaque" ) }),
		 });
}

mixed * query_init_data()
{
    return({ "light", light, "set_light/p/" });
}