the-infocom-files / leathergoddesses

Leather Goddesses of Phobos
4 stars 3 forks source link

You can stain the white circle even after turning the stain into sain #28

Open eriktorbjorn opened 3 years ago

eriktorbjorn commented 3 years ago
>EXAMINE CIRCLE
It looks like every other white circle you've ever seen.

>PUT BLACK STAIN IN MACHINE
Done.

>CLOSE MACHINE
Okay, the odd machine is now closed.

>TURN ON MACHINE
Sparks! Explosions! "Pockita pockita pockita FEEP!" exclaims the machine.

>OPEN MACHINE
Opening the odd machine reveals a can of black sain.

>STAIN CIRCLE
You have no stain.

At this point, you can try:

>STAIN CIRCLE WITH SAIN
The circle is once again black!

This is because V-STAIN only checks UNTEEDBIT on STAIN for "STAIN object", not for "STAIN object WITH object":

<ROUTINE V-STAIN ()
     <COND (<NOT ,PRSI>
        <COND (<AND <ULTIMATELY-IN? ,STAIN>
                <NOT <FSET? ,STAIN ,UNTEEDBIT>>>
               <APPLY-STAIN ,PRSO>)
              (T
               <TELL "You have no stain." CR>)>)
           (<EQUAL? ,PRSI ,STAIN>
        <APPLY-STAIN ,PRSO>)
           (T
        <IMPOSSIBLES>)>>

You can also try this:

>POUR SAIN ON CIRCLE
Imposterous!

>POUR STAIN ON CIRCLE
The circle is once again black!

That's because HOLE-F only checks which word you used, not UNTEEDBIT, and removing the T from an object doesn't change its synonyms:

           (<AND <VERB? POUR RUB PUT-ON>
             <NOUN-USED ,W?STAIN ,STAIN>
             <PRSO? ,STAIN>>
        <APPLY-STAIN ,HOLE>)

I think those are the only ones. There are a couple of cases in STAIN-F itself, but that one does check UNTEEDBIT.