Critical success and failure for GURPS can't be done by the regular Roll20 dice engine. You need to either create a custom roll template or write an API script. Here's a simple API script that gets the job done in a crude way. The syntax is: !gurps <effective skill level> E.g., !gurps 10 on("chat:message", function(msg) { if(msg.type === "api" && msg.content.indexOf("!gurps ") !== -1) { var level = Number(msg.content.split(" ")[1]); var roll = randomInteger(6) + randomInteger(6) + randomInteger(6); var margin = level - roll; var result; if(roll <= level) { result = "Success"; } else { result = "Failure"; } if(roll === 3 || roll === 4) { result = "Critical Success"; } if(roll === 5 && level >= 15) { result = "Critical Success"; } if(roll === 6 && level >= 16) { result = "Critical Success"; } if(roll === 18) { result = "Critical Failure"; } if(roll === 17 && level <= 15) { result = "Critical Failure"; } if(margin <= -10) { result = "Critical Failure"; } sendChat(msg.who, "&{template:default} {{name=Roll vs. Effective Skill " + level.toString() + "}} {{Roll=" + roll.toString() + "}} {{Result=" + result + "}}"); } });