The internal plugin DiceFilterPlugin allows you to filter dice of a roll. This is a very useful feature for situations where only a few dice matters.
The simplest way to filter dice is to use the the() method:
5.d10.the(2.best) 10.d20.the(5.worst)
You can use the only_if() method to specify more advanced filters:
5.d6.only_if(2) 10.d12.only_if([1,3,5,7,9,11]) 5.d20.only_if(1..4) 5.d20.only_if(2.d10)
In the first script we are rolling five six-sided dice and filtering all dice equals to 2. The second script rolls ten twelve-sided dice and filter all dice equals to 1, 3, 5, 7, 9 or 11. The third script rolls five twenty-sided dice and filter all dice between 1 and 4 (inclusive). Finally, the last script rolls five twenty-sided dice and filter all dice equals to any dice in two ten-sided dice.
Although these scripts work fine, we can do things in a more idiomatic way:
5.d6.only_if{it == 2} 10.d12.only_if{it.is_odd} 5.d20.only_if{it in 1..4} 5.d20.only_if{it in 2.d10}