/* /lib/obj/storage.c * From the Dead Souls Object Library * The standard object for storing things * Created by Descartes of Borg 940212 * Version: @(#) storage.c 1.7@(#) * Last modified: 96/12/31 */ #include <lib.h> inherit LIB_HOLDER; inherit LIB_ITEM; inherit LIB_SEAL; private int CanClose = 1; private int CanLock = 0; int GetCanClose() { return CanClose; } int SetCanClose(int x) { CanClose = x; } int GetCanLock() { return CanLock; } int SetCanLock(int x) { return SetCanClose(CanLock = x); } void SetKey(string key) { /* for backwards compat */ SetKeys(key); } int GetOpacity() { if( GetClosed() ) { return holder::GetOpacity(); } else return 0; } int GetRadiantLight(int ambient) { return item::GetRadiantLight(ambient) + holder::GetRadiantLight(ambient); } static mixed array AddSave(mixed array vars) { return item::AddSave(vars); } int SetSaveRecurse(int x) { return item::SetSaveRecurse(x); } mixed CanClose(object who, string id) { if( !GetCanClose() ) { return 0; } else { return seal::CanClose(who, id); } } mixed CanGetFrom(object who, object item) { mixed tmp = holder::CanGetFrom(who, item); if( tmp != 1 ) { return tmp; } if( GetClosed() ) { return capitalize(GetDefiniteShort()) + " is closed."; } return 1; } mixed CanLock(object who, string id) { if( !GetCanLock() ) { return 0; } else { return seal::CanLock(who, id); } } mixed CanOpen(object who, string id) { if( !GetCanClose() ) { return 0; } else { return seal::CanOpen(who, id); } } mixed CanPick(object who, string id) { if( !GetCanLock() ) { return "It isn't lockable in the first place."; } else { return seal::CanPick(who, id); } } mixed CanPutInto(object who, object what) { mixed tmp = holder::CanPutInto(who, what); if( tmp != 1 ) { return tmp; } if( GetClosed() ) { return capitalize(GetDefiniteShort()) + " is closed."; } return 1; } varargs mixed CanShowInterior(object who, object target) { if( GetClosed() ) { return capitalize(GetDefiniteShort()) + " is closed."; } else return holder::CanShowInterior(); } mixed CanUnlock(object who, string id, object key) { if( !GetCanLock() ) { return 0; } else { return ::CanUnlock(who, id, key); } } int eventReceiveObject(object ob) { if( GetClosed() ) { return 0; } return holder::eventReceiveObject(ob); } void create() { AddSave( ({ "CanClose", "CanLock" }) ); holder::create(); item::create(); ::create(); SetPreventPut("You can't put this in there."); } int inventory_accessible() { return seal::inventory_accessible(); } int inventory_visible() { return (seal::inventory_visible() || holder::inventory_visible()); }