foundryvtt-reve-de-dragon/module/chat-utility.js
Vincent Vandemeulebrouck c9a214adca Fix messages
- undefined dans certains cas (lancer de sort)
- promise pour la maîtrise de case humides
- ajout de message au joueur pour les jets de rencontre
- messages au joueur + GM pour les résultats de rencontres
- message au joueur + GM lors de la montée et dans les cas où les TMRs sont quittées
2020-11-29 18:06:19 +01:00

66 lines
2.0 KiB
JavaScript

/**
* Class providing helper methods to get the list of users, and
*/
export class ChatUtility {
static chatWithRollMode(chatOptions, name) {
let rollMode = game.settings.get("core", "rollMode");
chatOptions.user = game.user._id;
switch (rollMode) {
case "blindroll": // GM only
if (!game.user.isGM) {
ChatUtility.blindMessageToGM(chatOptions);
chatOptions.whisper = [game.user._id];
chatOptions.content = "Message envoyé en aveugle au Gardien";
}
else {
chatOptions.whisper = ChatUtility.getUsers(user => user.isGM);
}
break;
case "gmroll": // GM + rolling player
chatOptions.user = game.user._id;
chatOptions.whisper = ChatUtility.getWhisperRecipientsAndGMs(name);
break;
case "selfroll": // only the user
chatOptions.user = game.user._id;
chatOptions.whisper = [game.user._id];
break;
default:
case "roll": // everybody
chatOptions.whisper = undefined;
break;
}
console.log("roll message", chatOptions);
ChatMessage.create(chatOptions);
}
static getWhisperRecipientsAndGMs(name) {
return ChatMessage.getWhisperRecipients(name)
.concat(this.getUsers(user => user.isGM));
}
static getUsers(filter) {
return game.users.filter(filter).map(user => user.data._id);
}
static blindMessageToGM(chatOptions) {
let chatGM = duplicate(chatOptions);
chatGM.whisper = ChatUtility.getUsers(user => user.isGM);
chatGM.content = "Message aveugle de " + game.user.name + "<br>" + chatOptions.content;
console.log("blindMessageToGM", chatGM);
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: "msg_gm_chat_message", data: chatGM });
}
static handleGMChatMessage(data) {
console.log("blindMessageToGM", data);
if (game.user.isGM) { // message privé pour GM only
data.user = game.user._id;
ChatMessage.create(data);
}
}
}