Bainespal wrote:
Well, my component object is also literally located in the room in question, and I deliberately removed its inherited "hidden" attribute in order to allow its short_desc to be called.
Yeah, technically, found_in objects are not supposed to also have physical locations, but I don't think doing so should really break anything, either.
Bainespal wrote:But found_in -- that's probably why the component's short_desc kept being called first of all the objects in the room even when I deliberately moved the other objects back into the same room to try to get their short_descs printed first. I believe found_in objects are moved into the rooms specified in the found_in property each turn, so it would make the component object the youngest child of the room object every turn.
Actually, no. I wasn't reading correctly the last time so I didn't catch it, but no, in any kind of object loop, the oldest objects will be printed first (as they have lower object numbers).
Also, found_in objects are
not moved in from turn to turn, giving them new object numbers. Instead, they are checked for specifically by FindObject, which is called by the engine during grammar-matching.
In your case, I'd compile your game with HugoFix on and do the "$ot 0" (object tree) command. Maybe seeing your object tree how your game sees it might help you figure out what's going on.
Bainespal wrote:It does help. Your DescribePlace replacement looks like it can help with a lot of the print ordering that I've been doing. I bet you can even change the values in the DescribePlaceOrder array whenever you want, in order to have a different order for different rooms or different parts of the game.
Yeah, I didn't foresee that, but that's completely doable.
Bainespal wrote:I have a question about the replacement. The HxE article says that the first step to use the code is to set the DESCFORM_F FORMAT mask. Will the ordering specified in DescribePlaceOrder still work even if you don't use DESCFORM_F?
The page is a bit unclear, yeah. That step is indeed optional. You only should set the FORMAT mask if you want the "Infocom" look where it is double spaced between groupings of objects. You're completely fine without it.