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