diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 38d0315..6891427 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -205,12 +205,33 @@ export default class LethalFantasyActor extends Actor { case "spell-power": case "miracle-attack": case "miracle-power": - rollTarget = this.items.find((i) => (i.type === "miracle" || i.type == "spell") && i.id === rollKey) + rollTarget = foundry.utils.duplicate(this.items.find((i) => (i.type === "miracle" || i.type == "spell") && i.id === rollKey)) rollTarget.rollKey = rollKey // Read damage tier from combatant currentAction if available const activeCombatant = game.combat?.combatants?.find(c => c.actorId === this.id) const currentAction = activeCombatant?.getFlag(SYSTEM.id, "currentAction") - const damageTier = currentAction?.damageTier || "standard" + let damageTier = currentAction?.damageTier + // No tier from combat action — prompt the user if multiple tiers exist + if (!damageTier) { + const tierMap = { standard: "damageDice", overpowered: "damageDiceOverpowered", overpowered2: "damageDiceOverpowered2" } + const available = Object.entries(tierMap).filter(([k, v]) => rollTarget.system?.[v]) + if (available.length > 1) { + const buttons = available.map(([id]) => ({ + action: id, + label: id.charAt(0).toUpperCase() + id.slice(1), + callback: () => id, + })) + damageTier = await foundry.applications.api.DialogV2.wait({ + window: { title: "Choose spell tier" }, + classes: ["lethalfantasy"], + content: `
Select the power level for ${rollTarget.name}:
`, + buttons, + rejectClose: false, + }) || "standard" + } else { + damageTier = "standard" + } + } rollTarget.damageTier = damageTier if (rollType === "spell-attack" || rollType === "spell-power") { const tierCostMap = { standard: "cost", overpowered: "costOverpowered", overpowered2: "costOverpowered2" }