MT 1.3b51 progress

Progress reports and musings from the developers on the current gaming tools.

Moderators: dorpond, trevor, Azhrei

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

MT 1.3b51 progress

Post by trevor »

Making good progress towards 1.3 final, here's the current progress:

* Render colored light above object stamps
* Show owned token movement above the fog
* Holding CTRL 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 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
Things to check:

- Make sure drawings and templates still work (don't get randomly cut off), especially when zooming
- Stacks work
- Facing works

Thanks !
Last edited by trevor on Mon Mar 02, 2009 1:47 am, edited 2 times in total.
Reason: fixed some typos and added some highlighting to improve readability
Dreaming of a 1.3 release

User avatar
palmer
Great Wyrm
Posts: 1367
Joined: Sat Sep 06, 2008 7:54 pm

Re: MT 1.3b51 progress

Post by palmer »

Trevor, has anyone told you how awesome you are lately?

Because you totally are.

User avatar
Mathemagician
Dragon
Posts: 666
Joined: Tue May 22, 2007 2:27 pm

Re: MT 1.3b51 progress

Post by Mathemagician »

Is Craig's work regarding the default token properties in this patch, I wonder? :)

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

Re: MT 1.3b51 progress

Post by trevor »

I don't have a patch from craig for this build yet
Dreaming of a 1.3 release

User avatar
RedDog
Dragon
Posts: 393
Joined: Sat Jan 05, 2008 10:02 pm
Location: Clearwater, FL

Re: MT 1.3b51 progress

Post by RedDog »

Bring on the bug fixes!!! :)

Trevor, before 1.3 is released to production, will we see a command that allows text and parser results to be sent to the GM without a copy sent to the player (like '/gm')? I've asked about it in previous posts, but never really saw a definative answer.

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

Re: MT 1.3b51 progress

Post by jfrazierjr »

RedDog wrote:Bring on the bug fixes!!! :)

Trevor, before 1.3 is released to production, will we see a command that allows text and parser results to be sent to the GM without a copy sent to the player (like '/gm')? I've asked about it in previous posts, but never really saw a definative answer.
Mr Pokeylope started working on that around 1.3b42, but he seemed to disappear. I can't speak for Trevor or the other Dev's but I rather doubt anyone will tackle that in 1.3.
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..

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

Re: MT 1.3b51 progress

Post by trevor »

RedDog wrote:Bring on the bug fixes!!! :)

Trevor, before 1.3 is released to production, will we see a command that allows text and parser results to be sent to the GM without a copy sent to the player (like '/gm')? I've asked about it in previous posts, but never really saw a definative answer.
so, specifically, the GM gets the results but not the player.

So it's a /say that only goes to the GM ?

that's pretty easy to do, just give the command a name and I'll hack it up quick
Dreaming of a 1.3 release

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

Re: MT 1.3b51 progress

Post by jfrazierjr »

trevor wrote:
RedDog wrote:Bring on the bug fixes!!! :)

Trevor, before 1.3 is released to production, will we see a command that allows text and parser results to be sent to the GM without a copy sent to the player (like '/gm')? I've asked about it in previous posts, but never really saw a definative answer.
so, specifically, the GM gets the results but not the player.

So it's a /say that only goes to the GM ?

that's pretty easy to do, just give the command a name and I'll hack it up quick

I think he means something like a macro where some parts are printed to the client and other parts are printed to the GM, at least that was my interpretation.

Code: Select all

I try to backstab him with my Dagger [d20+mods]
[gm: "I actually pick his pocket and get the gem of power"]
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..

User avatar
Mrugnak
Dragon
Posts: 745
Joined: Mon Jul 21, 2008 7:38 pm

Re: MT 1.3b51 progress

Post by Mrugnak »

Is there any chance of getting hexagonal halos before 1.4 comes out? We seem to be running out of time, and this bug is still outstanding...

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

Re: MT 1.3b51 progress

Post by trevor »

What should the halo look like if the token is bigger than one cell ?
Dreaming of a 1.3 release

User avatar
RedDog
Dragon
Posts: 393
Joined: Sat Jan 05, 2008 10:02 pm
Location: Clearwater, FL

Re: MT 1.3b51 progress

Post by RedDog »

trevor wrote:so, specifically, the GM gets the results but not the player.

So it's a /say that only goes to the GM ?

that's pretty easy to do, just give the command a name and I'll hack it up quick
That is correct Trevor. It seamed to me that it was the 'chat' command that is essentially missing and I know that I would find it helpful. It is essentially the /say equivilent to /rollgm. For instance, lets call it /gms (or /gmsecret):

Code: Select all

/gms
[Name="Conan"]
[H: Dex=3]
[H: Rank=4]
<br>[R: Name] attempts to Hide in Shadows: [1d20+Dex+Rank]
The player might see something like this:
You sent a secret message to the GM.

The GM would see:
RedDog sent a secret message:
Conan attempts to Hide in Shadows: 17


It allows for GMs to ask players to make skill checks, saving throws, etc instead of having to do it all themselves, but still allows for use of the parser and results in secret.

I can also put up a formal Feature Request or get people's feedback in the MT forum if you would prefer.
Last edited by RedDog on Mon Feb 09, 2009 7:49 pm, edited 1 time in total.

User avatar
Mrugnak
Dragon
Posts: 745
Joined: Mon Jul 21, 2008 7:38 pm

Re: MT 1.3b51 progress

Post by Mrugnak »

trevor wrote:What should the halo look like if the token is bigger than one cell ?
I'd say outline the hexes that the token occupies, instead of drawing a giant hex centered on the token. You might want to poll Phergus, I hear he has some oppinions on the hexified halos issue... (he's made it his sig line for months)

User avatar
simonutp
Giant
Posts: 160
Joined: Wed Jun 06, 2007 10:03 am
Location: Colmar, France

Re: MT 1.3b51 progress

Post by simonutp »

Is it possible to have the old 1.2b32 light system back and calling it "aura" (or whatever) to simulate spells area tied to moving tokens?

The idea seems to appeal to other D&D users:

Dorpond said:
I think having the old lighting system in place and calling it something other than lighting is a great idea. For a matter of fact, I have brought this up to Trevor several times in the past.

I used it for detect evil and other moveable spells that are attached to the token but have nothing to do with lighting.

All I can tell you is this: features are implemented by public demand. If everyone hounds Trevor for a specific feature, he will eventually put it in; if demand is low, then it may never make the cut.
and
Actually, my suggestion didn't have anything to do with lighting really - it was more of having another feature that allowed for area effect visuals.

I would be happy with something that was just visual for now. Yeah, detect spells make sense to have them tied into vision but there are other spells that buff the party and such that wouldn't be tied to vision at all. For those, the old lighting code would work perfectly.
Is it difficult to do? Really I know nothing about the way MapTool is coded, so I do not know if my request is time consuming, but it seems very easy.

...

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

Re: MT 1.3b51 progress

Post by trevor »

simonutp wrote: Is it difficult to do? Really I know nothing about the way MapTool is coded, so I do not know if my request is time consuming, but it seems very easy.

...
I'll see what I can do
Dreaming of a 1.3 release

Zandari
Cave Troll
Posts: 63
Joined: Mon Feb 11, 2008 8:52 pm

Re: MT 1.3b51 progress

Post by Zandari »

I am throwing in a vote for the 1.2.b32 lighting thingy as well. blocky lighting! 3.5 joy!

Zandari

Post Reply

Return to “Developer Notes”