/* /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(){ 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); }