the-infocom-files / seastalker

Seastalker
3 stars 3 forks source link

Bly can tell you about the traitor, even as he's making his escape #66

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago
>ARREST GREENUP
Greenup turns and runs away. Then a crew member reports seeing Greenup running
behind the dormitory. "He's going to try to escape in the SCIMITAR, Torbjorn!"
Commander Bly adds: "Come to my office, Torbjorn! We can see him on the station
monitor! The docking tank control panel is there, too!"
(Aquadome office)
The Aquadome office is small but tidy, with a single door leading out and a good
view of the ocean through the window.

Tip follows you into the Aquadome office and begins looking out the window.
Commander Bly is here.
As you enter the office, Zoe closes the door and says:
"There's a traitor here at the Aquadome, Torbjorn! I'm not saying that just
because the Air Supply System was sabotaged. I discovered other evidence after
we talked on the videophone!"
(Your score just went up by 5 points!)

The condition for if Bly will tell you about the traitor is in BLY-OFFICE-F:

       (<AND <==? .ARG ,M-ENTER>
         <NOT <FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>>>
    <COND (<AND <IN? ,BLY ,BLY-OFFICE>
            <NOT ,GREENUP-ESCAPE>
            <NOT ,GREENUP-TRAPPED>
            <NOT ,GREENUP-CUFFED>
            <NOT ,ZOE-MENTIONED-EVIDENCE>>
           <FCLEAR ,BLY ,NDESCBIT>
           <TELL "As you enter the office, ">
           <ZOE-MENTIONS-EVIDENCE>)
          (<AND ,GREENUP-ESCAPE <NOT <IN? ,BLY ,BLY-OFFICE>>>
           <MOVE ,BLY ,BLY-OFFICE>
           <TELL "Zoe comes with you." CR>)>)

So she shouldn't say that if Greenup is escaping. This is what happens in V-ARREST as you make the arrest:

           <TELL
"We can see him on the "
D ,STATION-MONITOR "! The " D ,CONTROLS-OFFICE " is ">
           <COND (<NOT <EQUAL? ,HERE ,BLY-OFFICE>>
              <TELL "t">)>
           <TELL "here, too!\"" CR>
           <MOVE ,BLY ,BLY-OFFICE>
           <SETG WINNER ,PLAYER>
           <ENABLE <QUEUE I-GREENUP-ESCAPE 3>>
           <COND (<OR <EQUAL? ,HERE ,BLY-OFFICE> <GOTO ,BLY-OFFICE>>
              <SETG GREENUP-ESCAPE 1>
              <SCORE-OBJ ,GREENUP>)>
           <RTRUE>)>)

So it does set GREENUP-ESCAPE, but only after <GOTO ,BLY-OFFCE>. And it's the GOTO routine that calls the room's action routine to tell it that the player is entering:

    <COND (<==? ,WINNER ,PLAYER>
           <SETG HERE .RM>
           <COND (.V? <V-FIRST-LOOK>)>
           <APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
           <APPLY <GETP ,HERE ,P?ACTION> ,M-FLASH>)

So for it to work as was intended (?), it should probably set GREENUP-ESCAPE to 1 before ensuring that the player is in the office.