That sounds like there is still a bug in the engine in the "else if" statements.I thought Simon fixed that bug in the latest update, but I haven't tested is. Are you using the updated version?
No, they are working. Just tested with a value, 3 different if queries & an else statement added at the end. Each one returned the display text I specified, I haven't tried mixing & matching different types of if queries though, maybe that's confusing the engine as multiple queries could be returning true.
This works, but it's not 100% perfect because there are multiple possible combinations that you could query, such as do they have the bag, but not the gun or the bullets, etc.
What I've done is seperate the 2 query blocks & if the first query block returns true at any point then it will stop iterating through the actions immediately after saying the relevant display text. If it doesn't return true at any point then it moves down to the next query block.
I didn't use any elseif queries at all for this. To be honest what would have been more useful is the ability to query and & or like I can with Lua script as it makes writing complicated if queries much simpler.
A potential good solution might be to combine what Sebastian said about using conditions - along with a for loop to iterate through the characters iventory to set conditions for the items to true if found, then write a bunch of if queries with Lua to set a value, which you could use to query which display text to say or which called by other action to call. I dunno, I just hate creating if queries with action parts as they end up looking like a confusing mess when you end up having to create loads in the same action block.