MapTool 1.3 Development Build 51

New build announcements plus site news and changes.

Moderators: dorpond, trevor, Azhrei, Craig

User avatar
trevor
Codeum Arcanum (RPTools Founder)
Posts: 11311
Joined: Mon Jan 09, 2006 4:16 pm
Location: Austin, Tx
Contact:

MapTool 1.3 Development Build 51

Post by trevor »

The "Holy Crap We're Almost There!" build.

This build makes a change to the data model (specifically to support auras) that makes the save file not backward compatible with 1.3b50. If you want to use b51 but want to keep b50 open as an option, there is a preference at Edit->Preferences->Application->Save->1.3b50 Compatibility Mode

Please post questions and comments about this build in this thread and bugs in the MapTool->Bug Report forum.

Build 51
* Blast template now increments in size by one, not two
* Introduce framework for auto updating campaign file format to new versions
* Render colored light above object stamps
* Show owned token movement above the fog
* Holding 'z' while zooming with the mouse wheel inverts the direction of the zoom
* Show confirmation dialog when overwriting an existing campaign file
* Add formal logging
* Optimize drawable, stacks, line tool drawings, and fog rendering
* Put Snap To Grid back onto the token popup menu
* Allow PCs to not have sight (Edit Token dialog, Config tab, Has Sight checkbox)
* Allow turning portraits off by setting portrait size to 0 in preferences
* Add new light shape 'cone'
* Fix bug: token z-order is not preserved when using copy-paste
* Fix bug: token labels are drawn underneath fog and are unreadable
* Fix bug: token movement labels can be seen by players even when token being moved is not within the visible area
* Fix bug: Init panel throws exception when deleting a token
* Fix bug: changing map light type (off/day/night) doesn't update the light sources on the map
* Fix bug: Selecting 'Owner' checkbox on bars and status overlays doesn't stick after reloading campaign
* Fix bug: double clicking a hidden token does not select the hidden layer
* Fix bug: hidden layer tokens should be drawn above the object layer tokens
* Fix bug: states panel doesn't update when state list changes in campaign properties
* Fix bug: stacking icon and list are not always accurate
* Fix bug: Health bar display bugs (single image, two image not rendering correctly)
* Fix bug: players can click on object tokens that are in the fog and get the player notes
* Fix bug: Cannot impersonate a token with the same name as the player
* Add /cls alias to the /clear macro (Contributed by jfrazier)
* Add /emotes (also /mes) macro that does a plural "'s" emote (Contributed by jfrazier)
* Fix bug: Clear Group/Panel not working in the Campaign Panel (Contributed by applekor)
* Updated Spanish translation by Patricio

Contributed by Phergus
* Fix bug: cell facing is broken on loaded campaigns
* Expand hex cell shape by a few pixels
* Update windows exe launcher to handle use config file
* update grid facings when preferences are changed

Contributed by Azhrei
* Externalization of a lot of text
* Remote image repository updating
* Holding CTRL while dropping a token will force the New Token Dialog to open
* OpenJDK networking bug workarounds
* Code to support Command/Meta on SoyLatte/OpenJDK OS X

Contributed by Craig Wisniewski:

Bug Fixes
* Allow resetting of macro dialogs
* json.contains now works for json arrays and not only for json objects.
* Removed a lot of null pointer bugs in macro functions.
* Corrected a lot of error messages in the macro functions so now all errors
should reflect the function the occurred in.
* Players can no longer call removeAllFomInitiative(),
removeAllPCsFromInitiative(), or removeAllNPCsFromInitiative().
* Default properties will now be evaluated on the statsheet if there is no
value in the property. Even from within evaluated properties.
* Getting a token property (via either getProperty() or val = property) will
now always return its default value (if a the property is not set and it has
one). Previously this would only occur if the token had been been edited
with the edit token dialog, which lead to inconsistent behavior.
* The macro functions to edit token macros now check the player editable
status of the button before they will allow the player to edit them. If you
need to edit a not player editable macro button from macro then you will
have to put it into a trusted macro.
* Fixed a bug with specifying the height of a dialog in a macro using
[dialog(...): ...]
* Updated macros so that tokens are always repainted.
* The parser is now a log less zealous about trying to evaluate things.
Values in variables should no longer be evaluate by just reading the
variable. Note: this is not true of values in properties, reading them will
evaluate them. If you wish to get an unevaluated value from a property use
getRawProperty(). So now it is save to do things such as a = “[1d20]”
without fear of interference from the parser. Use evalMaco()/execMacro() if
you do want to evaluate these strings.
* Initial Tool Tip Delay and Duration of Tool Tips tweaked so that they
appear a lot quicker and stay around long enough to read them.
(These values can be changed by the user).
* The parser now trys to convert single element JSON arrays to arrays before
trying to parse them. So single element JSON arrays will no longer give you
head aches.
* Macro dialogs and frames no longer autoscroll the the bottom, the scroll
bars will be positioned to show you the top left hand corner of the
dialog/frame.
* json.get() now returns an empty string if the value is not set not a null.
* Fully trusted macro hi-lighting now works from the selected token macro
panel (previously it only worked from the impersonated panel)
* [macro(...):...] can now call macros from @campaign, @global, and @token
(the impersonated token).
* macroLink() and macroLinkText() functions can now use @this, @campaign,
@global, and @token.
* getImage(), getTokenImage(), getPortrait(), tblImage(), tableImage() no
longer limit the max image size to 500.
* When clicking on macro buttons macro.args is set to “” by default (no more
unwante prompting when clicking on those buttons that are either clickable
or callable via [macro(...):..]
* JSON Objects now work in macro links.
* currentToken(), getImpersonated(), getImpersonatedName(), getSelected(),
getSelectedName(), getVisible(), getVisibleNames() functions no longer need
to be in a trusted macro as the player already knows the tokens exist.
* Image: and Lib: utility tokens are not returned from the getToken functions.
* When ever an exception occurs during a macro the error message will now
always return either the name of the macro function that failed, or the
line that failed (so no more vague cant execute: null, or cant execute:
Java.lang.String error messages).
* Typing carriage returns into <textarea> will no longer cause the macro.args
string to break.
* Macro function setHasSight() can now be called on PCs to match changes
elsewhere.

Changes
* Due to unbelievably popular demand getProperty() will now evaluate the
property and return the default if the property is null. If the property is
null and there is no default then “” is returned. If you want the old
behavior of getProperty() use getRawProperty().
* getTokens()/getTokenNames() now can accept a JSON object with multiple
conditions then need to be fulfilled. See the detailed post for more details.
* json.get() can now be used to return array slices and multiple keys from a
JSON object.
* When using a form in dialog or frame specifying method=’json’ will pass the
values from the form to the macro in a JSON object.
* createMacro(), setMacroProps(), getMacroProps() have been updated to support
the properties added to macro buttons since they were created.
* When using a JSON argument format of createMacro(), setMacroProps() you can
now specify the command. (this was not possible to add for string
properties).
* The following macro functions can now accept an optional last parameter
which is the token to get the the information from or to modify (only
available in trusted tokens).
* hasMacro(), getMacros(), getMacroProps(), getMacroIndexes(),
getMacroCommand(), createMacro(), setMacroProps(), setMacroCommand(),
getHalo(), setHalo(), getState(), setState(), setAllStates(), getVisible(),
setVisible(), getPropertyType(), setPropertyType(), getPropertNames(),
hasProperty(), isPC(), isNPC(), setPC(), setNPC(), getLayer(), setLayer(),
getSize(), setSize(), getOwners(), isOwnedByAll(), isOwner(),
resetProperty(), setProperty(), getProperty(), isPropertyEmpty(),
bringToFront(), sendToBack(), getLabel(), setLabel()
* The following macro functions can now be called from trusted macros
* getCurrentInitiative(), setCurrentInitiative(), addAllToInitiative(),
addAllPCsToInitiative(), addAllNPCsToInitiative(), setInitiativeRound,
nextInitiative() (when not the token owner), setInitiativeRound(),
removeAllFromInitative(), removeAllPCsFromInitiative(),
removeAllNPCsFromInitiative(), addToInitiative() (when not the owner),
removeFromInitiative().
* You can now specify a tool tip for macro buttons in the macro button dialog.
ToolTips that start with { or [ are evaluated, so you can create tool tips
that represent uses remaining etc.
* closebutton=0 second argument or <meta name=”closebutton” content=”false”>
can be used on [dialog(...): ...] calls to suppress the close button but not
close the dialog on form input.
* JSON functions should now be quite a bit faster.

New Additions
* New macro function removeMacro(index, [, id]) to remove the macro button on
a token.
* arr = json.sort(array [, direction]) function can be used to sort json
arrays. Direction is ‘ascending’/’descending’ (or any part of so
‘asc’/’desc’/’a’/’d’ all work). If arrays contain just numbers they are
sorted in numerical order otherwise as strings in alphabetical order.
* arr = json.shuffle(array) randomly shuffles the values in a json array.
* arr = json.reverse(array) reverses the order of the elements in a json array.
* json.indent(obj, [indet]) “pretty formats a json string for debugging
purposes, if outputting to chat use <pre>json.ident(jobj)</pre>
* getRawProperty(prop [,id]) gets the unevaluated value of a property,
returns “” if property is empty (not the property default).
* getInitativeToken() [trusted] returns the id of the token that currently has
the initiative.
* getTokenStates([delim]) gets a list of the valid states in the campaign,
“json” as the delimiter will return a json array.
* A new server policy exists for using ToolTips in [ ]. There is also a
preferences setting for when you are not connected to a server. When you
are connected to a server [ ] will default to what ever the server was
started with (ToolTips or Expanded output).
* Preferences->Interactions, there are two new preferences for setting the
background and foreground colors for the player/token prefix for fully
trusted macros. Each user has their own setting which colors the prefix
before they see them (so if you set it to red on blue you will see
everyones trusted macros with red/blue prefix and they will see what ever
color they have). Text from the GM is not colored if its a fully trusted
macro (since the GM does not need to check on themselves).
* Preferences->Accessibility has two new options for setting the initial delay
before ToolTips are displayed and how long the ToolTips will be displayed
for, so if you have too little time, or they are displayed for too long you
can change this. The defaults have been changed to display the ToolTip
quicker and for a lot longer (as this was causing confusion).
* getDistance(target [, useDistancePerCell [, sourceId]]) [trusted] gets the
distance to a target token. useDistancePerCell defaults to true (1).
* getDistanceToXY(x,y, [, useDistancePerCell [, sourceId]]) [trusted] gets
the distance to a target x,y co-ordinate. useDistancePerCell defaults to
true (1).
* getTokenX([useDistancePerCell [,token]]) useDistancePerCell defaults to
true (1). When specifying a token the function is trusted.
* getTokenY([useDistancePerCell [,token]]) useDistancePerCell defaults to
true (1). When specifying a token the function is trusted.
* getTokenZ([useDistancePerCell [,token]]) useDistancePerCell defaults to
true (1). When specifying a token the function is trusted.
* moveToken(x,y [,z [useDistancePerCell]), useDistancePerCell defaults to
true (1). specifying -1 as z retains the same z order.
* getMacroGroup(groupName [, delim [, id]]) gets the indexes of the macro
buttons for the specified group. If delim is “json” then a json array is
returned. If the id of a token is specified then the function can only be
run from a trusted macro.
* goto(token) [trusted] centers the map on the specified token.
* goto(x,y) [trusted] centers the map on the specified x,y location (cells
as per the /goto command)
* setTokenFacing(angle, [,id]) sets the facing angle of the token, if a
token id is specified then the function can only be created from a trusted
macro.
* getTokenFacing([id) gets the facing angle of the token (or “” if there is
no facing), if a token id is specified then the function can only be created
from a trusted macro.
* removetokenFacing([id]) removes the facing from a token, if a token id is
specified then the function can only be created from a trusted macro.
* json.evaluate(obj) will (recursively) evaluate the values in json objects or
arrays (if they are strings). For example if
j = ‘{ “Att”: “Attack Roll = [1d20+Str]”, “Dam”: “Damage = [1d20+Str]]” }’
json.evaluate(j) would perform all the rolls using the current
Token/Variables.
* json.isEmpty(val) returns 1 if val is an empty JSON object, or JSON Array,
or an empty String (as that can be used as a json object in some functions).
Otherwise it returns 0 (even for non JSON objects).

User Defined Functions (lib:token short hand)
* defineFunction(function, tokenFunction) [trusted] can be used to create GM
defined functions, (or shortcuts to lib:token functions if you prefer to
think of it that way).
* isFunctionDefined() returns 1 if a function has been defined.
* val = arg(number) used to get the specified argument from within a function.
Argument numbers start at 0.
* no = argCount() returns the number of arguments.
* Trusted lib:Tokens which have a macro called onCampaignLoad will have this
macro called when the campaign loads (including connecting to a server). You
can define your functions in this macro (and yes @this works).
* User defined functions are called as other functions are so
[myfoo(“test”, 1,2,3)]. Any output (not macro.return) the macro generates
is what is assigned if you do [a = myfoo()], (macro.return can still be set
in the function and read after the return).

Other
* AssertFunction fix
(had same problem as Dorpond experienced with the AbortFunction)
* json.isEmpty(), json.equals() functions
* Convert returns of user defined functions to numbers where appropriate
Dreaming of a 1.3 release

Craig
Great Wyrm
Posts: 2107
Joined: Sun Jun 22, 2008 7:53 pm
Location: Melbourne, Australia

Re: MapTool 1.3 Development Build 51

Post by Craig »

In attempt to head off the questions because I know that the patch notes are large enough that this detail will be missed by a lot of people.

In b51 [ ] rolls default to the older output (i.e. the same as [e: ], not Tool Tips [t: ]).
If you want to continue using Tool Tips you do not need to upgrade all your macros.
There is a preference option that will display ToolTips for [ ] rolls which takes effect when not connected to a server.
Image


When starting a server you can specify how [ ] should behave (it defaults to the preference option of the person starting the server) this takes effect for everyone connecting the the server.
Image
You can not change this without restarting the server.

This only applies to rolls in [ ]. It does not change the output of [e: ], [t: ], [r: ], [u: ], { }

dorpond
RPTools Team
Posts: 5534
Joined: Thu Jun 01, 2006 2:05 pm
Location: Buffalo, NY

Re: MapTool 1.3 Development Build 51

Post by dorpond »

Awesome! I will run it through a real game tonight! Can't wait! Man, performance is even better than b50! What blows my mind here is that 1.3 is far more advanced than 1.2, yet it runs so much faster than 1.2. You amaze me Trevor!
How to use my bundled artwork (MT1.3B60+): http://forums.rptools.net/viewtopic.php?f=8&t=11759

n3phrit
Cave Troll
Posts: 84
Joined: Mon Apr 21, 2008 7:30 am

Re: MapTool 1.3 Development Build 51

Post by n3phrit »

holy crap :)

thanx for solving my getProperty() hell. I stopped using MT for a while to wait for final 1.3 (i spent hours and hours macroing). Now things are getting more friendly and I hope there will be no more big-bang changes.

Now lets try to create combat system with distance measurement and weapon reach :)

good job maptoolers.

User avatar
Rumble
Deity
Posts: 6235
Joined: Tue Jul 01, 2008 7:48 pm

Re: MapTool 1.3 Development Build 51

Post by Rumble »

I note that the token's X,Y for things like moveToken do not correspond with the grid coordinates in the system (or rather, they do, but the letter coordinate has to be converted to its equivalent number coordinate). Don't know if there's a setting to alter how coordinates are displayed (or if it's worth a bug report/feature request, since it's pretty evident how it works).

User avatar
booga
Dragon
Posts: 365
Joined: Fri Dec 14, 2007 9:00 am

Re: MapTool 1.3 Development Build 51

Post by booga »

Cool beans !!

a lil' Question about: * Add new light shape 'cone'

What is the syntax ? I guess there is a range and a width ?

Thanks.

User avatar
jfrazierjr
Deity
Posts: 5176
Joined: Tue Sep 11, 2007 7:31 pm

Re: MapTool 1.3 Development Build 51

Post by jfrazierjr »

booga wrote:Cool beans !!

a lil' Question about: * Add new light shape 'cone'

What is the syntax ? I guess there is a range and a width ?

Thanks.

Syntax is exactly the same as existing where you would put in square or round, you can now place 'cone' directly after that, you can put in an optional "arc=X" which will default to 90 degrees in you do not put in any arc= value.
I save all my Campaign Files to DropBox. Not only can I access a campaign file from pretty much any OS that will run Maptool(Win,OSX, linux), but each file is versioned, so if something goes crazy wild, I can always roll back to a previous version of the same file.

Get your Dropbox 2GB via my referral link, and as a bonus, I get an extra 250 MB of space. Even if you don't don't use my link, I still enthusiastically recommend Dropbox..

Daeger
Cave Troll
Posts: 85
Joined: Thu Oct 04, 2007 12:52 pm

Re: MapTool 1.3 Development Build 51

Post by Daeger »

Object ordering still seems to get messed up when you start a server.

I rebuilt my campaign file in b51 and my map is a hell of a lot faster now, thanks!

User avatar
wrathchild
Dragon
Posts: 546
Joined: Thu May 24, 2007 9:44 am
Location: Copenhagen, Denmark
Contact:

Re: MapTool 1.3 Development Build 51

Post by wrathchild »

jfrazierjr wrote:Syntax is exactly the same as existing where you would put in square or round, you can now place 'cone' directly after that, you can put in an optional "arc=X" which will default to 90 degrees in you do not put in any arc= value.
Is it just me or is this syntax explanation not included in the screen texts - those that present the square and circle options?

User avatar
DJuego
Cave Troll
Posts: 84
Joined: Fri Jun 01, 2007 1:54 pm

Re: MapTool 1.3 Development Build 51

Post by DJuego »

wrathchild wrote:
Is it just me or is this syntax explanation not included in the screen texts - those that present the square and circle options?
I agree with wrathchild!

DJuego
Last edited by DJuego on Tue Mar 03, 2009 4:12 pm, edited 1 time in total.

User avatar
cubeblue
Cave Troll
Posts: 95
Joined: Tue Aug 05, 2008 12:50 pm
Location: Washington, DC

Re: MapTool 1.3 Development Build 51

Post by cubeblue »

I just got a strange error on exit. When I clicked on the "X" button to close out MapTool, I was asked if I wanted to save the campaign. I clicked "No", then another pop-up appeared, the title of the dialog was "Error" but the inside of the dialog was transparent, showing just the grass background of the map below it. It had a normal frame around it and title-bar, but inside was nothing.

I had to end-task MapTool from the task manager in Windows XP to kill it.

Maybe just an issue with my setup and machine but this is the first time I've seen this and I just went to b51 last night.

Before this occured:
- I opened Maptool (b51)
- I dragged seven .rptok tokens from windows explorer onto the default grass map.
- I imported token properties from within the Edit/Campaign Properties menu
- I clicked on and tested a few macros, which worked fine
- I clicked the "x" button and the error appeared.

What's weird is that this wasn't the first time I had opened MapTool with b51. I had opened it and played around with it and some existing campaign files for a few hours the night before without any problems.
& So Forth a blog about dungeons & dragons & so forth. With a particular eye for virtual table-top play, 5e, and OSR themes.

User avatar
Orchard
Great Wyrm
Posts: 1852
Joined: Fri May 09, 2008 10:45 am
Location: Doylestown PA
Contact:

Re: MapTool 1.3 Development Build 51

Post by Orchard »

And here all I was doing at the time this was doing was playing a game of warcraft III.

Good work Trevor & All. I'm impressed. I'm off to digest this stuff. Frankly, I'm having trouble keeping up with every thing. I am glad about what is now possible. Good jorb all.

I'll comment later when I've had a chance to play with it.
0+0=1, for very unstable CPUs.

User avatar
trevor
Codeum Arcanum (RPTools Founder)
Posts: 11311
Joined: Mon Jan 09, 2006 4:16 pm
Location: Austin, Tx
Contact:

Re: MapTool 1.3 Development Build 51

Post by trevor »

@wrathchild good call, the text needs to be updated

@cubeblue Could you look in your .maptool directory for a log.txt and see if there's an error in there, and post it here ?

@Daeger I thought I had killed that one, could you look in your campaign file, pull out the content.xml and do a search for <z> ? see if they are '0' or if they have a value
Dreaming of a 1.3 release

User avatar
cubeblue
Cave Troll
Posts: 95
Joined: Tue Aug 05, 2008 12:50 pm
Location: Washington, DC

Re: MapTool 1.3 Development Build 51

Post by cubeblue »

trevor wrote:@cubeblue Could you look in your .maptool directory for a log.txt and see if there's an error in there, and post it here ?
I have a log.txt but it's empty (0 KB and when I open with notepad, there's nothing). I started MapTools up after I got that last error, would that wipe the log.txt?
& So Forth a blog about dungeons & dragons & so forth. With a particular eye for virtual table-top play, 5e, and OSR themes.

User avatar
trevor
Codeum Arcanum (RPTools Founder)
Posts: 11311
Joined: Mon Jan 09, 2006 4:16 pm
Location: Austin, Tx
Contact:

Re: MapTool 1.3 Development Build 51

Post by trevor »

Hmm, it should technically append. Can you see if you can make it happen again ?
Dreaming of a 1.3 release

Post Reply

Return to “Announcements”