From ddf547b9592d472e74b3444f56c69a3bbc113470 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Mon, 30 Dec 2024 08:52:58 +0100 Subject: [PATCH] Fix challenge rolls --- lang/en.json | 1 + module/config/system.mjs | 47 ++++++++++ module/documents/roll.mjs | 91 ++++++++----------- packs/lf-equipment/{000040.log => 000044.log} | 0 packs/lf-equipment/CURRENT | 2 +- packs/lf-equipment/LOG | 2 +- packs/lf-equipment/LOG.old | 2 +- packs/lf-equipment/MANIFEST-000038 | 3 - packs/lf-equipment/MANIFEST-000042 | 3 + packs/{lf-skills => lf-gifts}/000040.log | 0 packs/lf-gifts/CURRENT | 2 +- packs/lf-gifts/LOG | 2 +- packs/lf-gifts/LOG.old | 2 +- packs/lf-gifts/MANIFEST-000034 | 3 - packs/lf-gifts/MANIFEST-000038 | 3 + .../000036.log => lf-skills/000044.log} | 0 packs/lf-skills/CURRENT | 2 +- packs/lf-skills/LOG | 2 +- packs/lf-skills/LOG.old | 2 +- packs/lf-skills/MANIFEST-000038 | 3 - packs/lf-skills/MANIFEST-000042 | 3 + .../{000036.log => 000040.log} | 0 packs/lf-vulnerabilities/CURRENT | 2 +- packs/lf-vulnerabilities/LOG | 2 +- packs/lf-vulnerabilities/LOG.old | 2 +- packs/lf-vulnerabilities/MANIFEST-000034 | 3 - packs/lf-vulnerabilities/MANIFEST-000038 | 3 + system.json | 2 +- templates/roll-dialog.hbs | 18 +++- 29 files changed, 128 insertions(+), 79 deletions(-) rename packs/lf-equipment/{000040.log => 000044.log} (100%) delete mode 100644 packs/lf-equipment/MANIFEST-000038 create mode 100644 packs/lf-equipment/MANIFEST-000042 rename packs/{lf-skills => lf-gifts}/000040.log (100%) delete mode 100644 packs/lf-gifts/MANIFEST-000034 create mode 100644 packs/lf-gifts/MANIFEST-000038 rename packs/{lf-gifts/000036.log => lf-skills/000044.log} (100%) delete mode 100644 packs/lf-skills/MANIFEST-000038 create mode 100644 packs/lf-skills/MANIFEST-000042 rename packs/lf-vulnerabilities/{000036.log => 000040.log} (100%) delete mode 100644 packs/lf-vulnerabilities/MANIFEST-000034 create mode 100644 packs/lf-vulnerabilities/MANIFEST-000038 diff --git a/lang/en.json b/lang/en.json index d007a53..6b610af 100644 --- a/lang/en.json +++ b/lang/en.json @@ -550,6 +550,7 @@ }, "Roll": { "save": "Save roll {save}", + "changeDice": "Change dice", "damage": "Jet de dégâts
{item}", "attack": "Jet d'attaque
{item}", "roll": "Roll", diff --git a/module/config/system.mjs b/module/config/system.mjs index 1246cd2..901d586 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -67,6 +67,51 @@ export const DEFENSE_DICE_VALUES = { "d10": "D10" } +export const CHOICE_DICE = { + "D4": "D4", + "D6": "D6", + "D8": "D8", + "D10": "D10" +} + +export const CHOICE_MODIFIERS = { + "-9": "-9", + "-8": "-8", + "-7": "-7", + "-6": "-6", + "-5": "-5", + "-4": "-4", + "-3": "-3", + "-2": "-2", + "-1": "-1", + "+0": "0", + "+1": "+1", + "+2": "+2", + "+3": "+3", + "+4": "+4", + "+5": "+5", + "+6": "+6", + "+7": "+7", + "+8": "+8", + "+9": "+9", + "+10": "+10", + "+11": "+11", + "+12": "+12", + "+13": "+13", + "+14": "+14", + "+15": "+15", + "+16": "+16", + "+17": "+17", + "+18": "+18", + "+19": "+19", + "+20": "+20", + "+21": "+21", + "+22": "+22", + "+23": "+23", + "+24": "+24", + "+25": "+25" +} + export const ASCII = ` ······················································································································ : : @@ -101,5 +146,7 @@ export const SYSTEM = { MONEY, ASCII, ROLL_TYPE, + CHOICE_MODIFIERS, + CHOICE_DICE, DEV_MODE, } diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index 5605ca8..0eb1503 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -1,4 +1,4 @@ -import { ROLL_TYPE } from "../config/system.mjs" +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" import LethalFantasyUtils from "../utils.mjs" export default class LethalFantasyRoll extends Roll { @@ -165,16 +165,20 @@ export default class LethalFantasyRoll extends Roll { * @returns {Promise} The roll result or null if the dialog was cancelled. */ static async prompt(options = {}) { - let dice = "1d20" + let dice = "1D20" let maxValue = 20 - let formula = "1d20" + let formula = "1D20" + let hasModifier = true + let hasChangeDice = false if (options.rollType === "challenge") { if ( options.rollTarget.rollKey === "dying") { dice = options.rollTarget.value maxValue = Number(options.rollTarget.value.match(/\d+/)[0]) formula = `${dice}` + hasModifier = false + hasChangeDice = true } else { - dice = "1d20" + dice = "1D20" maxValue = 20 } } @@ -186,43 +190,9 @@ export default class LethalFantasyRoll extends Roll { default: "public", }) - const choiceModifier = { - "-9": "-9", - "-8": "-8", - "-7": "-7", - "-6": "-6", - "-5": "-5", - "-4": "-4", - "-3": "-3", - "-2": "-2", - "-1": "-1", - "+0": "0", - "+1": "+1", - "+2": "+2", - "+3": "+3", - "+4": "+4", - "+5": "+5", - "+6": "+6", - "+7": "+7", - "+8": "+8", - "+9": "+9", - "+10": "+10", - "+11": "+11", - "+12": "+12", - "+13": "+13", - "+14": "+14", - "+15": "+15", - "+16": "+16", - "+17": "+17", - "+18": "+18", - "+19": "+19", - "+20": "+20", - "+21": "+21", - "+22": "+22", - "+23": "+23", - "+24": "+24", - "+25": "+25" - } + + const choiceModifier = SYSTEM.CHOICE_MODIFIERS + const choiceDice = SYSTEM.CHOICE_DICE let modifier = "+0" let targetName @@ -232,8 +202,13 @@ export default class LethalFantasyRoll extends Roll { isChallenge: options.rollType === "challenge", rollTarget: options.rollTarget, rollModes, + hasModifier, + hasChangeDice, + baseValue: options.rollTarget.value, + changeDice: `${dice}`, fieldRollMode, choiceModifier, + choiceDice, formula, dice, hasTarget: options.hasTarget, @@ -268,18 +243,25 @@ export default class LethalFantasyRoll extends Roll { let treshold let fullModifier = 0 + dice = rollContext.changeDice || dice if (options.rollType === "challenge") { - let bonus = (options.rollTarget.rollKey === "dying") ? 0 : options.rollTarget.bonus - fullModifier = rollContext.modifier === "" ? 0 : parseInt(rollContext.modifier, 10) + bonus - if (fullModifier < 0) { - let modAbs = Math.abs(fullModifier) - formula = `${dice} - (d${modAbs + 1} - 1)` - } else if (fullModifier > 0) { - formula = `${dice} + (d${fullModifier + 1} - 1)` + if (hasModifier) { + let bonus = (options.rollTarget.rollKey === "dying") ? 0 : Number(options.rollTarget.value) + fullModifier = rollContext.modifier === "" ? 0 : parseInt(rollContext.modifier, 10) + bonus + if (fullModifier < 0) { + let modAbs = Math.abs(fullModifier) + formula = `${dice} - (d${modAbs + 1} - 1)` + } else if (fullModifier > 0) { + formula = `${dice} + (d${fullModifier + 1} - 1)` + } else { + formula = `${dice} + 1d0` + } } else { - formula = `${dice} + 1d0` + fullModifier = 0 + formula = `${dice}` } } + maxValue = Number(dice.match(/\d+/)[0]) const rollData = { type: options.rollType, @@ -319,10 +301,13 @@ export default class LethalFantasyRoll extends Roll { diceResults.push( {dice: `${dice}-1`, value: d20result-1}) d20sum += (d20result - 1) } - let minus1 = (fullModifier === 0) ? 0 : 1 - diceResults.push({ dice: `${roll.dice[1].formula}-${minus1}`, value: roll.dice[1].results[0].result - minus1 }) - rollTotal = Math.max(d20sum + roll.dice[1].results[0].result - minus1, 0) - + if (hasModifier) { + let minus1 = (fullModifier === 0) ? 0 : 1 + diceResults.push({ dice: `${roll.dice[1].formula}-${minus1}`, value: roll.dice[1].results[0].result - minus1 }) + rollTotal = Math.max(d20sum + roll.dice[1].results[0].result - minus1, 0) + } else { + rollTotal = d20sum + } } else if (options.rollType === ROLL_TYPE.RESOURCE) { //resultType = roll.total === 1 || roll.total === 2 ? "failure" : "success" } diff --git a/packs/lf-equipment/000040.log b/packs/lf-equipment/000044.log similarity index 100% rename from packs/lf-equipment/000040.log rename to packs/lf-equipment/000044.log diff --git a/packs/lf-equipment/CURRENT b/packs/lf-equipment/CURRENT index 941c5e0..778a552 100644 --- a/packs/lf-equipment/CURRENT +++ b/packs/lf-equipment/CURRENT @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96bdef013fb79e7d36f54609242be99a151ee07d1506ff9e20f6ee3f8a5176c6 +oid sha256:06bbfaf793b9061ba299146242120e0397a3c1d765c559bb6b80d0196883b125 size 16 diff --git a/packs/lf-equipment/LOG b/packs/lf-equipment/LOG index 5d579fc..5565487 100644 --- a/packs/lf-equipment/LOG +++ b/packs/lf-equipment/LOG @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60a826a55abd07ca7de8137274c411e1cc754cb6f33b79cfb59334399e81aa41 +oid sha256:fa0828a5d7701ad545a65a3dc54780fd44da5972a97502b2806074c024935a49 size 736 diff --git a/packs/lf-equipment/LOG.old b/packs/lf-equipment/LOG.old index c00b94b..5d579fc 100644 --- a/packs/lf-equipment/LOG.old +++ b/packs/lf-equipment/LOG.old @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:108d3b426561a5d7357db3ab4d031988b18376d642755ac25469e420829d532e +oid sha256:60a826a55abd07ca7de8137274c411e1cc754cb6f33b79cfb59334399e81aa41 size 736 diff --git a/packs/lf-equipment/MANIFEST-000038 b/packs/lf-equipment/MANIFEST-000038 deleted file mode 100644 index 392fa22..0000000 --- a/packs/lf-equipment/MANIFEST-000038 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c96baf21136c215cf5eb807112817859b18120d8236fdf54dff1035eeecd885 -size 137 diff --git a/packs/lf-equipment/MANIFEST-000042 b/packs/lf-equipment/MANIFEST-000042 new file mode 100644 index 0000000..04ba201 --- /dev/null +++ b/packs/lf-equipment/MANIFEST-000042 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3311d1edd520a521574915c8aea233514899c9d7cd4e83fe6609c3500e85ca45 +size 137 diff --git a/packs/lf-skills/000040.log b/packs/lf-gifts/000040.log similarity index 100% rename from packs/lf-skills/000040.log rename to packs/lf-gifts/000040.log diff --git a/packs/lf-gifts/CURRENT b/packs/lf-gifts/CURRENT index 430b3cd..941c5e0 100644 --- a/packs/lf-gifts/CURRENT +++ b/packs/lf-gifts/CURRENT @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22ab787ec084e789354964ecc388a63611c1d0628b0e3d3ffbd77a2eed0d8d8a +oid sha256:96bdef013fb79e7d36f54609242be99a151ee07d1506ff9e20f6ee3f8a5176c6 size 16 diff --git a/packs/lf-gifts/LOG b/packs/lf-gifts/LOG index f4ae839..d53e72a 100644 --- a/packs/lf-gifts/LOG +++ b/packs/lf-gifts/LOG @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cae71f6aef27403ed7a970165a2f48863e0b9149ac3a479800d3c9e51f370ce4 +oid sha256:011b2a63977f4b1b8b1dce5db3f65b5e2aa2749949ee10128f79d222bd81b0a4 size 732 diff --git a/packs/lf-gifts/LOG.old b/packs/lf-gifts/LOG.old index 7388cb1..f4ae839 100644 --- a/packs/lf-gifts/LOG.old +++ b/packs/lf-gifts/LOG.old @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fabde0d16f8bb4d2b0d04a8e575ede67dbdf0f2af3820c94ac72e6453608f6ca +oid sha256:cae71f6aef27403ed7a970165a2f48863e0b9149ac3a479800d3c9e51f370ce4 size 732 diff --git a/packs/lf-gifts/MANIFEST-000034 b/packs/lf-gifts/MANIFEST-000034 deleted file mode 100644 index d114e47..0000000 --- a/packs/lf-gifts/MANIFEST-000034 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de32e38fc575497227c4f127dc58affb6a8ccf7efcd6fb570b00de4f93ee52f8 -size 137 diff --git a/packs/lf-gifts/MANIFEST-000038 b/packs/lf-gifts/MANIFEST-000038 new file mode 100644 index 0000000..7655325 --- /dev/null +++ b/packs/lf-gifts/MANIFEST-000038 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02bab712d8de87492fd5814309a953c0550b6a6e353009aaf2ab692671133672 +size 137 diff --git a/packs/lf-gifts/000036.log b/packs/lf-skills/000044.log similarity index 100% rename from packs/lf-gifts/000036.log rename to packs/lf-skills/000044.log diff --git a/packs/lf-skills/CURRENT b/packs/lf-skills/CURRENT index 941c5e0..778a552 100644 --- a/packs/lf-skills/CURRENT +++ b/packs/lf-skills/CURRENT @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96bdef013fb79e7d36f54609242be99a151ee07d1506ff9e20f6ee3f8a5176c6 +oid sha256:06bbfaf793b9061ba299146242120e0397a3c1d765c559bb6b80d0196883b125 size 16 diff --git a/packs/lf-skills/LOG b/packs/lf-skills/LOG index a8ac464..cc589bd 100644 --- a/packs/lf-skills/LOG +++ b/packs/lf-skills/LOG @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e82970c23dc57377df436447a2a976cd598125b7fc66d0f5a56421694fd2d922 +oid sha256:0298952469ac706dbc08b8589501e7661b171cd026d66a86d4cdc4702aeb6c5b size 736 diff --git a/packs/lf-skills/LOG.old b/packs/lf-skills/LOG.old index 054d258..a8ac464 100644 --- a/packs/lf-skills/LOG.old +++ b/packs/lf-skills/LOG.old @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c54092465492c4ebb8c5368c94e209146166ed65cc0b9456a7a0ae74ff24f3d +oid sha256:e82970c23dc57377df436447a2a976cd598125b7fc66d0f5a56421694fd2d922 size 736 diff --git a/packs/lf-skills/MANIFEST-000038 b/packs/lf-skills/MANIFEST-000038 deleted file mode 100644 index c893ead..0000000 --- a/packs/lf-skills/MANIFEST-000038 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fcc1e0817e124e1f023d75ade096f113b78fe09fb17a44b80e736ca0b8dd802f -size 137 diff --git a/packs/lf-skills/MANIFEST-000042 b/packs/lf-skills/MANIFEST-000042 new file mode 100644 index 0000000..75e21c3 --- /dev/null +++ b/packs/lf-skills/MANIFEST-000042 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cd0549d00d634922a8beae9a1f84f5d15a441a82a202aeecddce4fb7a6c9582 +size 137 diff --git a/packs/lf-vulnerabilities/000036.log b/packs/lf-vulnerabilities/000040.log similarity index 100% rename from packs/lf-vulnerabilities/000036.log rename to packs/lf-vulnerabilities/000040.log diff --git a/packs/lf-vulnerabilities/CURRENT b/packs/lf-vulnerabilities/CURRENT index 430b3cd..941c5e0 100644 --- a/packs/lf-vulnerabilities/CURRENT +++ b/packs/lf-vulnerabilities/CURRENT @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22ab787ec084e789354964ecc388a63611c1d0628b0e3d3ffbd77a2eed0d8d8a +oid sha256:96bdef013fb79e7d36f54609242be99a151ee07d1506ff9e20f6ee3f8a5176c6 size 16 diff --git a/packs/lf-vulnerabilities/LOG b/packs/lf-vulnerabilities/LOG index c791163..23ded45 100644 --- a/packs/lf-vulnerabilities/LOG +++ b/packs/lf-vulnerabilities/LOG @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99e879b14063da0bbe63d06abfb69313d186aa15f291484d9749902dc50c0fc7 +oid sha256:d81c5f17d664c10dab92b104b796136a8ace8ef491946911e9da6ecb3d8ebd94 size 732 diff --git a/packs/lf-vulnerabilities/LOG.old b/packs/lf-vulnerabilities/LOG.old index 20d2944..c791163 100644 --- a/packs/lf-vulnerabilities/LOG.old +++ b/packs/lf-vulnerabilities/LOG.old @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80befa83c710cc3a15afd37aee809a551a4c77417041d8d2c9da5a87ee5c635c +oid sha256:99e879b14063da0bbe63d06abfb69313d186aa15f291484d9749902dc50c0fc7 size 732 diff --git a/packs/lf-vulnerabilities/MANIFEST-000034 b/packs/lf-vulnerabilities/MANIFEST-000034 deleted file mode 100644 index d4ee76a..0000000 --- a/packs/lf-vulnerabilities/MANIFEST-000034 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:785a2d28650da436dd436448d8f3ef12ca112855fd4a756140b4fc99cf00c1a9 -size 137 diff --git a/packs/lf-vulnerabilities/MANIFEST-000038 b/packs/lf-vulnerabilities/MANIFEST-000038 new file mode 100644 index 0000000..93e6f44 --- /dev/null +++ b/packs/lf-vulnerabilities/MANIFEST-000038 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b440f1fb903c76ec5945df09e691fe86b8608caa85d21d3041475e96d028c507 +size 137 diff --git a/system.json b/system.json index eec9632..a08905e 100644 --- a/system.json +++ b/system.json @@ -6,7 +6,7 @@ "download": "#{DOWNLOAD}#", "url": "#{URL}#", "license": "LICENSE", - "version": "12.0.9", + "version": "12.0.10", "authors": [ { "name": "Uberwald", diff --git a/templates/roll-dialog.hbs b/templates/roll-dialog.hbs index 8cdb821..b3d74a5 100644 --- a/templates/roll-dialog.hbs +++ b/templates/roll-dialog.hbs @@ -4,15 +4,31 @@ {{#if isChallenge}}
{{localize "LETHALFANTASY.Label.challenge"}} - {{log this}} + {{#if hasModifier}} +
{{upperCase rollTarget.rollKey}} : {{formula}} + {{baseValue}}
+ {{else}}
{{upperCase rollTarget.rollKey}} : {{formula}}
+ {{/if}}
+ + {{#if hasModifier}}
{{localize "LETHALFANTASY.Roll.modifier"}}
+ {{/if}} + + {{#if hasChangeDice}} +
+ {{localize "LETHALFANTASY.Roll.changeDice"}} + +
+ {{/if}} + {{/if}}
{{localize "LETHALFANTASY.Roll.visibility"}}