noob help please

Started using vassal tonight to implement a board game idea I have.

Started this tutorial to get a feel for things:

When it states: “Double-click on the Map Window component in the Configure Module window … check the “Include toolbar button to show/hide” option. Type “Tac” for the button name…”

I get the window described, but when I check “Include toolbar button to show/hide” no text box appears for me to name the button. Done it with two different maps now, both maps have no buttons, and when closed exit the game.

What am I missing?

Aside from that, if anyone could provide me with links to some other tutorials to work through it’d be much appreciated.


After checking the “Include toolbar button to show/hide”, save the module and reopen it. You should then be able to go back and add the button name.

Thanks very much, that helped.

I’ve gone through the tutorials, and started building my game.

There’s something new I’m wondering how to do.

Say I want the mouse-over zoom of a card to be larger than the original. How would I do that?

If I have cards that fit into 150x150 pixel tiles, can I have the mouse-over zoom display a larger and higher quality image, different to that of the card?


No. The mouse-over zoom shows the card at 100% size only. However, you can put a zoom on the map itself to zoom the map up to say 2.0. You’re cards would then be displayed on the map at twice their normal size.

Thanks, I think I understand.

So if I want a card to be 300x300 when zoomed, but only say 75x75 on the map. I would create the card with a 300x300 image and zoom the board to a factor of 0.25?


Superb, thanks guys.

New question!

How do I configure a card to have a right click function “Draw to hand” so that selecting it automatically moves the card to the player’s private window?

Also, would there be any way to add a multiplier to this? ie “Draw 4 cards to hand”.?


You would use the ‘Send to Location’ trait with a $playerSide$ reference. Note that you would need to have the value of $playerSide$ in your private window names in order to do this; for example, with sides ‘P1’ through ‘P4’ defined, and private windows ‘P1 Hand’, ‘P2 Hand’, etc., each with board ‘Cards’, your ‘Send to Location’ could send the card to:
Map: $playerSide$ Hand
and Board: Cards

For this, you will need the setup above, plus a Deck Global Key Command. Add the key command to the deck by right-clicking the deck in the editor; set ‘Affects’ to ‘Fixed number of pieces’, ‘4’. Set ‘Global Command’ to the keystroke you used for ‘Draw to hand’ on your cards.


Thanks very much seth.

I haven’t played around with commands and references at all yet, but let me give it a bash and I’ll let you know how I get on!

You can download my Here I Stand module and look at what I did for card dealing via toolbar menu. I’m not saying it’s the best or only approach, but it works. Each player hand has a named region on it, then all event cards have triggers and STLs on them to send them to a player’s hand, even if you don’t have access to that hand. The toolbar menu organizes all the Global Key Commands (which “deal” varying numbers of cards) by power.

Done. Thanks.

Now how do I get that right-click dialog to work when I right click on one of the cards in the deck?

Also, ideally when I use the “draw” command on a card, I would like it to display them side-by-side in the player window. However it currently adds them to a pile. I tried to use the additional x/y offset in the ‘Send to location’ settings, but it didn’t seem to do anything.

To issue a command to a card in a deck, add a Global Key Command to the deck. Right-click the deck entry in the module editor.

The easiest way to display cards side-by-side is by using a Player Hand.

Ace, worked a treat (once i figured out how to make a basic GKC work!).

I am using a Player Hand window, but when I ‘Send to location’ the cards get stacked, is there an option somewhere for offsetting each additional card or something?

Dogboy has an excellent post on how to improve the behavior of Player Hands. Admittedly, I never use them myself, but I recall this working perfectly:

  1. Have the Player Hand window send a command to all pieces ending movement on the map; this should be a Trigger Action which then calls a Send to Location to the position of the first piece.
  2. Avoid infinite loops with a Property Match Expression in the Trigger Action (‘only apply when properties match:’) - either check OldMap != NewMap or set a dynamic property such as ‘Moving’ as described in dogboy’s post.

I realize this is brief, so let us know if you have any trouble implementing it.


okay I figured out how to do this, however I’m having some trouble with the next part

Decide on a position for the first piece sent to the hand, say, 100,100. Create a Send To Location trait to send your pieces to that point. Now create a Trigger Action trait which calls your STL trait under ‘Perform these keystrokes’. For the ‘Trigger when properties match’ field, or whatever it’s called, enter ‘OldMap != $CurrentMap$’, without quotes. Have your map call the Trigger Action trait, not the STL trait.

Sorry man, I think I missed something, I’m still a little confused.

I played about with various ways to implement this, but I still can’t get it to work, nor really understand how it’s supposed to work.

I drew out a plan to make it work in a way that made sense to me, however maybe slightly messy, but it still wont work, any idea what i’ve got wrong?

Card Protoype:

  • Set dynamic property “NEW” = “true”

Main Map:

  • Right-click on deck activates global key command CTRL-4 to one piece in the deck

Card protoype:

  • CTRL-4 orders ‘Sent to location’ on map “$playerSide$”, board “hand”, position 130, 130.

P1 [Player Hand]:

  • Pieces ending movement here trigger hotkey CTRL-SHIFT-1
  • CTRL-SHIFT-1 is hotkey for GKC for P1 [Player Hand], sending Key Command CTRL-SHIFT-M when matching properties “$NEW$ = false”

Card Prototype:

  • CTRL-SHIFT-M is Trigger Action sending out CTRL-SHIFT-A and CTRL-SHIFT-B
  • CTRL-SHIFT-A is a ‘Move fixed distance’ trait, moving 255,0.
  • CTRL-SHIFT-B resets “NEW” to “false”

Sooooo… When I draw a NEW card, I want it placed at 130,130. THEN move all -OLD- cards on the board 255 to the right. THEN call all cards on the board -OLD-

I’ve been playing around with the setup described above, but I can’t get the desired effects :frowning:

Here’s the link to my vmod file in case that’s easier

The settings I applied above apply to the weapon deck (main map), weapon card prototype and P1 hand only

Okay, yes, this is completely different from what I thought you wanted. A few immediate notes, and more when I can look at the module:

  1. The syntax for ‘$NEW$ = false’ should be ‘NEW = false’. Actually, I don’t think that’s the correct logic, but in any case the left-hand side of a comparison is always evaluated as a property.
  2. The key command to send to all pieces ending movement on this map is sent to the piece ending movement on that map, not the map itself. Is there a trait on your pieces which listens for CTRL-SHIFT-1?
  3. CTRL-SHIFT-M is sent to pieces with NEW=false, which moves them and then resets NEW=false. I thought NEW was already false?


  1. Ah I see, I’ll change that just now then see how it goes.
  2. aha, I had hoped that by sending a GKC to the map would apply it to every piece on that map, i’ll redirect CTRL-SHIFT-1 straight to the trigger instead
  3. right, thats perhaps just me not knowing exactly how this works, i thought it would apply the NEW=false after moving, so essentially every piece except the new one shifts, then the new one becomes NEW=false also, so next time it’s triggered, it will move too.*

i suppose this will probably cause some problems when I come to removing cards from the hand :-/

Ahhh okay, I see what you mean, I changed the points you mentioned in (1) and (2) now the card just moves as an infinite loop, because when it moves, it re-triggers the ‘ended movement on board’… thingy.

Right, I tidied it up a bit, but I’m noticing the real issue now.

I changed it so the ‘landed on P1 board’ triggers (if moved=false) to: set moved=true, move cards right

this stops the infinite loop by cancelling the trigger before moving

however, now that i can kind of see it almost working, the problem is that these triggers only seem to apply to the selected card, so each card is being drawn, moved right one space - i want every card on the board to move right one space… is this possible?