Stop Decks Mixing

I’m very new at Vassel, I’ve more or less got the hang of it. But one thing I’m less sure on is how Decks work.

Is there anyway to setup a deck so it will never accept cards that are not in a approved list?

If not is it possible to Place each deck in a separate Map and just not allow any item to be dragged in and out of that map? So there is no way cards/items can be removed or added to the deck.

I’m sure this could be done but it may get problematic and/or complicated. Best to go with option 2.

You can set up a separate map window and use it for all your other decks. In my games, I rarely have any visible decks on the board as they take up real estate and can be easily manipulated. Drawing and discarding cards is done by the use of buttons and/or right click options.

Create a new map window. I usually call mine Resources. In the map window properties check the “Include toolbar button to show / hide” options. Then add button text “Resources”.

Add a Toolbar Menu to your main editing tree and place it above the Resources map window. Leave all entries blank and under Menu Entries, include “Resources”. This will create a toobar button that is inaccessible making the window hidden and not available to the players. You may want to include a hotkey for the map window so that you can open it for testing in the game.

Place your decks in this hidden window. Let’s say you call your first deck “Deck 1”

You can then place a button on your main map window (or player’s hands) that can retrieve a card from the deck when needed. Create a graphic for the button and use an Action Button trait to send a command to a Global Key Command trait with the following:

Keyboard Command - the command sent by the Action Button
Global Key Command - the command to be sent to the deck
Matching properties - CurrentMap = Resources && DeckName = Deck 1 (this is where you are sending the command)
Withing a deck, apply to - 1 piece

Each of the cards in the deck would have a Send to Location trait that would trigger on this command and send the card to the location you have set up on the trait.

To send a card back to a deck, you would place a Return to Deck trait on each card with Menu Text being what would appear when you right click a card. You can set up the RTD trait to either send the card to a specific deck when this is used or make the deck selectable during game time.

A Delete trait would allow players to simply delete the card.

Hope that helps.

Hmm… Not quite what I had in mind… My thought was each Map could be a closed loop… Cards never leave the map, Nothing ever enters it.

So you would have “Player 1 Deck and Hand” Map, “Player 2 Deck and Hand” Map and the “Gaming Table” Map

In the “Player 1 Deck and Hand” Map you would have

Deck 1 -> Draw Areas -> Discard
Player 1 hand

In the “Player 2 Deck and Hand” Map you would have

Deck 2 -> Draw Areas -> Discard
Players 2 hand

I think all it would really need is

  • all the Cards from Deck 1 to have something saying if placed in “Player 2 Deck and Hand” Map or the “Gaming Table” Map, return to Deck 1 Discard.
  • all the Cards from Deck 2 to have something saying if placed in “Player 1 Deck and Hand” Map or the “Gaming Table” Map, return to Deck 2 Discard.
  • all other items to have, if placed in “Player 1 Deck and Hand” Map or “Player 2 Deck and Hand” Map, to get deleted.

So it’s not exactly what you’re asking for, but here’s an example of two methods - ‘Via Deck Properties’ uses the built-in 'Restrict adding counters by Drag ‘n Drop’ deck property that was added to Vassal 3.2.
‘Via Map Properties’ uses, again, the ‘keystroke to apply to pieces ending movement on this map’ that I still recommend for every map, every module. Because why not. This is paired with Trigger Actions to perform the logical tests to see if the card is somewhere it shouldn’t be, and then a Send To Location trait to send it back if needed. And a Report Action to insult the player, if needed.

Differences in the two methods:
Via deck properties is significantly easier to set up, probably
Via map properties is significantly more flexible
Via deck properties basically only protects invalid cards from entering a deck and cannot control, say, whether a player can move a P1 card into the P2 window. Note how the ‘Via map properties’ cards will not allow movement into the Main Map, while the ‘deck properties’ cards can be moved there.


P.S. This is in 3.2, and uses the Beanshell property expression syntax. Make appropriate adjustments for 3.1.19 as noted in the chat room: $property$ instead of {property}, prop1 = x || prop2 = y instead of {prop1 == “x” || prop2 == “y”}