Open GameDevon opened 11 months ago
Seems that I only defined bracket matching for roll queries using }
as closing curly bracket, but not for anything else. Fix is to just add more entries to that file.
While this is a simple fix, I haven't touched the project in a while so will take some time to see how the testing & publishing for extensions works now.
Recently I had anyway thought of getting back into the project, so fixing a clear bug is just the motivation I need to pick this up.
Could you share some sample macros where this error-highlighting come into play? The more complex, the better.
Sure thing. The most complicated macro I use is one I stole from a previous player I had. It's a query for all the skill and ability checks for DnD, but I'll also post a shorter version below involving saving throws cause it's not exactly more complex so much as it is long. I have yet to try nesting a query within a query, but I might try that in the future if I keep using roll20.
Long Version
@{selected|wtype}&{template:simple} @{selected|rtype}?{Ability|π€ΈπΌββοΈ Acrobatics, +@{selected|acrobatics_bonus}@{selected|pbd_safe} ]] π€Έπ½ββοΈ }} {{rname=Acrobatics}} {{mod=@{selected|acrobatics_bonus}}} {{r1=[[@{selected|d20} + @{selected|acrobatics_bonus}@{selected|pbd_safe} ]] π€Έπ½ββοΈ }} |π Animal Handling, +@{selected|animal_handling_bonus}@{selected|pbd_safe} ]] π}} {{rname=Animal Handling}} {{mod=@{selected|animal_handling_bonus}}} {{r1=[[ @{selected|d20} + @{selected|animal_handling_bonus}@{selected|pbd_safe} ]] π}} | π§ββοΈ Arcana, +@{selected|arcana_bonus}@{selected|pbd_safe} ]] π§ββοΈ}} {{rname=Arcana}} {{mod=@{selected|arcana_bonus}}} {{r1=[[ @{selected|d20} + @{selected|arcana_bonus}@{selected|pbd_safe} ]] π§ββοΈ}} |ππ½ββοΈ Athletics, +@{selected|athletics_bonus}@{selected|pbd_safe} ]] ππ½ββοΈ}} {{rname=Athletics}} {{mod=@{selected|athletics_bonus}}} {{r1=[[ @{selected|d20} + @{selected|athletics_bonus}@{selected|pbd_safe} ]] ππ½ββοΈ}} |π
πΌββοΈ Deception, +@{selected|deception_bonus}@{selected|pbd_safe} ]] π
πΌββοΈ}} {{rname=Deception}} {{mod=@{selected|deception_bonus}}} {{r1=[[ @{selected|d20} + @{selected|deception_bonus}@{selected|pbd_safe} ]] π
πΌββοΈ}} |π History, +@{selected|history_bonus}@{selected|pbd_safe} ]] π}} {{rname=History}} {{mod=@{selected|history_bonus}}} {{r1=[[ @{selected|d20} + @{selected|history_bonus}@{selected|pbd_safe} ]] π}} | π± Insight, +@{selected|insight_bonus}@{selected|pbd_safe} ]] π±}} {{rname=Insight}} {{mod=@{selected|insight_bonus}}} {{r1=[[ @{selected|d20} + @{selected|insight_bonus}@{selected|pbd_safe} ]] π±}} | π Intimidation, +@{selected|intimidation_bonus}@{selected|pbd_safe} ]] π }} {{rname=Intimidation}} {{mod=@{selected|intimidation_bonus}}} {{r1=[[ @{selected|d20} + @{selected|intimidation_bonus}@{selected|pbd_safe} ]] π }} |π Investigation, +@{selected|investigation_bonus}@{selected|pbd_safe} ]] π}} {{rname=Investigation}} {{mod=@{selected|investigation_bonus}}} {{r1=[[ @{selected|d20} + @{selected|investigation_bonus}@{selected|pbd_safe} ]] π}} |π Medicine, +@{selected|medicine_bonus}@{selected|pbd_safe} ]] π}} {{rname=Medicine}} {{mod=@{selected|medicine_bonus}}} {{r1=[[ @{selected|d20} + @{selected|medicine_bonus}@{selected|pbd_safe} ]] π}} |π³ Nature, +@{selected|nature_bonus}@{selected|pbd_safe} ]] π³}} {{rname=Nature}} {{mod=@{selected|nature_bonus}}} {{r1=[[ @{selected|d20} + @{selected|nature_bonus}@{selected|pbd_safe} ]] π³}} |π Perception, +@{selected|perception_bonus}@{selected|pbd_safe} ]] π }} {{rname=Perception}} {{mod=@{selected|perception_bonus}}} {{r1=[[ @{selected|d20} + @{selected|perception_bonus}@{selected|pbd_safe} ]] π }} |π€ΉπΌββοΈ Performance, +@{selected|performance_bonus}@{selected|pbd_safe} ]] π€ΉπΌββοΈ}} {{rname=Performance}} {{mod=@{selected|performance_bonus}}} {{r1=[[ @{selected|d20} + @{selected|performance_bonus}@{selected|pbd_safe} ]] π€ΉπΌββοΈ}} |π Persuasion, +@{selected|persuasion_bonus}@{selected|pbd_safe} ]] π}} {{rname=Persuasion}} {{mod=@{selected|persuasion_bonus}}} {{r1=[[ @{selected|d20} + @{selected|persuasion_bonus}@{selected|pbd_safe} ]] π}} |βͺοΈ Religion, +@{selected|religion_bonus}@{selected|pbd_safe} ]] βͺοΈ}} {{rname=Religion}} {{mod=@{selected|religion_bonus}}} {{r1=[[ @{selected|d20} + @{selected|religion_bonus}@{selected|pbd_safe} ]] βͺοΈ}} |ππΎ Sleight of Hand, +@{selected|sleight_of_hand_bonus}@{selected|pbd_safe} ]] ππΎ}} {{rname=Sleight of Hand}} {{mod=@{selected|sleight_of_hand_bonus}}} {{r1=[[ @{selected|d20} + @{selected|sleight_of_hand_bonus}@{selected|pbd_safe} ]] ππΎ}} |π₯ Stealth, +@{selected|stealth_bonus}@{selected|pbd_safe} ]] π₯}} {{rname=Stealth}} {{mod=@{selected|stealth_bonus}}} {{r1=[[ @{selected|d20} + @{selected|stealth_bonus}@{selected|pbd_safe} ]] π₯}} |πΎ Survival, +@{selected|survival_bonus}@{selected|pbd_safe} ]] πΎ}} {{rname=Survival}} {{mod=@{selected|survival_bonus}}} {{r1=[[ @{selected|d20} + @{selected|survival_bonus}@{selected|pbd_safe} ]]πΎ}} |πͺπ½ Strength, +@{selected|strength_mod}@{selected|jack_attr}[STR]]] πͺπ½ }} {{rname=Strength}} {{mod=@{selected|strength_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|strength_mod}@{selected|jack_attr}[STR]]] πͺπ½ }} |π€Έπ½ββοΈ Dexterity, +@{selected|dexterity_mod}@{selected|jack_attr}[DEX]]] π€Έπ½ββοΈ}} {{rname=Dexterity}} {{mod=@{selected|dexterity_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|dexterity_mod}@{selected|jack_attr}[DEX]]] π€Έπ½ββοΈ}} |π» Constitution, +@{selected|constitution_mod}@{selected|jack_attr}[CON]]] π»}} {{rname=Constitution}} {{mod=@{selected|constitution_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|constitution_mod}@{selected|jack_attr}[CON]]] π»}} |π Intelligence, +@{selected|intelligence_mod}@{selected|jack_attr}[INT]]] π}} {{rname=Intelligence}} {{mod=@{selected|intelligence_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|intelligence_mod}@{selected|jack_attr}[INT]]] π}} |π§πΎββοΈ Wisdom, +@{selected|wisdom_mod}@{selected|jack_attr}[WIS]]] π§πΎββοΈ}} {{rname=Wisdom}} {{mod=@{selected|wisdom_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|wisdom_mod}@{selected|jack_attr}[WIS]]] π§πΎββοΈ}} |π Charisma, +@{selected|charisma_mod}@{selected|jack_attr}[CHA]]] π}} {{rname=Charisma}} {{mod=@{selected|charisma_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|charisma_mod}@{selected|jack_attr}[CHA]]] π}} } {{charname= @{selected|character_name}}}
Simple Version
@{selected|wtype}&{template:simple} @{selected|rtype}?{Save|πͺπ½Strength, +[[@{selected|strength_save_bonus}@{selected|pbd_safe}]]]]}} {{rname=πͺπ½Strength Saveπͺπ½}} {{mod=@{selected|strength_save_bonus}}} {{r1=[[@{selected|d20}+[[@{selected|strength_save_bonus}@{selected|pbd_safe}]]]]}} |π€Έπ½ββοΈDexterity, +[[@{selected|dexterity_save_bonus}@{selected|pbd_safe}]]]]}} {{rname=π€Έπ½ββοΈDexterity Saveπ€Έπ½ββοΈ}} {{mod=@{selected|dexterity_save_bonus}}} {{r1=[[@{selected|d20}+[[@{selected|dexterity_save_bonus}@{selected|pbd_safe}]]]]}} |π» Constitution, +[[@{selected|constitution_save_bonus}@{selected|pbd_safe}]]]]}} {{rname=π»Constitution Saveπ»}} {{mod=@{selected|constitution_save_bonus}}} {{r1=[[@{selected|d20}+[[@{selected|constitution_save_bonus}@{selected|pbd_safe}]]]]}} |π Intelligence, +[[@{selected|intelligence_save_bonus}@{selected|pbd_safe}]]]]}} {{rname=πIntelligence Saveπ}} {{mod=@{selected|intelligence_save_bonus}}} {{r1=[[@{selected|d20}+[[@{selected|intelligence_save_bonus}@{selected|pbd_safe}]]]]}} |π§πΎββοΈWisdom, +[[@{selected|wisdom_save_bonus}@{selected|pbd_safe}]]]]}} {{rname=π§πΎββοΈWisdom Saveπ§πΎββοΈ}} {{mod=@{selected|wisdom_save_bonus}}} {{r1=[[@{selected|d20}+[[@{selected|wisdom_save_bonus}@{selected|pbd_safe}]]]]}} |πCharisma, +[[@{selected|charisma_save_bonus}@{selected|pbd_safe}]]]]}} {{rname=πCharisma Saveπ}} {{mod=@{selected|charisma_save_bonus}}} {{r1=[[@{selected|d20}+[[@{selected|charisma_save_bonus}@{selected|pbd_safe}]]]]}}}@{selected|global_save_mod} {{charname= @{selected|character_name}}}
In order to work with roll queries, html elements are sometimes necessary to allow nesting to work properly. This module reads them as errors, but ideally they could be colored as if they were the characters they represent instead of as errors.
See the "Nesting" section of this page for more details.