From adfcce10fc694ab8c2a58c6e3794bd908a3960bb Mon Sep 17 00:00:00 2001 From: sladecraven Date: Wed, 19 Jan 2022 21:57:34 +0100 Subject: [PATCH 1/2] New fields for weapons --- lang/en.json | 2 ++ lang/fr.json | 2 ++ module/controllers/bol-rolls.js | 13 ++++--- module/system/bol-utility.js | 36 ++++++++++--------- module/system/config.js | 3 ++ system.json | 2 +- .../properties/item/weapon-properties.hbs | 4 +++ 7 files changed, 41 insertions(+), 21 deletions(-) diff --git a/lang/en.json b/lang/en.json index 989f516..75fb86a 100644 --- a/lang/en.json +++ b/lang/en.json @@ -158,6 +158,8 @@ "BOL.weaponCategory.ranged": "Arme de tir", "BOL.weaponCategory.other": "Autre", + "BOL.itemProperty.damageMultiplier": "Damages Multiplier", + "BOL.itemProperty.attackBonusDice": "Attack Bonus Dice", "BOL.itemProperty.equipable": "Équipable", "BOL.itemProperty.protection": "Protection", "BOL.itemProperty.blocking": "Blocage", diff --git a/lang/fr.json b/lang/fr.json index 12151f9..97eb010 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -159,6 +159,8 @@ "BOL.weaponCategory.ranged": "Arme de tir", "BOL.weaponCategory.other": "Autre", + "BOL.itemProperty.damageMultiplier": "Multiplicateur de dommages", + "BOL.itemProperty.attackBonusDice": "Dé de Bonus d'attaque", "BOL.itemProperty.equipable": "Équipable", "BOL.itemProperty.protection": "Protection", "BOL.itemProperty.blocking": "Blocage", diff --git a/module/controllers/bol-rolls.js b/module/controllers/bol-rolls.js index cdbe917..36d6760 100644 --- a/module/controllers/bol-rolls.js +++ b/module/controllers/bol-rolls.js @@ -105,7 +105,12 @@ export class BoLRoll { rollData.id = randomID(16) // Weapon mode specific management + rollData.weaponModifier = 0 + rollData.attackBonusDice = false if (rollData.mode == "weapon") { + //console.log("WEAPON", rollData.weapon) + rollData.weaponModifier = rollData.weapon.data.data.properties.attackModifiers?? 0; + rollData.attackBonusDice = rollData.weapon.data.data.properties.attackBonusDice if (rollData.defender) { // If target is selected rollData.defence = rollData.defender.defenseValue, rollData.shieldBlock = 'none' @@ -118,8 +123,6 @@ export class BoLRoll { } } - console.log("ROL1", rollData) - const rollOptionContent = await renderTemplate(rollOptionTpl, rollData); let d = new Dialog({ title: rollData.label, @@ -154,12 +157,13 @@ export class BoLRoll { } const isMalus = rollData.adv.includes('M'); - const dicePool = __adv2dice[rollData.adv] + let dicePool = __adv2dice[rollData.adv] + dicePool += (rollData.attackBonusDice) ? 1 : 0 //// const dicePool = (isMalus) ? 2 - parseInt(rollData.adv) : 2 + parseInt(rollData.adv); const attrValue = (rollData.attrKey) && eval(`rollData.actor.data.data.attributes.${rollData.attrKey}.value`) || 0; const aptValue = (rollData.aptKey) && eval(`rollData.actor.data.data.aptitudes.${rollData.aptKey}.value`) || 0 - const modifiers = parseInt(attrValue) + parseInt(aptValue) + parseInt(rollData.mod) + parseInt(rollData.career) - rollData.defence - shieldMalus; + const modifiers = rollData.weaponModifier + parseInt(attrValue) + parseInt(aptValue) + parseInt(rollData.mod) + parseInt(rollData.career) - rollData.defence - shieldMalus; const formula = (isMalus) ? dicePool + "d6kl2 + " + modifiers : dicePool + "d6kh2 + " + modifiers; rollData.formula = formula; rollData.modifiers = modifiers @@ -177,6 +181,7 @@ export class BoLRoll { } export class BoLDefaultRoll { + constructor(rollData) { BoLUtility.storeRoll(rollData) this.rollData = rollData diff --git a/module/system/bol-utility.js b/module/system/bol-utility.js index f847c9c..3cef4ad 100644 --- a/module/system/bol-utility.js +++ b/module/system/bol-utility.js @@ -381,24 +381,28 @@ export class BoLUtility { static getDamageFormula(damageString, modifier=0, multiplier = 1) { if (damageString[0] == 'd') { damageString = "1" + damageString } // Help parsing if (modifier == null) modifier = 0; - var myReg = new RegExp('(\\d+)[dD]([\\d]+)([MB]*)?([\\+\\d]*)?', 'g'); - let res = myReg.exec(damageString); - let nbDice = parseInt(res[1]); - let postForm = 'kh' + nbDice; - let modIndex = 3; - if (res[3]) { - if (res[3] == 'M') { - postForm = 'kl' + nbDice; - nbDice++; - modIndex = 4; - } - if (res[3] == 'B') { - postForm = 'kh' + nbDice; - nbDice++; - modIndex = 4; + + let formula = damageString + if ( damageString.includes("d") || damageString.includes("D")) { + var myReg = new RegExp('(\\d+)[dD]([\\d]+)([MB]*)?([\\+\\d]*)?', 'g'); + let res = myReg.exec(damageString); + let nbDice = parseInt(res[1]); + let postForm = 'kh' + nbDice; + let modIndex = 3; + if (res[3]) { + if (res[3] == 'M') { + postForm = 'kl' + nbDice; + nbDice++; + modIndex = 4; + } + if (res[3] == 'B') { + postForm = 'kh' + nbDice; + nbDice++; + modIndex = 4; + } } + formula = "(" + nbDice + "d" + res[2] + postForm + "+" + modifier +") *" + multiplier; } - let formula = "(" + nbDice + "d" + res[2] + postForm + "+" + modifier +") *" + multiplier; return formula; } /* -------------------------------------------- */ diff --git a/module/system/config.js b/module/system/config.js index 3b8fa90..382eb1d 100644 --- a/module/system/config.js +++ b/module/system/config.js @@ -10,6 +10,9 @@ System.debugMode = true; export const BOL = {}; BOL.damageValues = { + "1": "1", + "2": "2", + "3": "3", "d3" : "d3", "d6M" : "d6M (Malus)", "d6" : "d6", diff --git a/system.json b/system.json index 622872a..3ff1bbf 100644 --- a/system.json +++ b/system.json @@ -7,7 +7,7 @@ "url": "https://github.com/ZigmundKreud/bol", "license": "LICENSE.txt", "flags": {}, - "version": "0.9.0.0", + "version": "0.9.0.1", "templateVersion": 16, "minimumCoreVersion": "0.8.6", "compatibleCoreVersion": "9", diff --git a/templates/item/parts/properties/item/weapon-properties.hbs b/templates/item/parts/properties/item/weapon-properties.hbs index c48f5a7..93fd231 100644 --- a/templates/item/parts/properties/item/weapon-properties.hbs +++ b/templates/item/parts/properties/item/weapon-properties.hbs @@ -26,6 +26,10 @@ + + {{#if data.properties.ranged}}