
I have read the documentation: <a href="https://help.roll20.net/hc/en-us/articles/4403865972503-Custom-Roll-Parsing-for-Character-Sheets#GettingStarted-BuildingaCharacterSheet" rel="nofollow">https://help.roll20.net/hc/en-us/articles/4403865972503-Custom-Roll-Parsing-for-Character-Sheets#GettingStarted-BuildingaCharacterSheet</a> and I have gotten Oosh's example working from the thread 'Adventures with startRoll(); which included pulling in the .js library from Oral Orcs: <a href="https://app.roll20.net/forum/post/10346883/slug%7D" rel="nofollow">https://app.roll20.net/forum/post/10346883/slug%7D</a> and <a href="https://github.com/onyxring/Roll20OralOrcs/blob/master/OralOrcs.pdf" rel="nofollow">https://github.com/onyxring/Roll20OralOrcs/blob/master/OralOrcs.pdf</a> Here is the background for my challenges... I don't need the re-roll functionality that Oosh's example has. I simply need to parse the results of a single 'startRoll()' call.. On the surface, what I have to do is straight-forward. The implementation is proving troublesome. In my basic sheet, my roll macros leverage a lot of built-in functionality. Here is an example rollstring: &{template:trait} {{name=@{character_name}}} {{skill=Agility}} {{Agility Roll=[[{1d@{agility}, @{player}d6!}kh1 + ?{Modifier IE: -2 or 2|0}[Modifier] - @{fatigue}[Fatigue] - @{wound}[Wounds] - floor(@{anxiety} / 3)[Anxiety] ]] }} {{fatigue=@{fatigue}}} {{wounds=@{wound}}} {{anxiety=@{anxiety} }} {{Madness = [[@{madness}d6[Madness]]]}} The request from my players is to highlight when Critical Failures are rolled, or when the first die of from two rolls are both 1's. I wasn't able to find a way to do that using the basic sheet functionality. So... I am experimenting with custom roll parsing. I have been successful with a very basic rolls. For example, the following works well: const rollstring = ' &{template:trait} {{name=@{character_name}}} {{skill=Agility}} {{roll1=[[{1d@{agility}, @{player}d6!}kh1 }}' ; const results = await startRoll(rollstring); const thedice= results.results.roll1.dice; const firstroll=thedice[0]; const secondroll=thedice[1]; var critFail = 0; if(firstroll == 1 && secondroll == 1) critFail=1; finishRoll( results.rollId, { roll1: critFail, } ); If I attempt to add some of the features from the rollstring above, the 'results' variable is not the same structure. For example: const results = await startRoll(rollstring); const thedice= results.results.roll1.dice; <- this triggers an exception when extra stuff is in the rollstring: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'dice') I am hoping that someone can point me to some more robust documentation, or even better, a working example of startRoll() that is processing more complex rollstrings. Any help or direction is greatly appreciated. Kind regards, -Sean