36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
/**
|
|
* A helper function to try and infer what roll mode was used when creating a
|
|
* chat message in case the roll mode was not provided during the createChatMessage
|
|
* hook for whatever reason.
|
|
*
|
|
* **Disclaimer**: This inference is not totally correct. Particularly when inferring
|
|
* a GM's message, as it won't be able to distinguish between a self-roll and a
|
|
* private GM roll when it's
|
|
*
|
|
* @param {ChatMessage} message The ChatMessage document to infer from
|
|
* @returns The Foundry-specified roll mode
|
|
*/
|
|
export function inferRollMode(message) {
|
|
const whisperCount = message.whisper.length;
|
|
if (whisperCount === 0) {
|
|
return CONST.DICE_ROLL_MODES.PUBLIC;
|
|
};
|
|
|
|
if (whisperCount === 1 && message.whisper[0] === game.user.id) {
|
|
return CONST.DICE_ROLL_MODES.SELF;
|
|
};
|
|
|
|
let allGMs = true;
|
|
for (const userID of message.whisper) {
|
|
const user = game.users.get(userID);
|
|
if (!user) { continue };
|
|
allGMs &&= user.isGM;
|
|
};
|
|
|
|
if (!allGMs) {
|
|
return CONST.DICE_ROLL_MODES.PUBLIC;
|
|
};
|
|
return message.blind
|
|
? CONST.DICE_ROLL_MODES.BLIND
|
|
: CONST.DICE_ROLL_MODES.PRIVATE;
|
|
};
|