Restrict removal of pieces from deck

Aside from moving the deck out of view, making a fake deck, and having pieces dragged to where the fake deck is teleported to the actual deck, are there any other ways of preventing players from removing pieces from a deck?

I quite like the visible deck stack, I just need to stop new and forgetful players from drawing from it.

You can disable any Send to Locations on the individual cards, but I don’t think there’s any way to stop people from dragging cards off the deck, no. Seems like a bit too much hand-holding to me, anyway.

I thought so too, but it’s been requested. Apparently 3 out 4 games one player was in had people making the same mistake. If there’s an easy solution, I might as well implement it.

Two ideas:

  1. What about a piece with a visible layer that matches the look of the deck, positioned over the deck (Game Layer above deck).
    Would that work, I wonder ?

If so, it would be possible to tune the way the layer works to respond to different players and even simulate the reducing deck behaviour or the underlying deck.

Not recommending this, just thinking it might serve the purpose requested.

  1. If you just want to prevent dragging from a deck, then catching all card moves from the draw deck and triggering a Send to Location back to that deck’s precise location would work, I think. “Catching” by checking the old location, and bypassing the check when the draw is actioned by your allowed means or when a player is “allowed” to draw.


  1. Pretty sure it’s impossible to have anything “above” a deck, regardless of game piece layers.

  2. Not sure how I can distinguish between drag and drop to correct a mistake, and a mistaken drag and drop, or even the automated send to commands. If I could, I might just add an Alert() when a piece is dragged instead of sent by a gkc.

Presently VASSAL allows restricting drag-and-drop ONTO a deck, but it doesn’t allow restricting drag-and-drop FROM a deck.

If you wanted to get complicated, you could have the apply-on-move command for all relevant maps/hands send a key command that is picked up by your cards, and if their “OldLocationName” indicated they were coming from a Deck, then check a Global Property e.g. “DrawingValid” and if it is set to false/0/whatever then either print a bold red warning in the Chat Log or even send it back to where it was. And then you normally have DrawingValid set to false, except that when players are drawing cards “the proper way” (e.g. with some Button you’ve made for them) then you first set DrawingValid to true, then draw the cards, then set DrawingValid back to false. Something like that? There may be improvements or better ways possible, but that’s an approach that leaps to mind.

Or you can just yell at them when they do it wrong :slight_smile:


It actually wasn’t nearly as hard as I thought it would be to round up the legal ways to draw from that deck and have them toggle a global property, which meant that I could add an Alert() as described. Thanks to both of you for putting me on the right track!