the-infocom-files / trinity

Trinity
24 stars 5 forks source link

The response to "INCINERATE object WITH SPLINTER" is missing an "e" #31

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago
>BURN AXE WITH SPLINTER
The splinter is phosphorescent. It couldn't possibly burn anything.

>INCINERATE AXE WITH SPLINTER
The splinter is phosphorescent. It couldn't possibly incinerat anything.

It says "incinerat" instead of "incinerate". That's probably because V-BURN-WITH tries to write the word you used, and dictionary words are, at most, nine characters:

<ROUTINE V-BURN-WITH ()
     <COND (<PRSI? SHARD>
        <TELL CTHEI " is phosphorescent. It couldn't possibly ">
        <PRINTB ,P-PRSA-WORD>
        <TELL " anything." CR>
        <RTRUE>)>
     <TELL "With " A ,PRSI "? " <PICK-NEXT ,YUKS> ,PERIOD>
     <RTRUE>>

I don't know if it would be possible to add a special case for "INCINERATE" here.

eriktorbjorn commented 4 years ago

I thought it would be harder, since both ADJ-USED? and NOUN-USED? are a bit hard to follow. But it seems like you can simply do this:

<ROUTINE V-BURN-WITH ()
     <COND (<PRSI? SHARD>
        <TELL CTHEI " is phosphorescent. It couldn't possibly ">
        <PRINTB ,P-PRSA-WORD>
        <COND (<EQUAL? ,P-PRSA-WORD ,W?INCINERAT>
               <PRINTC 101>)>
        <TELL " anything." CR>
        <RTRUE>)>
     <TELL "With " A ,PRSI "? " <PICK-NEXT ,YUKS> ,PERIOD>
     <RTRUE>>

Similar things are done elsewhere in the game, albeit for different reasons. See, for instance, V-ADJUST or RAIL-F.

eriktorbjorn commented 4 years ago

Of course, this kind of problem happens elsewhere too. I'll report the ones I think would be sensible to fix. Like this one:

>RECKLESSLY DROP COIN
[Adverbs (such as "recklessl") aren't needed to complete this story.]

This one is printed by BUZZER-WORD?:

     <COND (<INTBL? .WORD <REST .TBL 2> <GET .TBL 0>>
        <TELL "[Adverbs (such as \"">
        <PRINTB .WORD>
        <TELL "\") aren't needed">
        <TO-COMPLETE>
        <RTRUE>)>

The "buzzer words" that are too long to be printed this way are:

Since they are all the same length (10 characters), this could be fixed like this:

     <COND (<INTBL? .WORD <REST .TBL 2> <GET .TBL 0>>
        <TELL "[Adverbs (such as \"">
        <PRINTB .WORD>
        <COND (<EQUAL? .WORD ,W?CAUTIOUSLY ,W?RECKLESSLY ,W?CARELESSLY>
               <PRINTC 121>)>
        <TELL "\") aren't needed">
        <TO-COMPLETE>
        <RTRUE>)>