diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 31da145b..1dacbf44 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -11,7 +11,6 @@ import { MAINS_DIRECTRICES } from "./actor.js"; import { RdDBaseActorReveSheet } from "./actor/base-actor-reve-sheet.js"; import { ITEM_TYPES } from "./constants.js"; import { RdDItem } from "./item.js"; -import { RdDItemArme } from "./item/arme.js"; import { RdDItemCompetence } from "./item-competence.js"; import { RdDItemBlessure } from "./item/blessure.js"; import { RdDEmpoignade } from "./rdd-empoignade.js"; diff --git a/module/actor/base-actor-reve.js b/module/actor/base-actor-reve.js index 4199ea53..e47e5d0a 100644 --- a/module/actor/base-actor-reve.js +++ b/module/actor/base-actor-reve.js @@ -16,7 +16,6 @@ import { RdDRollResult } from "../rdd-roll-result.js"; import { RdDItemArme } from "../item/arme.js"; import { RdDItemCompetence } from "../item-competence.js"; -import { RdDItemCompetenceCreature } from "../item-competencecreature.js"; import { ChatUtility } from "../chat-utility.js"; import { DialogValidationEncaissement } from "../dialog-validation-encaissement.js"; @@ -25,6 +24,7 @@ import { RdDEmpoignade } from "../rdd-empoignade.js"; import { RdDPossession } from "../rdd-possession.js"; import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, POSSESSION_SANS_DRACONIC } from "../item/base-items.js"; import { RollDataAjustements } from "../rolldata-ajustements.js"; +import { MappingCreatureArme } from "../item/mapping-creature-arme.mjs"; /** * Classe de base pour les acteurs disposant de rêve (donc, pas des objets) @@ -114,7 +114,7 @@ export class RdDBaseActorReve extends RdDBaseActor { listActions({ isAttaque = false, isEquipe = false }) { return this.itemTypes[ITEM_TYPES.competencecreature] .filter(it => it.isAttaque()) - .map(it => RdDItemCompetenceCreature.attaqueCreature(it)) + .map(it => it.attaqueCreature()) .filter(it => it != undefined); } @@ -417,7 +417,7 @@ export class RdDBaseActorReve extends RdDBaseActor { } if (competence.type == ITEM_TYPES.competencecreature) { const token = RdDUtility.getSelectedToken(this) - const arme = RdDItemCompetenceCreature.armeCreature(competence) + const arme = MappingCreatureArme.armeCreature(competence) if (arme && options.tryTarget && Targets.hasTargets()) { Targets.selectOneTargetToken(target => { if (arme.action == "possession") { @@ -430,7 +430,7 @@ export class RdDBaseActorReve extends RdDBaseActor { return; } // Transformer la competence de créature - RdDItemCompetenceCreature.setRollDataCreature(rollData) + MappingCreatureArme.setRollDataCreature(rollData) } const dialogLabel = 'Jet ' + Grammar.apostrophe('de', competence.name); await this.openRollDialog({ diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 20c67f70..b12edb50 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -9,6 +9,7 @@ import { RdDAudio } from "../rdd-audio.js"; import { RdDConfirm } from "../rdd-confirm.js"; import { RdDUtility } from "../rdd-utility.js"; import { SystemCompendiums } from "../settings/system-compendiums.js"; +import { RdDItem } from "../item.js"; export class RdDBaseActor extends Actor { @@ -499,7 +500,8 @@ export class RdDBaseActor extends Actor { /* -------------------------------------------- */ async computeEncTotal() { if (!this.pack) { - this.encTotal = this.items.map(it => it.getEncTotal()).reduce(Misc.sum(), 0); + this.encTotal = this.items.filter(it => RdDItem.getItemTypesInventaire().includes(it.type)) + .map(it => it.getEncTotal()).reduce(Misc.sum(), 0) return this.encTotal; } return 0; @@ -758,10 +760,10 @@ export class RdDBaseActor extends Actor { getCaracInit(competence) { return 0 } listAttaques() { - return this.listActions({ isAttaque: true, isEquipe:false }) + return this.listActions({ isAttaque: true, isEquipe: false }) } - listActions({ isAttaque = false, isEquipe=false }) { return [] } + listActions({ isAttaque = false, isEquipe = false }) { return [] } listActionsPossessions() { return this.itemTypes[ITEM_TYPES.possession] diff --git a/module/actor/export-scriptarium/actor-encart-sheet.js b/module/actor/export-scriptarium/actor-encart-sheet.js index a8971a79..2bb2d453 100644 --- a/module/actor/export-scriptarium/actor-encart-sheet.js +++ b/module/actor/export-scriptarium/actor-encart-sheet.js @@ -3,7 +3,7 @@ import { SYSTEM_RDD } from "../../constants.js"; import { Misc } from "../../misc.js"; import { EXPORT_CSV_SCRIPTARIUM, OptionsAvancees } from "../../settings/options-avancees.js"; import { ExportScriptarium } from "./export-scriptarium.js"; -import { CATEGORIES_COMPETENCES, CATEGORIES_DRACONIC, Mapping } from "./mapping.js"; +import { CATEGORIES_COMPETENCES_BASE, CATEGORIES_DRACONIC, Mapping } from "./mapping.js"; export class RdDActorExportSheet extends RdDActorSheet { static init() { @@ -44,7 +44,7 @@ export class RdDActorExportSheet extends RdDActorSheet { formData.context = Mapping.prepareContext(this.actor) formData.attaques = this.actor.listActionsAttaque() formData.export = this.getMappingValues(formData.context, this.actor) - formData.competences = this.getCompetences(CATEGORIES_COMPETENCES) + formData.competences = this.getCompetences(CATEGORIES_COMPETENCES_BASE) formData.draconic = this.getCompetences(CATEGORIES_DRACONIC) const legeres = this.actor.nbBlessuresLegeres() const graves = this.actor.nbBlessuresGraves() diff --git a/module/actor/export-scriptarium/mapping.js b/module/actor/export-scriptarium/mapping.js index 05b1237d..df373d3b 100644 --- a/module/actor/export-scriptarium/mapping.js +++ b/module/actor/export-scriptarium/mapping.js @@ -9,7 +9,7 @@ import { RdDBonus } from "../../rdd-bonus.js" import { TMRType } from "../../tmr-utility.js" -export const CATEGORIES_COMPETENCES = [ +export const CATEGORIES_COMPETENCES_BASE = [ "generale", "particuliere", "specialisee", @@ -88,7 +88,7 @@ const MAPPING_BASE = [ { column: "endurance_actuel", rollClass: 'jet-endurance', getter: (actor, context) => actor.system.sante.endurance.value }, { column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) }, { column: "esquive_armure", getter: (actor, context) => Mapping.getEsquiveArmure(context) }, - { column: "competences", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_COMPETENCES) }, + { column: "competences", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_COMPETENCES_BASE) }, { column: "draconic", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_DRACONIC) }, ] diff --git a/module/constants.js b/module/constants.js index bd69b80d..6b013361 100644 --- a/module/constants.js +++ b/module/constants.js @@ -106,3 +106,14 @@ export const ITEM_TYPES = { nombreastral: 'nombreastral', extraitpoetique: 'extraitpoetique', } + +export const CATEGORIES_COMPETENCES = { + "generale": { base: -4, label: "Générales" }, + "particuliere": { base: -8, label: "Particulières" }, + "specialisee": { base: -11, label: "Spécialisées" }, + "connaissance": { base: -11, label: "Connaissances" }, + "draconic": { base: -11, label: "Draconic" }, + "melee": { base: -6, label: "Mêlée" }, + "tir": { base: -8, label: "Tir" }, + "lancer": { base: -8, label: "Lancer" } +} diff --git a/module/item-competence.js b/module/item-competence.js index 68d07bdd..525a3f0d 100644 --- a/module/item-competence.js +++ b/module/item-competence.js @@ -1,6 +1,7 @@ + import { Grammar } from "./grammar.js"; import { RdDItem } from "./item.js"; -import { SANS_COMPETENCE } from "./item/base-items.js"; +import { CATEGORIES_COMPETENCES, SANS_COMPETENCE } from "./item/base-items.js"; import { Misc } from "./misc.js"; const competenceTroncs = [["Esquive", "Dague", "Corps à corps"], @@ -25,16 +26,6 @@ const limitesArchetypes = [ ]; /* -------------------------------------------- */ -export const CATEGORIES_COMPETENCES = { - "generale": { base: -4, label: "Générales" }, - "particuliere": { base: -8, label: "Particulières" }, - "specialisee": { base: -11, label: "Spécialisées" }, - "connaissance": { base: -11, label: "Connaissances" }, - "draconic": { base: -11, label: "Draconic" }, - "melee": { base: -6, label: "Mêlée" }, - "tir": { base: -8, label: "Tir" }, - "lancer": { base: -8, label: "Lancer" } -} function _buildCumulXP() { let cumulXP = { "-11": 0 }; @@ -49,7 +40,12 @@ function _buildCumulXP() { const competence_xp_cumul = _buildCumulXP(); -export class RdDItemCompetence extends Item { +export class RdDItemCompetence extends RdDItem { + + static get ITEM_TYPE() { return ITEM_TYPES.competence } + + static get defaultIcon() { return "systems/foundryvtt-reve-de-dragon/icons/competence_defaut.webp" } + /* -------------------------------------------- */ static getLabelCategorie(category) { return CATEGORIES_COMPETENCES[category].label; diff --git a/module/item-competencecreature.js b/module/item-competencecreature.js index 08a45313..d39c29fb 100644 --- a/module/item-competencecreature.js +++ b/module/item-competencecreature.js @@ -1,6 +1,7 @@ import { ITEM_TYPES } from "./constants.js"; import { RdDItem } from "./item.js"; import { RdDInitiative } from "./initiative.mjs"; +import { RdDItemArme } from "./item/arme.js"; /* -------------------------------------------- */ export class RdDItemCompetenceCreature extends RdDItem { @@ -12,38 +13,37 @@ export class RdDItemCompetenceCreature extends RdDItem { isParade() { return this.system.iscombat && (this.system.categorie_parade ?? '') != '' } isBouclier() { return this.system.categorie_parade.includes('bouclier') } - static attaqueCreature(comp) { - const categorieAttaque = comp.getCategorieAttaque() + attaqueCreature() { + const categorieAttaque = this.getCategorieAttaque() if (categorieAttaque != undefined) { - const initative = RdDInitiative.calculInitiative(comp.system.niveau, comp.system.carac_value); - const armeComp = new RdDItem({ - name: comp.name, - type: ITEM_TYPES.arme, - img: comp.img, - system: { - competence: comp.name, - cac: categorieAttaque == "naturelle" ? "naturelle" : "", - niveau: comp.system.niveau, - initiative: initative, - mortalite: comp.system.mortalite, - dommages: comp.system.dommages, - equipe: true, - resistance: 100, - penetration: 0, - force: 0, - rapide: true, - } - }); + const initative = RdDInitiative.calculInitiative(this.system.niveau, this.system.carac_value); const attaque = { - name: comp.name, - action: comp.isCompetencePossession() ? 'possession' : 'attaque', + name: this.name, + action: this.isCompetencePossession() ? 'possession' : 'attaque', initOnly: false, - arme: armeComp, - comp: comp, - carac: { key: comp.name, value: comp.system.carac_value }, + arme: new RdDItemArme({ + name: this.name, + type: ITEM_TYPES.arme, + img: this.img, + system: { + competence: this.name, + cac: categorieAttaque == "naturelle" ? "naturelle" : "", + niveau: this.system.niveau, + initiative: initative, + mortalite: this.system.mortalite, + dommages: this.system.dommages, + equipe: true, + resistance: 100, + penetration: 0, + force: 0, + rapide: true, + } + }), + comp: this, + carac: { key: this.name, value: this.system.carac_value }, equipe: true, - mortalite: comp.system.mortalite, - dmg: comp.system.dommages, + mortalite: this.system.mortalite, + dmg: this.system.dommages, initiative: initative }; return attaque diff --git a/module/item-sheet.js b/module/item-sheet.js index 264c4024..0e441d31 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -1,7 +1,9 @@ import { ACTOR_TYPES, ITEM_TYPES } from "./constants.js"; + +import { RdDItem } from "./item.js"; +import { RdDItemCompetence } from "./item-competence.js"; import { RdDItemSort } from "./item-sort.js"; import { RdDUtility } from "./rdd-utility.js"; -import { RdDItemCompetence } from "./item-competence.js"; import { HtmlUtility } from "./html-utility.js"; import { ReglesOptionnelles } from "./settings/regles-optionnelles.js"; import { SYSTEM_RDD } from "./constants.js"; @@ -9,7 +11,6 @@ import { RdDSheetUtility } from "./rdd-sheet-utility.js"; import { SystemCompendiums } from "./settings/system-compendiums.js"; import { Misc } from "./misc.js"; import { RdDTimestamp } from "./time/rdd-timestamp.js"; -import { RdDItem } from "./item.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"; diff --git a/module/item.js b/module/item.js index 32426eae..5df8e478 100644 --- a/module/item.js +++ b/module/item.js @@ -1,6 +1,5 @@ import { ITEM_TYPES } from "./constants.js"; -import { CATEGORIES_COMPETENCES } from "./item-competence.js"; -import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, CATEGORIES_COMPETENCES_CREATURES } from "./item/base-items.js"; +import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, CATEGORIES_COMPETENCES, CATEGORIES_COMPETENCES_CREATURES } from "./item/base-items.js"; import { ITEM_ACTIONS, DEFAULT_ACTIONS, COMMON_ACTIONS } from "./item/item-actions.js"; import { Grammar } from "./grammar.js"; diff --git a/module/item/arme.js b/module/item/arme.js index 894e7881..293ec226 100644 --- a/module/item/arme.js +++ b/module/item/arme.js @@ -25,6 +25,7 @@ export const ATTAQUE_TYPE = { TIR: '(tir)', LANCER: '(lancer)' } + /* -------------------------------------------- */ export class RdDItemArme extends RdDItem { diff --git a/module/item/base-items.js b/module/item/base-items.js index e04f285e..df732d41 100644 --- a/module/item/base-items.js +++ b/module/item/base-items.js @@ -18,6 +18,17 @@ export const SANS_COMPETENCE = { img: "systems/foundryvtt-reve-de-dragon/icons/templates/icone_parchement_vierge.webp" } +export const CATEGORIES_COMPETENCES = { + "generale": { base: -4, label: "Générales" }, + "particuliere": { base: -8, label: "Particulières" }, + "specialisee": { base: -11, label: "Spécialisées" }, + "connaissance": { base: -11, label: "Connaissances" }, + "draconic": { base: -11, label: "Draconic" }, + "melee": { base: -6, label: "Mêlée" }, + "tir": { base: -8, label: "Tir" }, + "lancer": { base: -8, label: "Lancer" } +} + export const CATEGORIES_COMPETENCES_CREATURES = { "generale": { base: 0, label: "Générale" }, "naturelle": { base: 0, label: "Arme naturelle" }, diff --git a/module/rdd-combat.js b/module/rdd-combat.js index de91a987..76a27948 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -7,19 +7,18 @@ import { RdDResolutionTable } from "./rdd-resolution-table.js"; import { RdDRoll } from "./rdd-roll.js"; import { RdDRollTables } from "./rdd-rolltables.js"; import { ReglesOptionnelles } from "./settings/regles-optionnelles.js"; -import { STATUSES } from "./settings/status-effects.js"; import { Targets } from "./targets.js"; import { RdDEmpoignade } from "./rdd-empoignade.js"; import { RdDRollResult } from "./rdd-roll-result.js"; import { RdDItemArme } from "./item/arme.js"; import { RdDItemCompetence } from "./item-competence.js"; -import { RdDItemCompetenceCreature } from "./item-competencecreature.js"; import { RdDInitiative } from "./initiative.mjs"; import RollDialog from "./roll/roll-dialog.mjs"; import { PART_DEFENSE } from "./roll/roll-part-defense.mjs"; import { RollDialogAdapter } from "./roll/roll-dialog-adapter.mjs"; import { ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE } from "./roll/roll-constants.mjs"; import { OptionsAvancees, ROLL_DIALOG_V2_TEST } from "./settings/options-avancees.js"; +import { MappingCreatureArme } from "./item/mapping-creature-arme.mjs"; /* -------------------------------------------- */ const premierRoundInit = [ @@ -716,7 +715,7 @@ export class RdDCombat { }; if (this.attacker.isCreatureEntite()) { - RdDItemCompetenceCreature.setRollDataCreature(rollData); + MappingCreatureArme.setRollDataCreature(rollData); } else if (arme) { // Usual competence @@ -1023,7 +1022,7 @@ export class RdDCombat { }; if (this.defender.isCreatureEntite()) { - RdDItemCompetenceCreature.setRollDataCreature(defenderRoll); + MappingCreatureArme.setRollDataCreature(defenderRoll); } return defenderRoll; @@ -1155,7 +1154,7 @@ export class RdDCombat { }; if (this.defender.isCreatureEntite()) { - RdDItemCompetenceCreature.setRollDataCreature(rollData); + MappingCreatureArme.setRollDataCreature(rollData); } return rollData; } diff --git a/module/rdd-main.js b/module/rdd-main.js index 4408de30..99ffbf43 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -45,6 +45,8 @@ import * as sheets from "./applications/sheets/_module.mjs" import { RdDItemArme } from "./item/arme.js" import { RdDItemArmure } from "./item/armure.js" import { RdDItemBlessure } from "./item/blessure.js" +import { RdDItemCompetence } from "./item-competence.js" +import { RdDItemCompetenceCreature } from "./item-competencecreature.js" import { RdDItemGemme } from "./item/gemme.js" import { RdDItemMaladie } from "./item/maladie.js" import { RdDItemOmbre } from "./item/ombre.js" @@ -113,6 +115,8 @@ export class SystemReveDeDragon { arme: RdDItemArme, armure: RdDItemArmure, blessure: RdDItemBlessure, + competence: RdDItemCompetence, + competencecreature: RdDItemCompetenceCreature, gemme: RdDItemGemme, maladie: RdDItemMaladie, ombre: RdDItemOmbre, diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 05c2f61e..7a49e6c1 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -11,7 +11,6 @@ import { RdDItem } from "./item.js"; import { RdDPossession } from "./rdd-possession.js"; import { RdDNameGen } from "./rdd-namegen.js"; import { RdDConfirm } from "./rdd-confirm.js"; -import { RdDItemCompetence } from "./item-competence.js"; import { RdDResolutionTable } from "./rdd-resolution-table.js"; import { RdDTimestamp } from "./time/rdd-timestamp.js"; import { RdDRaretes } from "./item/raretes.js"; @@ -23,6 +22,8 @@ import { ITEM_TYPES, RDD_CONFIG, SYSTEM_RDD } from "./constants.js"; import { RdDBaseActor } from "./actor/base-actor.js"; import { RdDCarac } from "./rdd-carac.js"; import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"; + +import { RdDItemCompetence } from "./item-competence.js"; import { Monnaie } from "./item-monnaie.js"; import { ItemAction } from "./item/item-actions.js";