Renable compendiums

This commit is contained in:
2026-07-07 18:13:30 +02:00
parent 5734f3a5e3
commit 7e5fb0baa7
39 changed files with 781 additions and 155 deletions
+26 -8
View File
@@ -551,6 +551,15 @@ Hooks.on("createChatMessage", async (message) => {
const reroll = await LethalFantasyUtils.rerollConfiguredRoll(defenseRerollContext)
if (!reroll) continue
defenseRoll = reroll.options?.rollTotal || reroll.total || oldDefenseRoll
let d30result = reroll.options?.D30result
let d30message = reroll.options?.D30message
if (!d30result && !d30message) {
console.warn("Mulligan defense reroll: no D30 data in options", { hasOptions: !!reroll.options, optionKeys: reroll.options ? Object.keys(reroll.options) : [] })
}
if (d30result && !d30message) {
d30message = documents.D30Roll.getResult(d30result, defenseRerollContext.rollType, message.rolls[0]?.options?.rollTarget?.weapon, { isRanged: isRangedAttack })
console.warn("Mulligan defense reroll: D30 message computed as fallback", { d30result, d30message, rollType: defenseRerollContext.rollType })
}
try {
await createReactionMessage(defender, {
type: "mulligan",
@@ -559,16 +568,16 @@ Hooks.on("createChatMessage", async (message) => {
oldRoll: oldDefenseRoll,
newRoll: defenseRoll,
diceResults: reroll.options?.diceResults || [],
D30result: reroll.options?.D30result,
D30message: reroll.options?.D30message
D30result: d30result,
D30message: d30message
})
} catch(e) {
console.error("Mulligan message creation failed (non-fatal):", e)
}
// Apply new D30 result on the restart — the new D30 always takes effect,
// and if it's another mulligan the reroll button reappears.
if (reroll.options?.D30message) {
defenseD30message = reroll.options.D30message
if (d30message) {
defenseD30message = d30message
defenseD30Processed = false
}
canRerollDefense = LethalFantasyUtils.hasD30Reroll(defenseD30message)
@@ -757,6 +766,15 @@ Hooks.on("createChatMessage", async (message) => {
const reroll = await LethalFantasyUtils.rerollConfiguredRoll(attackRerollContext)
if (!reroll) continue
attackRollFinal = reroll.options?.rollTotal || reroll.total || oldAttackRoll
let d30result = reroll.options?.D30result
let d30message = reroll.options?.D30message
if (!d30result && !d30message) {
console.warn("Mulligan attack reroll: no D30 data in options", { hasOptions: !!reroll.options, optionKeys: reroll.options ? Object.keys(reroll.options) : [] })
}
if (d30result && !d30message) {
d30message = documents.D30Roll.getResult(d30result, attackRerollContext.rollType, attackRerollContext.rollTarget?.weapon, { isRanged: isRangedAttack })
console.warn("Mulligan attack reroll: D30 message computed as fallback", { d30result, d30message, rollType: attackRerollContext.rollType })
}
try {
await createReactionMessage(attacker, {
type: "mulligan",
@@ -765,16 +783,16 @@ Hooks.on("createChatMessage", async (message) => {
oldRoll: oldAttackRoll,
newRoll: attackRollFinal,
diceResults: reroll.options?.diceResults || [],
D30result: reroll.options?.D30result,
D30message: reroll.options?.D30message
D30result: d30result,
D30message: d30message
})
} catch(e) {
console.error("Mulligan message creation failed (non-fatal):", e)
}
// Apply new D30 result on the restart — the new D30 always takes effect,
// and if it's another mulligan the reroll button reappears.
if (reroll.options?.D30message) {
attackD30message = reroll.options.D30message
if (d30message) {
attackD30message = d30message
attackD30Processed = false
d30AttackPrecomputedStale = true
}