Compare commits

...

2 commits

Author SHA1 Message Date
WBHarry
20febb82d5 Semi-corrected reroll of one of multiple results on a die 2026-07-15 02:35:27 +02:00
WBHarry
fea3671069 Fixed DamageActions 2026-07-15 02:00:43 +02:00
4 changed files with 15 additions and 10 deletions

View file

@ -254,8 +254,8 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
const target = event.target.closest('[data-die-index]'); const target = event.target.closest('[data-die-index]');
if (target.dataset.type === 'damage') { if (target.dataset.type === 'damage') {
const { damageType, dice } = target.dataset; const { damageType, dice, result } = target.dataset;
await message.system.damage.rerollDamageDice(damageType, dice); await message.system.damage.rerollDamageDice(damageType, dice, result);
await message.update({ await message.update({
'system.damage.types': { 'system.damage.types': {
[damageType]: { [damageType]: {

View file

@ -59,20 +59,21 @@ class ChatMessageRollDamage extends foundry.abstract.DataModel {
} }
} }
async rerollDamageDice(damageType, dice) { async rerollDamageDice(damageType, dice, resultIndex) {
const reroll = this.types[damageType].roll; const reroll = this.types[damageType].roll;
const rerollDice = reroll.dice[dice]; const rerollDice = reroll.dice[dice];
await rerollDice.reroll(`/r1=${rerollDice.total}`); const diceResult = rerollDice.results[resultIndex];
await rerollDice.reroll(`/r1=${diceResult.result}`);
await reroll._evaluate(); await reroll._evaluate();
const result = rerollDice.results.find(x => x.active); const rerolledResult = rerollDice.results[rerollDice.results.length - 1];
if (result) { if (rerolledResult) {
const fakeRoll = { const fakeRoll = {
_evaluated: true, _evaluated: true,
dice: [new foundry.dice.terms.Die({ dice: [new foundry.dice.terms.Die({
...rerollDice, ...rerollDice,
results: [result], results: [rerolledResult],
total: result.value, total: rerolledResult.value,
faces: rerollDice.faces faces: rerollDice.faces
})], })],
options: { appearance: {} } options: { appearance: {} }

View file

@ -19,11 +19,15 @@ export default class DamageRoll extends DHRoll {
for (const roll of config.roll) { for (const roll of config.roll) {
await roll.roll.evaluate(); await roll.roll.evaluate();
if (!config.damage?.types) config.damage = { types: {} };
config.damage.types[roll.applyTo] = { config.damage.types[roll.applyTo] = {
roll: roll.roll, roll: roll.roll,
damageTypes: roll.damageTypes ?? [] damageTypes: roll.damageTypes ?? []
}; };
} }
roll._evaluated = true;
} }
static async buildPost(roll, config, message) { static async buildPost(roll, config, message) {

View file

@ -40,7 +40,7 @@
<div class="roll-die{{#unless @../first}} has-plus{{/unless}}"> <div class="roll-die{{#unless @../first}} has-plus{{/unless}}">
<div <div
class="dice reroll-button {{../dice}}" class="dice reroll-button {{../dice}}"
data-die-index="0" data-type="damage" data-damage-type="{{@../../key}}" data-dice="{{@../key}}" data-die-index="0" data-type="damage" data-damage-type="{{@../../key}}" data-dice="{{@../key}}" data-result="{{@key}}"
> >
{{#if hasRerolls}}<i class="fa-solid fa-dice dice-rerolled" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerolled"}}"></i>{{/if}} {{#if hasRerolls}}<i class="fa-solid fa-dice dice-rerolled" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerolled"}}"></i>{{/if}}
{{result}} {{result}}