diff --git a/module/dotdungeon.mjs b/module/dotdungeon.mjs index e99e536..b4c597f 100644 --- a/module/dotdungeon.mjs +++ b/module/dotdungeon.mjs @@ -1,6 +1,7 @@ // Data Models import { DescribedItemData } from "./models/Item/DescribedItemData.mjs"; import { CommonItemData } from "./models/Item/CommonItemData.mjs"; +import { WeaponItemData } from "./models/Item/Weapon.mjs"; import { AspectItemData } from "./models/Item/Aspect.mjs"; import { SpellItemData } from "./models/Item/Spell.mjs"; import { PlayerData } from "./models/Actor/Player.mjs"; @@ -46,6 +47,7 @@ Hooks.once(`init`, async () => { CONFIG.Item.dataModels.untyped = DescribedItemData; CONFIG.Item.dataModels.material = CommonItemData; CONFIG.Item.dataModels.foil = DescribedItemData; + CONFIG.Item.dataModels.weapon = WeaponItemData; CONFIG.Item.dataModels.aspect = AspectItemData; CONFIG.Item.dataModels.spell = SpellItemData; CONFIG.Item.dataModels.pet = PetItemData; diff --git a/module/handlebars.mjs b/module/handlebars.mjs index ad671fe..596f9dd 100644 --- a/module/handlebars.mjs +++ b/module/handlebars.mjs @@ -29,6 +29,7 @@ export const partials = [ `actors/char-sheet/v2/partials/inventory/items/material.v2.pc.hbs`, `actors/char-sheet/v2/partials/inventory/items/untyped.v2.pc.hbs`, `actors/char-sheet/v2/partials/inventory/items/aspect.v2.pc.hbs`, + `actors/char-sheet/v2/partials/inventory/items/weapon.v2.pc.hbs`, ]; export const preAliasedPartials = { diff --git a/module/models/Item/Weapon.mjs b/module/models/Item/Weapon.mjs new file mode 100644 index 0000000..5b9cf67 --- /dev/null +++ b/module/models/Item/Weapon.mjs @@ -0,0 +1,24 @@ +import { DescribedItemData } from "./DescribedItemData.mjs"; +import DOTDUNGEON from "../../config.mjs"; + +export class WeaponItemData extends DescribedItemData { + static defineSchema() { + const fields = foundry.data.fields; + return mergeObject(super.defineSchema(), { + damage: new fields.StringField({ + initial: null, + nullable: true, + blank: true, + options: DOTDUNGEON.damageTypes, + }), + ranged: new fields.BooleanField({ initial: false, }), + scoped: new fields.BooleanField({ initial: false, }), + ammo: new fields.StringField({ + initial: null, + nullable: true, + blank: true, + options: DOTDUNGEON.ammoTypes, + }), + }); + }; +}; diff --git a/module/sheets/Actors/PC/PlayerSheetV2.mjs b/module/sheets/Actors/PC/PlayerSheetV2.mjs index d7a7f3d..ded268e 100644 --- a/module/sheets/Actors/PC/PlayerSheetV2.mjs +++ b/module/sheets/Actors/PC/PlayerSheetV2.mjs @@ -118,7 +118,7 @@ export class PlayerSheetv2 extends GenericActorSheet { return stats; }; - _itemTypesHidden = new Set([`weapon`, `armour`, `equipment`, `foil`, `structure`, `service`]); + _itemTypesHidden = new Set([`pet`, `armour`, `equipment`, `foil`, `structure`, `service`]); toggleItemFilter(filterName) { if (this._itemTypesHidden.has(filterName)) { this._itemTypesHidden.delete(filterName); diff --git a/styles/sheets/actor/char-sheet/v2/pages/inventory.scss b/styles/sheets/actor/char-sheet/v2/pages/inventory.scss index 7e4ac16..514ff77 100644 --- a/styles/sheets/actor/char-sheet/v2/pages/inventory.scss +++ b/styles/sheets/actor/char-sheet/v2/pages/inventory.scss @@ -186,7 +186,7 @@ } } - .untyped, .aspect { + .untyped, .aspect, .weapon { @include material.elevate(1); padding: 8px; border-radius: 4px; @@ -291,4 +291,10 @@ border-radius: 4px; } } -} \ No newline at end of file + + .weapon { + &__description { + grid-row: span 2; + } + } +} diff --git a/templates/actors/char-sheet/v2/partials/inventory/items/weapon.v2.pc.hbs b/templates/actors/char-sheet/v2/partials/inventory/items/weapon.v2.pc.hbs new file mode 100644 index 0000000..5eeab46 --- /dev/null +++ b/templates/actors/char-sheet/v2/partials/inventory/items/weapon.v2.pc.hbs @@ -0,0 +1,117 @@ +
+
+ +

+ {{item.name}} +

+
+ (x {{item.system.quantity}}) +
+
+ {{#if (dd-set-has meta.expanded item.uuid)}} +
+
+
+ + +
+
+ Type: + + {{ifThen item.system.ranged "Ranged" "Melee"}} + +
+
+ Damage: + + {{dd-empty-state item.system.damage}} + +
+ +
+ Tier: + {{dd-i18n (concat "dotdungeon.rarity." item.system.tier)}} +
+
+ {{ifThen item.system.scoped "Scoped" "No Scope"}} +
+
+ Ammo: + + {{dd-empty-state item.system.ammo}} + +
+ +

+ {{#if item.system.description}} + {{item.system.description}} + {{else}} + + This item hasn't been described yet... + + {{/if}} +

+ +
+ {{/if}} +