[Adventuron] Problems with s1() and s1_has_trait for objects that are not in play

I have a game that relies heavily in the early stages on gathering information. You do this by reading about stuff and asking people about stuff. In this context, ‘stuff’ is a noun. The noun can refer to (a) an object that exists somewhere in the game (has_not_created returns false), (b) an object that has not yet been created (has_not_created returns true), or (c) something that doesn’t exist anywhere in the game. For (c), I get this to work by adding dictionary words for the nouns I want to use in the vocabulary section. This is working well.

I am using commands like ASK <character> ABOUT <topic> and ASK ABOUT <topic>, where the first command diverts to the second using set_sentence "ask about $2". This part works flawlessly.

I am using the new Beta 65n with the new experimental_new_parser = true in game_settings. This works a treat and verb, preposition1 and noun1 are always correctly identified. The problem is that the subject s1() does not appear to be identified in scenario (b). I have tried printing s1(), but it always prints ‘unknown’, even for known objects, yet s1_has_trait works for scenario (a), but not for scenario (b). I have found a workaround for scenario (b) by putting all non-created objects in a dummy room, but that means making extensive changes elsewhere in the code, as I can no longer use has_not_created and destroy.

Can you explain what’s going on regarding how Adventuron identifies the subjects s1() and s2(), how I can print them and why s1_has_trait doesn’t work in scenario (b) without doing the workaround?

The problem was, as you correctly assumed, that s1_has_trait() and s2_has_trait() were incorrectly filtering for subjects that exist.

This should be now fixed in beta 65q (tested using the code snippet you mailed to me).