diff --git a/changelog.md b/changelog.md index 50e13b3a..52c1b561 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,8 @@ # 12.0 +## 12.0.41 - La loupe d'Astrobazzarh +- On peut de nouveau effectuer des tirages cachés +- Le stress transformé est bien diminué lorsqu'on met le stress dans une compétence + ## 12.0.40 - Les mains d'Astrobazzarh - correction des attaques particulières en combat - correction de message sur les min/max liés aux modificateurs de races (s'applique uniquement sur la taille) diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 0359bc45..f7a43c14 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -237,7 +237,11 @@ export class RdDActorSheet extends RdDBaseActorSangSheet { this.html.find('.carac-xp-augmenter').click(async event => await this.actor.updateCaracXPAuto(event.currentTarget.name.replace("augmenter.", ""))) this.html.find('.competence-xp-augmenter').click(async event => await this.actor.updateCompetenceXPAuto(RdDSheetUtility.getItemId(event))) - this.html.find('.competence-stress-augmenter').click(async event => await this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event))) + this.html.find('.competence-stress-augmenter').click(async event =>{ + await this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event)) + this.render(true) + } + ) if (this.options.vueDetaillee) { // On carac change diff --git a/module/actor.js b/module/actor.js index c4f82a84..641766d5 100644 --- a/module/actor.js +++ b/module/actor.js @@ -736,7 +736,7 @@ export class RdDActor extends RdDBaseActorSang { await competence.update({ "system.xp": toXp, "system.niveau": toNiveau, - }); + }, { render: false }) await ExperienceLog.add(this, XP_TOPIC.XP, fromXp, toXp, competence.name); await ExperienceLog.add(this, XP_TOPIC.NIVEAU, fromNiveau, toNiveau, competence.name); } @@ -767,7 +767,7 @@ export class RdDActor extends RdDBaseActorSang { await competence.update({ "system.xp": newXp, "system.niveau": toNiveau, - }); + }, { render: false }) const toXpStress = Math.max(0, fromXpStress - xpUtilise); await this.update({ "system.compteurs.experience.value": toXpStress }); @@ -783,7 +783,7 @@ export class RdDActor extends RdDBaseActorSang { const toNiveau = compValue ?? RdDItemCompetence.getNiveauBase(competence.system.categorie, competence.getCategories()); this.notifyCompetencesTronc(competence, toNiveau); const fromNiveau = competence.system.niveau; - await competence.update({ 'system.niveau': toNiveau }); + await competence.update({ 'system.niveau': toNiveau }, { render: false }) await ExperienceLog.add(this, XP_TOPIC.NIVEAU, fromNiveau, toNiveau, competence.name, true); } } @@ -808,7 +808,7 @@ export class RdDActor extends RdDBaseActorSang { if (isNaN(toXp) || typeof (toXp) != 'number') toXp = 0; const fromXp = competence.system.xp; this.checkCompetenceXP(idOrName, toXp); - await competence.update({ 'system.xp': toXp }); + await competence.update({ 'system.xp': toXp }, { render: false }) await ExperienceLog.add(this, XP_TOPIC.XP, fromXp, toXp, competence.name, true); if (toXp > fromXp) { RdDUtility.checkThanatosXP(competence) @@ -822,7 +822,7 @@ export class RdDActor extends RdDBaseActorSang { if (competence) { if (isNaN(toXpSort) || typeof (toXpSort) != 'number') toXpSort = 0; const fromXpSort = competence.system.xp_sort; - await competence.update({ 'system.xp_sort': toXpSort }); + await competence.update({ 'system.xp_sort': toXpSort }, { render: false }) await ExperienceLog.add(this, XP_TOPIC.XPSORT, fromXpSort, toXpSort, competence.name, true); if (toXpSort > fromXpSort) { RdDUtility.checkThanatosXP(competence) @@ -834,7 +834,7 @@ export class RdDActor extends RdDBaseActorSang { async updateCompetenceArchetype(idOrName, compValue) { let competence = this.getCompetence(idOrName) if (competence) { - await competence.update({ 'system.niveau_archetype': Math.max(compValue ?? 0, 0) }); + await competence.update({ 'system.niveau_archetype': Math.max(compValue ?? 0, 0) }) } } @@ -1560,7 +1560,7 @@ export class RdDActor extends RdDBaseActorSang { if (!rollData.rolled.isPart || rollData.finalLevel >= 0 || game.settings.get("core", "rollMode") == 'selfroll' || - !Misc.hasConnectedGM()) { + !Misc.hasConnectedGM()) { return } hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM) @@ -1584,7 +1584,7 @@ export class RdDActor extends RdDBaseActorSang { /* -------------------------------------------- */ async _appliquerAppelMoral(rollData) { - if (!rollData.use.moral || game.settings.get("core", "rollMode") == 'selfroll'){ + if (!rollData.use.moral || game.settings.get("core", "rollMode") == 'selfroll') { return } if (rollData.rolled.isEchec || @@ -1869,7 +1869,7 @@ export class RdDActor extends RdDBaseActorSang { competence: competence, show: { title: options?.title ?? '' } }, - // TODO: + // TODO: callbacks: [{ action: r => this.$onRollCompetence(r, options) }] }); } @@ -1882,7 +1882,7 @@ export class RdDActor extends RdDBaseActorSang { compData.system.defaut_carac = tacheData.system.carac; // Patch ! await this.openRollDialog({ - name: 'jet-competence', + name: 'jet-competence', label: 'Jet de Tâche ' + tacheData.name, template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.hbs', rollData: { @@ -1945,9 +1945,9 @@ export class RdDActor extends RdDBaseActorSang { } await this.openRollDialog({ - name: `jet-${artData.art}`, + name: `jet-${artData.art}`, label: `${artData.verbe} ${oeuvre.name}`, - template: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${oeuvre.type}.hbs`, + template: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${oeuvre.type}.hbs`, rollData: artData, callbacks: [{ action: callbackAction }], }) @@ -2527,7 +2527,6 @@ export class RdDActor extends RdDBaseActorSang { }) } const blessure = this.getItem(blessureId, 'blessure') - console.log('TODO update blessure', this, blessureId, rollData, rollData.tache); if (blessure && !blessure.system.premierssoins.done) { const tache = rollData.tache; if (rollData.rolled.isETotal) { diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index bda083dd..0ca304d4 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -244,16 +244,19 @@ export class RdDBaseActor extends Actor { async onUpdateActor(update, options, actorId) { } async onDeleteItem(item, options, id) { if (item.isInventaire()) { - this._removeItemFromConteneur(item) + await this._removeItemFromConteneur(item) } } - _removeItemFromConteneur(item) { - this.items.filter(it => it.isConteneur() && it.system.contenu.includes(item.id)) - .forEach(conteneur => { - const nouveauContenu = conteneur.system.contenu.filter(id => id != item.id); - conteneur.update({ 'system.contenu': nouveauContenu }); - }); + async _removeItemFromConteneur(item) { + const updates = this.items.filter(it => it.isConteneur() && it.system.contenu.includes(item.id)) + .map(conteneur => { + const nouveauContenu = conteneur.system.contenu.filter(id => id != item.id) + return { _id: conteneur.id, 'system.contenu': nouveauContenu } + }) + if (updates.length > 0) { + await this.updateEmbeddedDocuments('Item', updates) + } } async onTimeChanging(oldTimestamp, newTimestamp) { diff --git a/module/chat-utility.js b/module/chat-utility.js index 9f6c053e..61b6b901 100644 --- a/module/chat-utility.js +++ b/module/chat-utility.js @@ -62,7 +62,6 @@ export class ChatUtility { } /* -------------------------------------------- */ - static removeMessages(socketData) { if (Misc.isFirstConnectedGM()) { ChatUtility.onRemoveMessages(socketData); @@ -97,7 +96,7 @@ export class ChatUtility { } break case "gmroll": - messageData.whisper = ChatUtility.getOwners(actor) + messageData.whisper = actor ? ChatUtility.getOwners(actor) : ChatUtility.getUserAndGMs() break case "selfroll": messageData.whisper = [game.user] @@ -108,7 +107,7 @@ export class ChatUtility { } static getOwners(document) { - return game.users.filter(it => document.getUserLevel(it) == CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER) + return document ? game.users.filter(it => document.getUserLevel(it) == CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER) : [game.user] } static getUserAndGMs() { @@ -199,7 +198,7 @@ export class ChatUtility { static async onCreateChatMessage(chatMessage, options, id) { if (chatMessage.isAuthor) { await chatMessage.setFlag(SYSTEM_RDD, 'rdd-timestamp', game.system.rdd.calendrier.getTimestamp()); - await chatMessage.update({ content: await RdDTextEditor.enrichHTML(chatMessage.content, undefined, {showLink:false}) }) + await chatMessage.update({ content: await RdDTextEditor.enrichHTML(chatMessage.content, undefined, { showLink: false }) }) } } } diff --git a/templates/actor/xp-competences.hbs b/templates/actor/xp-competences.hbs index 13d924ff..47c1ff9b 100644 --- a/templates/actor/xp-competences.hbs +++ b/templates/actor/xp-competences.hbs @@ -1,15 +1,18 @@