mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
* start development * finish party members tab * start resources tab * finish resources tab * finish inventory tab and add inital template to projects tab * add resource buttons actions methods * add group roll dialog * Main implementation * Fixed costs * Minor fixes and tweaks for the party sheet (#1239) * Minor fixes and tweaks for the party sheet * Fix scroll restoration for party sheet tabs * Finished GroupRoll * Removed/commented-out not yet implemented things * Commented out Difficulty since it's not used yet * Re-render party when members update (#1242) * Fixed so style applies in preview chat message * Added the clown car * Fixed so items can be dropped into the Party sheet * Added delete icon to inventory * Fixed TokenHUD token property useage. Fixed skipping roll message * Added visible modifier to GroupRoll leader result * Leader roll displays the large result display right away after rolling * Corrected tokenHUD for non-player-tokens * Fixed clowncar tokenData * Fixed TagTeam roll message and sound * Removed final TagTeamRoll roll sound * [PR] [Party Sheets] Sidebar character sheet changes (#1249) * Something experimenting * I am silly (wearning Dunce hat) * Stressful task * Armor functional to be hit * CSS Changes to accomadate pip boy * last minute change to resource section for better visual feeling * restoring old css for toggle * Added setting to toggle pip/number display * toggle functionality added * Fixed light-mode in characterSheet * Fixed multi-row resource pips display for character * Fixed separators * Added pip-display to Adversary and Companion. Some fixing on armor display --------- Co-authored-by: WBHarry <williambjrklund@gmail.com> * Fixed party height and resource armor update * Fixed deletebutton padding * Only showing expand-me icon on InventoryItem if there is a description to show * . * Fixed menu icon to be beige instead of white in dark mode --------- Co-authored-by: moliloo <dev.murilobrito@gmail.com> Co-authored-by: Carlos Fernandez <CarlosFdez@users.noreply.github.com> Co-authored-by: Nikhil Nagarajan <potter.nikhil@gmail.com>
116 lines
4 KiB
JavaScript
116 lines
4 KiB
JavaScript
import DhCompanionLevelUp from '../../levelup/companionLevelup.mjs';
|
|
import DHBaseActorSheet from '../api/base-actor.mjs';
|
|
|
|
/**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */
|
|
|
|
export default class DhCompanionSheet extends DHBaseActorSheet {
|
|
static DEFAULT_OPTIONS = {
|
|
classes: ['actor', 'companion'],
|
|
position: { width: 340 },
|
|
actions: {
|
|
toggleStress: DhCompanionSheet.#toggleStress,
|
|
actionRoll: DhCompanionSheet.#actionRoll,
|
|
levelManagement: DhCompanionSheet.#levelManagement
|
|
}
|
|
};
|
|
|
|
static PARTS = {
|
|
limited: {
|
|
template: 'systems/daggerheart/templates/sheets/actors/companion/limited.hbs',
|
|
scrollable: ['.limited-container']
|
|
},
|
|
header: { template: 'systems/daggerheart/templates/sheets/actors/companion/header.hbs' },
|
|
details: { template: 'systems/daggerheart/templates/sheets/actors/companion/details.hbs' },
|
|
effects: {
|
|
template: 'systems/daggerheart/templates/sheets/actors/companion/effects.hbs',
|
|
scrollable: ['.effects-sections']
|
|
}
|
|
};
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/** @inheritdoc */
|
|
static TABS = {
|
|
primary: {
|
|
tabs: [{ id: 'details' }, { id: 'effects' }],
|
|
initial: 'details',
|
|
labelPrefix: 'DAGGERHEART.GENERAL.Tabs'
|
|
}
|
|
};
|
|
|
|
/** @inheritDoc */
|
|
async _onRender(context, options) {
|
|
await super._onRender(context, options);
|
|
|
|
this.element
|
|
.querySelector('.level-value')
|
|
?.addEventListener('change', event => this.document.updateLevel(Number(event.currentTarget.value)));
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
/* Application Clicks Actions */
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* Toggles stress resource value.
|
|
* @type {ApplicationClickAction}
|
|
*/
|
|
static async #toggleStress(_, button) {
|
|
const StressValue = Number.parseInt(button.dataset.value);
|
|
const newValue = this.document.system.resources.stress.value >= StressValue ? StressValue - 1 : StressValue;
|
|
await this.document.update({ 'system.resources.stress.value': newValue });
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
static async #actionRoll(event) {
|
|
const partner = this.actor.system.partner;
|
|
const config = {
|
|
event,
|
|
title: `${game.i18n.localize('DAGGERHEART.GENERAL.Roll.action')}: ${this.actor.name}`,
|
|
headerTitle: `Companion ${game.i18n.localize('DAGGERHEART.GENERAL.Roll.action')}`,
|
|
roll: {
|
|
trait: partner.system.spellcastModifierTrait?.key
|
|
},
|
|
hasRoll: true,
|
|
data: partner.getRollData()
|
|
};
|
|
|
|
const result = await partner.diceRoll(config);
|
|
this.consumeResource(result?.costs);
|
|
}
|
|
|
|
// Remove when Action Refactor part #2 done
|
|
async consumeResource(costs) {
|
|
if (!costs?.length) return;
|
|
|
|
const partner = this.actor.system.partner;
|
|
const usefulResources = {
|
|
...foundry.utils.deepClone(partner.system.resources),
|
|
fear: {
|
|
value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear),
|
|
max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear,
|
|
reversed: false
|
|
}
|
|
};
|
|
const resources = game.system.api.fields.ActionFields.CostField.getRealCosts(costs).map(c => {
|
|
const resource = usefulResources[c.key];
|
|
return {
|
|
key: c.key,
|
|
value: (c.total ?? c.value) * (resource.isReversed ? 1 : -1),
|
|
target: resource.target
|
|
};
|
|
});
|
|
|
|
await partner.modifyResource(resources);
|
|
}
|
|
|
|
/**
|
|
* Opens the companions level management window.
|
|
* @type {ApplicationClickAction}
|
|
*/
|
|
static #levelManagement() {
|
|
new DhCompanionLevelUp(this.document).render({ force: true });
|
|
}
|
|
}
|