Closed eriktorbjorn closed 1 year ago
That is a tough one. Do you happen to have any save files from before or after this happens?
EDIT: Sounds as if it is this quip being spoken out of turn, but I have no Idea why: https://github.com/i7/counterfeit-monkey/blob/8537e0261cb5832faae1ef4dd9d8c68a57774537/Counterfeit%20Monkey.materials/Extensions/Counterfeit%20Monkey/Animal%20Actions%20and%20Human%20Conversation.i7x#L4319-L4320
When a quip is queued "as immediate obligatory" it is supposed to clear the queue and be displayed on the same turn, but it seems like it could break if there are several immediate obligatory quips queued at once.
EDIT 2: Do you remember anything you did before if it happened? Did you depluralize the modems or the odes by removing their s, or restore the modems with the gel?
It is possible that 2db92a2 fixes this, but it is hard to tell without a way to reproduce the bug.
Perhaps the compiler interpreted "if the odes is seen" in the line quoted above as "if an ode is seen" rather than the intended "if the odes-book is seen", but I'm not clear on how or if that caused this bug.
I think I managed to stumble over a way to reproduce what I originally saw. (And it may in fact have been the only glitch I saw, because when I re-read one message in this attempt I realized that I was just misinterpreting it.)
Using the attached savegame, cm7.zip, I entered the following commands:
E SAY WHO WE ARE POINT S-REMOVER AT PREAMPS POINT P-REMOVER AT PREAMP POINT M-REMOVER AT MODEMS POINT S-REMOVER AT ODES PUT GEL ON ODE POINT M-REMOVER AT MODEMS PUT PASTE ON REAM PUT PASTE ON ODES ASK LENA ABOUT SLANGO ASK LENA ABOUT SLANGO WAIT
The response to the final command was:
> WAIT Time passes.
Lena regards the solitary modem unsympathetically. “Well, it’s shrunk,” she says. “But that doesn’t make it look like what it isn’t.”
We want to thank Lena.
Even though the modem was no longer present.
My only guess (from an extremely limited understanding of Inform 7) is that Threaded Conversation.i7x seems to only delete immediate optional quips when superseded by immediate quips, while immediate obligatory ones remain?
But what's even odder, and which I didn't even notice until now, is that I never depluralized the modems - at least not this time around - so why is she complaining about a singular modem in the first place?
I don't dare look any further because I really don't want to be spoiled.
Right, this is kind of serious, and means there are potentially a lot of undiscovered bugs related to visibility checks.
Any time a current quip mentions a thing, that thing will apparently be marked as visible. This makes visibility checks in general pretty flaky. I've changed the ones related to this particular bug to instead check whether something is enclosed by the current location, which seems to fix it.
Perhaps we should do the same with every visibility check in the game, but that is likely to affect performance.
I'll leave it to you to write a more generic bug report about that, if needed.
I have to say it feels odd to have performance issues in a text adventure in this day and age, but I understand that Inform 7 games are potentially doing a lot in the background.
If it helps, I can pretend to feel really bad about finding these bugs. :stuck_out_tongue_winking_eye:
Nah, it's always fun to investigate and fix these things. Thanks for reporting it!
Correction: Things mentioned by quips are generally not marked visible. After doing some tests, I've only seen it happening in this particular case. Which is reassuring in a way, but means I'm still at a loss to explain the root cause of this bug.
One odd thing is that if the bug happens seems to depend at least in part on the last command.
Last commands where I saw the bug:
Last commands where I didn't see the bug:
And once the bug didn't show up, it seems to stay gone?
EXAMINE, INVENTORY and SCORE are considered "meta commands" that do not advance in-game time, so it is no surprise that they don't trigger the bug, as nothing is supposed happen after using them.
It is all very mysterious. In a full playthrough of about 500 turns, conversation subjects seem to randomly become marked as visible once or twice, for a single turn only. There is no obvious pattern.
Ah, I didn't realize EXAMINE was also a meta command. So I guess the modem popped out of view even without time passing (possibly by the Scope Caching extension) and the only mystery is why it became visible in the first place?
It'd be interesting to know exactly when that happens, but it seems it's never visible enough for me to be able to examine it in my test case above.
The culprit is almost certainly the Scope Caching extension. I has caused a lot of bugs over the years, and I should not have included it in the first place. It should definitely be removed, but it will be painful.
This is going to be one of those annoying bug reports, because I can't reproduce it now.
However, I could have sworn I saw Lena (at the Aquarium Bookstore) make a suggestion about what I should do about the contraband that I had already done. (I think I saw her mention the modem, when it had already been turned into either ode or odes.)
I tried looking at the code (cautiously to avoid spoilers), and I see there is a lot of "if <something> queue <complaint>". Is it at all possible that it will queue several complaints during one move, in such a way that when a complaint is finally displayed the source of it has already been remedied?
Feel free to close this bug report if I'm spouting nonsense.