Thanks for the great info. I understand even if I could break out of the sandbox (and its VM) that would violate the license (not to mention every code of conduct I have heard of). You say “order of operations on the Client side”, but I am thinking I should not read this to mean the expansion is done on my browser/client. The dice engine must be on the server side, yes? And probably a shared dice engine outside the sandbox so roll20 guys can aggregate roll characteristics. (If msg expansion actually is happening my client, I could conceivably inject code into my client to trap it. I doubt I would take that on – I do have a day job - but it would be possible.) I guess I was holding out the very thin hope that the dev team had left a hook for the message expansion/parser inside the sandbox, such as a prototype I could override. It appears not. So what's left? The convoluted approach of up-arrow and grab the text from the chat box in the web-browser client-side's DOM. It's essentially code-injection on my browser again. Not only would that be client-browser specific, the dev team would have no reason to support it going forward. Plus, I would still have to somehow push the text I've now captured back through the roll20 API, to get it back into the sandbox so I can attach it to anything. I don't want to do that. An ugly mess. But I can do this: I can grab the inline rolls from the msg object inside the sandbox. I think. Even in your above example, any inline rolls for the attribute should show up in the msg object, right? For example, msg would include the rolls for: !msg @{Bugwort the Hairy|Some_attr_with_rolls}
At least that's what I seem to be getting when I dump the msg objects. So the current plan is to play around with this approach and see if it has any usability advantage for the players. It is just frustrating when the text I want is taunting me from the chat box on the screen. LOOK! THERE IT IS! RIGHT NOW! I hit it with my magic +2 keyboard of agile programming, and it just LAUGHS AT ME!! I think this well is now officially dry. Unless you have a suggestion for me, Aaron. Or anyone. Or if you want to correct some misunderstanding I am displaying in my musing above, that would also be good. Anything you can do to keep me from hurting myself is always appreciated.