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

CoC Table and Mod Idea for random overheard conversations

I was thinking today that it would be nice if I had a table of random overheard comments and conversation for my game that I could update or maybe even have different tables depending on location. And a Macro that would Roll a players Listen roll and whisper to them what they have overheard so.. roll players Listen skill if they make it roll on table and Return entry from table via Whisper to player. Perhaps even adding a table modifier depending if they made a hard or extreme roll say +10 / +25 so that entries in the table higher than 100 might be heard with a better role. Or a different idea is return them more than one entry depending on if they make a hard or extreme roll. My thought was not letting players roll it themself but as Keeper click player token then marco that triggers this. As part of the whisper returned could tell them to check the box next to listen on their character sheet (if they made it). If the roll fails return nothing to player via whisper. I guess this would be a variant of the mystery roll that Nick Olivo shows in one of his videos. For all I know this already exists out there or enough that I could easily create it.
1693933514
The Aaron
Roll20 Production Team
API Scripter
I think Tim has been cooking up some MetaScripts that would let you do that pretty effectively.  As it stands now, you could accomplish much of this with RecursiveTable, and basically all of it (except the adding to the roll) with RecursiveTable + Some Meta Scripts.  I'd probably make a couple rollable tables with details you want to relate divided across different quality levels, then use a Meta Script to roll a check and determine which (if any) of the tables to roll against and pass on to the player.
1693949402
timmaugh
Forum Champion
API Scripter
This is a really interesting concept! I agree with Aaron in the basic setup. Different rollable tables for different conversations and/or different qualities of those same different conversations. If you wanted to do this with metascripts, you'd primarily want Muler and ZeroFrame (or just get the MetaScriptToolbox , and have all the toys at your disposal). Muler will treat rollable tables as direct-access tables with indices built from the weight of each item... so if the first item has a weight of 3, it will occupy indices 1, 2, and 3. If the next item has a weight of 5, it will occupy 4, 5, 6, 7, and 8, etc. The indices are open at both ends, so if you have a total weight in your table of 10 but you as for index 12, you will get the item at 10. Similarly, since with Muler you'd be asking for an item by its index, you can control how certain items can be returned. For instance, if you have 120 items of equal weight (1) in your table (giving a total  weight of 120), but you only roll 1d100 to return an item, you'll never get the top 20 things. But if you have a potential modifying attribute that could have a value of 0 to 20, you could instead roll 1d100+@{selected|modifier} and you would get a different range (from the modifier value as the lower bound and 100-plus-the-modifier-value as the upper bound). And because the table indices are open ended, even if you gave an additional +10 bonus, you'd never "fall off" the set of returns... you could roll a 130 as your result, but you'd still get item 120. Here is how that might look: Setup Rollable Table: PlotPoint1_GuardConversation Populate with phrases and snippets of overheard conversation as you see fit. I only put 5 items in this table, but you might have more. Weight them appropriately based on the above explanation of how the weights generate the indices and what roll you will want. I weighted my entries as 1-each, and intended to roll a 1d4 + mod against the table. Retrieve Data Points To retrieve a given entry from that table, we'll use a roll. Like I said, I built the table as if I were going to typically roll a 1d4 (so the last item would be out of reach without a mod). You might have 140 items and be rolling a 1d100 plus modifiers, leaving the last 40 items out of reach except with the help of those mods. If my roll were going to be a d4 plus the character's listen attribute (imagine that's a 0 or a 1), that would look like: [[1d4 + @{selected|listen} ]] Then we'd use a .value (from ZeroFrame) to get the roll result as a number: [[1d4 + @{selected|listen} ]].value Then we'd use that in a Muler-get statement, referencing the PlotPoint1_GuardConversation table: get.table.PlotPoint1_GuardConversation. [[1d4 + @{selected|listen} ]].value/get As long as you use that in a bangsy message, you have your overheard item. Here is a simple output using the ZeroFrame {&simple} tag to drive the resulting command line to the chat: !/w gm The character overhears:  get.table.PlotPoint1_GuardConversation. [[1d4 + @{selected|listen} ]].value/get {&simple} Obviously you could have a query of potential whisper targets, and you said something about wanting the ability to see the result first and then send it on to the player. Here is an implementation that presents the result to you in a template that includes a button to forward the result on to the character: !/w gm &{template:default}{{name=Overheard Conversation}} {{Overheard=get.table.PlotPoint1_GuardConversation.[[1d4 + @{selected|listen} ]].value/get}} {{Send to player=[SEND]^(`/w @{selected|character_name} You overhear: get.table.PlotPoint1_GuardConversation.$[[0]].value/get)}}{&escape ^}{&simple} Expanding (Recursion) A table item could, itself, have a Muler-get statement as a part of it. That means that you could have a rarer-result have not only its own statement, but another roll against the same conversation table (or another conversation table). For instance: You hear who the assassin is? I heard it was Mortimer Creagle. get.table.PlotPoint1_GuardConversation.[[1d4]].value/get As long as Muler detects a new construction it should act on, ZeroFrame will keep the metascript loop going. This could get harder to present to the player (relaying it through a button), so if you want to go this route, post back and we can brainstorm options. Expanding (Loop) Another way to expand it would be to roll for a number of snippets the character might overhear, then build the template around them. This would require a counter variable set with a Muler-set, so I won't go into it in this post, but let me know if you would be interested. The basic idea would be determining how many snippets the character overhears, then generating a new line in the template output for that overheard phrase. Each of them would come with their own SEND button so you could pass it on to the player (or choose among them which make the most sense to share). Expanding (DiscreteWhisper) DiscreteWhisper is a mod script that lets you send individualized whispers to a handful of players at once. For instance, someone could hear more (or less) than another character, or they could mishear something that others heard properly. I honestly owe DiscreteWhisper a refactor, but for now you can check out the expanation in the thread and see if something like that would help. Since DiscreteWhisper is a standard script, the metascripts could still populate the output command line before DiscreteWhisper ever saw it, allowing you to dynamically build the overheard content. Again, as with the others, if you want to go this route, post back and I'll try to help.
1693952788
vÍnce
Pro
Sheet Author
Meta-Magic™
1693962314
timmaugh
Forum Champion
API Scripter
There needs to be a matching jazz-hands motion with that, I think. =D
1693963796
vÍnce
Pro
Sheet Author
timmaugh said: There needs to be a matching jazz-hands motion with that, I think. =D Meta-Magic™
1693968315
timmaugh
Forum Champion
API Scripter
And a brand is born. (I'm DYING over here! LMAO)
Well, a lot more options and thoughts from the community than i expected but amazing. Let me use bullets to comment on specific items, but was not familiar with Zeroframe, Muler and in general metascript toolbox. I have used the Recursion mod a little with phobia table I did. I had been thinking more that I wanted the to see the message when it is whispered to the player, just to make sure I understand what the table returned to them. Not so much that I need to see and approve the message going to them. The Only way I see the other scenario as useful would be if as the keeper you might want to modify the message before sending it on, but this was not my intent. Trying to keep it as simple as possible at first. Recursion: If I understand what your saying here is that if the player hears a rarer conversation from the table due to having made a hard or extreme success on their listen roll and a little bit of luck. And within the rarer entry you would include a recursion roll against the table again or I imagine you could aim it at a different table possibly. This is not quite what i was thinking of but let me ask could the recursion roll trigger a skill check against a different skill and then roll against a table if that roll was a success? My wild thought here is they could overheard conversation like the assassin example you used above and get to make a Spot Hidden Check to see if they detect that the two talkers are passing something between them. Or a Psychology check to see if they can tell that talker A is afraid or angry etc. Loop: This sounds like my original thought. note the SEND button would not be needed as I did not want to see and click send what goes to them but simply be able to see the whisper that goes to them.  With CoC for a roll (Listen in this case) you get a standard, hard, or extreme success (Leaving fumble or critical out of it here. ) My original thought was that when I click this Mod for character it A) makes the roll against their listen skill.  B) If they fail the roll it sends nothing to them. C) If it is a standard success it rolls [1d4] against the table with no modification (To keep it simple say it is a table with 6 entries all equally weighted) and then whispers back the entry that it selects via the 1d4 to the player (I think it may automatically show up for the Keeper but if not would need to go to them as well.) D) If the made a Hard success it would return two entries from the table say one roll of 1d4 and one roll of 1d4+1 (Need to go back and look at the logic above in your post as maybe it is higher than a +1 even though there are only 6 table entries.) E) Makes a Extreme success I originally was thinking having it make 3 rolls against the table 1d4, 1d4+1, 1d4+2. The idea is a chance at more interesting conversations and over hearing more conversations. Discrete Whisper: This is interesting but not so much in the situation I was thinking, though I can see using this for something else. Say you use..what is it called Encounter.. can not recall now but where you can put a token on a map(page) on the DM layer that will trigger if say players get close to it. At which point it runs a script that has them all make listen skill checks. Depending on if each player makes a standard, hard, or extreme success it provides them a slightly different result  say Standard success "You hear the dripping of water and then what sounds like a scratching sound, though you can not tell from what direction." Hard Success, "You hear the dripping of water and then what sounds like a scratching sound from the North". Extreme Success, "You hear the dripping of water and then what sounds like a scratching sound from the North. You can tell that it is from something large moving in your direction fast."
Sorry Left out the image required.