One note on gameplay before I make suggestions about structure... If you're creating this system (and therefore have some flexibility), can I suggest regarding the attacks either some sort of "cycle" mechanic (i.e., a reload or cool down period before the weapon can be fired again) and/or a "bandwidth" mechanic (requiring the player to allocate their offensive capacity... not every weapon can be fired every turn... i.e., this weapons platform can output 100pts of attack per turn, and the user has to decide how to divide that between weapons that require different amounts)? The purpose being that if every turn is "everyone fires everything" then the only tension is reducible to who rolls better and how many bad guys are on the field. On the other hand, a cycle mechanic and/or a bandwidth mechanic creates the requirement of strategic planning and a risk/reward structure to the player's own agency. IOW, the player feels like they can contribute to their chances of winning. Also, a note on script + API integration... It's generally suggested, when you're building a sheet, to not require a script in order to play the system if you're going to release the sheet/script publicly since only Pro users will be able to start a game that can fully implement both (scripts being a Pro perk). However, for some of the things you want to do (that will also survive the process of incorporating suggestions from experienced sheet devs and script devs), you are likely going to be in the realm of requiring a script. For instance, a sheet dev can correct me if I'm wrong about this, but sheets can't determine range between tokens. OK, all that said, here's my general feedback... 1) Targets are (probably) going to have to be gathered via Roll20 @{target} syntax... which means a command line that triggers a message that needs to be caught and parsed... which means a script. That command is going to have to be USER INITIATED. If you want to understand why, you can watch the first 15 min of this video (or watch the whole thing if you want to understand metascripts). That means your process will probably be to send a command to the chat (either from the sheet or be having the sheet send a button to the chat output that the user then clicks on), the command line is set to be picked up by your script but prompts the user along the way for the targeted token. 2) You keep mentioning ChatMenu.js... which I'm guessing refers to a script named that? (guessing because there isn't one in the one-click repo that is named that, so maybe this was a bit of code your saved off of the forum/discord somewhere...?) Chat menus can be made without a script, and those menus can even include buttons that fire commands which trigger scripts to run. The vehicle for this is a character sheet template, so since you're already building the sheet (it sounds like), you can do a lot to control the look of the presentation just by building the template the way you want, then populating it with lines and information and buttons to control the various actions you need to incorporate. Bottom line: building a dependency on your own script is already putting you into niche territory; I would suggest *against* also relying on someone else's chat-menu-producing script. That code might change (if it does come from the 1-click) or other people might have it installed but a different/newer version. Either construct your layout as your own template stored in your sheet, or build your script in such a way that it can construct the layout on the fly. 3) YMMV, but I don't like storing ephemeral information in the character sheet. The sheet is for character (or, in this case, weapon platform) data. Separate from that, you have data connected to the fight (really just the turn). Again, it might be just me, but I don't like storing that sort of information in the sheet. My preference would be to share the confirmation of targeting-per-system to a chat menu. The overall flow (imagining a cycle and/or bandwidth mechanic involved, too) I would see would be something like...: ...weapon systems are "enabled" (for inclusion in the attack) on the sheet via a checkbox ...when the Turn Order event is detected, a script checks every player-controlled character sheet and decrements every weapon's "cycle" counter by 1 (or whatever metric). Maybe a weapon can fire once every 5 rounds, so when it fires it gets a "5" in this field. On every Turn Order event, that number is decremented until it reaches "0" and the weapon is ready to be fired again. ...that same code handling the Turn Order change event can now send a whispered message to each sheet controller alerting them to the status of their weapons (enabled, available, or unavailable (cycling) for X more rounds). Each row is a weapon system, and that row has a button to handle enabling/disabling a system for inclusion in the next attack (changing the value on the sheet). The user can configure what is enabled (and the script can report if the amount of attack comes in under the bandwidth limit, if you employ such a mechanic). The script can even monitor (using the messages these button clicks would generate) whether the player is under the bandwidth for the attack so that the targeting phase can begin. The total bandwidth would be those weapon systems that are both enabled AND which sit at "0" as their cycle value (e.g., they are not "reloading"). At the end of the enable/disable phase, the player clicks a "Ready" button. ...the resulting message is a chat button ("Attack!") pre-prepped to be ready to ask for targeting information for each enabled weapon system. If the sheet had four weapon systems enabled, each system would a target designation portion of the line. Maybe the script has already read that System A takes a single target (one targeting statement), while System B can target two (2 targeting statements). The user clicks this button and answers the target requests. ...the resulting message consults the appropriate chart, does the distance calculation, and rolls for damage, presenting it all in a public chat of the results. What you should notice about this approach is that the only data that needs to be tracked/changed on the character sheet is whether the system is enabled or not and how much longer it might be in a "cycle/reload" state. Everything else is handled through chat, tracking the ID of the weapon system in the command line, and passing that back to the script answering the message. Since the only 2 things changing are the "enabled" and "cycle" values, if you don't implement either of these mechanics, you don't even have to worry about this part! The point is, all of the ephemera of the targeting, etc., need not be stored on the sheet. In fact, there are many people who don't like to use a sheet -- especially those who only have a single monitor and limited screen real estate. These are just some random thoughts based on what you posted. If you have any questions or if something wasn't clear, just post back and I'll try to explain more.