diff --git a/module/actor-sheet.js b/module/actor-sheet.js index e10377e0..61b7e9a9 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -1,7 +1,5 @@ import { RdDUtility } from "./rdd-utility.js"; import { HtmlUtility } from "./html-utility.js"; -import { RdDItemArme } from "./item/arme.js"; -import { RdDItemCompetence } from "./item-competence.js"; import { RdDBonus } from "./rdd-bonus.js"; import { Misc } from "./misc.js"; import { RdDCombatManager } from "./rdd-combat.js"; @@ -9,11 +7,12 @@ import { RdDCarac } from "./rdd-carac.js"; import { DialogSplitItem } from "./dialog-split-item.js"; import { ReglesOptionnelles } from "./settings/regles-optionnelles.js"; import { RdDSheetUtility } from "./rdd-sheet-utility.js"; -import { STATUSES } from "./settings/status-effects.js"; 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"; import { RdDBaseActorSangSheet } from "./actor/base-actor-sang-sheet.js"; diff --git a/module/actor.js b/module/actor.js index fec9cc15..994c57c0 100644 --- a/module/actor.js +++ b/module/actor.js @@ -8,12 +8,9 @@ import { RdDResolutionTable } from "./rdd-resolution-table.js"; import { RdDDice } from "./rdd-dice.js"; import { RdDRollTables } from "./rdd-rolltables.js"; import { ChatUtility } from "./chat-utility.js"; -import { RdDItemSort } from "./item-sort.js"; import { Grammar } from "./grammar.js"; -import { RdDItemCompetence } from "./item-competence.js"; import { RdDAlchimie } from "./rdd-alchimie.js"; import { STATUSES } from "./settings/status-effects.js"; -import { RdDItemSigneDraconique } from "./item/signedraconique.js"; import { ReglesOptionnelles } from "./settings/regles-optionnelles.js"; import { EffetsDraconiques } from "./tmr/effets-draconiques.js"; import { Draconique } from "./tmr/draconique.js"; @@ -24,11 +21,9 @@ import { RollDataAjustements } from "./rolldata-ajustements.js"; import { RdDPossession } from "./rdd-possession.js"; import { SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js"; import { RdDConfirm } from "./rdd-confirm.js"; -import { RdDRencontre } from "./item/rencontre.js"; import { DialogRepos } from "./sommeil/dialog-repos.js"; import { RdDBaseActor } from "./actor/base-actor.js"; import { RdDTimestamp } from "./time/rdd-timestamp.js"; -import { RdDItemBlessure } from "./item/blessure.js"; import { AppAstrologie } from "./sommeil/app-astrologie.js"; import { RdDEmpoignade } from "./rdd-empoignade.js"; import { ExperienceLog, XP_TOPIC } from "./actor/experience-log.js"; @@ -36,12 +31,19 @@ import { ITEM_TYPES } from "./constants.js"; import { RdDBaseActorSang } from "./actor/base-actor-sang.js"; import { RdDCoeur } from "./coeur/rdd-coeur.js"; import { DialogChoixXpCarac } from "./dialog-choix-xp-carac.js"; -import { RdDItemArme } from "./item/arme.js"; import { RdDCombatManager } from "./rdd-combat.js"; + +import { RdDItemArme } from "./item/arme.js"; +import { RdDItemBlessure } from "./item/blessure.js"; import { RdDItemTete } from "./item/tete.js"; +import { RdDItemSort } from "./item-sort.js"; +import { RdDItemRace } from "./item/race.js"; +import { RdDItemCompetence } from "./item-competence.js"; +import { RdDItemSigneDraconique } from "./item/signedraconique.js"; +import { RdDRencontre } from "./item/rencontre.js"; import { DialogSelect } from "./dialog-select.js"; import { PAS_DE_DRACONIC, POSSESSION_SANS_DRACONIC } from "./item/base-items.js"; -import { RdDItemRace } from "./item/race.js"; + import { RdDRollResult } from "./rdd-roll-result.js"; export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre'] diff --git a/module/actor/base-actor-reve.js b/module/actor/base-actor-reve.js index 8cdfa53d..7b3683e2 100644 --- a/module/actor/base-actor-reve.js +++ b/module/actor/base-actor-reve.js @@ -8,15 +8,16 @@ import { RdDUtility } from "../rdd-utility.js"; import { ReglesOptionnelles } from "../settings/regles-optionnelles.js"; import { RdDBaseActor } from "./base-actor.js"; import { ITEM_TYPES } from "../constants.js"; -import { RdDItemCompetence } from "../item-competence.js"; -import { RdDItemCompetenceCreature } from "../item-competencecreature.js"; -import { RdDItemArme } from "../item/arme.js"; import { StatusEffects } from "../settings/status-effects.js"; import { Targets } from "../targets.js"; import { RdDConfirm } from "../rdd-confirm.js"; import { RdDCarac } from "../rdd-carac.js"; import { RdDRollResult } from "../rdd-roll-result.js"; +import { RdDItemCompetence } from "../item-competence.js"; +import { RdDItemCompetenceCreature } from "../item-competencecreature.js"; +import { RdDItemArme } from "../item/arme.js"; + import { ChatUtility } from "../chat-utility.js"; import { DialogValidationEncaissement } from "../dialog-validation-encaissement.js"; import { RdDCombat } from "../rdd-combat.js"; diff --git a/module/initiative.mjs b/module/initiative.mjs new file mode 100644 index 00000000..eedf6978 --- /dev/null +++ b/module/initiative.mjs @@ -0,0 +1,7 @@ +export class RdDInitiative { + + static calculInitiative(niveau, caracValue, bonus = 0) { + let base = niveau + Math.floor(caracValue / 2) + bonus; + return "1d6" + (base >= 0 ? "+" : "") + base; + } +} diff --git a/module/item-competencecreature.js b/module/item-competencecreature.js index 53d510f6..66832fb1 100644 --- a/module/item-competencecreature.js +++ b/module/item-competencecreature.js @@ -1,7 +1,7 @@ import { ITEM_TYPES } from "./constants.js"; import { Grammar } from "./grammar.js"; -import { RdDCombatManager } from "./rdd-combat.js"; +import { RdDInitiative } from "./initiative.mjs"; export const CATEGORIES_COMPETENCES_CREATURES = { "generale": { base: 0, label: "Générale" }, @@ -37,7 +37,7 @@ export class RdDItemCompetenceCreature extends Item { competence: item.name, cac: categorieAttaque == "naturelle" ? "naturelle" : "", niveau: item.system.niveau, - initiative: RdDCombatManager.calculInitiative(item.system.niveau, item.system.carac_value), + initiative: RdDInitiative.calculInitiative(item.system.niveau, item.system.carac_value), equipe: true, resistance: 100, dommagesReels: item.system.dommages, diff --git a/module/item.js b/module/item.js index ec5df5fb..64a01f3f 100644 --- a/module/item.js +++ b/module/item.js @@ -1,7 +1,8 @@ import { ITEM_TYPES } from "./constants.js"; -import { DialogItemVente } from "./achat-vente/dialog-item-vente.js"; + import { Grammar } from "./grammar.js"; import { Misc } from "./misc.js"; +import { DialogItemVente } from "./achat-vente/dialog-item-vente.js"; import { RdDTimestamp } from "./time/rdd-timestamp.js"; import { RdDUtility } from "./rdd-utility.js"; import { SystemCompendiums } from "./settings/system-compendiums.js"; @@ -84,6 +85,7 @@ export const defaultItemImg = { /* -------------------------------------------- */ export class RdDItem extends Item { + static get defaultIcon() { return undefined; } @@ -95,12 +97,12 @@ export class RdDItem extends Item { static isFieldInventaireModifiable(type, field) { switch (field) { case 'quantite': - if ([ITEM_TYPES.conteneur].includes(type)) { + if (ITEM_TYPES.conteneur == type) { return false; } break; case 'cout': - if ([ITEM_TYPES.monnaie].includes(type)) { + if (ITEM_TYPES.monnaie == type) { return game.user.isGM; } break; diff --git a/module/item/arme.js b/module/item/arme.js index bb1b83d7..38fb1b53 100644 --- a/module/item/arme.js +++ b/module/item/arme.js @@ -1,8 +1,10 @@ -import { Grammar } from "../grammar.js"; -import { RdDItemCompetenceCreature } from "../item-competencecreature.js" import { ITEM_TYPES } from "../constants.js"; +import { RdDItem } from "../item.js"; + +import { RdDItemCompetenceCreature } from "../item-competencecreature.js" import { BASE_CORPS_A_CORPS } from "./base-items.js"; -import { RdDCombatManager } from "../rdd-combat.js"; +import { Grammar } from "../grammar.js"; +import { RdDInitiative } from "../initiative.mjs"; const nomCategorieParade = { "sans-armes": "Sans arme", @@ -19,12 +21,13 @@ const nomCategorieParade = { } /* -------------------------------------------- */ -export class RdDItemArme extends Item { +export class RdDItemArme extends RdDItem { static get ITEM_TYPE() { return ITEM_TYPES.arme } static get defaultIcon() { - return "systems/foundryvtt-reve-de-dragon/icons/armes_armure/epee_sord.webp"; + return defaultItemImgArme + //return "systems/foundryvtt-reve-de-dragon/icons/armes_armure/epee_sord.webp"; } @@ -251,6 +254,7 @@ export class RdDItemArme extends Item { return false } + static corpsACorps(actor) { let competence = actor?.getCompetenceCorpsACorps() ?? BASE_CORPS_A_CORPS let melee = actor ? actor.system.carac['melee'].value : 0 @@ -260,7 +264,7 @@ export class RdDItemArme extends Item { type: ITEM_TYPES.arme, img: competence.img, system: { - initiative: RdDCombatManager.calculInitiative(competence.system.niveau, melee), + initiative: RdDInitiative.calculInitiative(competence.system.niveau, melee), equipe: true, rapide: true, force: 0, diff --git a/module/item/item-actions.js b/module/item/item-actions.js index 1d2954a9..52aac7b3 100644 --- a/module/item/item-actions.js +++ b/module/item/item-actions.js @@ -3,8 +3,6 @@ import { Misc } from "../misc.js" import { RdDSheetUtility } from "../rdd-sheet-utility.js" import { RdDUtility } from "../rdd-utility.js" - - /** * TODO: * options.editable ? diff --git a/module/rdd-combat.js b/module/rdd-combat.js index b5e98373..2961a539 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -1,9 +1,6 @@ import { ChatUtility } from "./chat-utility.js"; import { ENTITE_BLURETTE, HIDE_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js"; import { Grammar } from "./grammar.js"; -import { RdDItemArme } from "./item/arme.js"; -import { RdDItemCompetence } from "./item-competence.js"; -import { RdDItemCompetenceCreature } from "./item-competencecreature.js"; import { Misc } from "./misc.js"; import { RdDBonus } from "./rdd-bonus.js"; import { RdDResolutionTable } from "./rdd-resolution-table.js"; @@ -14,6 +11,10 @@ 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"; /* -------------------------------------------- */ const premierRoundInit = [ @@ -163,14 +164,10 @@ export class RdDCombatManager extends Combat { } static formuleInitiative(rang, carac, niveau, bonusMalus) { - return `${rang} +( (${RdDCombatManager.calculInitiative(niveau, carac, bonusMalus)} )/100)`; + return `${rang} +( (${RdDInitiative.calculInitiative(niveau, carac, bonusMalus)} )/100)`; } /* -------------------------------------------- */ - static calculInitiative(niveau, caracValue, bonus = 0) { - let base = niveau + Math.floor(caracValue / 2) + bonus; - return "1d6" + (base >= 0 ? "+" : "") + base; - } /* -------------------------------------------- */ /** Retourne une liste triée d'actions d'armes avec le split arme1 main / arme 2 main / lancer */ @@ -242,7 +239,7 @@ export class RdDCombatManager extends Combat { attaque.system.niveau = niveau const ajustement = (arme.parent?.getEtatGeneral() ?? 0) + (arme.system.magique) ? arme.system.ecaille_efficacite : 0 - attaque.system.initiative = RdDCombatManager.calculInitiative(niveau, infoAttaque.carac[carac].value, ajustement) + attaque.system.initiative = RdDInitiative.calculInitiative(niveau, infoAttaque.carac[carac].value, ajustement) return attaque } @@ -779,7 +776,7 @@ export class RdDCombat { // sans armes: à mains nues rollData.arme = RdDItemArme.corpsACorps(this.attacker) rollData.arme.system.niveau = competence.system.niveau - rollData.arme.system.initiative = RdDCombatManager.calculInitiative(competence.system.niveau, this.attacker.system.carac['melee'].value); + rollData.arme.system.initiative = RdDInitiative.calculInitiative(competence.system.niveau, this.attacker.system.carac['melee'].value); } return rollData; } diff --git a/module/rdd-main.js b/module/rdd-main.js index 22a78343..29840c48 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -1,5 +1,4 @@ import { SYSTEM_RDD, SYSTEM_SOCKET_ID, RDD_CONFIG, ITEM_TYPES } from "./constants.js" -import { Migrations } from './migrations.js' import { RdDUtility } from "./rdd-utility.js" import { TMRUtility } from "./tmr-utility.js" @@ -11,7 +10,6 @@ import { DialogChronologie } from "./dialog-chronologie.js" import { RdDResolutionTable } from "./rdd-resolution-table.js" import { RdDTokenHud } from "./rdd-token-hud.js" import { RdDCommands } from "./rdd-commands.js" -import { RdDCombatManager, RdDCombat } from "./rdd-combat.js" import { ChatUtility } from "./chat-utility.js" import { StatusEffects } from "./settings/status-effects.js" import { RdDCompendiumOrganiser } from "./rdd-compendium-organiser.js" @@ -39,6 +37,11 @@ import { RdDActorEntiteSheet } from "./actor/entite-sheet.js" import { RdDActorVehiculeSheet } from "./actor/vehicule-sheet.js" import { RdDItem } from "./item.js" + +import * as models from "./models/_module.mjs" +import * as items from "./documents/_module.mjs" +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" @@ -79,10 +82,9 @@ import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire. import { RdDActorExportSheet } from "./actor/export-scriptarium/actor-encart-sheet.js" import { RdDStatBlockParser } from "./apps/rdd-import-stats.js" import { RdDJournalSheet } from "./journal/journal-sheet.js" +import { RdDCombatManager, RdDCombat } from "./rdd-combat.js" +import { Migrations } from './migrations.js' -import * as models from "./models/_module.mjs" -import * as items from "./documents/_module.mjs" -import * as sheets from "./applications/sheets/_module.mjs" /** * RdD system