/* /lib/events/close.c * from the Dead Souls Object Library * handles closing and opening events * created by Descartes of Borg 960115 * Version: @(#) close.c 1.5@(#) * Last modified: 96/12/23 */ int Closed; // abstract methods string GetDefiniteShort(); // end abstract methods int GetClosed(){ return Closed; } int GetOpen(){ return !(Closed); if(GetClosed()) return 0; else return 1; } int SetClosed(int x){ Closed = x; parse_refresh(); return Closed; } varargs mixed CanClose(object who, string id){ if(who && environment() && environment() != environment(who) && environment() != who) return "#That's not accessible to you."; if( Closed ){ id = capitalize(GetDefiniteShort()) + " is already closed."; return id; } else return 1; } varargs mixed CanOpen(object who, object tool){ if(environment() && environment() != environment(who) && environment() != who) return "#That's not accessible to you."; if( !Closed ){ return capitalize(GetDefiniteShort()) + " is already open."; } else return 1; } mixed eventClose(object who){ if( !SetClosed(1) ){ return 0; } send_messages("close", "$agent_name $agent_verb $target_name.", who, this_object(), environment(who)); return 1; } varargs mixed eventOpen(object who, object tool){ if( SetClosed(0) ){ return 0; } send_messages("open", "$agent_name $agent_verb $target_name.", who, this_object(), environment(who)); return 1; } int inventory_accessible(){ return !GetClosed(); } int inventory_visible(){ return !GetClosed(); } int SetOpen(int x){ if(x) Closed = 0; else Closed = 1; parse_refresh(); return Closed; } mixed direct_close_obj(object target){ return CanClose(this_player()); } mixed direct_open_obj(object target){ return CanOpen(this_player()); } mixed direct_open_obj_with_obj(object target, object tool){ return CanOpen(this_player(), tool); }