tbd work on summon action type

This commit is contained in:
Nikhil Nagarajan 2026-01-06 18:15:27 -05:00
parent 6cbe753552
commit e83202681e
4 changed files with 134 additions and 0 deletions

View file

@ -9,3 +9,4 @@ export { default as BeastformField } from './beastformField.mjs';
export { default as DamageField } from './damageField.mjs';
export { default as RollField } from './rollField.mjs';
export { default as MacroField } from './macroField.mjs';
export { default as SummonField } from './summonField.mjs';

View file

@ -0,0 +1,61 @@
import DHSummonDialog from '../../../applications/dialogs/summonDialog.mjs';
const fields = foundry.data.fields;
export default class DHSummonField extends fields.SchemaField {
/**
* Action Workflow order
*/
static order = 120;
constructor(options = {}, context = {}) {
const summonFields = {
summon: new fields.ArrayField(new fields.SchemaField({
actorUUID: new fields.DocumentUUIDField({
type: 'Actor',
required: true }),
count: new fields.NumberField({
required: true,
default: 1,
min: 1,
integer: true })
}), { required: false, initial: [] })
};
super(summonFields, options, context);
}
/**
* Summon Action Workflow part.
* Must be called within Action context or similar.
* @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods.
*/
static async execute(config) {
const selected = await DHSummonDialog.configure(config, this.item);
if (!selected) return false;
return await DHSummonField.summon.call(this, selected);
}
/**
* Update Action Workflow config object.
* Must be called within Action context.
* @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods.
*/
prepareConfig(config) {
if (!canvas.scene){
ui.notifications.warn(game.i18n.localize("DAGGERHEART.ACTIONS.TYPES.summon.error"));
return false;
}
return true;
}
/**
* Logic to perform the summon action - incomplete implementation
*/
get defaultValues() {
return {
summon: { actorUUID: "", count: 1 }
};
}
get canSummon() {
return game.user.can('TOKEN_CREATE');
}
}