the-infocom-files / starcross

Starcross
5 stars 3 forks source link

The mouse hole is moved into the red slot sometimes #57

Open eriktorbjorn opened 5 years ago

eriktorbjorn commented 5 years ago
              (.HERE?
               <MOVE ,MOUSE-HOLE .HERE?>
               <COND (,LIT
               <TELL
"The mouse disappears into a heretofore unnoticed hole in the wall, which
closes and becomes nearly invisible." CR>)>)>)

I had turned of Frotz's monitoring of object movement to be able to keep track of the mouse, when I found that it was moving the mouse hole into the red slot. (The red slot is object number 1 in the game.) So that should almost certainly be <MOVE ,MOUSE-HOLE ,HERE> instead.

arcanetrivia commented 3 years ago

Do you think it's possible the game could get softlocked this way? I've been working on writing a personal walkthrough for Starcross and have been unable to finish because the mouse isn't behaving the way it apparently should, so I can never get the green rod. I've waited dozens of turns after dropping a teleportation disk and it never shows up, nor if I leave that room and come back later, has the disk disappeared; or, if I chance to come across the mouse and immediately drop a disk, in which case it does pick it up, I've similarly followed the mouse around for dozens of turns and it never gives any sign of going into a hole. Both the Invisiclues and other walkthroughs make me feel like it should not be that difficult.

eriktorbjorn commented 3 years ago

I don't see anything in the code that tests the location of MOUSE-HOLE. It's just an object you can interact with.

I'm not sure what would cause your problem, though. The mouse daemon should keep running throughout the game, unless you vaporize it with the ray gun.

If you're using Frotz, or similar, I guess you could turn on the "watch object movement" feature (the -o command line, or Alt+D during gameplay works, at least in the Linux ncurses version) to check that the mouse is still moving around.

arcanetrivia commented 3 years ago

OK. I can see that the mouse is moving around and apparently I have just consistently been unlucky with regard to what random directions it is picking and/or how many moves elapse before it finally decides to move_obj maintenance mouse Garage. At least now I have some, ah, intelligence information with which to hunt down the mouse more quickly, although it's usually still taking forever to go through the hole to the Garage. (And yes, the game is sometimes moving the mouse hole to the red slot. I have a theory, but haven't been able to catch this happening enough times to be sure, that it may only happen if I am in the room at the time.)

I poked through actions.zil to see what governs the behavior of the mouse and the hole, but I'm not quite sure what I'm looking at - is it just that there's only a small probabilty that it will go through the hole on any given turn?

Is it odd that there's remove_obj mouse hole every time the mouse moves, but not move_obj mouse hole? Like, why is it repeatedly removing something that hasn't even been moved anywhere? For example:

wait Time passes... @remove_obj mouse hole @move_obj maintenance mouse Red Hall The maintenance mouse glides happily away, looking for new dirt to conquer.

wait Time passes... @remove_obj mouse hole @move_obj maintenance mouse Blue Hall

wait Time passes... @remove_obj mouse hole @move_obj maintenance mouse Blue Hall @remove_obj mouse hole @move_obj maintenance mouse Melted Spot

wait Time passes... @remove_obj mouse hole @move_obj maintenance mouse Garage

Or is this just a kind of garbage collection (if you'll forgive the pun)?

eriktorbjorn commented 3 years ago

If I understand it correctly, I-MOUSE is called every two turns. Every time, it will try to pick up objects in the room. If it picks up objects, and it's not in the garage, it will tell you that it did so. (The exact message depends on whether or not the room is dark.) After that...

I-MOUSE returns true if the mouse is still in the same room as you. I take that to mean that if you were waiting (which causes multiple turns to pass), that wait is interrupted.

arcanetrivia commented 3 years ago

You can't GIVE things to the mouse but you can PUT things in its collecting tray.

15% is a pretty low chance. No wonder I was getting frustrated.

BTW, I apologize for the massive number of notifications you must have got from me making all these comments a couple days ago. I get excited about fiddly stuff like this.

eriktorbjorn commented 3 years ago

Actually, it's quite nice to see that someone else cares about these bug reports. Might help give me the motivation I need to continue testing Moonmist. (It's not my one of my favorite games, and because of how it's written I often run into stuff that I realize will have to wait a bit longer before I can test them properly.)