This is off the top of my head. I'm not sure it'll work as you want it
to, but at least you could try it.
Define "show" so that it works both with one and two objects, i.e. define
actions Show (with only a direct object) and ShowTo (with two objects),
define verDoShow, verDoShowTo and verIoShowTo etc.
This will have the effect of performing different actions depending
on whether you type "show gizmo to grue" or just "show gizmo".
Now, have doShow(actor) do something like
if (not Me.isIn(magicRoom)) askio;
If I remember correctly, this will cause the command
"show gizmo" to give the reply "to what do you want to show the gizmo",
*unless* you're in magicRoom.
Magnus