VASSAL 3.7 Release Notes

This article will give you a quick tour of the new features in VASSAL 3.7, as well as listing some significant player-facing bug fixes.

= Major New Features =

Import/Export Items in Editor
Editor items (as well as entire hierarchies of them) can be exported to an XML files. This is particularly useful when you wish to then import them into other modules. For instance you could export all the prototypes from one module and import them into another (or just a specific folder of prototypes). It's not quite cut-and-paste across modules, but it's the next best thing!

When exporting a folder or component from a module, the selected item and all of its "children" will be exported.

When importing into a module, the items imported will be added as "children" of the currently selected item.



New Trait: Border Outline
The new Border Outline trait will put a solid outline around the shape of a piece. Width and color of the outline is configurable. Can optionally be shown only when a designated property is true or non-zero.



New Properties: StackPos, StackSize, OldDeckName
New properties are available to be referenced in pieces: StackPos exposes piece's current position in its stack, and StackSize exposes the total number of pieces in its stack. OldDeckName contains the name of any deck the piece was just moved from.



SumMat and CountMat
Beanshell expressions can now use SumMat to sum the value of a property across a Mat and all of its Cargo. CountMat can be used to count (again among a Mat and all of its Cargo), the number of pieces that have a non-blank value for a particular property. Both SumMat and CountMat can be accessed either from the Mat or from a Cargo piece.



Area of Effect Improvements
The Area of Effect trait has received some attention, with the addition of an active property field, local/global visibility options, and separate on/off key commands.



Symbolic Dice Button Improvements
Symbolic Dice Buttons now feature full "action button" support: they can fire a key command or play a sound, as well as generating a report.





Eliminating Spurious Auto-Reports
Auto-reporting on a Map can be configured to ignore same-location movements (i.e., if a piece's LocationName and Mat stayed the same, to not generate a movement report).The default behavior remains the same.



Mark When Moved improvements
Similarly the Mark-When-Moved trait can be configured to only flag when a piece changes LocationName or Mat. The default behavior remains the same. ALSO, the Mark When Moved trait now includes key commands to directly set the Moved state to true or false, as opposed to only toggling.



Hiding Blank Prompts
When a property is configured to be set using the "Prompt" option, one longstanding issue has been when one of the items in the list of possible prompts is blank. In 3.7, a new Global Option has been added to allow the display of blank prompts to be suppressed.





Suppress Sounds Caused by Global Key Commands
Global Key Commands now offer the option to suppress sounds being generated by the key commands they send.



Non-Rectangular SVG Support


Non-Rectangular traits based on SVG files will use the path (rather than merely a bitmask), allowing more accurate and efficient outlines to be drawn in many cases. In particular, Non-Rectangular traits with a relatively clean/simple "path" around them will scale much more cleanly than a regular bitmap image.



Mouse-over Stack Viewers for Terrain
Mouse-over Stack Viewers can now be configured to show the underlying terrain from the map, in addition to any pieces there. This feature is similar to one long present in VASL through custom code, and is now available to all modules.





Mouse-over Stack Viewers: Configurable Outlines
Mouse-over Stack Viewers now feature additional configuration options relating to the thickness and color of outlines.





Inventory Window Count
The count_ prefix is now allowed for counting (as opposed to summing) properties. It can be used in place of the sum_ prefix and will count the number of pieces with a non-blank value for the property in question, instead of summing the value of the property.



DEL or Backspace Key Mapping
The DEL or Backspace key can now be mapped in key commands. Obviously we recommend it be used with care, but it can be an appropriate key for e.g. deleting markers.



Action Buttons now allowed on Maps, Hands, Private Windows
Action Buttons are now available on all windows where other similar buttons (e.g., GKC, Multi-Action, etc) are available.



= 3.7.0 Full Release Notes (changes since 3.6.15) =

New Features 3.7.0-beta2

 * 12153: Layer traits allow a show-only-if-this-property-true filter
 * 12149: BorderOutline trait now accepts two fields
 * 12129: PlaceMarker and ReplaceWithOther can use expression for X/Y offset
 * 12127: Toolbar buttons disableable by a property (e.g., GKC, ActionButton, etc.) can be set to hide when disabled
 * 12100: Text Labels support tags
 * 4446: Dynamic button labels (can use expressions and $...$ in certain toolbar buttons)

New features 3.7.0-beta1

 * 12067: Import/export of groups of items from Editor as XML files (e.g., to transfer between modules)
 * 12060: Editor allows Deck files to be imported into a deck to become permanent part of module
 * 12035: Mouse-over Stack Viewers allow configuring thickness of outer border, and more padding/stretching options
 * 12032: Mark-When-Moved trait can be configured to only flag when piece changes LocationName or Mat. Similarly Map auto-report can be configured to ignore same-location movements.
 * 12003: OldDeckName now supported as a piece property
 * 12001: count_ supported for counting properties in Inventory windows
 * 11969: New Border Outline trait
 * 11964: Mouse-over Stack Viewers can display an image of underlying terrain
 * 11937: SumMat and CountMat functions for Beanshell expression
 * 11918: Startup GKC that fires when player joins or changes sides
 * 11917: Create Non-Rectangular mask directly from SVG outline
 * 11530: Add new StackPos and StackSize properties to Basic Piece
 * 11523: Area of Effect improvements: Active property, local/global visibility, separate on/off Key Commands
 * 11178: Global Option added to omit empty lines in property setting prompts
 * 11100: Allow begin-logfile and end-logfile to have configurable hotkeys in Global Options
 * 10822: Sounds can be suppressed during GKC processing
 * 10821: Symbolic Dice buttons how have full Action Button capabilities (sounds, hotkeys, etc.)
 * 10820: Make Action Button available on all windows where other similar buttons (e.g., GKC, Multi-Action, etc) are available
 * 4454: Save chat text to file

Bug fixes 3.7.0-beta2

 * 12159: Correctly handle install paths containing spaces in VASSAL.sh
 * 12158: List Key Commands tool can be re-opened after closing with X button
 * 12152: Work around Java bug which prevents displaying Windows file dialog

Bug fixes 3.7.0-beta1

 * 11913: Numeric global properties with increments other than 1 and -1 now wrap around correctly

Other improvements 3.7.0-beta2

 * 12138: Better editor descriptions of Global Hotkey traits
 * 12137: Editor shows better descriptions for Dynamic Property and Set Global Property traits
 * 12136: Change Property Buttons now have a description field, which is displayed in the editor if filled in
 * 12133: Rollovers automatically shrink scale if the pieces are too wide to fit the screen width

Other improvements 3.7.0-beta1

 * 12084: Help menu shows module-specific help items before generic Vassal ones
 * 12080: Zooming in and out no longer loses track of player’s preferred center point for map
 * 12077: ObscuredToOthers can be counted on to be ‘false’ for pieces that don’t even have a Mask property
 * 11919: Allow DEL/BACKSPACE to be mapped as a hotkey
 * 11506: Predefined Setup “menus” with blank names will not be shown