import { SYSTEM } from "../config/system.mjs" export default class PrismRPGMiracle extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields const requiredInteger = { required: true, nullable: false, integer: true } const schema = {} schema.description = new fields.HTMLField({ required: false, blank: true, initial: "", textSearch: true, }) // Miracle level (1-7+) schema.level = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1, max: 25, }) // Miracle type schema.miracleType = new fields.StringField({ required: true, initial: "combat", choices: SYSTEM.MIRACLE_TYPES }) // APC to pray schema.apc = new fields.NumberField({ ...requiredInteger, required: true, initial: 1, min: 0, label: "Action Point Cost" }) // Faith cost (if applicable in Prism RPG) schema.faithCost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0, label: "Faith Cost" }) // Divine favor required schema.divineFavor = new fields.StringField({ required: true, initial: "", label: "Divine Favor" }) // Components (Miracles have 'religious' component) schema.components = new fields.SchemaField({ verbal: new fields.BooleanField({ initial: false }), somatic: new fields.BooleanField({ initial: false }), material: new fields.BooleanField({ initial: false }), catalyst: new fields.BooleanField({ initial: false }), religious: new fields.BooleanField({ initial: true }) }) schema.materialComponent = new fields.StringField({ required: true, initial: "" }) schema.catalyst = new fields.StringField({ required: true, initial: "" }) // Prayer parameters schema.prayerTime = new fields.StringField({ required: true, initial: "1 action" }) schema.miracleRange = new fields.StringField({ required: true, initial: "Touch" }) schema.areaAffected = new fields.StringField({ required: true, initial: "Single target" }) schema.duration = new fields.StringField({ required: true, initial: "Instantaneous" }) schema.savingThrow = new fields.StringField({ required: true, initial: "" }) // Keywords schema.keywords = new fields.ArrayField( new fields.StringField() ) // Miracle augment (if applicable) schema.augment = new fields.StringField({ required: true, initial: "", label: "Miracle Augment" }) schema.augmentDescription = new fields.HTMLField({ required: true, initial: "", label: "Augment Description" }) return schema } /** @override */ static LOCALIZATION_PREFIXES = ["PRISMRPG.Miracle"] }