curiousdannii-testing / inform7-imported-bugs

0 stars 0 forks source link

[I7-1963] [Mantis 1999] concealment relation encompasses too much #121

Closed curiousdannii-testing closed 2 years ago

curiousdannii-testing commented 2 years ago

Reported by : DrFell

Description :

The relation "X conceals Y" does not imply "X encloses Y".

Steps to reproduce :

The Lounge is a room. Mr Smith is a man in the lounge.

For deciding the concealed possessions of Mr Smith: yes.
Instead of examining Mr Smith: say "Mr Smith is concealing [A list of things concealed by Mr Smith]."

Mr Smith holds some contraband.

Test me with "examine Mr Smith"

Additional information :

Test me produces...

Yourself, Mr Smith and some contraband

It may be that this is intended behaviour; if so then Section 3.24 of Writing with Inform and Example 225 in the Recipe Book are both rather misleading.

Section 3.24 says:
Here we make the Cloaked Villain invariably conceal anything she is holding or wearing:

Rule for deciding the concealed possessions of the Cloaked Villain: yes.

(In fact this makes the Cloaked Villain conceal every thing in the entire game.)

Example 225 "Interrogation" is too simple (just one room) to throw up problems in play, but we only need to modify it by adding a second room with an NPC in it to break the mechanics.

Add to the source:
The Antechamber is south of the Interrogation Chamber.
Dana is a person in the antechamber.
Test Dana with "go south / wave wand".

>Test Dana
(Testing.)

>[1] go south

anteroom
You can see Dana here.

>[2] wave wand
The wand glows green. Immediately you see on the monitor a quantity of plastic explosive (carried by Brian) and a microfilm (carried by Janine).

imported from: [Mantis 1999] concealment relation encompasses too much
  • status: Closed
  • resolution: Resolved
  • resolved: 2022-04-11T00:45:58+10:00
  • imported: 2022/01/10
curiousdannii-testing commented 2 years ago

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

Comment by zarf :
Confirmed.

The obvious soution is to add a check in TestConcealment() to make sure IndirectlyContains(A, B) before proceeding to the activity.

curiousdannii-testing commented 2 years ago

61eedb62875fc10070240916:

Fixed via this commit: https://github.com/ganelson/inform/commit/4a6c65d0117815d1611ba5ffb2c736d719f8d6dc

Comment by Graham Nelson:
Using Zarf's proposed fix. This is a change I make with some little trepidation, since it does change the definition of "concealment" in a fundamental way. But I agree that (a) this is better, (b) this is what the documentation implied all along, and (c) it is unlikely that anyone relied on the previous behaviour.