/**
* This is the basic inheritable to make things check for being
* open.
* @author Pinkfish
* @started Mon Oct 23 12:04:18 PDT 2000
*/
private nosave function _open_func;
/**
* This method sets the open function for the room.
* @param func the open function
* @see query_open_function()
* @see check_open()
* @example
* // The pub is only open if the barman is alive.
* set_open_function( (: ( barman ? 1 : 0 ) :) );
* @example
* void setup() {
* ...
* // Setup the open function.
* set_open_function( (: do_open_check :) );
* } /\* setup() *\/
*
* int do_open_check( object player, int type ) {
* if( !barman ) {
* add_failed_mess( "There appears to be no barman here!\n" );
* return 2;
* }
* if( type <= PUB_DESSERT && !chef ) {
* add_failed_mess( "The chef isn't here at the moment.\n" );
* return 2;
* }
* return 0;
* } /\* do_open_check() *\/
*/
void set_open_function(function func) {
_open_func = func;
} /* set_open_function() */
/**
* This method queries the open function for the room/.
* @return the open function
*/
function query_open_function() {
return _open_func;
} /* query_open_function() */
/**
* This method checks to see if the shop is open.
* @param player the player who we are checking to see if it is open for
*/
int is_open(object player, int type) {
if (_open_func) {
return evaluate(_open_func, player, type);
}
return 1;
} /* is_open() */
/**
* @ignore yes
* This method provides backwards compatibility.
*/
int test_open() {
return is_open( this_player(), 0 );
} /* test_open() */