
Hi, Our group is playing D&D with the 5e OGL sheet. This is my first time creating a thread like this, but I'm fairly certain this is the right place and the right way to do this - please be kind if it's not. I originally set up universal macros with chat menu functionality so that players had an alternative to quickly choose actions during the game. I did this almost a year ago for things like Attacks and Spellcasting, their Spellbook, and even one for their Resources. Each macro calls different repeating values and the macros are lengthy enough to allow for 20 items in each category (ranging from $0 to $19 respectively). This is what I looked like when working properly: However, over the past week something has changed within Roll20 and my players who use the Attacks and Spellcasting macro are finding that the macro is no longer hiding the empty results and instead displays the pure macro code inline with the rest of the chat menu result that did work. Previously - and until this week - if they had 5 things they could attack with (a few weapons and/or spells like shown above), it would display results only for those that they had and would hide the rest with ${noerror} since the macro is coded up to 20 items. I made these universal so that any character could use them, and that's why I had it range to 20 items since it would dynamically show only the items that a certain player had, and I did this using the @{selected| ... function. Now, the result my players get looks like the image below. For the sake of easy reading and identifying each segment of the macro, I've put each section of the Actions list as a new line in the code whereas otherwise everything would run in a single line of code for this one macro. I've looked through the forums but wasn't able to find anything recent on this topic, or that others had experienced this specific issue. As far as I can tell, my ${noerror} function is working properly because it's not giving me errors in the chat... it's just reading the macro as text and doesn't seem to be hiding the repeating results where values don't exist. I've got both display: none; and display: inline-block in my code so it should be utilizing those functions to hide $6, $7, and $8 in the image above... right? Here's some of the code I'm working with - I've removed the {{charname}} and {{range}} sections for this copy-paste to save space, as well as limited it to $0 to $8 items. This is enough code for it to work and get the idea across. /w @{selected|character_name} &{template:atk} &{noerror} {{desc=[-- Actions --](" style="background: none; background-color: #943126; border: 4px solid; border-color: white; padding: 5px; font-size:14px; text-decoration: White; display:none; color: #FFFFFF; text-align: center; font-weight: bold; display: block;)
[@{selected|repeating_attack_$0_atkname}](~selected|repeating_attack_$0_attack" style="background: none; background-color: #F5B7B1; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$0_atkname|max};)
[@{selected|repeating_attack_$1_atkname}](~selected|repeating_attack_$1_attack" style="background: none; background-color: #F1948A; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$1_atkname|max};)
[@{selected|repeating_attack_$2_atkname}](~selected|repeating_attack_$2_attack" style="background: none; background-color: #F5B7B1; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$2_atkname|max};)
[@{selected|repeating_attack_$3_atkname}](~selected|repeating_attack_$3_attack" style="background: none; background-color: #F1948A; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$3_atkname|max};)
[@{selected|repeating_attack_$4_atkname}](~selected|repeating_attack_$4_attack" style="background: none; background-color: #F5B7B1; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$4_atkname|max};)
[@{selected|repeating_attack_$5_atkname}](~selected|repeating_attack_$5_attack" style="background: none; background-color: #F1948A; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$5_atkname|max};)
[@{selected|repeating_attack_$6_atkname}](~selected|repeating_attack_$6_attack" style="background: none; background-color: #F5B7B1; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$6_atkname|max};)
[@{selected|repeating_attack_$7_atkname}](~selected|repeating_attack_$7_attack" style="background: none; background-color: #F1948A; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$7_atkname|max};)
[@{selected|repeating_attack_$8_atkname}](~selected|repeating_attack_$8_attack" style="background: none; background-color: #F5B7B1; border: 1px solid; border-color: #909497; outline: 0px solid; outline-color: white; border-radius: 5px; margin-bottom: 1px; padding: 2px; padding-left: 6px; padding-right: 6px; line-height: 1; font-size:11px; text-indent: 5px; text-decoration: none; font-style: normal; display: none; color: Maroon; display: inline-block@{selected|repeating_attack_$8_atkname|max};)}} Does anyone have any insight as to why my code is no longer working and hiding the values that are not present on a character sheet? I should also note that I use a separate macro to call this macro, and both use the &{noerror} function.