OK, finally had a chance to write up my notes for how to pull this off. First, I should say that I built this interaction to be like the classic Simon game, where the puzzle presents a 1-length puzzle the player has to repeat, then it adds a second element, then a third, etc. If you'd rather prefer a simple, fixed-length puzzle, this can be modified/simplified to that quite easily. Here is a video of the game play. Note that after this video I thought about using a collective "Party" character that could field the chat panels requesting player interaction/guessing. That would keep the panels from polluting the GM chat output. The instructions of this are in the first comment on the video, which is repeated, below, for convenience: YouTube Demo of GamePlay Instructions This uses scripts to automate a classic memory game. In this version, I use the Metascript Toolbox, Assemble, and TokenMod scripts (both the Toolbox and Assemble require changes that will be available in the 1-click Script Repository after the merge happening early in the week of Dec 7-14). Note, since this makes use of classic attributes, it will not work in a Beacon-only game (e.g., using only the 2024 sheet). If you are running such a game and can add a non-Beacon sheet to your game, as well (e.g., the 2014 D&D Sheet by Roll20), this will work. Once all the scripts are installed, here is the setup: ===== CONFIGURATION Run this command one time in your game to allow players to use IDs with SelectManager (part of the MetascriptToolbox): !smconfg +playerscanids ===== CREATE TOKENS AND CONFIGURE Though you can change the "Action" to be something else (flipping multi-sided tokens from side 1 to side 2, then reverting them), this demonstration uses tokens that have a Tint applied to them, and apply an Aura as part of the indication of which token is under focus. The Tint is important because it determines the Aura color. To make all of that work, add the number of tokens you require for your game; I used six. The tokens do not require a name. Tint each with a unique color. Finally, go to the 3-dots beside Aura 1's controls and change the settings to SELECT the "See" box and DESELECT the "Edit" box. Save the changes for each token. ===== CREATE CHARACTER AND GIVE PERMISSIONS I stored all of the commands on a single character that I named "SimonGame" (no space). If you use a different name, make sure you change the name in the subsequent command lines. Make sure you use a non-Beacon character sheet for this, since this will also be where the attributes will be written/read. Edit the character properties and add "All players" to the "Can Be Controlled" list. Your players DO NOT have to see this character in their journals; they only need controlling rights. ===== CREATE ATTRIBUTES On SimonGame, create two attributes and leave them blank. Name them: Targets Guess ===== CREATE ABILITIES Create the following abilities on SimonGame, and enter the associated command line text for each. Action !{{(^) !token-mod --set aura1_radius|1 aura1_color|@(selected.tint) scale|2u !token-mod --set aura1_radius| scale|1u {^&delay .8} }} Start !assemble --group|SimonGame|Targets --target|@{target|Target 1|token_id} --report|no !set.SimonGame.GameData.count=1/set Add !assemble --mode|+ --group|SimonGame|Targets --unique|no --target|@{target|Next Tile|token_id} --report|no !set.SimonGame.GameData.count={&math get.SimonGame.GameData.count + 1}/set RunSequence !forselected(^) %^(SimonGame|Action) {&+select @{SimonGame|Targets} } {^\\&delay {^&math {&i}*0.9 }} RequestGuess !assemble --group|SimonGame|Guess --count|=get.SimonGame.GameData.count/get --report|no --unique|no --who|all RunPlayerSequence !forselected(^) %^(SimonGame|Action) {&+select @{SimonGame|Guess} } {^\\&delay {^&math {&i}*0.9 }} GameData count=1 Evaluate !{&if '@{SimonGame|Targets}' = '@{SimonGame|Guess}'}Correct.{&else}Incorrect.{&end} {&simple} Menu /w gm &{template:default} {{name=Simon Game}} {{=[Start](!
%{SimonGame|Start}) [Add](!
%{SimonGame|Add}) [Show](!
%{SimonGame|RunSequence}) [Request Guess](!
%{SimonGame|RequestGuess}) [Show Guess](!
%{SimonGame|RunPlayerSequence}) [Evaluate](!
%{SimonGame|Evaluate})}} There are ways to improve this. For instance, I used a default template for the menu. You could easily substitute in a different template or a script that would produce a menu, instead. Also, the Assemble script sends the "request player guess" message to "all", meaning that the panel appears in the GM screen, too. If you want, you could send this menu to a particular player, instead. That way, only that player will see the panel, and the GM chat is not polluted with extraneous output. Look for the "--who|all" argument in the Assemble commands, above, and change that to be a player's name: --who|Bob Alternatively, you could have a character (named "Party", for now), to which the players have controlling rights (again, they don't need to see it in the Journal). Then you could send the message to the "Party" character, and the GM wouldn't see it: --who|Party Also, I used a display of 0.8 seconds for the effect to show before reverting the token, and a corresponding delay of 0.9 seconds before the next token is highlighted. These values are in the Action, RunSequence, and RunPlayerSequence abilities. You can choose a longer/shorter duration, but make sure that the run-abilities have a slightly higher value than the length of the effect, since you won't want to confuse your players with 2 tokens being highlighted at the same time. Finally, as mentioned, you can change the Action to be something else entirely. For instance, to change a multi-sided token to its second side, then change it back after 0.8 seconds, your Action command line would be: !{{(^) !token-mod --set currentside|2 !token-mod --set currentside|1 {^&delay .8} }}