Hi, I just tried examining the contents of a closed, opaque, unopenable container and was surprised that it worked! (Standard library version 0.44.)
Here is the environment:
#player
(current player *)
(* is #in #room)
#room
(room *)
#box
(name *)
mystery box
(descr *)
A mysterious box.
(container *)
(closed *)
(opaque *)
(* is #in #room)
(appearance *)
A mystery box is here. It is (if) (opaque *) (then) opaque (else) transparent (endif).
#contents
(name *)
contents you shouldn't know about
(descr *)
You should never see this.
(* is #in #box)
And the behavior:
A mystery box is here. It is opaque.
> open box
The mystery box doesn't open.
> examine contents you shouldn't know about
You should never see this.
My understanding was the (opaque $)
predicate was supposed to prevent things like this? Is it broken or am I doing something wrong?