DavidKinder / Windows-Frotz

Z-code interpreter for Windows, based on Stefan Jokisch's Frotz interpreter core.
http://www.davidkinder.co.uk/frotz.html
GNU General Public License v2.0
58 stars 12 forks source link

Fatal error on simple command- help person. #30

Open JonCorso opened 4 months ago

JonCorso commented 4 months ago

(new here, made account to report this, so apologies if doing it incorrectly)

I just started Seastalker Rev 16, 850603. Did the first few commands - enter name, turn on phone, adjust knob, pick up microphone, turn it on, ask bly about problem. Everything was fine so far. Next command was help Bly and it brings up a Frotz Fatal Error "Illegal Attribute" dialog box. Clicking the only choice Ok closes the program completely. Tested and reproduced multiple times. You can even type help Tip (tip is your crewmate) as your first command and it will crash.

Looks like this error goes back a long way. I tried another a different win frotz (not yours) and a dos based frotz and they all crashed the same way.

Issue is not present in the original game. Ran the Masterpiece release with it's normal interpreter under Dosbox-x and help Tip or help Bly just brings up a (said to Tip) How do you want to do that? message.

Steps to reproduce: Start the game, enter your first and last name, type Help Tip as your first command.

DavidKinder commented 3 months ago

This looks like a bug in Seastalker. Many of the Infocom games had minor bugs in them, where the game file broke Infocom's own rules on what the games could do. In this case, Seastalker is trying to access a non-extistent property of an object, which is against the rules. Infocom's own interpreters tended to be quite lax about checking these rules, which is why these bugs went unnoticed at the time.

You can avoid the error in Windows Frotz by opening the options dialog, going to the Interpreter tab, and making sure that the "Ignore runtime errors" option is on. That said, Frotz does include some workarounds for known errors in Infocom games, and it may be possible to add a workaround for this, too.