diff --git a/css/fvtt-lethal-fantasy.css b/css/fvtt-lethal-fantasy.css index 112dbb6..58e2437 100644 --- a/css/fvtt-lethal-fantasy.css +++ b/css/fvtt-lethal-fantasy.css @@ -1951,6 +1951,18 @@ i.lethalfantasy { .lethalfantasy-roll-dialog fieldset { padding: 4px; } +.lethalfantasy-roll-dialog .goto-token-button { + justify-content: center; + align-items: center; + align-content: center; + margin-left: 0.5rem; + max-width: 8rem; + background-color: var(--color-dark-6); + color: var(--color-dark-2); + border: none; + border-radius: 4px; + padding: 0.5rem; +} .lethalfantasy-range-defense-dialog { width: 18rem; } diff --git a/lang/en.json b/lang/en.json index 9b43889..29dbd7f 100644 --- a/lang/en.json +++ b/lang/en.json @@ -281,6 +281,7 @@ } }, "Label": { + "gotoToken": "Go to token", "combatAction": "Combat action", "currentAction": "Current ongoing action", "selectAction": "Select an action", diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index 9cb4066..7c674d3 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -223,7 +223,7 @@ export default class LethalFantasyRoll extends Roll { options.rollTarget.charModifier = options.rollTarget.actorModifiers.intSpellModifier hasStaticModifier = options.rollType === "spell-power" //hasModifier = options.rollType !== "spell-attack" - if ( hasStaticModifier ) { + if (hasStaticModifier) { options.rollTarget.staticModifier = options.rollTarget.actorLevel } else { options.rollTarget.staticModifier = 0 @@ -240,7 +240,7 @@ export default class LethalFantasyRoll extends Roll { options.rollTarget.charModifier = options.rollTarget.actorModifiers.chaMiracleModifier hasStaticModifier = options.rollType === "miracle-power" //hasModifier = options.rollType !== "miracle-attack" - if ( hasStaticModifier ) { + if (hasStaticModifier) { options.rollTarget.staticModifier = options.rollTarget.actorLevel } else { options.rollTarget.staticModifier = 0 @@ -331,16 +331,19 @@ export default class LethalFantasyRoll extends Roll { } const content = await renderTemplate("systems/fvtt-lethal-fantasy/templates/roll-dialog.hbs", dialogContext) - const title = LethalFantasyRoll.createTitle(options.rollType, options.rollTarget) + let position = game.user.getFlag(SYSTEM.id, "roll-dialog-pos") || { top: -1, left: -1 } const label = game.i18n.localize("LETHALFANTASY.Roll.roll") const rollContext = await foundry.applications.api.DialogV2.wait({ - window: { title: title }, + window: { title: "Roll dialog" }, classes: ["lethalfantasy"], content, + position, buttons: [ { label: label, callback: (event, button, dialog) => { + let position = $(dialog).position() + game.user.setFlag(SYSTEM.id, "roll-dialog-pos", foundry.utils.duplicate(position)) const output = Array.from(button.form.elements).reduce((obj, input) => { if (input.name) obj[input.name] = input.value return obj @@ -352,6 +355,15 @@ export default class LethalFantasyRoll extends Roll { actions: { "selectGranted": (event, button, dialog) => { hasGrantedDice = true + }, + "gotoToken" : (event, button, dialog) => { + let tokenId = $(button).data("tokenId") + let token = canvas.tokens?.get(tokenId) + if (token) { + canvas.animatePan({ x: token.x, y: token.y, duration: 200 }) + canvas.tokens.releaseAll(); + token.control({ releaseOthers: true }); + } } }, rejectClose: false // Click on Close button will not launch an error @@ -630,6 +642,8 @@ export default class LethalFantasyRoll extends Roll { } let currentAction = combatant.getFlag(SYSTEM.id, "currentAction") + let position = game.user.getFlag(SYSTEM.id, "combat-action-dialog-pos") || { top: -1, left: -1 } + let dialogContext = { progressionDiceId: "", fieldRollMode, @@ -647,24 +661,34 @@ export default class LethalFantasyRoll extends Roll { action: "roll", label: "Roll progression dice", callback: (event, button, dialog) => { + let pos = $('#combat-action-dialog').position() + game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", pos) return "rollProgressionDice" }, }) } else if (currentAction.type === "spell" || currentAction.type === "miracle") { let label = "" if (currentAction.spellStatus === "castingTime") { + let pos = $('#combat-action-dialog').position() + game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", pos) label = "Wait casting time" } if (currentAction.spellStatus === "toBeCasted") { + let pos = $('#combat-action-dialog').position() + game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", pos) label = "Cast spell/miracle" } if (currentAction.spellStatus === "lethargy") { + let pos = $('#combat-action-dialog').position() + game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", pos) label = "Roll lethargy dice" } buttons.push({ action: "roll", label: label, callback: (event, button, dialog) => { + let pos = $('#combat-action-dialog').position() + game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", foundry.utils.duplicate(pos)) return "rollLethargyDice" }, }) @@ -674,6 +698,8 @@ export default class LethalFantasyRoll extends Roll { action: "roll", label: "Select action", callback: (event, button, dialog) => { + let pos = $('#combat-action-dialog').position() + game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", foundry.utils.duplicate(pos)) const output = Array.from(button.form.elements).reduce((obj, input) => { if (input.name) obj[input.name] = input.value return obj @@ -687,13 +713,17 @@ export default class LethalFantasyRoll extends Roll { action: "cancel", label: "Other action, not listed here", callback: (event, button, dialog) => { + let pos = $('#combat-action-dialog').position() + game.user.setFlag(SYSTEM.id, "combat-action-dialog-pos", foundry.utils.duplicate(pos)) return null; } }) let rollContext = await foundry.applications.api.DialogV2.wait({ window: { title: "Combat Action Dialog" }, + id: "combat-action-dialog", classes: ["lethalfantasy"], + position, content, buttons, rejectClose: false // Click on Close button will not launch an error @@ -854,178 +884,6 @@ export default class LethalFantasyRoll extends Roll { } } - /* ***********************************************************/ - static async promptProgressionDice(options = {}) { - - const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) - const fieldRollMode = new foundry.data.fields.StringField({ - choices: rollModes, - blank: false, - default: "public", - }) - let dialogContext = { - progressionDiceId: "", - fieldRollMode, - rollModes, - ...options - } - - const content = await renderTemplate("systems/fvtt-lethal-fantasy/templates/roll-progression-dice-dialog.hbs", dialogContext) - - const label = game.i18n.localize("LETHALFANTASY.Label.rollProgressionDice") - const rollContext = await foundry.applications.api.DialogV2.wait({ - window: { title: "Progression Roll" }, - classes: ["lethalfantasy"], - content, - buttons: [ - { - action: "roll", - label: "Roll Progression Dice or Continue Loading", - callback: (event, button, dialog) => { - const output = Array.from(button.form.elements).reduce((obj, input) => { - if (input.name) obj[input.name] = input.value - return obj - }, {}) - return output - }, - }, - { - action: "cast", - label: "Cast a spell/Miracle", - callback: (event, button, dialog) => { - return "casting" - }, - }, - { - action: "cancel", - label: "Other action, no progression dice", - callback: (event, button, dialog) => { - return null; - } - } - ], - rejectClose: false // Click on Close button will not launch an error - }) - - console.log("RollContext", dialogContext, rollContext) - let combat = game.combats.get(options.combatId) - let actor = game.actors.get(options.actorId) - - if (rollContext === "casting") { - combat.setCasting(options.combatantId) - let message = `Starting casting a spell !` - ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) - return - } - - if (rollContext === null || !rollContext?.progressionDiceId) { - c.resetCasting(options.combatantId) - combat.resetProgression(options.combatantId) - let message = `${actor.name} : Other action, progression reset` - ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) - return - } - - - // Get the weapons from the actor items - let rangedMode - let searchId = rollContext.progressionDiceId - if (searchId.match("simpleAim")) { - searchId = searchId.replace("simpleAim", "") - rangedMode = "simpleAim" - } - if (searchId.match("carefulAim")) { - searchId = searchId.replace("carefulAim", "") - rangedMode = "carefulAim" - } - if (searchId.match("focusedAim")) { - searchId = searchId.replace("focusedAim", "") - rangedMode = "focusedAim" - } - - 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 (combat.isCasting(options.combatantId)) { - 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 - } - if (options.rollProgressionCount > spell.system.castingTime) { - let message = `Spell ${spell.name} has been cast !` - ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) - combat.resetCasting(options.combatantId) - combat.resetProgression(options.combatantId) - return - } - } else { - let formula = dice - let roll = new Roll(formula) - await roll.evaluate() - let max = roll.dice[0].faces - 1 - let toCompare = Math.min(options.rollProgressionCount, max) - let message - if (roll.total > toCompare) { - message = `Spell Lethargy ongoing ... (${roll.total}/${toCompare}, spell level ${spell.system.level})` - } else { - combat.resetProgression(options.combatantId) - message = `Spell Lethargy ended ! (${roll.total}/${toCompare}, spell level ${spell.system.level})
${actor.name} can return to normal actions.` - } - let msg = await roll.toMessage({ flavor: message }, { rollMode: rollContext.visibility }) - if (game?.dice3d) { - await game.dice3d.waitFor3DAnimationByMessageID(msg.id) - } - } - return - } - - let weapon = actor.items.find(i => i.type === "weapon" && i.id === searchId) - let formula = weapon.system.combatProgressionDice - - let rangedLoad - if (rangedMode) { - let toSplit = weapon.system.speed[rangedMode] - let split = toSplit.split("+") - rangedLoad = Number(split[0]) || 0 - formula = split[1] - console.log("Ranged Mode", rangedMode, rangedLoad, formula, options.rollProgressionCount) - } - - if (rangedLoad && options.rollProgressionCount <= rangedLoad) { - let message = `Ranged weapon ${weapon.name} is loading, loading count : ${options.rollProgressionCount}/${rangedLoad}` - ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) - return - } - - let isMonster = actor.type === "monster" - // Get the dice and roll it if - let roll = new Roll(formula) - await roll.evaluate() - - let max = roll.dice[0].faces - 1 - max = Math.min(options.rollProgressionCount, max) - let msg = await roll.toMessage({ flavor: `Progression Roll for ${weapon.name}, progression count : ${options.rollProgressionCount}/${max}` }, { rollMode: rollContext.visibility }) - if (game?.dice3d) { - await game.dice3d.waitFor3DAnimationByMessageID(msg.id) - } - - if (roll.total <= max) { - // Notify that the player can act now with a chat message - let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOK", { isMonster, name: actor.name, weapon: weapon.name, roll: roll.total }) - ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) - // Update the combatant progression count - let combat = game.combats.get(options.combatId) - let combatant = combat.combatants.get(options.combatantId) - combatant.update({ 'system.progressionCount': 0 }) - } else { - // Notify that the player cannot act now with a chat message - let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionKO", { isMonster, name: actor.name, weapon: weapon.name, roll: roll.total }) - ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) - } - } - /* ***********************************************************/ static async promptRangedDefense(rollTarget) { diff --git a/module/models/monster.mjs b/module/models/monster.mjs index b139611..bbe9532 100644 --- a/module/models/monster.mjs +++ b/module/models/monster.mjs @@ -149,7 +149,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel await roll.toMessage({}, { rollMode: roll.options.rollMode }) } - async prepareMonsterRoll(rollType, rollKey, rollDice) { + async prepareMonsterRoll(rollType, rollKey, rollDice = undefined, tokenId = undefined) { let rollTarget switch (rollType) { case "monster-attack": @@ -212,6 +212,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel } // In all cases + rollTarget.tokenId = tokenId console.log(rollTarget) await this.roll(rollType, rollTarget) } @@ -260,8 +261,8 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel hasAttack = true let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOKMonster", { isMonster: true, name: this.parent.name, weapon: attack.name, roll: roll.total }) ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: this.parent }) }) - this.prepareMonsterRoll("monster-attack", key) let token = combatant?.token + this.prepareMonsterRoll("monster-attack", key, undefined, token?.id) if ( token?.object ) { token.object?.control({releaseOthers: true}); return canvas.animatePan(token.object.center); diff --git a/packs-system/lf-equipment/000245.log b/packs-system/lf-equipment/000262.log similarity index 100% rename from packs-system/lf-equipment/000245.log rename to packs-system/lf-equipment/000262.log diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index 7635e11..1aa57fc 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000243 +MANIFEST-000261 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index fcdae95..42c0fd9 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,8 +1,3 @@ -2025/04/23-16:02:07.087054 7f3145ffb6c0 Recovering log #241 -2025/04/23-16:02:07.096981 7f3145ffb6c0 Delete type=3 #239 -2025/04/23-16:02:07.097039 7f3145ffb6c0 Delete type=0 #241 -2025/04/23-16:04:44.893831 7f2ea7fff6c0 Level-0 table #246: started -2025/04/23-16:04:44.893889 7f2ea7fff6c0 Level-0 table #246: 0 bytes OK -2025/04/23-16:04:44.900365 7f2ea7fff6c0 Delete type=0 #244 -2025/04/23-16:04:44.921865 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) -2025/04/23-16:04:44.921936 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) +2025/04/25-21:22:26.619523 7fa7f51fa6c0 Recovering log #259 +2025/04/25-21:22:26.629405 7fa7f51fa6c0 Delete type=3 #257 +2025/04/25-21:22:26.629471 7fa7f51fa6c0 Delete type=0 #259 diff --git a/packs-system/lf-equipment/LOG.old b/packs-system/lf-equipment/LOG.old index c2f166c..fd0e157 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,8 +1,8 @@ -2025/04/22-23:31:24.238771 7f31457fa6c0 Recovering log #237 -2025/04/22-23:31:24.249942 7f31457fa6c0 Delete type=3 #235 -2025/04/22-23:31:24.250077 7f31457fa6c0 Delete type=0 #237 -2025/04/22-23:43:44.737443 7f2ea7fff6c0 Level-0 table #242: started -2025/04/22-23:43:44.737479 7f2ea7fff6c0 Level-0 table #242: 0 bytes OK -2025/04/22-23:43:44.744412 7f2ea7fff6c0 Delete type=0 #240 -2025/04/22-23:43:44.750880 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) -2025/04/22-23:43:44.750915 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) +2025/04/25-21:12:25.063567 7fa7f49f96c0 Recovering log #255 +2025/04/25-21:12:25.123483 7fa7f49f96c0 Delete type=3 #253 +2025/04/25-21:12:25.123549 7fa7f49f96c0 Delete type=0 #255 +2025/04/25-21:21:41.663813 7fa7eebff6c0 Level-0 table #260: started +2025/04/25-21:21:41.663837 7fa7eebff6c0 Level-0 table #260: 0 bytes OK +2025/04/25-21:21:41.670063 7fa7eebff6c0 Delete type=0 #258 +2025/04/25-21:21:41.683068 7fa7eebff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) +2025/04/25-21:21:41.683094 7fa7eebff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/MANIFEST-000243 b/packs-system/lf-equipment/MANIFEST-000261 similarity index 72% rename from packs-system/lf-equipment/MANIFEST-000243 rename to packs-system/lf-equipment/MANIFEST-000261 index 593eb36..a2db5dc 100644 Binary files a/packs-system/lf-equipment/MANIFEST-000243 and b/packs-system/lf-equipment/MANIFEST-000261 differ diff --git a/packs-system/lf-gifts/000244.log b/packs-system/lf-gifts/000261.log similarity index 100% rename from packs-system/lf-gifts/000244.log rename to packs-system/lf-gifts/000261.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index d3ee291..8819f7c 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000242 +MANIFEST-000260 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index d6fbfd9..fa3da03 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,8 +1,3 @@ -2025/04/23-16:02:07.100445 7f3144ff96c0 Recovering log #240 -2025/04/23-16:02:07.110685 7f3144ff96c0 Delete type=3 #238 -2025/04/23-16:02:07.110874 7f3144ff96c0 Delete type=0 #240 -2025/04/23-16:04:44.900471 7f2ea7fff6c0 Level-0 table #245: started -2025/04/23-16:04:44.900493 7f2ea7fff6c0 Level-0 table #245: 0 bytes OK -2025/04/23-16:04:44.907623 7f2ea7fff6c0 Delete type=0 #243 -2025/04/23-16:04:44.921891 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) -2025/04/23-16:04:44.921950 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/04/25-21:22:26.632055 7fa7ef7fe6c0 Recovering log #258 +2025/04/25-21:22:26.642442 7fa7ef7fe6c0 Delete type=3 #256 +2025/04/25-21:22:26.642504 7fa7ef7fe6c0 Delete type=0 #258 diff --git a/packs-system/lf-gifts/LOG.old b/packs-system/lf-gifts/LOG.old index dab4fff..337904d 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,8 +1,8 @@ -2025/04/22-23:31:24.253009 7f3144ff96c0 Recovering log #236 -2025/04/22-23:31:24.263050 7f3144ff96c0 Delete type=3 #234 -2025/04/22-23:31:24.263096 7f3144ff96c0 Delete type=0 #236 -2025/04/22-23:43:44.744546 7f2ea7fff6c0 Level-0 table #241: started -2025/04/22-23:43:44.744578 7f2ea7fff6c0 Level-0 table #241: 0 bytes OK -2025/04/22-23:43:44.750735 7f2ea7fff6c0 Delete type=0 #239 -2025/04/22-23:43:44.750897 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) -2025/04/22-23:43:44.750924 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/04/25-21:12:25.126076 7fa7ef7fe6c0 Recovering log #254 +2025/04/25-21:12:25.194012 7fa7ef7fe6c0 Delete type=3 #252 +2025/04/25-21:12:25.194129 7fa7ef7fe6c0 Delete type=0 #254 +2025/04/25-21:21:41.677033 7fa7eebff6c0 Level-0 table #259: started +2025/04/25-21:21:41.677055 7fa7eebff6c0 Level-0 table #259: 0 bytes OK +2025/04/25-21:21:41.682956 7fa7eebff6c0 Delete type=0 #257 +2025/04/25-21:21:41.683087 7fa7eebff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/04/25-21:21:41.683125 7fa7eebff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/MANIFEST-000242 b/packs-system/lf-gifts/MANIFEST-000242 deleted file mode 100644 index 382badf..0000000 Binary files a/packs-system/lf-gifts/MANIFEST-000242 and /dev/null differ diff --git a/packs-system/lf-gifts/MANIFEST-000260 b/packs-system/lf-gifts/MANIFEST-000260 new file mode 100644 index 0000000..1f6a706 Binary files /dev/null and b/packs-system/lf-gifts/MANIFEST-000260 differ diff --git a/packs-system/lf-skills/000244.log b/packs-system/lf-skills/000261.log similarity index 100% rename from packs-system/lf-skills/000244.log rename to packs-system/lf-skills/000261.log diff --git a/packs-system/lf-skills/CURRENT b/packs-system/lf-skills/CURRENT index d3ee291..8819f7c 100644 --- a/packs-system/lf-skills/CURRENT +++ b/packs-system/lf-skills/CURRENT @@ -1 +1 @@ -MANIFEST-000242 +MANIFEST-000260 diff --git a/packs-system/lf-skills/LOG b/packs-system/lf-skills/LOG index 39afd33..fcfa986 100644 --- a/packs-system/lf-skills/LOG +++ b/packs-system/lf-skills/LOG @@ -1,8 +1,3 @@ -2025/04/23-16:02:07.071305 7f31457fa6c0 Recovering log #240 -2025/04/23-16:02:07.081459 7f31457fa6c0 Delete type=3 #238 -2025/04/23-16:02:07.081639 7f31457fa6c0 Delete type=0 #240 -2025/04/23-16:04:44.907842 7f2ea7fff6c0 Level-0 table #245: started -2025/04/23-16:04:44.907895 7f2ea7fff6c0 Level-0 table #245: 0 bytes OK -2025/04/23-16:04:44.913971 7f2ea7fff6c0 Delete type=0 #243 -2025/04/23-16:04:44.921908 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2025/04/23-16:04:44.921963 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/04/25-21:22:26.603891 7fa7f49f96c0 Recovering log #258 +2025/04/25-21:22:26.613982 7fa7f49f96c0 Delete type=3 #256 +2025/04/25-21:22:26.614103 7fa7f49f96c0 Delete type=0 #258 diff --git a/packs-system/lf-skills/LOG.old b/packs-system/lf-skills/LOG.old index eec478b..8bd2a76 100644 --- a/packs-system/lf-skills/LOG.old +++ b/packs-system/lf-skills/LOG.old @@ -1,8 +1,8 @@ -2025/04/22-23:31:24.225117 7f31467fc6c0 Recovering log #236 -2025/04/22-23:31:24.235493 7f31467fc6c0 Delete type=3 #234 -2025/04/22-23:31:24.235550 7f31467fc6c0 Delete type=0 #236 -2025/04/22-23:43:44.724728 7f2ea7fff6c0 Level-0 table #241: started -2025/04/22-23:43:44.724783 7f2ea7fff6c0 Level-0 table #241: 0 bytes OK -2025/04/22-23:43:44.730920 7f2ea7fff6c0 Delete type=0 #239 -2025/04/22-23:43:44.750847 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) -2025/04/22-23:43:44.750890 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/04/25-21:12:25.004274 7fa7f51fa6c0 Recovering log #254 +2025/04/25-21:12:25.060536 7fa7f51fa6c0 Delete type=3 #252 +2025/04/25-21:12:25.060709 7fa7f51fa6c0 Delete type=0 #254 +2025/04/25-21:21:41.670183 7fa7eebff6c0 Level-0 table #259: started +2025/04/25-21:21:41.670208 7fa7eebff6c0 Level-0 table #259: 0 bytes OK +2025/04/25-21:21:41.676916 7fa7eebff6c0 Delete type=0 #257 +2025/04/25-21:21:41.683078 7fa7eebff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) +2025/04/25-21:21:41.683166 7fa7eebff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-skills/MANIFEST-000242 b/packs-system/lf-skills/MANIFEST-000242 deleted file mode 100644 index 5dc9204..0000000 Binary files a/packs-system/lf-skills/MANIFEST-000242 and /dev/null differ diff --git a/packs-system/lf-skills/MANIFEST-000260 b/packs-system/lf-skills/MANIFEST-000260 new file mode 100644 index 0000000..3dfb436 Binary files /dev/null and b/packs-system/lf-skills/MANIFEST-000260 differ diff --git a/packs-system/lf-vulnerabilities/000244.log b/packs-system/lf-vulnerabilities/000261.log similarity index 100% rename from packs-system/lf-vulnerabilities/000244.log rename to packs-system/lf-vulnerabilities/000261.log diff --git a/packs-system/lf-vulnerabilities/CURRENT b/packs-system/lf-vulnerabilities/CURRENT index d3ee291..8819f7c 100644 --- a/packs-system/lf-vulnerabilities/CURRENT +++ b/packs-system/lf-vulnerabilities/CURRENT @@ -1 +1 @@ -MANIFEST-000242 +MANIFEST-000260 diff --git a/packs-system/lf-vulnerabilities/LOG b/packs-system/lf-vulnerabilities/LOG index c2bbda0..b1fd44d 100644 --- a/packs-system/lf-vulnerabilities/LOG +++ b/packs-system/lf-vulnerabilities/LOG @@ -1,8 +1,3 @@ -2025/04/23-16:02:07.114345 7f31467fc6c0 Recovering log #240 -2025/04/23-16:02:07.124115 7f31467fc6c0 Delete type=3 #238 -2025/04/23-16:02:07.124180 7f31467fc6c0 Delete type=0 #240 -2025/04/23-16:04:44.931650 7f2ea7fff6c0 Level-0 table #245: started -2025/04/23-16:04:44.931686 7f2ea7fff6c0 Level-0 table #245: 0 bytes OK -2025/04/23-16:04:44.938777 7f2ea7fff6c0 Delete type=0 #243 -2025/04/23-16:04:44.971323 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2025/04/23-16:04:44.971357 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/04/25-21:22:26.644388 7fa7effff6c0 Recovering log #258 +2025/04/25-21:22:26.654206 7fa7effff6c0 Delete type=3 #256 +2025/04/25-21:22:26.654257 7fa7effff6c0 Delete type=0 #258 diff --git a/packs-system/lf-vulnerabilities/LOG.old b/packs-system/lf-vulnerabilities/LOG.old index 2cda392..87bc508 100644 --- a/packs-system/lf-vulnerabilities/LOG.old +++ b/packs-system/lf-vulnerabilities/LOG.old @@ -1,8 +1,8 @@ -2025/04/22-23:31:24.265717 7f3145ffb6c0 Recovering log #236 -2025/04/22-23:31:24.276539 7f3145ffb6c0 Delete type=3 #234 -2025/04/22-23:31:24.276606 7f3145ffb6c0 Delete type=0 #236 -2025/04/22-23:43:44.731066 7f2ea7fff6c0 Level-0 table #241: started -2025/04/22-23:43:44.731099 7f2ea7fff6c0 Level-0 table #241: 0 bytes OK -2025/04/22-23:43:44.737300 7f2ea7fff6c0 Delete type=0 #239 -2025/04/22-23:43:44.750866 7f2ea7fff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) -2025/04/22-23:43:44.750946 7f2ea7fff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/04/25-21:12:25.197251 7fa7effff6c0 Recovering log #254 +2025/04/25-21:12:25.252610 7fa7effff6c0 Delete type=3 #252 +2025/04/25-21:12:25.252672 7fa7effff6c0 Delete type=0 #254 +2025/04/25-21:21:41.657695 7fa7eebff6c0 Level-0 table #259: started +2025/04/25-21:21:41.657740 7fa7eebff6c0 Level-0 table #259: 0 bytes OK +2025/04/25-21:21:41.663703 7fa7eebff6c0 Delete type=0 #257 +2025/04/25-21:21:41.683056 7fa7eebff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) +2025/04/25-21:21:41.683109 7fa7eebff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-vulnerabilities/MANIFEST-000242 b/packs-system/lf-vulnerabilities/MANIFEST-000260 similarity index 71% rename from packs-system/lf-vulnerabilities/MANIFEST-000242 rename to packs-system/lf-vulnerabilities/MANIFEST-000260 index b86db05..b0f94bd 100644 Binary files a/packs-system/lf-vulnerabilities/MANIFEST-000242 and b/packs-system/lf-vulnerabilities/MANIFEST-000260 differ diff --git a/styles/roll.less b/styles/roll.less index b862f32..2536b2b 100644 --- a/styles/roll.less +++ b/styles/roll.less @@ -13,6 +13,19 @@ fieldset { padding: 4px; } + .goto-token-button { + justify-content: center; + align-items: center; + align-content: center; + margin-left: 0.5rem; + max-width: 8rem; + background-color: var(--color-dark-6); + color: var(--color-dark-2); + border: none; + border-radius: 4px; + padding: 0.5rem; + } + } .lethalfantasy-range-defense-dialog { @@ -24,7 +37,7 @@ select { margin-left: 0.5rem; min-width: 10rem; - max-width: 10rem; + max-width: 10rem; } .field-section { display: flex; @@ -34,13 +47,13 @@ .field-name { width:4rem; min-width: 4rem; - max-width: 4rem; + max-width: 4rem; } } .dialog-form { - .form-footer { + .form-footer { button { min-width: 14rem; min-height: 3.2rem; diff --git a/templates/roll-dialog.hbs b/templates/roll-dialog.hbs index 3afcd11..48a7588 100644 --- a/templates/roll-dialog.hbs +++ b/templates/roll-dialog.hbs @@ -3,6 +3,12 @@
{{localize (concat "LETHALFANTASY.Label." rollType)}} - {{actorName}} + {{#if rollTarget.tokenId}} +
+ {{localize "LETHALFANTASY.Label.gotoToken"}} +
+ {{/if}} + {{#if (match rollType "attack")}}
Attack roll ! - {{rollTarget.name}}
{{/if}} @@ -87,4 +93,6 @@ {{selectOptions rollModes selected=visibility}}
+ + \ No newline at end of file