[Fix] Beastform Fixes (#1288)

* Fixed Beastforms getting stuck

* Made the wildcard image select dialog scrollable

* Beastform button shifts to cancelBeastform
This commit is contained in:
WBHarry 2025-11-15 17:51:01 +01:00 committed by GitHub
parent 91b1b92d19
commit fcb9c032ef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 40 additions and 30 deletions

View file

@ -12,7 +12,7 @@ export default class ImageSelectDialog extends HandlebarsApplicationMixin(Applic
tag: 'form',
classes: ['daggerheart', 'dialog', 'dh-style', 'image-select'],
position: {
width: 600,
width: 612,
height: 'auto'
},
window: {
@ -30,7 +30,10 @@ export default class ImageSelectDialog extends HandlebarsApplicationMixin(Applic
/** @override */
static PARTS = {
main: { template: 'systems/daggerheart/templates/dialogs/image-select/main.hbs' },
main: {
template: 'systems/daggerheart/templates/dialogs/image-select/main.hbs',
scrollable: ['.images-container']
},
footer: { template: 'systems/daggerheart/templates/dialogs/image-select/footer.hbs' }
};

View file

@ -31,6 +31,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
toggleEquipItem: CharacterSheet.#toggleEquipItem,
toggleResourceDice: CharacterSheet.#toggleResourceDice,
handleResourceDice: CharacterSheet.#handleResourceDice,
cancelBeastform: CharacterSheet.#cancelBeastform,
useDowntime: this.useDowntime
},
window: {
@ -219,6 +220,8 @@ export default class CharacterSheet extends DHBaseActorSheet {
}
};
context.beastformActive = this.document.effects.find(x => x.type === 'beastform');
const homebrewCurrency = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).currency;
if (homebrewCurrency.enabled) {
context.inventory.currency = homebrewCurrency;
@ -848,6 +851,15 @@ export default class CharacterSheet extends DHBaseActorSheet {
});
}
/**
*
*/
static async #cancelBeastform(_, target) {
const item = await getDocFromElement(target);
if (!item) return;
game.system.api.fields.ActionFields.BeastformField.handleActiveTransformations.call(item);
}
/**
* Open the downtime application.
* @type {ApplicationClickAction}

View file

@ -420,19 +420,6 @@ export default function DHApplicationMixin(Base) {
];
if (usable) {
options.unshift({
name: 'DAGGERHEART.APPLICATIONS.ContextMenu.cancelBeastform',
icon: 'fa-solid fa-ban',
condition: target => {
const doc = getDocFromElementSync(target);
return doc && doc.system?.actions?.some(a => a.type === 'beastform');
},
callback: async target =>
game.system.api.fields.ActionFields.BeastformField.handleActiveTransformations.call(
await getDocFromElement(target)
)
});
options.unshift({
name: 'DAGGERHEART.GENERAL.damage',
icon: 'fa-solid fa-explosion',

View file

@ -41,9 +41,6 @@ export default class BeastformField extends fields.SchemaField {
* @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods.
*/
static async execute(config) {
// Should not be useful anymore here
await BeastformField.handleActiveTransformations.call(this);
const { selected, evolved, hybrid } = await BeastformDialog.configure(config, this.item);
if (!selected) return false;

View file

@ -257,9 +257,10 @@ export const updateActorTokens = async (actor, update) => {
/* Update the tokens in all scenes belonging to Actor */
for (let token of actor.getDependentTokens()) {
const tokenActor = token.baseActor ?? token.actor;
if (tokenActor?.id === actor.id) {
if (token.id && tokenActor?.id === actor.id) {
await token.update({
...update
...update,
_id: token.id
});
}
}