diff --git a/module/actor.js b/module/actor.js index 223a5e90..26d371b1 100644 --- a/module/actor.js +++ b/module/actor.js @@ -393,7 +393,7 @@ export class RdDActor extends Actor { potionImg: potion.img } ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, messageData) }); } @@ -801,7 +801,7 @@ export class RdDActor extends Actor { rollData.poesie = await Poetique.getExtrait(); ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.html`, rollData) }); } @@ -946,7 +946,7 @@ export class RdDActor extends Actor { message += "
" + troncName; } ChatMessage.create({ - whisper: ChatMessage.getWhisperRecipients(game.user.name), + whisper: ChatMessage.getWhisperRecipients(this.name), content: message }); } @@ -1426,9 +1426,21 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async actionRefoulement(item) { const refoulement = item?.system.refoulement ?? 0; - if (refoulement>0){ - await this.ajouterRefoulement(refoulement); - await item.delete(); + if (refoulement>0) { + RdDConfirm.confirmer({ + settingConfirmer: "confirmation-refouler", + content: `

Prennez-vous le risque de refouler ${item.name} pour ${refoulement} points de refoulement ?

`, + title: 'Confirmer la refoulement', + buttonLabel: 'Refouler', + onAction: async () => { + ChatMessage.create({ + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), + content: `${this.name} a refoulé une queue ${item.nname} pour ${refoulement} points de refoulement` + }); + await this.ajouterRefoulement(refoulement); + await item.delete(); + } + }) } } @@ -1451,7 +1463,7 @@ export class RdDActor extends Actor { await this.createEmbeddedDocuments('Item', [souffle]); if (options.chat) { ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: this.name + " subit un Souffle de Dragon : " + souffle.name }); } @@ -1471,7 +1483,7 @@ export class RdDActor extends Actor { await this.createEmbeddedDocuments('Item', [queue]); if (options.chat) { ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: this.name + " subit une Queue de Dragon : " + queue.name }); } @@ -1509,7 +1521,7 @@ export class RdDActor extends Actor { let tmr = await TMRUtility.getTMRAleatoire(tmr => accessible(tmr) && !innaccessible.includes(tmr.coord)); ChatMessage.create({ content: `${raison} : ré-insertion aléatoire.`, - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name) + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name) }); await this.forcerPositionTMRInconnue(tmr); return tmr; @@ -1679,7 +1691,7 @@ export class RdDActor extends Actor { const result = await this._jetEndurance(this.system.sante.endurance.value) const message = { content: "Jet d'Endurance : " + result.roll.total + " / " + endurance + "
", - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }; if (result.sonne) { message.content += `${this.name} a échoué son Jet d'Endurance et devient Sonné`; @@ -1729,7 +1741,7 @@ export class RdDActor extends Actor { } const message = { content: msgText, - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }; ChatMessage.create(message); } @@ -1838,7 +1850,7 @@ export class RdDActor extends Actor { const jetMoral = await this._jetDeMoral(situation); const finMessage = (jetMoral.succes ? messageReussi : messageManque) ?? (jetMoral.ajustement == 0 ? "Vous gardez votre moral" : jetMoral.ajustement > 0 ? "Vous gagnez du moral" : "Vous perdez du moral"); ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: `${finMessage} - jet ${jetMoral.succes ? "réussi" : "manqué"} en situation ${situation} (${jetMoral.jet}/${jetMoral.difficulte}).` }); return jetMoral.ajustement; @@ -2133,7 +2145,7 @@ export class RdDActor extends Actor { }; ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-transformer-stress.html`, stressRollData) }); @@ -2384,7 +2396,7 @@ export class RdDActor extends Actor { } ChatMessage.create({ content: "Vous êtes sous le coup d'une Mauvaise Rencontre en Persective." + addMsg, - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }); } return rencSpecial; @@ -2396,7 +2408,7 @@ export class RdDActor extends Actor { if (countInertieDraconique > 0) { ChatMessage.create({ content: `Vous êtes sous le coup d'Inertie Draconique : vous perdrez ${countInertieDraconique + 1} cases de Fatigue par déplacement au lieu d'une.`, - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }); } return countInertieDraconique + 1; @@ -2408,7 +2420,7 @@ export class RdDActor extends Actor { await this.reveActuelIncDec(-1); ChatMessage.create({ content: "Vous êtes sous le coup d'un Péage : l'entrée sur cette case vous a coûté 1 Point de Rêve (déduit automatiquement).", - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }); } } @@ -3015,7 +3027,7 @@ export class RdDActor extends Actor { // Cas de désir lancinant, pas d'expérience sur particulière ChatMessage.create({ content: `Vous souffrez au moins d'un Désir Lancinant, vous ne pouvez pas gagner d'expérience sur une Particulière tant que le désir n'est pas assouvi`, - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }); return undefined; } @@ -3145,7 +3157,7 @@ export class RdDActor extends Actor { if (countMonteeLaborieuse > 0) { ChatMessage.create({ content: `Vous êtes sous le coup d'une Montée Laborieuse : vos montées en TMR coûtent ${countMonteeLaborieuse} Point de Rêve de plus.`, - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }); } return countMonteeLaborieuse; @@ -3185,7 +3197,7 @@ export class RdDActor extends Actor { if (this.getReveActuel() < minReveValue) { ChatMessage.create({ content: `Vous n'avez les ${minReveValue} Points de Reve nécessaires pour monter dans les Terres Médianes`, - whisper: ChatMessage.getWhisperRecipients(game.user.name) + whisper: ChatMessage.getWhisperRecipients(this.name) }); return; } @@ -3703,7 +3715,7 @@ export class RdDActor extends Actor { system: mergeObject(vente.item.system, { quantite: isItemEmpilable ? achat.quantiteTotal : undefined }), } let listeAchat = isItemEmpilable ? [achatData] : Array.from({ length: achat.quantiteTotal }, (_, i) => achatData) - let items = await acheteur.createEmbeddedDocuments("Item", listeAchat) + let items = await acheteur.createEmbeddedDocuments("Item", listeAchat); if (achat.choix.consommer && vente.item.type == 'nourritureboisson') { achat.choix.doses = achat.choix.nombreLots; await acheteur.consommerNourritureboisson(items[0], achat.choix); @@ -3931,7 +3943,7 @@ export class RdDActor extends Actor { this.bonusRecuperationPotion = potionData.system.herbeBonus; } ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.html`, potionData) }); } @@ -3964,7 +3976,7 @@ export class RdDActor extends Actor { this.bonusRepos = potionData.system.herbeBonus; } ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.html`, potionData) }); } @@ -4002,7 +4014,7 @@ export class RdDActor extends Actor { this.diminuerQuantiteObjet(herbeData._id, herbeData.nbBrins); ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html`, messageData) }); } @@ -4027,7 +4039,7 @@ export class RdDActor extends Actor { } } ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-generique.html`, potionData) }); } @@ -4162,7 +4174,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ notifyGestionTeteSouffleQueue(item, manualMessage = true) { ChatMessage.create({ - whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), + whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré(e) automatiquement. ${manualMessage ? manualMessage : ''}` }); } diff --git a/module/item-sheet.js b/module/item-sheet.js index 1a92be79..0a2302b0 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -250,9 +250,9 @@ export class RdDItemSheet extends ItemSheet { /* -------------------------------------------- */ /** @override */ - _updateObject(event, formData) { // Deprecated en v0.8 à clarifier + _updateObject(event, formData) { // Données de bonus de cases ? - formData = RdDItemSort.buildBonusCaseStringFromFormData(formData); + formData['system.bonuscase'] = RdDItemSort.buildBonusCaseStringFromFormData(formData.bonusValue, formData.caseValue); return this.item.update(formData); } diff --git a/module/item-sort.js b/module/item-sort.js index 5047cc23..befbb6b0 100644 --- a/module/item-sort.js +++ b/module/item-sort.js @@ -63,26 +63,21 @@ export class RdDItemSort extends Item { /** Met à jour les données de formulaire * si static des bonus de cases sont présents * */ - static buildBonusCaseStringFromFormData( formData ) { - if ( formData.bonusValue ) { + static buildBonusCaseStringFromFormData( bonuses, cases ) { + if ( bonuses ) { let list = []; let caseCheck = {}; - for(let i=0; i 0 && caseCheck[coord] == undefined ) { - caseCheck[coord] = bonus; - list.push( coord+":"+bonus ); - } + for (let i=0; i 0 && caseCheck[coord] == undefined ) { + caseCheck[coord] = bonus; + list.push( coord+":"+bonus ); } } - formData.bonusValue = undefined; - formData.caseValue = undefined; - formData.system.bonuscase = list.toString(); // Reset + return list.toString(); } - return formData; + return undefined; } /* -------------------------------------------- */ diff --git a/module/rdd-main.js b/module/rdd-main.js index d7466074..638a84a4 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -148,7 +148,7 @@ Hooks.once("init", async function () { }; /* -------------------------------------------- */ - game.socket.on(SYSTEM_SOCKET_ID, sockmsg => { + game.socket.on(SYSTEM_SOCKET_ID, async (sockmsg) => { console.log(">>>>> MSG RECV", sockmsg); try { RdDUtility.onSocketMessage(sockmsg); diff --git a/module/regles-optionelles.js b/module/regles-optionelles.js index ec93b239..eceda14c 100644 --- a/module/regles-optionelles.js +++ b/module/regles-optionelles.js @@ -18,8 +18,9 @@ const listeReglesOptionelles = [ { group: 'Règles générales', name: 'appliquer-fatigue', descr: "Appliquer les règles de fatigue"}, { group: 'Règles générales', name: 'afficher-colonnes-reussite', descr: "Afficher le nombre de colonnes de réussite ou d'échec", default: false }, - { group: 'Confirmations', name: 'confirmation-tmr', descr: "Confirmer pour monter dans les TMR", scope: "client"}, - { group: 'Confirmations', name: 'confirmation-vider', descr: "Confirmer pour vider l'équipement", scope: "client"}, + { group: 'Confirmations', name: 'confirmation-tmr', descr: "Confirmer pour monter dans les TMR", scope: "client"}, + { group: 'Confirmations', name: 'confirmation-refouler', descr: "Confirmer avant de refouler", scope: "client"}, + { group: 'Confirmations', name: 'confirmation-vider', descr: "Confirmer pour vider l'équipement", scope: "client"}, { group: 'Confirmations', name: 'confirmation-supprimer-lien-acteur', descr: "Confirmer pour détacher un animal/suivant/véhicule", scope: "client"}, { group: 'Confirmations', name: 'confirmation-supprimer-equipement', descr: "Confirmer la suppression des équipements", scope: "client"}, { group: 'Confirmations', name: 'confirmation-supprimer-oeuvre', descr: "Confirmer la suppression des oeuvres", scope: "client"}, diff --git a/system.json b/system.json index 679f1f54..263f1b7d 100644 --- a/system.json +++ b/system.json @@ -1,8 +1,8 @@ { "id": "foundryvtt-reve-de-dragon", "title": "Rêve de Dragon", - "version": "10.0.29", - "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.0.29.zip", + "version": "10.0.30", + "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.0.30.zip", "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json", "compatibility": { "minimum": "10",