diff --git a/eslint.config.js b/eslint.config.js
index 9a2da83c..1f584aea 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -33,8 +33,6 @@ const foundryGlobals = {
renderTemplate: false,
TokenDocument: false,
Roll: false,
- PoolTerm: false,
- DiceTerm: false,
TextEditor: false,
CONST: false,
getProperty: false,
diff --git a/src/dice/check.js b/src/dice/check.js
index 93e0766f..38bd9383 100644
--- a/src/dice/check.js
+++ b/src/dice/check.js
@@ -15,7 +15,7 @@ import { evaluateCheck, getRequiredNumberOfDice } from "./check-evaluation";
* - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2:19`
* - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5`
*/
-export class DS4Check extends DiceTerm {
+export class DS4Check extends foundry.dice.terms.DiceTerm {
constructor({ modifiers = [], results = [], options } = {}) {
super({
faces: 20,
@@ -86,8 +86,15 @@ export class DS4Check extends DiceTerm {
}
/** @override */
- _evaluateSync({ minimize = false, maximize = false } = {}) {
- super._evaluateSync({ minimize, maximize });
+ _evaluateSync(options = {}) {
+ super._evaluateSync(options);
+ this.evaluateResults();
+ return this;
+ }
+
+ /** @override */
+ async _evaluateAsync(options = {}) {
+ await super._evaluateAsync(options);
this.evaluateResults();
return this;
}
diff --git a/src/dice/slaying-dice-modifier.js b/src/dice/slaying-dice-modifier.js
index bc0e2cd7..5f50aec0 100644
--- a/src/dice/slaying-dice-modifier.js
+++ b/src/dice/slaying-dice-modifier.js
@@ -7,14 +7,14 @@ import { getGame } from "../utils/utils";
import { DS4Check } from "./check";
export function registerSlayingDiceModifier() {
- PoolTerm.MODIFIERS.x = slay;
+ foundry.dice.terms.PoolTerm.MODIFIERS.x = slay;
}
/**
* @this {PoolTerm}
* @param {string} modifier
*/
-function slay(modifier) {
+async function slay(modifier) {
const rgx = /[xX]/;
const match = modifier.match(rgx);
if (!match || !this.rolls) return;
@@ -25,7 +25,7 @@ function slay(modifier) {
checked++;
if (diceTerm instanceof DS4Check && diceTerm.coup) {
const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`;
- const additionalRoll = Roll.create(formula).evaluate({ async: false });
+ const additionalRoll = await Roll.create(formula).evaluate();
this.rolls.push(additionalRoll);
this.results.push({ result: additionalRoll.total ?? 0, active: true });
diff --git a/system.json b/system.json
index 85054fef..0e67ae56 100644
--- a/system.json
+++ b/system.json
@@ -40,8 +40,8 @@
}
},
"compatibility": {
- "minimum": "11.305",
- "verified": "11"
+ "minimum": "12.331",
+ "verified": "12"
},
"esmodules": ["ds4.js"],
"styles": ["css/ds4.css"],
@@ -118,9 +118,10 @@
"manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json",
"download": "https://git.f3l.de/dungeonslayers/ds4/releases/download/1.21.1/ds4.zip",
"initiative": "@combatValues.initiative.total",
- "gridDistance": 1,
- "gridUnits": "m",
+ "grid": {
+ "distance": 1,
+ "units": "m"
+ },
"primaryTokenAttribute": "combatValues.hitPoints",
- "manifestPlusVersion": "1.2.0",
"url": "https://git.f3l.de/dungeonslayers/ds4"
}
diff --git a/templates/dialogs/roll-options.hbs b/templates/dialogs/roll-options.hbs
index 426fcba4..406a512e 100644
--- a/templates/dialogs/roll-options.hbs
+++ b/templates/dialogs/roll-options.hbs
@@ -25,11 +25,7 @@ SPDX-License-Identifier: MIT
@@ -52,11 +48,7 @@ SPDX-License-Identifier: MIT
diff --git a/templates/sheets/active-effect/active-effect-config.hbs b/templates/sheets/active-effect/active-effect-config.hbs
index 2d42a394..5a52247a 100644
--- a/templates/sheets/active-effect/active-effect-config.hbs
+++ b/templates/sheets/active-effect/active-effect-config.hbs
@@ -8,14 +8,14 @@ SPDX-License-Identifier: MIT
-