You could write an API script which looks for inline rolls on the Catch-Phrase table, and replace the inline roll with the result of the roll. In other words: Input: I'm gonna show you [[1t[Catch-Phrase]]]! msg.content: I'm gonna show you $[[0]]! msg.inlinerolls: ..."the shiniest meat bicycle"... Then you just replace the placeholders in the message content with the text of the rollable table result, instead of letting the system replace them with the yellow boxes. Edit: Ta-da! Type !cphr message , and any inline uses of [[1t[Catch-Phrase]]] will be stripped of their yellow box-ness. The rest of the message will appear as intended. (If you post as a character using the "As" dropdown box, the character's avatar won't appear, but that's a failing of the sendChat function.) You may use other commands in the message, eg !cphr /me considers shouting "[[1t[Catch-Phrase]]]," but decides against it . on('chat:message', function(msg) {
if (msg.type != 'api') return;
if (msg.content.indexOf('!cphr ') != 0) return;
var text = msg.content.substring(6);
for (var i = 0; i < msg.inlinerolls.length; i++) {
if (msg.inlinerolls[i].expression == '1t[Catch-Phrase]') {
text = text.replace('$[[' + i + ']]', msg.inlinerolls[i].results.rolls[0].results[0].tableItem.name);
} else {
text = text.replace('$[[' + i + ']]', '[[' + msg.inlinerolls[i].expression + ']]');
}
}
var sendAs;
var chr = findObjs({ _type: 'character', name: msg.who})[0];
if (chr) {
sendAs = 'character|' + chr.id;
} else {
sendAs = 'player|' + msg.playerid;
}
sendChat(sendAs, text);
});