diff --git a/module/item-competence.js b/module/item-competence.js index 035243a5..4ef943a5 100644 --- a/module/item-competence.js +++ b/module/item-competence.js @@ -2,7 +2,7 @@ import { ChatUtility } from "./chat-utility.js"; import { Grammar } from "./grammar.js"; import { RdDInitiative } from "./initiative.mjs"; import { RdDItem } from "./item.js"; -import { CATEGORIES_COMPETENCES, SANS_COMPETENCE } from "./item/base-items.js"; +import { BASE_SANS_COMPETENCE, CATEGORIES_COMPETENCES } from "./item/base-items.js"; import { Misc } from "./misc.js"; const competenceTroncs = [["Esquive", "Dague", "Corps à corps"], @@ -47,6 +47,10 @@ export class RdDItemCompetence extends RdDItem { static get defaultIcon() { return "systems/foundryvtt-reve-de-dragon/icons/competence_defaut.webp" } + static async onReady(){ + RdDItemCompetence.SANS_COMPETENCE = await Item.create(BASE_SANS_COMPETENCE, { temporary: true }) + } + isNiveauBase() { return this.system.niveau == this.system.base && this.system.xp == 0 } @@ -128,18 +132,6 @@ export class RdDItemCompetence extends RdDItem { }); } - /* -------------------------------------------- */ - static isCompetenceArme(competence) { - if (competence.isCompetence() && !competence.isCorpsACorps() && !competence.isEsquive()) { - switch (competence.system.categorie) { - case 'melee': - case 'tir': - case 'lancer': - return true; - } - } - return false; - } /* -------------------------------------------- */ static isArmeUneMain(competence) { @@ -249,7 +241,7 @@ export class RdDItemCompetence extends RdDItem { /* -------------------------------------------- */ static findCompetence(list, idOrName, options = {}) { if (idOrName == undefined || idOrName == "") { - return RdDItemCompetence.sansCompetence(); + return RdDItemCompetence.SANS_COMPETENCE } options = foundry.utils.mergeObject(options, { preFilter: it => it.isCompetence(), description: 'compétence' }, { overwrite: false, inplace: false }); return RdDItemCompetence.findFirstItem(list, idOrName, options); @@ -261,7 +253,6 @@ export class RdDItemCompetence extends RdDItem { return Misc.findAllLike(name, list, options); } - static sansCompetence() { return SANS_COMPETENCE } static findFirstItem(list, idOrName, options) { return list.find(it => it.id == idOrName && options.preFilter(it)) diff --git a/module/item-sheet.js b/module/item-sheet.js index 4c95f5b3..79424e45 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -14,7 +14,6 @@ import { RdDTimestamp } from "./time/rdd-timestamp.js"; import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js"; import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"; import { ItemAction } from "./item/item-actions.js"; -import { SANS_COMPETENCE } from "./item/base-items.js"; import { Apprecier } from "./moral/apprecier.mjs"; import { CARACS } from "./rdd-carac.js"; @@ -105,7 +104,7 @@ export class RdDItemSheetV1 extends foundry.appv1.sheets.ItemSheet { descriptionmj: await RdDTextEditor.enrichHTML(this.item.system.descriptionmj, this.item), isComestible: this.item.getUtilisationCuisine(), options: RdDSheetUtility.mergeDocumentRights({}, this.item, this.isEditable), - competences: [SANS_COMPETENCE, ...competences], + competences: [await RdDItemCompetence.SANS_COMPETENCE, ...competences], categories: RdDItem.getCategories(this.item.type), isAppreciable: Apprecier.isAppreciable(this.item) } diff --git a/module/item.js b/module/item.js index 5732c81c..6970f518 100644 --- a/module/item.js +++ b/module/item.js @@ -240,7 +240,9 @@ export class RdDItem extends Item { } isCompetenceArme() { - return this.isCompetence() && ['melee', 'tir', 'lancer'].includes(this.system.categorie) + return this.isCompetence() + && ['melee', 'tir', 'lancer'].includes(this.system.categorie) + && !this.isEsquive() } isCompetencePossession() { return ITEM_TYPES.competencecreature == this.type && this.system.categorie == CATEGORIES_COMPETENCES_CREATURES.possession.key } diff --git a/module/item/base-items.js b/module/item/base-items.js index 55519c8b..bc3bdb22 100644 --- a/module/item/base-items.js +++ b/module/item/base-items.js @@ -34,7 +34,7 @@ export const PAS_DE_DRACONIC = { name: 'Pas de draconic', type: 'competence', sy export const BASE_CORPS_A_CORPS = { name: 'Corps à Corps', type: 'competence', system: { niveau: -6, defaut_carac: "melee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' } export const BASE_ESQUIVE = { name: 'Esquive', type: 'competence', system: { niveau: -6, defaut_carac: "derobee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp' } -export const SANS_COMPETENCE = { +export const BASE_SANS_COMPETENCE = { name: "Sans compétence", type: ITEM_TYPES.competence, img: "systems/foundryvtt-reve-de-dragon/icons/templates/icone_parchement_vierge.webp", diff --git a/module/moral/apprecier.mjs b/module/moral/apprecier.mjs index f230a263..913cf65f 100644 --- a/module/moral/apprecier.mjs +++ b/module/moral/apprecier.mjs @@ -1,6 +1,6 @@ import { ChatUtility } from "../chat-utility.js" import { ITEM_TYPES } from "../constants.js" -import { SANS_COMPETENCE } from "../item/base-items.js" +import { RdDItemCompetence } from "../item-competence.js" import { Misc } from "../misc.js" import { CARACS } from "../rdd-carac.js" import { RdDUtility } from "../rdd-utility.js" @@ -126,7 +126,7 @@ export class Apprecier { } getCompetenceAppreciation() { - return [SANS_COMPETENCE.name, ""].includes(this.appreciation.competence) ? SANS_COMPETENCE : this.actor.getCompetence(this.appreciation.competence) + return [RdDItemCompetence.SANS_COMPETENCE.name, ""].includes(this.appreciation.competence) ? RdDItemCompetence.SANS_COMPETENCE : this.actor.getCompetence(this.appreciation.competence) } rollAppreciation(rollCallbacks = []) { diff --git a/module/rdd-main.js b/module/rdd-main.js index 27fee8a2..bf02cacd 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -405,6 +405,7 @@ export class SystemReveDeDragon { RdDDice.onReady() RollDialog.onReady() ChatRollResult.onReady() + RdDItemCompetence.onReady() /* -------------------------------------------- */ /* Affiche/Init le calendrier */ diff --git a/module/roll/roll-part-comp.mjs b/module/roll/roll-part-comp.mjs index 4726035b..3b19a372 100644 --- a/module/roll/roll-part-comp.mjs +++ b/module/roll/roll-part-comp.mjs @@ -7,7 +7,7 @@ import { ROLLDIALOG_SECTION, RollPart } from "./roll-part.mjs" export const PART_COMP = "comp" -const SANS_COMPETENCE = { key: '', label: "Sans compétence", value: 0 } +const SELECT_SANS_COMPETENCE = { key: '', label: "Sans compétence", value: 0 } export class RollPartComp extends RollPartSelect { @@ -34,7 +34,7 @@ export class RollPartComp extends RollPartSelect { refs.all = all.filter(comp => Grammar.includesLowerCaseNoAccent(comp.label, selectedComp)) } else { - refs.all = all.filter(comp => comp == SANS_COMPETENCE) + refs.all = all.filter(comp => comp == SELECT_SANS_COMPETENCE) } } } @@ -63,7 +63,7 @@ export class RollPartComp extends RollPartSelect { .sort(Misc.ascending(it => Grammar.toLowerCaseNoAccentNoSpace(it.label))) /* TODO: filter competences */ const listCompetences = [ - SANS_COMPETENCE, + SELECT_SANS_COMPETENCE, ...competences ] return listCompetences