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";
diff --git a/templates/actor/combat.hbs b/templates/actor/combat.hbs
index 0174314d..07e8f4e5 100644
--- a/templates/actor/combat.hbs
+++ b/templates/actor/combat.hbs
@@ -23,7 +23,7 @@
{{>"systems/foundryvtt-reve-de-dragon/templates/item/icon-arme-broken.hbs" action.arme}}
{{plusMoins action.comp.system.niveau}}
- {{plusMoins action.dmg}}
+ {{plusMoins action.dommagesArme}}