mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
* Restructured all the files * Moved build/daggerheart.js to ./daggerheart.js. Changed rollup to use the css file instead of the less * Restored build/ folder * Mvoed config out form under application * Moved roll.mjs to module/dice and renamed to dhRolls.mjs * Update module/canvas/placeables/_module.mjs Co-authored-by: joaquinpereyra98 <24190917+joaquinpereyra98@users.noreply.github.com> * Le massive export update * Removed unncessary import --------- Co-authored-by: joaquinpereyra98 <24190917+joaquinpereyra98@users.noreply.github.com>
49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
import BeastformDialog from '../../applications/dialogs/beastformDialog.mjs';
|
|
import DHBaseAction from './baseAction.mjs';
|
|
|
|
export default class DhBeastformAction extends DHBaseAction {
|
|
static extraSchemas = ['beastform'];
|
|
|
|
async use(event, ...args) {
|
|
const beastformConfig = this.prepareBeastformConfig();
|
|
|
|
const abort = await this.handleActiveTransformations();
|
|
if (abort) return;
|
|
|
|
const beastformUuid = await BeastformDialog.configure(beastformConfig);
|
|
if (!beastformUuid) return;
|
|
|
|
await this.transform(beastformUuid);
|
|
}
|
|
|
|
prepareBeastformConfig(config) {
|
|
const settingsTiers = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers).tiers;
|
|
const actorLevel = this.actor.system.levelData.level.current;
|
|
const actorTier =
|
|
Object.values(settingsTiers).find(
|
|
tier => actorLevel >= tier.levels.start && actorLevel <= tier.levels.end
|
|
) ?? 1;
|
|
|
|
return {
|
|
tierLimit: this.beastform.tierAccess.exact ?? actorTier
|
|
};
|
|
}
|
|
|
|
async transform(beastformUuid) {
|
|
const beastform = await foundry.utils.fromUuid(beastformUuid);
|
|
this.actor.createEmbeddedDocuments('Item', [beastform.toObject()]);
|
|
}
|
|
|
|
async handleActiveTransformations() {
|
|
const beastformEffects = this.actor.effects.filter(x => x.type === 'beastform');
|
|
if (beastformEffects.length > 0) {
|
|
for (let effect of beastformEffects) {
|
|
await effect.delete();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|