Multi-Action Button Fails to Send GKC (but only for some users)

I’ve created a feature to automate the “Event Resolution” procedure of this module:

https://vassalengine.org/wiki/Module:Downfall:_Conquest_of_the_Third_Reich,_1942-1945

The Event Resolution procedure is automated through a Multi-Action button on the toolbar which looks like this:

As you can see, the button triggers some Global Key Commands, and then prints text into the event log (reminding players which portions of the procedure have been automated, and which they must conduct themselves).

However, step #3 (Draw to Pending) has been problematic for certain users. Every single time I’ve used this Event Resolution button, it works flawlessly. Cards are moved to the appropriate place, and specifically, the “Draw to Pending” portion moves a card from the top of the Event Draw deck and down to the “Pending” location on the board. Simple.

Yet I’ve had multiple reports from users who state that the procedure moves the other 2 cards, but fails to draw a new card to the Pending box for them.

I’ve also seen this myself. In a game where both players have the same version of the module and the same version of Vassal: When I click the button, everything works properly. When I the other player in my game clicked the button, the card failed to draw from the Event Draw deck to the “Pending” location.

This GCK for moving a card from Event Draw deck to Pending (the GCK which fails to fire for some users) looks like this:

As you can see, it simply sends the “Pending” command to the card on the top of the Event Draw deck. This command, in turn, is a “Send to Location” command which looks like this:

It’s a pretty straightforward command, and I’ve ensured that every single card in the event deck (there are only 15) has this “Send to Location” command via a Prototype definition.

So it seems that for a subset of users, this button fails to work properly, while the other portion of users have no issue with it.

Could this be a computer issue? Faster computers can process the Multi-Action Button properly but slower computers skip a step by mistake for some reason?

I am wondering if it’s a card ownership issue; if a different Side owns the card trying to be moved, and the permissions are set to not allow that.
Another thing I notice is that your {DeckPosition==1} additional matching expression is redundant; you’ve configured the GKC to only apply to 1 card within the deck, and it always starts with the top card. While it shouldn’t make any difference, have you tried removing that expression?

If neither of those helps, please show us the configuration of the Event Draw deck.

1 Like

Is it accurate to say the rightmost card (“Pending” location, looks like) should always be face up when the Multi-Action Button is pressed? I only ask because–not knowing the rules to this game at all–I noticed right away that with the current Mask config, if one player draws and leaves the card in that location facedown and it’s left to a different player to use the button, it won’t move because the Mask trait is suppressing the command.

This may well be a non-substantive issue and not something that can occur in the game–I was just fiddling with different conditions trying to suss out a pattern if I could get drawing to fail. But if these event cards aren’t really meant to be secured to an individual player, a different Mask config will allow all players to interact with them when facedown even if they weren’t the one that drew it.

EDIT: Followup question–just for completeness’ sake, it was verified at the time that the Event Deck on the Out of Play window still had cards in it when the button failed to draw one, correct? Because I am not finding anything that auto-refills it from the on-map discards if it gets emptied, so drawing obviously fails in that case. Probably a silly question but I don’t know how much this deck “churns” in the course of play.

I am wondering if it’s a card ownership issue; if a different Side owns the card trying to be moved, and the permissions are set to not allow that.
Another thing I notice is that your {DeckPosition==1} additional matching expression is redundant.
Hmm, I thought that it pulled a random card rather than the top card, that’s why I added that expression.

The card should always be drawn face-down, and after resolving the Current Event, it will be flipped face up (which happens 30 seconds to 1 minute from the moment it was drawn).

Joel,

I hadn’t thought about the Mask trait. You think somehow the previous person who moved it still ‘owns’ the card so it wouldn’t be drawable while in the deck face down?

Yes, this was verified in my case. I was able to draw the card no problem, but my opponents were not.

If you have Re-shuffle set to “Always”, then yes, it will draw random cards instead of from the top. I was assuming that, since the card order is apparently important, you weren’t using that setting.

1 Like

I was referring to a card being facedown in the rightmost of the 3 spots on the main map and the commands to shift it left not working if the card is still masked, but sounds like that isn’t a thing players will ever attempt.

Putting something that’s Masked (hence owned by the player who drew it) back in a deck will clear that ownership–so I’m pretty sure there’s no possibility of a card in a deck being blocked from getting drawn on that basis. Restricted Access trait would likely result in this, but not Mask.

Ah, well it’s set to shuffle ‘on right click menu’ so i guess that is a bit redundant. I’ll try removing it and see if that works.

I was referring to a card being facedown in the rightmost of the 3 spots on the main map and the commands to shift it left not working if the card is still masked, but sounds like that isn’t a thing players will ever attempt.

Correct, that card will be face up before the end of the event resolution, so the next time someone resolves an event, it will be face up and moving left on it’s own. That has never been the problem.

Putting something that’s Masked (hence owned by the player who drew it) back in a deck will clear that ownership–so I’m pretty sure there’s no possibility of a card in a deck being blocked from getting drawn on that basis. Restricted Access trait would likely result in this, but not Mask.

Well there’s definitely no restricted access on these cards. So I’m back to thinking maybe it’s a vassal bug somehow?

You should try adding a Report Action trait that is also triggered on the Key Command “Pending”; that will tell you if the problem is with the GKC, or with the Send to Location (if the report fires, then the GKC fired, and the problem is with the StL).

I’m still trying to get your latest version to demonstrate this glitch and not seeing it in evidence yet. Another thought occurred to me–are we 100% sure that players who have seen this are not only using the current module version, but began the game with that same current version? That is, they didn’t start a game one or more module versions ago and “upgrade in place” without refreshing counters/decks?

Is there any pattern related to them already running through the event deck and returning cards to it before seeing the failed draw? It’s not immediately apparent why this could or does matter based on what I look at in the editor, but just grasping at straws for ideas.