Some thing keith mentioned above bears repeating: The --all command means apply this to all characters in the campaign. Every single one. all Pcs, all npcs, all monsters. You probably dont want to use that. The command you have set up will overwrite the edge attribute of other characters, with the edge of the current one. So let's say Bob has edge 3, and Lea has 1. Lea uses this command: now Bob and Lea both have 1 edge. If its a communal pool, i guess that makes sense - but there's no spending of edge here. i think you need to go back to basics and think what you need to do: You need an attribute that is shared by the entire group When anyone spends a point from this attribute, it goes down for everyone You need to restrict the attribute changes to just the characters in this group - maybe thats not an issue? There are some problems for incorporating this in a character sheet: Is this sheet just for your own group, or are you planning to share it with others? if sharing, API Scripts are only for campaigns with a Pro level GM, so it cant be used by a lot of users and isnt really appropriate unless this part is made optional (the rolls dependent on scripts are hidden, for instance). Limiting the attribute changes to just the pcs is impossible from a character sheet, without further set up: you need some way of identifying the characters, which cannot be done automatically from the character sheet alone. An attribute that holds a manually created list of character names is one way to do it for instance. Or maybe you dont care that it gets added to npc sheets if they will never use it. If you dont care that it will change every character, and just intend it for your own groups use, a better way would probably be <button type="roll" name="roll_edgeRoll" value="!modattr --all --edge|-1">Edge</button> This way it reduces the edge attribute by one for everyone and reports that it has been reduced. Or you could do <button type="roll" name="roll_edgeRoll" value="&{template:default}{{name=@{character_name} spends Edge!}} \n!modattr --silent --all --edge|-1 ">Edge</button> The \n there is a linebreak, ensuring the script command is on its own line. This might not be necessary with chatsetattr, not sure.