Add roll windows from actor sheet
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
import OathHammerActorSheet from "./base-actor-sheet.mjs"
|
||||
import { SYSTEM } from "../../config/system.mjs"
|
||||
import OathHammerRollDialog from "../roll-dialog.mjs"
|
||||
import OathHammerWeaponDialog from "../weapon-dialog.mjs"
|
||||
import OathHammerSpellDialog from "../spell-dialog.mjs"
|
||||
import OathHammerMiracleDialog from "../miracle-dialog.mjs"
|
||||
import { rollSkillCheck, rollWeaponAttack, rollWeaponDamage, rollSpellCast, rollMiracleCast } from "../../rolls.mjs"
|
||||
|
||||
export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
||||
/** @override */
|
||||
@@ -13,10 +18,15 @@ export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
||||
contentClasses: ["character-content"],
|
||||
},
|
||||
actions: {
|
||||
createWeapon: OathHammerCharacterSheet.#onCreateWeapon,
|
||||
createSpell: OathHammerCharacterSheet.#onCreateSpell,
|
||||
createMiracle: OathHammerCharacterSheet.#onCreateMiracle,
|
||||
createWeapon: OathHammerCharacterSheet.#onCreateWeapon,
|
||||
createSpell: OathHammerCharacterSheet.#onCreateSpell,
|
||||
createMiracle: OathHammerCharacterSheet.#onCreateMiracle,
|
||||
createEquipment: OathHammerCharacterSheet.#onCreateEquipment,
|
||||
rollSkill: OathHammerCharacterSheet.#onRollSkill,
|
||||
attackWeapon: OathHammerCharacterSheet.#onAttackWeapon,
|
||||
damageWeapon: OathHammerCharacterSheet.#onDamageWeapon,
|
||||
castSpell: OathHammerCharacterSheet.#onCastSpell,
|
||||
castMiracle: OathHammerCharacterSheet.#onCastMiracle,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -57,9 +67,8 @@ export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.tabs = this.#getTabs()
|
||||
// lineage/class/experience available to all parts (header + identity tab)
|
||||
// class/experience available to all parts (header + identity tab)
|
||||
const doc = this.document
|
||||
context.lineage = doc.itemTypes.lineage?.[0] ?? null
|
||||
context.characterClass = doc.itemTypes["class"]?.[0] ?? null
|
||||
return context
|
||||
}
|
||||
@@ -236,4 +245,52 @@ export default class OathHammerCharacterSheet extends OathHammerActorSheet {
|
||||
static #onCreateEquipment(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("OATHHAMMER.NewItem.Equipment"), type: "equipment" }])
|
||||
}
|
||||
|
||||
static async #onRollSkill(event, target) {
|
||||
const skillKey = target.dataset.skill
|
||||
if (!skillKey) return
|
||||
const result = await OathHammerRollDialog.prompt(this.document, skillKey)
|
||||
if (!result) return
|
||||
await rollSkillCheck(this.document, skillKey, result.dv, result)
|
||||
}
|
||||
|
||||
static async #onAttackWeapon(event, target) {
|
||||
const weaponId = target.dataset.itemId
|
||||
if (!weaponId) return
|
||||
const weapon = this.document.items.get(weaponId)
|
||||
if (!weapon) return
|
||||
const opts = await OathHammerWeaponDialog.promptAttack(this.document, weapon)
|
||||
if (!opts) return
|
||||
await rollWeaponAttack(this.document, weapon, opts)
|
||||
}
|
||||
|
||||
static async #onDamageWeapon(event, target) {
|
||||
const weaponId = target.dataset.itemId
|
||||
if (!weaponId) return
|
||||
const weapon = this.document.items.get(weaponId)
|
||||
if (!weapon) return
|
||||
const opts = await OathHammerWeaponDialog.promptDamage(this.document, weapon, 0)
|
||||
if (!opts) return
|
||||
await rollWeaponDamage(this.document, weapon, opts)
|
||||
}
|
||||
|
||||
static async #onCastSpell(event, target) {
|
||||
const spellId = target.dataset.itemId
|
||||
if (!spellId) return
|
||||
const spell = this.document.items.get(spellId)
|
||||
if (!spell) return
|
||||
const opts = await OathHammerSpellDialog.prompt(this.document, spell)
|
||||
if (!opts) return
|
||||
await rollSpellCast(this.document, spell, opts)
|
||||
}
|
||||
|
||||
static async #onCastMiracle(event, target) {
|
||||
const miracleId = target.dataset.itemId
|
||||
if (!miracleId) return
|
||||
const miracle = this.document.items.get(miracleId)
|
||||
if (!miracle) return
|
||||
const opts = await OathHammerMiracleDialog.prompt(this.document, miracle)
|
||||
if (!opts) return
|
||||
await rollMiracleCast(this.document, miracle, opts)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user