the-infocom-files / starcross

Starcross
5 stars 3 forks source link

"PUT <object> ON DISK" vs "PUT <object> IN DISK" #48

Open eriktorbjorn opened 5 years ago

eriktorbjorn commented 5 years ago

In this example, the red disk is on the ground and I'm holding the blue disk.

>PUT SILVER ROD ON RED DISK
Nothing happens.

>EXAMINE RED DISK
Sitting on the red disk is:
  A silver rod

>TAKE SILVER ROD
Taken.

>PUT SILVER ROD IN RED DISK
Done.

>EXAMINE RED DISK
Sitting on the red disk is:
  A silver rod

So the outcome of putting objects in or on the disk is the same, but there are different messages for it. It gets worse.

>PUT BLUE DISK IN RED DISK
Done.

>EXAMINE RED DISK
Sitting on the red disk is:
  A blue disk

>GET BLUE DISK
The stuff on the disk falls to the ground.
Taken.

>PUT BLUE DISK ON RED DISK
The red disk activates as the blue disk touches it. It disappears for a fraction
of a second, then a flash of light fills the room as both disks explode!

Now, I agree that "PUT object ON DISK" is the correct syntax here. But since the outcome of both "PUT ON" and "PUT IN" is to move the object to the disk, they should perhaps be handled the same way?

And it should be easy to do, too. The default action for "PUT ON" is to simply redirect it to "PUT":

<ROUTINE V-PUT-ON ()
     <PERFORM ,V?PUT ,PRSO ,PRSI>>

So simply checking for PUT instead of PUT-ON in DISK-FCN should be ok.

There are only three cases in the game where it checks for PUT-ON and not PUT. Two of them are in DISK-FCN, and one is in FF-FCN.

I don't know if FF-FCN needs fixing. There don't seem to be any bad side effects to that one:

>PUT SILVER ROD ON GLOBE
The blue rod sticks out of the globe, preventing you from placing the silver rod
there.

>PUT SILVER ROD IN GLOBE
There's no room.
eriktorbjorn commented 5 years ago

I think the reason you can put things in the disks is that they have a CAPACITY, while the globe doesn't.

I can't see that "PUT object ON DISK" checks for capacity, so maybe removing the capacity from the disks would have the same effect there? I haven't tried it.

eriktorbjorn commented 5 years ago

On the other hand, there is a special case for if the disks are inside each other:

>DROP RED DISK
The red disk drops to the ground. There is an almost inaudible click as it comes
to rest.

>PUT BLUE DISK IN RED DISK
Done.

>STAND ON RED DISK
There is a loud click as you step on the disk, and then a moment of
disorientation.
There is a tremendous explosion as the disk tries to transport the other disk
into itself. You are, unfortunately, intimately part of the explosion.

   ****  You have died  ****

But it still seems strange to me...