Add the ability to create custom items

This commit is contained in:
Oliver-Akins 2024-02-04 22:05:44 -07:00
parent 23dd021df6
commit 83039c6144
9 changed files with 118 additions and 4 deletions

View file

@ -1,4 +1,5 @@
// Data Models
import { DescribedItemData } from "./models/Item/DescribedItemData.mjs";
import { AspectItemData } from "./models/Item/Aspect.mjs";
import { SpellItemData } from "./models/Item/Spell.mjs";
import { PlayerData } from "./models/Actor/Player.mjs";
@ -11,13 +12,14 @@ import { ActorHandler } from "./documents/Actor/Handler.mjs";
import { ItemHandler } from "./documents/Item/Handler.mjs";
// Item Sheets
import { SpellSheet } from "./sheets/Items/SpellSheet.mjs";
import { CustomItemSheet } from "./sheets/Items/CustomItemSheet.mjs";
import { AspectSheet } from "./sheets/Items/AspectSheet.mjs";
import { SpellSheet } from "./sheets/Items/SpellSheet.mjs";
import { PetSheet } from "./sheets/Items/PetSheet.mjs";
// Actor Sheets
import { PlayerSheet } from "./sheets/PlayerSheet.mjs";
import { BasicSyncSheet } from "./sheets/SyncVariations/BasicSyncSheet.mjs";
import { PlayerSheet } from "./sheets/PlayerSheet.mjs";
import { MobSheet } from "./sheets/MobSheet.mjs";
// Utility imports
@ -39,6 +41,7 @@ Hooks.once(`init`, async () => {
CONFIG.Actor.dataModels.player = PlayerData;
CONFIG.Actor.dataModels.sync = SyncData;
CONFIG.Actor.dataModels.mob = MobData;
CONFIG.Item.dataModels.custom = DescribedItemData;
CONFIG.Item.dataModels.aspect = AspectItemData;
CONFIG.Item.dataModels.spell = SpellItemData;
CONFIG.Item.dataModels.pet = PetItemData;
@ -77,8 +80,12 @@ Hooks.once(`init`, async () => {
Items.registerSheet("dotdungeon", PetSheet, {
makeDefault: true,
types: ["pet"],
lable: "dotdungeon.sheet-names.PetSheet"
label: "dotdungeon.sheet-names.PetSheet"
});
Items.registerSheet("dotdungeon", CustomItemSheet, {
makeDefault: true,
label: "dotdungeon.sheet-names.CustomItemSheet"
})
hbs.registerHandlebarsHelpers();

View file

@ -4,13 +4,21 @@ export class CommonItemData extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
quantity: new fields.NumberField({
initial: 1,
min: 0,
nullable: false,
integer: true,
}),
buy: new fields.NumberField({
initial: null,
nullable: true,
integer: true,
}),
usage_cost: new fields.NumberField({
initial: null,
nullable: true,
integer: true,
}),
tier: new fields.StringField({
initial: `simple`,

View file

@ -0,0 +1,21 @@
import { GenericItemSheet } from "./GenericItemSheet.mjs";
export class CustomItemSheet extends GenericItemSheet {
static get defaultOptions() {
let opts = mergeObject(
super.defaultOptions,
{
template: `systems/dotdungeon/templates/items/custom.hbs`,
width: 280,
height: 340,
}
);
opts.classes.push(`dotdungeon`);
return opts;
};
async getData() {
const ctx = await super.getData();
return ctx;
};
};