diff --git a/lang/en.json b/lang/en.json index e24eef0f..b9a81b29 100755 --- a/lang/en.json +++ b/lang/en.json @@ -3253,8 +3253,7 @@ "knowTheTide": "Know The Tide gained a token", "lackingItemTransferPermission": "User {user} lacks owner permission needed to transfer items to {target}", "noTokenTargeted": "No token is targeted", - "behaviorRegionRequiresGM": "Creating a Region with an attached Behavior requires an online GM", - "comboDiceOnlyTwoDiceError": "Combo dice functionality only works on a single pair of two dice" + "behaviorRegionRequiresGM": "Creating a Region with an attached Behavior requires an online GM" }, "Progress": { "migrationLabel": "Performing system migration. Please wait and do not close Foundry." diff --git a/module/dice/die/baseDie.mjs b/module/dice/die/baseDie.mjs index 37c47d1d..ed44cb39 100644 --- a/module/dice/die/baseDie.mjs +++ b/module/dice/die/baseDie.mjs @@ -3,61 +3,22 @@ import { adjustDice } from '../../helpers/utils.mjs'; export default class BaseDie extends foundry.dice.terms.Die { static MODIFIERS = { ...foundry.dice.terms.Die.MODIFIERS, - cc: 'compoundComboDice', c: 'comboDice' }; - async compoundComboDice() { - return this.handleComboDice(true); - } - - async comboDice() { - return this.handleComboDice(false); - } - - async handleComboDice(maxIncreasesDiceSize) { + async comboDice(modifier) { /* ComboDice only works with exactly two dice and both have to be the same denomination */ - if (this.number !== 2) { - ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.comboDiceOnlyTwoDiceError')); - return false; - } + if (this.number !== 2) return false; - const result = await this.continueCombo(maxIncreasesDiceSize); - - /* The flow of DiceSoNice has no way of knowign that some of the results of a Die should be a different denomination - We solve this by marking the results as hidden so they're not picked up by the auto roll of DiceSoNice. - The actual rolls are done here in place so every dice gets the correct denomination. - */ - if (game.modules.get('dice-so-nice')?.active) { - const rolls = []; - for (const result of this.results) { - const roll = await (new Roll(`1${result.denomination ?? this.denomination}`)).evaluate(); - roll.terms[0].results = [result]; - roll._evaluateTotal(); - rolls.push(roll); - } - - /* If there are other dice that will be rolled we cannot await here. The other dice will be awaited in the normal flow */ - if (this._root.dice.length > 1) { - for (const roll of rolls) { - game.dice3d.showForRoll(roll, game.user, true); - } - } else { - await Promise.allSettled(rolls.map(roll => game.dice3d.showForRoll(roll, game.user, true))); - } - } - - for (const result of this.results) - result.hidden = true; - - return result; + const maxIncreasesDiceSize = modifier.endsWith('1'); + return this.continueCombo(maxIncreasesDiceSize); } async continueCombo(maxIncreasesDiceSize) { const lastIndex = this.results.length - 1; - /* The Combo only continues if the latest roll was higher or equal to the previous */ - if (this.results[lastIndex].result < this.results[lastIndex - 1].result) return false; + /* The Combo only continues if the latest roll was higher than the previous */ + if (this.results[lastIndex].result <= this.results[lastIndex - 1].result) return false; const lastFaces = this.results[lastIndex].denomination?.slice(1) ?? this.faces; const increaseDiceSize = maxIncreasesDiceSize && lastFaces < 12 && this.results[lastIndex].result === lastFaces; @@ -67,25 +28,6 @@ export default class BaseDie extends foundry.dice.terms.Die { this.results.push({ result: newRoll.total, denomination: denomination, active: true }); this.number += 1; - return this.continueCombo(maxIncreasesDiceSize); - } - - /** @override */ - getResultCSS(result) { - const hasSuccess = result.success !== undefined; - const hasFailure = result.failure !== undefined; - const isMax = result.result === this.faces; - const isMin = result.result === 1; - return [ - this.constructor.name.toLowerCase(), - result.denomination ?? this.denomination, // Accomodating ComboDie as a result can have a different denomination than the die as a whole - result.success ? 'success' : null, - result.failure ? 'failure' : null, - result.rerolled ? 'rerolled' : null, - result.exploded ? 'exploded' : null, - result.discarded ? 'discarded' : null, - !(hasSuccess || hasFailure) && isMin ? 'min' : null, - !(hasSuccess || hasFailure) && isMax ? 'max' : null - ]; + return this.continueCombo(); } } \ No newline at end of file diff --git a/templates/ui/chat/parts/damage-part.hbs b/templates/ui/chat/parts/damage-part.hbs index 9636e066..45b09b72 100644 --- a/templates/ui/chat/parts/damage-part.hbs +++ b/templates/ui/chat/parts/damage-part.hbs @@ -39,7 +39,7 @@ {{#unless discarded}}
{{#if hasRerolls}}{{/if}} diff --git a/templates/ui/chat/parts/roll-part.hbs b/templates/ui/chat/parts/roll-part.hbs index 2c5c150a..cfee735f 100644 --- a/templates/ui/chat/parts/roll-part.hbs +++ b/templates/ui/chat/parts/roll-part.hbs @@ -84,13 +84,8 @@ {{else}} {{#each roll.dice}} {{#each results}} - {{debug this}}
-
+
{{result}}