diff --git a/lang/fr.json b/lang/fr.json index 427978e..c67a72b 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -104,7 +104,6 @@ "DNC.Dialog.InitiativeIntro": "{actorName} lance l'initiative.", "DNC.Dialog.InitiativeCurrent": "DEX actuelle : {dex}, bonus de fiche : {initiativeBonus}", "DNC.Dialog.CharacteristicUsed": "Caracteristique utilisee", - "DNC.Dialog.ActorDamageBonus": "Bonus de degats de l'acteur", "DNC.Dialog.DamageCappedByDv": "Le DV martial actuel ({dv}) plafonne cette arme : {base} devient {damage}.", "DNC.Dialog.SpellAutoDisadvantage": "Le cout depasse le rang du lanceur : le jet se fera automatiquement avec desavantage.", "DNC.Dialog.UseUsageDie": "Utiliser {itemName} et lancer son de d'usage actuel.", diff --git a/modules/applications/donjon-et-cie-roll-dialog.mjs b/modules/applications/donjon-et-cie-roll-dialog.mjs index 3e18729..8008d8a 100644 --- a/modules/applications/donjon-et-cie-roll-dialog.mjs +++ b/modules/applications/donjon-et-cie-roll-dialog.mjs @@ -202,16 +202,18 @@ export class DonjonEtCieRollDialog { static async createDamage(actor, item) { const damageContext = DonjonEtCieUtility.getMartialDamageContext(actor, item); + const isMeleeTwoHanded = item.type === "arme" && item.system.categorie === "melee" && Number(item.system.mains ?? 1) > 1; + const defaultMode = isMeleeTwoHanded ? "avantage" : "normal"; const content = await foundry.applications.handlebars.renderTemplate( "systems/fvtt-donjon-et-cie/templates/dialogs/damage-roll.hbs", { actorName: actor?.name ?? item.actor?.name ?? "", item, - actorBonus: actor?.system?.combat?.degatsBonus ?? 0, damageFormula: damageContext.effectiveFormula || item.system.degats, damageBase: damageContext.baseFormula || item.system.degats, damageCapped: damageContext.capped, - martialDvLabel: damageContext.martialDvSides ? `d${damageContext.martialDvSides}` : damageContext.martialDvFormula + martialDvLabel: damageContext.martialDvSides ? `d${damageContext.martialDvSides}` : damageContext.martialDvFormula, + defaultMode } ); diff --git a/modules/donjon-et-cie-rolls.mjs b/modules/donjon-et-cie-rolls.mjs index 31158b5..4e899f6 100644 --- a/modules/donjon-et-cie-rolls.mjs +++ b/modules/donjon-et-cie-rolls.mjs @@ -372,11 +372,15 @@ export class DonjonEtCieRolls { } if (!isUsageDie && !item.system.degats) return null; + // Arme à 2 mains de corps à corps : avantage automatique + const isMeleeTwoHanded = item.type === "arme" && item.system.categorie === "melee" && Number(item.system.mains ?? 1) > 1; + if (isMeleeTwoHanded && mode === "normal") { + mode = "avantage"; + } + const damageContext = DonjonEtCieUtility.getMartialDamageContext(actor, item); - const actorBonus = Number(actor?.system?.combat?.degatsBonus ?? 0); - const totalBonus = actorBonus; const effectiveDamage = damageContext.effectiveFormula || (isUsageDie ? `1d${degatsDelta}` : item.system.degats); - const formula = totalBonus ? `${effectiveDamage} + ${totalBonus}` : effectiveDamage; + const formula = effectiveDamage; const result = await this.#resolveFormulaRoll(formula, {}, { mode, favorable: "high" }); const targets = DonjonEtCieUtility.getSceneDamageTargets(); const rollDieLabels = result.rolls.map((roll) => { @@ -427,6 +431,12 @@ export class DonjonEtCieRolls { return null; } + // Arme à 2 mains de corps à corps : avantage automatique + const isMeleeTwoHanded = item.type === "arme" && item.system.categorie === "melee" && Number(item.system.mains ?? 1) > 1; + if (isMeleeTwoHanded && mode === "normal") { + mode = "avantage"; + } + const resolved = await this.#resolveFormulaRoll(`1d${before}`, {}, { mode, favorable: "high" }); const result = resolved.kept; const degraded = result <= 3; diff --git a/modules/donjon-et-cie-utility.mjs b/modules/donjon-et-cie-utility.mjs index ae1a2cd..a4e85aa 100644 --- a/modules/donjon-et-cie-utility.mjs +++ b/modules/donjon-et-cie-utility.mjs @@ -76,8 +76,8 @@ export class DonjonEtCieUtility { const scene = canvas?.scene ?? game.scenes?.current; const tokens = scene?.tokens?.contents ?? []; - const selectedTokens = canvas?.tokens?.controlled ?? []; - const selectedTokenUuid = selectedTokens.length === 1 ? selectedTokens[0]?.uuid : null; + const targetedTokens = game.user?.targets ?? []; + const targetedTokenUuid = targetedTokens[0]?.uuid ?? null; return tokens .map((token) => { @@ -93,7 +93,7 @@ export class DonjonEtCieUtility { tokenUuid: token.uuid, actorUuid: actor.uuid, label, - isSelected: token.uuid === selectedTokenUuid + isSelected: token.uuid === targetedTokenUuid }; }) .filter(Boolean) diff --git a/modules/models/employe.mjs b/modules/models/employe.mjs index dba54a2..e857d75 100644 --- a/modules/models/employe.mjs +++ b/modules/models/employe.mjs @@ -50,7 +50,6 @@ export default class EmployeDataModel extends foundry.abstract.TypeDataModel { }), combat: new fields.SchemaField({ initiativeBonus: new fields.NumberField({ initial: 0, integer: true }), - degatsBonus: new fields.NumberField({ initial: 0, integer: true }), attaquesCorpsACorps: new fields.NumberField({ initial: 1, integer: true }), attaquesDistance: new fields.NumberField({ initial: 1, integer: true }) }), diff --git a/templates/actors/employe-sheet.hbs b/templates/actors/employe-sheet.hbs index 2485b15..5b24b01 100644 --- a/templates/actors/employe-sheet.hbs +++ b/templates/actors/employe-sheet.hbs @@ -46,10 +46,7 @@ Attaques distance - + diff --git a/templates/dialogs/damage-roll.hbs b/templates/dialogs/damage-roll.hbs index 9767f56..b66aa78 100644 --- a/templates/dialogs/damage-roll.hbs +++ b/templates/dialogs/damage-roll.hbs @@ -3,13 +3,12 @@ {{#if damageCapped}}

{{localize "DNC.Dialog.DamageCappedByDv" dv=martialDvLabel damage=damageFormula base=damageBase}}

{{/if}} -

{{localize "DNC.Dialog.ActorDamageBonus"}} : {{actorBonus}}