Peek Problem (3.5.5)

I have a deck of face-down cards. Each card’s mask has a “plain” display style and a Peek command = ^P. To start the game, one player (Mr. X) draws the top card and places it on the table face down. No one including Mr. X knows what the card is. I’ve set under global options “Allow non-owners to unmask pieces” to “Always” so that anyone can reveal the card,

During the course of the game, every player may get the ability to peek at this card without revealing it to anyone else. The problem, I’ve discovered, is that the Peek command only works for Mr. X, who is technically the card’s owner. All other players can reveal the card, but they can’t peek at it.

This is a real headache because I’m going to have to jump through hoops to somehow simulate a Peek command for all players. Can this be changed so that if a player is permitted to unmask pieces they don’t own, then they automatically can peek too?

Yep, ran into this problem myself. The workaround I used (actually, whoever originally developed the Merchant of Venus module seems to have come up with this one) is to flip the piece twice before executing the peek command–this transfers ownership to the peeking player (and doesn’t actually reveal the piece, because the flips happen too fast to see), so the peek actually works. There are probably other workarounds, too.

That is the workaround I’ve used as well.

Yuk. Maybe if live, but an email game? No chance unless I’m overlooking something.

After reflection, the click-twice-fast “solution” is worse than I thought. First off, you can’t play that vmod with vlogs, but even if played live, all it takes is for someone to “undo” mistakes and suddenly there’s the card face up for everyone to see. This is not a solution at all in my opinion.

One way to get around it is to assign each player a private window. They drag the card to their window, reveal it, hide it again, and return it. I don’t want to add privates windows just to do this, and the whole thing is a pita anyhow.

Another way is a right-click command on that card (a trigger) that hides the card (sending it to the left or above the map area), doing the double click thing so the right-clicking player gets ownership, returning it to its map position, and peeking it. The trouble is anyone running through a vlog will see the card mysteriously disappear and then reappear–likewise with the undo function. To get around this, I could paint a card-back image on the map beneath the card so it still looks like it’s there while it’s really off board, and it someday may come to that. This works if a card is always there; it gets more complicated if it’s not.

Another thing I thought of is adding a global key command to the card, listed beneath the mask so everyone can access it, that sends a notification to the player (say, Blue). First it would store its hidden information in a global property, and then it would send a gkc to a special piece belonging to the Blue player. The special piece then must tell the Blue player somehow what’s in the property without divulging it to others–probably via a Blue-masked piece with a transparent mask. In my case, the hidden card’s color is the only relevant information, so showing that to Blue is not too difficult, and it has the benefit of staying there so Blue doesn’t have to remember what they peeked at. If the player needed to see the entire card though, this approach becomes impractical, I think.

Regardless, this whole peek workaround is a real headache.

Have you actually tested those assumptions? I just did, and, as I thought, because the two flips and the peek are triggered off of a single Trigger Action, Undo undoes all of them at once. So, Undo does not reveal the token. I haven’t messed with .vlogs, as I don’t do PBEM, but I would assume it would be treated as a single step there, too.

Ohhhh. A trigger. I didn’t think of that. I thought a player had to manually click multiple times. I don’t know why that didn’t occur to me. Of course, a trigger is completely different. And naturally, I learn this after I come up with a different solution.