From 70e3e630011ad34fe9a50135433bb0d13a71645f Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sun, 26 Jan 2025 23:04:12 +0100 Subject: [PATCH] =?UTF-8?q?Corrections=20comp=C3=A9tences=20cr=C3=A9atures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/actor/base-actor-reve.js | 6 ++--- module/item-competencecreature.js | 37 +++++++++++++++++-------------- module/rdd-carac.js | 6 ++--- module/rdd-possession.js | 10 ++++++--- module/rdd-roll.js | 8 +++---- 5 files changed, 37 insertions(+), 30 deletions(-) diff --git a/module/actor/base-actor-reve.js b/module/actor/base-actor-reve.js index c6dcaa8f..7881c0ae 100644 --- a/module/actor/base-actor-reve.js +++ b/module/actor/base-actor-reve.js @@ -269,7 +269,7 @@ export class RdDBaseActorReve extends RdDBaseActor { } /* -------------------------------------------- */ - async openRollDialog({ name, label, template, rollData, callbacks}) { + async openRollDialog({ name, label, template, rollData, callbacks }) { const dialog = await RdDRoll.create(this, rollData, { html: template, close: async html => await this._onCloseRollDialog(html) }, { name: name, label: label, callbacks: [this.createCallbackExperience(), this.createCallbackAppelAuMoral()].concat(callbacks) }) @@ -303,7 +303,7 @@ export class RdDBaseActorReve extends RdDBaseActor { competence: competence, show: { title: options?.title ?? '' } }, - callbacks:[async r => this.$onRollCompetence(r, options)] + callbacks: [async r => this.$onRollCompetence(r, options)] }); } /** @@ -411,7 +411,7 @@ export class RdDBaseActorReve extends RdDBaseActor { return; } // Transformer la competence de créature - RdDItemCompetenceCreature.setRollDataCreature(this, rollData, competence) + RdDItemCompetenceCreature.setRollDataCreature(rollData) } const dialogLabel = 'Jet ' + Grammar.apostrophe('de', competence.name); await this.openRollDialog({ diff --git a/module/item-competencecreature.js b/module/item-competencecreature.js index d0a19f25..53d510f6 100644 --- a/module/item-competencecreature.js +++ b/module/item-competencecreature.js @@ -1,5 +1,6 @@ import { ITEM_TYPES } from "./constants.js"; +import { Grammar } from "./grammar.js"; import { RdDCombatManager } from "./rdd-combat.js"; export const CATEGORIES_COMPETENCES_CREATURES = { @@ -17,9 +18,11 @@ export class RdDItemCompetenceCreature extends Item { /* -------------------------------------------- */ static setRollDataCreature(rollData) { - rollData.carac = { "carac_creature": { label: rollData.competence.name, value: rollData.competence.system.carac_value } } - rollData.competence.system.defaut_carac = "carac_creature" - rollData.selectedCarac = rollData.carac.carac_creature + const code = Grammar.toLowerCaseNoAccentNoSpace(rollData.competence.name); + const selectedCarac = { code: code, label: rollData.competence.name, value: rollData.competence.system.carac_value }; + rollData.carac = { [code]: selectedCarac } + rollData.competence.system.defaut_carac = code + rollData.selectedCarac = selectedCarac rollData.arme = RdDItemCompetenceCreature.armeCreature(rollData.competence); } @@ -29,20 +32,20 @@ export class RdDItemCompetenceCreature extends Item { if (categorieAttaque != undefined) { // cloner pour ne pas modifier la compétence return foundry.utils.mergeObject(item, { - action: item.isCompetencePossession() ? 'possession' : 'attaque', - system: { - competence: item.name, - cac: categorieAttaque == "naturelle" ? "naturelle" : "", - niveau: item.system.niveau, - initiative: RdDCombatManager.calculInitiative(item.system.niveau, item.system.carac_value), - equipe: true, - resistance: 100, - dommagesReels: item.system.dommages, - penetration: 0, - force: 0, - rapide: true, - } - }, { inplace: false, }); + action: item.isCompetencePossession() ? 'possession' : 'attaque', + system: { + competence: item.name, + cac: categorieAttaque == "naturelle" ? "naturelle" : "", + niveau: item.system.niveau, + initiative: RdDCombatManager.calculInitiative(item.system.niveau, item.system.carac_value), + equipe: true, + resistance: 100, + dommagesReels: item.system.dommages, + penetration: 0, + force: 0, + rapide: true, + } + }, { inplace: false, }); } return undefined; } diff --git a/module/rdd-carac.js b/module/rdd-carac.js index f5ad6b31..a8c2dcd8 100644 --- a/module/rdd-carac.js +++ b/module/rdd-carac.js @@ -57,7 +57,7 @@ export const LIST_CARAC_PERSONNAGE = { } export const LIST_CARAC_AUTRES = { - 'perception': { code: 'perception', label: 'Perception', path: 'system.carac.perception.value' }, + 'perception': { code: 'perception', label: 'Perception', path: 'system.carac.perception.value' }, } const LIST_CARAC_DERIVEE = { @@ -75,12 +75,12 @@ const LIST_CARAC_ROLL = Object.values(LIST_CARAC_PERSONNAGE).filter(it => it.isC export class RdDCarac { - static caracDetails(name) { + static caracDetails(name, options = { onMessage: undefined }) { let entry = Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.code, description: 'caractéristique', onMessage: m => { } }) if (entry) { return entry } - return Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.label, description: 'caractéristique' }) + return Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.label, description: 'caractéristique', onMessage: options.onMessage }) } static carac(code) { diff --git a/module/rdd-possession.js b/module/rdd-possession.js index 7df772e7..4cc0f9c9 100644 --- a/module/rdd-possession.js +++ b/module/rdd-possession.js @@ -3,6 +3,7 @@ import { RdDItemCompetenceCreature } from "./item-competencecreature.js"; import { Targets } from "./targets.js"; import { ITEM_TYPES } from "./constants.js"; import { RdDRollResult } from "./rdd-roll-result.js"; +import { Grammar } from "./grammar.js"; /* -------------------------------------------- */ /* On part du principe qu'une entité démarre tjs @@ -90,14 +91,17 @@ export class RdDPossession { } RdDPossession.selectCompetenceDraconicOuPossession(rollData, defender) rollData.diffLibre = RdDPossession.getInfoAttaque(rollData).diffLibre - + await RdDPossession.$rollDefensePossession(defender, rollData); } - + static selectCompetenceDraconicOuPossession(rollData, rollingActor) { rollData.competence = rollingActor.getDraconicOuPossession(); if (rollingActor.isCreatureEntite()) { - RdDItemCompetenceCreature.setRollDataCreature(rollData) + const carac = rollingActor.system.carac + rollData.carac = carac + rollData.competence.system.defaut_carac = 'reve' + rollData.selectedCarac = carac.reve } else { rollData.selectedCarac = rollingActor.system.carac.reve diff --git a/module/rdd-roll.js b/module/rdd-roll.js index b8e437f9..0598a585 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -138,9 +138,9 @@ export class RdDRoll extends Dialog { } if (this.rollData.selectedCarac) { this.html.find("[name='carac']").val( - this.actor?.type == ACTOR_TYPES.personnage - ? RdDCarac.caracDetails(this.rollData.selectedCarac.label).code - : this.rollData.selectedCarac.label + RdDCarac.caracDetails(this.rollData.selectedCarac.label, { onMessage: m => { } })?.code + ?? this.rollData.selectedCarac.code + ?? Grammar.toLowerCaseNoAccentNoSpace(this.rollData.selectedCarac.label) ) } if (this.rollData.selectedSort) { @@ -259,7 +259,7 @@ export class RdDRoll extends Dialog { this.updateRollResult(html); }); } - + /* -------------------------------------------- */ close() { if (this.rollData.canClose) {