136 lines
3.1 KiB
JavaScript
136 lines
3.1 KiB
JavaScript
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: ""
|
|
})
|
|
|
|
// Attack and power
|
|
schema.attackRoll = new fields.StringField({
|
|
required: true,
|
|
initial: ""
|
|
})
|
|
|
|
schema.powerRoll = 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"]
|
|
}
|