Visibility of Persons

Say I want to make a ghost kind.
“A ghost is a kind of person.”
I would have expected to be able to say “A ghost is not visible” or “A ghost is not usually visible”.
Inform 7 was not impressed. Apparently, you cannot set the visibility of something before any scenes have started. What do?

“Visible” by default means “the player can see this thing”. And that’s not something you can set directly—it’s computed based on other values. Something is visible if it’s in the same room as the player, not enclosed in an opaque container, in the light, etc, and making it invisible could involve changing any of those facts.

What are you hoping to achieve by making it “not visible”?

I had no particular goal, I was just tinkering with properties to see if I understood them but now that I’ve tried it and failed, how might I make a person that’s not always visible? I suppose I could create and move the person to the room whenever certain conditions are met, such as switching on a “ghost detector”.

It is true that the best way to make an object completely non-interactable to the player is to keep it off-stage.

More specifically: in Inform “visible” already means “in scope” and interact-able in various manners and is a reserved word. I believe you could define your ghost as “spectral” (A person can be spectral. The Ghost of John is spectral.) or some other adjective that Inform doesn’t already use for your purposes of limiting interaction.

Then you can write your rules as usual.

Check examining a spectral thing: say "The air shimmers, but [the noun] [are] clearly not present as you'd normally imagine." instead.