Hi, I have a dice pool system in one of the sheets I authored, and I am recently updated it to build a dynamic roll template string based on the selection of dice, then executing it using Custom Roll Parsing. You can find discussion of CRP in the forum and <a href="https://wiki.roll20.net/Custom_Roll_Parsing" rel="nofollow">https://wiki.roll20.net/Custom_Roll_Parsing</a> as well as <a href="https://help.roll20.net/hc/en-us/articles/4403865972503-Custom-Roll-Parsing-for-Character-Sheets" rel="nofollow">https://help.roll20.net/hc/en-us/articles/4403865972503-Custom-Roll-Parsing-for-Character-Sheets</a>. If you want to see how I did it, then have a look in the Mutant Year Zero sheet in the Roll20 github repo. Lots of what I have in there are legacy stuff and might need an update, but the roll parsing in the executeRoll function was written recently. Basically, I have 3 different types of dice that the player can chose up to 12 of, for each of them I add a `type-roll-${id}= [[ 1d6 ]]` to the dice roll string, this gives me a separate roll output per dice. The roll template then has an output for each, so that one grows pretty large compared to if rolls were lots of dice are all in the same roll. The next question might be how you want to handle the opposing roll - do each character sheet roll separately and have separate output in the chat, or would the player also input the opposing roll info in their own sheet? The former is probably what you are after and more straightforward, the latter would be more complicated but might allow you to do comparsions of the rolls before sending the result to chat.