Is there any value in duplicating FastMatch conditions?

I’m just trying to think of potential workarounds for the weird piece duplication/ghost piece bugs I’ve been seeing lately. In short, when 1 piece is sent to specific XY coords from a deck by a global key command, sometimes it appears as if a duplicate of a piece already in play is sent to the XY coord instead. Moving the “duplicate” piece by drag and drop makes it appear to other players as if the original is moved.

I have no idea how serious or deep this Vassal bug goes, and I have no ability to fix it, so I’m just casting around for workarounds.

I originally thought a workaround was to avoid looping conditions triggered by the gkc, and indeed the number of incidences of the bug did seem to be reduced by not using the looping triggers. It still happens though, even with single target “simple” gkcs.

Is it remotely possible that the problem is the new fast matching? Would it be “safer” to use an additional matching expression, for example:

Pre-Select (Fast Match) by location, specific deck Deck Name “deck”, AND Additional matching expression DeckName==“deck”?

Or am I barking up the wrong tree? Is the entire line of questioning pointless, if the Vassal devs can’t identify the bug in the first place?

Can you reliably reproduce this bug and make it happen via a logfile?

In rare cases, a description of the bug is enough and we can infer the cause by inspecting the code. But in most cases, unless we can cause the bug to happen while we are debugging the code, there is little we can do.

Replaying a log file with a different password specified as the log creator used is essentially the same process and code as watching a game online.


Can’t reproduce it reliably, but there are multiple logs floating around in which it occurs. I’ll try and rustle some up.

Here’s one: … .vlog?dl=0

Module version used to make that log here: … sp=sharing

Probably Vassal 3.5.5.

My own observation of that particular log is that the player doing the logging saw the card (“relic”) being duplicated, while people replaying the log see it move from the board to the board, but if you undo the log, the card returns to the deck. So, uh, that’s three different ways of seeing the same event. I do not know if the original (not logged here) draw of the unique card is the real bug.

Here’s another: … sp=sharing

Using this module version and Vassal 3.5.5: … sp=sharing

Described to me this way: “the cradle site flip brings in a dragonskin drum, but the top relic in relic deck is obsidian cage. Also if you manually pull all relics you’ll see there’s a second drum left in the deck in the end.”

For reference, each card in deck is unique, the gkc only targets the top card in the deck, there are no clone or place marker traits, and again I think there’s already a “dragonskin drum” on the board at the time of the log.