the-infocom-files / wishbringer

Wishbringer: The Magick Stone of Dreams
6 stars 2 forks source link

Some wishes don't work #8

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago

In the official Relase 69 and 23 (Solid Gold), I can do this:

>WISH FOR ADVICE
Wishbringer emits a violet flash of Magick.

You can hear a faint buzzing sound, like an overheard telephone, coming from the
conch shell.

>GET ADVICE
How can you do that to an abstract concept like "Advice"?

But in the version preserved here, I get:

>WISH FOR ADVICE
How can you do that to an abstract concept like "Advice"?

>GET ADVICE
Wishbringer emits a violet flash of Magick.

You can hear a faint buzzing sound, like an overheard telephone, coming from the
conch shell.

It's handled by these routines:

<ROUTINE ADVICE-F ()
     <COND (<NOT-WISHING? ,ADVICE>
        <RFATAL>)
           (<NOT <IN? ,CONCH-SHELL, PROTAGONIST>>
        <NOT-SATISFIED>
        <RFATAL>)>
     <FSET ,ADVICE ,TOUCHBIT>
     <FSET ,VULTURE ,RMUNGBIT>
     <INC SPELLS>
     <ENABLE <QUEUE I-SHELL-TALK -1>>
     <TELL ,GAME " emits a violet flash of Magick." CR>
     <RFATAL>>
<ROUTINE NOT-WISHING? (OBJ)
     <COND (<VERB? WISH>
        <TELL "How can you do that ">
        <COND (<EQUAL? .OBJ ,PRSO>
               <TELL "to">)
              (T
               <TELL "with">)>
        <TELL " an abstract concept like \"" D .OBJ "\"?" CR>
        <RTRUE>)
           (T
        <RFALSE>)>>

Which seems strange, because NOT-WISHING? prints the fail message and returns true if you are making a wish. Here's what txd produces for Relase 69:

Routine R0955, 1 local (0000)

       JE              G84,#55 [TRUE] RFALSE
       PRINT           "How can you do that "
       JE              G6a,L00 [FALSE] L0001
       PRINT           "to"
       JUMP            L0002
L0001: PRINT           "with"
L0002: PRINT           " an abstract concept like ""
       PRINT_OBJ       L00
       PRINT_RET       ""?"

Which seems to fit a lot better with the version of the routine that's preserved in the Solid Gold source:

<ROUTINE NOT-WISHING? (OBJ)
         <COND (<NOT <VERB? WISH>>
                <TELL "How can you do that ">
                <COND (<EQUAL? .OBJ ,PRSO>
                       <TELL "to">)
                      (T
                       <TELL "with">)>
                <TELL " an abstract concept like \"" D .OBJ "\"?" CR>
                <RTRUE>)
               (T
                <RFALSE>)>>
eriktorbjorn commented 4 years ago

The following wishes use the NOT-WISHING? routine, and therefore appear to have the same problem:

So that's five of the seven wishes. I'd say that's a pretty serious glitch.