Réglage de la difficulté par défaut
Release Creation / build (release) Successful in 1m13s

This commit is contained in:
2026-05-29 18:28:09 +02:00
parent ec0e522145
commit 5c2a364832
37 changed files with 191 additions and 83 deletions
+87
View File
@@ -0,0 +1,87 @@
# Copilot Instructions — fvtt-celestopol
## Project Overview
This is a **Foundry VTT system** for **Célestopol 1922**, a French tabletop RPG set in an art-deco 1922 universe. The project targets FoundryVTT v13+ and is developed in French.
The reference rulebooks are in `__regles/` (gitignored):
- *Célestopol 1922 Livre de base* — core rulebook
- *Célestopol 1922 Fiches de prêts à jouer* — pre-generated character sheets
## Architecture
This system uses **FoundryVTT v13 DataModels + ApplicationV2** — NOT the legacy template.json / AppV1 approach.
```
fvtt-celestopol.mjs # Main entry point (Hooks.once("init"))
module/
config/system.mjs # All game constants (SYSTEM export)
models/ # TypeDataModel subclasses (character, npc, items)
documents/ # Actor, Item, ChatMessage, Roll wrappers
applications/sheets/ # AppV2 sheets (HandlebarsApplicationMixin)
lang/fr.json # French i18n (key prefix: CELESTOPOL.*)
styles/ # LESS source files
css/ # Compiled CSS (via gulp)
templates/ # Handlebars (.hbs) templates
assets/fonts/ # CopaseticNF art-deco font
assets/ui/ # Background images
assets/icons/ # Item icons
packs-system/ # Source files for compendium packs
```
## DataModels (no template.json)
- Extend `foundry.abstract.TypeDataModel`
- Schema in `static defineSchema()` using `foundry.data.fields.*`
- `prepareDerivedData()` for computed values
- Files: `module/models/character.mjs`, `npc.mjs`, `items.mjs`
## ApplicationV2 / Sheets
- Actor sheets: `HandlebarsApplicationMixin(foundry.applications.sheets.ActorSheetV2)`
- Item sheets: `HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2)`
- `static DEFAULT_OPTIONS` for config; `static PARTS` for templates
- `_prepareContext()` for base context; `_preparePartContext(partId, context)` for per-tab
- Edit/Play mode toggle via `_sheetMode` + `isPlayMode`/`isEditMode` getters
- Actions: `static #onXxx(event, target)` private static methods in `DEFAULT_OPTIONS.actions`
- `form: { submitOnChange: true }` enables live saving
## Roll Mechanics
- Pool of d6 dice: `nbDice = max(1, skillValue + woundMalus)`
- Formula: `{n}d6 [+ moonBonus + modifier]`
- Moon phase bonus: Nouvelle Lune=0, Croissants=+1, Gibbeuse=+2, Pleine Lune=+3
- Compare total vs difficulty threshold (normal=7)
- Wound malus: levels 1-2=0, 3-4=-1, 5-6=-2, 7=-3, 8=-999 (out)
- DialogV2 for roll configuration: `foundry.applications.api.DialogV2.wait(...)`
## Game Data (4 stats × 4 skills)
- **Âme**: Artifice, Attraction, Coercition, Faveur
- **Corps**: Échauffourée, Effacement, Mobilité, Prouesse
- **Cœur**: Appréciation, Arts, Inspiration, Traque
- **Esprit**: Instruction, Merveilleux technologique, Raisonnement, Traitement
**Tracks**: Blessures (8 niveaux), Destin (8), Spleen (8)
**Anomalies**: 9 types (none + 8)
**Factions**: 8 standard + 2 custom
## Build
```bash
npm install # Install dev deps
npx gulp css # Compile LESS → css/fvtt-celestopol.css (once)
npx gulp # Compile + watch
```
## Visual Style
- Font: **CopaseticNF** (Regular + Bold, in `assets/fonts/`) — art-deco style
- Header bg color: `rgb(12, 76, 12)` (dark green) with orange text (`#e07b00`)
- Sheet header texture: `assets/ui/fond_cadrille.jpg`
- CSS variables: `--cel-green`, `--cel-orange`, `--cel-font-title`, etc.
## Language
All in-game text, labels, and code comments should be in **French**. Code identifiers may be English. All i18n keys use the `CELESTOPOL.*` prefix (see `lang/fr.json`).
+23
View File
@@ -43,6 +43,7 @@ const MOON_EFFECT_FLAG = "moonEffectApplied"
const FACTION_ASPECT_STATE_SETTING = "factionAspectState"
const PREGENS_IMPORTED_SETTING = "pregensImported"
const WELCOME_SCENE_IMPORTED_SETTING = "welcomeSceneImported"
const DEFAULT_ROLL_THRESHOLD_SETTING = "defaultRollThreshold"
/* ─── Init hook ──────────────────────────────────────────────────────────── */
@@ -65,6 +66,7 @@ Hooks.once("init", () => {
// Expose SYSTEM constants + utilities globales
game.celestopol = {
SYSTEM,
DEFAULT_ROLL_THRESHOLD_SETTING,
rollMoonStandalone: (actor = null) => CelestopolRoll.rollMoonStandalone(actor),
manageFactionAspects: (actor = null) => _manageFactionAspects(actor),
resetFactionAspects: () => _resetFactionAspects(),
@@ -357,6 +359,11 @@ function _registerHandlebarsHelpers() {
return false
})
// Helper : récupérer un setting système par son nom
Handlebars.registerHelper("getSetting", (settingName) => {
return game.settings.get(SYSTEM_ID, settingName)
})
Handlebars.registerHelper("let", function(value, options) {
return options.fn({ value })
})
@@ -626,6 +633,22 @@ function _registerSettings() {
type: Boolean,
default: false,
})
// Seuil de difficulté par défaut pour les jets normaux (hors combat)
game.settings.register(SYSTEM_ID, DEFAULT_ROLL_THRESHOLD_SETTING, {
name: "CELESTOPOL.Setting.defaultRollThreshold.name",
hint: "CELESTOPOL.Setting.defaultRollThreshold.hint",
scope: "world",
config: true,
type: Number,
default: 11,
range: {
min: 1,
max: 30,
step: 1,
},
})
// Suivi de l'import des anomalies (caché)
game.settings.register(SYSTEM_ID, "anomaliesImported", {
scope: "world",
+4
View File
@@ -454,6 +454,10 @@
"name": "Lancer le dé de la lune par défaut",
"hint": "Cocher automatiquement 'Lancer le dé de la lune' dans les fenêtres de jet"
},
"defaultRollThreshold": {
"name": "Seuil de difficulté par défaut",
"hint": "Valeur du seuil utilisée par défaut pour les jets de compétence hors combat"
},
"migrateOldSystem": {
"name": "Migration depuis l'ancien système",
"hint": "Importer un personnage exporté depuis l'ancien système Célestopol 1922 (celestopol1922).",
+10 -7
View File
@@ -294,12 +294,13 @@ export class CelestopolRoll extends Roll {
if (!rollContext) return null
// En combat : Corps PNJ = seuil direct ; sinon seuil fixe = 11
// En combat : Corps PNJ = seuil direct ; sinon seuil configurable via setting
const corpsPnj = isCombat ? (parseInt(rollContext.corpsPnj ?? 7) || 7) : null
const difficulty = isCombat ? "combat" : "standard"
const defaultThreshold = game.settings.get(game.celestopol.SYSTEM.id, game.celestopol.DEFAULT_ROLL_THRESHOLD_SETTING)
const diffConfig = isCombat
? { value: corpsPnj, label: "CELESTOPOL.Combat.corpsPnj" }
: { value: 11, label: "CELESTOPOL.Roll.threshold" }
: { value: defaultThreshold, label: "CELESTOPOL.Roll.threshold" }
const autoSuccess = rollContext.modifier === "auto"
const modifier = autoSuccess ? 0 : (parseInt(rollContext.modifier ?? 0) || 0)
const aspectMod = parseInt(rollContext.aspectModifier ?? 0) || 0
@@ -464,7 +465,7 @@ export class CelestopolRoll extends Roll {
/**
* Détermine succès/échec selon la marge (total seuil).
* Seuil : 11 pour les tests normaux, Corps PNJ pour le combat.
* Seuil : configurable via setting pour les tests normaux, Corps PNJ pour le combat.
* Pas de succès/échec critique — seul le Dé de la Lune produit des résultats exceptionnels.
*/
computeResult() {
@@ -479,9 +480,10 @@ export class CelestopolRoll extends Roll {
this.options.margin = null
return
}
const defaultThreshold = game.settings.get(game.celestopol.SYSTEM.id, game.celestopol.DEFAULT_ROLL_THRESHOLD_SETTING)
const threshold = this.options.isCombat
? (this.options.difficultyValue ?? 0)
: 11
: defaultThreshold
if (threshold === 0) {
this.options.resultType = "unknown"
this.options.margin = null
@@ -510,9 +512,10 @@ export class CelestopolRoll extends Roll {
const resultType = this.resultType
const diceResults = this.dice[0]?.results?.map(r => r.result) ?? []
const diceSum = diceResults.reduce((a, b) => a + b, 0)
const defaultThreshold = game.settings.get(game.celestopol.SYSTEM.id, game.celestopol.DEFAULT_ROLL_THRESHOLD_SETTING)
const threshold = this.options.isCombat
? (this.options.difficultyValue ?? 0)
: 11
: defaultThreshold
const margin = this.options.margin
const woundMalus = this.options.woundMalus ?? 0
const armorMalus = this.options.armorMalus ?? 0
@@ -565,12 +568,12 @@ export class CelestopolRoll extends Roll {
})
const actorType = rollingActor?.type ?? this.options.actorType ?? null
// Libellé de difficulté : en combat "Corps PNJ : N", en opposition "vs ?", sinon "Seuil : 11"
// Libellé de difficulté : en combat "Corps PNJ : N", en opposition "vs ?", sinon "Seuil : N"
const difficultyLabel = this.options.isCombat
? `${game.i18n.localize("CELESTOPOL.Combat.corpsPnj")} : ${threshold}`
: isOpposition
? `${game.i18n.localize("CELESTOPOL.Roll.oppositionVs")}`
: `${game.i18n.localize("CELESTOPOL.Roll.threshold")} : 11`
: `${game.i18n.localize("CELESTOPOL.Roll.threshold")} : ${threshold}`
return {
cssClass: [SYSTEM.id, "dice-roll"].join(" "),
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000097
MANIFEST-000105
+11 -7
View File
@@ -1,7 +1,11 @@
2026/04/27-22:18:49.718901 7fed937fe6c0 Recovering log #95
2026/04/27-22:18:49.728863 7fed937fe6c0 Delete type=3 #93
2026/04/27-22:18:49.728935 7fed937fe6c0 Delete type=0 #95
2026/04/27-22:29:30.180780 7feb10fff6c0 Level-0 table #100: started
2026/04/27-22:29:30.180810 7feb10fff6c0 Level-0 table #100: 0 bytes OK
2026/04/27-22:29:30.187367 7feb10fff6c0 Delete type=0 #98
2026/04/27-22:29:30.210881 7feb10fff6c0 Manual compaction at level-0 from '!journal!eNYstmPK0mMmVJYC' @ 72057594037927935 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.135570 7f381f7fe6c0 Delete type=3 #1
2026/05/29-18:27:57.110280 7f381e7fc6c0 Level-0 table #108: started
2026/05/29-18:27:57.110317 7f381e7fc6c0 Level-0 table #108: 0 bytes OK
2026/05/29-18:27:57.146936 7f381e7fc6c0 Delete type=0 #106
2026/05/29-18:27:57.291474 7f381e7fc6c0 Manual compaction at level-0 from '!journal!eNYstmPK0mMmVJYC' @ 72057594037927935 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 1 : 1
2026/05/29-18:27:57.291484 7f381e7fc6c0 Compacting 1@0 + 0@1 files
2026/05/29-18:27:57.308314 7f381e7fc6c0 Generated table #109@0: 6 keys, 5441 bytes
2026/05/29-18:27:57.308348 7f381e7fc6c0 Compacted 1@0 + 0@1 files => 5441 bytes
2026/05/29-18:27:57.339343 7f381e7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2026/05/29-18:27:57.339668 7f381e7fc6c0 Delete type=2 #88
2026/05/29-18:27:57.450192 7f381e7fc6c0 Manual compaction at level-0 from '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 1 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at (end)
+4 -7
View File
@@ -1,7 +1,4 @@
2026/04/27-22:04:32.581280 7fed927fc6c0 Recovering log #91
2026/04/27-22:04:32.591253 7fed927fc6c0 Delete type=3 #89
2026/04/27-22:04:32.591326 7fed927fc6c0 Delete type=0 #91
2026/04/27-22:06:50.324351 7feb10fff6c0 Level-0 table #96: started
2026/04/27-22:06:50.324370 7feb10fff6c0 Level-0 table #96: 0 bytes OK
2026/04/27-22:06:50.330761 7feb10fff6c0 Delete type=0 #94
2026/04/27-22:06:50.339938 7feb10fff6c0 Manual compaction at level-0 from '!journal!eNYstmPK0mMmVJYC' @ 72057594037927935 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.120174 7f381f7fe6c0 Log #103: 0 ops saved to Table #104 OK
2026/05/29-18:25:23.120268 7f381f7fe6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/aides-de-jeu/000103.log: OK
2026/05/29-18:25:23.120320 7f381f7fe6c0 Table #88: 6 entries OK
2026/05/29-18:25:23.123657 7f381f7fe6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/aides-de-jeu; recovered 1 files; 5441 bytes. Some data may have been lost. ****
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000157
MANIFEST-000168
+12 -14
View File
@@ -1,14 +1,12 @@
2026/04/27-22:18:49.690384 7fed92ffd6c0 Recovering log #154
2026/04/27-22:18:49.702685 7fed92ffd6c0 Delete type=3 #152
2026/04/27-22:18:49.702754 7fed92ffd6c0 Delete type=0 #154
2026/04/27-22:29:30.170390 7feb10fff6c0 Level-0 table #160: started
2026/04/27-22:29:30.173958 7feb10fff6c0 Level-0 table #160: 3524 bytes OK
2026/04/27-22:29:30.180662 7feb10fff6c0 Delete type=0 #158
2026/04/27-22:29:30.201177 7feb10fff6c0 Manual compaction at level-0 from '!items!anomCommMorts001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 133 : 1
2026/04/27-22:29:30.201186 7feb10fff6c0 Compacting 1@0 + 1@1 files
2026/04/27-22:29:30.204413 7feb10fff6c0 Generated table #161@0: 9 keys, 6617 bytes
2026/04/27-22:29:30.204438 7feb10fff6c0 Compacted 1@0 + 1@1 files => 6617 bytes
2026/04/27-22:29:30.210527 7feb10fff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2026/04/27-22:29:30.210659 7feb10fff6c0 Delete type=2 #156
2026/04/27-22:29:30.210789 7feb10fff6c0 Delete type=2 #160
2026/04/27-22:29:30.210920 7feb10fff6c0 Manual compaction at level-0 from '!items!null' @ 133 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.097516 7f381effd6c0 Delete type=3 #1
2026/05/29-18:27:57.232279 7f381e7fc6c0 Level-0 table #171: started
2026/05/29-18:27:57.253183 7f381e7fc6c0 Level-0 table #171: 3524 bytes OK
2026/05/29-18:27:57.291326 7f381e7fc6c0 Delete type=0 #169
2026/05/29-18:27:57.404912 7f381e7fc6c0 Manual compaction at level-0 from '!items!anomCommMorts001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 141 : 1
2026/05/29-18:27:57.404922 7f381e7fc6c0 Compacting 2@0 + 0@1 files
2026/05/29-18:27:57.421172 7f381e7fc6c0 Generated table #172@0: 9 keys, 6617 bytes
2026/05/29-18:27:57.421194 7f381e7fc6c0 Compacted 2@0 + 0@1 files => 6617 bytes
2026/05/29-18:27:57.449840 7f381e7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2026/05/29-18:27:57.449959 7f381e7fc6c0 Delete type=2 #166
2026/05/29-18:27:57.450112 7f381e7fc6c0 Delete type=2 #171
2026/05/29-18:27:57.505063 7f381e7fc6c0 Manual compaction at level-0 from '!items!null' @ 141 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
+4 -14
View File
@@ -1,14 +1,4 @@
2026/04/27-22:04:32.549946 7fed937fe6c0 Recovering log #149
2026/04/27-22:04:32.561235 7fed937fe6c0 Delete type=3 #147
2026/04/27-22:04:32.561293 7fed937fe6c0 Delete type=0 #149
2026/04/27-22:06:50.330846 7feb10fff6c0 Level-0 table #155: started
2026/04/27-22:06:50.333934 7feb10fff6c0 Level-0 table #155: 3524 bytes OK
2026/04/27-22:06:50.339817 7feb10fff6c0 Delete type=0 #153
2026/04/27-22:06:50.339951 7feb10fff6c0 Manual compaction at level-0 from '!items!anomCommMorts001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 129 : 1
2026/04/27-22:06:50.339958 7feb10fff6c0 Compacting 1@0 + 1@1 files
2026/04/27-22:06:50.343129 7feb10fff6c0 Generated table #156@0: 9 keys, 6617 bytes
2026/04/27-22:06:50.343143 7feb10fff6c0 Compacted 1@0 + 1@1 files => 6617 bytes
2026/04/27-22:06:50.349117 7feb10fff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2026/04/27-22:06:50.349224 7feb10fff6c0 Delete type=2 #151
2026/04/27-22:06:50.349379 7feb10fff6c0 Delete type=2 #155
2026/04/27-22:06:50.368353 7feb10fff6c0 Manual compaction at level-0 from '!items!null' @ 129 : 1 .. '!items!null' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.059599 7f381effd6c0 Log #164: 0 ops saved to Table #167 OK
2026/05/29-18:25:23.059740 7f381effd6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/anomalies/000164.log: OK
2026/05/29-18:25:23.059875 7f381effd6c0 Table #166: 9 entries OK
2026/05/29-18:25:23.063157 7f381effd6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/anomalies; recovered 1 files; 6617 bytes. Some data may have been lost. ****
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000058
MANIFEST-000066
+11 -7
View File
@@ -1,7 +1,11 @@
2026/04/27-22:18:49.704865 7fed93fff6c0 Recovering log #56
2026/04/27-22:18:49.714938 7fed93fff6c0 Delete type=3 #54
2026/04/27-22:18:49.714987 7fed93fff6c0 Delete type=0 #56
2026/04/27-22:29:30.194650 7feb10fff6c0 Level-0 table #61: started
2026/04/27-22:29:30.194677 7feb10fff6c0 Level-0 table #61: 0 bytes OK
2026/04/27-22:29:30.201065 7feb10fff6c0 Delete type=0 #59
2026/04/27-22:29:30.210910 7feb10fff6c0 Manual compaction at level-0 from '!actors!6RZ6IzJUHm4dB5Ut' @ 72057594037927935 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.116810 7f381ffff6c0 Delete type=3 #1
2026/05/29-18:27:57.533567 7f381e7fc6c0 Level-0 table #69: started
2026/05/29-18:27:57.533614 7f381e7fc6c0 Level-0 table #69: 0 bytes OK
2026/05/29-18:27:57.568380 7f381e7fc6c0 Delete type=0 #67
2026/05/29-18:27:57.662122 7f381e7fc6c0 Manual compaction at level-0 from '!actors!6RZ6IzJUHm4dB5Ut' @ 72057594037927935 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at '!folders!MbFQgPdF6Gtbj5AU' @ 37 : 1
2026/05/29-18:27:57.662130 7f381e7fc6c0 Compacting 1@0 + 0@1 files
2026/05/29-18:27:57.681906 7f381e7fc6c0 Generated table #70@0: 36 keys, 35733 bytes
2026/05/29-18:27:57.681939 7f381e7fc6c0 Compacted 1@0 + 0@1 files => 35733 bytes
2026/05/29-18:27:57.724776 7f381e7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2026/05/29-18:27:57.724885 7f381e7fc6c0 Delete type=2 #49
2026/05/29-18:27:57.817815 7f381e7fc6c0 Manual compaction at level-0 from '!folders!MbFQgPdF6Gtbj5AU' @ 37 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at (end)
+4 -7
View File
@@ -1,7 +1,4 @@
2026/04/27-22:04:32.565909 7fed92ffd6c0 Recovering log #52
2026/04/27-22:04:32.576099 7fed92ffd6c0 Delete type=3 #50
2026/04/27-22:04:32.576173 7fed92ffd6c0 Delete type=0 #52
2026/04/27-22:06:50.318454 7feb10fff6c0 Level-0 table #57: started
2026/04/27-22:06:50.318473 7feb10fff6c0 Level-0 table #57: 0 bytes OK
2026/04/27-22:06:50.324288 7feb10fff6c0 Delete type=0 #55
2026/04/27-22:06:50.339928 7feb10fff6c0 Manual compaction at level-0 from '!actors!6RZ6IzJUHm4dB5Ut' @ 72057594037927935 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.101143 7f381ffff6c0 Log #64: 0 ops saved to Table #65 OK
2026/05/29-18:25:23.101233 7f381ffff6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/pretires/000064.log: OK
2026/05/29-18:25:23.101342 7f381ffff6c0 Table #49: 36 entries OK
2026/05/29-18:25:23.105539 7f381ffff6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/pretires; recovered 1 files; 35733 bytes. Some data may have been lost. ****
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000100
MANIFEST-000108
+11 -7
View File
@@ -1,7 +1,11 @@
2026/04/27-22:18:49.731702 7fed93fff6c0 Recovering log #98
2026/04/27-22:18:49.741999 7fed93fff6c0 Delete type=3 #96
2026/04/27-22:18:49.742065 7fed93fff6c0 Delete type=0 #98
2026/04/27-22:29:30.187494 7feb10fff6c0 Level-0 table #103: started
2026/04/27-22:29:30.187529 7feb10fff6c0 Level-0 table #103: 0 bytes OK
2026/04/27-22:29:30.194521 7feb10fff6c0 Delete type=0 #101
2026/04/27-22:29:30.210897 7feb10fff6c0 Manual compaction at level-0 from '!scenes!0iGCRqkdJKjmmbl4' @ 72057594037927935 : 1 .. '!scenes.levels!X3XJg7raEXtOFOtj.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.154144 7f381ffff6c0 Delete type=3 #1
2026/05/29-18:27:57.197941 7f381e7fc6c0 Level-0 table #111: started
2026/05/29-18:27:57.197975 7f381e7fc6c0 Level-0 table #111: 0 bytes OK
2026/05/29-18:27:57.232075 7f381e7fc6c0 Delete type=0 #109
2026/05/29-18:27:57.339840 7f381e7fc6c0 Manual compaction at level-0 from '!scenes!0iGCRqkdJKjmmbl4' @ 72057594037927935 : 1 .. '!scenes.levels!X3XJg7raEXtOFOtj.defaultLevel0000' @ 0 : 0; will stop at '!scenes.levels!X3XJg7raEXtOFOtj.defaultLevel0000' @ 61 : 1
2026/05/29-18:27:57.339849 7f381e7fc6c0 Compacting 1@0 + 0@1 files
2026/05/29-18:27:57.358860 7f381e7fc6c0 Generated table #112@0: 4 keys, 1746 bytes
2026/05/29-18:27:57.358888 7f381e7fc6c0 Compacted 1@0 + 0@1 files => 1746 bytes
2026/05/29-18:27:57.404742 7f381e7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2026/05/29-18:27:57.404821 7f381e7fc6c0 Delete type=2 #91
2026/05/29-18:27:57.505039 7f381e7fc6c0 Manual compaction at level-0 from '!scenes.levels!X3XJg7raEXtOFOtj.defaultLevel0000' @ 61 : 1 .. '!scenes.levels!X3XJg7raEXtOFOtj.defaultLevel0000' @ 0 : 0; will stop at (end)
+4 -7
View File
@@ -1,7 +1,4 @@
2026/04/27-22:04:32.595481 7fed93fff6c0 Recovering log #94
2026/04/27-22:04:32.606129 7fed93fff6c0 Delete type=3 #92
2026/04/27-22:04:32.606193 7fed93fff6c0 Delete type=0 #94
2026/04/27-22:06:50.312356 7feb10fff6c0 Level-0 table #99: started
2026/04/27-22:06:50.312415 7feb10fff6c0 Level-0 table #99: 0 bytes OK
2026/04/27-22:06:50.318377 7feb10fff6c0 Delete type=0 #97
2026/04/27-22:06:50.339915 7feb10fff6c0 Manual compaction at level-0 from '!scenes!0iGCRqkdJKjmmbl4' @ 72057594037927935 : 1 .. '!scenes.levels!X3XJg7raEXtOFOtj.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/05/29-18:25:23.139385 7f381ffff6c0 Log #106: 0 ops saved to Table #107 OK
2026/05/29-18:25:23.139489 7f381ffff6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/scenes/000106.log: OK
2026/05/29-18:25:23.139532 7f381ffff6c0 Table #91: 4 entries OK
2026/05/29-18:25:23.142713 7f381ffff6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-celestopol/packs-system/scenes; recovered 1 files; 1746 bytes. Some data may have been lost. ****
Binary file not shown.
Binary file not shown.
View File
+2 -2
View File
@@ -42,7 +42,7 @@
<div class="roll-form-rows">
{{!-- Difficulté : Corps PNJ en combat, fixe 11 en test normal --}}
{{!-- Difficulté : Corps PNJ en combat, configurable via setting en test normal --}}
{{#if isCombat}}
{{!-- Sélecteur de cible PNJ (si des tokens NPCs sont disponibles) --}}
@@ -81,7 +81,7 @@
{{else}}
<div class="form-row-line form-threshold-fixed">
<label>{{localize "CELESTOPOL.Roll.threshold"}}</label>
<span class="threshold-value" id="threshold-display">11</span>
<span class="threshold-value" id="threshold-display">{{getSetting "defaultRollThreshold"}}</span>
</div>
{{!-- Test en opposition : le résultat sera masqué, MJ décide --}}