the-infocom-files/starcross

The mouse hole is moved into the red slot sometimes

Opened this issue · 6 comments

		      (.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.

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.

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.

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)?

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...

  • If the mouse is in the garage, it will drop its loot into the trash bin. After that, if the red or blue disk are in the trash bin, they will be moved to the garage. (I don't see anything to prevent the mouse from picking up the disks again, but I may be missing something.) While the mouse is in the garage, there is a 40% chance that it will leave (and go back to its previous location?).
  • Otherwise, if you are in the same room as the mouse there is a 30% chance that it will stay with you. (The message printed again depends on if the room is dark.)
  • Otherwise, if the mouse is carrying anything (I don't remember if it's possible to give it objects, or if you have to wait for it to pick them up) there is a 15% chance that it will go directly to the garage. If's when you're there to see it that the mouse hole is incorrectly moved to .HERE? (which is always 1 at this point) instead of ,HERE (which is the current room).
  • Otherwise, the mouse will move randomly (I haven't taken a closer look at exactly how MOVE-MOUSE works) and pick up anything it sees in its new location.

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.

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.

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.)