Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Why do my macros not work when I copy/paste them from one game to another?

I have Character 1 in Game A.  The macros there work great.  I open the macro editor, copy the contents, and paste it into Character 2 in Game B, open in antoher tab.  When I try out that macro, I get errors and it doesn't make any sense to me.  
Many possible reasons, but here are a few likely ones: Not getting copied entirely (missing a final } character) Original has html coding in it that gets processed out when it gets pasted - things like carriage returns -  Reopening a Macro saved under the Collections tab of the Sidebar causes HTML entities within to be reverted; if the Macro is then saved, so are those reversions. Using the code pasting option, by pressing the ¶ on the upper right corner of the Post Reply header, show us your macro. Example: [Ability](!

%{CharName|AbilityName})
Here's one that works, but doesn't work when I copy it to a character in a different game:   @{selected|wtype}&{template:simple} @{selected|rtype}?{Save |Strength,+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]}} {{rname=^{strength-save-u}}} {{mod=[[ [[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]] |Dexterity,+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]}} {{rname=^{dexterity-save-u}}} {{mod=[[ [[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]] |Constitution,+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]}} {{rname=^{constitution-save-u}}} {{mod=[[ [[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]] |Intelligence,+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]}} {{rname=^{intelligence-save-u}}} {{mod=[[ [[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]] |Wisdom,+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]}} {{rname=^{wisdom-save-u}}} {{mod=[[ [[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]] |Charisma,+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]}} {{rname=^{charisma-save-u}}} {{mod=[[ [[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]] }}} @{selected|global_save_mod} @{selected|charname_output}
1519780494
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
Yep, it's the html encoding getting converted.
1519780649

Edited 1519780890
I don't understand How do I get it to work?
1519787194

Edited 1519788237
Looks like this is a common problem, but I still don't understnad how to fix it.&nbsp;&nbsp; <a href="https://app.roll20.net/forum/post/5818534/did-roll20-change-my-and-back-into-brackets" rel="nofollow">https://app.roll20.net/forum/post/5818534/did-roll20-change-my-and-back-into-brackets</a>
In an external text editor (I like Notepad++ for this) replace each &# with &amp;amp;#. If using Notepad++ you can quickly do this using Ctrl-H.
1519788349

Edited 1519788654
Thanks, Kyle. I tried that, and still no luck.&nbsp;&nbsp; There is no occurrence of &#, but there is a &, so I replaced that with "&amp;"&nbsp;but that did not resolve the issue.&nbsp; @{selected|wtype}&amp;{template:simple} @{selected|rtype}?{Save |Strength,+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]}} {{rname=^{strength-save-u}}} {{mod=[[ [[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]] |Dexterity,+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]}} {{rname=^{dexterity-save-u}}} {{mod=[[ [[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]] |Constitution,+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]}} {{rname=^{constitution-save-u}}} {{mod=[[ [[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]] |Intelligence,+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]}} {{rname=^{intelligence-save-u}}} {{mod=[[ [[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]] |Wisdom,+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]}} {{rname=^{wisdom-save-u}}} {{mod=[[ [[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]] |Charisma,+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]}} {{rname=^{charisma-save-u}}} {{mod=[[ [[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]] }}} @{selected|global_save_mod} @{selected|charname_output}
I even tried replacing | and } with their counterparts but it still doesn't work.&nbsp;&nbsp; @{selected&#124;wtype&#125;&amp;{template:simple&#125; @{selected&#124;rtype&#125;?{Save &#124;Strength,+[[(@{selected&#124;strength_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_str_save&#125;*@{selected&#124;npc&#125;)]][STR SAVE] ]]&#125;&#125; {{rname=^{strength-save-u&#125;&#125;&#125; {{mod=[[ [[(@{selected&#124;strength_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_str_save&#125;*@{selected&#124;npc&#125;)]][STR SAVE] ]]&#125;&#125; {{r1=[[@{selected&#124;d20&#125;+[[(@{selected&#124;strength_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_str_save&#125;*@{selected&#124;npc&#125;)]][STR SAVE] ]] &#124;Dexterity,+[[(@{selected&#124;dexterity_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_dex_save&#125;*@{selected&#124;npc&#125;)]][DEX SAVE] ]]&#125;&#125; {{rname=^{dexterity-save-u&#125;&#125;&#125; {{mod=[[ [[(@{selected&#124;dexterity_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_dex_save&#125;*@{selected&#124;npc&#125;)]][DEX SAVE] ]]&#125;&#125; {{r1=[[@{selected&#124;d20&#125;+[[(@{selected&#124;dexterity_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_dex_save&#125;*@{selected&#124;npc&#125;)]][DEX SAVE] ]] &#124;Constitution,+[[(@{selected&#124;constitution_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_con_save&#125;*@{selected&#124;npc&#125;)]][CON SAVE] ]]&#125;&#125; {{rname=^{constitution-save-u&#125;&#125;&#125; {{mod=[[ [[(@{selected&#124;constitution_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_con_save&#125;*@{selected&#124;npc&#125;)]][CON SAVE] ]]&#125;&#125; {{r1=[[@{selected&#124;d20&#125;+[[(@{selected&#124;constitution_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_con_save&#125;*@{selected&#124;npc&#125;)]][CON SAVE] ]] &#124;Intelligence,+[[(@{selected&#124;intelligence_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_int_save&#125;*@{selected&#124;npc&#125;)]][INT SAVE] ]]&#125;&#125; {{rname=^{intelligence-save-u&#125;&#125;&#125; {{mod=[[ [[(@{selected&#124;intelligence_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_int_save&#125;*@{selected&#124;npc&#125;)]][INT SAVE] ]]&#125;&#125; {{r1=[[@{selected&#124;d20&#125;+[[(@{selected&#124;intelligence_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_int_save&#125;*@{selected&#124;npc&#125;)]][INT SAVE] ]] &#124;Wisdom,+[[(@{selected&#124;wisdom_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_wis_save&#125;*@{selected&#124;npc&#125;)]][WIS SAVE] ]]&#125;&#125; {{rname=^{wisdom-save-u&#125;&#125;&#125; {{mod=[[ [[(@{selected&#124;wisdom_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_wis_save&#125;*@{selected&#124;npc&#125;)]][WIS SAVE] ]]&#125;&#125; {{r1=[[@{selected&#124;d20&#125;+[[(@{selected&#124;wisdom_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_wis_save&#125;*@{selected&#124;npc&#125;)]][WIS SAVE] ]] &#124;Charisma,+[[(@{selected&#124;charisma_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_cha_save&#125;*@{selected&#124;npc&#125;)]][CHA SAVE] ]]&#125;&#125; {{rname=^{charisma-save-u&#125;&#125;&#125; {{mod=[[ [[(@{selected&#124;charisma_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_cha_save&#125;*@{selected&#124;npc&#125;)]][CHA SAVE] ]]&#125;&#125; {{r1=[[@{selected&#124;d20&#125;+[[(@{selected&#124;charisma_save_bonus&#125;@{selected&#124;pbd_safe&#125;*(1-ceil((@{selected&#124;npc&#125;)*0.00001)))+(@{selected&#124;npc_cha_save&#125;*@{selected&#124;npc&#125;)]][CHA SAVE] ]] &#125;&#125;&#125; @{selected&#124;global_save_mod&#125; @{selected&#124;charname_output&#125;
I don't know why I bother putting it in "code" because it still gets parsed so it doesn't look the same anyway.&nbsp;&nbsp;
This one, however, works fine when I copied it over:&nbsp;&nbsp; /em bravely jumps into the fray. @{selected|wtype}&{template:simple} {{rname=^{init-u}}} {{mod=@{selected|initiative_bonus}}} {{r1=[[@{selected|initiative_style}+@{selected|initiative_bonus}@{selected|pbd_safe}[INIT] &{tracker}]]}} {{normal=1}} @{selected|charname_output
Bump.&nbsp; I still can't figure out how to fix this.&nbsp; It's very frustratinng.&nbsp;&nbsp;
So the reason the code in the forum is getting parsed is the same reason that the code is being parsed in game. They use the same text software. The devs have mentioned that they would like to update these to prevent such problems, among other, but they are not sure when they will be able to do so. However, I find it strange that you were unable to find any &# in the macro. My guess is that when you copied it in to the Notepad++ the parsing had already been finished and the HTML encoded values where changed. As mentioned above, the way to save these encoded values is to nest the values behind further encoding; specifically by encoding the & with &amp;amp;. You can add multiple layers to this especially for the forums here. For example to get the &amp;amp; to show here I have to put &amp;amp;amp; Try this macro, I had it saved from the last time I helped someone with it. @{selected|wtype}&{template:simple} @{selected|rtype}?{Save |Strength,+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]&amp;#125;&amp;#125; {{rname=^{strength-save-u&amp;#125;&amp;#125;&amp;#125; {{mod=[[ [[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]&amp;#125;&amp;#125; {{r1=[[@{selected|d20}+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]] |Dexterity,+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]&amp;#125;&amp;#125; {{rname=^{dexterity-save-u&amp;#125;&amp;#125;&amp;#125; {{mod=[[ [[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]&amp;#125;&amp;#125; {{r1=[[@{selected|d20}+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]] |Constitution,+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]&amp;#125;&amp;#125; {{rname=^{constitution-save-u&amp;#125;&amp;#125;&amp;#125; {{mod=[[ [[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]&amp;#125;&amp;#125; {{r1=[[@{selected|d20}+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]] |Intelligence,+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]&amp;#125;&amp;#125; {{rname=^{intelligence-save-u&amp;#125;&amp;#125;&amp;#125; {{mod=[[ [[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]&amp;#125;&amp;#125; {{r1=[[@{selected|d20}+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]] |Wisdom,+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]&amp;#125;&amp;#125; {{rname=^{wisdom-save-u&amp;#125;&amp;#125;&amp;#125; {{mod=[[ [[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]&amp;#125;&amp;#125; {{r1=[[@{selected|d20}+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]] |Charisma,+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]&amp;#125;&amp;#125; {{rname=^{charisma-save-u&amp;#125;&amp;#125;&amp;#125; {{mod=[[ [[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]&amp;#125;&amp;#125; {{r1=[[@{selected|d20}+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]] }}} @{selected|global_save_mod} @{selected|charname_output}
This is THE major stumbling block for people learning macros. They seriously need to fix this.
Thanks, Kyle.&nbsp;&nbsp; Looking at what you did, you changed some of the right curly braces to a HTML value. How do you know which ones to change?&nbsp; I tried changing them all, and that didn't work.&nbsp;&nbsp; And what about the pipe symbol? The wiki says that can cause problems, but you haven't changed any of them and it works.&nbsp;
Jeremy R. said: This is THE major stumbling block for people learning macros. They seriously need to fix this. There's no way I could casually tell my players, "You could make a macro for that" and expect anything fruitful to come from it.&nbsp; Unless, perhaps, if they have a degree in CS.&nbsp;
Dan said: Thanks, Kyle.&nbsp;&nbsp; Looking at what you did, you changed some of the right curly braces to a HTML value. How do you know which ones to change?&nbsp; I tried changing them all, and that didn't work.&nbsp;&nbsp; And what about the pipe symbol? The wiki says that can cause problems, but you haven't changed any of them and it works.&nbsp; Take a look at what the&nbsp; wiki says about roll queries. Basically, queries end at the first '}' they come across; hence the need to replace the roll template closings ( }} ) with their HTML encoded values. However attributes are exempt from needing to be encoded, since due to the order of operations attributes are parsed before a query is run. To make matters worse, there are times when an attribute's value will need to be encoded. For example in the OGL character sheet the attribute rtype &nbsp;has roll template options that determine whether to roll a single roll or multiple rolls (advantage/disadvantage). If this attribute were inside the query, the query would stop working (because queries end at the first '}' which is inside this attribute). To get around this scenario and make the make usable, we have moved the problem attribute outside the query and reorder the inside of the query from normal. Typically this roll template follows the structure roll 1 then roll 2, but the above macro is roll 2 then roll 1.
Thanks for the explanation, Kyle.&nbsp;&nbsp; I've unfortunately come to the conclusion that this is just too complicated. I'm sure I could understand it IF I really wanted to, but it's not worth the time and effort investment it would take to save a few clicks.&nbsp;&nbsp; It's really unfortunate. I could see great possibilities from sharing macros among players and DMs, but if you can't copy/paste them, it'll never happen.&nbsp;&nbsp;