From 150942215eae286d471626039e278861437ea584 Mon Sep 17 00:00:00 2001 From: Johannes Loher Date: Sun, 7 Feb 2021 19:06:21 +0100 Subject: [PATCH] Use a dice modifier instead of a custom DiceTerm --- .gitlab-ci.yml | 4 +-- README.md | 26 +++++++--------- package.json | 10 +++--- risk-dice-modifier.png | Bin 0 -> 42147 bytes risk-dice.png | Bin 8523 -> 0 bytes src/lang/de.json | 3 -- src/lang/en.json | 3 -- src/module.json | 22 +++---------- src/module/risk-dice-modifier.ts | 12 +++++++ src/module/risk-dice.ts | 10 ------ src/module/risk-die.ts | 51 ------------------------------ src/module/risk.ts | 52 +++++++++++++++++++++++++++++++ 12 files changed, 87 insertions(+), 106 deletions(-) create mode 100644 risk-dice-modifier.png delete mode 100644 risk-dice.png delete mode 100644 src/lang/de.json delete mode 100644 src/lang/en.json create mode 100644 src/module/risk-dice-modifier.ts delete mode 100644 src/module/risk-dice.ts delete mode 100644 src/module/risk-die.ts create mode 100644 src/module/risk.ts diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2cf6fcb..c32e0c3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,12 +33,12 @@ build: stage: build script: - npm run build - - mv dist risk-dice + - mv dist-modifier cache: <<: *global_cache artifacts: paths: - - risk-dice + - risk-dice-modifier expire_in: 1 week .release-template: &release-template diff --git a/README.md b/README.md index 0256d0d..a47094e 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,27 @@ -# Risk Dice +# Risk Dice Modifier -An implementation of risk dice as found for example in the Splittermond game +An implementation of risk rolls as found for example in the Splittermond game system. -This module provides a new dice type which represents a risk die. Rolling a risk -die ist just rolling a number of dice combined with s special way of calculating -the total: -- If there are either two `1`s or a `1` and a `2` in the results, the total sum - is `1 + 1` or `1 + 2` respectively. -- Otherwise, the total result is the sum of the 2 highest results. - +This module provides a new dice modifier `ri` for regular Dice. This modifier +causes the dice roller to keep / drop dice according to the following rules: +- If there are either two `1`s or a `1` and a `2` in the results, keep only + these dice. +- Otherwise, keep the 2 dice with the highest results. ``` -/roll dr # Roll a risk die. +/roll 4d10ri # Roll 4d10 is risk die mode ``` -![Risk Dice](./risk-dice.png) - - +![Risk Dice Modifier](./risk-dice-modifier.png) ## Installation -To install and use the Risk Dice module for Foundry Virtual Tabletop, +To install and use the Risk Dice Modifier module for Foundry Virtual Tabletop, simply paste the following URL into the **Install Module** dialog on the Setup menu of the application. -https://git.f3l.de/ghost/risk-dice/-/raw/latest/src/module.json?inline=false +https://git.f3l.de/ghost/risk-dice-modifier/-/raw/latest/src/module.json?inline=false ## Development diff --git a/package.json b/package.json index 290dee1..13c7f00 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,16 @@ { "private": true, - "name": "risk-dice", - "description": "An implementation of Risk Dice as found for example in the Splittermond game system", + "name": "risk-dice-modifier", + "description": "An implementation of risk rolls as found for example in the Splittermond game system", "version": "0.0.1", "license": "MIT", - "homepage": "https://git.f3l.de/ghost/risk-dice", + "homepage": "https://git.f3l.de/ghost/risk-dice-modifier", "repository": { "type": "git", - "url": "https://git.f3l.de/ghost/risk-dice" + "url": "https://git.f3l.de/ghost/risk-dice-modifier" }, "bugs": { - "url": "https://git.f3l.de/ghost/risk-dice/-/issues" + "url": "https://git.f3l.de/ghost/risk-dice-modifier/-/issues" }, "contributors": [ { diff --git a/risk-dice-modifier.png b/risk-dice-modifier.png new file mode 100644 index 0000000000000000000000000000000000000000..bde765610e650f298bea2d32711b2175ea5c2e62 GIT binary patch literal 42147 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 { + registerRiskModifier(); +}); diff --git a/src/module/risk-dice.ts b/src/module/risk-dice.ts deleted file mode 100644 index 86486ab..0000000 --- a/src/module/risk-dice.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { RiskDie } from './risk-die'; - -function registerRiskDie(): void { - CONFIG.Dice.types.push(RiskDie); - CONFIG.Dice.terms.r = RiskDie; -} - -Hooks.once('init', () => { - registerRiskDie(); -}); diff --git a/src/module/risk-die.ts b/src/module/risk-die.ts deleted file mode 100644 index 87be868..0000000 --- a/src/module/risk-die.ts +++ /dev/null @@ -1,51 +0,0 @@ -export class RiskDie extends DiceTerm { - constructor({ modifiers, ...other }: Partial) { - const numberModifier = modifiers?.filter((m) => m[0] === 'n')[0]; - const numberRegex = new RegExp('n([0-9]+)?'); - const numberMatch = numberModifier?.match(numberRegex); - const [numberString] = numberMatch?.slice(1) || [`${4}`]; - const number = parseInt(numberString); - - const facesModifier = modifiers?.filter((m) => m[0] === 'f')[0]; - const facesRegex = new RegExp('f([0-9]+)?'); - const facesMatch = facesModifier?.match(facesRegex); - const [facesString] = facesMatch?.slice(1) || [`${10}`]; - const faces = parseInt(facesString); - - if (number < 3) { - throw new Error(game.i18n.localize('RiskDice.ErrorNumberMustBeAtLeast3')); - } - - super({ ...other, modifiers, number, faces }); - } - - /** - * Return the dice expression portion of the full term formula, excluding any flavor text. - */ - get expression(): string { - return `d${RiskDie.DENOMINATION}${this.modifiers.join('')}`; - } - - get total(): number | null { - if (!this._evaluated) return null; - if (this.values.includes(1) && this.values.includes(2)) { - return 3; - } else if (this.values.filter((res) => res === 1).length > 1) { - return 2; - } else { - return this.values - .sort((a, b) => b - a) - .slice(0, 2) - .reduce((acc, e) => acc + e, 0); - } - } - - /** @override */ - static MODIFIERS = { - n: (): void => undefined, // Modifier is consumed in constructor for number - f: (): void => undefined, // Modifier is consumed in constructor for faces - }; - - /** @override */ - static DENOMINATION = 'r'; -} diff --git a/src/module/risk.ts b/src/module/risk.ts new file mode 100644 index 0000000..116aa0b --- /dev/null +++ b/src/module/risk.ts @@ -0,0 +1,52 @@ +export function risk(this: Die): void { + const activeResults = this.results.filter((result) => result.active); + const activeValues = activeResults.map((result) => result.result); + + activeResults.forEach((result) => { + markResultInactive(result); + }); + + if (activeValues.includes(1) && activeValues.includes(2)) { + markFirstOneAndFirstTwoActive(activeResults); + } else if (activeValues.filter((value) => value === 1).length > 1) { + markFirstTwoOnesActive(activeResults); + } else { + markTwoBiggestResultsActive(activeResults); + } +} + +function markResultInactive(result: DiceTerm.Result): void { + result.active = false; + result.discarded = true; +} + +function markResultActive(result: DiceTerm.Result): void { + result.active = true; + result.discarded = false; +} + +function markFirstOneAndFirstTwoActive(results: DiceTerm.Result[]): void { + const firstOne = results.find((result) => result.result === 1) as DiceTerm.Result; + markResultActive(firstOne); + + const firstTwo = results.find((result) => result.result === 2) as DiceTerm.Result; + markResultActive(firstTwo); +} + +function markFirstTwoOnesActive(results: DiceTerm.Result[]): void { + const [firstOne, secondOne] = results.filter((result) => result.result === 1); + firstOne.active = true; + firstOne.discarded = false; + secondOne.active = true; + secondOne.discarded = false; +} + +function markTwoBiggestResultsActive(results: DiceTerm.Result[]): void { + [...results] + .sort((a, b) => b.result - a.result) + .slice(0, 2) + .forEach((result) => { + result.active = true; + result.discarded = false; + }); +}