Fix lethargy + charaster race
All checks were successful
Release Creation / build (release) Successful in 1m7s

This commit is contained in:
2025-04-06 23:16:30 +02:00
parent b029aba2b6
commit 9035ad4bfb
26 changed files with 105 additions and 89 deletions

View File

@ -103,13 +103,13 @@ export const ATTACKER_AIM_CHOICES = {
"focused": {label: "Focused (-8)", value: "-8"}
}
export const SPELL_LETHARGY_DICE = {
"spellLevel1": {dice: "D6", level: "1-5", value: "6"},
"spellLevel6": {dice: "D8", level: "6-10", value: "8"},
"spellLevel11": {dice: "D10", value: "10", level: "11-15"},
"spellLevel16": {dice: "D12", value: "12", level: "16-20"},
"spellLevel21": {dice: "D20", value: "20", level: "21-25"}
}
export const SPELL_LETHARGY_DICE = [
{dice: "D6", level: "1-5", value: "6", maxLevel: 5},
{dice: "D8", level: "6-10", value: "8", maxLevel: 10},
{dice: "D10", value: "10", level: "11-15", maxLevel: 15},
{dice: "D12", value: "12", level: "16-20", maxLevel: 20},
{dice: "D20", value: "20", level: "21-25", maxLevel: 25}
]
export const INITIATIVE_DICE_CHOICES_PER_CLASS = {
"untrained": [

View File

@ -672,23 +672,32 @@ export default class LethalFantasyRoll extends Roll {
rangedMode = "focusedAim"
}
if (searchId.match("spellLevel")) {
let spellConfig = SYSTEM.SPELL_LETHARGY_DICE[searchId]
let formula = spellConfig.dice
if (searchId.match("spell")) {
searchId = searchId.replace("spell", "")
let spell = actor.items.find(i => i.type === "spell" && i.id === searchId)
let dice = LethalFantasyUtils.getLethargyDice(spell.system.level)
if (options.rollProgressionCount <= spell.system.castingTime ) {
let message = `Spell casting time : ${spell.name}, count : ${options.rollProgressionCount}/${spell.system.castingTime}`
ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) })
return
}
let formula = dice
let roll = new Roll(formula)
await roll.evaluate()
let max = roll.dice[0].faces - 1
let toCompare = Math.min(options.rollProgressionCount-spell.system.castingTime, max)
let message
if (options.rollProgressionCount <= roll.total ) {
message = `Spell Lethargy ongoing ... (${roll.total}/${options.rollProgressionCount}, spell level ${spellConfig.level})`
if (roll.total > toCompare) {
message = `Spell Lethargy ongoing ... (${roll.total}/${toCompare}, spell level ${spell.system.level})`
} else {
let combat = game.combats.get(options.combatId)
combat.resetProgression(options.combatantId)
message = `Spell Lethargy ended ! (${roll.total}/${options.rollProgressionCount}, spell level ${spellConfig.level})`
message = `Spell Lethargy ended ! (${roll.total}/${toCompare}, spell level ${spell.system.level})`
}
let msg = await roll.toMessage({ flavor: message }, { rollMode: rollContext.visibility })
if (game?.dice3d) {
await game.dice3d.waitFor3DAnimationByMessageID(msg.id)
}
}
return
}

View File

@ -296,12 +296,11 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
weaponsChoices.push({ id: `${w.id}focusedAim`, name: `${w.name} (Focused Aim: ${w.system.speed.focusedAim.toUpperCase()})`, combatProgressionDice: w.system.speed.focusedAim.toUpperCase() })
}
if (this.biodata.magicUser || this.biodata.clericUser) {
// Get the max level of the spells owned
weaponsChoices.push({ id: "spellLevel1", name: `Level 1-5 Spell/Miracle (D6)`, combatProgressionDice: "1D6" })
weaponsChoices.push({ id: "spellLevel6", name: `Level 6-10 Spell/Miracle (D8)`, combatProgressionDice: "1D8" })
weaponsChoices.push({ id: "spellLevel11", name: `Level 11-15 Spell/Miracle (D10)`, combatProgressionDice: "1D10" })
weaponsChoices.push({ id: "spellLevel16", name: `Level 16-20 Spell/Miracle (D12)`, combatProgressionDice: "1D12" })
weaponsChoices.push({ id: "spellLevel21", name: `Level 21-25 Spell/Miracle (D20)`, combatProgressionDice: "1D20" })
let spells = this.parent.items.filter(i => i.type === "spell" || i.type === "miracle")
for (let s of spells) {
let dice = LethalFantasyUtils.getLethargyDice(s.system.level)
weaponsChoices.push({ id: `spell${s.id}`, name: `${s.name} (Time: ${s.system.castingTime}, Lethargy: ${dice})`, combatProgressionDice: `${s.system.castingTime}+${dice}` })
}
}
let roll = await LethalFantasyRoll.promptProgressionDice({

View File

@ -39,7 +39,7 @@ export default class LethalFantasyUtils {
return val == null;
});
Handlebars.registerHelper('match', function (val, search) {
if ( val && search) {
if (val && search) {
return val?.match(search);
}
return false
@ -193,4 +193,12 @@ export default class LethalFantasyUtils {
}
static getLethargyDice(level) {
for (let s of SYSTEM.SPELL_LETHARGY_DICE) {
if (Number(level) <= s.maxLevel) {
return s.dice
}
}
}
}