This is one way to do it, It's a Mod API snippit. Meaning it's not in the One-Click for Mods, but you can just COPY this and PASTE it in a custom Mod API and save it with a name like AnnounceNats.js or something. It's a green line of text as-is, it's not an /em -- so some work would be needed to get it looking exactly as you asked for. // Github: <a href="https://github.com/shdwjk/Roll20API/blob/master/AnnouncRoll/AnnouncRoll.js" rel="nofollow">https://github.com/shdwjk/Roll20API/blob/master/AnnouncRoll/AnnouncRoll.js</a> // By: The Aaron, Arcane Scriptomancer // Contact: <a href="https://app.roll20.net/users/104025/the-aaron" rel="nofollow">https://app.roll20.net/users/104025/the-aaron</a> var AnnounceRoll = AnnounceRoll || (function() { 'use strict'; var version = '0.2.2', lastUpdate = 1427604233, checkInstall = function() { log('-=> AnnounceRoll v'+version+' <=- ['+(new Date(lastUpdate*1000))+']'); }, handleInput = function(msg) { var rolldata,out=[]; if (msg.type !== "rollresult") { return; } rolldata = JSON.parse(msg.content); _.each(rolldata.rolls,function(r){ if('R' === r.type && 20 === r.sides) { _.each(r.results, function(roll){ switch(roll.v) { case 1: out.push('<div style="color: #009900;font-weight: bold">Nat 1.. The Narrator says it's a ghoulish horror! </div>'); break; case 20: out.push('<div style="color: #009900;font-weight: bold">NATURAL 20! The Narrator is excited for you. </div>'); break; } }); } }); if(out.length) { sendChat('',out.join('')); } }, registerEventHandlers = function() { on('chat:message', handleInput); }; return { CheckInstall: checkInstall, RegisterEventHandlers: registerEventHandlers }; }()); on('ready',function() { 'use strict'; AnnounceRoll.CheckInstall(); AnnounceRoll.RegisterEventHandlers(); });