static int open_state;
static string open_message;
static string close_message;
static string open_desc;
static string closed_desc;
int is_openable( void ) {
return( 1 );
}
int is_closable( void ) {
return( 1 );
}
int can_open( object who ) {
return( 1 );
}
int is_open( void ) {
return( open_state == 1 );
}
int is_closed( void ) {
return( open_state == 0 );
}
int can_close( object who ) {
return( 1 );
}
void set_open_message( string str ) {
open_message = str;
}
void set_close_message( string str ) {
close_message = str;
}
string query_open_message( void ) {
if( open_message == 0 || open_message == "" ) {
open_message = "$N $vopen $o.";
}
return( open_message );
}
string query_close_message( void ) {
if( close_message == 0 || close_message == "" ) {
close_message = "$N $vclose $o.";
}
return( close_message );
}
void set_open_description( string str ) {
open_desc = str;
}
void set_closed_description( string str ) {
closed_desc = str;
}
string query_open_description( void ) {
return( open_desc );
}
string query_closed_description( void ) {
return( closed_desc );
}
void update_description( void ) {
if( open_desc == 0 || open_desc == "" ) {
open_desc = this_object()->query_brief() + " %^GREEN%^[open]%^RESET%^";
}
if( closed_desc == 0 || closed_desc == "" ) {
closed_desc = this_object()->query_brief() + " %^RED%^[closed]%^RESET%^";
}
if( open_state == 1 ) {
this_object()->set_in_room_desc( query_open_description() );
} else {
this_object()->set_in_room_desc( query_closed_description() );
}
}
void set_open_state( int state ) {
open_state = state;
if( state == 1 )
this_object()->other_action( this_object(), "$N $vopen." );
else
this_object()->other_action( this_object(), "$N $vclose." );
update_description();
}
int query_open_state( int state ) {
return( open_state );
}
int do_open( object who ) {
if( open_state == 1 ) {
write( "It's already open." );
return( 0 );
}
open_state = 1;
update_description();
if( who != 0 ) {
who->targetted_action( query_open_message(), 0, this_object() );
} else {
this_object()->other_action( this_object(), "$N $vopen." );
}
}
int do_close( object who ) {
if( open_state == 0 ) {
write( "It's already closed." );
return( 0 );
}
open_state = 0;
update_description();
if( who != 0 ) {
who->targetted_action( query_close_message(), 0, this_object() );
} else {
this_object()->other_action( this_object(), "$N $vclose." );
}
}