Checking if NPCs performed an action

Hi, I’m trying to work out a way to check if some NPC performed an action in a way similar to “if we have…”, e.g. this situation:

the PC, John the Important NPC, and Mary the Annoying NPC

> take pot

Mary stops you.

> John, florb Mary

Mary doesn't let him because you haven't given her the flowers yet.

> give flowers to Mary

> take pot

Mary stops you.

> John, florb Mary

John florbs Mary.

> take pot

Mary is distracted and you take the stone pot.

Because “if John has florbbed Mary” or “if John florbbed Mary” just don’t work. The same, even, with “if we have asked John to try florbbing Mary” (which, to me, should be successful after the first attempt already, not exactly the thing I have in mind). In fact, they all just end in error reports during compilation.

I know I could add some toggle

Mary can be florbbed by John. Mary is not florbbed by John.

...
    if Mary is not florbbed by John:
        ...

but suppose the player needs to get these two together and has to tell John how to do everything, because John the Eternally Slow is too stupid to do it on his own? Poor Mary will end up with a list of these longer than the list of the king’s titles. And so will any character or thing that needs to interact in an important way without the PCs involvement.

No, there’s no built-in facility for this, and for exactly the reason you note: the system would have to store a humungous amount of information.

You can do it, but you have to set up the storage system yourself.

You can do the past tense with a to be florbed by relation: if Mary has been florbed by John…. But if this is just a one-off thing, your can-be line is probably easier.