the-infocom-files / ballyhoo

Ballyhoo
5 stars 4 forks source link

If you drop the mouse from the tightrope, it doesn't run away #42

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago
>LOOK
You are standing, poised high above the arena floor, a couple of baby steps
across the tightrope.

>DROP MOUSE
It falls to the ground below.

The mouse will still be in the Performance Ring (though it's described as "You can hear faint scurryings of a rodent somewhere in the tent.") when you get down, and it can be picked up.

Usually, when you drop the mouse this happens:

>DROP MOUSE
The mouse scampers out of your hand, hits the ground running and darts out of
sight.

Dropping objects form the tightrope is handled in IDROP, but there's currently no special case for the mouse:

           (<AND <EQUAL? ,HERE ,TIGHTROPE-ROOM>
                 <NOT <PRSO? ,BALLOON ,WATER>>
             <NOT <EQUAL? ,PRSI ,PLATFORM ,BUCKET ,DRESS>>
             <NOT <VERB? GIVE>>
             <NOT <FSET? ,PRSO ,WORNBIT>>>
        <MOVE ,PRSO ,RING>
        <COND (<AND <PRSO? BUCKET>
                <IN? ,WATER ,BUCKET>>
               <MOVE ,WATER ,LOCAL-GLOBALS>)>
        <TELL "It falls">
        <COND (<OR <IN? ,NET ,RING>
               <IN? ,NET ,MUNRAB>>
               <TELL 
", luckily for the sake of whoever may later dive into the net,">)>
            <TELL " to the " D ,GROUND " below." CR>)

Perhaps simply move the mouse silently to LOCAL-GLOBALS in this case, i.e. it falls down and runs off when you're not looking.

eriktorbjorn commented 4 years ago

Similarly, if you drop the mouse from On the Tent it will slide off the tent and land either on or at the cage below. Again, this is handled by IDROP:

           (<AND <EQUAL? ,HERE ,ON-TENT>             
             <NOT <FSET? ,PRSO ,WORNBIT>>
             <NOT <EQUAL? ,PRSO ,PROD>>
             <OR <VERB? DROP>
             <AND <VERB? PUT-ON>
                  <PRSI? ,TENT>>>>
        <COND (<PROB 50>
               <MOVE ,PRSO ,ON-CAGE>)
              (T
               <MOVE ,PRSO ,NOOK>)>
        <TELL "It slides off the tent." CR>)

So here there's not even a case for the water and the balloon, so I managed to get this:

>DROP WATER
It slides off the tent.

>DOWN
You grasp the ladder firmly and climb down ...

Top of Cage
You're standing in semidarkness on top of a cage next to the elephant tent which
rises above. You can see, faintly, a rope ladder hanging from the top edge of
the tent.

You can see water and a balloon here.

(I had already dropped the balloon earlier. You get the idea.)

eriktorbjorn commented 4 years ago

Finally (?), there's V-THROW-OFF:

<ROUTINE V-THROW-OFF ()
     <COND (<AND <GETP ,HERE ,P?GROUND-LOC>
             <EQUAL? ,PRSI ,CAGE ,TENT ,PLATFORM>>
        <MOVE ,PRSO <GETP ,HERE ,P?GROUND-LOC>>
            <TELL "It falls to the ground below." CR>)
           (T
        <V-COUNT>)>>
>LOOK
Platform
You're standing on a small, unstable platform which is suspended high above the
arena floor by guy wires converging on it from all directions. A rope ladder
dangles from the platform and the tightrope stretches east to the opposite
platform.

>THROW WATER OFF PLATFORM
It falls to the ground below.

>DOWN
You grasp the ladder firmly and climb down ...

Performance Ring
This is the arena's oval-shaped performance ring which appears deathly quiet
without its circus atmosphere. Also missing is its safety net. A rope ladder
dangles to within a foot of the ground.

Just west lies the entrance to a large, round cage that completely encircles the
second of the two rings. To the south the big top's vaulted wing leads out into
the open air. The arena's rickety grandstands rise steeply north and east.

There's water here.
eriktorbjorn commented 4 years ago

Another related bug is if you set off the mouse trap (which you can do while it's in your inventory e.g. by trying to put it into the bucket). It will land and stay in the room, even if dropping things there should move them elsewhere. See BACKFLIP:

     <TELL "\"Snap!\" The ">
     <COND (<EQUAL? ,PRSO ,TRAP>
        <TELL D ,PRSO>
        <COND (<VERB? PUT>
               <TELL " touches the side of the " D ,PRSI " and">)>)
           (T
        <TELL D ,PRSI>)>
     <TELL " does a backflip ">
     <COND (<HELD? ,TRAP>
        <TELL "out of " D ,HANDS "s and ">)>
     <TELL "into the air." CR>
     <MOVE ,TRAP ,HERE>>
eriktorbjorn commented 4 years ago

Yet another related problem: In the Menagerie Nook, you can put the mouse on top of the cage, and it doesn't run away. This is handled by CAGE-F:

           (<AND <VERB? PUT-ON>
             <PRSI? ,CAGE>>
        <COND (<EQUAL? ,HERE ,ON-CAGE>
               <PERFORM ,V?DROP ,PRSO>
               <RTRUE>)
              (<EQUAL? ,HERE ,NOOK>
               <MOVE ,PRSO ,ON-CAGE>
               <TELL "Done." CR>)>)

You can also get the water out of the bucket and on top of the cage this way.