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

New Reaction Live for Subscribers: Send to Chat

This summer, following the release of the Foreground Layer, we released a new feature called Reactions  that allow GMs to set up any token to automatically trigger when a player or GM-controlled token overlaps/touches it.  The first Reaction released was Conditional Fade, and now, we're happy to announce Send to Chat ! Use it to:  share descriptions trigger environmental emotes make your NPCs or creatures talk roll dice activate macros or mod scripts ... and more! Reactions can be used on any tabletop layer, and Send to Chat can be combined with Conditional Fade. You can read more on  our latest blog .   To access/configure Send to Chat, double-click any token and use the Reactions   settings found on the Advanced tab. Let us know what you think! 
1764096515

Edited 1764097251
Very nice feature. Is there a way to make the StC announce WHO triggered it, even if it's just a whisper to the GM?  Can save a lot of arguments with players saying "I never touched that trap!" lol Also, one thing I've noticed in my quick testing is that if a larger token (in this case, a 3x3 token) passes over a single square token, it only triggers it if the center square passes over it.  Is that working as intended?
Hi Jason! I spoke with the devs who agree that whispering who triggered what would be sick. We will look into that after our turkey day holiday. Regarding your second question, yes, that behavior is intentional. What you’re noticing is the interaction with the token’s collision box. This design prevents tokens from accidentally triggering things when a corner bumps into them, ensuring that activations feel deliberate and intentional. We found corner bumping to feel quite irksome. You can view the collision box on the lighting layer for reference.
1764106215
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
This is a total and complete bona fide game changer! So many script just became easier and/or more powerful!  Can you explain what is meant by the sample ID syntax here?
1764125799

Edited 1764126641
Seb
Pro
Absolutely love this. Incredibly useful. Maybe an additional checkbox could be added to give an option to "Lock token Movement" (triggering token or all party tokens) after send to chat is triggered. It would give the GM time to describe what just happened and sort things out.
Feature Suggestion Being able to whisper the emas to players using this feature and others, so you can whisper things to a player and still have it look like the beautiful ema you can have in regular chat. 
1764142025

Edited 1764142697
Seb said: Absolutely love this. Incredibly useful. Maybe an additional checkbox could be added to give an option to "Lock token Movement" (triggering token or all party tokens) after send to chat is triggered. It would give the GM time to describe what just happened and sort things out. It seems like you should be able to do this with token mod. I have it setup and it works for me as a DM moving my player's tokens into an area with the send to chat reaction. But for some reason when I try to trigger from my test player account in a another browser (while still present as DM in the game) it doesn't trigger at all.  Here's what my send to chat looks like though to "pause" the game. Basically just tell token mod to turn on "lockMovement" for all the tokens that match the list of passed in Character IDs. Then it just says "Game Paused" in chat. !token-mod --ids some-id some-other-id final-character-id --on lockMovement Game Paused And then a macro to "unpause" that does the same thing just setting --off instead of --on
Love it! it's going to be very useful.  One thing I noticed with my quick test; I have ladders connecting the upper and lower decks of the player's starship & have a script which moves them to the corresponding ladder on the other deck when they step on the space (marked by an invisible token). With this reaction I set it to say 'you clamber down the ladder to the lower deck' and on the lower deck 'you climb the ladder to the command deck' Entering the ladder space on the command deck fires the expected message and moves them to the lower deck, which, given that it is a ladder space with a reaction on it immediately fires the lower deck reaction although the player remains on the lower deck - Hope that made sense. Not really a bug, merely an observation & a peculiarity of the way I set things up.
1764167127

Edited 1764172261
timmaugh
Forum Champion
API Scripter
First, like everybody else, I am loving this new functionality. Here are a few hacks to make it do more until we get further development from Roll20: Let the Metascript Hackery BEGIN! So, first, all of this will require the Metascript Toolbox script package to be installed. Also, since Beacon sheets don't expose their attributes and the model of HOW they will expose attributes when the DO expose attributes isn't yet settled, the Toolbox hasn't been updated to work with Beacon sheets (ie, the 2024 sheet). We can still do things with the *tokens*, but where I note pulling an attribute from a character, that won't work for Beacon-based characters. But after all of thaaaaaaaaaaaaat... Get the name of either the INSTIGATOR or the TOKEN Fetch offers ways to get the name of a token based on the ID. And since the ID is what is returned by the Reaction syntax nuggets of INSTIGATOR_ID and TOKEN_ID, we can use them to get the name: @({INSTIGATOR_ID}.token_name) @({TOKEN_ID}.token_name) Get an Attribute from the Associated Character Fetch also will track the ID up to an associated character if you need to return an attribute: @({INSTIGATOR_ID}.hp) @({TOKEN_ID}.RemainingAmmo) Send Any of This to the Chat Since the Toolbox only works in bangsy messages (those beginning with a "!" and intended for the script sandbox), we need to start our message that way, and then we need a {&simple} tag to turn it into a normal message. That means, that this will work to announce WHO triggered WHAT event: !@({INSTIGATOR_ID}.token_name) did the thing with @({TOKEN_ID}.token_name).{&simple} Want to whisper to the GM, just put the "/w GM" at the start: !/w gm @({INSTIGATOR_ID}.token_name) did the thing with @({TOKEN_ID}.token_name).{&simple} Whisper to the Owner of the Token Fetch also offers a way to get the controller of the token: @({INSTIGATOR_ID}.token_cby_name) That means that you can whisper a message to the controller of the instigating token: !/w  @({INSTIGATOR_ID}.token_cby_name) You feel the overwhelming urge to eat something. Your party-mates look tasty. {&simple} And since the Send to Chat box can send multiple commands out, you could have this on one line, and a wider/broadcast announcement on another. Combining this all, you could whisper a special message to the instigator, request a roll against a Save value that you retrieve from the character (including a button), while outputting a separate message to the wider game: !/w @({INSTIGATOR_ID}.token_cby_name) You triggered a trap. Roll a Wisdom save. @({TOKEN_ID}.token_name).[Save](!
@{@({INSTIGATOR_ID}.token_name)|wisdom_save_roll}){&simple} !@({INSTIGATOR_ID}.token_name) chose poorly. {&simple}
1764171712
timmaugh
Forum Champion
API Scripter
An Example Here is the text from a token's "Send To Chat" reaction box: !/w @({INSTIGATOR_ID}.token_cby_name) &{template:default} {{name=You Did The Thing}} {{What Happened=You did the thing, and... it doesn't look good. It... I can't even. It just... I think you'd better roll a Wisdom save.{&nl}[Save](!
@{@({INSTIGATOR_ID}.token_name)|wisdom_save_roll}) }} {&simple} !&{template:default} {{name=Oops}} {{=@({INSTIGATOR_ID}.token_name) chose poorly. Like, really poorly. "Saint @({INSTIGATOR_ID}.token_name) of Bad Choices", the children have taken to calling them. }}{&simple} There are 2 statements, each of them templated. One is whispered to the controller of the instigating token, and includes a [Save] button. The other message is sent to the table at large. Here is what the controller of the instigating token sees (the whispered message): And then everyone sees the other message: And the button works: