timmaugh said: There is a known issue with Roll20 dropping multiple commands from a single macro... so you might want to send 20 individual commands but only 12 of them get processed. That's probably what you are running into when you create individual ChatSetAttr commands. I could see a way to do this with meta scripts. If you output your individual ChatSetAttr commands wrapped in Plugger constructions, they would essentially become discrete instructions that Plugger would issue to ChatSetAttr: !{&eval}setattr --.......{&/eval} {&eval}setattr --....{&/eval} The benefit of this is that these are all in the first message, so there's no real chance of part of them getting dropped. However, they are all issued separately, with Plugger issuing the command to ChatSetAttr. You could take this a step further and put them in a Mule, where each entry ALSO had the instruction to get the next variable from the Mule. Each entry in the Mule would look something like (where the Mule is called "ImportMule"): 0=!setattr --repeating_trickattack_-CREATE_trickname|Mundane Mace --repeating_trickattack_-CREATE_trickaccuracy|6 --repeating_trickattack_-CREATE_trickthreat|1 --repeating_trickattack_-CREATE_trickrange|6 --repeating_trickattack_-CREATE_trickdamage|8 {&eval}{&mule ImportMule}get.ImportMule.1/get{&/eval} 1=!setattr --...... {&eval}{&mule ImportMule}get.ImportMule.2/get{&/eval} The last entry in the Mule wouldn't have verbiage to get the next variable; it would just end. That would effectively establish a loop that would continue through the Mule, embedding the next call in the previous. The first option would require Plugger and SelectManager; the second option would require Plugger, Muler, SelectManager, and ZeroFrame. so i thought i had figured it out, but i am pretty sure the system was just handling my messages slightly different and that i am not using plugger properly. as my project has gotten more complex, i have been adding more scripts to my import process and roll20 is starting to not process all the commands again. reading through the documentation it seems like i need to add code to all my scripts to have them work with plugger, specifically: on('ready', () => { try { Plugger.RegisterRule(%%scriptname%%); } catch (error) { log(error); } }); for all my oneclick scripts i would need to find their current versions on github and put this code in there. do i also need to add the "Parse the content String" code to all the scripts i am using with plugger? the only variable that would be need to be kept between calls that i am doing would be the selected token, but that should be kept constant by SelectManager right? to give you an idea of where i am at right now, here is one of the simpler export/import commands !charsheet --Malcolm !{&eval}token-mod --set represents|@{Malcolm|character_id} name|Malcolm bar1_max|9 bar2_max|9 defaulttoken {&/eval} {&eval}setattr --silent --sel --charname|Malcolm --profmod|2 --movespeed|4 --threat|1 --manamod|4 --Initiative|-1 --quickness|-1 --might|1 --cunning|2 --insight|0 --resolve|0 --defense|10 --physarm|1 --mentarm|3 {&/eval} {&eval}setattr --silent --sel --repeating_trickattack_-CREATE_trickname|Improved Cauldron --repeating_trickattack_-CREATE_trickaccuracy|0 --repeating_trickattack_-CREATE_trickthreat|1 --repeating_trickattack_-CREATE_trickrange|1 --repeating_trickattack_-CREATE_trickdamage|11 {&/eval} {&eval}setattr --silent --sel --repeating_maneuverattack_-CREATE_maneuvername|Improved Cauldron --repeating_maneuverattack_-CREATE_maneuveraccuracy|0 --repeating_maneuverattack_-CREATE_maneuverthreat|1 --repeating_maneuverattack_-CREATE_maneuverrange|1 --repeating_maneuverattack_-CREATE_maneuverdamage|11 {&/eval} {&eval}setattr --silent --sel --repeating_spellattack_-CREATE_spellname|Improved Cauldron --repeating_spellattack_-CREATE_spellaccuracy|2 --repeating_spellattack_-CREATE_spellthreat|1 --repeating_spellattack_-CREATE_spellrange|1 --repeating_spellattack_-CREATE_spelldamage|19 {&/eval} {&eval}setattr --silent --sel --repeating_psytechattack_-CREATE_psytechname|Improved Cauldron --repeating_psytechattack_-CREATE_psytechaccuracy|0 --repeating_psytechattack_-CREATE_psytechthreat|1 --repeating_psytechattack_-CREATE_psytechrange|1 --repeating_psytechattack_-CREATE_psytechdamage|11 {&/eval} {&eval}setability --replace --sel --token --Improved Cauldron#\amp{template:default} \q{Damage Type|Maneuver, }} {{name=Improved Cauldron Maneuver Attack}} {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}|Trick, }} {{name=Improved Cauldron Trick Attack}&#125 {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}}{&/eval} {&eval}setability --replace --sel --token --Fancy Cauldron#\amp{template:default} \q{Damage Type|Maneuver, }} {{name=Improved Cauldron Maneuver Attack}} {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}|Trick, }} {{name=Improved Cauldron Trick Attack}&#125 {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}}{&/eval} {&eval}setability --replace --sel --token --Super Cauldron#\amp{template:default} \q{Damage Type|Maneuver, }} {{name=Improved Cauldron Maneuver Attack}} {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}|Trick, }} {{name=Improved Cauldron Trick Attack}&#125 {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}}{&/eval} {&eval}setability --replace --sel --token --Dank Cauldron#\amp{template:default} \q{Damage Type|Maneuver, }} {{name=Improved Cauldron Maneuver Attack}} {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}|Trick, }} {{name=Improved Cauldron Trick Attack}&#125 {{First Roll=\[1d20+0\]}} {{Second Roll=\[1d20+0\]}} {{Damage=10}}}{&/eval} {&eval}ta - init - checks - saves{&/eval} first it makes a character sheet named whatever using an altered version of CharSheet. next with TokenMod the sheet is assigned to the currently selected token, and the token's hp bars are set according to the characters stats. next it uses ChatSetAttr to import the characters base stats and such. then it uses SetAbility to create a token action for each weapon the character has (the system has different attack/damage stats for weapons depending on what type of action is being used). finally it runs a version of TokenActionMaker that i have altered to work with our system to make buttons for initiative/armor checks/skill checks. right now, the code will work fully about 25% of the time. if i remove the TokenActionMaker command (ta) it works every time, but the goal is to have the players be able to click a button on our website to copy the code, and then just select a token and paste the code into chat to make their character