Can you hook the chat to intercept rolls and modify the syntax as it is sent? Or do you have to create a new roll type function to do that? I've been wondering if there would be a way to add a new keyword to the roller, that keyword would be "last" and it would contain the last result of the roller. So, for example, say you're running damage, and you want to have a running total, but it's conditional. Say, critical hits. Write a macro: Attack [[1d20]] | [[1d20]] Damage = [[1d8]] Critical Damage = [[last+1d8]] The output would then have the "proper" results, and no addition is required by the player to total damage. This makes it very simple to make a macro block, and it sums your last damage + your new damage. Now I'm not sure the chances of someone else injecting a ROLL at the perfect time to mess this up. But I figure most of the time macro blocks will run sequentially, and no one could "inject" bad data at the wrong time to throw off the math. If you're feeling froggy, make it a pseudo array of 5 rolls, so you can go back in time a few roll results. Write a macro: Attack [[1d20]] | [[1d20]] Damage = [[1d8]] Sneak Attack Damage = [[2d6]] SubT = [[last1+last2]] Critical Damage = [[last3+1d8]] Critical Sneak Attack = [[last1+last3+2d6]]