mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-16 13:41:07 +01:00
Weapons and Armor are now stored like any other item on the PC. Added equip/unequip logic.
This commit is contained in:
parent
71319f2b74
commit
8e92b5f6d9
13 changed files with 121 additions and 70 deletions
|
|
@ -94,7 +94,9 @@
|
||||||
"LacksDomain": "Your character doesn't have the domain of the card!",
|
"LacksDomain": "Your character doesn't have the domain of the card!",
|
||||||
"MaxLoadoutReached": "You can't have any more domain cards at this level!",
|
"MaxLoadoutReached": "You can't have any more domain cards at this level!",
|
||||||
"DuplicateDomainCard": "You already have a domain card with that name!",
|
"DuplicateDomainCard": "You already have a domain card with that name!",
|
||||||
"ActionRequiresTarget": "The action requires at least one target"
|
"ActionRequiresTarget": "The action requires at least one target",
|
||||||
|
"TwoHandedWeaponEquipped": "You have a two-handed weapon equipped",
|
||||||
|
"SecondaryWeaponEquipped": "You have a secondary weapon equipped"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"General": {
|
"General": {
|
||||||
|
|
@ -843,9 +845,10 @@
|
||||||
"InventoryWeapon": "Inventory Weapon"
|
"InventoryWeapon": "Inventory Weapon"
|
||||||
},
|
},
|
||||||
"InventoryTab": {
|
"InventoryTab": {
|
||||||
"EquipmentTitle": "Equipment",
|
|
||||||
"ConsumableTitle": "Consumables",
|
"ConsumableTitle": "Consumables",
|
||||||
"MiscellaneousTitle": "Miscellaneous",
|
"MiscellaneousTitle": "Miscellaneous",
|
||||||
|
"WeaponsTitle": "Weapons",
|
||||||
|
"ArmorsTitle": "Armors",
|
||||||
"QuantityTitle": "Quantity"
|
"QuantityTitle": "Quantity"
|
||||||
},
|
},
|
||||||
"Weapons": {
|
"Weapons": {
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,6 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
useFeature: this.useFeature,
|
useFeature: this.useFeature,
|
||||||
takeShortRest: this.takeShortRest,
|
takeShortRest: this.takeShortRest,
|
||||||
takeLongRest: this.takeLongRest,
|
takeLongRest: this.takeLongRest,
|
||||||
removeActiveItem: this.removeActiveItem,
|
|
||||||
removeInventoryWeapon: this.removeInventoryWeapon,
|
|
||||||
addMiscItem: this.addMiscItem,
|
addMiscItem: this.addMiscItem,
|
||||||
deleteItem: this.deleteItem,
|
deleteItem: this.deleteItem,
|
||||||
addScar: this.addScar,
|
addScar: this.addScar,
|
||||||
|
|
@ -63,18 +61,12 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
useAbility: this.useAbility,
|
useAbility: this.useAbility,
|
||||||
useAdvancementCard: this.useAdvancementCard,
|
useAdvancementCard: this.useAdvancementCard,
|
||||||
useAdvancementAbility: this.useAdvancementAbility,
|
useAdvancementAbility: this.useAdvancementAbility,
|
||||||
selectFeatureSet: this.selectFeatureSet
|
selectFeatureSet: this.selectFeatureSet,
|
||||||
|
toggleEquipItem: this.toggleEquipItem
|
||||||
},
|
},
|
||||||
window: {
|
window: {
|
||||||
//frame: boolean;
|
|
||||||
//positioned: boolean;
|
|
||||||
//title: string;
|
|
||||||
//icon: string | false;
|
|
||||||
//controls: ApplicationHeaderControlsEntry[];
|
|
||||||
minimizable: false,
|
minimizable: false,
|
||||||
resizable: true
|
resizable: true
|
||||||
//contentTag: string;
|
|
||||||
//contentClasses: string[];
|
|
||||||
},
|
},
|
||||||
form: {
|
form: {
|
||||||
handler: this.updateForm,
|
handler: this.updateForm,
|
||||||
|
|
@ -280,6 +272,20 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
quantity: game.i18n.localize('DAGGERHEART.Sheets.PC.InventoryTab.QuantityTitle')
|
quantity: game.i18n.localize('DAGGERHEART.Sheets.PC.InventoryTab.QuantityTitle')
|
||||||
},
|
},
|
||||||
items: this.document.items.filter(x => x.type === 'miscellaneous')
|
items: this.document.items.filter(x => x.type === 'miscellaneous')
|
||||||
|
},
|
||||||
|
weapons: {
|
||||||
|
titles: {
|
||||||
|
name: game.i18n.localize('DAGGERHEART.Sheets.PC.InventoryTab.WeaponsTitle'),
|
||||||
|
quantity: game.i18n.localize('DAGGERHEART.Sheets.PC.InventoryTab.QuantityTitle')
|
||||||
|
},
|
||||||
|
items: this.document.items.filter(x => x.type === 'weapon')
|
||||||
|
},
|
||||||
|
armor: {
|
||||||
|
titles: {
|
||||||
|
name: game.i18n.localize('DAGGERHEART.Sheets.PC.InventoryTab.ArmorsTitle'),
|
||||||
|
quantity: game.i18n.localize('DAGGERHEART.Sheets.PC.InventoryTab.QuantityTitle')
|
||||||
|
},
|
||||||
|
items: this.document.items.filter(x => x.type === 'armor')
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -690,7 +696,7 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
(await game.packs.get('daggerheart.playtest-communities'))?.render(true);
|
(await game.packs.get('daggerheart.playtest-communities'))?.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async viewObject(button) {
|
static async viewObject(_, button) {
|
||||||
const object = await fromUuid(button.dataset.value);
|
const object = await fromUuid(button.dataset.value);
|
||||||
if (!object) return;
|
if (!object) return;
|
||||||
|
|
||||||
|
|
@ -712,18 +718,6 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
await this.minimize();
|
await this.minimize();
|
||||||
}
|
}
|
||||||
|
|
||||||
static async removeActiveItem(_, event) {
|
|
||||||
event.stopPropagation();
|
|
||||||
const item = await fromUuid(event.currentTarget.dataset.item);
|
|
||||||
await item.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
static async removeInventoryWeapon(_, event) {
|
|
||||||
event.stopPropagation();
|
|
||||||
const item = await fromUuid(event.currentTarget.dataset.item);
|
|
||||||
await item.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
static async addMiscItem() {
|
static async addMiscItem() {
|
||||||
const result = await this.document.createEmbeddedDocuments('Item', [
|
const result = await this.document.createEmbeddedDocuments('Item', [
|
||||||
{
|
{
|
||||||
|
|
@ -941,6 +935,57 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
this.render();
|
this.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async toggleEquipItem(_, button) {
|
||||||
|
const item = this.document.items.get(button.id);
|
||||||
|
if (item.system.equipped) {
|
||||||
|
await item.update({ 'system.equipped': false });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (item.type) {
|
||||||
|
case 'armor':
|
||||||
|
const currentArmor = this.document.system.armor;
|
||||||
|
if (currentArmor) {
|
||||||
|
await currentArmor.update({ 'system.equipped': false });
|
||||||
|
}
|
||||||
|
|
||||||
|
await item.update({ 'system.equipped': true });
|
||||||
|
break;
|
||||||
|
case 'weapon':
|
||||||
|
const currentWeapons = this.document.system.equippedWeapons;
|
||||||
|
if (item.system.secondary) {
|
||||||
|
if (
|
||||||
|
currentWeapons.primary &&
|
||||||
|
currentWeapons.primary.burden === SYSTEM.GENERAL.burden.twoHanded.value
|
||||||
|
) {
|
||||||
|
ui.notifications.error(
|
||||||
|
game.i18n.localize('DAGGERHEART.Notification.Error.TwoHandedWeaponEquipped')
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentWeapons.secondary) {
|
||||||
|
await this.document.items.get(currentWeapons.secondary.id).update({ 'system.equipped': false });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (currentWeapons.secondary && item.system.burden === SYSTEM.GENERAL.burden.twoHanded.value) {
|
||||||
|
ui.notifications.error(
|
||||||
|
game.i18n.localize('DAGGERHEART.Notification.Error.SecondaryWeaponEquipped')
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentWeapons.primary) {
|
||||||
|
await this.document.items.get(currentWeapons.primary.id).update({ 'system.equipped': false });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await item.update({ 'system.equipped': true });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
|
||||||
static async close(options) {
|
static async close(options) {
|
||||||
this.onVaultTab = false;
|
this.onVaultTab = false;
|
||||||
super.close(options);
|
super.close(options);
|
||||||
|
|
@ -984,14 +1029,17 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
const itemObject = await fromUuid(item.uuid);
|
const itemObject = await fromUuid(item.uuid);
|
||||||
switch (target) {
|
switch (target) {
|
||||||
case 'weapon-section':
|
case 'weapon-section':
|
||||||
if (itemObject.system.secondary && this.document.system.activeWeapons.burden === 'twoHanded') {
|
if (
|
||||||
|
itemObject.system.secondary &&
|
||||||
|
this.document.system.equippedWeapons.burden === 'twoHanded'
|
||||||
|
) {
|
||||||
ui.notifications.info(
|
ui.notifications.info(
|
||||||
game.i18n.localize('DAGGERHEART.Notification.Info.SecondaryEquipWhileTwohanded')
|
game.i18n.localize('DAGGERHEART.Notification.Info.SecondaryEquipWhileTwohanded')
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
} else if (
|
} else if (
|
||||||
itemObject.system.burden === 'twoHanded' &&
|
itemObject.system.burden === 'twoHanded' &&
|
||||||
this.document.system.activeWeapons.secondary
|
this.document.system.equippedWeapons.secondary
|
||||||
) {
|
) {
|
||||||
ui.notifications.info(
|
ui.notifications.info(
|
||||||
game.i18n.localize('DAGGERHEART.Notification.Info.TwohandedEquipWhileSecondary')
|
game.i18n.localize('DAGGERHEART.Notification.Info.TwohandedEquipWhileSecondary')
|
||||||
|
|
@ -1160,12 +1208,18 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
if (!element) return;
|
if (!element) return;
|
||||||
|
|
||||||
if (element.classList.contains('weapon-section')) {
|
if (element.classList.contains('weapon-section')) {
|
||||||
if (item.system.secondary && this.document.system.activeWeapons.burden === 'twoHanded') {
|
if (
|
||||||
|
item.system.secondary &&
|
||||||
|
this.document.system.equippedWeapons.burden === SYSTEM.GENERAL.burden.twoHanded.value
|
||||||
|
) {
|
||||||
ui.notifications.info(
|
ui.notifications.info(
|
||||||
game.i18n.localize('DAGGERHEART.Notification.Info.SecondaryEquipWhileTwohanded')
|
game.i18n.localize('DAGGERHEART.Notification.Info.SecondaryEquipWhileTwohanded')
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
} else if (item.system.burden === 'twoHanded' && this.document.system.activeWeapons.secondary) {
|
} else if (
|
||||||
|
item.system.burden === SYSTEM.GENERAL.burden.twoHanded.value &&
|
||||||
|
this.document.system.equippedWeapons.secondary
|
||||||
|
) {
|
||||||
ui.notifications.info(
|
ui.notifications.info(
|
||||||
game.i18n.localize('DAGGERHEART.Notification.Info.TwohandedEquipWhileSecondary')
|
game.i18n.localize('DAGGERHEART.Notification.Info.TwohandedEquipWhileSecondary')
|
||||||
);
|
);
|
||||||
|
|
@ -1173,10 +1227,10 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const existing =
|
const existing =
|
||||||
this.document.system.activeWeapons.primary && !item.system.secondary
|
this.document.system.equippedWeapons.primary && !item.system.secondary
|
||||||
? await fromUuid(this.document.system.activeWeapons.primary.uuid)
|
? await fromUuid(this.document.system.equippedWeapons.primary.uuid)
|
||||||
: this.document.system.activeWeapons.secondary && item.system.secondary
|
: this.document.system.equippedWeapons.secondary && item.system.secondary
|
||||||
? await fromUuid(this.document.system.activeWeapons.secondary.uuid)
|
? await fromUuid(this.document.system.equippedWeapons.secondary.uuid)
|
||||||
: null;
|
: null;
|
||||||
await existing?.delete();
|
await existing?.delete();
|
||||||
itemData.system.active = true;
|
itemData.system.active = true;
|
||||||
|
|
@ -1194,7 +1248,7 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
await existing?.delete();
|
await existing?.delete();
|
||||||
|
|
||||||
itemData.system.inventoryWeapon = 2;
|
itemData.system.inventoryWeapon = 2;
|
||||||
} else return [];
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.type === 'armor') {
|
if (item.type === 'armor') {
|
||||||
|
|
@ -1205,7 +1259,7 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
? await fromUuid(this.document.system.armor.uuid)
|
? await fromUuid(this.document.system.armor.uuid)
|
||||||
: null;
|
: null;
|
||||||
await existing?.delete();
|
await existing?.delete();
|
||||||
} else return;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const createdItem = await this._onDropItemCreate(itemData);
|
const createdItem = await this._onDropItemCreate(itemData);
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,14 @@ export const range = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const burden = {
|
export const burden = {
|
||||||
oneHanded: 'DAGGERHEART.Burden.OneHanded',
|
oneHanded: {
|
||||||
twoHanded: 'DAGGERHEART.Burden.TwoHanded'
|
value: 'oneHanded',
|
||||||
|
label: 'DAGGERHEART.Burden.OneHanded'
|
||||||
|
},
|
||||||
|
twoHanded: {
|
||||||
|
value: 'twoHanded',
|
||||||
|
label: 'DAGGERHEART.Burden.TwoHanded'
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const damageTypes = {
|
export const damageTypes = {
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ export default class DhpArmor extends foundry.abstract.TypeDataModel {
|
||||||
static defineSchema() {
|
static defineSchema() {
|
||||||
const fields = foundry.data.fields;
|
const fields = foundry.data.fields;
|
||||||
return {
|
return {
|
||||||
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
baseScore: new fields.NumberField({ initial: 1, integer: true }),
|
baseScore: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
feature: new fields.StringField({
|
feature: new fields.StringField({
|
||||||
choices: SYSTEM.ITEM.armorFeatures,
|
choices: SYSTEM.ITEM.armorFeatures,
|
||||||
|
|
@ -16,6 +17,7 @@ export default class DhpArmor extends foundry.abstract.TypeDataModel {
|
||||||
major: new fields.NumberField({ initial: 0, integer: true }),
|
major: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
severe: new fields.NumberField({ initial: 0, integer: true })
|
severe: new fields.NumberField({ initial: 0, integer: true })
|
||||||
}),
|
}),
|
||||||
|
quantity: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
description: new fields.HTMLField({})
|
description: new fields.HTMLField({})
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -242,15 +242,15 @@ export default class DhpPC extends foundry.abstract.TypeDataModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
get armor() {
|
get armor() {
|
||||||
return this.parent.items.find(x => x.type === 'armor');
|
return this.parent.items.find(x => x.type === 'armor' && x.system.equipped);
|
||||||
}
|
}
|
||||||
|
|
||||||
get activeWeapons() {
|
get equippedWeapons() {
|
||||||
const primaryWeapon = this.parent.items.find(
|
const primaryWeapon = this.parent.items.find(
|
||||||
x => x.type === 'weapon' && x.system.active && !x.system.secondary
|
x => x.type === 'weapon' && x.system.equipped && !x.system.secondary
|
||||||
);
|
);
|
||||||
const secondaryWeapon = this.parent.items.find(
|
const secondaryWeapon = this.parent.items.find(
|
||||||
x => x.type === 'weapon' && x.system.active && x.system.secondary
|
x => x.type === 'weapon' && x.system.equipped && x.system.secondary
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
primary: this.#weaponData(primaryWeapon),
|
primary: this.#weaponData(primaryWeapon),
|
||||||
|
|
@ -325,16 +325,19 @@ export default class DhpPC extends foundry.abstract.TypeDataModel {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Should not be done in data?
|
||||||
#weaponData(weapon) {
|
#weaponData(weapon) {
|
||||||
return weapon
|
return weapon
|
||||||
? {
|
? {
|
||||||
|
id: weapon.id,
|
||||||
name: weapon.name,
|
name: weapon.name,
|
||||||
trait: CONFIG.daggerheart.ACTOR.abilities[weapon.system.trait].name, //Should not be done in data?
|
trait: game.i18n.localize(CONFIG.daggerheart.ACTOR.abilities[weapon.system.trait].label),
|
||||||
range: CONFIG.daggerheart.GENERAL.range[weapon.system.range],
|
range: CONFIG.daggerheart.GENERAL.range[weapon.system.range],
|
||||||
damage: {
|
damage: {
|
||||||
value: weapon.system.damage.value,
|
value: weapon.system.damage.value,
|
||||||
type: CONFIG.daggerheart.GENERAL.damageTypes[weapon.system.damage.type]
|
type: CONFIG.daggerheart.GENERAL.damageTypes[weapon.system.damage.type]
|
||||||
},
|
},
|
||||||
|
burden: weapon.system.burden,
|
||||||
feature: CONFIG.daggerheart.ITEM.weaponFeatures[weapon.system.feature],
|
feature: CONFIG.daggerheart.ITEM.weaponFeatures[weapon.system.feature],
|
||||||
img: weapon.img,
|
img: weapon.img,
|
||||||
uuid: weapon.uuid
|
uuid: weapon.uuid
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ export default class DhpWeapon extends foundry.abstract.TypeDataModel {
|
||||||
static defineSchema() {
|
static defineSchema() {
|
||||||
const fields = foundry.data.fields;
|
const fields = foundry.data.fields;
|
||||||
return {
|
return {
|
||||||
active: new fields.BooleanField({ initial: false }),
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
inventoryWeapon: new fields.NumberField({ initial: null, nullable: true, integer: true }),
|
inventoryWeapon: new fields.NumberField({ initial: null, nullable: true, integer: true }),
|
||||||
secondary: new fields.BooleanField({ initial: false }),
|
secondary: new fields.BooleanField({ initial: false }),
|
||||||
trait: new fields.StringField({ choices: SYSTEM.ACTOR.abilities, integer: false }),
|
trait: new fields.StringField({ choices: SYSTEM.ACTOR.abilities, integer: false }),
|
||||||
|
|
|
||||||
|
|
@ -1250,7 +1250,7 @@
|
||||||
filter: drop-shadow(0 0 3px gold);
|
filter: drop-shadow(0 0 3px gold);
|
||||||
}
|
}
|
||||||
.daggerheart.sheet.pc div[data-application-part] .sheet-body .inventory-container .inventory-item-list .inventory-item .inventory-item-quantity {
|
.daggerheart.sheet.pc div[data-application-part] .sheet-body .inventory-container .inventory-item-list .inventory-item .inventory-item-quantity {
|
||||||
width: 48px;
|
width: 60px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1455,7 +1455,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.inventory-item-quantity {
|
.inventory-item-quantity {
|
||||||
width: 48px;
|
width: 60px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
<fieldset class="left-main-container armor-section active-item-section item-section">
|
<fieldset class="left-main-container armor-section active-item-section item-section">
|
||||||
<legend class="legend armor-container">
|
<legend class="legend armor-container">
|
||||||
<span>{{localize "DAGGERHEART.Sheets.PC.Armor.Title"}}</span>
|
<span>{{localize "DAGGERHEART.Sheets.PC.Armor.Title"}}</span>
|
||||||
{{#if armor}}
|
|
||||||
<div data-action="viewObject" data-value="{{armor.uuid}}" class="active-item-label-chip">
|
|
||||||
<img src="{{armor.img}}" />
|
|
||||||
<button data-action="removeActiveItem" data-item="{{armor.uuid}}"><i class="fa-solid fa-x"></i></button>
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
</legend>
|
</legend>
|
||||||
|
|
||||||
<div class="active-item-container">
|
<div class="active-item-container">
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,6 @@
|
||||||
<div class="inventory-weapon-section-first item-section">
|
<div class="inventory-weapon-section-first item-section">
|
||||||
<h2 class="armor-container">
|
<h2 class="armor-container">
|
||||||
{{localize "DAGGERHEART.Sheets.PC.Inventory.InventoryWeapon"}}
|
{{localize "DAGGERHEART.Sheets.PC.Inventory.InventoryWeapon"}}
|
||||||
{{#if weapons.first}}
|
|
||||||
<div data-action="viewObject" data-value="{{weapons.first.uuid}}" class="active-item-label-chip">
|
|
||||||
<img src="{{weapons.first.img}}" />
|
|
||||||
<button data-action="removeInventoryWeapon" data-item="{{weapons.first.uuid}}"><i class="fa-solid fa-x"></i></button>
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
</h2>
|
</h2>
|
||||||
<div class="active-item-container">
|
<div class="active-item-container">
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
|
|
|
||||||
|
|
@ -20,37 +20,29 @@
|
||||||
<h2 class="weapons-label-row">
|
<h2 class="weapons-label-row">
|
||||||
{{localize "DAGGERHEART.Sheets.PC.Weapons.PrimaryTitle"}}
|
{{localize "DAGGERHEART.Sheets.PC.Weapons.PrimaryTitle"}}
|
||||||
{{#if weapons.primary}}
|
{{#if weapons.primary}}
|
||||||
<div data-action="viewObject" data-value="{{weapons.primary.uuid}}" class="active-item-label-chip">
|
|
||||||
<img src="{{weapons.primary.img}}" />
|
|
||||||
<button data-action="removeActiveItem" data-item="{{weapons.primary.uuid}}"><i class="fa-solid fa-x"></i></button>
|
|
||||||
</div>
|
|
||||||
<img class="damage-roll" data-action="attackRoll" data-weapon="{{weapons.primary.uuid}}" src="icons/svg/d12-grey.svg" />
|
<img class="damage-roll" data-action="attackRoll" data-weapon="{{weapons.primary.uuid}}" src="icons/svg/d12-grey.svg" />
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</h2>
|
</h2>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<input value="{{weapons.primary.name}}" type="text" />
|
<input value="{{weapons.primary.name}}" type="text" />
|
||||||
<input value="{{localize weapons.primary.trait}}" type="text" />
|
<input value="{{localize weapons.primary.trait}}" type="text" />
|
||||||
<input value="{{localize weapons.primary.range.name}}" type="text" />
|
<input value="{{localize weapons.primary.range.label}}" type="text" />
|
||||||
<input value="{{weapons.primary.damage.value}} {{#if weapons.primary}}({{localize weapons.primary.damage.type.abbreviation}}){{/if}}" type="text" />
|
<input value="{{weapons.primary.damage.value}} {{#if weapons.primary}}({{localize weapons.primary.damage.type.abbreviation}}){{/if}}" type="text" />
|
||||||
</div>
|
</div>
|
||||||
<input value="{{localize weapons.primary.feature.name}} {{#if weapons.primary.feature}}({{localize weapons.primary.feature.description}}){{/if}}" type="text" />
|
<input value="{{localize weapons.primary.feature.label}} {{#if weapons.primary.feature}}({{localize weapons.primary.feature.description}}){{/if}}" type="text" />
|
||||||
</div>
|
</div>
|
||||||
<div class="active-item-container">
|
<div class="active-item-container">
|
||||||
<h2 class="weapons-label-row">
|
<h2 class="weapons-label-row">
|
||||||
{{localize "DAGGERHEART.Sheets.PC.Weapons.SecondaryTitle"}}
|
{{localize "DAGGERHEART.Sheets.PC.Weapons.SecondaryTitle"}}
|
||||||
{{#if weapons.secondary}}
|
{{#if weapons.secondary}}
|
||||||
<div data-action="viewObject" data-value="{{weapons.secondary.uuid}}" class="active-item-label-chip">
|
|
||||||
<img src="{{weapons.secondary.img}}" />
|
|
||||||
<button data-action="removeActiveItem" data-item="{{weapons.secondary.uuid}}"><i class="fa-solid fa-x"></i></button>
|
|
||||||
</div>
|
|
||||||
<img class="damage-roll" data-action="damageRoll" data-value="{{weapons.secondary.damage.value}}" src="icons/svg/d12-grey.svg" />
|
<img class="damage-roll" data-action="damageRoll" data-value="{{weapons.secondary.damage.value}}" src="icons/svg/d12-grey.svg" />
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</h2>
|
</h2>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<input value="{{weapons.secondary.name}}" type="text" />
|
<input value="{{weapons.secondary.name}}" type="text" />
|
||||||
<input value="{{localize weapons.secondary.trait}}" type="text" />
|
<input value="{{localize weapons.secondary.trait}}" type="text" />
|
||||||
<input value="{{localize weapons.secondary.range.name}}" type="text" />
|
<input value="{{localize weapons.secondary.range.label}}" type="text" />
|
||||||
<input value="{{weapons.secondary.damage.value}} {{#if weapons.secondary}}({{localize weapons.secondary.damage.type.abbreviation}}){{/if}}" type="text" />
|
<input value="{{weapons.secondary.damage.label}} {{#if weapons.secondary}}({{localize weapons.secondary.damage.type.abbreviation}}){{/if}}" type="text" />
|
||||||
</div>
|
</div>
|
||||||
<input value="{{localize weapons.secondary.feature.name}} {{#if weapons.secondary.feature}}({{localize weapons.secondary.feature.description}}){{/if}}" style="text-overflow: ellipsis;" type="text" />
|
<input value="{{localize weapons.secondary.feature.name}} {{#if weapons.secondary.feature}}({{localize weapons.secondary.feature.description}}){{/if}}" style="text-overflow: ellipsis;" type="text" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="body-section flex3">
|
<div class="body-section flex3">
|
||||||
{{> "systems/daggerheart/templates/sheets/parts/attributes.hbs" }}
|
{{> "systems/daggerheart/templates/sheets/parts/attributes.hbs" }}
|
||||||
{{> "systems/daggerheart/templates/sheets/parts/weapons.hbs" weapons=document.system.activeWeapons proficiency=document.system.proficiency.value }}
|
{{> "systems/daggerheart/templates/sheets/parts/weapons.hbs" weapons=document.system.equippedWeapons proficiency=document.system.proficiency.value }}
|
||||||
{{> "systems/daggerheart/templates/sheets/parts/armor.hbs" armor=document.system.armor }}
|
{{> "systems/daggerheart/templates/sheets/parts/armor.hbs" armor=document.system.armor }}
|
||||||
{{> "systems/daggerheart/templates/sheets/parts/inventory.hbs" weapons=document.system.inventoryWeapons }}
|
{{> "systems/daggerheart/templates/sheets/parts/inventory.hbs" weapons=document.system.inventoryWeapons }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,9 @@
|
||||||
{{item.name}}
|
{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<button data-action="toggleEquipItem" id="{{item.id}}">{{localize "Equip"}}</button>
|
||||||
|
</div>
|
||||||
<div class="inventory-item-quantity spaced">
|
<div class="inventory-item-quantity spaced">
|
||||||
<i data-action="itemQuantityDecrease" class="fa-solid fa-chevron-left icon-button {{#if (lte item.system.quantity 1)}}disabled{{/if}}"></i>
|
<i data-action="itemQuantityDecrease" class="fa-solid fa-chevron-left icon-button {{#if (lte item.system.quantity 1)}}disabled{{/if}}"></i>
|
||||||
<input type="text" data-item="system.quantity" value="{{item.system.quantity}}" data-dtype="Number" />
|
<input type="text" data-item="system.quantity" value="{{item.system.quantity}}" data-dtype="Number" />
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue