Correction boutons de maladresses pour joueur
This commit is contained in:
@@ -5,6 +5,11 @@
|
||||
- ajout d'un bouton pour supprimer les anciens messages du tchat
|
||||
- correction de messages d'erreur 'User ... lacks permission' / 'Active Effect ... does not exist'
|
||||
- les joueurs peuvent affecter leurs enchantements aux objets enchantables de leur équipement
|
||||
- correction des boutons pour lancer les maladresses
|
||||
- utilisation des tables de compendium
|
||||
- correction des droits pour mise à jour du message
|
||||
|
||||
|
||||
|
||||
## 13.0.23 - Le marché d'Illysis
|
||||
|
||||
|
||||
@@ -180,11 +180,15 @@ export class Misc {
|
||||
return (a, b) => a + separator + b;
|
||||
}
|
||||
|
||||
static connectedGMOrUser(ownerId = undefined) {
|
||||
if (ownerId && game.user.id == ownerId) {
|
||||
return ownerId;
|
||||
static connectedUserOrGM(userId = undefined) {
|
||||
if (userId && game.user.id == userId) {
|
||||
return userId
|
||||
}
|
||||
return Misc.firstConnectedGM()?.id ?? game.user.id;
|
||||
return Misc.firstConnectedGM()?.id
|
||||
}
|
||||
|
||||
static connectedGMOrUser(userId = undefined) {
|
||||
return Misc.connectedUserOrGM(userId) ?? game.user.id
|
||||
}
|
||||
|
||||
static isRollModeHiddenToPlayer() {
|
||||
|
||||
@@ -91,6 +91,7 @@ import RollDialog from "./roll/roll-dialog.mjs"
|
||||
import ChatRollResult from "./roll/chat-roll-result.mjs"
|
||||
import ExportPdf from "./actor/export-pdf/export-pdf.mjs"
|
||||
import { DialogFlushByDate } from "./chat/dialog-flush-by-date.mjs"
|
||||
import { Remote } from "./remote.mjs"
|
||||
|
||||
/**
|
||||
* RdD system
|
||||
@@ -182,6 +183,7 @@ export class SystemReveDeDragon {
|
||||
game.socket.on(SYSTEM_SOCKET_ID, async (sockmsg) => {
|
||||
console.log(">>>>> MSG RECV", sockmsg)
|
||||
try {
|
||||
Remote.onSocketMessage(sockmsg)
|
||||
RdDUtility.onSocketMessage(sockmsg)
|
||||
RdDCombat.onSocketMessage(sockmsg)
|
||||
ChatUtility.onSocketMessage(sockmsg)
|
||||
|
||||
53
module/remote.mjs
Normal file
53
module/remote.mjs
Normal file
@@ -0,0 +1,53 @@
|
||||
import { RdDBaseActor } from "./actor/base-actor.js";
|
||||
import { SYSTEM_SOCKET_ID } from "./constants.js";
|
||||
import { Misc } from "./misc.js";
|
||||
|
||||
export class Remote {
|
||||
|
||||
static onSocketMessage(sockmsg) {
|
||||
switch (sockmsg.msg) {
|
||||
case "msg_remote_call":
|
||||
return Remote.onRemoteCall(sockmsg.userId, sockmsg.data);
|
||||
}
|
||||
}
|
||||
|
||||
static remoteCall({ userId = undefined, documentName, documentId, tokenId = undefined, method, args }) {
|
||||
const callData = { documentName, documentId, tokenId, method, args }
|
||||
const sendToUserId = Misc.connectedUserOrGM(userId)
|
||||
if (sendToUserId == undefined) {
|
||||
ui.notifications.error(`Impossible d'envoyer un message à ${userId}`)
|
||||
}
|
||||
else if (sendToUserId == game.user.id) {
|
||||
Remote.onRemoteCall(game.user.id, callData)
|
||||
return false
|
||||
}
|
||||
else {
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, { msg: "msg_remote_call", userId: sendToUserId, data: callData })
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
static onRemoteCall(userId, callData) {
|
||||
if (userId == game.user.id) {
|
||||
// Seul le joueur choisi effectue l'appel: le joueur courant si propriétaire de l'actor, ou le MJ sinon
|
||||
const doc = Remote.getDoc(callData)
|
||||
if (doc) {
|
||||
const args = callData.args;
|
||||
const method = callData.method;
|
||||
console.info(`Remote.onRemoteCall: ${callData.documentName} ${callData.documentId}, appel de ${method}(`, ...args, ')')
|
||||
doc[method](...args)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static getDoc(callData) {
|
||||
switch (callData.documentName) {
|
||||
case 'Actor': return RdDBaseActor.getRealActor(callData.documentId, callData.tokenId)
|
||||
case 'Item': return game.items.get(callData.documentId)
|
||||
case 'RollTable': return game.tables.get(callData.documentId)
|
||||
case 'ChatMessage': return game.messages.get(callData.documentId)
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import { Misc } from "../misc.js"
|
||||
import { RollBasicParts } from "./roll-basic-parts.mjs"
|
||||
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs"
|
||||
import { Apprecier } from "../moral/apprecier.mjs"
|
||||
import { Remote } from "../remote.mjs"
|
||||
|
||||
export default class ChatRollResult {
|
||||
static init() {
|
||||
@@ -168,14 +169,21 @@ export default class ChatRollResult {
|
||||
async updateChatMessage(chatMessage, savedRoll) {
|
||||
RollDialog.loadRollData(savedRoll)
|
||||
savedRoll.dmg = savedRoll.current.attaque?.dmg
|
||||
|
||||
|
||||
await this.saveChatMessageRoll(chatMessage, savedRoll)
|
||||
|
||||
|
||||
this.prepareDisplay(savedRoll)
|
||||
chatMessage.update({ content: await this.buildRollHtml(savedRoll) })
|
||||
chatMessage.render(true)
|
||||
|
||||
const content = await this.buildRollHtml(savedRoll)
|
||||
Remote.remoteCall({
|
||||
userId: chatMessage.author.id,
|
||||
documentName: chatMessage.documentName,
|
||||
documentId: chatMessage.id,
|
||||
method: 'update',
|
||||
args: [{ content: content }, { render: true }]
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
async saveChatMessageRoll(chatMessage, roll, impacts = undefined) {
|
||||
const save = RollDialog.saveParts(roll, impacts)
|
||||
await ChatUtility.setMessageData(chatMessage, 'rollData', save)
|
||||
|
||||
Reference in New Issue
Block a user