specialDescOrder and Actors

The notes in the Library Reference Manual clearly seem to imply that specialDescOrder will apply to both Actors and other objects. The default specialDescOrder for the Actor class is 200, and the notes say, “By default, put all of the actor special descriptions after the special descriptions of ordinary objects, by giving actors a higher listing order value.”

However, what I’m finding is that ordinary objects with a specialDesc are listed in a room description BEFORE Actors, irrespective of my non-default settings for specialDescOrder. I have four Actors in the room, and I can change the relative order in which they’re shown by fiddling with their specialDescOrders. But the ordinary object is listed before the Actors, even though I’ve given it a much higher specialDescOrder.

As the Actors’ specialDesc text is coming from their ActorStates, I tried giving an ActorState a lower specialDescOrder, to see if that would pop its specialDesc up above the specialDesc for the ordinary object (which happens to be a Collective – I also tried giving the member objects of the Collective a higher specialDescOrder – no luck there). No matter what I do, the ordinary object is displayed in the room description output text before the Actors.

Suggestions would be welcome.

You can set the specialDescBeforeContents property to true on the actors you want listed before portable objects.

Brilliant – thanks! And thanks for the info about listActorPosture as well. It’s been a couple of years since I did anything with T3, but I don’t think I ever knew these two bits.

I’m pretty much a maniac about getting the output to read the way I want it to. I had forgotten how to banish “It’s closed.”, but I managed to find that information in Learning TADS 3.

The main bit of library code that controls room descriptions is lookAroundWithin. The code is dense but the comments make it readable.

That’s where I found the specialDescBeforeContents property. But other parts of the display order aren’t so easily changed. If you wanted sounds or odors listed earlier, for example, you’d need to rewrite that function and move the relevant blocks around.