Implements inventory system, wip

This commit is contained in:
2026-05-19 22:23:31 +02:00
parent 68e3d35af1
commit 4ff46865c2
29 changed files with 1317 additions and 35 deletions
+4 -1
View File
@@ -10,4 +10,7 @@ export { default as PrismRPGAbility } from "./ability.mjs"
export { default as PrismRPGEquipment } from "./equipment.mjs"
export { default as PrismRPGRace } from "./race.mjs"
export { default as PrismRPGClass } from "./class.mjs"
export { default as PrismRPGCharacterPath } from "./character-path.mjs"
export { default as PrismRPGCharacterPath } from "./character-path.mjs"
export { default as PrismRPGContainer } from "./container.mjs"
export { default as PrismRPGConsumable } from "./consumable.mjs"
export { default as PrismRPGLoot } from "./loot.mjs"
+15
View File
@@ -136,6 +136,21 @@ export default class PrismRPGCharacter extends foundry.abstract.TypeDataModel {
}, {}),
)
// Sub-attribute choices for movement rating and burden selectors
const subAttributeChoices = () =>
Object.values(SYSTEM.SUB_ATTRIBUTES).reduce((obj, s) => { obj[s.id] = s.label; return obj }, {})
schema.movementRating = new fields.SchemaField({
subAttribute: new fields.StringField({ required: true, initial: "stamina", choices: subAttributeChoices }),
other: new fields.NumberField({ ...requiredInteger, initial: 0 }),
reduction: new fields.NumberField({ ...requiredInteger, initial: 0 })
})
schema.burden = new fields.SchemaField({
subAttribute: new fields.StringField({ required: true, initial: "vigor", choices: subAttributeChoices }),
other: new fields.NumberField({ ...requiredInteger, initial: 0 })
})
return schema
}
+19
View File
@@ -0,0 +1,19 @@
export default class PrismRPGConsumable 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: true, textSearch: true })
schema.usesMax = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 })
schema.uses = new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 })
schema.encLoad = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.cost = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.notes = new fields.HTMLField({ required: true })
return schema
}
/** @override */
static LOCALIZATION_PREFIXES = ["PRISMRPG.Consumable"]
}
+19
View File
@@ -0,0 +1,19 @@
export default class PrismRPGContainer 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: true, textSearch: true })
schema.packBurden = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.encLoad = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.cost = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.equipped = new fields.BooleanField({ required: true, initial: false })
schema.notes = new fields.HTMLField({ required: true })
return schema
}
/** @override */
static LOCALIZATION_PREFIXES = ["PRISMRPG.Container"]
}
+1
View File
@@ -12,6 +12,7 @@ export default class PrismRPGEquipment extends foundry.abstract.TypeDataModel {
schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 })
schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.money = new fields.StringField({ required: true, initial: "coppercoin", choices: SYSTEM.MONEY })
schema.equipped = new fields.BooleanField({ required: true, initial: false })
// Kit properties
schema.isKit = new fields.BooleanField({
+17
View File
@@ -0,0 +1,17 @@
export default class PrismRPGLoot 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: true, textSearch: true })
schema.encLoad = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.cost = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.notes = new fields.HTMLField({ required: true })
return schema
}
/** @override */
static LOCALIZATION_PREFIXES = ["PRISMRPG.Loot"]
}
+9
View File
@@ -46,6 +46,15 @@ export default class PrismRPGRace extends foundry.abstract.TypeDataModel {
label: "Language"
})
schema.baseBurden = new fields.NumberField({
required: true,
nullable: false,
integer: true,
initial: 0,
min: 0,
label: "Base Burden"
})
// Racial Passive
schema.racialPassive = new fields.StringField({
required: true,