Check when card is moved to another board?

Is there a way to determine and trigger if a card is dropped on another board?

I’m wanting to add a number to a global property when a card is dropped onto a player hard.

For example, say I have a card on my Setup Board that it has a cost of 3. When I drag that card to my player hand board, I want that cost to get added to a global property I have setup.

I understand how to check if the card is on a board, but I guess I am getting lost on how to trigger Set Global Property trait with a simply drag and drop. Might not even be possible, but I wanted to check before I try some other solution.

Thanks

Maybe I should have posted this in Module Design instead. Not sure how I missed that forum before. If it’s possible to move this, that would be great. Thanks.

Check out this post and see if it helps:

https://forum.vassalengine.org/t/totaling-the-number-of-pieces-on-a-map/8708/1

The ‘ends movement’ map level gkc is the map/player hand’s last listed property… then you need a way to limit that to only occurring with a first move to the board (you don’t want it to keep adding 3 to your global with every shift of the card in the player hand), as well as potentially divvying up your global properties for each player (unless you want them all tallying together). So that post kind of covers that, or will hopefully give you some ideas. You wouldn’t need to combine them all as I did, but could have separate end movement keys tied to each board/player to help with keeping the counts separate. The earlier posts in thread may help too.

Anyway, any problems or questions, just ask.

Awesome, thanks. And yes, all player’s point will be tallied together. I’ll check out that other post.

OK, I almost have it. It’s just it’s not triggering with the matching properties I am giving it. If I remove the matching properties it works, it’s just stuck in a loop of course.

My player 1 board is called Player 1’s Board, so here is my test expression.
CurrentBoard =~ Player 1’s Board && OldBoard != $CurrentBoard$

When I have that in the Matching Properties of the GKC, the update of the global property does not trigger. However, if I remove it (leave it blank) it does trigger and creates a loop, naturally.

Thanks!

I got it figured out. I was using the map name instead of the board name :slight_smile:

Oh, it works with the tilde? I was thinking remove that (generally added for multiple choices) and have just the equals sign, but I guess it does make sense it would work for one choice too. Glad it works.

I didn’t try without it, but I don’t see why it wouldn’t work. It works, so I won’t touch it :slight_smile:.

OK, so I am still running into an issue I can’t seem to crack.

So here is what is happening.

Move Card to play hand, it adds to global. Works perfect.
Move card from hand back to supply board, it subtracts amount from global. Works perfect.

The catch is when I have more than one card. So:
Move 1 card from supply board to player hand. Check.
Move 2nd card from supply to players hand. Check, global number is correct.
If I move the 2nd card anywhere on the player hand, it adds the number from the first card to the global. It continues to do this, until I move the first card again, then it locks in.
If I move the first card right after moving the 2nd card onto the board, then it continues working, nothing added to global. Until another card is added, then the same strange behavior happens.

Moving back to the supply board does not subtract the correct amount once all the numbers start going craze :slight_smile:.

I hope I explained that well :slight_smile:.

Think I solved it by using Trigger Action instead of Global Key Command in the prototype. I think the global was effecting all of that type on the board maybe?

Yeah, with a trigger action. So the map level gkc is sent to a moving piece. That triggers the trigger action, but only if your matching conditions are met (first move only). The trigger action then fires the global property change.