[ LockSub; if (ObjectIsUntouchable(noun)) return; if (noun hasnt lockable) return L__M(##Lock,1,noun); if (noun has locked) return L__M(##Lock,2,noun); if (noun has open) return L__M(##Lock,3,noun); if (noun.with_key~=second) return L__M(##Lock,4,second); give noun locked; if (AfterRoutines()==1) rtrue; if (keep_silent==1) rtrue; L__M(##Lock,5,noun); ];