First adaptation pass

This commit is contained in:
2025-11-06 00:01:59 +01:00
parent 5b1fd847c2
commit 6b883f8126
112 changed files with 44142 additions and 953 deletions
+141 -20
View File
@@ -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
}