7 Commits

Author SHA1 Message Date
a3c6509862 Update compendiums
All checks were successful
Release Creation / build (release) Successful in 52s
2025-05-06 10:53:25 +02:00
c2fe34e7a6 Update README 2025-05-03 16:04:29 +02:00
46176b2782 Update README 2025-05-03 09:46:43 +02:00
b7f13500a6 Update README.md 2025-05-03 08:26:22 +02:00
bd8b098b35 Fix HP loss
All checks were successful
Release Creation / build (release) Successful in 1m20s
2025-05-02 18:24:14 +02:00
71d3f777bf Implements HP loss HUD button
All checks were successful
Release Creation / build (release) Successful in 41s
2025-04-27 22:32:32 +02:00
157163672c Implements HP loss HUD button
All checks were successful
Release Creation / build (release) Successful in 54s
2025-04-27 22:11:10 +02:00
51 changed files with 303 additions and 113 deletions

View File

@ -1,6 +1,20 @@
<h2><em>Lethal Fantasy RPG</em> for Foundry Virtual TableTop</h2> ## Lethal Fantasy RPG for Foundry Virtual TableTop
<div align="center"> The Official game system for playing Lethal Fantasy TTRPG: The Role Playing Game on FoundryVTT. This fully functional system is the foundational framework to build your game.
</div> This product's format, programming code, and presentation is copyrighted by Lethal Fantasy Games LLC.
This system & product are used with permission granted as part of the partnership agreement between Foundry Gaming LLC and Lethal Fantasy Games LLC. It uses the following trademarks and/or copyrights:
© 2025 Lethal Fantasy Games. Content copyright Ted McClintock, Lethal Fantasy Games LLC. All Rights Reserved. Lethal Fantasy® is a Registered Trademark of Lethal Fantasy Games LLC. All Rights Reserved.
Lethal Fantasy Games is ©2025 Lethal Fantasy Games, LLC. All rights reserved. Lethal Fantasy, Lethal Fantasy Games, and their associated logos are trademarks of Lethal Fantasy Games, LLC. https://lethalfantasy.com/
For inquiries on developing content for this ruleset please contact Lethalted@lethalfantasy.com
## Community
Please join our Discord server Lethal Fantasy games https://discord.gg/UDvnnyvreV
It's the place to ask questions on how to use the system, make feature request and follow the development of the system.

View File

@ -0,0 +1 @@
<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g class="" style="" transform="translate(0,0)"><path d="M373.47 25.5c-33.475-.064-67.614 13.444-94.44 43.156l37.22 145.156-33.437.032 35.343 132.093-116.718-188.375 50.03 5.375L202.5 47.312C120.437-1.43 4.756 40.396 8.5 158.156c4.402 138.44 191.196 184.6 247.406 331.625 59.376-147.035 251.26-184.33 246.656-331.624-2.564-82.042-64.6-132.532-129.093-132.656z" fill="#fff" fill-opacity="1"></path></g></svg>

After

Width:  |  Height:  |  Size: 506 B

View File

@ -2070,22 +2070,39 @@ i.lethalfantasy {
font-size: calc(var(--font-size-standard) * 1); font-size: calc(var(--font-size-standard) * 1);
text-shadow: 0 0 10px var(--color-shadow-primary); text-shadow: 0 0 10px var(--color-shadow-primary);
} }
#lethalfantasy-application-manager { #token-hud .hp-loss-wrap {
display: flex; position: absolute;
font-family: var(--font-primary); left: 75px;
font-size: calc(var(--font-size-standard) * 1); display: none;
color: var(--color-dark-1); top: 50%;
width: 48px;
text-align: start;
overflow-y: auto;
}
#token-hud .hp-loss-wrap-col1 {
transform: translate(-200%, -50%);
}
#token-hud .hp-loss-wrap-col2 {
transform: translate(-300%, -50%);
}
#token-hud .hp-loss-wrap-col3 {
transform: translate(-400%, -50%);
}
#token-hud .hp-loss-hud-active {
display: block;
}
#token-hud .hp-loss-hud-disabled {
display: none;
}
#token-hud .hud-loss-hp-button-select {
max-width: 40px;
background-image: var(--background-image-base); background-image: var(--background-image-base);
background-repeat: no-repeat; padding-top: 0;
background-size: 100% 100%; padding-bottom: 0;
} width: max-content;
#lethalfantasy-application-manager .lethalfantasy-table {
margin: 1rem;
background: none;
padding: 0;
margin: 0; margin: 0;
text-align: center;
} }
#lethalfantasy-application-manager .lethalfantasy-table .player { #token-hud .hp-loss-wrap .hud-loss-hp-button-select {
font-size: calc(var(--font-size-standard) * 1); padding-left: 8px;
font-size: 0.7rem;
} }

View File

@ -89,12 +89,13 @@ Hooks.once("init", function () {
setupTextEnrichers() setupTextEnrichers()
LethalFantasyUtils.registerHandlebarsHelpers() LethalFantasyUtils.registerHandlebarsHelpers()
LethalFantasyUtils.setHookListeners( )
console.info("LETHAL FANTASY | System Initialized") console.info("LETHAL FANTASY | System Initialized")
}) })
/** /**
* Perform one-time configuration of system configuration objects. * Perform one-time configuration of system configuration objects.f
*/ */
function preLocalizeConfig() { function preLocalizeConfig() {
const localizeConfigObject = (obj, keys) => { const localizeConfigObject = (obj, keys) => {
@ -117,6 +118,7 @@ Hooks.once("ready", function () {
if (!SYSTEM.DEV_MODE) { if (!SYSTEM.DEV_MODE) {
registerWorldCount("lethalFantasy") registerWorldCount("lethalFantasy")
} }
_showUserGuide() _showUserGuide()
/** /**
@ -129,7 +131,12 @@ Hooks.once("ready", function () {
} }
}) })
Hooks.on("renderChatMessage", (message, html, data) => { // Test if version below 13
let hookName = "renderChatMessage"
if (foundry.utils.isNewerVersion(game.version, "12.0", )) {
hookName = "renderChatMessageHTML"
}
Hooks.on(hookName, (message, html, data) => {
const typeMessage = data.message.flags.lethalFantasy?.typeMessage const typeMessage = data.message.flags.lethalFantasy?.typeMessage
// Message de demande de jet de dés // Message de demande de jet de dés
if (typeMessage === "askRoll") { if (typeMessage === "askRoll") {

View File

@ -250,6 +250,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
async _onRoll(event, target) { async _onRoll(event, target) {
if (this.isEditMode) return if (this.isEditMode) return
console.log("Roll event", event)
const rollType = event.target.dataset.rollType const rollType = event.target.dataset.rollType
let rollKey = event.target.dataset.rollKey; let rollKey = event.target.dataset.rollKey;
let rollDice = event.target.dataset?.rollDice; let rollDice = event.target.dataset?.rollDice;

View File

@ -69,6 +69,15 @@ export default class LethalFantasyActor extends Actor {
return goodSkill return goodSkill
} }
/* *************************************************/
async applyDamage(hpLoss) {
let hp = this.system.hp.value + hpLoss
if (hp < 0) {
hp = 0
}
this.update({ "system.hp.value": hp })
}
/* *************************************************/ /* *************************************************/
async prepareRoll(rollType, rollKey, rollDice ) { async prepareRoll(rollType, rollKey, rollDice ) {
console.log("Preparing roll", rollType, rollKey, rollDice) console.log("Preparing roll", rollType, rollKey, rollDice)

View File

@ -292,7 +292,10 @@ export default class LethalFantasyRoll extends Roll {
hasModifier = false hasModifier = false
} }
console.log("Roll mode", CONFIG.Dice.rollModes)
const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
console.log("Roll mode", rollModes)
const fieldRollMode = new foundry.data.fields.StringField({ const fieldRollMode = new foundry.data.fields.StringField({
choices: rollModes, choices: rollModes,
blank: false, blank: false,

View File

@ -18,6 +18,51 @@ export default class LethalFantasyUtils {
options.push({ name: "Reset Progression", condition: true, icon: '<i class="fas fa-rotate-right"></i>', callback: target => { game.combat.resetProgression(target.data('combatant-id')); } }) options.push({ name: "Reset Progression", condition: true, icon: '<i class="fas fa-rotate-right"></i>', callback: target => { game.combat.resetProgression(target.data('combatant-id')); } })
} }
/* -------------------------------------------- */
static setHookListeners() {
Hooks.on('renderTokenHUD', async (hud, html, token) => {
const lossHPButton = await renderTemplate('systems/fvtt-lethal-fantasy/templates/loss-hp-hud.hbs', {} )
html.find('div.left').append(lossHPButton);
html.find('img.lethal-hp-loss-hud').click((event) => {
event.preventDefault();
let hpMenu = html.find('.hp-loss-wrap')[0]
if (hpMenu.classList.contains("hp-loss-hud-disabled")) {
html.find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-active');
html.find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-disabled');
html.find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-active');
html.find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-disabled');
html.find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-active');
html.find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-disabled');
} else {
html.find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-active');
html.find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-disabled');
html.find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-active');
html.find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-disabled');
html.find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-active');
html.find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-disabled');
}
})
html.find('.loss-hp-hud-click').click((event) => {
event.preventDefault();
let hpLoss = event.currentTarget.dataset.hpValue;
if (token) {
let tokenFull = canvas.tokens.placeables.find( t => t.id === token._id);
console.log(tokenFull, token)
let actor = tokenFull.actor;
actor.applyDamage(Number(hpLoss));
html.find('.hp-loss-wrap')[0].classList.remove('hp-loss-hud-active');
html.find('.hp-loss-wrap')[0].classList.add('hp-loss-hud-disabled');
html.find('.hp-loss-wrap')[1].classList.remove('hp-loss-hud-active');
html.find('.hp-loss-wrap')[1].classList.add('hp-loss-hud-disabled');
html.find('.hp-loss-wrap')[2].classList.remove('hp-loss-hud-active');
html.find('.hp-loss-wrap')[2].classList.add('hp-loss-hud-disabled');
}
})
})
}
/* -------------------------------------------- */
static handleSocketEvent(msg = {}) { static handleSocketEvent(msg = {}) {
console.log(`handleSocketEvent !`, msg) console.log(`handleSocketEvent !`, msg)
let actor let actor

Binary file not shown.

Binary file not shown.

View File

View File

@ -1 +1 @@
MANIFEST-000261 MANIFEST-000303

View File

@ -1,8 +1,8 @@
2025/04/25-21:22:26.619523 7fa7f51fa6c0 Recovering log #259 2025/05/06-10:52:19.288970 7fc4e7fff6c0 Recovering log #300
2025/04/25-21:22:26.629405 7fa7f51fa6c0 Delete type=3 #257 2025/05/06-10:52:19.300271 7fc4e7fff6c0 Delete type=3 #298
2025/04/25-21:22:26.629471 7fa7f51fa6c0 Delete type=0 #259 2025/05/06-10:52:19.300323 7fc4e7fff6c0 Delete type=0 #300
2025/04/25-21:28:11.794720 7fa7eebff6c0 Level-0 table #264: started 2025/05/06-10:53:10.017977 7fc4e73ff6c0 Level-0 table #306: started
2025/04/25-21:28:11.794743 7fa7eebff6c0 Level-0 table #264: 0 bytes OK 2025/05/06-10:53:10.018020 7fc4e73ff6c0 Level-0 table #306: 0 bytes OK
2025/04/25-21:28:11.828838 7fa7eebff6c0 Delete type=0 #262 2025/05/06-10:53:10.024080 7fc4e73ff6c0 Delete type=0 #304
2025/04/25-21:28:11.872804 7fa7eebff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044191 7fc4e73ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/04/25-21:28:11.872877 7fa7eebff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044277 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2025/04/25-21:12:25.063567 7fa7f49f96c0 Recovering log #255 2025/05/06-10:45:53.342160 7fc4ecbf86c0 Recovering log #296
2025/04/25-21:12:25.123483 7fa7f49f96c0 Delete type=3 #253 2025/05/06-10:45:53.353010 7fc4ecbf86c0 Delete type=3 #294
2025/04/25-21:12:25.123549 7fa7f49f96c0 Delete type=0 #255 2025/05/06-10:45:53.353081 7fc4ecbf86c0 Delete type=0 #296
2025/04/25-21:21:41.663813 7fa7eebff6c0 Level-0 table #260: started 2025/05/06-10:51:12.708848 7fc4e73ff6c0 Level-0 table #301: started
2025/04/25-21:21:41.663837 7fa7eebff6c0 Level-0 table #260: 0 bytes OK 2025/05/06-10:51:12.714248 7fc4e73ff6c0 Level-0 table #301: 213746 bytes OK
2025/04/25-21:21:41.670063 7fa7eebff6c0 Delete type=0 #258 2025/05/06-10:51:12.720525 7fc4e73ff6c0 Delete type=0 #299
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/05/06-10:51:12.748598 7fc4e73ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 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) 2025/05/06-10:51:12.748667 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at '!items!zw9RQocTdz3HRjZK' @ 564 : 1
2025/05/06-10:51:12.748677 7fc4e73ff6c0 Compacting 1@1 + 1@2 files
2025/05/06-10:51:12.755813 7fc4e73ff6c0 Generated table #302@1: 485 keys, 214492 bytes
2025/05/06-10:51:12.755833 7fc4e73ff6c0 Compacted 1@1 + 1@2 files => 214492 bytes
2025/05/06-10:51:12.761728 7fc4e73ff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2025/05/06-10:51:12.761886 7fc4e73ff6c0 Delete type=2 #289
2025/05/06-10:51:12.762144 7fc4e73ff6c0 Delete type=2 #301
2025/05/06-10:51:12.795034 7fc4e73ff6c0 Manual compaction at level-1 from '!items!zw9RQocTdz3HRjZK' @ 564 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

View File

@ -1 +1 @@
MANIFEST-000260 MANIFEST-000302

View File

@ -1,8 +1,8 @@
2025/04/25-21:22:26.632055 7fa7ef7fe6c0 Recovering log #258 2025/05/06-10:52:19.304583 7fc4ed3f96c0 Recovering log #299
2025/04/25-21:22:26.642442 7fa7ef7fe6c0 Delete type=3 #256 2025/05/06-10:52:19.314806 7fc4ed3f96c0 Delete type=3 #297
2025/04/25-21:22:26.642504 7fa7ef7fe6c0 Delete type=0 #258 2025/05/06-10:52:19.314910 7fc4ed3f96c0 Delete type=0 #299
2025/04/25-21:28:11.762447 7fa7eebff6c0 Level-0 table #263: started 2025/05/06-10:53:10.030599 7fc4e73ff6c0 Level-0 table #305: started
2025/04/25-21:28:11.762488 7fa7eebff6c0 Level-0 table #263: 0 bytes OK 2025/05/06-10:53:10.030635 7fc4e73ff6c0 Level-0 table #305: 0 bytes OK
2025/04/25-21:28:11.794608 7fa7eebff6c0 Delete type=0 #261 2025/05/06-10:53:10.036964 7fc4e73ff6c0 Delete type=0 #303
2025/04/25-21:28:11.872774 7fa7eebff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044214 7fc4e73ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/04/25-21:28:11.872860 7fa7eebff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044269 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2025/04/25-21:12:25.126076 7fa7ef7fe6c0 Recovering log #254 2025/05/06-10:45:53.355849 7fc4edbfa6c0 Recovering log #295
2025/04/25-21:12:25.194012 7fa7ef7fe6c0 Delete type=3 #252 2025/05/06-10:45:53.366571 7fc4edbfa6c0 Delete type=3 #293
2025/04/25-21:12:25.194129 7fa7ef7fe6c0 Delete type=0 #254 2025/05/06-10:45:53.366637 7fc4edbfa6c0 Delete type=0 #295
2025/04/25-21:21:41.677033 7fa7eebff6c0 Level-0 table #259: started 2025/05/06-10:51:12.732133 7fc4e73ff6c0 Level-0 table #300: started
2025/04/25-21:21:41.677055 7fa7eebff6c0 Level-0 table #259: 0 bytes OK 2025/05/06-10:51:12.736129 7fc4e73ff6c0 Level-0 table #300: 15304 bytes OK
2025/04/25-21:21:41.682956 7fa7eebff6c0 Delete type=0 #257 2025/05/06-10:51:12.742079 7fc4e73ff6c0 Delete type=0 #298
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/05/06-10:51:12.748632 7fc4e73ff6c0 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) 2025/05/06-10:51:12.771871 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at '!items!zjvGljrLk5SshC9D' @ 65 : 1
2025/05/06-10:51:12.771882 7fc4e73ff6c0 Compacting 1@1 + 1@2 files
2025/05/06-10:51:12.776442 7fc4e73ff6c0 Generated table #301@1: 31 keys, 15417 bytes
2025/05/06-10:51:12.776461 7fc4e73ff6c0 Compacted 1@1 + 1@2 files => 15417 bytes
2025/05/06-10:51:12.782727 7fc4e73ff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2025/05/06-10:51:12.782835 7fc4e73ff6c0 Delete type=2 #288
2025/05/06-10:51:12.782952 7fc4e73ff6c0 Delete type=2 #300
2025/05/06-10:51:12.795077 7fc4e73ff6c0 Manual compaction at level-1 from '!items!zjvGljrLk5SshC9D' @ 65 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

View File

@ -1 +1 @@
MANIFEST-000260 MANIFEST-000302

View File

@ -1,8 +1,8 @@
2025/04/25-21:22:26.603891 7fa7f49f96c0 Recovering log #258 2025/05/06-10:52:19.275594 7fc4ecbf86c0 Recovering log #299
2025/04/25-21:22:26.613982 7fa7f49f96c0 Delete type=3 #256 2025/05/06-10:52:19.285984 7fc4ecbf86c0 Delete type=3 #297
2025/04/25-21:22:26.614103 7fa7f49f96c0 Delete type=0 #258 2025/05/06-10:52:19.286069 7fc4ecbf86c0 Delete type=0 #299
2025/04/25-21:28:11.828962 7fa7eebff6c0 Level-0 table #263: started 2025/05/06-10:53:10.024277 7fc4e73ff6c0 Level-0 table #305: started
2025/04/25-21:28:11.828987 7fa7eebff6c0 Level-0 table #263: 0 bytes OK 2025/05/06-10:53:10.024336 7fc4e73ff6c0 Level-0 table #305: 0 bytes OK
2025/04/25-21:28:11.872564 7fa7eebff6c0 Delete type=0 #261 2025/05/06-10:53:10.030435 7fc4e73ff6c0 Delete type=0 #303
2025/04/25-21:28:11.872823 7fa7eebff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044204 7fc4e73ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/04/25-21:28:11.872896 7fa7eebff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044252 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2025/04/25-21:12:25.004274 7fa7f51fa6c0 Recovering log #254 2025/05/06-10:45:53.317135 7fc4e7fff6c0 Recovering log #295
2025/04/25-21:12:25.060536 7fa7f51fa6c0 Delete type=3 #252 2025/05/06-10:45:53.339293 7fc4e7fff6c0 Delete type=3 #293
2025/04/25-21:12:25.060709 7fa7f51fa6c0 Delete type=0 #254 2025/05/06-10:45:53.339350 7fc4e7fff6c0 Delete type=0 #295
2025/04/25-21:21:41.670183 7fa7eebff6c0 Level-0 table #259: started 2025/05/06-10:51:12.783010 7fc4e73ff6c0 Level-0 table #300: started
2025/04/25-21:21:41.670208 7fa7eebff6c0 Level-0 table #259: 0 bytes OK 2025/05/06-10:51:12.787977 7fc4e73ff6c0 Level-0 table #300: 154604 bytes OK
2025/04/25-21:21:41.676916 7fa7eebff6c0 Delete type=0 #257 2025/05/06-10:51:12.794741 7fc4e73ff6c0 Delete type=0 #298
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/05/06-10:51:12.795090 7fc4e73ff6c0 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) 2025/05/06-10:51:12.795140 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at '!items!zt8s7564ep1La4XQ' @ 281 : 1
2025/05/06-10:51:12.795156 7fc4e73ff6c0 Compacting 1@1 + 1@2 files
2025/05/06-10:51:12.800410 7fc4e73ff6c0 Generated table #301@1: 95 keys, 121769 bytes
2025/05/06-10:51:12.800436 7fc4e73ff6c0 Compacted 1@1 + 1@2 files => 121769 bytes
2025/05/06-10:51:12.806480 7fc4e73ff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2025/05/06-10:51:12.806620 7fc4e73ff6c0 Delete type=2 #288
2025/05/06-10:51:12.806871 7fc4e73ff6c0 Delete type=2 #300
2025/05/06-10:51:12.827417 7fc4e73ff6c0 Manual compaction at level-1 from '!items!zt8s7564ep1La4XQ' @ 281 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000002

View File

View File

@ -0,0 +1,5 @@
2025/05/06-10:52:19.344307 7fc4e7fff6c0 Delete type=3 #1
2025/05/06-10:53:10.044408 7fc4e73ff6c0 Level-0 table #5: started
2025/05/06-10:53:10.051976 7fc4e73ff6c0 Level-0 table #5: 433603 bytes OK
2025/05/06-10:53:10.058524 7fc4e73ff6c0 Delete type=0 #3
2025/05/06-10:53:10.078387 7fc4e73ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000260 MANIFEST-000302

View File

@ -1,8 +1,8 @@
2025/04/25-21:22:26.644388 7fa7effff6c0 Recovering log #258 2025/05/06-10:52:19.317853 7fc4edbfa6c0 Recovering log #299
2025/04/25-21:22:26.654206 7fa7effff6c0 Delete type=3 #256 2025/05/06-10:52:19.327788 7fc4edbfa6c0 Delete type=3 #297
2025/04/25-21:22:26.654257 7fa7effff6c0 Delete type=0 #258 2025/05/06-10:52:19.327923 7fc4edbfa6c0 Delete type=0 #299
2025/04/25-21:28:11.724988 7fa7eebff6c0 Level-0 table #263: started 2025/05/06-10:53:10.037095 7fc4e73ff6c0 Level-0 table #305: started
2025/04/25-21:28:11.725025 7fa7eebff6c0 Level-0 table #263: 0 bytes OK 2025/05/06-10:53:10.037121 7fc4e73ff6c0 Level-0 table #305: 0 bytes OK
2025/04/25-21:28:11.762266 7fa7eebff6c0 Delete type=0 #261 2025/05/06-10:53:10.044101 7fc4e73ff6c0 Delete type=0 #303
2025/04/25-21:28:11.872740 7fa7eebff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044224 7fc4e73ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/04/25-21:28:11.872841 7fa7eebff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end) 2025/05/06-10:53:10.044260 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2025/04/25-21:12:25.197251 7fa7effff6c0 Recovering log #254 2025/05/06-10:45:53.369722 7fc4ed3f96c0 Recovering log #295
2025/04/25-21:12:25.252610 7fa7effff6c0 Delete type=3 #252 2025/05/06-10:45:53.379868 7fc4ed3f96c0 Delete type=3 #293
2025/04/25-21:12:25.252672 7fa7effff6c0 Delete type=0 #254 2025/05/06-10:45:53.379989 7fc4ed3f96c0 Delete type=0 #295
2025/04/25-21:21:41.657695 7fa7eebff6c0 Level-0 table #259: started 2025/05/06-10:51:12.720972 7fc4e73ff6c0 Level-0 table #300: started
2025/04/25-21:21:41.657740 7fa7eebff6c0 Level-0 table #259: 0 bytes OK 2025/05/06-10:51:12.724909 7fc4e73ff6c0 Level-0 table #300: 20719 bytes OK
2025/04/25-21:21:41.663703 7fa7eebff6c0 Delete type=0 #257 2025/05/06-10:51:12.731912 7fc4e73ff6c0 Delete type=0 #298
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/05/06-10:51:12.748619 7fc4e73ff6c0 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) 2025/05/06-10:51:12.762241 7fc4e73ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at '!items!zkK6ixtCsCw3RH9X' @ 62 : 1
2025/05/06-10:51:12.762247 7fc4e73ff6c0 Compacting 1@1 + 1@2 files
2025/05/06-10:51:12.765506 7fc4e73ff6c0 Generated table #301@1: 27 keys, 20869 bytes
2025/05/06-10:51:12.765523 7fc4e73ff6c0 Compacted 1@1 + 1@2 files => 20869 bytes
2025/05/06-10:51:12.771435 7fc4e73ff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2025/05/06-10:51:12.771569 7fc4e73ff6c0 Delete type=2 #288
2025/05/06-10:51:12.771746 7fc4e73ff6c0 Delete type=2 #300
2025/05/06-10:51:12.795060 7fc4e73ff6c0 Manual compaction at level-1 from '!items!zkK6ixtCsCw3RH9X' @ 62 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -1,21 +0,0 @@
#lethalfantasy-application-manager {
display: flex;
font-family: var(--font-primary);
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
background-image: var(--background-image-base);
background-repeat: no-repeat;
background-size: 100% 100%;
.lethalfantasy-table {
margin: 1rem;
background: none;
padding: 0;
margin: 0;
text-align: center;
.player {
font-size: calc(var(--font-size-standard) * 1);
}
}
}

View File

@ -18,4 +18,4 @@
} }
@import "roll.less"; @import "roll.less";
@import "application-manager.less"; @import "hud.less";

43
styles/hud.less Normal file
View File

@ -0,0 +1,43 @@
#token-hud .hp-loss-wrap {
position: absolute;
left: 75px;
display: none;
top: 50%;
width: 48px;
text-align: start;
overflow-y: auto;
}
#token-hud .hp-loss-wrap-col1 {
transform: translate(-200%, -50%);
}
#token-hud .hp-loss-wrap-col2 {
transform: translate(-300%, -50%);
}
#token-hud .hp-loss-wrap-col3 {
transform: translate(-400%, -50%);
}
#token-hud .hp-loss-hud-active {
display: block;
}
#token-hud .hp-loss-hud-disabled {
display: none;
}
#token-hud .hud-loss-hp-button-select {
max-width: 40px;
background-image: var(--background-image-base);
padding-top: 0;
padding-bottom: 0;
width: max-content;
margin: 0;
}
#token-hud .hp-loss-wrap .hud-loss-hp-button-select {
padding-left: 8px;
font-size: 0.7rem;
}

View File

@ -82,6 +82,14 @@
"system": "fvtt-lethal-fantasy", "system": "fvtt-lethal-fantasy",
"path": "packs-system/lf-vulnerabilities", "path": "packs-system/lf-vulnerabilities",
"type": "Item" "type": "Item"
},
{
"name": "lf-spells-miracles",
"banner": "",
"label": "Spells & Miracles",
"system": "fvtt-lethal-fantasy",
"path": "packs-system/lf-spells-miracles",
"type": "Item"
} }
], ],
"flags": { "flags": {

29
templates/loss-hp-hud.hbs Normal file
View File

@ -0,0 +1,29 @@
<div class="control-icon" data-action="lethal-loss-hp-hud">
<img class="lethal-hp-loss-hud" src="systems/fvtt-lethal-fantasy/assets/icons/broken-heart.svg"
width="36" height="36" title="Open token journal" />
<div class="hp-loss-wrap hp-loss-wrap-col1 hp-loss-hud-disabled">
{{#for -10 0 1}}
<button class="hud-loss-hp-button-select loss-hp-hud-click " data-hp-value="{{this}}" >
<span class="">{{this}}</span>
</button>
{{/for}}
</div>
<div class="hp-loss-wrap hp-loss-wrap-col2 hp-loss-hud-disabled">
{{#for -20 -10 1}}
<button class="hud-loss-hp-button-select loss-hp-hud-click " data-hp-value="{{this}}" >
<span class="">{{this}}</span>
</button>
{{/for}}
</div>
<div class="hp-loss-wrap hp-loss-wrap-col3 hp-loss-hud-disabled">
{{#for -30 -20 1}}
<button class="hud-loss-hp-button-select loss-hp-hud-click " data-hp-value="{{this}}" >
<span class="">{{this}}</span>
</button>
{{/for}}
</div>
</div>