the-infocom-files / amfv

A Mind Forever Voyaging
5 stars 2 forks source link

TICKET is always described as the movie ticket, even when not appropriate #6

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago
>LOOK
Train Station
The former North Central Station is a magnificent building from the earliest
part of the twentieth century. Unused for years, it has been restored as a
national landmark. The newsstands have been converted to souvenir stands, and
tourists stream through the station to buy tickets for a fifteen minute ride on
an authentic electric railroad train, which can be boarded to the east. You can
leave the station to the northwest or southwest.

>INVENTORY
You are carrying:
   a credit card
   a key
   a wallet

>BUY TICKET
You discover that all the rides are sold out for the rest of the day.

>EXAMINE TICKET
**Admit One**                  No.1471400
          Downtown Cinema Quad
           "Upbeat Patrol II"
Not refundable or exchangable. Management
reserves the right to refuse admission by
refunding the price of this ticket.

That's because the Train Station uses the same ticket object as the Cinema. TICKET-F, and TRAIN-STATION-F moves it to the room where it can be examined:

     <COND (<EQUAL? .RARG ,M-ENTER>
        <COND (<EQUAL? ,SYEAR 2041>
               <COND (<FSET? ,TICKET ,NDESCBIT>
                  <MOVE ,TICKET ,HERE>)>
               <PUTP ,TRAIN-STATION ,P?SDESC "Train Station">)
              (T
               <PUTP ,TRAIN-STATION ,P?SDESC "Church Lobby">)>)
eriktorbjorn commented 4 years ago

It's possible that TRAIN-STATION-F doesn't actually have to move the ticket object to the room. Buying tickets works without that trick at the Pickford and Wells theaters, as well as the Skybus Terminal. And in those locations, you can't examine the ticket the way you can in the Train Station, so it seems like it would solve the problem.

It needs testing, though.

eriktorbjorn commented 4 years ago

The only reason I've found so far for moving the ticket into the room is that TICKET-F handles the TAKE action:

           (<AND <VERB? TAKE>
             <FSET? ,TICKET ,TRYTAKEBIT>>
        <PERFORM ,V?BUY ,TICKET>
        <RTRUE>)

That probably won't work unless the ticket is present (and not already bought).