EDIT: Use Jakob's version below. It's much simpler and more elegant. Create two new attributes (alternateSTR and placeholder). Give the alternateSTR attribute the alternate value ("10" from your original example). The placeholder attribute can have any number. Zero would be a good test number so you can immediately see if something has gone wrong. You can do this with ChatSetAttr, but since this is likely for a single character, I would suggest not automating that. Your macro (a character Ability, not a collections macro, i.e. one written on Attributes and Abilities tab of the character sheet) would look something like the following. But like I said, the logic might need to be tweaked a bit to get the performance you are expecting. I haven't thoroughly tested this. Block 1 puts the alternate Str value into a placeholder attribute. Block 2 puts the regular Str value into the alternate attribute. Block 3 puts the placeholder value into the Str attribute. You would need a separate macro for toggling your dexterity, requiring another attribute called alternatedex, but you could use the same placeholder attribute for either macro, since it is just a temporary holding area. Also, I have used "strength" and "dexterity" for the attributes. I don't use the OGL sheet, so those names might be different. Check your attribute names on the left hand side of the Attributes and Abilities tab of the character sheet. Finally two buts of advice: 1) test this on a throwaway character, just in case. and 2) if you are a player, your GM will need to toggle player access to ChatSetAttr (it's in the Config menu), if you are the one who is going to be running it. !setattr {{
--sel
--replace
--placeholder|@{selected|alternateSTR}
}}
!setattr {{
--sel
--replace
--alternateSTR|@{selected|strength}
}}
!setattr {{
--sel
--replace
--strength|@{selected|placeholder}
}}