Skip to content

Latest commit

 

History

History
1253 lines (1169 loc) · 91.6 KB

CHANGE_LOG.md

File metadata and controls

1253 lines (1169 loc) · 91.6 KB

Maptool 1.7.0

Lots of enhancements, bug fixes and improvements to the code base.

Some Highlights

  • New macro functions for math operations on lists and arrays.
  • New macro function markdownToHTML() converts text in Markdown to HTML.
  • nmeier has brought the majority of the MapTool UI under the control of the Look & Feel themes accessible from the Themes menu.
  • New GM option to disable the use of the Edit Token dialog by players.
  • Issue with decimal point in Map Units per Cell for European locales fixed.
  • New overlay() function allows for transparent overlays over the map area. Think MMORPG-like GUI elements.
  • New Overlay helper functions for management.
  • Huge localization effort by Merudo has brought translatable strings to the majority of the MapTool dialogs.
  • MapTool can now import the Dungeondraft VTT export format.

Changes since 1.7.0-beta-2 in BOLD.

Enhancements

  • #1847 Horizontal scrolling restored for MacOS.
  • #1808 New impersonate() function for setting impersonation.
  • #1801 Performance improvement for token image handling. Copying large sets of tokens from map to map, switching between maps with a large number of tokens, dragging large numbers of tokens have all been improved.
  • #1797 Forms now work in Chat window!
  • #1765 New macro function to take Markdown text and covert to HTML. See issue for details.
  • #1764 New macro functions math operations on lists and JSON arrays.
    • math.arraySum(), math.arrayMin(), math.arrayMax(), math.arrayMean(), math.arrayMedian(), math.arrayProduct()
    • math.listSum(), math.listMin(), math.listMax(), math.listMean(), math.listMedian(), math.listProduct()
  • #1758 Restyled Initiative and Selection windows for usability and compatibility with Look & Feel themes. See issue for details.
  • #1728 Allow JavaScript/CSS/fonts to be fetched from approved CDNs in frame5/dialog5 window. See issue for details.
  • #1678 Error reporting improved when MapTool can't start. More likely to get information in log file.
  • #1669 New helper functions for HTML Overlays
    • isOverlayRegistered(), closeOverlay(), getOverlayProperties()
  • #1597 Macro functions setTokenPortrait("") and setTokenHandout("") will now clear their respective images from a token if passed an empty string for asset ID.
  • #1553 Many of the dialogs in MapTool have been localized so that the text strings are pulled from the I18N translation files.
  • #1528 New parameter for dialog and frame functions to prevent scrolling on reload.
  • #1518 PDF image extraction in the Resource Library now supports extaction of full page images.
  • #1506 MapTool now supports importing Dungeondraft .dd2vtt files. This brings in not only the map image but also vision blocking information and the location of light sources.
  • #1473 Image tokens (image:token) now included in output of getInfo("client").
  • #1463 List of panels in Window menu is now sorted alphabetically.
  • #1425 New macro function overlay() allows for the creation of multiple transparent HTML map overlays.
  • #1318 Chat output tweaked so that token names are now part of the first output line keeping long token names from causing the output are from being reduced leaving large empty areas.
  • #975 New GM option to disable use of Edit Token dialog by player clients.
  • #500 Ars Magica Stress Dice roll option.
    • ASnb#+b / ASnb#-b (or asn#+b / asn#-b) - return is a string
    • ANSnb#+b / ANSnb#-b (or ansn#+b / ansn#-b) - return is a number
  • #412 New macro function getDefinedFunctions() to get list of user-defined functions. Output of getInfo("client") also updated to include location of called function.
  • #27 Reroll Once roll option added.
    • 2d6rk3 - reroll any die less than 3 and keep new result
    • 2d6rc3 - reroll any die less than 3 and keep higher value
  • #368 Macro groups can now be renamed.

Bug Fixes

  • #1853 CSS loading in incorrect order for Frame5/Dialog5/Overlay when CSS link points to macro. Fixed.
  • #1838 Internal changes to make detecting Show as Player within code more consistent.
  • #1831 math.* functions always returned 0 as the bad argument when passed non-numeric values. Fixed.
  • #1828 getSightType() would fail on new created tokens. Fixed.
  • #1822 Changing name/image of impersonated token wasn't updating Chat window. Fixed.
  • #1814 Several macro functions would fail as not trusted when called by GM in chat. Fixed.
  • #1812 Call a macro on the GM panel from a trusted context wasn't keeping trusted status. Fixed.
  • #1804 Map selector reworked to behave like a normal popup menu and be theme compliant.
  • #1803 PC Tokens on Hidden layer were visible on Player's Map Explorer when Strict Token Ownership was off. Fixed.
  • #1799 **Light segments for Light defitions in the results of getInfo("campaign") was malformed. Fixed.
  • #1790 **Several dialogs had text that was hardcoded to the Tahoma font which doesn't support CJK characters. Fixed.
  • #1788 **Pressing delete key with Draw Explorer active and no drawings would throw NPE. Fixed.
  • #1784 **Attempting to use a port outside of valid range would cause start server to fail without a message. Fixed.
  • #1782 **Form <select multiple> element only returned one element. Fixed.
  • #1775 **Select next/previous token in Selection window broken (Unreleased). Fixed.
  • #1757 **Macro function moveToken() did not correctly handle tokens not centered in the layout config. Fixed.
  • #1752 Reverted Look & Feel changes to restore native OS title bars because of performance issues and conflicts with MacOS.
  • #1732 Depending on situation the macro function getImpersonated/Name() could return the Current Token or the Impersonated Token. New boolean parameter adds ability to specify returning the actual Impersonated token.
  • #1725 Selecting token/object via Map Explorer wasn't updating Selection panel. Fixed.
  • #1720 Token properties with default values were not having spaces trimmed from name. Fixed.
  • #1709 Portrait images were rendered with low quality scaling. Improved.
  • #1700 Tokens/stamps showing as "?" image until map is updated. Fixed.
  • #1688 Figure tokens and tokens flagged as Visible over FoW on hidden layer were visible to players. Fixed.
  • #1686 Crowdin configuration file was display as option in Preferences -> Language. Fixed.
  • #1675 Left-click on a token when multiple are already selected wasn't clearing selection on other tokens. Fixed.
  • #1670 ModelChangeListeners on Impersonate/Selection panels were not getting removed causing a performance hit as more maps were added to campaign. Fixed.
  • #1667 Fix for token properties issues was not pulled from 1.6.1. Fixed.
  • #1666 Changing token selection was causing Impersonated panel to update causing a delay. Fixed.
  • #1658 Deleting a token was causing the Impersonated panel to update cause a delay. Fixed.
  • #1657 Macros deleted via the Common group were not being updated on clients. Fixed.
  • #1654 Deleting/cutting multiple tokens cause the TOKEN_REMOVED event to be fired multiple times creating lag as the Selection and Impersonate panels were then reset for eac one. Fixed.
  • #1653 Changing snap-to-grid status for tokens and stamps could cause them to move. Fixed.
  • #1648 Null Pointer Exception when toggling Player Movement Lock as non-hosting GM. Fixed.
  • #1646 Null Pointer Exception when a map is deleted while a token is being edited. Fixed.
  • #1642 VBL mode button wasn't staying in sync with actual mode. Fixed.
  • #1638 Macrolinks added via Javascript don't work in frame5/dialog5. Fixed.
  • #1635 Window decorations in MapTool dialogs and frames changed to pick up color scheme from themes.
  • #1631 Add Resource dialog wasn't using theme colors. Fixed.
  • #1629 Campaign Properties dialog was too wide, used strings not in translation files, didn't use theme colors. Fixed.
  • #1614 Pressing map zoom keys while a frame5 textbox had focus would zoom map. Fixed.
  • #1613 User selected theme was not being applied to menus causing text to not be rendered for some languages such as Japanese. Fixed.
    • Also fixed Edit Token dialog throwing exception for translated VBL tab name.
  • #1608 Various menu options would throw an exception if no maps in campaign. Fixed.
  • #1605 Clicking on FoW button and others after last map was deleted would throw NPE. Fixed.
  • #1589 Jumpy token movement on all layers, free-size or fixed, snap or non-snap, fixed for all grid types.
  • #1588 Popup for setting initiative from initiative panel showed placeholder instead of token name. Fixed.
  • #1575 Unclosed parens in Token properties definition would produce a StringIndexOutOfbounds exception. Fixed.
  • #1572 Deleting last map with FoW would produce an NPE if Map menu opened. Fixed.
  • #1570 Attempting to import a macroset as a macro produced exception. Exception caught and error message shown to user.
  • #1568 Deleting a map while a token was being dragged would produce a NPE. Fixed.
  • #1566 Saving lib:tokens would fail due to colon in name throwing exception. Fixed.
  • #1564 Function playClip() could fail to create a MediaPlayer throwing an exception. Exception caught and error message presented to user now.
  • #1551 Javascript console.lognot working during page load. Fixed.
  • #1548 Table functions getTableAccess(), getTableVisible(), setTableAccess(), setTableVisible(), getTablePickOnce() and setTablePickOnce() were returning strings instead of BigInteger values. Fixed.
  • #1538 Close button on Token Editor changed to Cancel.
  • #1501 "User data directory is already in use" error when using frame5/dialog5 on two instances of MapTool. Fixed.
  • #1498 Tooltip for Language seletion in Preferences had wrong text. Fixed.
  • #1495 Chosing Edit on a macro already being edited no longer creates new Find/Replace entries in Edit menu.
  • #1441 Content of input() dialogs wouldn't fill full width of window with minimal prompt/input sizes. Fixed.
  • #1426 NPE on close caused by editing the same macro twice (simultaneously). Fixed.
  • #1317 Horizontal scrolling issues on MacOS fixed.
  • #1264 Fixes for thread-safety in Campaign Auto-Save.
  • #1263 Fixes for thread-safety in Campaign Loading.
  • #507 The map setting Units per Cell wasn't being handled correctly for locales that use a comma for the decimal point. Fixed.
  • #375 Last save location preserved separately for Tokens, Maps & Campaigns.

Other

  • #1843 Refactor of Initiative classes to avoid raw list types.
  • #1776 dicelib updated to 1.6.1
  • #1704 dicelib updated to 1.6.0
  • #1223 Javadocs now build without errors.

Maptool 1.6.1

Hotfix for token property issue.

Bug Fixes

  • #1504 Edit Token dialog would hold onto a previous tokens property values and property type. Fixed.

Maptool 1.6.0

Lots of enhancements, bug fixes and improvements to the code base.

Some Highlights

  • New dialog and frame functions support HTML5, JavaScript and CSS.
  • Token VBL Simplification - Generating VBL for large, complex tokens like maps is much faster and producers much tighter VBL that is less demanding. Also allows for automatic generation via the setTokenVBL() macro function.
  • Movement Blocking Layer - Now you can make those Force Fields that would block movement but not sight.
  • Look & Feel themes can now be selected from the Themes menu. More enhancements to come.
  • Pre-defined Campaign Property sets can now be selected and loaded in the Campaign Properties dialog.
  • New Marker assets added to Default in the Resource Library - Use Restore Default Images in the Help menu to get them.
  • The annoying behavior where browsing for a drawing texture would cause the Resource Library to also change folders has been fixed!

Enhancements

  • #1427 Improved click response for macro links. Bonus: anchor links <a href="#xxx"> now work in frames and dialogs.
  • #1382 Connection Info -> External Address no longer depends on Server Registry being available.
  • #1363 New and updated Marker assets in the Default Resource Library
  • #1337 Pick Once support added to Tables. Currently uses macro functions to set/reset the tables. GUI support to come.
  • #1323 New menu item, Frameworks, in Help menu opens default browser to Frameworks page on wiki.
  • #1320 Downloadable artpacks in the Add Resource to Library dialog are now sorted by name.
  • #1313 Gather Debug Information window (Help MenU) refactored. Window opens immediately with note that data collection is in progress and then updates once data has been collected.
  • #1278 JSON option added to PROPS type for input() function. WIDTH option added to PROPS. Defaults to 14.
  • #1270 Map Properties dialog now has a delete button to remove embedded maps.
  • #1218 Token VBL Simplification - major performance increase in generation of VBL for tokens but also in producing VBL that is much less demanding on the system. Has color picker now instead of relying upon transparency.
  • #1216 Movement Blocking Layer - similar to VBL, but specifically for blocking movement and not sight or light.
    • AI button and new VBL Blocks Movement button moved over by Measuring tool and are now under GM control
  • #1210 RADIO and LIST fields for input() function now support a DELIMITER option.
  • #1107 Using the line drawing tools while holding Alt will snap to grid centers.
  • #979 New macro functions for setting/getting Token Image Layout properties.
    • setTokenLayoutProps(scale, xOffset, yOffset, tokenID, mapName) and getTokenLayoutProps()
  • #972 New macro functions for HTML5 compatible dialogs and frames.
    • dialog5() and frame5()
  • #921 Support added for selecting an available them via the Themes menu in MapTool.
  • #891 Menu option and macro functions to show/hide Text Labels and get display status.
    • showTextLabels(), hideTextLabels() and getTextLabelStatus()
  • #643 Grid types for Light and Sight now supports Hex grids.
  • #221 Campaign Properties dialog now has a drop-down to select from pre-defined Campaign Property sets (.mtprops).

Bug Fixes

  • #1477 HTML5 form submission ignored novalidate and formnovalidate attributes. Fixed.
  • #1472 getInfo("campaign") was not returning all states. Fixed.
  • #1469 Cursor offset when dragging snap-to-grid tokens on background layer. Fixed.
  • #1468 onChangeSelection event was firing multiple times per selection action. Fixed.
  • #1460 Uncaught cases in switch statement produces unhelpful error message. Fixed.
  • #1456 Pressing Enter in an HTML control loses focus - fixed.
  • #1455 findToken() using GM name failed when run via a trusted macro by Player client. Also getGMName() & getGMNotes() - fixed.
  • #1453 HTML5 form validation ignored, js form.submit() borken, button w/o type broken - fixed.
  • #1450 Fixed malfunctioning HTML elements in HTML5 dialog/frames: <input>, <button>, <map>, and <a>.
  • #1441 Title bar on input() dialogs didn't fill width of window. Fixed.
  • #1430 Macro links weren't working with HTML image maps. Not in relased code. Fixed.
  • #1412 MBL/VBL was flickering when switching modes. Fixed.
  • #1408 Draw Explorer drawing previews reflected pen width even with foreground was transparent. Fixed.
  • #1400 Function getAllPropertyNames() was ignoring delim parameter if not set to json. Fixed.
  • #1381 Exporting a macro with the same name as an existing .mtmacro file was producing a bad message and not warning the user. Fixed.
  • #1309 Three of the default maps have been missing from the Resource Library for ages. They are back now.
  • #1300 copyToken() macro function bugs when only a token name provided and though succeeding was reporting an error when making multiple copies. Fixed.
  • #1299 Issue with moving tokens next to VBL related to maps having grid offsets fixed.
  • #1292 The setState and unsetStates conditions for getTokens and getTokenNames were returning the wrong information. Similar issues with propertyType, owned, and light also fixed.
  • #1288 Token Properties grid in the Edit Token dialog didn't fill the available area. Fixed.
  • #1278 PROPS option for input() broken. Fixed.
  • #1269 Exporting a campaign with too short a name was throwing an exception. Fixed.
  • #1267 Null Pointer Exceptions for Zone fields during Auto Save and Campaign Lod. Fixed.
  • #1243 Once a GRID light source was used on a map, further use on maps with a different grid size would be the wrong size. Fixed.
  • #1236 getToken* functions failing when setState/unsetState condition used. Fixed.
  • #1231 Choosing a non-writable directory for downloading updates was failing silently. Fixed.
  • #1228 getLastPath was returning bad path information. Fixed.
  • #1225 Exception during L&F setup. Not in released code. Fixed.
  • #1217 Moving tokens or measuring across long distance (200+ cells) performed poorly. Fixed.
  • #1206 JSON function code was returning NULL if the function couldn't be found. Now reports unknown function.
  • #1204 getToken* was throwing an exception if a string was passed to the layer option. Fixed.
  • #1092 Token States, Bars, and Halos weren't rotating properly with off-center, top-down tokens. Fixed.
  • #1049 Token VBL wasn't rotating properly with off-center, top-down tokens. Fixed.
  • #650 Can't pass JSON data from a form submit. Fixed.
  • #616 Token selection issue after combination dragging token and panning map. Fixed.
  • #472 Edit Token Dialog gets slower to open with each subsequent reopen. Fixed.
  • #198 Using tab panels in input() could add large empty space at bottom of panel. Fixed.

Other

  • #1432 Updated splash & install images to remove Dev Release notations.
  • #1355 Moving remaining classes off old JSON library to GSON.
  • #1352 Replaced use of "UTF-i" by StandardCharsets.UTF_8
  • #1325 Unit tests added for ImageUtils.
  • #1284 Removed superfluous ParserException try/catch blocks.
  • #1271 Clean up of Drawing Delete confirmation dialog code with comments and javadocs plus comments on the I18N strings.
  • #1268 Refactored PackeFile class to use try with resource instead of try/catch/finally blocks.
  • #1253 MD5 key generation wasn't thread-safe. Fixed.
  • #1219 Javadocs generated via gradlew javadoc switched to HTML5.
  • #1215 Replaced calls to deprecated IOUtils.closeQuietly() with try-with-resource.
  • #1189 Unit tests added for JSON macro functions.

Maptool 1.5.14

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.

Maptool 1.5.13

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 if setState or unsetState 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.

Maptool 1.5.11/12

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.
  • 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() and getTokens() 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 an if() 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 returning null 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 using createMacro() 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 and json.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

Maptool 1.5.10

Emergency bug fixes

  • Fix for exception when deleting multiple tokens.
  • Fixed German translations so macro editor and menu shortcuts work.

Bug Fixes

  • #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.

Maptool 1.5.9

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 .

Enhancements

  • #753 Reserved variable names init.current and init.round are now highlighted in macro editor and documented on wiki.
  • #359 Added infomation from getInfo("server") and getInfo("campaign") to the Sentry error logging.

Bug Fixes

  • #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") and getInfo("server"). Removed from server 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.

Other

  • #1045 Update remaining dependencies.
  • #1037 Updated dependencies with reported vulnerabilites.

Maptool 1.5.8

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!

Enhancements

  • #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()
  • #901 Default stack size increased to 8MB. See Preferences -> Startup
  • #898 Macro functions getOwned() and getOwnedNames now take optional map name parameter.
  • #897 Toolbar ribbon now has a hide/show gadget.
  • #742 Macro functions getTokens() and getTokensNames() have new owned 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.

Bug Fixes

  • #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(), and setInitiativeHold() 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.

Maptool 1.5.7

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!

Enhancements

  • #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 at TRACE 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 function defineAudioSource 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 like execLink 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 and getTokenNames 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.

Bug Fixes

  • #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 with editStream. Fixed.
  • #820 Functions execLink and execFunction were not running immediately on local client. Fixed.
  • #814 Some update keywords for copyToken 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 and setTableEntry if passed an empty AssetID 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.

Maptool 1.5.6

Emergency fix for MacOS. Otherwise the same as 1.5.5.

Bug Fixes

  • #763 Fixed null-pointer exception thrown on launch for MacOS.

Maptool 1.5.5

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.

Enhancements

  • #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.

Bug Fixes

  • #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 and getViewCenter 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()
  • #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() and getStreamProperties() 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 and false 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.

Maptool 1.5.4

More bug fixes and enhancements mostly thanks to the tireless efforts of new contributor, Guillaume "Merudo" Filteau.


Bug Fixes & Enhancements

  • #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
  • #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".

Maptool 1.5.3

More bug fixes and enhancements


Bug Fixes

  • #487 Restored previous token dragging behavior as default.
    • #315 Tokens move less erratically.
    • #300 Tokens have less drift.
  • #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.

Enhancements

  • #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

Maptool 1.5.2

More bug fixes and enhancements


Bug Fixes

  • #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.

Enhancements

  • #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:
  • #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.

MapTool 1.5.1

A minor update to 1.5.0 consisting of bug fixes and small enhancements.


Bug Fixes

  • #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.

Enhancements

  • #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

MapTool 1.5.0

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.


Bug Fixes

  • #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.

Enhancements

  • #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