drop vs doff vs take, etc. - TADS3.1

I’m having problems using the doff and/or drop commands. This especially true when I’m trying to do things while wearing my backpack on my back. I believe that I should be able to take a pack, being worn into my hands and not have to drop it to the ground when I wish to take certain items out of it. That does not seem to be always true. It just seems to be more realistic to me. I will explain this further if somebody asks. It just seems that I should be able to drop or doff or take anything that is either in my hands, in the pack, or in my pockets. Is there some way for take, drop and doff commands to interact.

If I recall correctly, you set up the pack as an always-worn item. In that situation, you won’t be able to hold it. It will always be either worn or on the ground.

Even so, you shouldn’t have to change anything in order to take things from the pack. If the pack is open (assuming it’s an Openable), you should be able to take things out and put things in without restriction.

Reading your post, I can’t quite tell whether you’re complaining because you have to remove the pack in order to extract certain items from it, or whether you WANT that to be the behavior with respect to certain items.

There are many, many ways in which the Take, Doff, and Drop actions can interact. You’ll need to be more specific about what you’re trying to achieve.

I’m sorry for taking so long to answer your reply to this post. I’ve been very busy lately. I’ve haven’t been able to research 'drop, doff, get, take, etc.) as they apply to ‘Wearable and AllwaysWorn’ oblects but I’ll get to it soon.

RonG

I’ve been doing some experiments with the verbs in this title. With my experience, I don’t see any easy solutions to what I want to do. My next question is would it be possible to change an object from ‘wearable’ to ‘alwaysworn’ (And vice-versa) during actual game play? If so, This would solve my so-called object handling desires.

RonG

[Board SQL malfunction caused the same message to be posted twice…]

Assuming you’ve defined AlwaysWorn as a class, you can do that using setSuperclassList, like this:

myObj.setSuperclassList([AlwaysWorn]);

Note the square brackets – this method wants to see a list object as the argument.

That said, this function may not do what you’re hoping for, unless your object is simply inheriting the handling of WearAction, DoffAction, and TakeAction unchanged. If you’ve written any special code for these actions in the object, changing the superclass probably won’t affect how the actions are handled. (Depending, of course, on how you’ve written your new action handlers.)

setSuperclassList is a tool for extreme cases. It’s not often needed. Rather than resorting to it, you would quite likely be better off thinking through how you want the object to behave, and writing your action handlers accordingly.