diff --git a/module/applications/config/Action.mjs b/module/applications/config/Action.mjs index 52a30918..0053fc64 100644 --- a/module/applications/config/Action.mjs +++ b/module/applications/config/Action.mjs @@ -1,7 +1,7 @@ import DaggerheartSheet from '../sheets/daggerheart-sheet.mjs'; const { ApplicationV2 } = foundry.applications.api; -export default class DaggerheartActionConfig extends DaggerheartSheet(ApplicationV2) { +export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { constructor(action) { super({}); diff --git a/module/applications/sheets/items/domainCard.mjs b/module/applications/sheets/items/domainCard.mjs index bd278311..3f26de74 100644 --- a/module/applications/sheets/items/domainCard.mjs +++ b/module/applications/sheets/items/domainCard.mjs @@ -1,5 +1,5 @@ -import DaggerheartAction from '../../../data/action.mjs'; -import DaggerheartActionConfig from '../../config/Action.mjs'; +import DHAction from '../../../data/action.mjs'; +import DHActionConfig from '../../config/Action.mjs'; import DaggerheartSheet from '../daggerheart-sheet.mjs'; const { ItemSheetV2 } = foundry.applications.sheets; @@ -76,7 +76,7 @@ export default class DomainCardSheet extends DaggerheartSheet(ItemSheetV2) { static async addAction() { const actionIndexes = this.document.system.actions.map(x => x.id.split('-')[2]).sort((a, b) => a - b); - const action = await new DaggerheartAction( + const action = await new DHAction( { id: `${this.document.id}-Action-${actionIndexes.length > 0 ? actionIndexes[0] + 1 : 1}` }, @@ -85,14 +85,14 @@ export default class DomainCardSheet extends DaggerheartSheet(ItemSheetV2) { } ); await this.document.update({ 'system.actions': [...this.document.system.actions, action] }); - await new DaggerheartActionConfig(this.document.system.actions[this.document.system.actions.length - 1]).render( + await new DHActionConfig(this.document.system.actions[this.document.system.actions.length - 1]).render( true ); } static async editAction(_, button) { const action = this.document.system.actions[button.dataset.index]; - await new DaggerheartActionConfig(action).render(true); + await new DHActionConfig(action).render(true); } static async removeAction(event, button) { diff --git a/module/applications/sheets/items/feature.mjs b/module/applications/sheets/items/feature.mjs index 25d37822..cae4dc02 100644 --- a/module/applications/sheets/items/feature.mjs +++ b/module/applications/sheets/items/feature.mjs @@ -1,5 +1,5 @@ -import DaggerheartAction from '../../../data/action.mjs'; -import DaggerheartActionConfig from '../../config/Action.mjs'; +import DHAction from '../../../data/action.mjs'; +import DHActionConfig from '../../config/Action.mjs'; import DaggerheartSheet from '../daggerheart-sheet.mjs'; const { ItemSheetV2 } = foundry.applications.sheets; @@ -132,16 +132,16 @@ export default class FeatureSheet extends DaggerheartSheet(ItemSheetV2) { } static async addAction() { - const action = await new DaggerheartAction({ img: this.document.img }, { parent: this.document }); + const action = await new DHAction({ img: this.document.img }, { parent: this.document }); await this.document.update({ 'system.actions': [...this.document.system.actions, action] }); - await new DaggerheartActionConfig(this.document.system.actions[this.document.system.actions.length - 1]).render( + await new DHActionConfig(this.document.system.actions[this.document.system.actions.length - 1]).render( true ); } static async editAction(_, button) { const action = this.document.system.actions[button.dataset.index]; - await new DaggerheartActionConfig(action).render(true); + await new DHActionConfig(action).render(true); } static async removeAction(event, button) { diff --git a/module/data/action.mjs b/module/data/action.mjs index 2c110202..26dda7f3 100755 --- a/module/data/action.mjs +++ b/module/data/action.mjs @@ -1,4 +1,4 @@ -export default class DaggerheartAction extends foundry.abstract.DataModel { +export default class DHAction extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { @@ -32,3 +32,92 @@ export default class DaggerheartAction extends foundry.abstract.DataModel { }; } } + +const fields = foundry.data.fields; + +export class DHBaseAction extends foundry.abstract.DataModel { + static defineSchema() { + return { + _id: new fields.DocumentIdField(), + type: new fields.StringField({ blank: false, required: true, readOnly: true, initial: () => '' }), + name: new fields.StringField({ initial: 'New Action' }), + // description: new fields.StringField({}), + // shortDescription: new fields.StringField({}), + cost: new fields.SchemaField({ + type: new fields.StringField({ choices: SYSTEM.GENERAL.abilityCosts, nullable: true, initial: null }), + value: new fields.NumberField({ nullable: true, initial: null }) + }), + uses: new fields.SchemaField({ + value: new fields.NumberField({ nullable: true, initial: null }), + max: new fields.NumberField({ nullable: true, initial: null }), + recovery: new fields.StringField({ + // choices: SYSTEM.ACTIONS.targetTypes, + // initial: SYSTEM.ACTIONS.targetTypes.other.id + }) + }), + duration: new fields.SchemaField({ + value: new fields.NumberField({ nullable: true, initial: null }), + units: new fields.StringField({required: true, blank: false, initial: "instant"}) + }), + target: new fields.SchemaField({ + type: new fields.StringField({ + choices: SYSTEM.ACTIONS.targetTypes, + initial: SYSTEM.ACTIONS.targetTypes.other.id + }) + }) + } + } +} + +export class DHAttackAction extends DHBaseAction { + static defineSchema() { + return { + ...super.defineSchema(), + attack: new fields.SchemaField({}), + damage: new fields.SchemaField({}) + } + } +} + +export class DHDamageAction extends DHBaseAction { + static defineSchema() { + return { + ...super.defineSchema(), + damage: new fields.SchemaField({}) + } + } +} + +export class DHHealingAction extends DHBaseAction { + static defineSchema() { + return { + ...super.defineSchema(), + healing: new fields.SchemaField({}) + } + } +} + +export class DHSummonAction extends DHBaseAction { + static defineSchema() { + return { + ...super.defineSchema(), + healing: new fields.SchemaField({}) + } + } +} + +export class DHEffectAction extends DHBaseAction { + static defineSchema() { + return { + ...super.defineSchema() + } + } +} + +export class DHMacroAction extends DHBaseAction { + static defineSchema() { + return { + ...super.defineSchema() + } + } +} diff --git a/module/data/item/domainCard.mjs b/module/data/item/domainCard.mjs index 6986708f..c4a99c1d 100644 --- a/module/data/item/domainCard.mjs +++ b/module/data/item/domainCard.mjs @@ -1,4 +1,4 @@ -import DaggerheartAction from "../action.mjs"; +import DHAction from "../action.mjs"; import BaseDataItem from "./base.mjs"; export default class DHDomainCard extends BaseDataItem { @@ -22,7 +22,7 @@ export default class DHDomainCard extends BaseDataItem { type: new fields.StringField({ choices: SYSTEM.DOMAIN.cardTypes, required: true, blank: true}), foundation: new fields.BooleanField({ initial: false }), inVault: new fields.BooleanField({ initial: false }), - actions: new fields.ArrayField(new fields.EmbeddedDataField(DaggerheartAction)) + actions: new fields.ArrayField(new fields.EmbeddedDataField(DHAction)) }; } } diff --git a/module/data/item/feature.mjs b/module/data/item/feature.mjs index b14c98da..8199ea40 100644 --- a/module/data/item/feature.mjs +++ b/module/data/item/feature.mjs @@ -1,5 +1,5 @@ import { getTier } from '../../helpers/utils.mjs'; -import DaggerheartAction from '../action.mjs'; +import DHAction from '../action.mjs'; import BaseDataItem from './base.mjs'; export default class DHFeature extends BaseDataItem { @@ -92,7 +92,7 @@ export default class DHFeature extends BaseDataItem { }) }) ), - actions: new fields.ArrayField(new fields.EmbeddedDataField(DaggerheartAction)) + actions: new fields.ArrayField(new fields.EmbeddedDataField(DHAction)) }; }