First adaptation pass
This commit is contained in:
+141
-20
@@ -1,4 +1,5 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
|
||||
export default class PrismRPGSpell extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
@@ -11,6 +12,8 @@ export default class PrismRPGSpell extends foundry.abstract.TypeDataModel {
|
||||
initial: "",
|
||||
textSearch: true,
|
||||
})
|
||||
|
||||
// Spell level (1-7+)
|
||||
schema.level = new fields.NumberField({
|
||||
...requiredInteger,
|
||||
initial: 1,
|
||||
@@ -18,28 +21,146 @@ export default class PrismRPGSpell extends foundry.abstract.TypeDataModel {
|
||||
max: 25,
|
||||
})
|
||||
|
||||
schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
|
||||
schema.memorized = new fields.BooleanField({ required: true, initial: false })
|
||||
|
||||
schema.components = new fields.SchemaField({
|
||||
verbal: new fields.BooleanField(),
|
||||
somatic: new fields.BooleanField(),
|
||||
catalyst: new fields.BooleanField(),
|
||||
material: new fields.BooleanField(),
|
||||
// Mana cost - base cost of the spell
|
||||
schema.manaCost = new fields.NumberField({
|
||||
...requiredInteger,
|
||||
required: true,
|
||||
initial: 1,
|
||||
min: 0,
|
||||
label: "Mana Cost"
|
||||
})
|
||||
|
||||
// Mana upkeep cost (for sustained spells)
|
||||
schema.manaUpkeep = new fields.NumberField({
|
||||
...requiredInteger,
|
||||
required: true,
|
||||
initial: 0,
|
||||
min: 0,
|
||||
label: "Mana Upkeep"
|
||||
})
|
||||
|
||||
// APC to cast
|
||||
schema.apc = new fields.NumberField({
|
||||
...requiredInteger,
|
||||
required: true,
|
||||
initial: 1,
|
||||
min: 0,
|
||||
label: "Action Point Cost"
|
||||
})
|
||||
|
||||
// Color/Hue of the spell (from the Prism)
|
||||
schema.color = new fields.StringField({
|
||||
required: true,
|
||||
initial: "violet",
|
||||
choices: Object.keys(SYSTEM.SPELL_COLORS || {}),
|
||||
label: "Spell Color"
|
||||
})
|
||||
|
||||
// Color effect description
|
||||
schema.colorEffect = new fields.HTMLField({
|
||||
required: true,
|
||||
initial: "",
|
||||
label: "Color Effect"
|
||||
})
|
||||
|
||||
// Spell Ascension - can be upcast
|
||||
schema.canAscend = new fields.BooleanField({
|
||||
required: true,
|
||||
initial: true,
|
||||
label: "Can Ascend"
|
||||
})
|
||||
|
||||
schema.ascensionEffect = new fields.HTMLField({
|
||||
required: true,
|
||||
initial: "",
|
||||
label: "Ascension Effect"
|
||||
})
|
||||
|
||||
// Memorized (prepared)
|
||||
schema.memorized = new fields.BooleanField({
|
||||
required: true,
|
||||
initial: false
|
||||
})
|
||||
|
||||
// Components
|
||||
schema.components = new fields.SchemaField({
|
||||
verbal: new fields.BooleanField({ initial: false }),
|
||||
somatic: new fields.BooleanField({ initial: false }),
|
||||
catalyst: new fields.BooleanField({ initial: false }),
|
||||
material: new fields.BooleanField({ initial: false }),
|
||||
})
|
||||
|
||||
schema.materialComponent = new fields.StringField({
|
||||
required: true,
|
||||
initial: ""
|
||||
})
|
||||
|
||||
schema.catalyst = new fields.StringField({
|
||||
required: true,
|
||||
initial: ""
|
||||
})
|
||||
|
||||
// Casting parameters
|
||||
schema.castingTime = new fields.StringField({
|
||||
required: true,
|
||||
initial: "1 action"
|
||||
})
|
||||
|
||||
schema.spellRange = new fields.StringField({
|
||||
required: true,
|
||||
initial: "30ft"
|
||||
})
|
||||
|
||||
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 damage
|
||||
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()
|
||||
)
|
||||
|
||||
// Legacy fields
|
||||
schema.cost = new fields.NumberField({
|
||||
...requiredInteger,
|
||||
required: true,
|
||||
initial: 0,
|
||||
min: 0
|
||||
})
|
||||
|
||||
schema.extraAetherPoints = new fields.StringField({
|
||||
required: true,
|
||||
initial: ""
|
||||
})
|
||||
|
||||
schema.criticalType = new fields.StringField({
|
||||
required: true,
|
||||
initial: "electric",
|
||||
choices: SYSTEM.SPELL_CRITICAL
|
||||
})
|
||||
schema.castingTime = new fields.StringField({ required: true, initial: "" })
|
||||
schema.spellRange = new fields.StringField({ required: true, initial: "" })
|
||||
schema.areaAffected = new fields.StringField({ required: true, initial: "" })
|
||||
schema.duration = new fields.StringField({ required: true, initial: "" })
|
||||
schema.savingThrow = new fields.StringField({ required: true, initial: "" })
|
||||
schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" })
|
||||
schema.materialComponent = new fields.StringField({ required: true, initial: "" })
|
||||
schema.catalyst = new fields.StringField({ required: true, initial: "" })
|
||||
schema.criticalType = new fields.StringField({ required: true, initial: "electric", choices : SYSTEM.SPELL_CRITICAL })
|
||||
|
||||
schema.attackRoll = new fields.StringField({ required: true, initial: "" })
|
||||
schema.powerRoll = new fields.StringField({ required: true, initial: "" })
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user