the-infocom-files / cutthroats

Cutthroats
3 stars 3 forks source link

Flooding WRECK-5 doesn't restart the I-CASE-LEAK timer #60

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago
>NORTH
Below Decks
This was once the supplies locker, with exits forward and up, and a door with a
sign on it in the aft bulkhead.
The water level in the glass case rises.

>UP
Middle Deck
This cabin was once a passenger compartment, although the fragile partitions
within have collapsed. The room is filled with air and a glance tells you why:
the closed door to aft kept the air and water pressures equalized, stopping the
flow of water up through the hole in the deck.

>OPEN DOOR
The door is now open.
Water rushes in through the open door and the hole in the deck, filling the room
to above your head, forcing the air out.

>WAIT
Time passes...

When the glass case is leaking, and you're under water, it will call the I-CASE-LEAK timer to increase the water level in the case. Entering WRECK-5 will disable the timer, if the room is still filled with air. See WRECK-5-F:

           (<==? .RARG ,M-ENTER>
        <COND (<AND <IN? ,GLASS-CASE ,PLAYER>
                <NOT ,WRECK-5-FLOODED>>
               <DISABLE <INT I-CASE-LEAK>>
               <COND (<AND <IN? ,HOLE-2 ,GLASS-CASE>
                   <NOT <IN? ,PUTTY ,GLASS-CASE>>>
                  <SETG WATER-IN-CASE 0>)>)>)>>

Opening the door floods the room, but it doesn't restart the timer. See AIRTIGHT-DOOR-F:

              (T
               <FSET ,AIRTIGHT-DOOR ,OPENBIT>
               <TELL-NOW ,AIRTIGHT-DOOR "open">
               <COND (<NOT ,WRECK-5-FLOODED>
                  <SETG WRECK-5-FLOODED T>
                  <COND (<EQUAL? ,HERE ,WRECK-5>
                     <COND (<AND
                         <NOT <FSET? ,DEEP-SUIT ,WORNBIT>>
                             <OR <NOT <FSET? ,MASK ,WORNBIT>>
                         <NOT <IN? ,AIR-TANK ,PLAYER>>
                         <NOT <FSET? ,WET-SUIT ,WORNBIT>>>>
                        <JIGS-UP
"Water rushes into the room, making you realize the value of your equipment.">)
                       (T <TELL
"Water rushes in through the open door and the hole in the deck,
filling the room to above your head, forcing the air out." CR>)>)
                     (T <TELL
"Water rushes through the door into the next room." CR>)>)>

If you take the leaking case into WRECK-6 or WRECK-10, the timer is restarted:

              (<COMPILER-SUCKS-EXP-2>
               <ENABLE <INT I-CASE-LEAK>>)>)>>

So something like that should presumably be added to AIRTIGHT-DOOR-F as well.

eriktorbjorn commented 4 years ago

One oddity about the leaking case that I didn't bother filing as a separate bug because it may be deliberate:

If you drill a hole in the case while you're underwater, the stamps are ruined immediately. See GLASS-CASE-F:

           (<VERB? DRILL>
        <COND (<AND <IN? ,PLAYER ,WRECK-5>
                <NOT ,WRECK-5-FLOODED>>
               <SETG WATER-IN-CASE 0>
               <TELL "The water pours out of the hole." CR>)
              (T
               <SETG WATER-IN-CASE 10>
               <DISABLE <INT I-CASE-LEAK>>
               <FSET ,STAMPS ,RMUNGBIT>
               <TELL "Water pours into the case, ruining the stamps." CR>)>
        <ADD-HOLE ,GLASS-CASE>)

However, going underwater while there is an unplugged hole in the case causes the water to leak in just as slowly as if the case was still just cracked. That seems a bit inconsistent.