Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

[5e Shaped] Possible to show player's only the die result with no modifiers?

All I can say is "sigh, bards". One of my players recently decided he wants to play a bard in the next campaign, which means he's going to need access to the die roll (sans result and modifiers), and no, I don't want to debate whether or not that's how the ability actually works. Is there a way that a macro or the client can show all dice rolls that I make as the GM without showing their corresponding bonuses or adjusted results? I'm assuming not, and that I'm just going to have to mouseover every single roll and tell him what it is, but I'm really hoping for an easier workaround. Thanks!
1484683578
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
You could make custom abilities for everything (lots of work I know), that would be something like: Roll: [[1d20]] /w gm Modifiers: [[Whatever the modifieres are]] You'd lose the autocalculation part, but wouldn't have to mouseover.
Scott C. said: You could make custom abilities for everything (lots of work I know), that would be something like: Roll: [[1d20]] /w gm Modifiers: [[Whatever the modifieres are]] You'd lose the autocalculation part, but wouldn't have to mouseover. Phew, yeah, that would be brutal, and I'd lose basically all of the amazing importation options from the shaped sheet. Looks like I'll just have to mouseover all the rolls, blech. Thanks, though!
1484685457
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
Could also turn 3d dice on and then get the die roll from the 3d dice on the screen to easily tell your player what the roll was.
1484685720

Edited 1484686199
Jakob
Sheet Author
API Scripter
Wouldn't be hard to make an API script that watches the chat for d20 rolls and whispers you the roll any time it detects one. EDIT: Or more specifically, watches the chat for d20s in inlinerolls from messages only from you, and then outputs the pure roll in whatever form you want.
Scott C. said: Could also turn 3d dice on and then get the die roll from the 3d dice on the screen to easily tell your player what the roll was. Unfortunately I roll 2d20s (for adv./disadv.) by default, and there's no way to tell by just looking at the 3d dice which is the "first" roll, otherwise that would be a workaround. Jakob said: Wouldn't be hard to make an API script that watches the chat for d20 rolls and whispers you the roll any time it detects one. EDIT: Or more specifically, watches the chat for d20s in inlinerolls from messages only from you, and then outputs the pure roll in whatever form you want. That would certainly work, especially the second option, but that's beyond me, unfortunately.
1484691946
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
Ah, true
1484692449

Edited 1484771078
Jakob
Sheet Author
API Scripter
Okay, rough form. Currently whispers the result to the GM (but I can change it to make it public, or less ugly). Only reacts to inline rolls by players whose display name in game is in the playerNames array on line 4. So change the 'GMNAME' there to whatever your ingame display name is. var rollListener = rollListener || (function () { 'use strict'; const version = '0.2', playerNames = ['NAME1','NAME2'], dieSize = 20, checkInstall = function () { if(!_.has(state, 'RollListener')) { state.RollListener = { active : false, whisper : '"GM"' }; } log('-=> RollListener v' + version + ' <=-'); }, extractRoll = function (roll, results) { switch (roll.type) { case 'R': if (roll.sides === dieSize) { _.each(roll.results, function (r) { results.push(r.v); }); } break; case 'V': _.each(roll.rolls, _.partial(extractRoll, _, results)); break; case 'G': _.each(roll.rolls, function (r) { _.each(r, _.partial(extractRoll, _, results)); }); } }, handleInput = function (msg) { let displayName = (getObj('player', msg.playerid) || { get: (a => 'API')}).get('_displayname'); if (state.RollListener.active && _.contains(playerNames, displayName) && _.has(msg, 'inlinerolls')) { let results = []; _.each(msg.inlinerolls, function (roll) { extractRoll(roll.results, results); }); if (results.length) { let charName = (msg.content.match(/{{character_name=([A-za-z0-9\(\)]*)}}/) || ['',''])[1], title = (msg.content.match(/{{title=((?:[A-za-z0-9\s\(\)]|\^{\w+})*)}}/) || ['',''])[1], whisper = state.RollListener.whisper ? ('/w ' + state.RollListener.whisper + ' ') : '', output = whisper + '&{template:5e-shaped} {{title=' + title + '}} {{freetext=' + (charName ? charName + ' - ' : '') + 'D20 rolls: <b>' + results.join(', ') + '</b>.}}'; sendChat('Listener', output); } } else if (msg.type === 'api' && (msg.content.search(/!roll-listener\b/) === 0)) { switch(msg.content.split(' ')[1]) { case 'toggle': state.RollListener.active = !state.RollListener.active; break; case 'public': state.RollListener.whisper = false; break; case 'whisper': state.RollListener.whisper = msg.content.slice(23); } } return; }, registerEventHandlers = function () { on('chat:message', handleInput); }; return { CheckInstall: checkInstall, RegisterEventHandlers: registerEventHandlers }; }()); on('ready', function () { 'use strict'; rollListener.CheckInstall(); rollListener.RegisterEventHandlers(); });
1484693906
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
"What a guy!" <salutes>
1484695321
Kryx
Pro
Sheet Author
API Scripter
The sheet would be unable to show this, unfortunately. Sheets cannot use a result twice (save it and use it again) so I have no means to provide this functionality. It seems like API is your best option.
1484749703

Edited 1484750649
Kryx said: The sheet would be unable to show this, unfortunately. Sheets cannot use a result twice (save it and use it again) so I have no means to provide this functionality. It seems like API is your best option. No worries, Kryx. Thanks for everything you do. Jakob said: Okay, rough form. Currently whispers the result to the GM (but I can change it to make it public, or less ugly). Only reacts to inline rolls by players whose display name in game is in the playerNames array on line 4. So change the 'GMNAME' there to whatever your ingame display name is. You're a saint. Can I pay for your pro for a month or something? That should be a thing. The only things I could think of would be: A command to toggle it on/off A command to toggle it from whisper to the GM, to public, to whisper to specific player The ability for the output to also label the source of the roll. i.e. if it's a Dexterity save (or other action/referenced roll) from the shaped sheet, have the whisper say something like "Dexterity Save - Character/NPC Name - D20 rolls: X, Y". That way if it's public, it requires basically no action on the DM's part. It's up to the player(s) to be watching and interject within a reasonable time frame if they want to affect the roll. It works perfectly as is, so do not feel at all obligated to do those things (I didn't even expect you to make the script to begin with), they're just the only few small quality of life tweaks I can think of at the moment, and I figured I'd ask. And seriously, if you have a patreon or something, I'd donate for your efforts. Cheers!
1484760164
Jakob
Sheet Author
API Scripter
No problem, I'm happy to help. There's a gift subscription button on the player profile if you want to give me some pro time, I won't complain ;). Since it was easy, I added all your points (no seriously, it only took 20 minutes, so no trouble). Commands are !roll-listener toggle !roll-listener public !roll-listener whisper "Conan the Destroyer"
Jakob said: No problem, I'm happy to help. There's a gift subscription button on the player profile if you want to give me some pro time, I won't complain ;). Since it was easy, I added all your points (no seriously, it only took 20 minutes, so no trouble). Commands are !roll-listener toggle !roll-listener public !roll-listener whisper "Conan the Destroyer" That's great! Everything is working exactly as expected, except for the source reporting. It will report when the source of the roll is an action, but doesn't seem to say anything if it's an ability check, saving throw, initiative, etc. That's not a huge deal, and may not even be possible, but figure I'd report it.
1484765358
Jakob
Sheet Author
API Scripter
Hmm, interesting exercise in regular expressions. :D /{{title=((?:[\w\s\(\)]|\^{\w+})*)}}/ Should work now.