Every item in the game world that can be interacted with (i.e. every “object”) broadcasts a list of opportunities to all actors. The actors can then choose to do one of these interactions.
Sometimes, however, the object might only want the interaction to take place in certain situations. E.g. the interaction may only work if the actor is sitting down. Or if the actor is a young child. Or if it is raining.
For this reason, every opportunity has a condition that needs to be fulfilled before the character can choose it as a goal.
In general most opportunities will be available for most actors. So the condition should be optional, to minimize processing time.
The condition should have an open format that suits any situation.