curiousdannii-testing / inform7-imported-bugs

0 stars 0 forks source link

[I7-2026] [Mantis 2063] Privately Named object appears when no object specified #58

Open curiousdannii-testing opened 2 years ago

curiousdannii-testing commented 2 years ago

Reported by : CJGidman

Description :

When the parser chooses an object in the room, it can choose a privately-named object. This is equivalent to the player accessing it directly. I don't think it should be able to do that.

Steps to reproduce :

This issue appears when running an example from the Inform7 recipe book. The example is #201 "Puff of Orange Smoke". Simply run the "test me" and then enter the x command. The system reports (the worldview) which is a privately-named backdrop. It then says, "There is nothing special about the worldview."

This Inform7 code will reproduce it though:
Bedroom is a room.
The worldview is a privately-named backdrop. It is everywhere. 

Bedroom

>x
(the worldview)
You see nothing special about the worldview.

>x worldview
You can't see any such thing.

Additional information :

I apologize if I am putting this in the wrong place. It is my belief that it is a bug somewhere, but I don't know where.

imported from: [Mantis 2063] Privately Named object appears when no object specified
  • status: Reported
  • resolution: Open
  • resolved: 2022-04-07T05:02:37+10:00
  • imported: 2022/01/10
curiousdannii-testing commented 2 years ago

557058:4c095ffd-6d6f-47ce-9e73-77c613347b86:

Comment by zarf :
I think what you're saying is that an object with no name values should not be selected as a disambiguation assumption.

(Privately-named is only relevant here because a publicly-named object always has at least one name value.)

I understand where you're coming from, but I don't think this is possible in general. The parser can't really tell when an object is un-referrable-to.

For example, you could have an object which has "Understand as... when..." or "Understand property as referring to..." lines. This would be referrable-to by an ordinary typed command even though it is privately-named.

My advice is: privately-named doesn't do what you want. If you don't want the player to refer to an object, don't put it in the room.

curiousdannii-testing commented 2 years ago

557058:4c095ffd-6d6f-47ce-9e73-77c613347b86:

Comment by CJGidman :
I understand, and I guess I don't really have much of a stake in this. None of my projects use it. I just stumbled on it while exploring the manual. The example I cited, "Puff of Orange Smoke", comes from the Inform 7 documentation. Perhaps the example should be adjusted then? Here is the full definition from the object copied from the example:

The worldview is a privately-named backdrop. It is everywhere. The spirit-world is a privately-named transparent closed unopenable container. It is part of the worldview.

The mechanism puts dead people in the spirit-world container while leaving their corpses lying around. Since worldview is a backdrop, you can always refer to the real person, because they are visible.

By messing around, I found that the parser can be helped along with this line:

Does the player mean doing something to the worldview: it is very unlikely.

So, I'll say no more about this.