Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a06dfa0ae9 | |||
| 0836cada75 | |||
| 61ed1597e7 |
@@ -917,9 +917,10 @@ i.lethalfantasy {
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
.lethalfantasy .monster-main .monster-skills .monster-skill {
|
.lethalfantasy .monster-main .monster-skills .monster-skill {
|
||||||
display: flex;
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, auto 2.5rem);
|
||||||
|
gap: 0.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-right: 0.5rem;
|
|
||||||
}
|
}
|
||||||
.lethalfantasy .monster-main .monster-skills .monster-skill .rollable:hover,
|
.lethalfantasy .monster-main .monster-skills .monster-skill .rollable:hover,
|
||||||
.lethalfantasy .monster-main .monster-skills .monster-skill .rollable:focus {
|
.lethalfantasy .monster-main .monster-skills .monster-skill .rollable:focus {
|
||||||
@@ -931,12 +932,9 @@ i.lethalfantasy {
|
|||||||
max-width: 2.5rem;
|
max-width: 2.5rem;
|
||||||
}
|
}
|
||||||
.lethalfantasy .monster-main .monster-skills .monster-skill .name {
|
.lethalfantasy .monster-main .monster-skills .monster-skill .name {
|
||||||
flex: 1;
|
|
||||||
min-width: 3.2rem;
|
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
.lethalfantasy .monster-main .monster-skills .monster-skill .form-group {
|
.lethalfantasy .monster-main .monster-skills .monster-skill .form-group {
|
||||||
flex: 1;
|
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
}
|
}
|
||||||
.lethalfantasy .monster-main .monster-skills .monster-skill .form-group .form-fields {
|
.lethalfantasy .monster-main .monster-skills .monster-skill .form-group .form-fields {
|
||||||
@@ -951,8 +949,8 @@ i.lethalfantasy {
|
|||||||
}
|
}
|
||||||
.lethalfantasy .monster-main .monster-movements .monster-movement {
|
.lethalfantasy .monster-main .monster-movements .monster-movement {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
flex-direction: column;
|
||||||
margin-right: 0.5rem;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
.lethalfantasy .monster-main .monster-movements .monster-movement .rollable:hover,
|
.lethalfantasy .monster-main .monster-movements .monster-movement .rollable:hover,
|
||||||
.lethalfantasy .monster-main .monster-movements .monster-movement .rollable:focus {
|
.lethalfantasy .monster-main .monster-movements .monster-movement .rollable:focus {
|
||||||
@@ -2430,6 +2428,10 @@ i.lethalfantasy {
|
|||||||
background-color: rgba(0, 0, 0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
.dice-roll .damage-buttons .damage-buttons-grid.monster-damage {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
justify-items: center;
|
||||||
|
}
|
||||||
.dice-roll .damage-buttons .damage-buttons-grid .damage-roll-btn {
|
.dice-roll .damage-buttons .damage-buttons-grid .damage-roll-btn {
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
background: linear-gradient(to bottom, #8b4513 0%, #6b3410 100%);
|
background: linear-gradient(to bottom, #8b4513 0%, #6b3410 100%);
|
||||||
|
|||||||
@@ -306,8 +306,10 @@
|
|||||||
"grantedAttackDice": "Granted attack",
|
"grantedAttackDice": "Granted attack",
|
||||||
"grantedDamageDice": "Granted damage",
|
"grantedDamageDice": "Granted damage",
|
||||||
"grantedDefenseDice": "Granted defense",
|
"grantedDefenseDice": "Granted defense",
|
||||||
"damageResistance": "Damage resistance",
|
"damageResistance": "DR",
|
||||||
"damageResistanceShort": "DR",
|
"damageResistanceShort": "DR",
|
||||||
|
"shieldDamageReduction": "Shield DR",
|
||||||
|
"shieldDefenseDice": "Shield dice",
|
||||||
"stealth": "Stealth",
|
"stealth": "Stealth",
|
||||||
"progressionDice": "Progression/Lethargy dice",
|
"progressionDice": "Progression/Lethargy dice",
|
||||||
"rollProgressionCount": "Roll progression count",
|
"rollProgressionCount": "Roll progression count",
|
||||||
@@ -557,7 +559,7 @@
|
|||||||
"label": "Min"
|
"label": "Min"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"damagereduction": {
|
"damageReduction": {
|
||||||
"label": "Damage reduction"
|
"label": "Damage reduction"
|
||||||
},
|
},
|
||||||
"defense": {
|
"defense": {
|
||||||
|
|||||||
@@ -192,6 +192,8 @@ Hooks.on(hookName, (message, html, data) => {
|
|||||||
const weaponId = button.data("weapon-id")
|
const weaponId = button.data("weapon-id")
|
||||||
const damageType = button.data("damage-type")
|
const damageType = button.data("damage-type")
|
||||||
const damageFormula = button.data("damage-formula")
|
const damageFormula = button.data("damage-formula")
|
||||||
|
const damageModifier = button.data("damage-modifier")
|
||||||
|
const isMonster = button.data("is-monster")
|
||||||
|
|
||||||
// Récupérer l'acteur qui a fait le jet initial
|
// Récupérer l'acteur qui a fait le jet initial
|
||||||
const actor = game.actors.get(message.rolls[0]?.actorId)
|
const actor = game.actors.get(message.rolls[0]?.actorId)
|
||||||
@@ -200,7 +202,13 @@ Hooks.on(hookName, (message, html, data) => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Récupérer l'arme
|
// Pour les monstres, utiliser prepareMonsterRoll
|
||||||
|
if (isMonster || actor.type === "monster") {
|
||||||
|
await actor.system.prepareMonsterRoll("monster-damage", weaponId, undefined, undefined, damageModifier)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pour les personnages, récupérer l'arme
|
||||||
const weapon = actor.items.get(weaponId)
|
const weapon = actor.items.get(weaponId)
|
||||||
if (!weapon) {
|
if (!weapon) {
|
||||||
ui.notifications.error("Weapon not found")
|
ui.notifications.error("Weapon not found")
|
||||||
|
|||||||
@@ -99,12 +99,22 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
|||||||
context.damageReduction = this.actor.computeDamageReduction()
|
context.damageReduction = this.actor.computeDamageReduction()
|
||||||
context.damageReductionShield = this.actor.getShieldDR()
|
context.damageReductionShield = this.actor.getShieldDR()
|
||||||
break
|
break
|
||||||
case "skills":
|
case "skills": {
|
||||||
context.tab = context.tabs.skills
|
context.tab = context.tabs.skills
|
||||||
context.skills = doc.itemTypes.skill
|
context.skills = doc.itemTypes.skill
|
||||||
|
// Organiser les skills par catégorie
|
||||||
|
const categories = ['layperson', 'professional', 'weapon', 'armor', 'resist']
|
||||||
|
context.skillsByCategory = categories.map(cat => {
|
||||||
|
return {
|
||||||
|
category: cat,
|
||||||
|
label: `LETHALFANTASY.Skill.Category.${cat}`,
|
||||||
|
skills: context.skills.filter(s => s.system.category === cat)
|
||||||
|
}
|
||||||
|
}).filter(catData => catData.skills.length > 0)
|
||||||
context.gifts = doc.itemTypes.gift
|
context.gifts = doc.itemTypes.gift
|
||||||
context.vulnerabilities = doc.itemTypes.vulnerability
|
context.vulnerabilities = doc.itemTypes.vulnerability
|
||||||
break
|
break
|
||||||
|
}
|
||||||
case "spells":
|
case "spells":
|
||||||
context.tab = context.tabs.spells
|
context.tab = context.tabs.spells
|
||||||
context.spells = doc.itemTypes.spell
|
context.spells = doc.itemTypes.spell
|
||||||
|
|||||||
@@ -162,9 +162,11 @@ export default class LethalFantasyMonsterSheet extends LethalFantasyActorSheet {
|
|||||||
|
|
||||||
async _onRoll(event, target) {
|
async _onRoll(event, target) {
|
||||||
if (this.isEditMode) return
|
if (this.isEditMode) return
|
||||||
const rollType = event.target.dataset.rollType
|
const rollable = event.target.closest('.rollable')
|
||||||
let rollKey = event.target.dataset.rollKey
|
if (!rollable) return
|
||||||
let rollDice = event.target.dataset?.rollDice || "0"
|
const rollType = rollable.dataset.rollType
|
||||||
|
let rollKey = rollable.dataset.rollKey
|
||||||
|
let rollDice = rollable.dataset?.rollDice || "0"
|
||||||
this.actor.system.prepareMonsterRoll(rollType, rollKey, rollDice)
|
this.actor.system.prepareMonsterRoll(rollType, rollKey, rollDice)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,14 +80,26 @@ export default class LethalFantasyActor extends Actor {
|
|||||||
|
|
||||||
/* *************************************************/
|
/* *************************************************/
|
||||||
computeDamageReduction() {
|
computeDamageReduction() {
|
||||||
let naturalDR = Number(this.system.biodata.naturalDR) || 0
|
// Pour les monstres, utiliser hp.damageResistance et combat.damageReduction
|
||||||
let magicDR = Number(this.system.biodata.magicDR) || 0
|
if (this.type === "monster") {
|
||||||
|
let hpDR = Number(this.system.hp?.damageResistance) || 0
|
||||||
|
let combatDR = Number(this.system.combat?.damageReduction) || 0
|
||||||
|
return hpDR + combatDR
|
||||||
|
}
|
||||||
|
// Pour les personnages, utiliser biodata et items
|
||||||
|
let naturalDR = Number(this.system.biodata?.naturalDR) || 0
|
||||||
|
let magicDR = Number(this.system.biodata?.magicDR) || 0
|
||||||
let armorDR = this.getArmorDR()
|
let armorDR = this.getArmorDR()
|
||||||
return naturalDR + magicDR + armorDR
|
return naturalDR + magicDR + armorDR
|
||||||
}
|
}
|
||||||
|
|
||||||
/* *************************************************/
|
/* *************************************************/
|
||||||
getShieldDR() {
|
getShieldDR() {
|
||||||
|
// Pour les monstres, utiliser combat.shieldDamageReduction
|
||||||
|
if (this.type === "monster") {
|
||||||
|
return Number(this.system.combat?.shieldDamageReduction) || 0
|
||||||
|
}
|
||||||
|
// Pour les personnages, utiliser les items de type shield
|
||||||
let dr = 0
|
let dr = 0
|
||||||
for (let item of this.items) {
|
for (let item of this.items) {
|
||||||
if (item.type === "shield" && item.system.equipped) {
|
if (item.type === "shield" && item.system.equipped) {
|
||||||
|
|||||||
@@ -278,6 +278,7 @@ export default class LethalFantasyRoll extends Roll {
|
|||||||
|
|
||||||
} else if (options.rollType.includes("monster-damage")) {
|
} else if (options.rollType.includes("monster-damage")) {
|
||||||
options.rollName = options.rollTarget.name
|
options.rollName = options.rollTarget.name
|
||||||
|
options.isDamage = true
|
||||||
hasModifier = true
|
hasModifier = true
|
||||||
hasChangeDice = false
|
hasChangeDice = false
|
||||||
options.rollTarget.value = options.rollTarget.damageModifier
|
options.rollTarget.value = options.rollTarget.damageModifier
|
||||||
@@ -1151,6 +1152,15 @@ export default class LethalFantasyRoll extends Roll {
|
|||||||
damageM: weapon.system?.damage?.damageM
|
damageM: weapon.system?.damage?.damageM
|
||||||
}
|
}
|
||||||
console.log("Weapon damage options:", weaponDamageOptions)
|
console.log("Weapon damage options:", weaponDamageOptions)
|
||||||
|
} else if (this.type === "monster-attack" && this.rollTarget) {
|
||||||
|
weaponDamageOptions = {
|
||||||
|
weaponId: this.rollTarget.rollKey,
|
||||||
|
weaponName: this.rollTarget.name,
|
||||||
|
damageFormula: this.rollTarget.damageDice,
|
||||||
|
damageModifier: this.rollTarget.damageModifier,
|
||||||
|
isMonster: true
|
||||||
|
}
|
||||||
|
console.log("Monster damage options:", weaponDamageOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
const cardData = {
|
const cardData = {
|
||||||
|
|||||||
@@ -118,6 +118,9 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
|||||||
defenseModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
defenseModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
damageModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
damageModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
armorHitPoints: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
armorHitPoints: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
damageReduction: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
shieldDamageReduction: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
shieldDefenseDice: new fields.StringField({ required: true, nullable: false, initial: "d4" })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -150,7 +153,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
|||||||
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
||||||
}
|
}
|
||||||
|
|
||||||
async prepareMonsterRoll(rollType, rollKey, rollDice = undefined, tokenId = undefined) {
|
async prepareMonsterRoll(rollType, rollKey, rollDice = undefined, tokenId = undefined, damageModifier = undefined) {
|
||||||
let rollTarget
|
let rollTarget
|
||||||
switch (rollType) {
|
switch (rollType) {
|
||||||
case "monster-attack":
|
case "monster-attack":
|
||||||
@@ -158,6 +161,10 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
|||||||
case "monster-damage":
|
case "monster-damage":
|
||||||
rollTarget = foundry.utils.duplicate(this.attacks[rollKey])
|
rollTarget = foundry.utils.duplicate(this.attacks[rollKey])
|
||||||
rollTarget.rollKey = rollKey
|
rollTarget.rollKey = rollKey
|
||||||
|
// Si damageModifier est fourni (depuis le chat), l'utiliser au lieu de celui de la fiche
|
||||||
|
if (damageModifier !== undefined && rollType === "monster-damage") {
|
||||||
|
rollTarget.damageModifier = damageModifier
|
||||||
|
}
|
||||||
break
|
break
|
||||||
case "monster-skill":
|
case "monster-skill":
|
||||||
rollTarget = foundry.utils.duplicate(this.resists[rollKey])
|
rollTarget = foundry.utils.duplicate(this.resists[rollKey])
|
||||||
@@ -168,6 +175,19 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
|||||||
rollTarget.rollKey = rollKey
|
rollTarget.rollKey = rollKey
|
||||||
rollTarget.rollDice = rollDice
|
rollTarget.rollDice = rollDice
|
||||||
break
|
break
|
||||||
|
case "shield-defense": {
|
||||||
|
// Lance directement le dé de défense du bouclier
|
||||||
|
const formula = rollDice || this.combat.shieldDefenseDice
|
||||||
|
const roll = new Roll(formula)
|
||||||
|
await roll.evaluate()
|
||||||
|
|
||||||
|
const flavor = game.i18n.localize("LETHALFANTASY.Label.shieldDefenseDice")
|
||||||
|
await roll.toMessage({
|
||||||
|
flavor,
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.parent })
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
case "weapon-damage-small":
|
case "weapon-damage-small":
|
||||||
case "weapon-damage-medium":
|
case "weapon-damage-medium":
|
||||||
case "weapon-attack":
|
case "weapon-attack":
|
||||||
@@ -210,14 +230,16 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
|||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType))
|
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType))
|
||||||
break
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// In all cases
|
// In all cases
|
||||||
|
if (rollTarget) {
|
||||||
rollTarget.tokenId = tokenId
|
rollTarget.tokenId = tokenId
|
||||||
console.log(rollTarget)
|
console.log(rollTarget)
|
||||||
await this.roll(rollType, rollTarget)
|
await this.roll(rollType, rollTarget)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async rollInitiative(combatId = undefined, combatantId = undefined) {
|
async rollInitiative(combatId = undefined, combatantId = undefined) {
|
||||||
const hasTarget = false
|
const hasTarget = false
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000465
|
MANIFEST-000498
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
2025/12/14-20:51:28.512263 7f17053ff6c0 Recovering log #462
|
2026/01/12-14:22:56.040680 7fd462ffd6c0 Recovering log #496
|
||||||
2025/12/14-20:51:28.522433 7f17053ff6c0 Delete type=3 #460
|
2026/01/12-14:22:56.051263 7fd462ffd6c0 Delete type=3 #494
|
||||||
2025/12/14-20:51:28.522511 7f17053ff6c0 Delete type=0 #462
|
2026/01/12-14:22:56.051335 7fd462ffd6c0 Delete type=0 #496
|
||||||
2025/12/14-21:17:40.691121 7f16eeffd6c0 Level-0 table #468: started
|
2026/01/12-14:27:05.789368 7fd4627fc6c0 Level-0 table #501: started
|
||||||
2025/12/14-21:17:40.691177 7f16eeffd6c0 Level-0 table #468: 0 bytes OK
|
2026/01/12-14:27:05.793070 7fd4627fc6c0 Level-0 table #501: 26835 bytes OK
|
||||||
2025/12/14-21:17:40.697563 7f16eeffd6c0 Delete type=0 #466
|
2026/01/12-14:27:05.799160 7fd4627fc6c0 Delete type=0 #499
|
||||||
2025/12/14-21:17:40.718082 7f16eeffd6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.815143 7fd4627fc6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-21:17:40.718119 7f16eeffd6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.815173 7fd4627fc6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at '!items!zFrygJ2TnrxchBai' @ 1178 : 1
|
||||||
|
2026/01/12-14:27:05.815179 7fd4627fc6c0 Compacting 1@1 + 1@2 files
|
||||||
|
2026/01/12-14:27:05.821137 7fd4627fc6c0 Generated table #502@1: 486 keys, 220368 bytes
|
||||||
|
2026/01/12-14:27:05.821151 7fd4627fc6c0 Compacted 1@1 + 1@2 files => 220368 bytes
|
||||||
|
2026/01/12-14:27:05.827440 7fd4627fc6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2026/01/12-14:27:05.827535 7fd4627fc6c0 Delete type=2 #489
|
||||||
|
2026/01/12-14:27:05.828221 7fd4627fc6c0 Delete type=2 #501
|
||||||
|
2026/01/12-14:27:05.839529 7fd4627fc6c0 Manual compaction at level-1 from '!items!zFrygJ2TnrxchBai' @ 1178 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,15 +1,8 @@
|
|||||||
2025/12/14-09:09:25.826835 7f17053ff6c0 Recovering log #458
|
2026/01/04-22:23:04.765915 7f93ebfff6c0 Recovering log #492
|
||||||
2025/12/14-09:09:25.838032 7f17053ff6c0 Delete type=3 #456
|
2026/01/04-22:23:04.775983 7f93ebfff6c0 Delete type=3 #490
|
||||||
2025/12/14-09:09:25.838116 7f17053ff6c0 Delete type=0 #458
|
2026/01/04-22:23:04.776035 7f93ebfff6c0 Delete type=0 #492
|
||||||
2025/12/14-20:45:56.707785 7f16eeffd6c0 Level-0 table #463: started
|
2026/01/04-22:40:50.964348 7f93e9ffb6c0 Level-0 table #497: started
|
||||||
2025/12/14-20:45:56.710879 7f16eeffd6c0 Level-0 table #463: 1677 bytes OK
|
2026/01/04-22:40:50.964370 7f93e9ffb6c0 Level-0 table #497: 0 bytes OK
|
||||||
2025/12/14-20:45:56.716936 7f16eeffd6c0 Delete type=0 #461
|
2026/01/04-22:40:50.975783 7f93e9ffb6c0 Delete type=0 #495
|
||||||
2025/12/14-20:45:56.730287 7f16eeffd6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:50.986019 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-20:45:56.730345 7f16eeffd6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at '!items!VFHTlDVKj2yNJEWi' @ 1129 : 1
|
2026/01/04-22:40:50.986046 7f93e9ffb6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-20:45:56.730356 7f16eeffd6c0 Compacting 1@1 + 1@2 files
|
|
||||||
2025/12/14-20:45:56.736659 7f16eeffd6c0 Generated table #464@1: 485 keys, 217363 bytes
|
|
||||||
2025/12/14-20:45:56.736680 7f16eeffd6c0 Compacted 1@1 + 1@2 files => 217363 bytes
|
|
||||||
2025/12/14-20:45:56.742890 7f16eeffd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
|
||||||
2025/12/14-20:45:56.742996 7f16eeffd6c0 Delete type=2 #323
|
|
||||||
2025/12/14-20:45:56.743249 7f16eeffd6c0 Delete type=2 #463
|
|
||||||
2025/12/14-20:45:56.750017 7f16eeffd6c0 Manual compaction at level-1 from '!items!VFHTlDVKj2yNJEWi' @ 1129 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
|
||||||
|
|||||||
Binary file not shown.
BIN
packs-system/lf-equipment/MANIFEST-000498
Normal file
BIN
packs-system/lf-equipment/MANIFEST-000498
Normal file
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000464
|
MANIFEST-000496
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/12/14-20:51:28.526428 7f16effff6c0 Recovering log #462
|
2026/01/12-14:22:56.057091 7fd4637fe6c0 Recovering log #494
|
||||||
2025/12/14-20:51:28.536097 7f16effff6c0 Delete type=3 #460
|
2026/01/12-14:22:56.067553 7fd4637fe6c0 Delete type=3 #492
|
||||||
2025/12/14-20:51:28.536151 7f16effff6c0 Delete type=0 #462
|
2026/01/12-14:22:56.067610 7fd4637fe6c0 Delete type=0 #494
|
||||||
2025/12/14-21:17:40.711547 7f16eeffd6c0 Level-0 table #467: started
|
2026/01/12-14:27:05.799253 7fd4627fc6c0 Level-0 table #499: started
|
||||||
2025/12/14-21:17:40.711584 7f16eeffd6c0 Level-0 table #467: 0 bytes OK
|
2026/01/12-14:27:05.799272 7fd4627fc6c0 Level-0 table #499: 0 bytes OK
|
||||||
2025/12/14-21:17:40.717934 7f16eeffd6c0 Delete type=0 #465
|
2026/01/12-14:27:05.805798 7fd4627fc6c0 Delete type=0 #497
|
||||||
2025/12/14-21:17:40.718128 7f16eeffd6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.815153 7fd4627fc6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-21:17:40.718154 7f16eeffd6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.828314 7fd4627fc6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/12/14-09:09:25.859023 7f16ef7fe6c0 Recovering log #458
|
2026/01/04-22:23:04.780744 7f93eb7fe6c0 Recovering log #490
|
||||||
2025/12/14-09:09:25.869163 7f16ef7fe6c0 Delete type=3 #456
|
2026/01/04-22:23:04.790510 7f93eb7fe6c0 Delete type=3 #488
|
||||||
2025/12/14-09:09:25.869258 7f16ef7fe6c0 Delete type=0 #458
|
2026/01/04-22:23:04.790582 7f93eb7fe6c0 Delete type=0 #490
|
||||||
2025/12/14-20:45:56.717084 7f16eeffd6c0 Level-0 table #463: started
|
2026/01/04-22:40:50.951234 7f93e9ffb6c0 Level-0 table #495: started
|
||||||
2025/12/14-20:45:56.717117 7f16eeffd6c0 Level-0 table #463: 0 bytes OK
|
2026/01/04-22:40:50.951256 7f93e9ffb6c0 Level-0 table #495: 0 bytes OK
|
||||||
2025/12/14-20:45:56.723011 7f16eeffd6c0 Delete type=0 #461
|
2026/01/04-22:40:50.964192 7f93e9ffb6c0 Delete type=0 #493
|
||||||
2025/12/14-20:45:56.730301 7f16eeffd6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:50.986007 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-20:45:56.743359 7f16eeffd6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:50.986038 7f93e9ffb6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000466
|
MANIFEST-000499
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
2025/12/14-20:51:28.497448 7f1704bfe6c0 Recovering log #464
|
2026/01/12-14:22:56.026652 7fd478fff6c0 Recovering log #497
|
||||||
2025/12/14-20:51:28.507553 7f1704bfe6c0 Delete type=3 #462
|
2026/01/12-14:22:56.036317 7fd478fff6c0 Delete type=3 #495
|
||||||
2025/12/14-20:51:28.507622 7f1704bfe6c0 Delete type=0 #464
|
2026/01/12-14:22:56.036373 7fd478fff6c0 Delete type=0 #497
|
||||||
2025/12/14-21:17:40.697721 7f16eeffd6c0 Level-0 table #469: started
|
2026/01/12-14:27:05.805895 7fd4627fc6c0 Level-0 table #502: started
|
||||||
2025/12/14-21:17:40.697764 7f16eeffd6c0 Level-0 table #469: 0 bytes OK
|
2026/01/12-14:27:05.809094 7fd4627fc6c0 Level-0 table #502: 1650 bytes OK
|
||||||
2025/12/14-21:17:40.703907 7f16eeffd6c0 Delete type=0 #467
|
2026/01/12-14:27:05.815051 7fd4627fc6c0 Delete type=0 #500
|
||||||
2025/12/14-21:17:40.718096 7f16eeffd6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.815162 7fd4627fc6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-21:17:40.718137 7f16eeffd6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.828330 7fd4627fc6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at '!items!3cU5wW47VwlEPNqj' @ 736 : 1
|
||||||
|
2026/01/12-14:27:05.828340 7fd4627fc6c0 Compacting 1@1 + 1@2 files
|
||||||
|
2026/01/12-14:27:05.833408 7fd4627fc6c0 Generated table #503@1: 91 keys, 118712 bytes
|
||||||
|
2026/01/12-14:27:05.833433 7fd4627fc6c0 Compacted 1@1 + 1@2 files => 118712 bytes
|
||||||
|
2026/01/12-14:27:05.839289 7fd4627fc6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2026/01/12-14:27:05.839370 7fd4627fc6c0 Delete type=2 #494
|
||||||
|
2026/01/12-14:27:05.839480 7fd4627fc6c0 Delete type=2 #502
|
||||||
|
2026/01/12-14:27:05.852151 7fd4627fc6c0 Manual compaction at level-1 from '!items!3cU5wW47VwlEPNqj' @ 736 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/12/14-09:09:25.806646 7f16effff6c0 Recovering log #460
|
2026/01/04-22:23:04.753572 7f93ea7fc6c0 Recovering log #492
|
||||||
2025/12/14-09:09:25.817606 7f16effff6c0 Delete type=3 #458
|
2026/01/04-22:23:04.763198 7f93ea7fc6c0 Delete type=3 #490
|
||||||
2025/12/14-09:09:25.817666 7f16effff6c0 Delete type=0 #460
|
2026/01/04-22:23:04.763251 7f93ea7fc6c0 Delete type=0 #492
|
||||||
2025/12/14-20:45:56.701142 7f16eeffd6c0 Level-0 table #465: started
|
2026/01/04-22:40:50.941164 7f93e9ffb6c0 Level-0 table #498: started
|
||||||
2025/12/14-20:45:56.701194 7f16eeffd6c0 Level-0 table #465: 0 bytes OK
|
2026/01/04-22:40:50.941212 7f93e9ffb6c0 Level-0 table #498: 0 bytes OK
|
||||||
2025/12/14-20:45:56.707652 7f16eeffd6c0 Delete type=0 #463
|
2026/01/04-22:40:50.951122 7f93e9ffb6c0 Delete type=0 #496
|
||||||
2025/12/14-20:45:56.730266 7f16eeffd6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:50.985987 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-20:45:56.730327 7f16eeffd6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:50.986053 7f93e9ffb6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
BIN
packs-system/lf-skills/MANIFEST-000499
Normal file
BIN
packs-system/lf-skills/MANIFEST-000499
Normal file
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000164
|
MANIFEST-000196
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/12/14-20:51:28.551833 7f16ef7fe6c0 Recovering log #162
|
2026/01/12-14:22:56.089280 7fd478fff6c0 Recovering log #194
|
||||||
2025/12/14-20:51:28.562344 7f16ef7fe6c0 Delete type=3 #160
|
2026/01/12-14:22:56.099242 7fd478fff6c0 Delete type=3 #192
|
||||||
2025/12/14-20:51:28.562406 7f16ef7fe6c0 Delete type=0 #162
|
2026/01/12-14:22:56.099341 7fd478fff6c0 Delete type=0 #194
|
||||||
2025/12/14-21:17:40.735101 7f16eeffd6c0 Level-0 table #167: started
|
2026/01/12-14:27:05.839539 7fd4627fc6c0 Level-0 table #199: started
|
||||||
2025/12/14-21:17:40.735151 7f16eeffd6c0 Level-0 table #167: 0 bytes OK
|
2026/01/12-14:27:05.839559 7fd4627fc6c0 Level-0 table #199: 0 bytes OK
|
||||||
2025/12/14-21:17:40.741604 7f16eeffd6c0 Delete type=0 #165
|
2026/01/12-14:27:05.845408 7fd4627fc6c0 Delete type=0 #197
|
||||||
2025/12/14-21:17:40.771470 7f16eeffd6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.858412 7fd4627fc6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-21:17:40.781560 7f16eeffd6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.864408 7fd4627fc6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/12/14-09:09:25.891410 7f17053ff6c0 Recovering log #158
|
2026/01/04-22:23:04.807684 7f93ebfff6c0 Recovering log #190
|
||||||
2025/12/14-09:09:25.901634 7f17053ff6c0 Delete type=3 #156
|
2026/01/04-22:23:04.818050 7f93ebfff6c0 Delete type=3 #188
|
||||||
2025/12/14-09:09:25.901690 7f17053ff6c0 Delete type=0 #158
|
2026/01/04-22:23:04.818118 7f93ebfff6c0 Delete type=0 #190
|
||||||
2025/12/14-20:45:56.743394 7f16eeffd6c0 Level-0 table #163: started
|
2026/01/04-22:40:51.016662 7f93e9ffb6c0 Level-0 table #195: started
|
||||||
2025/12/14-20:45:56.743431 7f16eeffd6c0 Level-0 table #163: 0 bytes OK
|
2026/01/04-22:40:51.016694 7f93e9ffb6c0 Level-0 table #195: 0 bytes OK
|
||||||
2025/12/14-20:45:56.749813 7f16eeffd6c0 Delete type=0 #161
|
2026/01/04-22:40:51.026652 7f93e9ffb6c0 Delete type=0 #193
|
||||||
2025/12/14-20:45:56.767206 7f16eeffd6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:51.026790 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-20:45:56.791687 7f16eeffd6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:51.026806 7f93e9ffb6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000463
|
MANIFEST-000495
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/12/14-20:51:28.538266 7f1704bfe6c0 Recovering log #461
|
2026/01/12-14:22:56.075339 7fd463fff6c0 Recovering log #493
|
||||||
2025/12/14-20:51:28.549289 7f1704bfe6c0 Delete type=3 #459
|
2026/01/12-14:22:56.084731 7fd463fff6c0 Delete type=3 #491
|
||||||
2025/12/14-20:51:28.549364 7f1704bfe6c0 Delete type=0 #461
|
2026/01/12-14:22:56.084798 7fd463fff6c0 Delete type=0 #493
|
||||||
2025/12/14-21:17:40.704054 7f16eeffd6c0 Level-0 table #466: started
|
2026/01/12-14:27:05.782342 7fd4627fc6c0 Level-0 table #498: started
|
||||||
2025/12/14-21:17:40.704085 7f16eeffd6c0 Level-0 table #466: 0 bytes OK
|
2026/01/12-14:27:05.782393 7fd4627fc6c0 Level-0 table #498: 0 bytes OK
|
||||||
2025/12/14-21:17:40.711382 7f16eeffd6c0 Delete type=0 #464
|
2026/01/12-14:27:05.789274 7fd4627fc6c0 Delete type=0 #496
|
||||||
2025/12/14-21:17:40.718108 7f16eeffd6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.815132 7fd4627fc6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-21:17:40.718145 7f16eeffd6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2026/01/12-14:27:05.828301 7fd4627fc6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/12/14-09:09:25.874671 7f16effff6c0 Recovering log #457
|
2026/01/04-22:23:04.794525 7f93ea7fc6c0 Recovering log #489
|
||||||
2025/12/14-09:09:25.886173 7f16effff6c0 Delete type=3 #455
|
2026/01/04-22:23:04.804229 7f93ea7fc6c0 Delete type=3 #487
|
||||||
2025/12/14-09:09:25.886272 7f16effff6c0 Delete type=0 #457
|
2026/01/04-22:23:04.804296 7f93ea7fc6c0 Delete type=0 #489
|
||||||
2025/12/14-20:45:56.723132 7f16eeffd6c0 Level-0 table #462: started
|
2026/01/04-22:40:50.975950 7f93e9ffb6c0 Level-0 table #494: started
|
||||||
2025/12/14-20:45:56.723164 7f16eeffd6c0 Level-0 table #462: 0 bytes OK
|
2026/01/04-22:40:50.975985 7f93e9ffb6c0 Level-0 table #494: 0 bytes OK
|
||||||
2025/12/14-20:45:56.730108 7f16eeffd6c0 Delete type=0 #460
|
2026/01/04-22:40:50.985836 7f93e9ffb6c0 Delete type=0 #492
|
||||||
2025/12/14-20:45:56.730316 7f16eeffd6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:50.986029 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
2025/12/14-20:45:56.743378 7f16eeffd6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2026/01/04-22:40:50.986073 7f93e9ffb6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -47,7 +47,7 @@ i.lethalfantasy {
|
|||||||
|
|
||||||
.application.dialog.lethalfantasy {
|
.application.dialog.lethalfantasy {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
background-image: var(--background-image-base);
|
background-image: var(--background-image-base);
|
||||||
button:hover {
|
button:hover {
|
||||||
background: var(--color-dark-6);
|
background: var(--color-dark-6);
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
gap: 10px;
|
gap: 10px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
|
|
||||||
.monster-hp {
|
.monster-hp {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
@@ -46,7 +45,7 @@
|
|||||||
min-width: 2.2rem;
|
min-width: 2.2rem;
|
||||||
max-width: 2.2rem;
|
max-width: 2.2rem;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
}
|
}
|
||||||
.character-hp-max {
|
.character-hp-max {
|
||||||
clear: both;
|
clear: both;
|
||||||
@@ -58,7 +57,7 @@
|
|||||||
input {
|
input {
|
||||||
width: 3.2rem;
|
width: 3.2rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -121,9 +120,11 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
.monster-skill {
|
.monster-skill {
|
||||||
display: flex;
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, auto 2.5rem);
|
||||||
|
gap: 0.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-right: 0.5rem;
|
|
||||||
.rollable:hover,
|
.rollable:hover,
|
||||||
.rollable:focus {
|
.rollable:focus {
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
@@ -134,12 +135,9 @@
|
|||||||
max-width: 2.5rem;
|
max-width: 2.5rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
flex: 1;
|
|
||||||
min-width: 3.2rem;
|
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
.form-group {
|
.form-group {
|
||||||
flex: 1;
|
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
.form-fields {
|
.form-fields {
|
||||||
flex: none;
|
flex: none;
|
||||||
@@ -157,8 +155,9 @@
|
|||||||
|
|
||||||
.monster-movement {
|
.monster-movement {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
flex-direction: column;
|
||||||
margin-right: 0.5rem;
|
gap: 4px;
|
||||||
|
|
||||||
.rollable:hover,
|
.rollable:hover,
|
||||||
.rollable:focus {
|
.rollable:focus {
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
|||||||
@@ -241,6 +241,11 @@
|
|||||||
background-color: rgba(0, 0, 0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
||||||
|
&.monster-damage {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
justify-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.damage-roll-btn {
|
.damage-roll-btn {
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
background: linear-gradient(to bottom, #8b4513 0%, #6b3410 100%);
|
background: linear-gradient(to bottom, #8b4513 0%, #6b3410 100%);
|
||||||
|
|||||||
@@ -1,15 +1,34 @@
|
|||||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="skills" data-group="sheet">
|
<section
|
||||||
|
class="tab character-{{tab.id}} {{tab.cssClass}}"
|
||||||
|
data-tab="skills"
|
||||||
|
data-group="sheet"
|
||||||
|
>
|
||||||
<div class="main-div">
|
<div class="main-div">
|
||||||
|
|
||||||
|
{{#each skillsByCategory as |categoryData|}}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend data-tooltip="{{localize " LETHALFANTASY.Tooltip.skills"}}" data-tooltip-direction="UP">{{localize
|
<legend
|
||||||
"LETHALFANTASY.Label.skills"}}</legend>
|
data-tooltip="{{localize ' LETHALFANTASY.Tooltip.skills'}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>{{localize categoryData.label}}</legend>
|
||||||
<div class="skills">
|
<div class="skills">
|
||||||
{{#each skills as |item|}}
|
{{#each categoryData.skills as |item|}}
|
||||||
<div class="skill " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
class="skill"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<a class="rollable" data-roll-type="skill" data-roll-key="{{item.id}}">
|
<a
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-roll-key="{{item.id}}"
|
||||||
|
>
|
||||||
<i class="lf-roll-small fa-duotone fa-solid fa-dice-d10"></i>
|
<i class="lf-roll-small fa-duotone fa-solid fa-dice-d10"></i>
|
||||||
{{item.name}}
|
{{item.name}}
|
||||||
</a>
|
</a>
|
||||||
@@ -18,31 +37,62 @@
|
|||||||
+{{item.system.skillTotal}}
|
+{{item.system.skillTotal}}
|
||||||
</div>
|
</div>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<a
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
data-tooltip="{{localize 'LETHALFANTASY.Edit'}}"
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
data-action="edit"
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'LETHALFANTASY.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend data-tooltip="{{localize " LETHALFANTASY.Tooltip.gifts"}}" data-tooltip-direction="UP">{{localize
|
<legend
|
||||||
"LETHALFANTASY.Label.gifts"}}</legend>
|
data-tooltip="{{localize ' LETHALFANTASY.Tooltip.gifts'}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>{{localize "LETHALFANTASY.Label.gifts"}}</legend>
|
||||||
<div class="gifts">
|
<div class="gifts">
|
||||||
{{#each gifts as |item|}}
|
{{#each gifts as |item|}}
|
||||||
<div class="gift " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
class="gift"
|
||||||
<div class="name" data-tooltip="{{{item.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="name"
|
||||||
|
data-tooltip="{{{item.description}}}<br><br>{{item.path}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>
|
||||||
{{item.name}}
|
{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<a
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
data-tooltip="{{localize 'LETHALFANTASY.Edit'}}"
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
data-action="edit"
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'LETHALFANTASY.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@@ -50,20 +100,42 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend data-tooltip="{{localize " LETHALFANTASY.Tooltip.vulnerabilities"}}" data-tooltip-direction="UP">{{localize
|
<legend
|
||||||
"LETHALFANTASY.Label.vulnerabilities"}}</legend>
|
data-tooltip="{{localize ' LETHALFANTASY.Tooltip.vulnerabilities'}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>{{localize "LETHALFANTASY.Label.vulnerabilities"}}</legend>
|
||||||
<div class="vulnerabilities">
|
<div class="vulnerabilities">
|
||||||
{{#each vulnerabilities as |item|}}
|
{{#each vulnerabilities as |item|}}
|
||||||
<div class="vulnerability " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
class="vulnerability"
|
||||||
<div class="name" data-tooltip="{{{item.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="name"
|
||||||
|
data-tooltip="{{{item.description}}}<br><br>{{item.path}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>
|
||||||
{{item.name}}
|
{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<a
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
data-tooltip="{{localize 'LETHALFANTASY.Edit'}}"
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
data-action="edit"
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'LETHALFANTASY.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|||||||
@@ -120,13 +120,31 @@
|
|||||||
<div class="damage-buttons-title">{{localize
|
<div class="damage-buttons-title">{{localize
|
||||||
"LETHALFANTASY.Label.rollDamage"
|
"LETHALFANTASY.Label.rollDamage"
|
||||||
}}</div>
|
}}</div>
|
||||||
<div class="damage-buttons-grid">
|
<div class="damage-buttons-grid {{#if weaponDamageOptions.isMonster}}monster-damage{{/if}}">
|
||||||
|
{{#if weaponDamageOptions.isMonster}}
|
||||||
|
<button
|
||||||
|
class="damage-roll-btn"
|
||||||
|
data-weapon-id="{{weaponDamageOptions.weaponId}}"
|
||||||
|
data-damage-type="monster"
|
||||||
|
data-damage-formula="{{weaponDamageOptions.damageFormula}}"
|
||||||
|
data-damage-modifier="{{weaponDamageOptions.damageModifier}}"
|
||||||
|
data-is-monster="true"
|
||||||
|
title="{{weaponDamageOptions.weaponName}}"
|
||||||
|
>
|
||||||
|
<i class="fa-solid fa-dice"></i>
|
||||||
|
Damage:
|
||||||
|
{{weaponDamageOptions.damageFormula}}{{#if
|
||||||
|
weaponDamageOptions.damageModifier
|
||||||
|
}}+{{weaponDamageOptions.damageModifier}}{{/if}}
|
||||||
|
</button>
|
||||||
|
{{else}}
|
||||||
{{#if weaponDamageOptions.damageS}}
|
{{#if weaponDamageOptions.damageS}}
|
||||||
<button
|
<button
|
||||||
class="damage-roll-btn"
|
class="damage-roll-btn"
|
||||||
data-weapon-id="{{weaponDamageOptions.weaponId}}"
|
data-weapon-id="{{weaponDamageOptions.weaponId}}"
|
||||||
data-damage-type="small"
|
data-damage-type="small"
|
||||||
data-damage-formula="{{weaponDamageOptions.damageS}}"
|
data-damage-formula="{{weaponDamageOptions.damageS}}"
|
||||||
|
data-is-monster="false"
|
||||||
title="{{localize 'LETHALFANTASY.Label.weapon-damage-small'}}"
|
title="{{localize 'LETHALFANTASY.Label.weapon-damage-small'}}"
|
||||||
>
|
>
|
||||||
<i class="fa-solid fa-dice-d6"></i>
|
<i class="fa-solid fa-dice-d6"></i>
|
||||||
@@ -139,12 +157,14 @@
|
|||||||
data-weapon-id="{{weaponDamageOptions.weaponId}}"
|
data-weapon-id="{{weaponDamageOptions.weaponId}}"
|
||||||
data-damage-type="medium"
|
data-damage-type="medium"
|
||||||
data-damage-formula="{{weaponDamageOptions.damageM}}"
|
data-damage-formula="{{weaponDamageOptions.damageM}}"
|
||||||
|
data-is-monster="false"
|
||||||
title="{{localize 'LETHALFANTASY.Label.weapon-damage-medium'}}"
|
title="{{localize 'LETHALFANTASY.Label.weapon-damage-medium'}}"
|
||||||
>
|
>
|
||||||
<i class="fa-solid fa-dice-d20"></i>
|
<i class="fa-solid fa-dice-d20"></i>
|
||||||
{{localize "LETHALFANTASY.Label.weapon-damage-medium"}}
|
{{localize "LETHALFANTASY.Label.weapon-damage-medium"}}
|
||||||
</button>
|
</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -6,80 +6,175 @@
|
|||||||
<div class="monster-pc monster-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
<div class="monster-pc monster-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
<div class="monster-left">
|
<div class="monster-left">
|
||||||
<div class="monster-left-image">
|
<div class="monster-left-image">
|
||||||
<img class="monster-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
<img
|
||||||
data-tooltip="{{actor.name}}" />
|
class="monster-img"
|
||||||
|
src="{{actor.img}}"
|
||||||
|
data-edit="img"
|
||||||
|
data-action="editImage"
|
||||||
|
data-tooltip="{{actor.name}}"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="monster-characteristics monster-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
<fieldset
|
||||||
|
class="monster-characteristics monster-characteristics-{{ifThen
|
||||||
|
isPlayMode
|
||||||
|
'play'
|
||||||
|
'edit'
|
||||||
|
}}"
|
||||||
|
>
|
||||||
<div class="flexrow monster-hp">
|
<div class="flexrow monster-hp">
|
||||||
<span class="name">{{localize "LETHALFANTASY.Label.HP"}}</span>
|
<span class="name">{{localize "LETHALFANTASY.Label.HP"}}</span>
|
||||||
{{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode
|
{{formInput
|
||||||
classes="monster-hp-value"}}
|
systemFields.hp.fields.value
|
||||||
|
value=system.hp.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
classes="monster-hp-value"
|
||||||
|
}}
|
||||||
/
|
/
|
||||||
{{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="monster-hp-value"}}
|
{{formInput
|
||||||
|
systemFields.hp.fields.max
|
||||||
|
value=system.hp.max
|
||||||
|
disabled=isPlayMode
|
||||||
|
classes="monster-hp-value"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow monster-hp">
|
<div class="flexrow monster-hp">
|
||||||
<span class="damage-resistance">{{localize "LETHALFANTASY.Label.damageResistance"}}</span>
|
<span class="name">{{localize
|
||||||
{{formInput systemFields.hp.fields.damageResistance value=system.hp.damageResistance disabled=isPlayMode
|
"LETHALFANTASY.Label.damageResistance"
|
||||||
classes="monster-hp-value"}}
|
}}</span>
|
||||||
|
{{formInput
|
||||||
|
systemFields.hp.fields.damageResistance
|
||||||
|
value=system.hp.damageResistance
|
||||||
|
disabled=isPlayMode
|
||||||
|
classes="monster-hp-value"
|
||||||
|
}}
|
||||||
|
<span class="name">{{localize
|
||||||
|
"LETHALFANTASY.Label.shieldDamageReduction"
|
||||||
|
}}</span>
|
||||||
|
{{formInput
|
||||||
|
systemFields.combat.fields.shieldDamageReduction
|
||||||
|
value=system.combat.shieldDamageReduction
|
||||||
|
disabled=isPlayMode
|
||||||
|
classes="monster-hp-value"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="flexrow monster-hp">
|
||||||
|
<span class="name"><a
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="shield-defense"
|
||||||
|
data-roll-dice={{system.combat.shieldDefenseDice}}
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||||
|
"LETHALFANTASY.Label.shieldDefenseDice"
|
||||||
|
}}</a></span>
|
||||||
|
{{formInput
|
||||||
|
systemFields.combat.fields.shieldDefenseDice
|
||||||
|
value=system.combat.shieldDefenseDice
|
||||||
|
disabled=isPlayMode
|
||||||
|
classes="monster-hp-value"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="monster-right">
|
<div class="monster-right">
|
||||||
<div class="monster-name">
|
<div class="monster-name">
|
||||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
{{formInput
|
||||||
<a class="control" data-action="toggleSheet" data-tooltip="LETHALFANTASY.ToggleSheet"
|
fields.name
|
||||||
data-tooltip-direction="UP">
|
value=source.name
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
<a
|
||||||
|
class="control"
|
||||||
|
data-action="toggleSheet"
|
||||||
|
data-tooltip="LETHALFANTASY.ToggleSheet"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>
|
||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="monster-characteristics monster-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
<fieldset
|
||||||
|
class="monster-characteristics monster-characteristics-{{ifThen
|
||||||
|
isPlayMode
|
||||||
|
'play'
|
||||||
|
'edit'
|
||||||
|
}}"
|
||||||
|
>
|
||||||
<legend>{{localize "LETHALFANTASY.Label.Saves"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Label.Saves"}}</legend>
|
||||||
<div class="monster-saves">
|
<div class="monster-saves">
|
||||||
<div class="monster-save">
|
<div class="monster-save">
|
||||||
<span class="name"><a class="rollable" data-roll-type="save" data-roll-key="will"><i
|
<span class="name"><a
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
class="rollable"
|
||||||
|
data-roll-type="save"
|
||||||
|
data-roll-key="will"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||||
{{localize "LETHALFANTASY.Label.saves.will"}}
|
{{localize "LETHALFANTASY.Label.saves.will"}}
|
||||||
</a></span>
|
</a></span>
|
||||||
{{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode
|
{{formField
|
||||||
|
systemFields.saves.fields.will.fields.value
|
||||||
|
value=system.saves.will.value
|
||||||
|
disabled=isPlayMode
|
||||||
}}
|
}}
|
||||||
<span class="name">
|
<span class="name">
|
||||||
<a class="rollable" data-roll-type="save" data-roll-key="dodge"><i
|
<a
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
class="rollable"
|
||||||
|
data-roll-type="save"
|
||||||
|
data-roll-key="dodge"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||||
{{localize "LETHALFANTASY.Label.saves.dodge"}}
|
{{localize "LETHALFANTASY.Label.saves.dodge"}}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
{{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value
|
{{formField
|
||||||
disabled=isPlayMode}}
|
systemFields.saves.fields.dodge.fields.value
|
||||||
|
value=system.saves.dodge.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
<span class="name">
|
<span class="name">
|
||||||
<a class="rollable" data-roll-type="save" data-roll-key="toughness"><i
|
<a
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
class="rollable"
|
||||||
|
data-roll-type="save"
|
||||||
|
data-roll-key="toughness"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||||
{{localize "LETHALFANTASY.Label.saves.toughness"}}
|
{{localize "LETHALFANTASY.Label.saves.toughness"}}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
{{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value
|
{{formField
|
||||||
disabled=isPlayMode}}
|
systemFields.saves.fields.toughness.fields.value
|
||||||
|
value=system.saves.toughness.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="monster-save">
|
<div class="monster-save">
|
||||||
<span class="name">
|
<span class="name">
|
||||||
<a class="rollable" data-roll-type="save" data-roll-key="contagion"><i
|
<a
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
class="rollable"
|
||||||
|
data-roll-type="save"
|
||||||
|
data-roll-key="contagion"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||||
{{localize "LETHALFANTASY.Label.saves.contagion"}}
|
{{localize "LETHALFANTASY.Label.saves.contagion"}}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
{{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value
|
{{formField
|
||||||
disabled=isPlayMode}}
|
systemFields.saves.fields.contagion.fields.value
|
||||||
|
value=system.saves.contagion.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
<span class="name">
|
<span class="name">
|
||||||
<a class="rollable" data-roll-type="save" data-roll-key="poison"><i
|
<a
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
class="rollable"
|
||||||
|
data-roll-type="save"
|
||||||
|
data-roll-key="poison"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||||
{{localize "LETHALFANTASY.Label.saves.poison"}}
|
{{localize "LETHALFANTASY.Label.saves.poison"}}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
{{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value
|
{{formField
|
||||||
disabled=isPlayMode }}
|
systemFields.saves.fields.poison.fields.value
|
||||||
|
value=system.saves.poison.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
<!-- <span class="name">
|
<!-- <span class="name">
|
||||||
<a class="rollable" data-roll-type="save" data-roll-key="paincourage" data-roll-dice="D20" data-tooltip="Pain/Courage check on wound of..."><i
|
<a class="rollable" data-roll-type="save" data-roll-key="paincourage" data-roll-dice="D20" data-tooltip="Pain/Courage check on wound of..."><i
|
||||||
@@ -98,61 +193,81 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="monster-characteristics monster-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
<fieldset
|
||||||
|
class="monster-characteristics monster-characteristics-{{ifThen
|
||||||
|
isPlayMode
|
||||||
|
'play'
|
||||||
|
'edit'
|
||||||
|
}}"
|
||||||
|
>
|
||||||
<legend>{{localize "LETHALFANTASY.Label.skills"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Label.skills"}}</legend>
|
||||||
<div class="monster-skills">
|
<div class="monster-skills">
|
||||||
<div class="monster-skill">
|
<div class="monster-skill">
|
||||||
<span class="name"><a class="rollable" data-roll-type="monster-skill" data-roll-key="resistTorture"><i
|
<span class="name"><a
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
class="rollable"
|
||||||
"LETHALFANTASY.Label.resistTorture"}}</a></span>
|
data-roll-type="monster-skill"
|
||||||
{{formField systemFields.resists.fields.resistTorture.fields.value
|
data-roll-key="resistTorture"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||||
|
"LETHALFANTASY.Label.resistTorture"
|
||||||
|
}}</a></span>
|
||||||
|
{{formField
|
||||||
|
systemFields.resists.fields.resistTorture.fields.value
|
||||||
value=system.resists.resistTorture.value
|
value=system.resists.resistTorture.value
|
||||||
disabled=isPlayMode
|
disabled=isPlayMode
|
||||||
}}
|
}}
|
||||||
<span class="name"><a class="rollable" data-roll-type="monster-skill" data-roll-key="resistPerformance"><i
|
<span class="name"><a
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
class="rollable"
|
||||||
"LETHALFANTASY.Label.resistPerformance"}}</a></span>
|
data-roll-type="monster-skill"
|
||||||
{{formField systemFields.resists.fields.resistPerformance.fields.value
|
data-roll-key="resistPerformance"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||||
|
"LETHALFANTASY.Label.resistPerformance"
|
||||||
|
}}</a></span>
|
||||||
|
{{formField
|
||||||
|
systemFields.resists.fields.resistPerformance.fields.value
|
||||||
value=system.resists.resistPerformance.value
|
value=system.resists.resistPerformance.value
|
||||||
disabled=isPlayMode
|
disabled=isPlayMode
|
||||||
}}
|
}}
|
||||||
<span class="name"><a class="rollable" data-roll-type="monster-skill"
|
<span class="name"><a
|
||||||
data-roll-key="resistIntimidation"><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
class="rollable"
|
||||||
"LETHALFANTASY.Label.resistIntimidation"}}</a></span>
|
data-roll-type="monster-skill"
|
||||||
{{formField systemFields.resists.fields.resistIntimidation.fields.value
|
data-roll-key="resistIntimidation"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||||
|
"LETHALFANTASY.Label.resistIntimidation"
|
||||||
|
}}</a></span>
|
||||||
|
{{formField
|
||||||
|
systemFields.resists.fields.resistIntimidation.fields.value
|
||||||
value=system.resists.resistIntimidation.value
|
value=system.resists.resistIntimidation.value
|
||||||
disabled=isPlayMode }}
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
<span class="name"><a class="rollable" data-roll-type="monster-skill" data-roll-key="perception"><i
|
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
|
||||||
"LETHALFANTASY.Label.perception"}}</a></span>
|
|
||||||
{{formField systemFields.resists.fields.perception.fields.value value=system.resists.perception.value
|
|
||||||
disabled=isPlayMode }}
|
|
||||||
|
|
||||||
<span class="name"><a class="rollable" data-roll-type="monster-skill" data-roll-key="stealth"><i
|
|
||||||
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
|
||||||
"LETHALFANTASY.Label.stealth"}}</a></span>
|
|
||||||
{{formField systemFields.resists.fields.stealth.fields.value value=system.resists.stealth.value
|
|
||||||
disabled=isPlayMode }}
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="monster-skill">
|
||||||
</fieldset>
|
<span class="name"><a
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="monster-skill"
|
||||||
|
data-roll-key="perception"
|
||||||
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||||
|
"LETHALFANTASY.Label.perception"
|
||||||
|
}}</a></span>
|
||||||
|
{{formField
|
||||||
|
systemFields.resists.fields.perception.fields.value
|
||||||
|
value=system.resists.perception.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
<span class="name"><a
|
||||||
<fieldset class="monster-characteristics monster-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
class="rollable"
|
||||||
<legend>{{localize "LETHALFANTASY.Label.Movement"}}</legend>
|
data-roll-type="monster-skill"
|
||||||
<div class="monster-movements">
|
data-roll-key="stealth"
|
||||||
<div class="monster-movement">
|
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||||
<span class="name">{{localize "LETHALFANTASY.Label.movement.walk"}}</span>
|
"LETHALFANTASY.Label.stealth"
|
||||||
{{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}}
|
}}</a></span>
|
||||||
<span class="name">{{localize "LETHALFANTASY.Label.movement.jog"}}</span>
|
{{formField
|
||||||
{{formField systemFields.movement.fields.jog value=system.movement.jog disabled=isPlayMode}}
|
systemFields.resists.fields.stealth.fields.value
|
||||||
<span class="name">{{localize "LETHALFANTASY.Label.movement.run"}}</span>
|
value=system.resists.stealth.value
|
||||||
{{formField systemFields.movement.fields.run value=system.movement.run disabled=isPlayMode}}
|
disabled=isPlayMode
|
||||||
<span class="name">{{localize "LETHALFANTASY.Label.movement.sprint"}}</span>
|
}}
|
||||||
{{formField systemFields.movement.fields.sprint value=system.movement.sprint disabled=isPlayMode}}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@@ -160,23 +275,91 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="monster-characteristics monster-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
<fieldset
|
||||||
|
class="monster-characteristics monster-characteristics-{{ifThen
|
||||||
|
isPlayMode
|
||||||
|
'play'
|
||||||
|
'edit'
|
||||||
|
}}"
|
||||||
|
>
|
||||||
<legend>{{localize "LETHALFANTASY.Label.characteristics"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Label.characteristics"}}</legend>
|
||||||
<div class="monster-characteristic">
|
<div class="monster-characteristic">
|
||||||
<span>{{localize "LETHALFANTASY.Label.int"}}</span>
|
<span>{{localize "LETHALFANTASY.Label.int"}}</span>
|
||||||
{{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value
|
{{formField
|
||||||
disabled=isPlayMode data-char-id="int" }}
|
systemFields.characteristics.fields.int.fields.value
|
||||||
|
value=system.characteristics.int.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
data-char-id="int"
|
||||||
|
}}
|
||||||
|
|
||||||
{{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent
|
{{formField
|
||||||
disabled=isPlayMode type="number" }}
|
systemFields.characteristics.fields.int.fields.percent
|
||||||
|
value=system.characteristics.int.percent
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="monster-characteristic">
|
<div class="monster-characteristic">
|
||||||
<span>{{localize "LETHALFANTASY.Label.dex"}}</span>
|
<span>{{localize "LETHALFANTASY.Label.dex"}}</span>
|
||||||
{{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value
|
{{formField
|
||||||
disabled=isPlayMode data-char-id="wis" }}
|
systemFields.characteristics.fields.dex.fields.value
|
||||||
|
value=system.characteristics.dex.value
|
||||||
|
disabled=isPlayMode
|
||||||
|
data-char-id="wis"
|
||||||
|
}}
|
||||||
|
|
||||||
{{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent
|
{{formField
|
||||||
disabled=isPlayMode type="number" }}
|
systemFields.characteristics.fields.dex.fields.percent
|
||||||
|
value=system.characteristics.dex.percent
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<legend>{{localize "LETHALFANTASY.Label.Movement"}}</legend>
|
||||||
|
<div class="monster-movements">
|
||||||
|
<div class="monster-movement">
|
||||||
|
<div class="flexrow monster-hp">
|
||||||
|
<span class="name">{{localize
|
||||||
|
"LETHALFANTASY.Label.movement.walk"
|
||||||
|
}}</span>
|
||||||
|
{{formField
|
||||||
|
systemFields.movement.fields.walk
|
||||||
|
value=system.movement.walk
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="flexrow monster-hp">
|
||||||
|
<span class="name">{{localize
|
||||||
|
"LETHALFANTASY.Label.movement.jog"
|
||||||
|
}}</span>
|
||||||
|
{{formField
|
||||||
|
systemFields.movement.fields.jog
|
||||||
|
value=system.movement.jog
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="flexrow monster-hp">
|
||||||
|
<span class="name">{{localize
|
||||||
|
"LETHALFANTASY.Label.movement.run"
|
||||||
|
}}</span>
|
||||||
|
{{formField
|
||||||
|
systemFields.movement.fields.run
|
||||||
|
value=system.movement.run
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="flexrow monster-hp">
|
||||||
|
<span class="name">{{localize
|
||||||
|
"LETHALFANTASY.Label.movement.sprint"
|
||||||
|
}}</span>
|
||||||
|
{{formField
|
||||||
|
systemFields.movement.fields.sprint
|
||||||
|
value=system.movement.sprint
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user