macro.return: Difference between revisions

From RPTools Wiki
Jump to navigation Jump to search
m (Updated with reference to defineFunction() in regards to ignoreOutput)
m (Replaced source tages with syntaxhighlight)
Line 16: Line 16:
!Called Macro
!Called Macro
|-
|-
|valign="top"|<source lang="mtmacro" line>
|valign="top"|<syntaxhighlight lang="mtmacro" line>
[h:damageDice="2d6"]
[h:damageDice="2d6"]
[MACRO("getDamage@Lib:combat"):damageDice]
[MACRO("getDamage@Lib:combat"):damageDice]
[h:damageProperties=macro.return]
[h:damageProperties=macro.return]
[h:varsFromStrProp(damageProperties)]
[h:varsFromStrProp(damageProperties)]
</source>
</syntaxhighlight>
|<source lang="mtmacro" line>
|<syntaxhighlight lang="mtmacro" line>
<!-- getDamage Macro -->
<!-- getDamage Macro -->
[h:returnData = ""]
[h:returnData = ""]
Line 31: Line 31:
[h:returnData=setStrProp(returnData,"damage", damageRoll)]
[h:returnData=setStrProp(returnData,"damage", damageRoll)]
[h:macro.return=returnData]
[h:macro.return=returnData]
</source>
</syntaxhighlight>
|}
|}



Revision as of 17:52, 14 July 2022

The variable macro.return holds the value returned from a called macro to the calling macro. Other than macro.return, a called macro shares no other variables with the calling macro.

Additional details on how macro.return interacts with the ignoreOutput parameter of defineFunction() can be found on that page.

Examples

When a macro on a library token is called by another macro, the called macro may return a value to the called macro by assigning that value to the variable macro.args.

Calling Macro

The macro below calls a macro called getDamage on the library token Lib:combat, passing the variable damageDice as an argument. It also sets returnData to the return value of the called macro.

Calling Macro Called Macro
[h:damageDice="2d6"]
[MACRO("getDamage@Lib:combat"):damageDice]
[h:damageProperties=macro.return]
[h:varsFromStrProp(damageProperties)]
<!-- getDamage Macro -->
[h:returnData = ""]
[h:damageRoll = eval(macro.args) + 9]
[h:damageType = "piercing"]
You hit your target for [r:damageRoll] damage!
[h:returnData=setStrProp(returnData,"damType", damageType)]
[h:returnData=setStrProp(returnData,"damage", damageRoll)]
[h:macro.return=returnData]

In the example above, we assume that the getDamage macro was called by another macro (for example, a token macro) and has received some value in the form of macro.args. The statements in getDamage are executed, and the final statement assigns the value of returnData to the variable macro.return.

When execution of the getDamage macro is complete and control is handed back to the calling macro, macro.return is also passed back to the calling macro, where it can be manipulated like any other variable.