So this is a very specific request. In Twilight Struggle you can always figure out some cards in your opponents hand at the start of the third and seventh rounds. Doing so is pretty much required for competent play. This information can be figured out by laboriously comparing the total card list to the discard piles at the end rounds 2 and 6, and eliminating the cards you are dealt at the start of the 3rd/7th round.
Making this process more user-friendly is a significant design problem. Perhaps it has been discussed before?
Anyway, the game piece inventory is a great way to allow players to view the remaining cards in the draw deck, which removes much of the drudgery. Problems are that you definitely don’t want anyone viewing this information at any other time, and that sometimes, rarely, the information should be available on round 5/7 instead of 6 and sometimes on turn 9.
So my questions are: Are there any good ways to limit access to a game piece inventory based on a combination game state, like turn timer AND cards left in a deck? Failing that, is there a way to ensure such access gets logged as a report, so that even if the information is always accessible, at least both players know when it had been viewed? Alternatively, are there any other good options for achieving what I want to do?
Oooh, I think I may have found my answer by looking at what I did with Mage Knight.
All you need is an unsorted list of cards in deck and opponent’s hand. That resolves all issues with unfair information - all it tells you is a pool of all cards that aren’t in your hand or the discard.
Add to that a counter that increments each time a card hits the discard pile. That way you can see, from the pool of cards, which ones are definitely in your opponent’s hand because they have been discarded one time less than the rest. I don’t know how to implement such a counter, but I’m fairly sure I can figure it out.
It works for any number of reshuffles, and I think it’s fairly foolproof. Any thoughts?
Well, at least the card list works fine.
While my idea would work with a normal Vassal module, it doesn’t work with TS, unfortunately.
I have figured out a horrible hack job that does the trick of logging discards though. The problem was that no additional global key commands could be added without the module crashing due to conflict with all the behind-the-scenes Java code. The solution was to work within the framework.
The US player has to identify when a reshuffle is going to occur, and before passing play to the USSR, has to drag all the cards in the discard pile out of the discard pile via a “draw multiple cards” command with an arbitrarily high number (say, 50), triggering a “You can’t do that” message for each card and a trigger that increments the discard count for each card by one. You then have to click OK for every error message (one per card). As I said, it’s a horrible hack, but it should work, it’s optional and invisible unless you choose to use it. It’s also less painful (for me, at least), than comparing the discard piles to the full card list to work out which cards are in your opponent’s hand.
I have it all working fine now, but it could definitely be improved by some Java programming.