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
|
- ajout d'un bouton pour supprimer les anciens messages du tchat
|
||||||
- correction de messages d'erreur 'User ... lacks permission' / 'Active Effect ... does not exist'
|
- 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
|
- 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
|
## 13.0.23 - Le marché d'Illysis
|
||||||
|
|
||||||
|
|||||||
+8
-4
@@ -180,11 +180,15 @@ export class Misc {
|
|||||||
return (a, b) => a + separator + b;
|
return (a, b) => a + separator + b;
|
||||||
}
|
}
|
||||||
|
|
||||||
static connectedGMOrUser(ownerId = undefined) {
|
static connectedUserOrGM(userId = undefined) {
|
||||||
if (ownerId && game.user.id == ownerId) {
|
if (userId && game.user.id == userId) {
|
||||||
return ownerId;
|
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() {
|
static isRollModeHiddenToPlayer() {
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ import RollDialog from "./roll/roll-dialog.mjs"
|
|||||||
import ChatRollResult from "./roll/chat-roll-result.mjs"
|
import ChatRollResult from "./roll/chat-roll-result.mjs"
|
||||||
import ExportPdf from "./actor/export-pdf/export-pdf.mjs"
|
import ExportPdf from "./actor/export-pdf/export-pdf.mjs"
|
||||||
import { DialogFlushByDate } from "./chat/dialog-flush-by-date.mjs"
|
import { DialogFlushByDate } from "./chat/dialog-flush-by-date.mjs"
|
||||||
|
import { Remote } from "./remote.mjs"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RdD system
|
* RdD system
|
||||||
@@ -182,6 +183,7 @@ export class SystemReveDeDragon {
|
|||||||
game.socket.on(SYSTEM_SOCKET_ID, async (sockmsg) => {
|
game.socket.on(SYSTEM_SOCKET_ID, async (sockmsg) => {
|
||||||
console.log(">>>>> MSG RECV", sockmsg)
|
console.log(">>>>> MSG RECV", sockmsg)
|
||||||
try {
|
try {
|
||||||
|
Remote.onSocketMessage(sockmsg)
|
||||||
RdDUtility.onSocketMessage(sockmsg)
|
RdDUtility.onSocketMessage(sockmsg)
|
||||||
RdDCombat.onSocketMessage(sockmsg)
|
RdDCombat.onSocketMessage(sockmsg)
|
||||||
ChatUtility.onSocketMessage(sockmsg)
|
ChatUtility.onSocketMessage(sockmsg)
|
||||||
|
|||||||
@@ -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 { RollBasicParts } from "./roll-basic-parts.mjs"
|
||||||
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs"
|
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs"
|
||||||
import { Apprecier } from "../moral/apprecier.mjs"
|
import { Apprecier } from "../moral/apprecier.mjs"
|
||||||
|
import { Remote } from "../remote.mjs"
|
||||||
|
|
||||||
export default class ChatRollResult {
|
export default class ChatRollResult {
|
||||||
static init() {
|
static init() {
|
||||||
@@ -168,14 +169,21 @@ export default class ChatRollResult {
|
|||||||
async updateChatMessage(chatMessage, savedRoll) {
|
async updateChatMessage(chatMessage, savedRoll) {
|
||||||
RollDialog.loadRollData(savedRoll)
|
RollDialog.loadRollData(savedRoll)
|
||||||
savedRoll.dmg = savedRoll.current.attaque?.dmg
|
savedRoll.dmg = savedRoll.current.attaque?.dmg
|
||||||
|
|
||||||
await this.saveChatMessageRoll(chatMessage, savedRoll)
|
await this.saveChatMessageRoll(chatMessage, savedRoll)
|
||||||
|
|
||||||
this.prepareDisplay(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) {
|
async saveChatMessageRoll(chatMessage, roll, impacts = undefined) {
|
||||||
const save = RollDialog.saveParts(roll, impacts)
|
const save = RollDialog.saveParts(roll, impacts)
|
||||||
await ChatUtility.setMessageData(chatMessage, 'rollData', save)
|
await ChatUtility.setMessageData(chatMessage, 'rollData', save)
|
||||||
|
|||||||
Reference in New Issue
Block a user