/* /lib/comp/seal.c * from the Dead Souls V Object Library * Composite component of a closeable and lockable thing * Created by Descartes of Borg 961221 * Version: @(#) seal.c 1.2@(#) * Last modified: 96/12/23 */ #include <lib.h> inherit LIB_CLOSE; inherit LIB_LOCK; varargs static mixed AddSave(mixed args...) { return ({}); } mixed CanLock(object who, string id) { mixed tmp = lock::CanLock(who); if( tmp != 1 ) { return tmp; } if( !GetClosed() ) { return "You cannot lock it while it is open."; } return 1; } mixed CanOpen(object who) { if( GetLocked() ) { return "It is locked!"; } else return close::CanOpen(who); } varargs mixed eventOpen(object who, object tool) { if( tool && GetLocked() ) { mixed tmp = eventPick(who, tool); if( tmp != 1 || GetLocked() ) { return tmp; } } if( GetLocked() ) { send_messages(({ "attempt", "find" }), "$agent_name $agent_verb to " "open $target_name, but $agent_nominative $agent_verb " "it locked.", who, this_object(), environment(who)); return 1; } return close::eventOpen(who, tool); } static private void create() { AddSave(close::GetSave() + lock::GetSave()); }