mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-23 19:09:55 +02:00
Fixed so that automated countdowns reverse progress from Fear when rerolling dice if the duality result changes
This commit is contained in:
parent
3840f39c97
commit
4d81509e79
5 changed files with 38 additions and 23 deletions
|
|
@ -202,11 +202,11 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C
|
||||||
const { updateCountdowns } = game.system.api.applications.ui.DhCountdowns;
|
const { updateCountdowns } = game.system.api.applications.ui.DhCountdowns;
|
||||||
if (combatant.actor?.type === 'character') {
|
if (combatant.actor?.type === 'character') {
|
||||||
await updateCountdowns(
|
await updateCountdowns(
|
||||||
CONFIG.DH.GENERAL.countdownProgressionTypes.spotlight.id,
|
{ type: CONFIG.DH.GENERAL.countdownProgressionTypes.spotlight.id },
|
||||||
CONFIG.DH.GENERAL.countdownProgressionTypes.characterSpotlight.id
|
{ type: CONFIG.DH.GENERAL.countdownProgressionTypes.characterSpotlight.id }
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
await updateCountdowns(CONFIG.DH.GENERAL.countdownProgressionTypes.spotlight.id);
|
await updateCountdowns({ type: CONFIG.DH.GENERAL.countdownProgressionTypes.spotlight.id });
|
||||||
}
|
}
|
||||||
|
|
||||||
const autoPoints = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).actionPoints;
|
const autoPoints = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).actionPoints;
|
||||||
|
|
|
||||||
|
|
@ -342,7 +342,7 @@ export default class DhCountdowns extends HandlebarsApplicationMixin(Application
|
||||||
* Sends updates of the countdowns to the GM player. Since this is asynchronous, be sure to
|
* Sends updates of the countdowns to the GM player. Since this is asynchronous, be sure to
|
||||||
* update all the countdowns at the same time.
|
* update all the countdowns at the same time.
|
||||||
*
|
*
|
||||||
* @param {...any} progressTypes Countdowns to be updated
|
* @param {...{ type: <key>, reverseDirection: boolean }} progressTypes Countdowns to be updated
|
||||||
*/
|
*/
|
||||||
static async updateCountdowns(...progressTypes) {
|
static async updateCountdowns(...progressTypes) {
|
||||||
const { countdownAutomation } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
|
const { countdownAutomation } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
|
||||||
|
|
@ -351,20 +351,21 @@ export default class DhCountdowns extends HandlebarsApplicationMixin(Application
|
||||||
const countdownSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns);
|
const countdownSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns);
|
||||||
const updatedCountdowns = Object.keys(countdownSetting.countdowns).reduce((acc, key) => {
|
const updatedCountdowns = Object.keys(countdownSetting.countdowns).reduce((acc, key) => {
|
||||||
const countdown = countdownSetting.countdowns[key];
|
const countdown = countdownSetting.countdowns[key];
|
||||||
if (progressTypes.indexOf(countdown.progress.type) !== -1 && countdown.progress.current > 0) {
|
const progressData = progressTypes.find(x => x.type === countdown.progress.type);
|
||||||
acc.push(key);
|
if (progressData && countdown.progress.current > 0) {
|
||||||
|
acc[key] = { value: progressData.reverseDirection ? 1 : -1 };
|
||||||
}
|
}
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
}, []);
|
}, {});
|
||||||
|
|
||||||
const countdownData = countdownSetting.toObject();
|
const countdownData = countdownSetting.toObject();
|
||||||
const settings = {
|
const settings = {
|
||||||
...countdownData,
|
...countdownData,
|
||||||
countdowns: Object.keys(countdownData.countdowns).reduce((acc, key) => {
|
countdowns: Object.keys(countdownData.countdowns).reduce((acc, key) => {
|
||||||
const countdown = foundry.utils.deepClone(countdownData.countdowns[key]);
|
const countdown = foundry.utils.deepClone(countdownData.countdowns[key]);
|
||||||
if (updatedCountdowns.includes(key)) {
|
if (updatedCountdowns[key]) {
|
||||||
countdown.progress.current -= 1;
|
countdown.progress.current += updatedCountdowns[key].value;
|
||||||
}
|
}
|
||||||
|
|
||||||
acc[key] = countdown;
|
acc[key] = countdown;
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ export default class DHAttackAction extends DHDamageAction {
|
||||||
|
|
||||||
if (result?.message?.system.action?.roll?.type === 'attack') {
|
if (result?.message?.system.action?.roll?.type === 'attack') {
|
||||||
const { updateCountdowns } = game.system.api.applications.ui.DhCountdowns;
|
const { updateCountdowns } = game.system.api.applications.ui.DhCountdowns;
|
||||||
await updateCountdowns(CONFIG.DH.GENERAL.countdownProgressionTypes.characterAttack.id);
|
await updateCountdowns({ type: CONFIG.DH.GENERAL.countdownProgressionTypes.characterAttack.id });
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
||||||
|
|
@ -362,11 +362,11 @@ export default class DualityRoll extends D20Roll {
|
||||||
|
|
||||||
if (config.roll.result.duality === -1) {
|
if (config.roll.result.duality === -1) {
|
||||||
await updateCountdowns(
|
await updateCountdowns(
|
||||||
CONFIG.DH.GENERAL.countdownProgressionTypes.actionRoll.id,
|
{ type: CONFIG.DH.GENERAL.countdownProgressionTypes.actionRoll.id },
|
||||||
CONFIG.DH.GENERAL.countdownProgressionTypes.fear.id
|
{ type: CONFIG.DH.GENERAL.countdownProgressionTypes.fear.id }
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
await updateCountdowns(CONFIG.DH.GENERAL.countdownProgressionTypes.actionRoll.id);
|
await updateCountdowns({ type: CONFIG.DH.GENERAL.countdownProgressionTypes.actionRoll.id });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,33 @@
|
||||||
import { ResourceUpdateMap } from '../data/action/baseAction.mjs';
|
import { ResourceUpdateMap } from '../data/action/baseAction.mjs';
|
||||||
|
|
||||||
export function updateResourcesForDualityReroll(oldDuality, newDuality, actor) {
|
export function updateResourcesForDualityReroll(oldDuality, newDuality, actor) {
|
||||||
const { hopeFear } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
|
|
||||||
if (game.user.isGM ? !hopeFear.gm : !hopeFear.players) return;
|
|
||||||
|
|
||||||
const updates = [];
|
|
||||||
const hope = (newDuality >= 0 ? 1 : 0) - (oldDuality >= 0 ? 1 : 0);
|
const hope = (newDuality >= 0 ? 1 : 0) - (oldDuality >= 0 ? 1 : 0);
|
||||||
const stress = (newDuality === 0 ? 1 : 0) - (oldDuality === 0 ? 1 : 0);
|
const stress = (newDuality === 0 ? 1 : 0) - (oldDuality === 0 ? 1 : 0);
|
||||||
const fear = (newDuality === -1 ? 1 : 0) - (oldDuality === -1 ? 1 : 0);
|
const fear = (newDuality === -1 ? 1 : 0) - (oldDuality === -1 ? 1 : 0);
|
||||||
|
|
||||||
if (hope !== 0) updates.push({ key: 'hope', value: hope, enabled: true });
|
const { hopeFear, countdownAutomation } =
|
||||||
if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, enabled: true });
|
game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
|
||||||
if (fear !== 0) updates.push({ key: 'fear', value: fear, enabled: true });
|
|
||||||
|
|
||||||
const resourceUpdates = new ResourceUpdateMap(actor);
|
if (game.user.isGM ? hopeFear.gm : hopeFear.players) {
|
||||||
resourceUpdates.addResources(updates);
|
const updates = [];
|
||||||
resourceUpdates.updateResources();
|
if (hope !== 0) updates.push({ key: 'hope', value: hope, enabled: true });
|
||||||
|
if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, enabled: true });
|
||||||
|
if (fear !== 0) updates.push({ key: 'fear', value: fear, enabled: true })
|
||||||
|
|
||||||
|
const resourceUpdates = new ResourceUpdateMap(actor);
|
||||||
|
resourceUpdates.addResources(updates);
|
||||||
|
resourceUpdates.updateResources();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (countdownAutomation) {
|
||||||
|
const updates = [];
|
||||||
|
if (fear !== 0) {
|
||||||
|
updates.push({
|
||||||
|
type: CONFIG.DH.GENERAL.countdownProgressionTypes.fear.id,
|
||||||
|
reverseDirection: fear === 1 ? false : true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
game.system.api.applications.ui.DhCountdowns.updateCountdowns(...updates);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue