#include "define.h" #include "struct.h" void* code_open( void** argument ) { room_data* room = (room_data*) argument[0]; int door = (int) argument[1]; exit_data* exit; if( room != NULL && ( exit = exit_direction( room, door ) ) != NULL ) { remove_bit( &exit->exit_info, EX_CLOSED ); if( ( exit = reverse( exit ) ) != NULL ) remove_bit( &exit->exit_info, EX_CLOSED ); } return NULL; } void* code_close( void** argument ) { room_data* room = (room_data*) argument[0]; int door = (int) argument[1]; exit_data* exit; if( room != NULL && ( exit = exit_direction( room, door ) ) != NULL ) { set_bit( &exit->exit_info, EX_CLOSED ); if( ( exit = reverse( exit ) ) != NULL ) set_bit( &exit->exit_info, EX_CLOSED ); } return NULL; } void* code_lock( void** argument ) { room_data* room = (room_data*) argument[0]; int door = (int) argument[1]; exit_data* exit; if( room != NULL && ( exit = exit_direction( room, door ) ) != NULL ) { set_bit( &exit->exit_info, EX_LOCKED ); if( ( exit = reverse( exit ) ) != NULL ) set_bit( &exit->exit_info, EX_LOCKED ); } return NULL; } void* code_unlock( void** argument ) { room_data* room = (room_data*) argument[0]; int door = (int) argument[1]; exit_data* exit; if( room != NULL && ( exit = exit_direction( room, door ) ) != NULL ) { remove_bit( &exit->exit_info, EX_LOCKED ); if( ( exit = reverse( exit ) ) != NULL ) remove_bit( &exit->exit_info, EX_LOCKED ); } return NULL; } void* code_is_open( void** argument ) { room_data* room = (room_data*) argument[0]; int dir = (int) argument[1]; exit_data* exit; return (void*) ( room != NULL && ( exit = exit_direction( room, dir ) ) != NULL && !is_set( &exit->exit_info, EX_CLOSED ) ); } void* code_is_locked( void** argument ) { room_data* room = (room_data*) argument[0]; int dir = (int) argument[1]; exit_data* exit; return (void*) ( room != NULL && ( exit = exit_direction( room, dir ) ) != NULL && is_set( &exit->exit_info, EX_LOCKED ) ); } void* code_show( void** argument ) { char_data* ch = (char_data*) argument[0]; room_data* room = (room_data*) argument[1]; int dir = (int) argument[2]; exit_data* exit; if( room != NULL && ch != NULL && ( exit = exit_direction( room, dir ) ) != NULL && is_set( &exit->exit_info, EX_SECRET ) ) ch->seen_exits += exit; return NULL; }