Player Cards/Mats & Card Decks in a Multiplayer Game

I have an interesting situation I’m not experienced enough in Vassal to handle, and would like some input from the gathered experience here, if you wouldn’t mind…

I’m a very new module maker, and while it may appear I’ve done a lot in a short time, my mods are just different battles in a series all using the same rules, so a lot of work for the next one is already done before I start on it. (though now I’m working on applying some things I’ve learned to the earliest mods I did)

One game is a separate and different animal from my others. This game is intended for play by up to six people and is basically Avalon Hill’s War & Peace on a Blitzkrieg inspired map. Each major power in the game, with a player or not, has a Player Card containing their force-pool, production track, and other data. It’s not supposed to be visible to other players, and I’ve put them in as private maps but…

Image of Player Cards

When a player invades another major power that’s not represented by a player, control of that power goes to another player not allied with the invader (there’s a chart to determine all this but that’s not relevant here). The player now controlling this unplayed-power needs access to it’s player-card.
To really stir things up, let’s say the invader conquers this unplayed-power; it now becomes a satellite of the invader, and they get access to it’s player-card, while that access is taken from the former controller of the power. I worked very hard to put that is as plain a language as I could :slight_smile:

I can’t seem to find in the forum or the docs, a way to change the ownership of a private window in-game, possibly multiple times; so I’m thinking I will just have to make the player-cards visible to all and leave it at that. My question is; is that so?

Second item, same game: Each power (player or not), at game start, draws a single Reinforcement Card from a deck and keeps it on it’s Player-Card through the whole game (it tells them how their force-pool increases each game year). Relative to item one, above, someone needs to draw a card for each power without a player, and place it on those player-cards till needed (ie: if the power is invaded). The question is; the remainder of the deck is no longer needed - is there a way to get rid of it, or do I just leave it where it is and ignore it?
I like things neat, so would prefer to put the deck away after it’s use.

Here’s the Musket Diplomacy web page if you’re interested.

VASSAL does not have very good support for changing ownership of pieces (and none for changing ownership of boards, as you’ve discovered), unfortunately. I can’t think of any good way to handle this case off the top of my head. One possibility is to leave the player cards as public, but add a Mask trait to all the pieces, so non-owners will only see a generic back for the pieces (you would want to configure the Mask trait so the owner can see the front side even when flipped). Then, when someone takes over a neutral player, they can flip (unmask) and then flip again (to remask) the pieces to take “ownership” of them, so they can see them but the other players can’t (this requires making sure the option that allows all players to flip masked pieces is enabled–of course, that means players can cheat and look at others’ pieces when they shouldn’t, too). You could provide buttons (on a toolbar, or pieces locked in position) to send a GKC to flip and re-flip all the pieces on a board at once to make this easier.

Assuming the pieces are supposed to be visible to everyone once they’re on the main map, you would also need to make sure they get flipped (unmasked) when transferred to the main board. You can do this with the “Key command to apply to pieces ending movement on this map” option for the main map, having it call a trigger that checks if the piece is ObscuredToOthers (the internal marker for when a piece is masked), and if so trigger the flip command.

As far as removing the deck when you’re done with it, the simplest solution is to give every card a Delete trait, and then use a Global Key Command to trigger that trait on every card remaining in the deck. If that seems too drastic (perhaps there might be a reason to want to look at the cards again later), you could instead use a Send to Location trait to move them somewhere unobtrusive (to negative map coordinates, or to a “setup” map that you don’t otherwise need after game start–if you use negative map coordinates, you might need another Send to Location to retrieve them again later, if you’re worried about being to access them again). You could also place an empty deck in the place you want to hide them, and then give the main deck a command to transfer its contents to the other deck, instead of using a GKC to move each card individually.