Fix in creature+actor sheet

This commit is contained in:
2026-06-25 22:08:42 +02:00
parent f3c9a531e1
commit 393f059d17
8 changed files with 184 additions and 16 deletions
+59 -2
View File
@@ -20,7 +20,11 @@ export default class AwECreatureSheet extends AwEActorSheet {
createKit: AwECreatureSheet.#onCreateKit,
createEquipment: AwECreatureSheet.#onCreateEquipment,
rollWeapon: AwECreatureSheet.#onRollWeapon,
rollDamage: AwECreatureSheet.#onRollDamage
rollDamage: AwECreatureSheet.#onRollDamage,
useAbility: AwECreatureSheet.#onUseAbility,
toggleCondition: AwECreatureSheet.#onToggleCondition,
addTrait: AwECreatureSheet.#onAddTrait,
removeTrait: AwECreatureSheet.#onRemoveTrait
}
}
@@ -86,7 +90,8 @@ export default class AwECreatureSheet extends AwEActorSheet {
name: item.name,
img: item.img,
system: item.system,
costLabel: game.i18n.localize(SYSTEM.ABILITY_COST[item.system.cost]?.label ?? item.system.cost)
costLabel: game.i18n.localize(SYSTEM.ABILITY_COST[item.system.cost]?.label ?? item.system.cost),
usedToday: item.system.usedToday
}))
context.skills = this.document.itemTypes.skill.map(item => ({
id: item.id,
@@ -102,6 +107,19 @@ export default class AwECreatureSheet extends AwEActorSheet {
img: item.img,
system: item.system
}))
const doc = this.document
context.conditions = Object.values(SYSTEM.CONDITIONS).map(c => ({
...c,
label: game.i18n.localize(c.label),
img: `systems/fvtt-adventures-with-emmy/assets/conditions/${c.id}.svg`,
active: doc.statuses.has(c.id)
}))
context.inhibitedActive = doc.statuses.has("inhibited")
context.vulnerableActive = doc.statuses.has("vulnerable")
context.inhibitedPenalty = doc.system.inhibitedPenalty
context.vulnerablePenalty = doc.system.vulnerablePenalty
context.hasConditionPenalties = context.inhibitedActive || context.vulnerableActive
context.traitSuggestions = SYSTEM.TRAITS
break
case "inventory":
context.tab = context.tabs.inventory
@@ -135,6 +153,20 @@ export default class AwECreatureSheet extends AwEActorSheet {
return super._onDropItem(item)
}
/** @override */
_onRender(context, options) {
super._onRender(context, options)
this.element.querySelectorAll("input.new-tag[data-action]").forEach(input => {
input.addEventListener("keydown", event => {
if (event.key !== "Enter") return
event.preventDefault()
const actionName = input.dataset.action
const handler = this.options.actions?.[actionName]
if (handler) handler.call(this, event, input)
})
})
}
static #onCreateAbility(event, target) {
const type = "ability"
this.document.createEmbeddedDocuments("Item", [{ name: CONFIG.Item.documentClass.defaultName({ type }), type }])
@@ -165,6 +197,16 @@ export default class AwECreatureSheet extends AwEActorSheet {
this.document.createEmbeddedDocuments("Item", [{ name: CONFIG.Item.documentClass.defaultName({ type }), type }])
}
static async #onUseAbility(event, target) {
const itemId = target.closest("[data-item-id]")?.dataset.itemId
await this.document.useAbility(itemId)
}
static async #onToggleCondition(event, target) {
const conditionId = target.dataset.conditionId
await this.document.toggleStatusEffect(conditionId)
}
static async #onRollWeapon(event, target) {
const itemId = target.closest("[data-item-id]")?.dataset.itemId
const item = this.document.items.get(itemId)
@@ -178,4 +220,19 @@ export default class AwECreatureSheet extends AwEActorSheet {
if (!item) return
await this.document.rollDamage(item)
}
static async #onAddTrait(event, target) {
const value = target.value.trim()
if (!value) return
const current = foundry.utils.getProperty(this.document, "system.traits") ?? []
await this.document.update({ "system.traits": [...current, value] })
target.value = ""
}
static async #onRemoveTrait(event, target) {
const index = Number(target.dataset.index)
const current = [...(foundry.utils.getProperty(this.document, "system.traits") ?? [])]
current.splice(index, 1)
await this.document.update({ "system.traits": current })
}
}