Open eriktorbjorn opened 5 years ago
That is, instead of
(<AND <==? .RARG ,M-BEG>
<VERB? TAKE>
<==? ,PRSO ,UNDER-GLOBE>>
<SETG UNDER-GLOBE <>>
<RFALSE>)>>
it could use something like this:
(<AND <==? .RARG ,M-END>
,UNDER-GLOBE
<NOT <IN? ,UNDER-GLOBE ,HERE>>>
<SETG UNDER-GLOBE <>>
<RFALSE>)>>
I've given it a quick try, and it seems to work.
I just noticed that there is code in ITAKE
that looks like it's meant to handle this bug:
<COND (<==? ,PRSO ,UNDER-GLOBE>
<SETG UNDER-GLOBE <>>
<FCLEAR ,PRSO ,NDESCBIT>)>
However, it's only run in the case where you're carrying so many objects that you fumble and drop them.
That's because
UNDER-GLOBE
is cleared byFF-ROOM-FCN
handling theTAKE
action. Implicit taking bypasses that.Perhaps it could use
M-END
to have the room's action routine check each turn if the object is still in the room instead?