Highlights
- Bug fix release.
Bug Fixes
- #1326
json.path.read()
was turning numbers into strings when using the max, min, avg, length, sum and stddev path functions. Fixed. - #1300 Several bugs with
copyTokens()
when used with/without updates parameter fixed.
Highlights
- Bug fix release to correct several JSON related issues.
Bug Fixes
- #1296 Exception thrown when trying to read Hero Lab .por files that are missing the XML statblock. Exception caught and error reported.
- #1236
getTokens/getTokenNames()
was failing ifsetState
orunsetState
options were used. Fixed. - #1228
getLastPath()
and other token move functions that made use of pathPointsToJsonArray were broken. Fixed. - #1206 Unknown json functions would return null instead of an error. Fixed.
- #1204 Layer condition of
getTokens/getTokenNames()
weren't accepting accepting a string for a single layer. Fixed.
Highlights
- Terrain Modifier enhancements:
- Token terrain modifier can be flagged as NONE, MULTIPLY, ADD, BLOCK and FREE
- Tokens can be set to ignore Terrain Modifiers.
- Per map setting for rounding of fractional movement costs: NONE, CELL_UNIT, INTEGER
- Can now specify a campaign file on startup:
- With command line options
-F
or-file
, e.g.-file=path/to/file/mycampaign.cmpgn
- Passing the path and file without command line switches, e.g.
maptool path/to/mycampaign.cmpgn
- File assocation - will need to manually configure this through the appropriate OS settings
- Drag-n-drop of campaign file on executable.
- With command line options
- Major refactoring of use of JSON in code. Replaced all uses of net.sf.json-lib library with the Google GSON library.
Enhancements
- #1178 New, per map, rounding options for AI movement costs: NONE, CELL_UNIT, INTEGER
- #1165 New command line option for loading campaign on startup.
- #1142 New macro function
getTokenMap(id,delim)
gets a maps with the provided token ID/name. - #1101 New chat commands
/version
and/about
. MapTool version added to title bar. - #1072 Meta macro functions now accept a map name parameter.
createMacro
,getMacroCommand
,getMacroIndexes
,getMacroProps
,getMacros
,removeMacro
,setMacroCommand
,setMacroProps
- #1062 New Light preference setting for Maps. Can now be set to default to None, Day or Night. Same option is available on Map Properties dialog.
- #941 Hitting the tab key in the property fields of the Edit Token Dialog will now advance to the next property value instead of property name.
- #870 New configuration options for
json.path.read
function.- ALWAYS_RETURN_LIST, AS_PATH_LIST, DEFAULT_PATH_LEAF_TO_NULL, REQUIRE_PROPERTIES, SUPPRESS_EXCEPTIONS
- #728 Tokens can now be set to ignore one or more types of terrain modifiers.
- #459 Terrain Modifiers have multiple types now: None, Add, Multiply, Block and Free.
Bug Fixes
- #1178 Some AI distance calculations were off when using terrain mods. Fixed.
- #1177
json.difference()
wasn't promoting strings to JSON. Not in released code. Fixed. - #1175
getTokenNames()
andgetTokens()
was failing when mapname condition was used. Not in released code. Fixed. - #1173 Macrolink argument encoding/decoding failing. Not in released code. Fixed.
- #1167
json.isEmpty
was not promoting passed strings to JSON array. Not in released code. Fixed. - #1151
json.set
was adding extra quotes when setting value to empty string. Not in released code. Fixed. - #1149
execFunction
failed when defer = 1 and a trusted function was used. Fixed. - #1144
json.get
was not promoting strings/numbers to arrays. Not in released code. Fixed. - #1143
json.toList
was not removing quotes around strings. Not in released code. Fixed. - #1139 Whitespace trimmed off strings containing numbers and converted to numbers. Not in released code. Fixed.
- #1130
foreach()
not working with JSON objects. Not in released code. Fixed. - #1127 Logging was broken by recent lib change for 1.5.9/10. Also log files were not being zipped or pruned. Fixed.
- #1125 Using
json.type
in anif()
would produce an invalid condition error. Fixed. - #1124 UDFs were being passed
null
when an empty string was sent. Not in released code. Fixed. - #1121 Function
json.get
was returningnull
if field didn't exist. Not in released code. Fixed. - #1120 Function
json.toVars
was adding quotes around the set values. Not in released code. Fixed. - #1117 Strings returned by UDFs were double-quotted. Not in released code. Fixed.
- #1075 Setting
applyToSelected=1
when usingcreateMacro()
was not being applied. Fixed. - #1069 AutoSave failure message changed.
- #1066 SENTRY: When selecting images for tokens a null asset could be returned. Caught and error message displayed.
- #1060 Labels, halos and selection boxes were incorrectly rendered on tokens with off-center layout in config. Fixed.
- #1047
json.contains
andjson.indexOf
were not handling values outside the range of a signed integer. Fixed. - #1015 A bad HREF in a anchor link could produce an NPE. Fixed.
- #456 Tokens with VBL didn't show path and couldn't have movement reverted. Fixed.
- #413 Facing could be changed when zooming in/out on Mac. Fixed.
- #353 Macro Editor wasn't persisting window size. Fixed.
Note The Windows install for this release requires Windows 7 or greater to install. The .jar
file release can still be used on older 64-bit Windows platform. #1039
Emergency bug fixes
- Fix for exception when deleting multiple tokens.
- Fixed German translations so macro editor and menu shortcuts work.
- #1079 Selecting and then deleting multiple tokens caused ConcurrentModification Exception. Fixed.
- #1078 Translations for German language broke a number of shortcuts and macro editor. Fixed.
This release focused on clearing out bugs both old and new.
Highlights
- Bug fixes. Some serious and some just quality of life.
- More translation updates.
- Brought the various libraries used by MapTool up to current releases.
- Shout out to Melek and other volunteers for their work on 20+ new and improved wiki pages .
- #753 Reserved variable names
init.current
andinit.round
are now highlighted in macro editor and documented on wiki. - #359 Added infomation from
getInfo("server")
andgetInfo("campaign")
to the Sentry error logging.
- #1024 Macro function
execFunction()
would choke on apostrophes. Fixed. - #1021 Confirmation dialog for clearing GM panel said "Campaign". Fixed.
- #1006 The Perlin noise option for maps was causing significant memory usage whether enabled or not. The additional overhead (~28MB per map) is now only incurred when it is enabled on a map. If using this feature, be mindful of how many maps you have in your campaign and your max memory allocation.
- #998 Player clients dropping tokens with duplicate names weren't getting a notice of why nothing happened. Fixed.
- #993 All clients were getting notified when a GM changed a token name to a duplicate. Fixed.
- #989 Unprintable character symbol (□) showed in output for rolls and tooltips in frames/dialogs. Fixed.
- #962 The GM-mode autoexpose (Preferences -> Application -> Auto-expose fog...) wasn't working. Fixed.
- #943 When using random token numbering and after a restart of MT, it was possible to get duplicate token names. Fixed.
- #923 Using Edit Map on a map with an adjusted grid would lose offset adjustment. Fixed.
- #920 The RPTools logo was being loaded across the net each time for use in the MacOS dock. Fixed.
- #892 Panels could be permanently checked in Window menu but not visible. Fixed.
- #796 Drawing a selection box on layers other than the Token layer ignored the "Fill selection box" preference. Fixed.
- #739 Initiative info was being returned by
getInfo("client")
andgetInfo("server")
. Removed fromserver
option. - #722 Find/replace action in Macro editor didn't give a Replace option. Fixed.
- #272 Display area for memory usage didn't adapt to larger font sizes and string length. Fixed.
- #251 NPE when restoring FoW after deleting a token. Fixed.
- #205 Layer list in Drawing Tools allowed multi-select of layers. Fixed.
Highlights
- Macros on copied tokens having duplicate UUIDs problem fixed.
- Toolbar/ribbon in MapTool can now be hidden to give you more screenspace.
- Additional parameters and improvements to various macro functions.
- New translation team members, Deniz Köse and Vitaly Karpenko have bumped our Russian translation up to 74%.
- Fog of War exposure fixes.
- Tooltips added to all menu items.
- Bug fixes!
- #949 New macro function
getAssetProperties()
returns the properties of assets including size and type. - #938 Map name parameter added to Token Location functions. All Token Location functions now report correctly when invalid number of parameters are given.
- Map name parameter added to:
getTokenX()
,getTokenY()
,getTokenDrawOrder()
,setTokenDrawOrder()
- Map name parameter added to:
- #901 Default stack size increased to 8MB. See Preferences -> Startup
- #898 Macro functions
getOwned()
andgetOwnedNames
now take optional map name parameter. - #897 Toolbar ribbon now has a hide/show gadget.
- #742 Macro functions
getTokens()
andgetTokensNames()
have newowned
conditions
tag for getting tokens based on ownership. - #154 Tooltip for Shown Token Names menu option now includes description of what the colors mean. Localized Tooltips added for all menu items.
- #952 Macro function
setTokenImage()
was not setting the token native height/width fields. Fixed. - #945 Image Chooser for selecting table images would throw an exception when clicked between images. Fixed.
- #932 Clients were not being updated if setTokenVBL was used to clear the VBL of a token. Fixed.
- #912 Initiative functions
addToInitiative()
,setInitiative()
, andsetInitiativeHold()
were not reliable. Fixed. - #907 Macros on copied tokens had same UUIDs as the parent token. This is bad. Fixed.
- #887 When using Individual Views and Individual Fog of War, the server was not showing previously exposed areas after the server start. Fixed.
- #792 The various methods of exposing only the currently visible areas were not working correctly leaving previously exposed areas still exposed. Fixed.
- #762 Autosave for campaign was not working correctly. Fixed.
- #595 Changing maps while a token move was in process could leave the move path stuck on map and token unable to move. Fixed.
- #333 Startup tab in Preferences was missing tooltips for several items. Tooltips added. Tooltips on that tab are now localized.
- #197 Hitting the
esc
key while in the chat window would close chat window. No longer does this.
Highlights
- New accessibility features allows the user to apply Perlin noise to tiled textures to reduce obvious patterning.
- New user preference (Edit -> Preferences -> Application -> Performance) for Max Frame Rate allows users to set a desired Max Frame Rate.
- More updated macro functions for improved performance and reliability.
- New GM macro panel for GM only macros. These macros are saved as part of the campaign.
- Bug fixes!
- #878 ISO 8601 time date field added to result of
getInfo("client")
. - #872 Metadata added to JSON returned from
getMacroProps
function to add in external managment of macros. - #850 New macro function
log.trace
added for log messages atTRACE
level. - #848 File Sync Directory preference setting adding to
getInfo("client")
result. - #829 New macro function
capitalize
will change the first character at each word break to upper case. e.g. "jolly green giant" -> "Jolly Green Giant". - #810 New macro function
playClip
more suited for short sound FX clips. New convenience functiondefineAudioSource
to allow you to assign a nickname to audio sources and refer to the nickname in the audio functions. Two existing audio functions were renamed as part of the other changes:stopStream
->stopSound
,getStreamProperties
->getSoundProperties
. - #804 Chat notification flash now picks flash color based on task bar color.
- #801 Macro function
getTokenStates
now accepts Token ID and Map Name parameters. - #790 New
execFunction
macro that works likeexecLink
but is used for built-in macro functions and UDFs. - #784 Macro function
json.toVars
now accepts JSON arrays as well as objects. - #782 Macro function
broadcast
no accepts "not-gm", "not-self" and "not-gm-self" as targets. - #766 New perlin noise overlay on tiled textures to reduce visible repetition.
- #761 Bulk macro function changes.
- These functions no longer force whole token updates when used: addToInitiative, setInitiative, setInitiativeHold, setBar, setBarVisible, setName, setGMName, setHalo, setTokenOpacity, setTokenImage, setTokenPortrait, getTokenHandout, setLabel, resetProperty, setTerrainModifier, setVisible, setOwnerOnlyVisible, setAlwaysVisible, setTokenVBL
- These functions now accept additional Token ID and Map Name parameters: setBar, getBar, isBarVisible, setBarVisible, addToInitiative, setInitiative, setInitiativeHold
- #745 Macro functions
getTokens
andgetTokenNames
now take optional Light condition for getting tokens with lights. - #642 New GM macro panel can be opened from the Window menu. Macros on the GM panel are not visible to players.
- #883 Command key shortcuts on MacOS not working. Fixed.
- #874
REST.delete
did not support a header and payload. Fixed. - #846
getInfo("server")
was returning true/false instead of 1/0 for "hosting server". Fixed. - #831 Macro function
json.path.read
was returning numbers as strings. Fixed. - #822
playStream
was ignoring stream parameters set witheditStream
. Fixed. - #820 Functions
execLink
andexecFunction
were not running immediately on local client. Fixed. - #814 Some
update
keywords forcopyToken
were producing exceptions. Fixed. Alternate keywords tokenPortrait and tokenHandout added - #803
getStreamProps
was returning malformed JSON. Fixed. - #800 Incorrect tooltip on Chat Notification Background preference. Fixed.
- #788 Player clients were showing the last campaign file they had loaded in the title bar when connected to servers. Fixed.
- #786 Bugs with the various bar functions returning incorrect error messages or no error when passed a bad bar name. Fixed.
- #775
json.path.read
was returning invalid JSON for JSON arrays of objects. Fixed. - #769 Tokens created with
copyToken
could not be modified in same macro without jumping through hoops. Fixed. - #767 A recent change to improve program responsiveness had capped frame rate at 30 fps making for jerky map panning. Default is now 60 fps and can be adjusted in preferences under Application -> Performance -> Max Frame Rate. Note either reloading the current campaign or restarting MapTool is required after making a change.
- #740 Selecting New Map in the Library image pane with no image underneath would thrown an exception. Fixed.
- #687 The table functions
addTableEntry
,createTable
,setTableImage
andsetTableEntry
if passed an emptyAssetID
string would incorrectly put an empty "Asset://" into the entries asset id field. Fixed.getTableImage
would thrown an exeption if no table image was set. Fixed. - #640 Workaround for errors which occured when three monitors are in use. Related exceptions caught and information is logged.
- #627 Version check on MapTool startup should no longer prompt for updates when using release candidates.
- #529 Smileys are now working again.
Emergency fix for MacOS. Otherwise the same as 1.5.5.
- #763 Fixed null-pointer exception thrown on launch for MacOS.
Several contributors have brought us new features including a scroll bar added to the Select Map drop-down, audio macro functions, performance and UI improvements, and, of course, bug fixes.
- #718 Added new keywords to the
broadcast
macro function: "self", "all", "gm-self" and "none". - #716 Added new parameters targets and delim to macro function
execLink
. Accepts a list of players or the following keywords: "gm", "self", "all", "gm-self" and "none". - #709 New volume slider and mute button now control systems sounds as well as audio streams.
- #708 Significant performance improvements as well as quality improvements made to Resource Library image panel.
- #676 New PropertyType option for
getTokens()
to allow getting only tokens with the specified property type. - #667 New macro functions for playing audio on the local client.
- playStream() - plays local or remote audio files (.mp3 & .wav).
- stopStream() - stops the specified stream.
- editStream() - modifies a playing stream.
- getStreamProperties() - get the properties of loaded/playing streams.
- #665 New server option GM reveals vision On Movement for Unowned Tokens. If unchecked (default) GM movement of unowned tokens with vision will not expose FoW.
- #663 New getInfo("server") info added: isHostingServer and gmRevealsVision
- #649 Zoom macro functions updated to use consolidated code. Bugs fixed.
- getZoom() & setViewArea() were no displaying errors when too many parameters passed.
- getViewCenter() was returning extra delimiter
- #629 Parameter count error messages for macro functions will now include the name of the function.
- #613 Multiple instances of checkNumberOfParameters() and getTokenFromParam() were declared in different macro function classes. Consolidated into FunctionUtil class. No change for end users.
- #612 New macro JSON functions for deep access to complex JSON objects.
- json.path.add()
- json.path.delete()
- json.path.read()
- json.path.set()
- json.path.put()
- #591 New macro function
json.toVars()
converts the key values of a JSON object to variables holding the associated values. - #356 Select Map drop-down now has as scroll bar to handle large numbers of maps.
- #751 PDF extraction of JPEG2000 images was broken. Fixed.
- #746 Move to current dicelib version to that multiple parser versions are not being pulled in.
- #731 Code cleanup so that JavaDoc generation works.
- #724 Macro functions
getViewArea
andgetViewCenter
were returning zoomed map pixels. Fixed. - #713 Campaign macro changes made after server started were not propagating to clients. Fixed.
- #700 Exception thrown when closing MapTool and macro editor is open. Fixed.
- #699
getDistance
macro function was returning erratic results in some cases. Fixed. - #696 MapTool was overly sensitive to mouse movement when trying to right-click on tokens. Fixed.
- #694 Resource Library image panel zoom was temporarily broken. Fixed.
- #688 Macro distance functions were returning incorrect values if diagonal move metric "Manhattan" is used. Distance functions were ignoring metric on Isometric maps. Fixed.
- Affected macros:
getDistance()
,getDistanceToXY()
,getTokens()
- Affected macros:
- #684 Macro function
getDistanceToXY()
returned incorrect values if NO_GRID metric was used. Fixed. - #683 Macro function
getTokens()
was very slow when distance condition was used. On maps with 7000+ tokens the speed increase varies from 3x to 12x depending on grid type. Fixed. - #681 Using "*" wildcard in
stopStream()
andgetStreamProperties()
stopped working. Fixed. - #679 Continuous integration builds were failing. Fixed.
- #670 Macro function json.set() and json.put() will now put in the actual Java data types
null
,true
andfalse
when passed those strings. - #658 Sometimes Send to Back and Bring to Front right-click menu options didn't work. Fixed.
- #653 Select Map button did not have i18n translation key. Fixed and French translation added.
- #637 Incorrect error message from
asset()
if second parameter is a number. Fixed. - #624 Cut and paste of a token would result in an ID change. ID is now kept for the first paste after a cut action.
- #621 Paste from the Edit menu was not being enabled after Cut/Copy from the right-click menu or after a drag-n-drop operation. Fixed.
- #619 Token IDs were changing after a server start. Fixed.
- #601 Switching to Pointer tool from Measuring tool wasn't updating the mouse pointer immediately. Fixed.
- #328 Concurrent Modification Exception thrown by AbstractZoneWalker. Synchronization/locking added to partialPaths list handling. Fixed.
- #187 GM tokens with vision were exposing map areas to players. Fixed. See also #665.
More bug fixes and enhancements mostly thanks to the tireless efforts of new contributor, Guillaume "Merudo" Filteau.
- #617 - Using the right-click Arrange -> Send to Back/Bring to Front functions could undo recent token changes. Fixed.
- #603 - Attempting to import a campaign file as campaign properties was throwing ClassCastException. Now displays a proper error message.
- #594 - Dragging tokens on hex grids did not display the blue path line and move count was slightly outside of the hex cell. Fixed.
- #589 - Title option for dialog() command only worked on first use. Subsequent uses did not update the dialog title. Fixed.
- #587 - Using title option in frame() would keep the frame from being reopened again once closed. Fixed.
- #585 - The temporary property of frames was not being obeyed. Fixed.
- #584 - New functions for getting Frame/Dialog properties.
- getFrameProperties(frameName)
- getDialogProperties(dialogName)
- New property
value
added to frame() and dialog() roll options and can be read with above. See MapTool wiki for more details.
- #582 - Modifying tokens was not updating VBL for tokens with attached VBL. This particular bug was not in released builds. Fixed.
- #578 - Added optional token id and map name parameters to sight macro functions.
- Functions Affected: canSeeToken(), getSightType(), hasSight(), setHasSight(), setSightType()
- #574 - Bug fixes and enhancments for several light macro functions
- hasLightSource(), setLight(), and getLights() no longer causes an NPE if the light type entered doesn't exist
- FoW now automatically updates after using clearLights() or setLights()
- functions now take optional token id and map name parameters
- functions no longer send entire token object on change to clients
- #573 - MapTool credits in Help -> About window updated.
- #569 - Documented undocumented parameters of getPropertyDefault and setLayer. Fixed NPE caused when getPropertyDefault is given only one parameter and there is no current token.
- getPropertyDefault() - Accepts second parameter for Token (Property) Type and returns the default for that type.
- setLayer() - A third parameter, forceShape, forces tokens to be of type Top Down if moved to Object layer and to either Circle or Square for the token layer.
- #563 - Additional parameter map name added to getState, setState, and setAllStates macro functions.
- #560 - Corrected error message if setZoom() was passed argument.
- #558 - Popup notes for Hidden/Object tokens did not include the GM name if only player notes field had content and if only the GM notes had content no name was shown. Fixed.
- #555 - A number of macro functions that set properties on tokens have been updated to use new internal server commands to only pass the relevant data from server to client instead of the entire token object.
- Functions: bringToFront, moveToken, removeTokenFacing, resetProperty, resetSize, sendToBack, setAllStates, setGMNotes, setLayer, setLibProperty, setNotes, setNPC, setOwnedByAll, setOwner, setPC, setProperty, setPropertyType, setSize, setState, setTokenDrawOrder, setTokenFacing, setTokenHeight, setTokenShape, setTokenSnapToGrid, setTokenWidth
- #552 - A number of macro functions were only making changes to tokens locally and not pushing them out to the other clients. Fixed. See also #555.
- Functions Affected: setGMNotes, setNotes, setTokenShape, setTokenWidth, setTokenHeight, setTokenSnapToGrid, resetSize
- #551 - Opening and closing the Edit Token dialog on a Player Client was enabling Visible of FoW even though players did not have access to the setting. Fixed.
- #549 - A number of macro functions were internally calling both Zone.putToken() as well as ServerCommand.putToken() which resulted in the token being sent out to clients twice. Fixed.
- Functions Affected: setTokenImage, setTokenPortrait, setTokenHandout and setTokenOpacity
- #547 - Map name added as optional parameter to getName() and setName() functions.
- #545 - Map name added as optional parameter to the following functions.
- bringToFront, getGMNotes, getLayer, getMatchingProperties, getNotes, getOwners, getProperty, getPropertyNames, getPropertyNamesRaw, getPropertyType, getRawProperty, getSize, getTokenFacing, getTokenHeight, getTokenNativeHeight, getTokenNativeWidth, getTokenRotation, getTokenShape, getTokenWidth, hasProperty, isNPC, isOwnedByAll, isOwner, isPC, isPropertyEmpty, isSnapToGrid, removeTokenFacing, resetProperty, resetSize, sendToBack, setGMNotes, setLayer, setNPC, setNotes, setOwnedByAll, setOwner, setPC, setProperty, setPropertyType, setSize, setTokenFacing, setTokenHeight, setTokenShape, setTokenSnapToGrid, setTokenWidth
- #541 - Map name added as optional parameter to the following functions.
- getTokenImage, getTokenPortrait, getTokenHandout, setTokenImage, setTokenPortrait, setTokenHandout, setTokenOpacity, getTokenOpacity
- #540 - Non-snap-to-grid tokens were dragging by top-left corner on square grids. Fixed.
- #539 - New Macro function getTableEntry() returns raw table entry in JSON format.
- #538 - Macro function tableImage() was throwing an exception if the table entry did not have an image attached. Now returns an empty string.
- #534 - Macro function getMatchingProperties() was not accepting 3rd parameter token ID. Fixed.
- #532 - Fog of War macro functions did not return an error message if an invalid map name was passed in. Fixed.
- Functions Affected: exposePCOnlyArea, exposeFOW, exposeAllOwnedArea, restoreFoW
- #531 - New macro function getViewCenter() returns the location in either pixels or cell coordinates.
- #525 - Macro function exposeFogAtWaypoints() was returning the i18 string name instead of the actual error message.
- #523 - Various HTML entities that could be used to spoof valid roll results trapped from entry into chat.
- #522 - Incorrect tooltip for Preferences -> Application -> UPnP -> Discovery Timeout. Fixed.
- #519 - With AI enabled, using token.denyMove = 1 in the special onTokenMove macro did not block movement allowing tokens to be moved to inaccessible areas.
- #513 - Saving a change to a macro from a different map was throwing an NPE and failing to update macro. Fixed.
- #510 - Passing invalid parameters to the goto() function was incorrectly blaming moveToken(). Blame properly assigned now.
- #509 - Optional tokens and delimiter parameters added to exposeFOW() function allowing user to choose tokens that aren't selected.
- #505 - Bug was preventing the exposeFOW() function from accepting a map name argument. Fixed. Wiki page for restoreFOW() updated to note that it also accepts a map name argument.
- #504 - Result for getInfo("server") call did not include Auto Reveal on Movement and Individual FoW settings. Fixed.
- #470 - Show Movement Distance setting was being ignored. Fixed.
- #434 - Pinned frames displayed frame name instead of title. Fixed. New tabtitle property also added to frame() macro function.
- #404 - Manipulating a token while on a different map could lead to duplicate tokens. Fixed.
- #357 - Vision for Non-Individual Views was broken. For a long time. Fixed!
- #226 - Attempting to adjust map grid (Ctrl-Shift-A) after a Dialog was opened caused exception. Fixed.
- #225 - Attempting to load a file other than a campaign file was throwing a Class Cast exception. Open Campaign dialog now defaults to only showing campaign files and CCEs caught with appropriate error message shown.
- #213 - The following operations do not cause auto-exposure of FoW for tokens. Documenting current behavior as of 1.5.4. See ticket for more details.
- Edit Token Dialog
- Changing Sight Type
- Changing Has Sight
- Right-Click Menu
- Setting Light On
- Macro Functions
- Setting Light On
- Changing Sight Type
- Changing Has Sight
- Edit Token Dialog
- #152 - Undo (Ctrl-Z) was frequently buggy producing unpredictable results. Fixed(in 1.5.0).
- Undo buffers are specific to each client. Undo/Redos only affect the client taking action.
- #150 - Using sendToBack() and bringToFront() macros could break states or bars on tokens. Fixed(in 1.5.0).
- #132 - Calling getname() (lower case 'n') was falling through to setName and returned incorrect error message. Fixed with other changes to token macro functions.
- #116 - strPropFromVars function was creating an extra, empty entry. Fixed. Second parameter made optional and defaults to "UNSUFFIXED".
More bug fixes and enhancements
- #487 Restored previous token dragging behavior as default.
- #485 VBL changes made with Clear VBL on Edit Token Dialog and via setTokenVBL() were not updating local client view nor propagating to other clients. Fixed.
- #481 Token VBL no longer rotated -1 degrees.
- #476 Added catch for missing/null directories cause an NPE in ImageFileImagePanelModel.getImage()
- #473 Shutting down server should no longer throw an NPE when closing port with UPnP
- #467 Updated layout of Start Server dialog so that server setting labels can go across the full dialog instead of being cutoff.
- #461 GM Notes and GM Name for tokens no longer visible to players.
- #450 Corrected footprint problems with native-size figure tokens which affected halos and vision.
- #442 Pathing for 1-1-1 movement corrected to no longer look bad.
- #376 RPTools Gallery Index button removed from Campaign Properties. Gallery no longer exists.
- #288 Added missing Grid shape to Light help and missing Hex and Cone to Sight help of Campaign Properties dialog.
- #261 Selecting white in the color picker for the background of new maps threw exception.
- #191 Auto-Resize dialog couldn't handle larger font sizes. Fixed.
- #166 Tokens dropped on hex grids now pick up pick up map grid size instead of default.
- #487 New Preferences settings for choosing between snapped and non-snapped token dragging as well as hide/show mouse pointer during dragging. Further tweaks to token dragging to improve tracking of token image to mouse pointer position.
- #479 Snap restored as default.
- #298 New Preferences selection for Macro editor themes. Themes can be found in C:\Users\<username>\.maptool-rptools\themes\syntax
More bug fixes and enhancements
- #362 - README updated to reflect current version.
- #118 - Fixed console problem with spaces being in the Java path.
- #441 - Draw Explorer no longer allows attempting to merge a drawing and a template.
- #395 - Fix for Edit menu issues if language not set to English.
- #292 - Out-of-date/bad URLs in Help menu updated/corrected.
- #339 - Fixed Templates not previewing at correct location.
- #377 - Returned values from getViewArea() corrected to be compatible with setViewArea().
- #392 - Default Map Preferences updated to allow decimal Units per Cell values.
- #400 - Selecting a filetype other than an RPTools map file when using Import Map no longer throws exception.
- #386 - Output of java -version no longer included in Help -> Debug output.
- #398 - Newlines can now be inserted into the middle of command lines in the chat window.
- #338 - Templates added for Bugs, Features and Technical Questions to MapTool GitHub issues.
- #335 - New macro functions for controlling logging. See log.* functions on Wiki
- #429 - New macro functions for getting/setting terrain modifiers: getTerrainModifier(), setTerrainModifier()
- #345 - New dicelib version with new dice expressions and new macro functions for accessing individual die roll values:
- getRolled()
- getNewRolls()
- clearRolls()
- #406 - New dice expression XdYdhZ (drop highest) and 7 others.
- #355 - Macro Editor details tab reorganized to give some fields more room. Macro button tooltip entry field made into a larger text area with HTML highlighting. Checkbox to enable/disable hotkey display on button. UDFs now show in auto-complete of macro editor with their tooltip as help text.
- #426 - New Line & Radius templates that start at cells. New icons for all template types.
- #424 - Auto-completion in macro editor now works even if complete function name has already been entered.
- #349 - New macro functions for base64 encoding/decoding: base64.encode(), base64.decode().
- #416 - New macro function movedOverDrawing().
- #407 - New macro function getDrawingInfo().
- #384 - Warning message removed when using Import Map option.
- #365 - Editing token properties now supports word wrap and syntax highlighting.
- #106 - Reset Size added to right-click menu for tokens/stamps.
- #299 - Mouse pointer now visible when dragging tokens.
- #389 - File -> Export -> Campaign File As... now supports converting back to non-decimal map units-per-cell values.
- #332 - Added support for multiple personal lights and setting color for personal lights.
A minor update to 1.5.0 consisting of bug fixes and small enhancements.
- #107 - getTokenNativeHeight/Width Script Function
- #189 - transferVBL function is misnamed
- #278 - Fix existing unit tests and enable unit tests in build
- #326 - defineFunction causes error with macro edit window open
- #324 - fix output of setViewArea. This might break existing macro using workaround to interpret the broken result before the fix.
- #50 - Decimal digits in map properties (distance per cell)
- #255 - Enable Delete Button on Draw Explore
- #289 - token opacity slider needs preview
- #332 - Allow to set color for personal lights in campaign Sight types
A major update pulling in almost a years worth of enhancements and bug fixes from the Nerps fork back to the main MapTool repository. This will bring us back to a single build for users once again while we continue working on MapTool 2.0.
- #113 - Macro function getMoveCount() does not return terrain modifier costs. See issue for full details but basically a new parameter is added so getMoveCount(0, 1) will return movement costs taking into account any Terrain Modifiers.
- #108 - Fix setTokenOpacity to update token for players.. Token is now updated with opacity effect on the server after setTokenOpacity macro calls.
- #92 - MapTool should default to UTF-8 encoding. Windows likes to default to it's one file encoding which can cause issues in macros and certain encoded characters. MapTool will now always launch using UTF-8 file encoding! I've also added a 'Encoding Information' section in Gather Debug Info under the help menu to verify what encoding you are using.
- #80 - Comparison method violates its general contract in FogUtil.calculateVisibility(FogUtil.java:81). This should be fixed now.
- #81 - Cell Highlight distance text not sizing for grid sizes. This is now fixed
- #76 - Will no longer see errors when attempting to open initiative window on Linux or MacOS.
- #68 - MapTool's i18n language override enabled via Edit -> Preferences -> Startup tab. This will override your default language set by your OS.
- #41 - Allow player owned tokens without "sight" to move within currently exposed FoW, e.g. areas other PC token can currently see. Hopefully this is finally squashed properly...
- #44 - If running the JAR version with your own JRE installed, Edit -> Preferences will no longer throw and error and blow up! Instead the Startup tab will be grayed out (as those values will not be used and you must make your own startup script to set memory settings when using the JAR format)
- #27 - Code cleanup, .pdf & .por files will no longer throw errors to the log file.
- #65 - Gradle will once again build and deploy vs throw an error getting the branch name.
- #179 - Pulled in @Jaggeroth change from main RPTool's Repo; ZOrder sort violation problem by restoring the original comparator and only using the new figure comparator when sorting figure only.
- #54 - Missing Preferences menu option on OS X
- #59 - App does not check for new versions in 1.4.4.1
- #5 - Adding new state causes java.lang.ArrayIndexOutOfBoundsException no more!
- #6 - Fixed various Typos
- #15 - Lighting wasn't immediately forced to connected clients and should be fixed now.
- #18 - Exporting Campaigns back to 1.4.0.1 was failing due to new objects added. You can now export any campaign back to 1.4.0.1 but as always, this is permanent in that it will strip out new objects as in TokenVBl, new lighting options, etc but macros will not be touched and may fail if they contain new macro functions not available in 1.4.0.1.
- #19 - Default save location for tokens are now remembered!
- #20 - Added missing documentation for lights/vision, e.g. 'scale'
- #21 - Lights are not updating properly based on ownership looked like it was tied to other 'light' bugs and should now be fixed.
- #23 - Fixed sendToBack & bringToFront macros broke states and bar changes in the macro. This was an OLD one going back to 1.3b63! You can now safely use these functions in your macro now!
- #30 - Players see NPC movement when there are no lights no more! This was another old bug going back to 1.3b-something and only showed itself if you had NO lights (including personal lights, aka darkvision).
- #232 - Mouse pointer incorrectly changing to Hand pointer was an oversight which has been corrected, hands down the best bug fix!
- #210 - Non-snap-to-grid Tokens have bad last path info Tokens now walk the straight and narrow again, no more drunken paths shown.
- #125 - When entering invalid JVM values in Startup Preferences, a dialog will not display explaining why it was not saved. Another dialog will show if any JVM values were changed warning the user that invalid options could prevent MapTool from starting and to confirm changes.
- #77 - Tweaked the A* algorithm for a more natural and straighter move though open spaces for both square and hex grids. Also tweaked the A* algorithm to find the shortest path more consistently.
- #49 - Pathfinding! When activated (via new 'AI' toggle button), tokens will find the shortest path to it's destination as you drag them on the token or hidden layers, taking VBL into account. Yes, this means your tokens will no longer walk thru VBL! If no path can be found (or found within several seconds) no path will be shown, however you can still move your token to that location. This can happen because the area is blocked off or you are working with a very complicated or large map. With MapTool allowing unbounded/nearly infinite map space, I had to include a timeout to prevent an infinite search. A new token config value is also now available called Terrain Modifier. This multiplies the cost of moving into that tokens cell and taken into account with Pathfinding is used. Some examples are: Setting the multiplier to 2 will cost 10 feet of movement vs 5 feet acting like difficult terrain. Setting the multiplier to a sufficiently high number, like 99999, will effectively block the movement and make the token go around the obstacle. Useful for things like an arrow slit, window, lava, etc. Any token can have this modifier, NPC tokens to make PC tokens go around them vs through them, or stamp tokens on the object layer like oil or water. You could also place tokens on the hidden layer over rocky terrain to denote difficult terrain. Please note, at this time no macros are available to access these new feature, nor server options to force players to use this mode of moving tokens. Due to the complexity of this feature, I felt it better to get this out to you, the user, to play with and use (or not use) and provide feedback. Therefore the Terrain Modifier could change in the future or expand in functionality. There could be performance related hits as well, although I did my best to mitigate this, as well as you can turn this feature off and revert to basic movement. Also note, currently fractional modifiers are not supported at this time nor straight addition modifiers. I plan to expand this functionality over time.
- #45 - Lighting has been improved to greatly reduce lag when multiple light sources are on a map. It also helps alleviate the slowness you encounter as you reveal more and more FoW.
- #63 - Spacebar functionality has been restored to it's original behavior, including ctrl+spacebar & shift+spacebar. A new shift+ctrl+spacebar command along with a new pointer image is now available. When this keystroke combo is pressed, and you are a GM, the pointer will center & zoom all connected clients to that point. When it is released, all clients will return to their previous view point & zoom.
- #67 - A new vision/light type of GRID has also been added, which is a circle of the specified size but only lights up the affected grid cells within range, much like using the template tool. This is useful in systems like Pathfinder if you want to see exactly which grid cells (squares) are affected by a Light/Aura or can be seen. Aura for Channel Energy for instance, or seeing which grid cells are in dim light for concealment.
- #71 - The default data directory (USER_HOME/.maptool-{Vendor}, so for Nerps fork, .maptool-Nerps) can now be overridden in Edit -> Preferences -> Startup tab.
- #43 - Spotless and .appveyor.yml updated. This is purely a build process enhancement to make deployment of the releases better.
- #66 - Update packaged JRE to Java 10 and verify MapTool runs under Java 10. *Note: Java 9 was a short term release hence the update to Java 10.
- #8 - New packaging mechanism! OS specific "installs" are now being generated using Oracles native javapackager tool. It packages the JAR, native executable, and JRE in the following packages: .exe (Windows), .dmg & .pkg (MacOS), & .deb (Linux) as well as unified JAR that can be run manually.
- #26 - MapTool now checks and alerts user when a new version is available as a GitHub release and allow you to download it! You can "skip" a version to stop alerting until the next release comes out or cancel all auto update checks. It will download the release based on your OS (.exe, .pkg, or .deb)
- #9 - New macro function added to change token ownership to 'Owned by All', setOwnedByAll(boolean [,tokenID]) returns boolean
- #22 - Darkvision changed to Darkvision: circle r60 (removed distance=62.5)
- #25 - Cone lights now accept 'offset=x' as an option just like vision
- #33 - Java stack traces are sent automatically to Sentry.io for aggregation and notification. No private info is gathered or sent. This lets me know if an unreported bug shows up and how critical may be so I can get it fixed quicker and with minimal info needed from users.
- New RESTful functions getRequest & postRequest to send GET & POST requests to a URI. *Note: You must first turn access on in Preferences for these macro functions to work.
- New function exportData exportData(FilePath file, String data, boolean appendToFile) which saves string data to external file.
- New function getEnvironmentVariable(String name), Returns the value stored in the Environment Variable.
- New menu option added to the "Connections" window. Right clicking a player will offer a "Whisper" command that prepopulates the chat window with a whisper macro.
- #237 - Added support to use shift-enter to insert newlines into the command entry box (also known as the chat entry box)
- #239 - MapToolScriptTokenMaker now handles function names with . notation and dynamically pulls in all functions names. TokenMakerMaker no longer needs to be ran upon changes to MTScript.
- #240 - Macro Editor now has Auto-Completion for macro functions! A brief description and summary can be displayed (these will be added as time permits)
- #332 - Allow to set color for personal lights in campaign Sight types
- #324 - fix output of getViewArea. This might break existing macro using workaround to interpret the broken result before the fix.
- #326 - defineFunction with open edit window
- #365 - Support wrap and syntax in property editor