...phew, that was a long title, but I figured completeness was important.
This is a possible underlying Roll20 bug that I found while troubleshooting an issue I found on the official Blades in the Dark sheet (that bug report is here).
The repetition steps from that thread that seem to be a general problem are:
- GM and at least one player belong to and are logged into a campaign.
- The character sheet for this campaign has an event listener for sheet:opened, and the callback for that listener calls getAttrs for some arbitrary attributes (ex: version and character_sheet), and console.logs them out.
- GM makes a character, adds it to All Players' journals, gives All Players edit access.
- GM sets values on the sheet for the Attributes & Abilities that the sheet:opened listener tries to fetch.
- GM closes and reopens the character (not sure if this is necessary, but I've been doing it).
- (crucially) at least one player does not open the character sheet.
- GM opens the character to the character sheet and hits Show to Players.
- Result: the console.log statement inside the listener will show undefined values for the attributes it fetches.
There may be other ways to reproduce; I haven't tried every possible permutation of it.
My guess is that there's an async issue, in which, when a player opens a sheet themselves, Roll20 fires off the sheet:opened event only after waiting to fetch attributes from the server, but that wait doesn't happen when Show to Players happens.