14 Commits

Author SHA1 Message Date
fc6bb7a4b1 CSS rework et autres améliorations
All checks were successful
Release Creation / build (release) Successful in 46s
2026-02-12 23:08:51 +01:00
f26130d208 CSS rework et autres améliorations 2026-02-12 23:05:22 +01:00
39da08d4cb CSS rework et autres améliorations 2026-02-12 23:04:37 +01:00
e639b6ae3e Fix rollData = 1
All checks were successful
Release Creation / build (release) Successful in 3m36s
2025-12-01 17:57:19 +01:00
8c247a8981 Echec automatique sur 1
All checks were successful
Release Creation / build (release) Successful in 49s
2025-11-21 21:36:27 +01:00
a09e1a1d95 Les compétences de base ne peuvent être supprimées
All checks were successful
Release Creation / build (release) Successful in 47s
2025-11-02 18:30:20 +01:00
787f88873a Les compétences de base ne peuvent être supprimées 2025-11-02 18:29:46 +01:00
ac481e0dd9 Various minot fixes
All checks were successful
Release Creation / build (release) Successful in 1m18s
2025-10-30 20:24:24 +00:00
375622d900 Add welcome message 2025-10-17 15:31:32 +02:00
3bc055cc1f Add welcome message 2025-10-17 15:28:15 +02:00
c97b7a4889 Correction sur blessures et actions restantes
All checks were successful
Release Creation / build (release) Successful in 53s
2025-10-16 22:59:32 +02:00
5d13500838 Fix sur combat + mains gauche
All checks were successful
Release Creation / build (release) Successful in 43s
2025-09-24 16:43:52 +02:00
d21515e1e3 Fix sur combat + mains gauche 2025-09-24 16:43:40 +02:00
78ef009465 Fix sur combat + mains gauche 2025-09-24 16:42:08 +02:00
88 changed files with 3911 additions and 2525 deletions

54
.gitignore vendored Normal file
View File

@@ -0,0 +1,54 @@
# Dependencies
node_modules/
package-lock.json
# Build outputs
styles/tedeum.css
styles/*.css.map
# IDE & Editor files
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store
# System files
Thumbs.db
desktop.ini
# Logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
*.log
# Temporary files
*.tmp
*.temp
.cache/
# Environment variables
.env
.env.local
# Optional: Uncomment if you want to ignore pack database files
# These are usually committed for systems, but can be regenerated
# packs/**/*.ldb
# packs/**/LOG
# packs/**/LOG.old
# packs/**/MANIFEST-*
# packs/**/CURRENT
# Compiled source
dist/
build/
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db

View File

@@ -1,25 +1,17 @@
var gulp = require('gulp'); var gulp = require('gulp');
var less = require('gulp-less');
var postcss = require('gulp-postcss'); var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer'); var autoprefixer = require('autoprefixer');
var cssnext = require('postcss-preset-env');
var precss = require('precss');
gulp.task('css', function () { gulp.task('css', function () {
return gulp.src('./less/*.less')
var processors = [ .pipe(less())
autoprefixer, .pipe(postcss([autoprefixer]))
cssnext,
precss
];
return gulp.src('./postcss/*.css')
.pipe(postcss(processors))
.pipe(gulp.dest('./styles')); .pipe(gulp.dest('./styles'));
}); });
gulp.task('watch', function () {
gulp.watch('./less/*.less', gulp.series('css'));
});
function watchUpdates() { gulp.task('default', gulp.series('css'));
gulp.watch('./postcss/*.css', css);
}

2071
less/tedeum.less Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -82,8 +82,8 @@ export class TeDeumActor extends Actor {
let compScore = this.getCompetenceScore(comp.name) let compScore = this.getCompetenceScore(comp.name)
let mainGaucheScore = this.getCompetenceScore("main gauche") let mainGaucheScore = this.getCompetenceScore("main gauche")
if (mainGaucheScore < compScore) { if (mainGaucheScore < compScore) {
ui.notifications.info(`${actor.name} : Utilisation de la compétence Main Gauche au lieu de ${comp.name}`) ui.notifications.info(`${this.name} : Utilisation de la compétence Main Gauche au lieu de ${comp.name}`)
let mainGaucheComp = this.itms.find(item => item.type == "competence" && item.name.toLowerCase() == "main gauche") let mainGaucheComp = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "main gauche")
if (!mainGaucheComp) { if (!mainGaucheComp) {
// Create a fake competence object // Create a fake competence object
mainGaucheComp = foundry.utils.duplicate(comp) mainGaucheComp = foundry.utils.duplicate(comp)
@@ -713,7 +713,7 @@ export class TeDeumActor extends Actor {
async rollDegatsArme(armeId) { async rollDegatsArme(armeId) {
let weapon = this.items.get(armeId) let weapon = this.items.get(armeId)
if (weapon) { if (weapon) {
let bDegats = 0 let bDegats = { value: 0 }
if (weapon.system.typeArme == "melee") { if (weapon.system.typeArme == "melee") {
bDegats = this.getBonusDegats() bDegats = this.getBonusDegats()
} }
@@ -728,7 +728,7 @@ export class TeDeumActor extends Actor {
rollData.degats = degatsRoll.total rollData.degats = degatsRoll.total
let msg = await TeDeumUtility.createChatWithRollMode(rollData.alias, { let msg = await TeDeumUtility.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-degats-result.hbs`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-degats-result.hbs`, rollData)
}) })
await msg.setFlag("world", "te-deum-rolldata", rollData) await msg.setFlag("world", "te-deum-rolldata", rollData)
console.log("Rolldata result", rollData) console.log("Rolldata result", rollData)

View File

@@ -10,6 +10,7 @@ export class TeDeumCombat extends Combat {
for (let cId of ids) { for (let cId of ids) {
const c = this.combatants.get(cId); const c = this.combatants.get(cId);
let initBonus = c.actor ? c.actor.getInitiativeScore(this.id, cId) : -1; let initBonus = c.actor ? c.actor.getInitiativeScore(this.id, cId) : -1;
console.log("Init Bonus : ", c.name, initBonus)
await this.updateEmbeddedDocuments("Combatant", [{ _id: cId, initiative: initBonus }]); await this.updateEmbeddedDocuments("Combatant", [{ _id: cId, initiative: initBonus }]);
} }
@@ -31,8 +32,12 @@ export class TeDeumCombat extends Combat {
} }
if (ca.nbActionsMainGauche < 0) ca.nbActionsMainGauche = 0 if (ca.nbActionsMainGauche < 0) ca.nbActionsMainGauche = 0
if (ca.nbActions < 0) ca.nbActions = 0 if (ca.nbActions < 0) ca.nbActions = 0
await combatant.setFlag("world", "available-actions", ca) console.log("Modify Action : ", combatant.name, ca)
await combatant.update({ name: `${combatant.token.name} (${ca.nbActions} / ${ca.nbActionsMainGauche})` }) if (game.user.isGM) {
await TeDeumUtility.updateCombatantActions(combatant, ca)
} else {
game.socket.emit("system.fvtt-te-deum", { msg: "msg_modify_combat_action", data: { combatantId: combatantId, ca: ca } })
}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@@ -59,11 +59,11 @@ export const TEDEUM_CONFIG = {
}, },
ARME_PORTEES: { ARME_PORTEES: {
"brulepourpoint": { label: "Brûle-pourpoint", difficulty: "facile", id: "brulepourpoint" }, "brulepourpoint": { label: "Brûle-pourpoint (5)", difficulty: "facile", id: "brulepourpoint" },
"courte": { label: "Courte", difficulty: "pardefaut", id: "courte" }, "courte": { label: "Courte (7)", difficulty: "pardefaut", id: "courte" },
"moyenne": { label: "Moyenne", difficulty: "difficile", id: "moyenne" }, "moyenne": { label: "Moyenne (11)", difficulty: "difficile", id: "moyenne" },
"longue": { label: "Longue", difficulty: "perilleux", id: "longue" }, "longue": { label: "Longue (13)", difficulty: "perilleux", id: "longue" },
"extreme": { label: "Extrême", difficulty: "desespere", id: "extreme" }, "extreme": { label: "Extrême (15)", difficulty: "desespere", id: "extreme" },
}, },
genre: { genre: {

View File

@@ -1,6 +1,8 @@
/* -------------------------------------------- */ /* -------------------------------------------- */
/* -------------------------------------------- */ /* -------------------------------------------- */
const ECRYME_WELCOME_MESSAGE_URL = "https://www.uberwald.me/gitea/public/fvtt-te-deum/raw/branch/main/welcome-message-tedeum.html"
export class TeDeumUtility { export class TeDeumUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -59,14 +61,16 @@ export class TeDeumUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async resetCombatActions(combat) { static async resetCombatActions(combat) {
for (let c of combat.combatants) { if (game.user.isGM) {
let actor = game.actors.get(c.actorId) for (let c of combat.combatants) {
if (actor) { let actor = game.actors.get(c.actorId)
let nbActions = actor.getNbActions()?.value || 0 if (actor) {
let isMainGauche = (actor.getCompetenceScore("Main gauche") > 0) let nbActions = actor.getNbActions()?.value || 0
let nbActionsMainGauche = isMainGauche ? nbActions : 0 let isMainGauche = (actor.getCompetenceScore("Main gauche") > 0)
await c.setFlag("world", "available-actions", { nbActions, nbActionsMainGauche }) let nbActionsMainGauche = isMainGauche ? nbActions : 0
await c.update({ name: `${c.token.name} (${nbActions} / ${nbActionsMainGauche})` }) await c.setFlag("world", "available-actions", { nbActions, nbActionsMainGauche })
await c.update({ name: `${c.token.name} (${nbActions} / ${nbActionsMainGauche})` })
}
} }
} }
} }
@@ -167,14 +171,25 @@ export class TeDeumUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static welcomeMessage() { static welcomeMessage() {
if (game.user.isGM) { if (game.user.isGM) {
ChatMessage.create({ // Try to fetch the welcome message from the github repo "welcome-message-ecryme.html"
user: game.user.id, fetch(ECRYME_WELCOME_MESSAGE_URL)
whisper: [game.user.id], .then(response => response.text())
content: `<div id="chat-welcome welcome-message-tedeum"><span class="rdd-roll-part"> .then(html => {
<strong>Bienvenu dans Te Deum Pour Un Massacre !</strong> console.log("Fetched welcome message:", html);
<div class="chat-welcome">Ce système vous est proposé par Open Sesame Games.<br> ChatMessage.create({
Vous trouverez de l'aide dans @UUID[Compendium.fvtt-te-deum.aides.JournalEntry.uNwJgi4kXBCiZmAH]{Aide pour Te Deum}<br> user: game.user.id,
ainsi que sur le Discord de Foundry FR : https://discord.gg/pPSDNJk</div>` }); whisper: [game.user.id],
content: html
});
})
.catch(error => {
console.error("Error fetching welcome message:", error);
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: "<b>Bienvenue dans Ecryme RPG !</b><br>Visitez le site officiel pour plus d'informations."
});
});
} }
} }
@@ -300,7 +315,12 @@ export class TeDeumUtility {
let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId) let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
if (defenderToken) { if (defenderToken) {
let actor = defenderToken.actor let actor = defenderToken.actor
await actor.appliquerDegats(rollData) if (game.user.isGM || actor.isOwner) {
await actor.appliquerDegats(rollData)
} else {
// Send a socket message
game.socket.emit("system.fvtt-te-deum", { name: "msg_apply_damage", data: { rollData } });
}
// Attaque naturelle avec dégats inférieur à -2 // Attaque naturelle avec dégats inférieur à -2
if ((rollData?.arme?.system.specificites?.poing?.hasSpec || rollData?.arme?.system.specificites?.pied?.hasSpec) && rollData.degats < -2) { if ((rollData?.arme?.system.specificites?.poing?.hasSpec || rollData?.arme?.system.specificites?.pied?.hasSpec) && rollData.degats < -2) {
let attacker = this.getActorFromRollData(rollData) let attacker = this.getActorFromRollData(rollData)
@@ -436,6 +456,28 @@ export class TeDeumUtility {
chatMsg.setFlag("world", "tedeum-rolldata", rollData) chatMsg.setFlag("world", "tedeum-rolldata", rollData)
} }
} }
if (msg.name == "msg_modify_combat_action") {
if (game.user.isGM) {
let { combatantId, ca } = msg.data
let combatant = game.combat.combatants.get(combatantId)
if (combatant) {
console.log("sock - Modify Combat Action : ", combatant.name, ca)
await TeDeumUtility.updateCombatantActions(combatant, ca)
}
}
}
if (msg.name == "msg_apply_damage") {
if (game.user.isGM) {
let rollData = msg.data.rollData
let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
if (defenderToken) {
let actor = defenderToken.actor
await actor.appliquerDegats(rollData)
} else {
ui.notifications.error("Impossible de trouver la cible de l'attaque, aucun degats appliqué")
}
}
}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -521,9 +563,11 @@ export class TeDeumUtility {
} }
if (rollData.diceSum == 1) { if (rollData.diceSum == 1) {
let critiqueRoll = await new Roll(rollData.carac.negativeDice) let critiqueRoll = await new Roll(rollData.carac.negativeDice)
rollData.isSuccess = false
await critiqueRoll.evaluate() await critiqueRoll.evaluate()
await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode"))
rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll) rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll)
rollData.critiqueTotal = critiqueRoll.total
if (critiqueRoll.total > rollData.competence.system.score) { if (critiqueRoll.total > rollData.competence.system.score) {
rollData.isEchecCritique = true rollData.isEchecCritique = true
} }
@@ -612,12 +656,18 @@ export class TeDeumUtility {
await this.getLocalisation(rollData) await this.getLocalisation(rollData)
// Now the degats // Now the degats
let degatsRoll = await new Roll(rollData.arme.system.degats).roll() let degatsRoll = await new Roll(rollData.arme.system.degats).roll()
await this.showDiceSoNice(rollData.degatsRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(degatsRoll, game.settings.get("core", "rollMode"))
rollData.degatsRoll = foundry.utils.duplicate(degatsRoll) rollData.degatsRoll = foundry.utils.duplicate(degatsRoll)
rollData.degats = degatsRoll.total rollData.degats = degatsRoll.total
} }
} }
/* -------------------------------------------- */
static async updateCombatantActions(combatant, ca) {
await combatant.setFlag("world", "available-actions", ca)
await combatant.update({ name: `${combatant.token.name} (${ca.nbActions} / ${ca.nbActionsMainGauche})` })
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async manageCombatActions(actor, rollData) { static async manageCombatActions(actor, rollData) {
let combat = game.combats.active let combat = game.combats.active
@@ -631,16 +681,21 @@ export class TeDeumUtility {
ca.nbActionsMainGauche -= 1 ca.nbActionsMainGauche -= 1
ca.nbActions = Math.max(ca.nbActions - 1, 0) ca.nbActions = Math.max(ca.nbActions - 1, 0)
} else { } else {
ui.notifications.error(`${actor.name} n'a plus d'actions disponibles à la main gauche`) ui.notifications.error(`${actor.name} n'a plus d'actions disponibles à la main gauche pour ce round`)
} }
} }
if (ca.nbActions > 0) { if (ca.nbActions > 0) {
ca.nbActions -= 1 ca.nbActions -= 1
} else { } else {
ui.notifications.error(`${actor.name} n'a plus d'actions disponibles`) ui.notifications.error(`${actor.name} n'a plus d'actions disponibles pour ce round`)
}
console.log("Manage combat actions 1", actor.name, combatant)
if (game.user.isGM) {
await this.updateCombatantActions(combatant, ca)
} else {
// Send a socket message
game.socket.emit("system.fvtt-te-deum", { name: "msg_modify_combat_action", data: { combatantId: combatant.id, ca } });
} }
await combatant.setFlag("world", "available-actions", ca)
await combatant.update({ name: `${combatant.token.name} (${ca.nbActions} / ${ca.nbActionsMainGauche})` })
rollData.hasActions = true rollData.hasActions = true
rollData.remainingActions = ca.nbActions rollData.remainingActions = ca.nbActions
rollData.remainingActionsMainGauche = ca.nbActionsMainGauche rollData.remainingActionsMainGauche = ca.nbActionsMainGauche

View File

@@ -6,7 +6,7 @@ export class TeDeumRollDialog extends Dialog {
static async create(actor, rollData) { static async create(actor, rollData) {
let options = { classes: ["tedeum-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 } let options = { classes: ["tedeum-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
let html = await renderTemplate('systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs', rollData); let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs', rollData);
return new TeDeumRollDialog(actor, rollData, html, options); return new TeDeumRollDialog(actor, rollData, html, options);
} }
@@ -43,7 +43,7 @@ export class TeDeumRollDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
async refreshDialog() { async refreshDialog() {
const content = await renderTemplate("systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs", this.rollData) const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs", this.rollData)
this.data.content = content this.data.content = content
this.render(true) this.render(true)
} }

View File

@@ -91,7 +91,7 @@ export class TeDeumItemSheet extends foundry.appv1.sheets.ItemSheet {
payload: chatData, payload: chatData,
}); });
renderTemplate('systems/fvtt-te-deum/templates/post-item.html', chatData).then(html => { foundry.applications.handlebars.renderTemplate('systems/fvtt-te-deum/templates/post-item.html', chatData).then(html => {
let chatOptions = TeDeumUtility.chatDataSetup(html); let chatOptions = TeDeumUtility.chatDataSetup(html);
ChatMessage.create(chatOptions) ChatMessage.create(chatOptions)
}); });

21
package.json Normal file
View File

@@ -0,0 +1,21 @@
{
"name": "fvtt-te-deum",
"version": "1.0.0",
"description": "Système Te Deum pour FoundryVTT",
"private": true,
"scripts": {
"build:css": "gulp css",
"watch:css": "gulp watch"
},
"devDependencies": {
"gulp": "^4.0.2",
"gulp-less": "^5.0.0",
"less": "^4.2.0",
"autoprefixer": "^10.4.20",
"gulp-postcss": "^9.0.1",
"postcss": "^8.4.49"
},
"keywords": ["foundry-vtt", "te-deum"],
"author": "",
"license": "ISC"
}

View File

@@ -1 +1 @@
MANIFEST-000157 MANIFEST-000214

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.187023 7f7d00dfa6c0 Recovering log #155 2026/01/04-21:26:37.933804 7f93eb7fe6c0 Recovering log #212
2025/09/24-15:09:29.197297 7f7d00dfa6c0 Delete type=3 #153 2026/01/04-21:26:37.943801 7f93eb7fe6c0 Delete type=3 #210
2025/09/24-15:09:29.197358 7f7d00dfa6c0 Delete type=0 #155 2026/01/04-21:26:37.943854 7f93eb7fe6c0 Delete type=0 #212
2025/09/24-15:11:47.439451 7f7cf9fff6c0 Level-0 table #160: started 2026/01/04-21:27:02.505234 7f93e9ffb6c0 Level-0 table #217: started
2025/09/24-15:11:47.439482 7f7cf9fff6c0 Level-0 table #160: 0 bytes OK 2026/01/04-21:27:02.505262 7f93e9ffb6c0 Level-0 table #217: 0 bytes OK
2025/09/24-15:11:47.446526 7f7cf9fff6c0 Delete type=0 #158 2026/01/04-21:27:02.512734 7f93e9ffb6c0 Delete type=0 #215
2025/09/24-15:11:47.446682 7f7cf9fff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.512909 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.305998 7f7cfb7fe6c0 Recovering log #151 2025/12/20-18:12:56.443928 7f244d1ff6c0 Recovering log #208
2025/09/24-14:48:23.315978 7f7cfb7fe6c0 Delete type=3 #149 2025/12/20-18:12:56.494058 7f244d1ff6c0 Delete type=3 #206
2025/09/24-14:48:23.316051 7f7cfb7fe6c0 Delete type=0 #151 2025/12/20-18:12:56.494134 7f244d1ff6c0 Delete type=0 #208
2025/09/24-15:08:26.608194 7f7cf9fff6c0 Level-0 table #156: started 2025/12/20-18:36:44.261828 7f2436ffd6c0 Level-0 table #213: started
2025/09/24-15:08:26.608240 7f7cf9fff6c0 Level-0 table #156: 0 bytes OK 2025/12/20-18:36:44.261865 7f2436ffd6c0 Level-0 table #213: 0 bytes OK
2025/09/24-15:08:26.663875 7f7cf9fff6c0 Delete type=0 #154 2025/12/20-18:36:44.320648 7f2436ffd6c0 Delete type=0 #211
2025/09/24-15:08:26.664085 7f7cf9fff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.320833 7f2436ffd6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/aides/MANIFEST-000214 Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000260 MANIFEST-000317

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.097777 7f7cfbfff6c0 Recovering log #258 2026/01/04-21:26:37.828637 7f93eb7fe6c0 Recovering log #315
2025/09/24-15:09:29.108008 7f7cfbfff6c0 Delete type=3 #256 2026/01/04-21:26:37.839103 7f93eb7fe6c0 Delete type=3 #313
2025/09/24-15:09:29.108079 7f7cfbfff6c0 Delete type=0 #258 2026/01/04-21:26:37.839200 7f93eb7fe6c0 Delete type=0 #315
2025/09/24-15:11:47.381009 7f7cf9fff6c0 Level-0 table #263: started 2026/01/04-21:27:02.452079 7f93e9ffb6c0 Level-0 table #320: started
2025/09/24-15:11:47.381035 7f7cf9fff6c0 Level-0 table #263: 0 bytes OK 2026/01/04-21:27:02.452098 7f93e9ffb6c0 Level-0 table #320: 0 bytes OK
2025/09/24-15:11:47.387083 7f7cf9fff6c0 Delete type=0 #261 2026/01/04-21:27:02.458511 7f93e9ffb6c0 Delete type=0 #318
2025/09/24-15:11:47.393292 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458741 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.211234 7f7cfaffd6c0 Recovering log #254 2025/12/20-18:12:56.039187 7f244d1ff6c0 Recovering log #311
2025/09/24-14:48:23.220782 7f7cfaffd6c0 Delete type=3 #252 2025/12/20-18:12:56.089963 7f244d1ff6c0 Delete type=3 #309
2025/09/24-14:48:23.220848 7f7cfaffd6c0 Delete type=0 #254 2025/12/20-18:12:56.090033 7f244d1ff6c0 Delete type=0 #311
2025/09/24-15:08:26.052999 7f7cf9fff6c0 Level-0 table #259: started 2025/12/20-18:36:43.701277 7f2436ffd6c0 Level-0 table #316: started
2025/09/24-15:08:26.053039 7f7cf9fff6c0 Level-0 table #259: 0 bytes OK 2025/12/20-18:36:43.701303 7f2436ffd6c0 Level-0 table #316: 0 bytes OK
2025/09/24-15:08:26.114659 7f7cf9fff6c0 Delete type=0 #257 2025/12/20-18:36:43.756264 7f2436ffd6c0 Delete type=0 #314
2025/09/24-15:08:26.173656 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812180 7f2436ffd6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/armes/MANIFEST-000317 Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000259 MANIFEST-000317

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.111050 7f7cfaffd6c0 Recovering log #257 2026/01/04-21:26:37.843261 7f93ea7fc6c0 Recovering log #315
2025/09/24-15:09:29.121636 7f7cfaffd6c0 Delete type=3 #255 2026/01/04-21:26:37.853735 7f93ea7fc6c0 Delete type=3 #313
2025/09/24-15:09:29.121696 7f7cfaffd6c0 Delete type=0 #257 2026/01/04-21:26:37.853805 7f93ea7fc6c0 Delete type=0 #315
2025/09/24-15:11:47.374855 7f7cf9fff6c0 Level-0 table #262: started 2026/01/04-21:27:02.446245 7f93e9ffb6c0 Level-0 table #320: started
2025/09/24-15:11:47.374881 7f7cf9fff6c0 Level-0 table #262: 0 bytes OK 2026/01/04-21:27:02.446262 7f93e9ffb6c0 Level-0 table #320: 0 bytes OK
2025/09/24-15:11:47.380908 7f7cf9fff6c0 Delete type=0 #260 2026/01/04-21:27:02.452006 7f93e9ffb6c0 Delete type=0 #318
2025/09/24-15:11:47.393280 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458726 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.223575 7f7d00dfa6c0 Recovering log #253 2025/12/20-18:12:56.095054 7f24377fe6c0 Recovering log #311
2025/09/24-14:48:23.234727 7f7d00dfa6c0 Delete type=3 #251 2025/12/20-18:12:56.148579 7f24377fe6c0 Delete type=3 #309
2025/09/24-14:48:23.234789 7f7d00dfa6c0 Delete type=0 #253 2025/12/20-18:12:56.148653 7f24377fe6c0 Delete type=0 #311
2025/09/24-15:08:26.173817 7f7cf9fff6c0 Level-0 table #258: started 2025/12/20-18:36:43.637340 7f2436ffd6c0 Level-0 table #316: started
2025/09/24-15:08:26.173861 7f7cf9fff6c0 Level-0 table #258: 0 bytes OK 2025/12/20-18:36:43.637367 7f2436ffd6c0 Level-0 table #316: 0 bytes OK
2025/09/24-15:08:26.233062 7f7cf9fff6c0 Delete type=0 #256 2025/12/20-18:36:43.701178 7f2436ffd6c0 Delete type=0 #314
2025/09/24-15:08:26.424194 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812170 7f2436ffd6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000258 MANIFEST-000315

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.084820 7f7d00dfa6c0 Recovering log #256 2026/01/04-21:26:37.813752 7f93eaffd6c0 Recovering log #313
2025/09/24-15:09:29.094841 7f7d00dfa6c0 Delete type=3 #254 2026/01/04-21:26:37.823461 7f93eaffd6c0 Delete type=3 #311
2025/09/24-15:09:29.094891 7f7d00dfa6c0 Delete type=0 #256 2026/01/04-21:26:37.823509 7f93eaffd6c0 Delete type=0 #313
2025/09/24-15:11:47.367611 7f7cf9fff6c0 Level-0 table #261: started 2026/01/04-21:27:02.440062 7f93e9ffb6c0 Level-0 table #318: started
2025/09/24-15:11:47.367694 7f7cf9fff6c0 Level-0 table #261: 0 bytes OK 2026/01/04-21:27:02.440091 7f93e9ffb6c0 Level-0 table #318: 0 bytes OK
2025/09/24-15:11:47.374747 7f7cf9fff6c0 Delete type=0 #259 2026/01/04-21:27:02.446167 7f93e9ffb6c0 Delete type=0 #316
2025/09/24-15:11:47.393269 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458712 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.198206 7f7cfb7fe6c0 Recovering log #252 2025/12/20-18:12:55.979585 7f244c9fe6c0 Recovering log #309
2025/09/24-14:48:23.208784 7f7cfb7fe6c0 Delete type=3 #250 2025/12/20-18:12:56.031769 7f244c9fe6c0 Delete type=3 #307
2025/09/24-14:48:23.208841 7f7cfb7fe6c0 Delete type=0 #252 2025/12/20-18:12:56.031837 7f244c9fe6c0 Delete type=0 #309
2025/09/24-15:08:25.940494 7f7cf9fff6c0 Level-0 table #257: started 2025/12/20-18:36:43.574310 7f2436ffd6c0 Level-0 table #314: started
2025/09/24-15:08:25.940624 7f7cf9fff6c0 Level-0 table #257: 0 bytes OK 2025/12/20-18:36:43.574360 7f2436ffd6c0 Level-0 table #314: 0 bytes OK
2025/09/24-15:08:25.991041 7f7cf9fff6c0 Delete type=0 #255 2025/12/20-18:36:43.637222 7f2436ffd6c0 Delete type=0 #312
2025/09/24-15:08:26.173621 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812158 7f2436ffd6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000269 MANIFEST-000327

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.123386 7f7cfb7fe6c0 Recovering log #267 2026/01/04-21:26:37.858384 7f93eaffd6c0 Recovering log #325
2025/09/24-15:09:29.133578 7f7cfb7fe6c0 Delete type=3 #265 2026/01/04-21:26:37.868673 7f93eaffd6c0 Delete type=3 #323
2025/09/24-15:09:29.133633 7f7cfb7fe6c0 Delete type=0 #267 2026/01/04-21:26:37.868726 7f93eaffd6c0 Delete type=0 #325
2025/09/24-15:11:47.387224 7f7cf9fff6c0 Level-0 table #272: started 2026/01/04-21:27:02.458878 7f93e9ffb6c0 Level-0 table #330: started
2025/09/24-15:11:47.387262 7f7cf9fff6c0 Level-0 table #272: 0 bytes OK 2026/01/04-21:27:02.458920 7f93e9ffb6c0 Level-0 table #330: 0 bytes OK
2025/09/24-15:11:47.393170 7f7cf9fff6c0 Delete type=0 #270 2026/01/04-21:27:02.465606 7f93e9ffb6c0 Delete type=0 #328
2025/09/24-15:11:47.393301 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485393 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.237291 7f7cfb7fe6c0 Recovering log #263 2025/12/20-18:12:56.154781 7f244c9fe6c0 Recovering log #321
2025/09/24-14:48:23.248109 7f7cfb7fe6c0 Delete type=3 #261 2025/12/20-18:12:56.203650 7f244c9fe6c0 Delete type=3 #319
2025/09/24-14:48:23.248198 7f7cfb7fe6c0 Delete type=0 #263 2025/12/20-18:12:56.206209 7f244c9fe6c0 Delete type=0 #321
2025/09/24-15:08:25.991148 7f7cf9fff6c0 Level-0 table #268: started 2025/12/20-18:36:43.812286 7f2436ffd6c0 Level-0 table #326: started
2025/09/24-15:08:25.998446 7f7cf9fff6c0 Level-0 table #268: 0 bytes OK 2025/12/20-18:36:43.812329 7f2436ffd6c0 Level-0 table #326: 0 bytes OK
2025/09/24-15:08:26.052852 7f7cf9fff6c0 Delete type=0 #266 2025/12/20-18:36:43.867818 7f2436ffd6c0 Delete type=0 #324
2025/09/24-15:08:26.173642 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048015 7f2436ffd6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000259 MANIFEST-000316

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.137046 7f7d00dfa6c0 Recovering log #257 2026/01/04-21:26:37.873703 7f93ebfff6c0 Recovering log #314
2025/09/24-15:09:29.146636 7f7d00dfa6c0 Delete type=3 #255 2026/01/04-21:26:37.885324 7f93ebfff6c0 Delete type=3 #312
2025/09/24-15:09:29.146695 7f7d00dfa6c0 Delete type=0 #257 2026/01/04-21:26:37.885427 7f93ebfff6c0 Delete type=0 #314
2025/09/24-15:11:47.393485 7f7cf9fff6c0 Level-0 table #262: started 2026/01/04-21:27:02.433342 7f93e9ffb6c0 Level-0 table #319: started
2025/09/24-15:11:47.393516 7f7cf9fff6c0 Level-0 table #262: 0 bytes OK 2026/01/04-21:27:02.433382 7f93e9ffb6c0 Level-0 table #319: 0 bytes OK
2025/09/24-15:11:47.400467 7f7cf9fff6c0 Delete type=0 #260 2026/01/04-21:27:02.439918 7f93e9ffb6c0 Delete type=0 #317
2025/09/24-15:11:47.419258 7f7cf9fff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458692 7f93e9ffb6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.254619 7f7cfb7fe6c0 Recovering log #253 2025/12/20-18:12:56.214726 7f2437fff6c0 Recovering log #310
2025/09/24-14:48:23.264677 7f7cfb7fe6c0 Delete type=3 #251 2025/12/20-18:12:56.267981 7f2437fff6c0 Delete type=3 #308
2025/09/24-14:48:23.264757 7f7cfb7fe6c0 Delete type=0 #253 2025/12/20-18:12:56.268051 7f2437fff6c0 Delete type=0 #310
2025/09/24-15:08:26.114804 7f7cf9fff6c0 Level-0 table #258: started 2025/12/20-18:36:43.756462 7f2436ffd6c0 Level-0 table #315: started
2025/09/24-15:08:26.114845 7f7cf9fff6c0 Level-0 table #258: 0 bytes OK 2025/12/20-18:36:43.756507 7f2436ffd6c0 Level-0 table #315: 0 bytes OK
2025/09/24-15:08:26.173413 7f7cf9fff6c0 Delete type=0 #256 2025/12/20-18:36:43.812023 7f2436ffd6c0 Delete type=0 #313
2025/09/24-15:08:26.173668 7f7cf9fff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812190 7f2436ffd6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000259 MANIFEST-000316

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.148975 7f7cfbfff6c0 Recovering log #257 2026/01/04-21:26:37.889654 7f93ea7fc6c0 Recovering log #314
2025/09/24-15:09:29.158794 7f7cfbfff6c0 Delete type=3 #255 2026/01/04-21:26:37.899518 7f93ea7fc6c0 Delete type=3 #312
2025/09/24-15:09:29.158847 7f7cfbfff6c0 Delete type=0 #257 2026/01/04-21:26:37.899583 7f93ea7fc6c0 Delete type=0 #314
2025/09/24-15:11:47.406687 7f7cf9fff6c0 Level-0 table #262: started 2026/01/04-21:27:02.472063 7f93e9ffb6c0 Level-0 table #319: started
2025/09/24-15:11:47.406719 7f7cf9fff6c0 Level-0 table #262: 0 bytes OK 2026/01/04-21:27:02.472086 7f93e9ffb6c0 Level-0 table #319: 0 bytes OK
2025/09/24-15:11:47.412667 7f7cf9fff6c0 Delete type=0 #260 2026/01/04-21:27:02.478114 7f93e9ffb6c0 Delete type=0 #317
2025/09/24-15:11:47.419288 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485430 7f93e9ffb6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.266851 7f7cfaffd6c0 Recovering log #253 2025/12/20-18:12:56.274845 7f24377fe6c0 Recovering log #310
2025/09/24-14:48:23.277277 7f7cfaffd6c0 Delete type=3 #251 2025/12/20-18:12:56.318675 7f24377fe6c0 Delete type=3 #308
2025/09/24-14:48:23.277357 7f7cfaffd6c0 Delete type=0 #253 2025/12/20-18:12:56.318757 7f24377fe6c0 Delete type=0 #310
2025/09/24-15:08:26.356120 7f7cf9fff6c0 Level-0 table #258: started 2025/12/20-18:36:43.935645 7f2436ffd6c0 Level-0 table #315: started
2025/09/24-15:08:26.356174 7f7cf9fff6c0 Level-0 table #258: 0 bytes OK 2025/12/20-18:36:43.935673 7f2436ffd6c0 Level-0 table #315: 0 bytes OK
2025/09/24-15:08:26.424036 7f7cf9fff6c0 Delete type=0 #256 2025/12/20-18:36:43.994623 7f2436ffd6c0 Delete type=0 #313
2025/09/24-15:08:26.424252 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048051 7f2436ffd6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000196 MANIFEST-000253

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.173945 7f7cfb7fe6c0 Recovering log #194 2026/01/04-21:26:37.919630 7f93ebfff6c0 Recovering log #251
2025/09/24-15:09:29.183658 7f7cfb7fe6c0 Delete type=3 #192 2026/01/04-21:26:37.930006 7f93ebfff6c0 Delete type=3 #249
2025/09/24-15:09:29.183716 7f7cfb7fe6c0 Delete type=0 #194 2026/01/04-21:26:37.930066 7f93ebfff6c0 Delete type=0 #251
2025/09/24-15:11:47.412789 7f7cf9fff6c0 Level-0 table #199: started 2026/01/04-21:27:02.478265 7f93e9ffb6c0 Level-0 table #256: started
2025/09/24-15:11:47.412823 7f7cf9fff6c0 Level-0 table #199: 0 bytes OK 2026/01/04-21:27:02.478296 7f93e9ffb6c0 Level-0 table #256: 0 bytes OK
2025/09/24-15:11:47.419140 7f7cf9fff6c0 Delete type=0 #197 2026/01/04-21:27:02.485146 7f93e9ffb6c0 Delete type=0 #254
2025/09/24-15:11:47.419299 7f7cf9fff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485444 7f93e9ffb6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.292184 7f7d00dfa6c0 Recovering log #190 2025/12/20-18:12:56.387036 7f2437fff6c0 Recovering log #247
2025/09/24-14:48:23.302049 7f7d00dfa6c0 Delete type=3 #188 2025/12/20-18:12:56.440877 7f2437fff6c0 Delete type=3 #245
2025/09/24-14:48:23.302138 7f7d00dfa6c0 Delete type=0 #190 2025/12/20-18:12:56.440965 7f2437fff6c0 Delete type=0 #247
2025/09/24-15:08:26.233213 7f7cf9fff6c0 Level-0 table #195: started 2025/12/20-18:36:43.994753 7f2436ffd6c0 Level-0 table #252: started
2025/09/24-15:08:26.233253 7f7cf9fff6c0 Level-0 table #195: 0 bytes OK 2025/12/20-18:36:43.994783 7f2436ffd6c0 Level-0 table #252: 0 bytes OK
2025/09/24-15:08:26.291256 7f7cf9fff6c0 Delete type=0 #193 2025/12/20-18:36:44.047877 7f2436ffd6c0 Delete type=0 #250
2025/09/24-15:08:26.424217 7f7cf9fff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048061 7f2436ffd6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000260 MANIFEST-000317

View File

@@ -1,7 +1,7 @@
2025/09/24-15:09:29.160816 7f7cfaffd6c0 Recovering log #258 2026/01/04-21:26:37.904069 7f93eaffd6c0 Recovering log #315
2025/09/24-15:09:29.171382 7f7cfaffd6c0 Delete type=3 #256 2026/01/04-21:26:37.914574 7f93eaffd6c0 Delete type=3 #313
2025/09/24-15:09:29.171436 7f7cfaffd6c0 Delete type=0 #258 2026/01/04-21:26:37.914647 7f93eaffd6c0 Delete type=0 #315
2025/09/24-15:11:47.400600 7f7cf9fff6c0 Level-0 table #263: started 2026/01/04-21:27:02.465731 7f93e9ffb6c0 Level-0 table #320: started
2025/09/24-15:11:47.400625 7f7cf9fff6c0 Level-0 table #263: 0 bytes OK 2026/01/04-21:27:02.465755 7f93e9ffb6c0 Level-0 table #320: 0 bytes OK
2025/09/24-15:11:47.406556 7f7cf9fff6c0 Delete type=0 #261 2026/01/04-21:27:02.471938 7f93e9ffb6c0 Delete type=0 #318
2025/09/24-15:11:47.419275 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485413 7f93e9ffb6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/09/24-14:48:23.279296 7f7cfbfff6c0 Recovering log #254 2025/12/20-18:12:56.325650 7f244c9fe6c0 Recovering log #311
2025/09/24-14:48:23.289583 7f7cfbfff6c0 Delete type=3 #252 2025/12/20-18:12:56.379165 7f244c9fe6c0 Delete type=3 #309
2025/09/24-14:48:23.289682 7f7cfbfff6c0 Delete type=0 #254 2025/12/20-18:12:56.379237 7f244c9fe6c0 Delete type=0 #311
2025/09/24-15:08:26.291500 7f7cf9fff6c0 Level-0 table #259: started 2025/12/20-18:36:43.867925 7f2436ffd6c0 Level-0 table #316: started
2025/09/24-15:08:26.291565 7f7cf9fff6c0 Level-0 table #259: 0 bytes OK 2025/12/20-18:36:43.867945 7f2436ffd6c0 Level-0 table #316: 0 bytes OK
2025/09/24-15:08:26.355943 7f7cf9fff6c0 Delete type=0 #257 2025/12/20-18:36:43.935523 7f2436ffd6c0 Delete type=0 #314
2025/09/24-15:08:26.424235 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048037 7f2436ffd6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -148,8 +148,8 @@
], ],
"title": "Te Deum pour Un Massacre, le Jeu de Rôles (Officiel)", "title": "Te Deum pour Un Massacre, le Jeu de Rôles (Officiel)",
"url": "https://www.uberwald.me/gitea/public/fvtt-te-deum", "url": "https://www.uberwald.me/gitea/public/fvtt-te-deum",
"version": "13.0.1", "version": "13.0.2",
"download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/releases/download/13.0.1/fvtt-te-deum-13.0.1.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/releases/download/13.0.1/fvtt-te-deum-13.0.2.zip",
"background": "systems/fvtt-te-deum/images/ui/tdeum_welcome_page_01.webp", "background": "systems/fvtt-te-deum/images/ui/tdeum_welcome_page_01.webp",
"flags": { "flags": {
"hotReload": { "hotReload": {

View File

@@ -238,7 +238,11 @@
</label> </label>
<span>&nbsp;</span> <span>&nbsp;</span>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a> <a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
{{#if comp.system.isBase}}
<span class="item-control"><i class="fa-solid fa-trash-slash"></i></span>
{{else}}
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
{{/if}}
</li> </li>
{{/each}} {{/each}}
</ul> </ul>

View File

@@ -1,99 +1,110 @@
<div class="chat-message-header"> <div class="chat-message-header">
{{#if actorImg}} {{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" /> <img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}} {{/if}}
<h4 class="chat-actor-name">{{alias}}</h4> <h4 class="chat-actor-name">{{alias}}</h4>
</div> </div>
<hr> <div class="chat-roll-details" style="margin-top: 0.3rem;">
{{#if img}}
<div style="text-align: center; margin-bottom: 0.3rem;">
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
{{#if img}} <div class="chat-info-badge" style="margin-bottom: 0.4rem;">
<div> <strong>{{alias}}</strong>
<img class="chat-icon" src="{{img}}" alt="{{name}}" /> attaque
</div> <strong>{{defenderName}}</strong>
{{/if}} </div>
<div class="flexcol"> <ul style="margin: 0; padding-left: 0.5rem;">
</div>
<div>
<ul>
<li><strong>{{alias}}</strong> attaque <strong>{{defenderName}}</strong></li>
{{#if arme}} {{#if arme}}
<li><label class="chat-weapon-name">Dégats {{arme.name}} : {{degats}} ({{degatsFormula}})</label></li> <li style="margin: 0.2rem 0;"><span class="chat-info-badge">Dégâts
{{arme.name}}
:
{{degats}}
({{degatsFormula}})</span></li>
{{/if}} {{/if}}
{{#if loc}} {{#if loc}}
<li>Localisation : {{loc.label}}</li> <li style="margin: 0.2rem 0;"><span
<li>Touché : {{touche}}</li> class="chat-difficulty-badge"
>Localisation : {{loc.label}}</span></li>
<li style="margin: 0.2rem 0;">Touché : {{touche}}</li>
{{/if}} {{/if}}
{{#if gantelet}} {{#if gantelet}}
<li>Poing avec gantelet: +1 dégat</li> <li>Poing avec gantelet: +1 dégat</li>
{{/if}} {{/if}}
{{#if isChargeAPied}} {{#if isChargeAPied}}
<li>Charge à pied (+Course)</li> <li>Charge à pied (+Course)</li>
{{/if}} {{/if}}
{{#if isChargeACheval}} {{#if isChargeACheval}}
<li>Charge à cheval (+Equitation)</li> <li>Charge à cheval (+Equitation)</li>
{{/if}} {{/if}}
{{#if isReussiteCritique}} {{#if isReussiteCritique}}
<li><strong class="chat-result-success">Réussite critique : La blessure a été augmentée d'un niveau</strong></li> <li style="margin: 0.3rem 0;"><span class="chat-result-success">🎯
Réussite critique : La blessure a été augmentée d'un niveau</span></li>
{{/if}} {{/if}}
{{#if blessure}} {{#if blessure}}
<li><strong>{{defenderName}} a subi une blessure!</strong></li> <li style="margin: 0.3rem 0;"><span class="chat-warning-badge">⚔️
<li>Gravité : {{blessure.name}}</li> {{defenderName}}
a subi une blessure!</span></li>
<li style="margin: 0.2rem 0;"><strong>Gravité :
{{blessure.name}}</strong></li>
{{#if (eq loc.categorie "tete")}}
{{#if (gt blessure.system.value 0)}}
<li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
{{defenderName}}
doit réussir un test d'Endurance de difficulté 7 ou être assommé</span></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "tete")}} {{#if (eq loc.categorie "bras")}}
{{#if (gt blessure.system.value 0)}} {{#if (gt blessure.system.value 2)}}
<li><strong class="chat-result-warning">{{defenderName}} doit réussir un test d'Endurance de difficulté 7 ou être <li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
assommé</strong></li> {{defenderName}}
{{/if}} lâche l'objet tenu par son bras. Il doit faire un test d'endurance
{{/if}} pour l'utiliser désormais.</span></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "bras")}} {{#if (eq loc.categorie "jambe")}}
{{#if (gt blessure.system.value 2)}} {{#if (gt blessure.system.value 2)}}
<li><strong class="chat-result-warning">{{defenderName}} lache l'objet tenu par son bras. Il doit faire un test <li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
d'endurance {{defenderName}}
pour l'utiliser désormais.</strong></li> tombe au sol. Pour se relever et marcher, il doit réussir un test
{{/if}} d'Endurance à chaque tour.</span></li>
{{/if}} {{/if}}
{{/if}}
{{#if (eq loc.categorie "jambe")}} {{#if (eq loc.categorie "main")}}
{{#if (gt blessure.system.value 2)}} {{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{defenderName}} tombe au sol. Pour se relever et marcher, il doit réussir <li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
un test {{defenderName}}
d'Endurance à chaque tour. lâche l'objet tenu par sa main. Il doit faire un test d'endurance
</strong></li> pour l'utiliser désormais.</span></li>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if (eq loc.categorie "main")}}
{{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{defenderName}} lache l'objet tenu par sa main. Il doit faire un test
d'endurance
pour l'utiliser désormais.</strong></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "pied")}}
{{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{defenderName}} tombe au sol. Pour se relever et marcher, il doit réussir
un test
d'Endurance à chaque tour.
</strong></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "pied")}}
{{#if (gt blessure.system.value 1)}}
<li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
{{defenderName}}
tombe au sol. Pour se relever et marcher, il doit réussir un test
d'Endurance à chaque tour.</span></li>
{{/if}}
{{/if}}
{{else}} {{else}}
<li>Aucune blessure subie par {{defenderName}}</li> <li style="margin: 0.3rem 0;"><span class="chat-result-success">✓ Aucune
blessure subie par
{{defenderName}}</span></li>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>
</div>

View File

@@ -1,38 +1,44 @@
<div class="chat-message-header"> <div class="chat-message-header">
{{#if actorImg}} {{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" /> <img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}} {{/if}}
<h4 class="chat-actor-name">{{alias}}</h4> <h4 class="chat-actor-name">{{alias}}</h4>
</div> </div>
<hr> <div class="chat-roll-details" style="margin-top: 0.3rem;">
{{#if img}}
<div style="text-align: center; margin-bottom: 0.3rem;">
<img class="chat-icon" src="{{arme.img}}" alt="{{name}}" />
</div>
{{/if}}
{{#if img}} <ul style="margin: 0; padding-left: 0.5rem;">
<div> <li style="margin: 0.2rem 0;"><span class="chat-info-badge">Dégâts de
<img class="chat-icon" src="{{arme.img}}" alt="{{name}}" /> {{arme.name}}:
</div> {{formula}}</span></li>
{{/if}}
<div>
<ul>
<li>Dégats de {{arme.name}}: {{formula}} </li>
{{#if gantelet}} {{#if gantelet}}
<li>Poing avec gantelet: +1 dégat</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🥊 Poing
avec gantelet: +1 dégât</span></li>
{{/if}} {{/if}}
{{#if isChargeAPied}} {{#if isChargeAPied}}
<li>Charge à pied (+Course)</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🏃
Charge à pied (+Course)</span></li>
{{/if}} {{/if}}
{{#if isChargeACheval}} {{#if isChargeACheval}}
<li>Charge à cheval (+Equitation)</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🐴
Charge à cheval (+Équitation)</span></li>
{{/if}} {{/if}}
<li>Dégats infligés : {{degats}}</li> <li style="margin: 0.3rem 0;"><span class="chat-warning-badge">⚔️ Dégâts
infligés :
{{degats}}</span></li>
{{#if loc}} {{#if loc}}
<li>Localisation : {{loc.label}}</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🎯
Localisation :
{{loc.label}}</span></li>
{{/if}} {{/if}}
{{#if isReussiteCritique}} {{#if isReussiteCritique}}
<li><strong class="chat-result-success">Réussite critique : La blessure sera augmentée d'un niveau</strong></li> <li style="margin: 0.3rem 0;"><span class="chat-result-success">🎯
Réussite critique : La blessure sera augmentée d'un niveau</span></li>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>
</div>

View File

@@ -5,129 +5,134 @@
<h4 class="chat-actor-name">{{alias}}</h4> <h4 class="chat-actor-name">{{alias}}</h4>
</div> </div>
<hr>
{{#if img}} {{#if img}}
<div> <div style="text-align: center; padding: 0.25rem;">
<img class="chat-icon" src="{{img}}" alt="{{name}}" /> <img class="chat-icon" src="{{img}}" alt="{{name}}" style="border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);" />
</div> </div>
{{/if}} {{/if}}
<div class="flexcol"> <div class="chat-roll-details">
</div>
<div>
<ul> <ul>
{{#if carac}} {{#if carac}}
<li>{{carac.name}}: {{carac.qualite}} ({{carac.dice}}) </li> <li><strong>{{carac.name}}:</strong> {{carac.qualite}} <span class="chat-dice-formula">{{carac.dice}}</span></li>
{{/if}} {{/if}}
{{#if competence}} {{#if competence}}
<li>{{competence.name}}: {{compScore}} </li> <li><strong>{{competence.name}}:</strong> {{compScore}}</li>
{{/if}} {{/if}}
{{#if bonusMalus}} {{#if bonusMalus}}
<li>Bonus/Malus: {{bonusMalus}} </li> <li class="chat-info-badge"><strong>Bonus/Malus:</strong> {{bonusMalus}}</li>
{{/if}} {{/if}}
{{#if santeModifier}} {{#if santeModifier}}
<li>Santé: {{santeModifier}} niveaux</li> <li class="chat-warning-badge"><strong>Santé:</strong> {{santeModifier}} niveaux</li>
{{/if}} {{/if}}
{{#if enableProvidence}} {{#if enableProvidence}}
<li>Un niveau de Providence a été utilisé !</li> <li class="chat-info-badge" style="background: rgba(255, 215, 0, 0.2); border-left-color: goldenrod;">⭐ Un niveau de Providence a été utilisé !</li>
{{/if}} {{/if}}
{{#if hasActions}} {{#if hasActions}}
<li>Actions restantes: {{remainingActions}} (MG:{{remainingActionsMainGauche}})</li> <li class="chat-info-badge" data-tooltip="Nombre d'actions restantes, avec MG = Main Gauche">
<strong>Actions restantes:</strong> {{remainingActions}} (MG:{{remainingActionsMainGauche}})
</li>
{{/if}} {{/if}}
{{#if arme}} {{#if arme}}
{{#if isViser}} {{#if isViser}}
<li>Bonus de visée (+1 niveau)</li> <li class="chat-info-badge">✓ Bonus de visée (+1 niveau)</li>
{{/if}} {{/if}}
{{#if isMouvement}} {{#if isMouvement}}
<li>Malus de cible petite ou en mouvement (-1 niveau)</li> <li class="chat-warning-badge">⚠ Malus de cible petite ou en mouvement (-1 niveau)</li>
{{/if}} {{/if}}
{{#if attaqueCiblee}} {{#if attaqueCiblee}}
<li>Attaque ciblée, -1 niveau</li> <li class="chat-warning-badge">⚠ Attaque ciblée, -1 niveau</li>
{{/if}} {{/if}}
{{#if allongeMalus}} {{#if allongeMalus}}
<li>Malus d'allonge: {{allongeMalus}} niveau</li> <li class="chat-warning-badge">⚠ Malus d'allonge: {{allongeMalus}} niveau</li>
{{/if}} {{/if}}
{{/if}} {{/if}}
<li>Dés: {{diceFormula}} </li> <li><strong>Formule:</strong> <span class="chat-dice-formula">{{diceFormula}}</span></li>
{{#if isTir}} {{#if isTir}}
<li>Portée: {{porteeLabel}} ( {{difficulty}} )</li> <li><strong>Portée:</strong> {{porteeLabel}} <span class="chat-difficulty-badge">Difficulté: {{difficulty}}</span></li>
{{else}} {{else}}
<li>Difficulté: {{difficulty}} </li> <li><strong>Difficulté:</strong> <span class="chat-difficulty-badge">{{difficulty}}</span></li>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>
<div class="flexrow"> <div class="chat-roll-result-section">
<ul class="chat-result-column"> <div class="chat-total-result">Résultat: {{total}}</div>
<li><strong>Résultat: {{total}}</strong> </li>
<div style="text-align: center;">
{{#if isSuccess}} {{#if isSuccess}}
<li><strong class="chat-result-success">Succès !</strong> </li> <div class="chat-result-success">Succès !</div>
{{#if isReussiteCritique}} {{#if isReussiteCritique}}
<li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}"> <div class="chat-result-success" data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP en {{carac.name}}" style="margin-top: 0.3rem;">
<strong class="chat-result-success">Réussite critique (XP potentiel) !</strong> 🌟 Réussite critique (XP potentiel) !
</li> </div>
{{/if}} {{/if}}
{{#if arme}} {{#if arme}}
<li><strong class="">Attaque réussie ! Faites une opposition avec la défense de la cible ou appliquez directement <div class="chat-info-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem; font-size: 0.9em;">
les dégats.</strong> </li> ⚔️ <strong>Attaque réussie !</strong> Faites une opposition avec la défense de la cible ou appliquez directement les dégâts.
</div>
{{/if}} {{/if}}
{{else}} {{else}}
<li><strong class="chat-result-failure">Echec !</strong> </li> <div class="chat-result-failure">Échec !</div>
{{#if critiqueTotal}}
<div class="chat-negative-dice" style="margin-top: 0.3rem;">
Dé négatif: {{critiqueTotal}}
</div>
{{/if}}
{{#if isEchecCritique}} {{#if isEchecCritique}}
<li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}"> <div class="chat-result-failure" data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP en {{carac.name}}" style="margin-top: 0.3rem;">
<strong class="chat-result-failure">Echec critique (XP potentiel) !</strong> 💀 Échec critique (XP potentiel) !
</li> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if nbEsquives}} {{#if nbEsquives}}
<li>Rappel : vous devez réussir {{nbEsquives}} tests d'esquive pour arriver au contact (règle d'allonge des armes). <div class="chat-warning-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem;">
</li> ⚠️ Rappel : vous devez réussir {{nbEsquives}} tests d'esquive pour arriver au contact (règle d'allonge des armes).
</div>
{{/if}} {{/if}}
{{#if loc}} {{#if loc}}
<li><strong>Attaque réussie !!</strong> </li> <div class="chat-info-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem; background: rgba(255, 215, 0, 0.15); border-left-color: goldenrod;">
<li>Localisation: {{loc.label}} </li> 🎯 <strong>Localisation:</strong> {{loc.label}}
</div>
{{/if}} {{/if}}
{{#if degats}} {{#if degats}}
<li>Dégats: {{degats}} {{#if isReussiteCritique}}(Augmentez la gravité de la blessure d'un niveau){{/if}}</li> <div class="chat-warning-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem; font-size: 0.95em; background: rgba(255, 100, 100, 0.15); border-left-color: #a82020;">
⚔️ <strong>Dégâts:</strong> {{degats}} {{#if isReussiteCritique}}<em>(Augmentez la gravité de la blessure d'un niveau)</em>{{/if}}
</div>
{{/if}} {{/if}}
</ul>
<div>
{{#if (or isEchecCritique isReussiteCritique)}}
<a class="chat-command-gain-xp">
<img class="chat-command-img" data-tooltip="Cliquez ici pour +1 XP en {{carac.name}} si pas d'opposition"
src="systems/fvtt-te-deum/images/icons/xpplus1.webp">
</a>
{{/if}}
<a class="chat-command-opposition">
<img class="chat-command-img" data-tooltip="Test en opposition"
src="systems/fvtt-te-deum/images/icons/opposition.webp">
</a>
{{#if arme}}
{{#if isSuccess}}
<a class="chat-command-appliquer-degats">
<img class="chat-command-img" data-tooltip="Appliquer les dégats directement sans opposition"
src="systems/fvtt-te-deum/images/icons/appliquer-degats.webp">
</a>
{{/if}}
{{/if}}
</div> </div>
</div> </div>
<div class="chat-actions-bar">
{{#if (or isEchecCritique isReussiteCritique)}}
<a class="chat-command-gain-xp">
<img class="chat-command-img" data-tooltip="Cliquez ici pour +1 XP en {{carac.name}} si pas d'opposition"
src="systems/fvtt-te-deum/images/icons/xpplus1.webp">
</a>
{{/if}}
<a class="chat-command-opposition">
<img class="chat-command-img" data-tooltip="Test en opposition"
src="systems/fvtt-te-deum/images/icons/opposition.webp">
</a>
{{#if arme}}
{{#if isSuccess}}
<a class="chat-command-appliquer-degats">
<img class="chat-command-img" data-tooltip="Appliquer les dégâts directement sans opposition"
src="systems/fvtt-te-deum/images/icons/appliquer-degats.webp">
</a>
{{/if}}
{{/if}}
</div>
</div>
</div> </div>

View File

@@ -1,112 +1,176 @@
<form class="skill-roll-dialog"> <form class="skill-roll-dialog">
<header class="roll-dialog-header"> <header class="roll-dialog-header">
{{#if img}} {{#if img}}
<img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" /> <img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" />
{{/if}} {{/if}}
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1> <h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1>
</header> </header>
<div class="flexcol"> <div class="flexcol">
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Caracteristique </span> <span class="roll-dialog-label">Caractéristique </span>
<span class="roll-dialog-label">{{carac.name}} : {{carac.qualite}} ({{carac.dice}})</span> <span class="roll-dialog-label">{{carac.name}}
:
{{carac.qualite}}
({{carac.dice}})</span>
</div> </div>
{{#if competence}} {{#if competence}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Compétence </span> <span class="roll-dialog-label">🎯 Compétence </span>
<span class="roll-dialog-label">{{competence.name}} ({{compScore}})</span> <span class="roll-dialog-label">{{competence.name}}
</div> ({{compScore}})</span>
</div>
{{/if}} {{/if}}
{{#if santeModifier}} {{#if santeModifier}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Malus Blessures </span> <span class="roll-dialog-label">💔 Malus Blessures </span>
<span class="roll-dialog-label">{{santeModifier}} niveaux</span> <span class="roll-dialog-label">{{santeModifier}} niveaux</span>
</div> </div>
{{/if}} {{/if}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Bonus/Malus : </span> <span class="roll-dialog-label"> Bonus/Malus : </span>
<select class="" type="text" id="roll-bonus-malus" value="{{bonusMalus}}" data-dtype="Number"> <select
{{selectOptions config.bonusMalus selected=bonusMalus labelAttr="label" valueAttr="value" nameAttr="value"}} class=""
type="text"
id="roll-bonus-malus"
value="{{bonusMalus}}"
data-dtype="Number"
>
{{selectOptions
config.bonusMalus
selected=bonusMalus
labelAttr="label"
valueAttr="value"
nameAttr="value"
}}
</select> </select>
</div> </div>
{{#if providence.value}} {{#if providence.value}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Utiliser la Providence ({{providence.dice}})</span> <span class="roll-dialog-label">Utiliser la Providence ({{providence.dice}})</span>
<input type="checkbox" id="roll-enable-providence" {{checked enableProvidence}} /> <input
</div> type="checkbox"
id="roll-enable-providence"
{{checked enableProvidence}}
/>
</div>
{{/if}} {{/if}}
{{#if arme}} {{#if arme}}
{{#if isTir}} {{#if isTir}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Portée : </span> <span class="roll-dialog-label">🏹 Portée : </span>
<select class="" type="text" id="roll-portee-tir" value="{{porteeTir}}" data-dtype="String"> <select
{{#select porteeTir}} class=""
{{#each config.ARME_PORTEES as |portee key|}} type="text"
<option value="{{key}}">{{portee.label}}</option> id="roll-portee-tir"
{{/each}} value="{{porteeTir}}"
{{/select}} data-dtype="String"
</select> >
</div> {{#select porteeTir}}
<div class="flexrow"> {{#each config.ARME_PORTEES as |portee key|}}
<span class="roll-dialog-label">Viser : </span> <option value="{{key}}">{{portee.label}}</option>
<input type="checkbox" id="roll-tir-viser" {{checked isViser}} /> {{/each}}
</div> {{/select}}
<div class="flexrow"> </select>
<span class="roll-dialog-label">Cible petite/en mouvement : </span> </div>
<input type="checkbox" id="roll-tir-mouvement" {{checked isMouvement}} /> <div class="flexrow">
</div> <span class="roll-dialog-label">👁️ Viser : </span>
<input type="checkbox" id="roll-tir-viser" {{checked isViser}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">🏃 Cible petite/en mouvement : </span>
<input
type="checkbox"
id="roll-tir-mouvement"
{{checked isMouvement}}
/>
</div>
{{else}}
<div class="flexrow">
<span class="roll-dialog-label">⚔️ Allonge
{{allongeLabel}}
: Indiquez l'allonge de votre adversaire ci-dessous.</span>
</div>
<div class="flexrow">
<span
class="roll-dialog-label"
data-tooltip="Modification d'allonge selon votre arme et celle de votre adversaire"
>🗡️ Allonge arme adversaire :
</span>
<select
class=""
type="text"
id="roll-allonge"
value="{{allongeId}}"
data-dtype="String"
>
{{#select allongeId}}
{{#each allonges as |allonge key|}}
<option value="{{key}}">{{allonge.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="flexrow">
<span class="roll-dialog-label">🏃 Charge à pied ?</span>
<input
type="checkbox"
id="roll-charge-a-pied"
{{checked isChargeAPied}}
/>
</div>
<div class="flexrow">
<span class="roll-dialog-label">🐴 Charge à cheval ?</span>
<input
type="checkbox"
id="roll-charge-a-cheval"
{{checked isChargeACheval}}
/>
</div>
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">✋ Main gauche ?</span>
<input type="checkbox" id="roll-main-gauche" {{checked isMainGauche}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">🎯 Attaque ciblée (-1 Niveau): </span>
<select
class=""
type="text"
id="roll-attaque-ciblee"
value="{{attaqueCiblee}}"
data-dtype="String"
>
{{#select attaqueCiblee}}
{{#each config.ATTAQUE_CIBLEES as |attaque key|}}
<option value="{{key}}">{{attaque.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
{{else}} {{else}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Allonge {{allongeLabel}} : Indiquez l'allonge de votre adversaire <span class="roll-dialog-label">📊 Difficulté : </span>
ci-dessous.</span> <select
</div> class=""
<div class="flexrow"> type="text"
<span class="roll-dialog-label" id="roll-difficulty"
data-tooltip="Modification d'allonge selon votre arme et celle de votre adversaire">Allonge arme adversaire : value="{{difficulty}}"
</span> data-dtype="String"
<select class="" type="text" id="roll-allonge" value="{{allongeId}}" data-dtype="String"> >
{{#select allongeId}} {{selectOptions
{{#each allonges as |allonge key|}} config.difficulte
<option value="{{key}}">{{allonge.label}}</option> selected=difficulty
{{/each}} valueAttr="key"
{{/select}} labelAttr="label"
</select> }}
</div> </select>
<div class="flexrow"> </div>
<span class="roll-dialog-label">Charge à pied ?</span>
<input type="checkbox" id="roll-charge-a-pied" {{checked isChargeAPied}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">Charge à cheval ?</span>
<input type="checkbox" id="roll-charge-a-cheval" {{checked isChargeACheval}} />
</div>
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">Main gauche ?</span>
<input type="checkbox" id="roll-main-gauche" {{checked isMainGauche}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">Attaque ciblée (-1 Niveau): </span>
<select class="" type="text" id="roll-attaque-ciblee" value="{{attaqueCiblee}}" data-dtype="String">
{{#select attaqueCiblee}}
{{#each config.ATTAQUE_CIBLEES as |attaque key|}}
<option value="{{key}}">{{attaque.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
{{else}}
<div class="flexrow">
<span class="roll-dialog-label">Difficulté : </span>
<select class="" type="text" id="roll-difficulty" value="{{difficulty}}" data-dtype="String">
{{selectOptions config.difficulte selected=difficulty valueAttr="key" labelAttr="label"}}
</select>
</div>
{{/if}} {{/if}}
</div> </div>

View File

@@ -38,22 +38,22 @@
</select> </select>
</li> </li>
<h3>Spécificités</h3> <h3>⚔️ Spécificités</h3>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Dégâts</label> <label class="item-name-label-long">💥 Dégâts</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.degats" value="{{system.degats}}" data-dtype="String" /> name="system.degats" value="{{system.degats}}" data-dtype="String" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Valeur d'echec critique (ie 1 par défaut)</label> <label class="item-name-label-long">⚠️ Valeur d'échec critique (ie 1 par défaut)</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.valeurEchecCritique" value="{{system.valeurEchecCritique}}" data-dtype="Numeric" /> name="system.valeurEchecCritique" value="{{system.valeurEchecCritique}}" data-dtype="Numeric" />
</li> </li>
{{#if (eq system.typeArme "melee")}} {{#if (eq system.typeArme "melee")}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Allonge</label> <label class="item-name-label-long">🗡️ Allonge</label>
<select name="system.allonge"> <select name="system.allonge">
{{selectOptions config.armeAllonges selected=system.allonge labelAttr="label"}} {{selectOptions config.armeAllonges selected=system.allonge labelAttr="label"}}
</select> </select>
@@ -62,12 +62,12 @@
{{#if (eq system.typeArme "tir")}} {{#if (eq system.typeArme "tir")}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Temps de recharge</label> <label class="item-name-label-long">⏱️ Temps de recharge</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.tempsRecharge" value="{{system.tempsRecharge}}" data-dtype="Number" /> name="system.tempsRecharge" value="{{system.tempsRecharge}}" data-dtype="Number" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Compétence de recharge</label> <label class="item-name-label-long">🔄 Compétence de recharge</label>
<select name="system.competenceRecharge"> <select name="system.competenceRecharge">
{{selectOptions config.competencesRecharge selected=system.competenceRecharge labelAttr="label"}} {{selectOptions config.competencesRecharge selected=system.competenceRecharge labelAttr="label"}}
</select> </select>
@@ -90,7 +90,7 @@
{{/each}} {{/each}}
{{#if (eq system.typeArme "tir")}} {{#if (eq system.typeArme "tir")}}
<h3>Portées</h3> <h3>🎯 Portées</h3>
{{#each system.portees as |portee porteeId|}} {{#each system.portees as |portee porteeId|}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{getConfigLabel "ARME_PORTEES" porteeId}}</label> <label class="item-name-label-long">{{getConfigLabel "ARME_PORTEES" porteeId}}</label>
@@ -100,7 +100,7 @@
{{/each}} {{/each}}
{{/if}} {{/if}}
<h3>Degats sur armures</h3> <h3>🛡️ Degats sur armures</h3>
{{#each system.degatsArmure as |degat degtId|}} {{#each system.degatsArmure as |degat degtId|}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{getConfigLabel "degatsArmure" degtId}}</label> <label class="item-name-label-long">{{getConfigLabel "degatsArmure" degtId}}</label>
@@ -109,21 +109,21 @@
</li> </li>
{{/each}} {{/each}}
<h3>Autres</h3> <h3>📝 Autres</h3>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Equipé?</label> <label class="item-name-label-long">Equipé?</label>
<input type="checkbox" name="system.equipe" {{checked system.equipe}} /> <input type="checkbox" name="system.equipe" {{checked system.equipe}} />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Bonus d'Initiative</label> <label class="item-name-label-long">Bonus d'Initiative</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.initiativeBonus" value="{{system.initiativeBonus}}" data-dtype="Number" /> name="system.initiativeBonus" value="{{system.initiativeBonus}}" data-dtype="Number" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Prix</label> <label class="item-name-label-long">💰 Prix</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.prix" value="{{system.prix}}" data-dtype="Number" /> name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie"> <select name="system.monnaie">

View File

@@ -33,13 +33,13 @@
{{/each}} {{/each}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Protection</label> <label class="item-name-label-long">🛡️ Protection</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.protection" value="{{system.protection}}" data-dtype="Number" /> name="system.protection" value="{{system.protection}}" data-dtype="Number" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Cout en pièces d'Armure Lourde</label> <label class="item-name-label-long">⚖️ Cout en pièces d'Armure Lourde</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.coutArmureLourde" value="{{system.coutArmureLourde}}" data-dtype="Number" /> name="system.coutArmureLourde" value="{{system.coutArmureLourde}}" data-dtype="Number" />
</li> </li>
@@ -57,12 +57,12 @@
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Equipé?</label> <label class="item-name-label-long">Equipé?</label>
<input type="checkbox" name="system.equipe" {{checked system.equipe}} /> <input type="checkbox" name="system.equipe" {{checked system.equipe}} />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Prix</label> <label class="item-name-label-long">💰 Prix</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.prix" value="{{system.prix}}" data-dtype="Number" /> name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie"> <select name="system.monnaie">

View File

@@ -18,13 +18,13 @@
<ul> <ul>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Type de Blessure</label> <label class="item-name-label-long">🩸 Type de Blessure</label>
<select name="system.typeBlessure"> <select name="system.typeBlessure">
{{selectOptions config.blessures selected=system.typeBlessure valueAttr="key" nameAttr="key" labelAttr="label"}} {{selectOptions config.blessures selected=system.typeBlessure valueAttr="key" nameAttr="key" labelAttr="label"}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Localisation</label> <label class="item-name-label-long">🎯 Localisation</label>
<select name="system.localisation"> <select name="system.localisation">
{{selectOptions config.LOCALISATION selected=system.localisation valueAttr="id" nameAttr="id" labelAttr="label"}} {{selectOptions config.LOCALISATION selected=system.localisation valueAttr="id" nameAttr="id" labelAttr="label"}}
</select> </select>

View File

@@ -19,19 +19,19 @@
<div class="tab" data-group="primary"> <div class="tab" data-group="primary">
<ul> <ul>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Caractéristique</label> <label class="item-name-label-long">Caractéristique</label>
<select name="system.caracteristique"> <select name="system.caracteristique">
{{selectOptions config.caracteristiques selected=system.caracteristique labelAttr="label" blank=""}} {{selectOptions config.caracteristiques selected=system.caracteristique labelAttr="label" blank=""}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Compétence de base</label> <label class="item-name-label-long">🎯 Compétence de base</label>
<input type="checkbox" name="system.isBase" {{checked system.isBase}} /> <input type="checkbox" name="system.isBase" {{checked system.isBase}} />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Score</label> <label class="item-name-label-long">📊 Score</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.score" value="{{system.score}}" data-dtype="Number" {{#if system.isBase}}disabled{{/if}}/> name="system.score" value="{{system.score}}" data-dtype="Number" {{#if system.isBase}}disabled{{/if}}/>
</li> </li>

View File

@@ -21,7 +21,7 @@
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Prix</label> <label class="item-name-label-long">💰 Prix</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.prix" value="{{system.prix}}" data-dtype="Number" /> name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie"> <select name="system.monnaie">

View File

@@ -25,25 +25,25 @@
<div class="tab details" data-group="primary" data-tab="details"> <div class="tab details" data-group="primary" data-tab="details">
<h4 class="item-name-label-long">Vertus médicinales</h4> <h4 class="item-name-label-long">🌿 Vertus médicinales</h4>
<textarea name="system.vertus" rows="6" data-dtype="String"> <textarea name="system.vertus" rows="6" data-dtype="String">
{{{system.vertus}}} {{{system.vertus}}}
</textarea> </textarea>
<h4 class="item-name-label-long">Toxicité</h4> <h4 class="item-name-label-long">☠️ Toxicité</h4>
<textarea name="system.toxicite" rows="6" data-dtype="String"> <textarea name="system.toxicite" rows="6" data-dtype="String">
{{{system.toxicite}}} {{{system.toxicite}}}
</textarea> </textarea>
<ul> <ul>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Difficulté au test d'Endurance</label> <label class="item-name-label-long">💪 Difficulté au test d'Endurance</label>
<select class="" type="text" name="system.difficulteEndurance" data-dtype="String"> <select class="" type="text" name="system.difficulteEndurance" data-dtype="String">
{{selectOptions config.difficulte selected=system.difficulteEndurance abelAttr="label"}} {{selectOptions config.difficulte selected=system.difficulteEndurance abelAttr="label"}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Virulence</label> <label class="item-name-label-long">🔥 Virulence</label>
<select name="system.virulence"> <select name="system.virulence">
{{selectOptions config.virulencePoison selected=system.virulence labelAttr="label"}} {{selectOptions config.virulencePoison selected=system.virulence labelAttr="label"}}
</select> </select>

View File

@@ -0,0 +1,26 @@
<h3 class="welcome-message-h3">Bonjour à tous !</h3>
<div class="message-chat-center">
Open Sesame Game a mis en place un nouveau Discord pour ceux ou celles qui
souhaiteraient participer plus activement à la communauté des jeux d'Open
Sesame Games, avec un espace dédié à Te Deum ! <br />
Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer
pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus
directement. Cliquez ici :<br />
<a href="https://discord.gg/dUPhNfJdaD">https://discord.gg/dUPhNfJdaD</a
><br />
</div>
<div class="message-chat-center">
Ce système vous est proposé par Open Sesame Games.<br />
Vous trouverez de l'aide dans
@UUID[Compendium.fvtt-te-deum.aides.JournalEntry.uNwJgi4kXBCiZmAH]{Aide pour
Te Deum}<br />
ainsi que sur le Discord de Foundry FR :
<a href="https://discord.gg/pPSDNJk">https://discord.gg/pPSDNJk</a>
</div>
<div>
Merci pour votre attention et à très bientôt pour la suite ! L'équipe Open
Sesame Games
</div>