PDP-10 / its

Incompatible Timesharing System
Other
834 stars 80 forks source link

Cannot fix global object bugs in Muddle Zork which are fixable in Confusion Zork #2256

Open AlexProudfoot opened 8 months ago

AlexProudfoot commented 8 months ago

Pull request https://github.com/heasm66/mdlzork/pull/30 doesn’t work when applied to https://github.com/PDP-10/its. It seems that any new GOBJECTS added to the game can't be successfully turned into RGLOBALS. See https://github.com/heasm66/mdlzork/pull/59. I have, unfortunately, found it necessary to give up on this since I have no idea what is going on.

larsbrinkhoff commented 8 months ago

@eswenson1 is our Muddle and Zork expert. What do you think?

eswenson1 commented 8 months ago

@AlexProudfoot Can you explain why adding the "DWIND" ID to the DWINDOW object is going to fix the issue? I don't see any reference to "DWIND" in the code. Only to the existing ID, "WINDO". I would think there would need to be a reference to "DWIND" somewhere in the code in order for this to have any meaningful effect.

AlexProudfoot commented 8 months ago

As I understand it, although I’m by no means an expert, the identifiers in question are loaded into the parser’s vocabulary table when the game starts and matched (or not) to the player’s commands so I would not expect to see references elsewhere in the source code.

I believe “WINDO” is elsewhere in the source code because there is at least one other window (the kitchen window) in the game.

It’s not that https://github.com/heasm66/mdlzork/pull/30 is going to fix the problem. It has fixed the problem.

The solution is based on the CPWALL objects, each of which has a unique first noun entry. I reasoned that if DWINDOW had the same kind of definition, it might fix the problem.

Why this works in Confusion but not in Muddle eludes me.

eswenson1 commented 8 months ago

There are references to “WINDO” in the code, but none to “DWIND”. For your change to the object to have any effect, you’d need to have some other code reference “DWIND”. Does your code reference “DWIND” anywhere?

I don’t see why anyone would ever type “dwind”, or a word with that prefix to the parser? In any case, how would it fix anything?

AlexProudfoot commented 8 months ago

With respect, as I explained, the change does have the desired effect when using Confusion. The nouns “DWIND” and “WINDO” don’t have to be referenced elsewhere in the code.

I think (that is I’m not certain since I’m no expert) that each object must have a unique list of nouns. The point of “DWIND” is to provide a unique list of nouns, not to allow the player to type commands like “look at dwind”.

eswenson1 commented 8 months ago

Ok. I’ll take your word for it. I’ll apply the fix and debug the original problem if it still occurs.

AlexProudfoot commented 8 months ago

Ok Eric. Good luck.

AlexProudfoot commented 8 months ago

Here is the output from the Confusion patched version of Zork after fixing the "WINDO" GOBJECT.

Untitled