the-infocom-files / sorcerer

Sorcerer
3 stars 3 forks source link

"FOLLOW STATUE" doesn't work #19

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago

If you cast MALYON on the statue, you're supposed to get a custom response if you try to follow it. See STATUE-F:

           (<AND <VERB? FOLLOW>
             ,STATUE-FOLLOW>
        <TELL "The King moved too quickly to follow." CR>)>>

But it doesn't work:

>MALYON STATUE
The statue transforms into a living figure, probably a King if the royal attire
is any clue. The King seems angry, and quickly settles his wrathful gaze on you.
He bellows "Guards! Throw this trespasser into the glass maze! Guards! ...
GUARDS!!!" When the guards fail to respond, the King becomes livid, his voice
rises to an incoherent squeak, and flecks of foam spit from the corners of his
mouth. Finally, eyes bulging with rage, he storms out of the room.

>FOLLOW STATUE
That would be a waste of time.

It seems to be because I-STATUE-UNFOLLOW is called at the end of the current move, not the next one. So the STATUE-FOLLOW flag is cleared before you even have a chance to try and follow the statue.

In which case, the simple solution is to change <ENABLE <QUEUE I-STATUE-UNFOLLOW 1>> in STATUE-F to <ENABLE <QUEUE I-STATUE-UNFOLLOW 2>>.

(There are a couple of other "unfollow" timers, but the only one I've had the chance to test yet is I-MAILMAN-FOLLOW, and that one does work as intended.)

eriktorbjorn commented 4 years ago

I-TWIN-UNFOLLOW seems to be broken, though not for the same reason. There are actually two cases in I-OLDER-SELF for your older self diving into the chute when you're in the same room as him, but only one of them sets the TWIN-FOLLOW variable:

               <COND (<IN? ,SPELL-BOOK ,OLDER-SELF>
                  <MOVE ,SPELL-BOOK ,YOUNGER-SELF>
                  <FSET ,SPELL-BOOK ,TRYTAKEBIT>
                  <MOVE ,OLDER-SELF ,DIAL>
                  <MOVE ,VARDIK-SCROLL ,DIAL>
                  <SETG TWIN-FOLLOW T>
                  <ENABLE <QUEUE I-TWIN-UNFOLLOW 1>>
                  <TELL CR
"Your look-alike dives into the lower chute and slides out of view." CR>)

I have yet to figure out how to trigger that one, perhaps because I've been putting off testing this part of the game. The one I always see is this:

        <COND (<AND <EQUAL? ,HERE ,COAL-BIN-ROOM>
                <IN? ,OLDER-SELF ,HERE>>
               <TELL CR
"Your older self dives into the lower chute." CR>)>
eriktorbjorn commented 4 years ago

It seems that you get the "Your older self ..." message if you don't give him your spell book until he asks for it, or don't give it to him at all. In this case, "FOLLOW OLDER SELF" doesn't work.

If you give it to him before he asks, you get the "Your look-alike ..." message, and "FOLLOW OLDER SELF" works as expected.