Fight helper !
This commit is contained in:
@@ -3041,6 +3041,9 @@ i.fvtt-cthulhu-eternal {
|
|||||||
font-size: calc(var(--font-size-standard) * 2);
|
font-size: calc(var(--font-size-standard) * 2);
|
||||||
color: var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
}
|
}
|
||||||
|
.li-apply-wounds {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.dice-roll {
|
.dice-roll {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
@@ -171,6 +171,15 @@ Hooks.on("renderChatMessageHTML", (message, html, data) => {
|
|||||||
CthulhuEternalUtils.applySANType(message, event)
|
CthulhuEternalUtils.applySANType(message, event)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if (game.user.isGM) {
|
||||||
|
$(html).find(".li-apply-wounds").each((i, btn) => {
|
||||||
|
btn.style.display = "inline"
|
||||||
|
})
|
||||||
|
$(html).find(".li-apply-wounds-select").click((event) => {
|
||||||
|
CthulhuEternalUtils.applyWounds(message, event)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -730,7 +730,8 @@
|
|||||||
"visibility": "Visibility",
|
"visibility": "Visibility",
|
||||||
"rangedRange": "Range",
|
"rangedRange": "Range",
|
||||||
"aimingLastRound": "Aiming Last Round (+20)",
|
"aimingLastRound": "Aiming Last Round (+20)",
|
||||||
"aimingWithSight": "Aiming with Sight (+20)"
|
"aimingWithSight": "Aiming with Sight (+20)",
|
||||||
|
"applyWounds": "Apply To"
|
||||||
},
|
},
|
||||||
"ChatMessage": {
|
"ChatMessage": {
|
||||||
"exhausted": "Your protagonist is exhausted. He loses [[/r 1d6]] Willpower Points."
|
"exhausted": "Your protagonist is exhausted. He loses [[/r 1d6]] Willpower Points."
|
||||||
@@ -755,6 +756,9 @@
|
|||||||
"rollDamage": "Roll Damage"
|
"rollDamage": "Roll Damage"
|
||||||
},
|
},
|
||||||
"Chat": {
|
"Chat": {
|
||||||
|
"noArmor": "No armor absorbed damage.",
|
||||||
|
"armorAbsorbed": "Armor absorbed {armor} damage.",
|
||||||
|
"woundsApplied": "Wounds applied to {name}: {effectiveWounds} (armor absorbed : {armorText})"
|
||||||
},
|
},
|
||||||
"Notifications": {
|
"Notifications": {
|
||||||
"NoWeaponSkill": "No weapon skill found for this weapon. Check Weapon definition or available skills/era",
|
"NoWeaponSkill": "No weapon skill found for this weapon. Check Weapon definition or available skills/era",
|
||||||
|
@@ -751,7 +751,8 @@
|
|||||||
"visibility": "Visibilité",
|
"visibility": "Visibilité",
|
||||||
"rangedRange": "Portée",
|
"rangedRange": "Portée",
|
||||||
"aimingLastRound": "Visée lors du dernier round (+20)",
|
"aimingLastRound": "Visée lors du dernier round (+20)",
|
||||||
"aimingWithSight": "Visée avec lunette (+20)"
|
"aimingWithSight": "Visée avec lunette (+20)",
|
||||||
|
"applyWounds": "Appliquer à"
|
||||||
},
|
},
|
||||||
"ChatMessage": {
|
"ChatMessage": {
|
||||||
"exhausted": "Votre protagoniste est épuisé. Il perd [[/r 1d6]] Points de Volonté."
|
"exhausted": "Votre protagoniste est épuisé. Il perd [[/r 1d6]] Points de Volonté."
|
||||||
@@ -776,6 +777,9 @@
|
|||||||
"rollDamage": "Lancer les dégâts"
|
"rollDamage": "Lancer les dégâts"
|
||||||
},
|
},
|
||||||
"Chat": {
|
"Chat": {
|
||||||
|
"armorAbsorbed": "L'armure a absorbé {armor} points de dégâts.",
|
||||||
|
"noArmor": "Pas d'armure.",
|
||||||
|
"woundsApplied": "Blessures appliquées à {name} : {effectiveWounds} (armure absorbée : {armorText})"
|
||||||
},
|
},
|
||||||
"Notifications": {
|
"Notifications": {
|
||||||
"NoWeaponSkill": "Aucune compétence associée n'a été trouvé pour cette arme. Vérifier la définition de l'arme ainsi que l'époque configurée.",
|
"NoWeaponSkill": "Aucune compétence associée n'a été trouvé pour cette arme. Vérifier la définition de l'arme ainsi que l'époque configurée.",
|
||||||
|
@@ -23,8 +23,10 @@ export default class CthulhuEternalActor extends Actor {
|
|||||||
data.items.push(skill.toObject())
|
data.items.push(skill.toObject())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.items.push({ type:"weapon", img: "systems/fvtt-cthulhu-eternal/assets/icons/icon_fist.svg",
|
data.items.push({
|
||||||
name: game.i18n.localize("CTHULHUETERNAL.Label.Unarmed"), system: { damage: "1d4-1", weaponType: "unarmed" } })
|
type: "weapon", img: "systems/fvtt-cthulhu-eternal/assets/icons/icon_fist.svg",
|
||||||
|
name: game.i18n.localize("CTHULHUETERNAL.Label.Unarmed"), system: { damage: "1d4-1", weaponType: "unarmed" }
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.create(data, options);
|
return super.create(data, options);
|
||||||
@@ -43,6 +45,39 @@ export default class CthulhuEternalActor extends Actor {
|
|||||||
return super._onUpdate(changed, options, userId)
|
return super._onUpdate(changed, options, userId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyWounds(woundData) {
|
||||||
|
let updates = {}
|
||||||
|
// Get available armor
|
||||||
|
let armors = this.items.filter(i => i.type === "armor" && i.system.equipped)
|
||||||
|
let totalArmor = 0
|
||||||
|
for (let armor of armors) {
|
||||||
|
totalArmor += armor.system.protection
|
||||||
|
}
|
||||||
|
let effectiveWounds = Math.max(woundData.rollResult - totalArmor, 0)
|
||||||
|
if (woundData.isLethal) {
|
||||||
|
effectiveWounds = this.system.hp.value // Killed!
|
||||||
|
}
|
||||||
|
// Apply armor reduction
|
||||||
|
let hp = Math.max(this.system.hp.value - effectiveWounds, 0)
|
||||||
|
if (this.system.hp.value !== hp) {
|
||||||
|
updates[`system.hp.value`] = hp
|
||||||
|
}
|
||||||
|
if (Object.keys(updates).length > 0) {
|
||||||
|
this.update(updates)
|
||||||
|
}
|
||||||
|
// Chat message for GM only
|
||||||
|
if (game.user.isGM) {
|
||||||
|
let armorText = totalArmor > 0 ? game.i18n.format("CTHULHUETERNAL.Chat.armorAbsorbed", { armor: totalArmor }) : game.i18n.localize("CTHULHUETERNAL.Chat.noArmor")
|
||||||
|
ChatMessage.create({
|
||||||
|
user: game.user.id,
|
||||||
|
speaker: { alias: this.name },
|
||||||
|
rollMode: "gmroll",
|
||||||
|
content: game.i18n.format("CTHULHUETERNAL.Chat.woundsApplied", { name: this.name, effectiveWounds, armorText }),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async createEmbeddedDocuments(embeddedName, data, operation) {
|
async createEmbeddedDocuments(embeddedName, data, operation) {
|
||||||
let newData = []
|
let newData = []
|
||||||
if (embeddedName === "Item") {
|
if (embeddedName === "Item") {
|
||||||
@@ -71,18 +106,18 @@ export default class CthulhuEternalActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async _preCreate(data, options, user) {
|
async _preCreate(data, options, user) {
|
||||||
await super._preCreate(data, options, user)
|
await super._preCreate(data, options, user)
|
||||||
|
|
||||||
// Configure prototype token settings
|
// Configure prototype token settings
|
||||||
const prototypeToken = {}
|
const prototypeToken = {}
|
||||||
if (this.type === "protagonist") {
|
if (this.type === "protagonist") {
|
||||||
Object.assign(prototypeToken, {
|
Object.assign(prototypeToken, {
|
||||||
sight: { enabled: true },
|
sight: { enabled: true },
|
||||||
actorLink: true,
|
actorLink: true,
|
||||||
disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY,
|
disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY,
|
||||||
})
|
})
|
||||||
this.updateSource({ prototypeToken })
|
this.updateSource({ prototypeToken })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -146,6 +146,15 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
|
|
||||||
ammoUsed = Number(ammoUsed)
|
ammoUsed = Number(ammoUsed)
|
||||||
|
|
||||||
|
let combatants = []
|
||||||
|
if (game?.combat?.combatants) {
|
||||||
|
for (let c of game.combat.combatants) {
|
||||||
|
if (c.actor.id !== actor.id) {
|
||||||
|
combatants.push({ id: c.actor.id, name: c.name })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (weapon.system.lethality > 0) {
|
if (weapon.system.lethality > 0) {
|
||||||
let lethalityRoll = new Roll("1d100")
|
let lethalityRoll = new Roll("1d100")
|
||||||
await lethalityRoll.evaluate()
|
await lethalityRoll.evaluate()
|
||||||
@@ -159,20 +168,22 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
}
|
}
|
||||||
let wounds = Math.floor(lethalityRoll.total / 10) + (lethalityRoll.total % 10)
|
let wounds = Math.floor(lethalityRoll.total / 10) + (lethalityRoll.total % 10)
|
||||||
let msgData = {
|
let msgData = {
|
||||||
|
actorId: actor.id,
|
||||||
weapon,
|
weapon,
|
||||||
wounds,
|
wounds,
|
||||||
lethalScore,
|
lethalScore,
|
||||||
isLethal,
|
isLethal,
|
||||||
ammoUsed,
|
ammoUsed,
|
||||||
rollResult: lethalityRoll.total,
|
rollResult: lethalityRoll.total,
|
||||||
|
combatants: combatants
|
||||||
}
|
}
|
||||||
let flavor = await foundry.applications.handlebars.renderTemplate("systems/fvtt-cthulhu-eternal/templates/chat-lethal-damage.hbs", msgData)
|
let flavor = await foundry.applications.handlebars.renderTemplate("systems/fvtt-cthulhu-eternal/templates/chat-lethal-damage.hbs", msgData)
|
||||||
ChatMessage.create({
|
let msg = await ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: flavor,
|
content: flavor,
|
||||||
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
||||||
}, { rollMode: options.rollMode, create: true })
|
}, { rollMode: options.rollMode, create: true })
|
||||||
|
await msg.setFlag("fvtt-cthulhu-eternal", "woundData", msgData)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,21 +201,24 @@ export default class CthulhuEternalRoll extends Roll {
|
|||||||
"system.ammo.value": Math.max(0, weapon.system.ammo.value - ammoUsed)
|
"system.ammo.value": Math.max(0, weapon.system.ammo.value - ammoUsed)
|
||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
console.log("Weapon damage formula", formula, weapon, ammoUsed)
|
|
||||||
let damageRoll = new Roll(formula)
|
let damageRoll = new Roll(formula)
|
||||||
await damageRoll.evaluate()
|
await damageRoll.evaluate()
|
||||||
let msgData = {
|
let msgData = {
|
||||||
weapon,
|
actorId: actor.id,
|
||||||
formula,
|
weapon,
|
||||||
ammoUsed,
|
formula,
|
||||||
rollResult: damageRoll.total,
|
ammoUsed,
|
||||||
}
|
rollResult: damageRoll.total,
|
||||||
let flavor = await foundry.applications.handlebars.renderTemplate("systems/fvtt-cthulhu-eternal/templates/chat-regular-damage.hbs", msgData)
|
combatants: combatants
|
||||||
ChatMessage.create({
|
}
|
||||||
user: game.user.id,
|
let flavor = await foundry.applications.handlebars.renderTemplate("systems/fvtt-cthulhu-eternal/templates/chat-regular-damage.hbs", msgData)
|
||||||
content: flavor,
|
let msg = await ChatMessage.create({
|
||||||
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
user: game.user.id,
|
||||||
}, { rollMode: options.rollMode, create: true })
|
content: flavor,
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
||||||
|
}, { rollMode: options.rollMode, create: true })
|
||||||
|
await msg.setFlag("fvtt-cthulhu-eternal", "woundData", msgData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -229,7 +229,7 @@ export default class CthulhuEternalUtils {
|
|||||||
let healingFormula = rollData.rollItem.system.healingFormula
|
let healingFormula = rollData.rollItem.system.healingFormula
|
||||||
let healingMsg = "CTHULHUETERNAL.Label.healingRoll"
|
let healingMsg = "CTHULHUETERNAL.Label.healingRoll"
|
||||||
if (rollData.resultType === "successCritical") {
|
if (rollData.resultType === "successCritical") {
|
||||||
healingFormula += " * 2"
|
healingFormula += " * 2"
|
||||||
}
|
}
|
||||||
if (rollData.resultType === "failureCritical") {
|
if (rollData.resultType === "failureCritical") {
|
||||||
healingMsg = "CTHULHUETERNAL.Label.healingRollFailure"
|
healingMsg = "CTHULHUETERNAL.Label.healingRollFailure"
|
||||||
@@ -268,11 +268,11 @@ export default class CthulhuEternalUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static async registerBabeleTranslations(babele) {
|
static async registerBabeleTranslations(babele) {
|
||||||
babele.registerConverters( {
|
babele.registerConverters({
|
||||||
'translateRangeUnit': (originalValue) => {
|
'translateRangeUnit': (originalValue) => {
|
||||||
return CthulhuEternalUtils.translateRangeUnit(originalValue)
|
return CthulhuEternalUtils.translateRangeUnit(originalValue)
|
||||||
},
|
},
|
||||||
'translateRange' : (originalValue) => {
|
'translateRange': (originalValue) => {
|
||||||
return CthulhuEternalUtils.translateRange(originalValue)
|
return CthulhuEternalUtils.translateRange(originalValue)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -280,7 +280,7 @@ export default class CthulhuEternalUtils {
|
|||||||
|
|
||||||
static async damageRoll(rollMessage, formula = null) {
|
static async damageRoll(rollMessage, formula = null) {
|
||||||
let rollData = rollMessage.rolls[0]?.options?.rollData
|
let rollData = rollMessage.rolls[0]?.options?.rollData
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = game.actors.get(rollData.actorId)
|
||||||
if (!actor) {
|
if (!actor) {
|
||||||
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Label.noActorFound"))
|
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Label.noActorFound"))
|
||||||
return
|
return
|
||||||
@@ -336,8 +336,8 @@ export default class CthulhuEternalUtils {
|
|||||||
rejectClose: false, // Click on Close button will not launch an error
|
rejectClose: false, // Click on Close button will not launch an error
|
||||||
render: (event, dialog) => {
|
render: (event, dialog) => {
|
||||||
$(".nudged-score-select").change(event => {
|
$(".nudged-score-select").change(event => {
|
||||||
dialogContext.nudgedValue = Number(event.target.value)+1
|
dialogContext.nudgedValue = Number(event.target.value) + 1
|
||||||
dialogContext.wpCost = Math.ceil(Math.abs(rollMessage.rolls[0].total - dialogContext.nudgedValue) / 5)
|
dialogContext.wpCost = Math.ceil(Math.abs(rollMessage.rolls[0].total - dialogContext.nudgedValue) / 5)
|
||||||
$("#nudged-wp-cost").val(dialogContext.wpCost)
|
$("#nudged-wp-cost").val(dialogContext.wpCost)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -375,4 +375,24 @@ export default class CthulhuEternalUtils {
|
|||||||
document.documentElement.style.setProperty('--background-image-base', `linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/${era}_background_main.webp")`);
|
document.documentElement.style.setProperty('--background-image-base', `linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/${era}_background_main.webp")`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static applyWounds(message, event) {
|
||||||
|
let woundData = message.getFlag("fvtt-cthulhu-eternal", "woundData")
|
||||||
|
if (!woundData) {
|
||||||
|
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.noRollDataFound"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let actor = game.actors.get(woundData.actorId)
|
||||||
|
if (!actor) {
|
||||||
|
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.noActorFound"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Get the targetted actorId from the HTML select event
|
||||||
|
let targetActorId = event.target.value
|
||||||
|
let targetActor = game.actors.get(targetActorId)
|
||||||
|
if (!targetActor) {
|
||||||
|
ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.noTargetActorFound") + targetActorId)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
targetActor.applyWounds(woundData)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000230
|
MANIFEST-000249
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
2025/07/29-18:28:11.485462 7fbfdeffd6c0 Recovering log #227
|
2025/10/01-10:24:47.689741 7fc4987f86c0 Recovering log #246
|
||||||
2025/07/29-18:28:11.542963 7fbfdeffd6c0 Delete type=3 #225
|
2025/10/01-10:24:47.787870 7fc4987f86c0 Delete type=3 #244
|
||||||
2025/07/29-18:28:11.543020 7fbfdeffd6c0 Delete type=0 #227
|
2025/10/01-10:24:47.787986 7fc4987f86c0 Delete type=0 #246
|
||||||
2025/07/29-18:28:25.939648 7fbd3ffff6c0 Level-0 table #233: started
|
2025/10/01-11:24:12.555415 7fc497ff76c0 Level-0 table #252: started
|
||||||
2025/07/29-18:28:25.939685 7fbd3ffff6c0 Level-0 table #233: 0 bytes OK
|
2025/10/01-11:24:12.555461 7fc497ff76c0 Level-0 table #252: 0 bytes OK
|
||||||
2025/07/29-18:28:25.996353 7fbd3ffff6c0 Delete type=0 #231
|
2025/10/01-11:24:12.565317 7fc497ff76c0 Delete type=0 #250
|
||||||
2025/07/29-18:28:25.996608 7fbd3ffff6c0 Manual compaction at level-0 from '!items!4oyPRBWPBWAChrJP' @ 72057594037927935 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at (end)
|
2025/10/01-11:24:12.577205 7fc497ff76c0 Manual compaction at level-0 from '!items!4oyPRBWPBWAChrJP' @ 72057594037927935 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at (end)
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
2025/07/29-17:56:07.304105 7fbfddffb6c0 Delete type=3 #1
|
2025/10/01-09:23:25.493413 7fc499ffb6c0 Delete type=3 #1
|
||||||
2025/07/29-18:20:36.901079 7fbd3ffff6c0 Level-0 table #228: started
|
2025/10/01-09:24:30.037985 7fc497ff76c0 Level-0 table #247: started
|
||||||
2025/07/29-18:20:36.901119 7fbd3ffff6c0 Level-0 table #228: 0 bytes OK
|
2025/10/01-09:24:30.038031 7fc497ff76c0 Level-0 table #247: 0 bytes OK
|
||||||
2025/07/29-18:20:36.907068 7fbd3ffff6c0 Delete type=0 #226
|
2025/10/01-09:24:30.044462 7fc497ff76c0 Delete type=0 #245
|
||||||
2025/07/29-18:20:36.913035 7fbd3ffff6c0 Manual compaction at level-0 from '!items!4oyPRBWPBWAChrJP' @ 72057594037927935 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at '!items!zVFfp3o0G0Zg3Ia4' @ 52 : 1
|
2025/10/01-09:24:30.069660 7fc497ff76c0 Manual compaction at level-0 from '!items!4oyPRBWPBWAChrJP' @ 72057594037927935 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at '!items!zVFfp3o0G0Zg3Ia4' @ 52 : 1
|
||||||
2025/07/29-18:20:36.913051 7fbd3ffff6c0 Compacting 1@0 + 0@1 files
|
2025/10/01-09:24:30.069672 7fc497ff76c0 Compacting 1@0 + 0@1 files
|
||||||
2025/07/29-18:20:36.917150 7fbd3ffff6c0 Generated table #229@0: 26 keys, 60964 bytes
|
2025/10/01-09:24:30.073695 7fc497ff76c0 Generated table #248@0: 26 keys, 60964 bytes
|
||||||
2025/07/29-18:20:36.917172 7fbd3ffff6c0 Compacted 1@0 + 0@1 files => 60964 bytes
|
2025/10/01-09:24:30.073722 7fc497ff76c0 Compacted 1@0 + 0@1 files => 60964 bytes
|
||||||
2025/07/29-18:20:36.923988 7fbd3ffff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
2025/10/01-09:24:30.080151 7fc497ff76c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
2025/07/29-18:20:36.924086 7fbd3ffff6c0 Delete type=2 #60
|
2025/10/01-09:24:30.080234 7fc497ff76c0 Delete type=2 #242
|
||||||
2025/07/29-18:20:36.941818 7fbd3ffff6c0 Manual compaction at level-0 from '!items!zVFfp3o0G0Zg3Ia4' @ 52 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at (end)
|
2025/10/01-09:24:30.086925 7fc497ff76c0 Manual compaction at level-0 from '!items!zVFfp3o0G0Zg3Ia4' @ 52 : 1 .. '!items!zVFfp3o0G0Zg3Ia4' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000399
|
MANIFEST-000418
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
2025/07/29-18:28:11.326583 7fbfdd7fa6c0 Recovering log #396
|
2025/10/01-10:24:47.499257 7fc4997fa6c0 Recovering log #415
|
||||||
2025/07/29-18:28:11.422544 7fbfdd7fa6c0 Delete type=3 #394
|
2025/10/01-10:24:47.596647 7fc4997fa6c0 Delete type=3 #413
|
||||||
2025/07/29-18:28:11.422600 7fbfdd7fa6c0 Delete type=0 #396
|
2025/10/01-10:24:47.596724 7fc4997fa6c0 Delete type=0 #415
|
||||||
2025/07/29-18:28:25.859630 7fbd3ffff6c0 Level-0 table #402: started
|
2025/10/01-11:24:12.545465 7fc497ff76c0 Level-0 table #421: started
|
||||||
2025/07/29-18:28:25.859675 7fbd3ffff6c0 Level-0 table #402: 0 bytes OK
|
2025/10/01-11:24:12.545499 7fc497ff76c0 Level-0 table #421: 0 bytes OK
|
||||||
2025/07/29-18:28:25.902834 7fbd3ffff6c0 Delete type=0 #400
|
2025/10/01-11:24:12.555310 7fc497ff76c0 Delete type=0 #419
|
||||||
2025/07/29-18:28:25.996583 7fbd3ffff6c0 Manual compaction at level-0 from '!folders!5PrT9QmN1cFPzDFP' @ 72057594037927935 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at (end)
|
2025/10/01-11:24:12.577192 7fc497ff76c0 Manual compaction at level-0 from '!folders!5PrT9QmN1cFPzDFP' @ 72057594037927935 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at (end)
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
2025/07/29-17:56:07.265693 7fbfddffb6c0 Delete type=3 #1
|
2025/10/01-09:23:25.444068 7fc499ffb6c0 Delete type=3 #1
|
||||||
2025/07/29-18:20:36.941849 7fbd3ffff6c0 Level-0 table #397: started
|
2025/10/01-09:24:30.024822 7fc497ff76c0 Level-0 table #416: started
|
||||||
2025/07/29-18:20:36.941895 7fbd3ffff6c0 Level-0 table #397: 0 bytes OK
|
2025/10/01-09:24:30.024870 7fc497ff76c0 Level-0 table #416: 0 bytes OK
|
||||||
2025/07/29-18:20:36.948373 7fbd3ffff6c0 Delete type=0 #395
|
2025/10/01-09:24:30.030665 7fc497ff76c0 Delete type=0 #414
|
||||||
2025/07/29-18:20:36.960564 7fbd3ffff6c0 Manual compaction at level-0 from '!folders!5PrT9QmN1cFPzDFP' @ 72057594037927935 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at '!items!zvoUByzWSWZ87fxA' @ 1281 : 1
|
2025/10/01-09:24:30.044587 7fc497ff76c0 Manual compaction at level-0 from '!folders!5PrT9QmN1cFPzDFP' @ 72057594037927935 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at '!items!zvoUByzWSWZ87fxA' @ 1281 : 1
|
||||||
2025/07/29-18:20:36.960577 7fbd3ffff6c0 Compacting 1@0 + 0@1 files
|
2025/10/01-09:24:30.044598 7fc497ff76c0 Compacting 1@0 + 0@1 files
|
||||||
2025/07/29-18:20:36.968003 7fbd3ffff6c0 Generated table #398@0: 556 keys, 320457 bytes
|
2025/10/01-09:24:30.051264 7fc497ff76c0 Generated table #417@0: 556 keys, 320457 bytes
|
||||||
2025/07/29-18:20:36.968044 7fbd3ffff6c0 Compacted 1@0 + 0@1 files => 320457 bytes
|
2025/10/01-09:24:30.051285 7fc497ff76c0 Compacted 1@0 + 0@1 files => 320457 bytes
|
||||||
2025/07/29-18:20:36.974076 7fbd3ffff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
2025/10/01-09:24:30.058278 7fc497ff76c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
2025/07/29-18:20:36.974209 7fbd3ffff6c0 Delete type=2 #277
|
2025/10/01-09:24:30.058439 7fc497ff76c0 Delete type=2 #411
|
||||||
2025/07/29-18:20:36.980862 7fbd3ffff6c0 Manual compaction at level-0 from '!items!zvoUByzWSWZ87fxA' @ 1281 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at (end)
|
2025/10/01-09:24:30.086897 7fc497ff76c0 Manual compaction at level-0 from '!items!zvoUByzWSWZ87fxA' @ 1281 : 1 .. '!items!zvoUByzWSWZ87fxA' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000045
|
MANIFEST-000064
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
2025/07/29-18:28:11.426069 7fbfde7fc6c0 Recovering log #42
|
2025/10/01-10:24:47.601344 7fc499ffb6c0 Recovering log #61
|
||||||
2025/07/29-18:28:11.482529 7fbfde7fc6c0 Delete type=3 #40
|
2025/10/01-10:24:47.686801 7fc499ffb6c0 Delete type=3 #59
|
||||||
2025/07/29-18:28:11.482582 7fbfde7fc6c0 Delete type=0 #42
|
2025/10/01-10:24:47.686869 7fc499ffb6c0 Delete type=0 #61
|
||||||
2025/07/29-18:28:25.996691 7fbd3ffff6c0 Level-0 table #48: started
|
2025/10/01-11:24:12.535658 7fc497ff76c0 Level-0 table #67: started
|
||||||
2025/07/29-18:28:25.996717 7fbd3ffff6c0 Level-0 table #48: 0 bytes OK
|
2025/10/01-11:24:12.535725 7fc497ff76c0 Level-0 table #67: 0 bytes OK
|
||||||
2025/07/29-18:28:26.032508 7fbd3ffff6c0 Delete type=0 #46
|
2025/10/01-11:24:12.545352 7fc497ff76c0 Delete type=0 #65
|
||||||
2025/07/29-18:28:26.140428 7fbd3ffff6c0 Manual compaction at level-0 from '!folders!0DI3T2jve3nsmsfZ' @ 72057594037927935 : 1 .. '!items!zyxA9DhO36t5OBDv' @ 0 : 0; will stop at (end)
|
2025/10/01-11:24:12.577171 7fc497ff76c0 Manual compaction at level-0 from '!folders!0DI3T2jve3nsmsfZ' @ 72057594037927935 : 1 .. '!items!zyxA9DhO36t5OBDv' @ 0 : 0; will stop at (end)
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
2025/07/29-17:56:07.286370 7fbfdeffd6c0 Delete type=3 #1
|
2025/10/01-09:23:25.469063 7fc499ffb6c0 Delete type=3 #1
|
||||||
2025/07/29-18:20:36.907148 7fbd3ffff6c0 Level-0 table #43: started
|
2025/10/01-09:24:30.030754 7fc497ff76c0 Level-0 table #62: started
|
||||||
2025/07/29-18:20:36.907174 7fbd3ffff6c0 Level-0 table #43: 0 bytes OK
|
2025/10/01-09:24:30.030783 7fc497ff76c0 Level-0 table #62: 0 bytes OK
|
||||||
2025/07/29-18:20:36.912933 7fbd3ffff6c0 Delete type=0 #41
|
2025/10/01-09:24:30.037809 7fc497ff76c0 Delete type=0 #60
|
||||||
2025/07/29-18:20:36.924240 7fbd3ffff6c0 Manual compaction at level-0 from '!folders!0DI3T2jve3nsmsfZ' @ 72057594037927935 : 1 .. '!items!zyxA9DhO36t5OBDv' @ 0 : 0; will stop at '!items!zyxA9DhO36t5OBDv' @ 55 : 1
|
2025/10/01-09:24:30.058634 7fc497ff76c0 Manual compaction at level-0 from '!folders!0DI3T2jve3nsmsfZ' @ 72057594037927935 : 1 .. '!items!zyxA9DhO36t5OBDv' @ 0 : 0; will stop at '!items!zyxA9DhO36t5OBDv' @ 55 : 1
|
||||||
2025/07/29-18:20:36.924252 7fbd3ffff6c0 Compacting 1@0 + 0@1 files
|
2025/10/01-09:24:30.058646 7fc497ff76c0 Compacting 1@0 + 0@1 files
|
||||||
2025/07/29-18:20:36.928859 7fbd3ffff6c0 Generated table #44@0: 362 keys, 93592 bytes
|
2025/10/01-09:24:30.063565 7fc497ff76c0 Generated table #63@0: 362 keys, 93592 bytes
|
||||||
2025/07/29-18:20:36.928870 7fbd3ffff6c0 Compacted 1@0 + 0@1 files => 93592 bytes
|
2025/10/01-09:24:30.063591 7fc497ff76c0 Compacted 1@0 + 0@1 files => 93592 bytes
|
||||||
2025/07/29-18:20:36.935549 7fbd3ffff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
2025/10/01-09:24:30.069446 7fc497ff76c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
2025/07/29-18:20:36.935675 7fbd3ffff6c0 Delete type=2 #35
|
2025/10/01-09:24:30.069529 7fc497ff76c0 Delete type=2 #57
|
||||||
2025/07/29-18:20:36.941835 7fbd3ffff6c0 Manual compaction at level-0 from '!items!zyxA9DhO36t5OBDv' @ 55 : 1 .. '!items!zyxA9DhO36t5OBDv' @ 0 : 0; will stop at (end)
|
2025/10/01-09:24:30.086915 7fc497ff76c0 Manual compaction at level-0 from '!items!zyxA9DhO36t5OBDv' @ 55 : 1 .. '!items!zyxA9DhO36t5OBDv' @ 0 : 0; will stop at (end)
|
||||||
|
@@ -11,8 +11,8 @@
|
|||||||
@import "weapon.less";
|
@import "weapon.less";
|
||||||
@import "armor.less";
|
@import "armor.less";
|
||||||
@import "motivation.less";
|
@import "motivation.less";
|
||||||
@import "mentaldisorder.less";
|
@import "mentaldisorder.less";
|
||||||
@import "bond.less";
|
@import "bond.less";
|
||||||
@import "chat.less";
|
@import "chat.less";
|
||||||
@import "gear.less";
|
@import "gear.less";
|
||||||
@import "arcane.less";
|
@import "arcane.less";
|
||||||
@@ -21,4 +21,4 @@
|
|||||||
@import "tome.less";
|
@import "tome.less";
|
||||||
}
|
}
|
||||||
|
|
||||||
@import "roll.less";
|
@import "roll.less";
|
||||||
|
@@ -53,6 +53,10 @@
|
|||||||
color: var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.li-apply-wounds {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
&.dice-roll {
|
&.dice-roll {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
@@ -70,7 +74,7 @@
|
|||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
.intro-chat {
|
.intro-chat {
|
||||||
color:var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
@@ -91,20 +95,20 @@
|
|||||||
li {
|
li {
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
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);
|
||||||
}
|
}
|
||||||
.nudge-roll {
|
.nudge-roll {
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.healing-roll {
|
.healing-roll {
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.roll-damage {
|
.roll-damage {
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<div class="chat-lethal-damage">
|
<div class="chat-lethal-damage">
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>{{weapon.name}} : {{localize "CTHULHUETERNAL.Label.lethalityRoll"}}</strong></li>
|
<li><strong>{{weapon.name}} : {{localize "CTHULHUETERNAL.Label.lethalityRoll"}}</strong></li>
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.result"}} :{{rollResult}} ({{lethalScore}})</li>
|
<li>{{localize "CTHULHUETERNAL.Label.result"}} :{{rollResult}} ({{lethalScore}})</li>
|
||||||
|
|
||||||
|
|
||||||
{{#if weapon.system.selectiveFireChoice}}
|
{{#if weapon.system.selectiveFireChoice}}
|
||||||
@@ -21,12 +21,20 @@
|
|||||||
<li>{{localize "CTHULHUETERNAL.Label.ammoUsed"}}: {{ammoUsed}} / {{weapon.system.ammo.value}}</li>
|
<li>{{localize "CTHULHUETERNAL.Label.ammoUsed"}}: {{ammoUsed}} / {{weapon.system.ammo.value}}</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<li class="li-apply-wounds">
|
||||||
|
<button type="button" class="apply-wounds">{{localize "CTHULHUETERNAL.Label.applyWounds"}}</button>
|
||||||
|
<select name="combatant" class="roll-skill-modifier">
|
||||||
|
{{selectOptions combatants valueAttr="id" labelAttr="name"}}
|
||||||
|
</select>
|
||||||
|
</li>
|
||||||
|
|
||||||
{{#if isLethal}}
|
{{#if isLethal}}
|
||||||
<li class="result-lethal">{{localize "CTHULHUETERNAL.Label.lethalityLethal"}}</li>
|
<li class="result-lethal">{{localize "CTHULHUETERNAL.Label.lethalityLethal"}}</li>
|
||||||
<li class="result-lethal">{{localize "CTHULHUETERNAL.Label.lethalityWounded"}}</li>
|
<li class="result-lethal">{{localize "CTHULHUETERNAL.Label.lethalityWounded"}}</li>
|
||||||
{{else}}
|
{{else}}
|
||||||
<li class="result-non-lethal">{{localize "CTHULHUETERNAL.Label.lethalityNotLethal"}}</li>
|
<li class="result-non-lethal">{{localize "CTHULHUETERNAL.Label.lethalityNotLethal"}}</li>
|
||||||
<li class="result-non-lethal">{{localize "CTHULHUETERNAL.Label.lethalityNotWounded"}}: <strong>{{wounds}}</strong></li>
|
<li class="result-non-lethal">{{localize "CTHULHUETERNAL.Label.lethalityNotWounded"}}: <strong>{{wounds}}</strong>
|
||||||
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<div class="chat-lethal-damage">
|
<div class="chat-lethal-damage">
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>{{weapon.name}} : {{localize "CTHULHUETERNAL.Label.damageRoll"}}</strong></li>
|
<li><strong>{{weapon.name}} : {{localize "CTHULHUETERNAL.Label.damageRoll"}}</strong></li>
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.result"}} :{{rollResult}} ({{formula}})</li>
|
<li>{{localize "CTHULHUETERNAL.Label.result"}} :{{rollResult}} ({{formula}})</li>
|
||||||
|
|
||||||
{{#if (gt weapon.system.killRadius 0)}}
|
{{#if (gt weapon.system.killRadius 0)}}
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.killRadius"}} : {{weapon.system.killRadius}} {{weapon.system.rangeUnit}}</li>
|
<li>{{localize "CTHULHUETERNAL.Label.killRadius"}} : {{weapon.system.killRadius}} {{weapon.system.rangeUnit}}</li>
|
||||||
@@ -12,11 +12,23 @@
|
|||||||
{{#if (gt weapon.system.armorPiercing 0)}}
|
{{#if (gt weapon.system.armorPiercing 0)}}
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.armorPiercing"}} : {{weapon.system.armorPiercing}}</li>
|
<li>{{localize "CTHULHUETERNAL.Label.armorPiercing"}} : {{weapon.system.armorPiercing}}</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{#if (gt weapon.system.penetration 0)}}
|
||||||
|
<li>{{localize "CTHULHUETERNAL.Label.penetration"}} : {{weapon.system.penetration}}</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if ammoUsed}}
|
{{#if ammoUsed}}
|
||||||
<li>{{localize "CTHULHUETERNAL.Label.ammoUsed"}}: {{ammoUsed}} / {{weapon.system.ammo.value}}</li>
|
<li>{{localize "CTHULHUETERNAL.Label.ammoUsed"}}: {{ammoUsed}} / {{weapon.system.ammo.value}}</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<li class="result-non-lethal">{{localize "CTHULHUETERNAL.Label.damageMessage"}}: <strong>{{rollResult}}</strong></li>
|
|
||||||
|
<li class="li-apply-wounds">
|
||||||
|
{{localize "CTHULHUETERNAL.Label.applyWounds"}}
|
||||||
|
<select name="combatant" class="li-apply-wounds-select">
|
||||||
|
{{selectOptions combatants valueAttr="id" labelAttr="name"}}
|
||||||
|
</select>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="result-non-lethal">{{localize "CTHULHUETERNAL.Label.damageMessage"}}: <strong>{{rollResult}}</strong>
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user