Trading

Actually now that I think about it, it does make a difference. Because the internal logic works like this (we assume Alice and Bob are in the location and Bob is carrying the second noun in question):

…when the player is carrying the noun [the player is carrying the noun, ok]
…and the player can see another person (called the trading partner) [we can see Alice -> now Alice is the trading partner]
…and the trading partner is carrying the second noun [Alice is not carrying the second noun! -> condition is false]

The problem is that Inform is not going through every person in the location but it evaluates each part of the condition separately. Fortunately this is easily fixed, just change the order:

Instead of trading when the player is carrying the noun and another person (called the trading partner) is carrying the second noun and the player can see the trading partner: ...

Now “trading partner” is always the person who is holding the second noun, no matter who else is around.