diff --git a/module.json b/module.json index a2a4cc7..c80cb61 100644 --- a/module.json +++ b/module.json @@ -1,12 +1,12 @@ { "id": "mgt2-compendium-amiral-denisov", - "title": "MGT2 - Compendium Amiral Denisov", - "version": "1.1.0", + "title": "MgT2e - Compendium Amiral Denisov", + "version": "1.2.0", "compatibility": { - "minimum": "11", + "minimum": "13", "verified": "13" }, - "description": "Module de compendium et d'outils MGT2 pour FoundryVTT écrit par JdR.Ninja.\nInclut les commandes /commerce, /pnj, /rencontre et /mission pour automatiser le commerce, les PNJ rapides, les rencontres et les contrats aléatoires.", + "description": "Module de compendium et d'outils Mongoose Traveller 2e pour FoundryVTT écrit par JdR.Ninja.\nInclut les commandes /commerce, /pnj, /rencontre et /mission pour automatiser le commerce, les PNJ rapides, les rencontres et les contrats aléatoires au-dessus du système mgt2e, en s'appuyant sur les compétences natives des fiches.", "esmodules": [ "scripts/commerce.js", "scripts/npc.js" @@ -21,7 +21,7 @@ "label": "Armures", "path": "packs/armures", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -29,10 +29,10 @@ }, { "name": "competences", - "label": "Compétences", + "label": "Références de compétences", "path": "packs/competences", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -43,7 +43,7 @@ "label": "Maladie, Poison & Blessure", "path": "packs/maladie-poison-and-blessure", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -54,7 +54,7 @@ "label": "Objets", "path": "packs/objet", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -65,7 +65,7 @@ "label": "Équipement", "path": "packs/equipement", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -76,7 +76,7 @@ "label": "Ordinateur", "path": "packs/ordinateur", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -87,7 +87,7 @@ "label": "Contenant (sac, coffre)", "path": "packs/contenant-sac-coffre", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -98,7 +98,7 @@ "label": "Espèce", "path": "packs/espece", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -109,7 +109,7 @@ "label": "Journal Psioniques", "path": "packs/journal", "type": "JournalEntry", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -120,7 +120,7 @@ "label": "Armes", "path": "packs/armes", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -131,7 +131,7 @@ "label": "Talents psioniques", "path": "packs/talents-psioniques", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -142,7 +142,7 @@ "label": "Carrières", "path": "packs/carrieres", "type": "Item", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" @@ -153,7 +153,7 @@ "label": "Tables PNJ & Rencontres", "path": "packs/tables-pnj", "type": "RollTable", - "system": "mgt2", + "system": "mgt2e", "ownership": { "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" diff --git a/packs/armes/000056.ldb b/packs/armes/000056.ldb deleted file mode 100644 index 602da94..0000000 Binary files a/packs/armes/000056.ldb and /dev/null differ diff --git a/packs/armes/000059.log b/packs/armes/000063.log similarity index 100% rename from packs/armes/000059.log rename to packs/armes/000063.log diff --git a/packs/armes/000065.ldb b/packs/armes/000065.ldb new file mode 100644 index 0000000..e7735ac Binary files /dev/null and b/packs/armes/000065.ldb differ diff --git a/packs/armes/CURRENT b/packs/armes/CURRENT index ac18047..ebafc63 100644 --- a/packs/armes/CURRENT +++ b/packs/armes/CURRENT @@ -1 +1 @@ -MANIFEST-000057 +MANIFEST-000061 diff --git a/packs/armes/LOG b/packs/armes/LOG index 19bde7a..eb4eac4 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:27.978364 7fddd97be6c0 Recovering log #53 -2026/04/14-09:09:28.036731 7fddd97be6c0 Delete type=3 #51 -2026/04/14-09:09:28.036869 7fddd97be6c0 Delete type=0 #53 -2026/04/14-09:37:12.068876 7fddca1c26c0 Level-0 table #60: started -2026/04/14-09:37:12.068921 7fddca1c26c0 Level-0 table #60: 0 bytes OK -2026/04/14-09:37:12.075223 7fddca1c26c0 Delete type=0 #58 -2026/04/14-09:37:12.095906 7fddca1c26c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.096000 7fddca1c26c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.790903 7f8fb27bf6c0 Recovering log #59 +2026/04/30-16:49:03.800967 7f8fb27bf6c0 Delete type=0 #59 +2026/04/30-16:49:03.801014 7f8fb27bf6c0 Delete type=3 #57 +2026/04/30-22:23:51.951244 7f8d1bfff6c0 Level-0 table #64: started +2026/04/30-22:23:51.954584 7f8d1bfff6c0 Level-0 table #64: 15379 bytes OK +2026/04/30-22:23:51.960697 7f8d1bfff6c0 Delete type=0 #62 +2026/04/30-22:23:51.960845 7f8d1bfff6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) +2026/04/30-22:23:51.972457 7f8d1bfff6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at '!items!yoIqL0RQEnzNVJB6' @ 117 : 1 +2026/04/30-22:23:51.972464 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:51.975673 7f8d1bfff6c0 Generated table #65@1: 29 keys, 15791 bytes +2026/04/30-22:23:51.975685 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 15791 bytes +2026/04/30-22:23:51.981953 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:51.982044 7f8d1bfff6c0 Delete type=2 #56 +2026/04/30-22:23:51.982182 7f8d1bfff6c0 Delete type=2 #64 +2026/04/30-22:23:51.999453 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yoIqL0RQEnzNVJB6' @ 117 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) diff --git a/packs/armes/LOG.old b/packs/armes/LOG.old index 92421cf..19bde7a 100644 --- a/packs/armes/LOG.old +++ b/packs/armes/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.942216 7f20ecbfc6c0 Recovering log #50 -2026/04/09-07:31:00.952200 7f20ecbfc6c0 Delete type=0 #50 -2026/04/09-07:31:00.952272 7f20ecbfc6c0 Delete type=3 #49 -2026/04/09-23:11:56.221289 7f1e4ffff6c0 Level-0 table #54: started -2026/04/09-23:11:56.221324 7f1e4ffff6c0 Level-0 table #54: 0 bytes OK -2026/04/09-23:11:56.284030 7f1e4ffff6c0 Delete type=0 #52 -2026/04/09-23:11:56.464040 7f1e4ffff6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at '!items!yoIqL0RQEnzNVJB6' @ 51 : 1 -2026/04/09-23:11:56.464048 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:56.489855 7f1e4ffff6c0 Generated table #55@0: 22 keys, 13361 bytes -2026/04/09-23:11:56.489882 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 13361 bytes -2026/04/09-23:11:56.553027 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:56.553148 7f1e4ffff6c0 Delete type=2 #35 -2026/04/09-23:11:56.553292 7f1e4ffff6c0 Delete type=2 #38 -2026/04/09-23:11:56.553357 7f1e4ffff6c0 Delete type=2 #45 -2026/04/09-23:11:56.649265 7f1e4ffff6c0 Manual compaction at level-0 from '!items!yoIqL0RQEnzNVJB6' @ 51 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) -2026/04/09-23:11:56.821563 7f1e4ffff6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at '!items!yoIqL0RQEnzNVJB6' @ 95 : 1 -2026/04/09-23:11:56.821571 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:56.851887 7f1e4ffff6c0 Generated table #56@1: 29 keys, 14529 bytes -2026/04/09-23:11:56.851915 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 14529 bytes -2026/04/09-23:11:56.904874 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:56.904997 7f1e4ffff6c0 Delete type=2 #11 -2026/04/09-23:11:56.905136 7f1e4ffff6c0 Delete type=2 #55 -2026/04/09-23:11:56.975641 7f1e4ffff6c0 Manual compaction at level-1 from '!items!yoIqL0RQEnzNVJB6' @ 95 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.978364 7fddd97be6c0 Recovering log #53 +2026/04/14-09:09:28.036731 7fddd97be6c0 Delete type=3 #51 +2026/04/14-09:09:28.036869 7fddd97be6c0 Delete type=0 #53 +2026/04/14-09:37:12.068876 7fddca1c26c0 Level-0 table #60: started +2026/04/14-09:37:12.068921 7fddca1c26c0 Level-0 table #60: 0 bytes OK +2026/04/14-09:37:12.075223 7fddca1c26c0 Delete type=0 #58 +2026/04/14-09:37:12.095906 7fddca1c26c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.096000 7fddca1c26c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) diff --git a/packs/armes/MANIFEST-000057 b/packs/armes/MANIFEST-000057 deleted file mode 100644 index 76a4ab4..0000000 Binary files a/packs/armes/MANIFEST-000057 and /dev/null differ diff --git a/packs/armes/MANIFEST-000061 b/packs/armes/MANIFEST-000061 new file mode 100644 index 0000000..ecbac6c Binary files /dev/null and b/packs/armes/MANIFEST-000061 differ diff --git a/packs/armures/000155.ldb b/packs/armures/000155.ldb deleted file mode 100644 index f7e8ca8..0000000 Binary files a/packs/armures/000155.ldb and /dev/null differ diff --git a/packs/armures/000158.log b/packs/armures/000162.log similarity index 100% rename from packs/armures/000158.log rename to packs/armures/000162.log diff --git a/packs/armures/000164.ldb b/packs/armures/000164.ldb new file mode 100644 index 0000000..8f26cec Binary files /dev/null and b/packs/armures/000164.ldb differ diff --git a/packs/armures/CURRENT b/packs/armures/CURRENT index c16f179..a437bda 100644 --- a/packs/armures/CURRENT +++ b/packs/armures/CURRENT @@ -1 +1 @@ -MANIFEST-000156 +MANIFEST-000160 diff --git a/packs/armures/LOG b/packs/armures/LOG index f3167c9..e90dec8 100644 --- a/packs/armures/LOG +++ b/packs/armures/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:27.370951 7fddd97be6c0 Recovering log #152 -2026/04/14-09:09:27.434776 7fddd97be6c0 Delete type=3 #150 -2026/04/14-09:09:27.434901 7fddd97be6c0 Delete type=0 #152 -2026/04/14-09:37:12.026954 7fddca1c26c0 Level-0 table #159: started -2026/04/14-09:37:12.027005 7fddca1c26c0 Level-0 table #159: 0 bytes OK -2026/04/14-09:37:12.034241 7fddca1c26c0 Delete type=0 #157 -2026/04/14-09:37:12.041328 7fddca1c26c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.041399 7fddca1c26c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.676170 7f8fb27bf6c0 Recovering log #158 +2026/04/30-16:49:03.686444 7f8fb27bf6c0 Delete type=0 #158 +2026/04/30-16:49:03.686500 7f8fb27bf6c0 Delete type=3 #156 +2026/04/30-22:23:52.127418 7f8d1bfff6c0 Level-0 table #163: started +2026/04/30-22:23:52.130961 7f8d1bfff6c0 Level-0 table #163: 3504 bytes OK +2026/04/30-22:23:52.137537 7f8d1bfff6c0 Delete type=0 #161 +2026/04/30-22:23:52.154144 7f8d1bfff6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) +2026/04/30-22:23:52.154182 7f8d1bfff6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at '!items!wpBopoosZiWXjlKD' @ 66 : 1 +2026/04/30-22:23:52.154188 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:52.158229 7f8d1bfff6c0 Generated table #164@1: 6 keys, 3504 bytes +2026/04/30-22:23:52.158247 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 3504 bytes +2026/04/30-22:23:52.164220 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:52.164332 7f8d1bfff6c0 Delete type=2 #155 +2026/04/30-22:23:52.164497 7f8d1bfff6c0 Delete type=2 #163 +2026/04/30-22:23:52.179807 7f8d1bfff6c0 Manual compaction at level-1 from '!items!wpBopoosZiWXjlKD' @ 66 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) diff --git a/packs/armures/LOG.old b/packs/armures/LOG.old index 302dcf2..f3167c9 100644 --- a/packs/armures/LOG.old +++ b/packs/armures/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.828199 7f20ecbfc6c0 Recovering log #149 -2026/04/09-07:31:00.838410 7f20ecbfc6c0 Delete type=0 #149 -2026/04/09-07:31:00.838471 7f20ecbfc6c0 Delete type=3 #148 -2026/04/09-23:11:55.234068 7f1e4ffff6c0 Level-0 table #153: started -2026/04/09-23:11:55.245101 7f1e4ffff6c0 Level-0 table #153: 0 bytes OK -2026/04/09-23:11:55.298794 7f1e4ffff6c0 Delete type=0 #151 -2026/04/09-23:11:55.490694 7f1e4ffff6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at '!items!wpBopoosZiWXjlKD' @ 48 : 1 -2026/04/09-23:11:55.490705 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:55.533263 7f1e4ffff6c0 Generated table #154@0: 6 keys, 3346 bytes -2026/04/09-23:11:55.533295 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 3346 bytes -2026/04/09-23:11:55.591200 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:55.591374 7f1e4ffff6c0 Delete type=2 #134 -2026/04/09-23:11:55.591529 7f1e4ffff6c0 Delete type=2 #137 -2026/04/09-23:11:55.591571 7f1e4ffff6c0 Delete type=2 #144 -2026/04/09-23:11:55.689808 7f1e4ffff6c0 Manual compaction at level-0 from '!items!wpBopoosZiWXjlKD' @ 48 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) -2026/04/09-23:11:55.770926 7f1e4ffff6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at '!items!wpBopoosZiWXjlKD' @ 60 : 1 -2026/04/09-23:11:55.770937 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:55.809869 7f1e4ffff6c0 Generated table #155@1: 6 keys, 3346 bytes -2026/04/09-23:11:55.809897 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 3346 bytes -2026/04/09-23:11:55.875143 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:55.875284 7f1e4ffff6c0 Delete type=2 #48 -2026/04/09-23:11:55.875433 7f1e4ffff6c0 Delete type=2 #154 -2026/04/09-23:11:56.005548 7f1e4ffff6c0 Manual compaction at level-1 from '!items!wpBopoosZiWXjlKD' @ 60 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.370951 7fddd97be6c0 Recovering log #152 +2026/04/14-09:09:27.434776 7fddd97be6c0 Delete type=3 #150 +2026/04/14-09:09:27.434901 7fddd97be6c0 Delete type=0 #152 +2026/04/14-09:37:12.026954 7fddca1c26c0 Level-0 table #159: started +2026/04/14-09:37:12.027005 7fddca1c26c0 Level-0 table #159: 0 bytes OK +2026/04/14-09:37:12.034241 7fddca1c26c0 Delete type=0 #157 +2026/04/14-09:37:12.041328 7fddca1c26c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.041399 7fddca1c26c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) diff --git a/packs/armures/MANIFEST-000156 b/packs/armures/MANIFEST-000156 deleted file mode 100644 index 8ed61da..0000000 Binary files a/packs/armures/MANIFEST-000156 and /dev/null differ diff --git a/packs/armures/MANIFEST-000160 b/packs/armures/MANIFEST-000160 new file mode 100644 index 0000000..b2a82c5 Binary files /dev/null and b/packs/armures/MANIFEST-000160 differ diff --git a/packs/carrieres/000039.ldb b/packs/carrieres/000039.ldb deleted file mode 100644 index e884996..0000000 Binary files a/packs/carrieres/000039.ldb and /dev/null differ diff --git a/packs/carrieres/000042.log b/packs/carrieres/000046.log similarity index 100% rename from packs/carrieres/000042.log rename to packs/carrieres/000046.log diff --git a/packs/carrieres/000048.ldb b/packs/carrieres/000048.ldb new file mode 100644 index 0000000..da36f08 Binary files /dev/null and b/packs/carrieres/000048.ldb differ diff --git a/packs/carrieres/CURRENT b/packs/carrieres/CURRENT index e2c0c4b..e146ef6 100644 --- a/packs/carrieres/CURRENT +++ b/packs/carrieres/CURRENT @@ -1 +1 @@ -MANIFEST-000040 +MANIFEST-000044 diff --git a/packs/carrieres/LOG b/packs/carrieres/LOG index 665e4be..f167230 100644 --- a/packs/carrieres/LOG +++ b/packs/carrieres/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:28.118399 7fddd9fbf6c0 Recovering log #36 -2026/04/14-09:09:28.175883 7fddd9fbf6c0 Delete type=3 #34 -2026/04/14-09:09:28.175997 7fddd9fbf6c0 Delete type=0 #36 -2026/04/14-09:37:12.089374 7fddca1c26c0 Level-0 table #43: started -2026/04/14-09:37:12.089426 7fddca1c26c0 Level-0 table #43: 0 bytes OK -2026/04/14-09:37:12.095733 7fddca1c26c0 Delete type=0 #41 -2026/04/14-09:37:12.095967 7fddca1c26c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.096017 7fddca1c26c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.814422 7f8fb27bf6c0 Recovering log #42 +2026/04/30-16:49:03.824784 7f8fb27bf6c0 Delete type=0 #42 +2026/04/30-16:49:03.824851 7f8fb27bf6c0 Delete type=3 #40 +2026/04/30-22:23:51.982251 7f8d1bfff6c0 Level-0 table #47: started +2026/04/30-22:23:51.986099 7f8d1bfff6c0 Level-0 table #47: 4393 bytes OK +2026/04/30-22:23:51.992567 7f8d1bfff6c0 Delete type=0 #45 +2026/04/30-22:23:51.999467 7f8d1bfff6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) +2026/04/30-22:23:52.009605 7f8d1bfff6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at '!items!vJInnoigCTJzuY2S' @ 94 : 1 +2026/04/30-22:23:52.009613 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:52.012784 7f8d1bfff6c0 Generated table #48@1: 16 keys, 4393 bytes +2026/04/30-22:23:52.012795 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 4393 bytes +2026/04/30-22:23:52.020131 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:52.020267 7f8d1bfff6c0 Delete type=2 #39 +2026/04/30-22:23:52.020442 7f8d1bfff6c0 Delete type=2 #47 +2026/04/30-22:23:52.038598 7f8d1bfff6c0 Manual compaction at level-1 from '!items!vJInnoigCTJzuY2S' @ 94 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) diff --git a/packs/carrieres/LOG.old b/packs/carrieres/LOG.old index d484d1e..665e4be 100644 --- a/packs/carrieres/LOG.old +++ b/packs/carrieres/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.979881 7f20ee3ff6c0 Recovering log #33 -2026/04/09-07:31:00.989409 7f20ee3ff6c0 Delete type=0 #33 -2026/04/09-07:31:00.989487 7f20ee3ff6c0 Delete type=3 #32 -2026/04/09-23:11:57.513730 7f1e4ffff6c0 Level-0 table #37: started -2026/04/09-23:11:57.513772 7f1e4ffff6c0 Level-0 table #37: 0 bytes OK -2026/04/09-23:11:57.575380 7f1e4ffff6c0 Delete type=0 #35 -2026/04/09-23:11:57.666141 7f1e4ffff6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at '!items!vJInnoigCTJzuY2S' @ 46 : 1 -2026/04/09-23:11:57.666147 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:57.697606 7f1e4ffff6c0 Generated table #38@0: 16 keys, 3810 bytes -2026/04/09-23:11:57.697641 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 3810 bytes -2026/04/09-23:11:57.756255 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:57.756373 7f1e4ffff6c0 Delete type=2 #18 -2026/04/09-23:11:57.756513 7f1e4ffff6c0 Delete type=2 #21 -2026/04/09-23:11:57.756574 7f1e4ffff6c0 Delete type=2 #28 -2026/04/09-23:11:57.875863 7f1e4ffff6c0 Manual compaction at level-0 from '!items!vJInnoigCTJzuY2S' @ 46 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) -2026/04/09-23:11:57.944060 7f1e4ffff6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at '!items!vJInnoigCTJzuY2S' @ 78 : 1 -2026/04/09-23:11:57.944066 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:57.976628 7f1e4ffff6c0 Generated table #39@1: 16 keys, 3810 bytes -2026/04/09-23:11:57.976654 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 3810 bytes -2026/04/09-23:11:58.029512 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:58.029648 7f1e4ffff6c0 Delete type=2 #10 -2026/04/09-23:11:58.029805 7f1e4ffff6c0 Delete type=2 #38 -2026/04/09-23:11:58.156587 7f1e4ffff6c0 Manual compaction at level-1 from '!items!vJInnoigCTJzuY2S' @ 78 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) +2026/04/14-09:09:28.118399 7fddd9fbf6c0 Recovering log #36 +2026/04/14-09:09:28.175883 7fddd9fbf6c0 Delete type=3 #34 +2026/04/14-09:09:28.175997 7fddd9fbf6c0 Delete type=0 #36 +2026/04/14-09:37:12.089374 7fddca1c26c0 Level-0 table #43: started +2026/04/14-09:37:12.089426 7fddca1c26c0 Level-0 table #43: 0 bytes OK +2026/04/14-09:37:12.095733 7fddca1c26c0 Delete type=0 #41 +2026/04/14-09:37:12.095967 7fddca1c26c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.096017 7fddca1c26c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) diff --git a/packs/carrieres/MANIFEST-000040 b/packs/carrieres/MANIFEST-000040 deleted file mode 100644 index 52fd75a..0000000 Binary files a/packs/carrieres/MANIFEST-000040 and /dev/null differ diff --git a/packs/carrieres/MANIFEST-000044 b/packs/carrieres/MANIFEST-000044 new file mode 100644 index 0000000..e6bfeed Binary files /dev/null and b/packs/carrieres/MANIFEST-000044 differ diff --git a/packs/competences/000158.ldb b/packs/competences/000158.ldb deleted file mode 100644 index 85e693f..0000000 Binary files a/packs/competences/000158.ldb and /dev/null differ diff --git a/packs/competences/000161.log b/packs/competences/000165.log similarity index 100% rename from packs/competences/000161.log rename to packs/competences/000165.log diff --git a/packs/competences/000167.ldb b/packs/competences/000167.ldb new file mode 100644 index 0000000..15e2a71 Binary files /dev/null and b/packs/competences/000167.ldb differ diff --git a/packs/competences/CURRENT b/packs/competences/CURRENT index eda0873..abf5eb3 100644 --- a/packs/competences/CURRENT +++ b/packs/competences/CURRENT @@ -1 +1 @@ -MANIFEST-000159 +MANIFEST-000163 diff --git a/packs/competences/LOG b/packs/competences/LOG index 6fdcd78..3a67a64 100644 --- a/packs/competences/LOG +++ b/packs/competences/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:27.438726 7fddd8fbd6c0 Recovering log #155 -2026/04/14-09:09:27.499900 7fddd8fbd6c0 Delete type=3 #153 -2026/04/14-09:09:27.500001 7fddd8fbd6c0 Delete type=0 #155 -2026/04/14-09:37:12.020541 7fddca1c26c0 Level-0 table #162: started -2026/04/14-09:37:12.020592 7fddca1c26c0 Level-0 table #162: 0 bytes OK -2026/04/14-09:37:12.026769 7fddca1c26c0 Delete type=0 #160 -2026/04/14-09:37:12.041308 7fddca1c26c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.041379 7fddca1c26c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.688915 7f8fb17bd6c0 Recovering log #161 +2026/04/30-16:49:03.698657 7f8fb17bd6c0 Delete type=0 #161 +2026/04/30-16:49:03.698730 7f8fb17bd6c0 Delete type=3 #159 +2026/04/30-22:23:51.824246 7f8d1bfff6c0 Level-0 table #166: started +2026/04/30-22:23:51.833477 7f8d1bfff6c0 Level-0 table #166: 31217 bytes OK +2026/04/30-22:23:51.840502 7f8d1bfff6c0 Delete type=0 #164 +2026/04/30-22:23:51.847359 7f8d1bfff6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) +2026/04/30-22:23:51.847398 7f8d1bfff6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at '!items!yqjKyTCgpclCuHyK' @ 466 : 1 +2026/04/30-22:23:51.847407 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:51.851192 7f8d1bfff6c0 Generated table #167@1: 39 keys, 31217 bytes +2026/04/30-22:23:51.851218 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 31217 bytes +2026/04/30-22:23:51.857271 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:51.857404 7f8d1bfff6c0 Delete type=2 #158 +2026/04/30-22:23:51.857538 7f8d1bfff6c0 Delete type=2 #166 +2026/04/30-22:23:51.888397 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yqjKyTCgpclCuHyK' @ 466 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) diff --git a/packs/competences/LOG.old b/packs/competences/LOG.old index d79dc7b..6fdcd78 100644 --- a/packs/competences/LOG.old +++ b/packs/competences/LOG.old @@ -1,22 +1,8 @@ -2026/04/09-07:31:00.841062 7f20ee3ff6c0 Recovering log #152 -2026/04/09-07:31:00.850932 7f20ee3ff6c0 Delete type=0 #152 -2026/04/09-07:31:00.850998 7f20ee3ff6c0 Delete type=3 #150 -2026/04/09-23:11:55.298948 7f1e4ffff6c0 Level-0 table #156: started -2026/04/09-23:11:55.298983 7f1e4ffff6c0 Level-0 table #156: 0 bytes OK -2026/04/09-23:11:55.355717 7f1e4ffff6c0 Delete type=0 #154 -2026/04/09-23:11:55.591617 7f1e4ffff6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at '!items!zNLvaapQFfVlfPw5' @ 364 : 0 -2026/04/09-23:11:55.591623 7f1e4ffff6c0 Compacting 1@0 + 1@1 files -2026/04/09-23:11:55.630597 7f1e4ffff6c0 Generated table #157@0: 78 keys, 30738 bytes -2026/04/09-23:11:55.630628 7f1e4ffff6c0 Compacted 1@0 + 1@1 files => 30738 bytes -2026/04/09-23:11:55.689396 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:55.689523 7f1e4ffff6c0 Delete type=2 #147 -2026/04/09-23:11:55.689696 7f1e4ffff6c0 Delete type=2 #151 -2026/04/09-23:11:55.689818 7f1e4ffff6c0 Manual compaction at level-0 from '!items!zNLvaapQFfVlfPw5' @ 364 : 0 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) -2026/04/09-23:11:55.689841 7f1e4ffff6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at '!items!zNLvaapQFfVlfPw5' @ 364 : 0 -2026/04/09-23:11:55.689848 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:55.720254 7f1e4ffff6c0 Generated table #158@1: 39 keys, 29257 bytes -2026/04/09-23:11:55.720280 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 29257 bytes -2026/04/09-23:11:55.770532 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:55.770656 7f1e4ffff6c0 Delete type=2 #52 -2026/04/09-23:11:55.770823 7f1e4ffff6c0 Delete type=2 #157 -2026/04/09-23:11:56.005533 7f1e4ffff6c0 Manual compaction at level-1 from '!items!zNLvaapQFfVlfPw5' @ 364 : 0 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.438726 7fddd8fbd6c0 Recovering log #155 +2026/04/14-09:09:27.499900 7fddd8fbd6c0 Delete type=3 #153 +2026/04/14-09:09:27.500001 7fddd8fbd6c0 Delete type=0 #155 +2026/04/14-09:37:12.020541 7fddca1c26c0 Level-0 table #162: started +2026/04/14-09:37:12.020592 7fddca1c26c0 Level-0 table #162: 0 bytes OK +2026/04/14-09:37:12.026769 7fddca1c26c0 Delete type=0 #160 +2026/04/14-09:37:12.041308 7fddca1c26c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.041379 7fddca1c26c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) diff --git a/packs/competences/MANIFEST-000159 b/packs/competences/MANIFEST-000159 deleted file mode 100644 index 3a40a45..0000000 Binary files a/packs/competences/MANIFEST-000159 and /dev/null differ diff --git a/packs/competences/MANIFEST-000163 b/packs/competences/MANIFEST-000163 new file mode 100644 index 0000000..2017116 Binary files /dev/null and b/packs/competences/MANIFEST-000163 differ diff --git a/packs/contenant-sac-coffre/000098.log b/packs/contenant-sac-coffre/000102.log similarity index 100% rename from packs/contenant-sac-coffre/000098.log rename to packs/contenant-sac-coffre/000102.log diff --git a/packs/contenant-sac-coffre/CURRENT b/packs/contenant-sac-coffre/CURRENT index 6274e55..d7ae20e 100644 --- a/packs/contenant-sac-coffre/CURRENT +++ b/packs/contenant-sac-coffre/CURRENT @@ -1 +1 @@ -MANIFEST-000096 +MANIFEST-000100 diff --git a/packs/contenant-sac-coffre/LOG b/packs/contenant-sac-coffre/LOG index 262d765..c5cc6d8 100644 --- a/packs/contenant-sac-coffre/LOG +++ b/packs/contenant-sac-coffre/LOG @@ -1,7 +1,7 @@ -2026/04/14-09:09:27.758609 7fddd97be6c0 Recovering log #94 -2026/04/14-09:09:27.824657 7fddd97be6c0 Delete type=3 #92 -2026/04/14-09:09:27.824750 7fddd97be6c0 Delete type=0 #94 -2026/04/14-09:37:12.054469 7fddca1c26c0 Level-0 table #99: started -2026/04/14-09:37:12.054520 7fddca1c26c0 Level-0 table #99: 0 bytes OK -2026/04/14-09:37:12.061714 7fddca1c26c0 Delete type=0 #97 -2026/04/14-09:37:12.068669 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.755979 7f8fb27bf6c0 Recovering log #98 +2026/04/30-16:49:03.766123 7f8fb27bf6c0 Delete type=0 #98 +2026/04/30-16:49:03.766183 7f8fb27bf6c0 Delete type=3 #96 +2026/04/30-22:23:51.920403 7f8d1bfff6c0 Level-0 table #103: started +2026/04/30-22:23:51.920439 7f8d1bfff6c0 Level-0 table #103: 0 bytes OK +2026/04/30-22:23:51.926516 7f8d1bfff6c0 Delete type=0 #101 +2026/04/30-22:23:51.926650 7f8d1bfff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/contenant-sac-coffre/LOG.old b/packs/contenant-sac-coffre/LOG.old index d1c8caf..262d765 100644 --- a/packs/contenant-sac-coffre/LOG.old +++ b/packs/contenant-sac-coffre/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-07:31:00.905329 7f20ed3fd6c0 Recovering log #91 -2026/04/09-07:31:00.914802 7f20ed3fd6c0 Delete type=0 #91 -2026/04/09-07:31:00.914843 7f20ed3fd6c0 Delete type=3 #90 -2026/04/09-23:11:55.355863 7f1e4ffff6c0 Level-0 table #95: started -2026/04/09-23:11:55.362963 7f1e4ffff6c0 Level-0 table #95: 0 bytes OK -2026/04/09-23:11:55.422939 7f1e4ffff6c0 Delete type=0 #93 -2026/04/09-23:11:55.689784 7f1e4ffff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.758609 7fddd97be6c0 Recovering log #94 +2026/04/14-09:09:27.824657 7fddd97be6c0 Delete type=3 #92 +2026/04/14-09:09:27.824750 7fddd97be6c0 Delete type=0 #94 +2026/04/14-09:37:12.054469 7fddca1c26c0 Level-0 table #99: started +2026/04/14-09:37:12.054520 7fddca1c26c0 Level-0 table #99: 0 bytes OK +2026/04/14-09:37:12.061714 7fddca1c26c0 Delete type=0 #97 +2026/04/14-09:37:12.068669 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/contenant-sac-coffre/MANIFEST-000096 b/packs/contenant-sac-coffre/MANIFEST-000096 deleted file mode 100644 index 69c0935..0000000 Binary files a/packs/contenant-sac-coffre/MANIFEST-000096 and /dev/null differ diff --git a/packs/contenant-sac-coffre/MANIFEST-000100 b/packs/contenant-sac-coffre/MANIFEST-000100 new file mode 100644 index 0000000..196073b Binary files /dev/null and b/packs/contenant-sac-coffre/MANIFEST-000100 differ diff --git a/packs/equipement/000100.ldb b/packs/equipement/000100.ldb deleted file mode 100644 index af84c9e..0000000 Binary files a/packs/equipement/000100.ldb and /dev/null differ diff --git a/packs/equipement/000103.log b/packs/equipement/000107.log similarity index 100% rename from packs/equipement/000103.log rename to packs/equipement/000107.log diff --git a/packs/equipement/000109.ldb b/packs/equipement/000109.ldb new file mode 100644 index 0000000..4dc18c1 Binary files /dev/null and b/packs/equipement/000109.ldb differ diff --git a/packs/equipement/CURRENT b/packs/equipement/CURRENT index ed5ac88..2a5d251 100644 --- a/packs/equipement/CURRENT +++ b/packs/equipement/CURRENT @@ -1 +1 @@ -MANIFEST-000101 +MANIFEST-000105 diff --git a/packs/equipement/LOG b/packs/equipement/LOG index 7751bd1..fdb659a 100644 --- a/packs/equipement/LOG +++ b/packs/equipement/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:27.635794 7fddd9fbf6c0 Recovering log #97 -2026/04/14-09:09:27.685698 7fddd9fbf6c0 Delete type=3 #95 -2026/04/14-09:09:27.685843 7fddd9fbf6c0 Delete type=0 #97 -2026/04/14-09:37:12.041593 7fddca1c26c0 Level-0 table #104: started -2026/04/14-09:37:12.041649 7fddca1c26c0 Level-0 table #104: 0 bytes OK -2026/04/14-09:37:12.047872 7fddca1c26c0 Delete type=0 #102 -2026/04/14-09:37:12.068624 7fddca1c26c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.068703 7fddca1c26c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.726214 7f8fb27bf6c0 Recovering log #103 +2026/04/30-16:49:03.736164 7f8fb27bf6c0 Delete type=0 #103 +2026/04/30-16:49:03.736235 7f8fb27bf6c0 Delete type=3 #101 +2026/04/30-22:23:51.857614 7f8d1bfff6c0 Level-0 table #108: started +2026/04/30-22:23:51.861339 7f8d1bfff6c0 Level-0 table #108: 20168 bytes OK +2026/04/30-22:23:51.867931 7f8d1bfff6c0 Delete type=0 #106 +2026/04/30-22:23:51.888409 7f8d1bfff6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) +2026/04/30-22:23:51.888438 7f8d1bfff6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at '!items!zRJfxioYBRq4iSBR' @ 186 : 1 +2026/04/30-22:23:51.888444 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:51.892428 7f8d1bfff6c0 Generated table #109@1: 42 keys, 19940 bytes +2026/04/30-22:23:51.892452 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 19940 bytes +2026/04/30-22:23:51.899595 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:51.899748 7f8d1bfff6c0 Delete type=2 #100 +2026/04/30-22:23:51.899930 7f8d1bfff6c0 Delete type=2 #108 +2026/04/30-22:23:51.926607 7f8d1bfff6c0 Manual compaction at level-1 from '!items!zRJfxioYBRq4iSBR' @ 186 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) diff --git a/packs/equipement/LOG.old b/packs/equipement/LOG.old index 81f57d7..7751bd1 100644 --- a/packs/equipement/LOG.old +++ b/packs/equipement/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.880382 7f20ee3ff6c0 Recovering log #94 -2026/04/09-07:31:00.890560 7f20ee3ff6c0 Delete type=0 #94 -2026/04/09-07:31:00.890618 7f20ee3ff6c0 Delete type=3 #93 -2026/04/09-23:11:55.934801 7f1e4ffff6c0 Level-0 table #98: started -2026/04/09-23:11:55.934839 7f1e4ffff6c0 Level-0 table #98: 0 bytes OK -2026/04/09-23:11:56.005383 7f1e4ffff6c0 Delete type=0 #96 -2026/04/09-23:11:56.005574 7f1e4ffff6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at '!items!zRJfxioYBRq4iSBR' @ 78 : 1 -2026/04/09-23:11:56.005581 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:56.031392 7f1e4ffff6c0 Generated table #99@0: 36 keys, 19300 bytes -2026/04/09-23:11:56.031419 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 19300 bytes -2026/04/09-23:11:56.099555 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:56.099688 7f1e4ffff6c0 Delete type=2 #79 -2026/04/09-23:11:56.099839 7f1e4ffff6c0 Delete type=2 #82 -2026/04/09-23:11:56.099918 7f1e4ffff6c0 Delete type=2 #89 -2026/04/09-23:11:56.284189 7f1e4ffff6c0 Manual compaction at level-0 from '!items!zRJfxioYBRq4iSBR' @ 78 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) -2026/04/09-23:11:56.553421 7f1e4ffff6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at '!items!zRJfxioYBRq4iSBR' @ 150 : 1 -2026/04/09-23:11:56.553430 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:56.584164 7f1e4ffff6c0 Generated table #100@1: 42 keys, 19157 bytes -2026/04/09-23:11:56.584191 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 19157 bytes -2026/04/09-23:11:56.648837 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:56.648989 7f1e4ffff6c0 Delete type=2 #75 -2026/04/09-23:11:56.649134 7f1e4ffff6c0 Delete type=2 #99 -2026/04/09-23:11:56.649274 7f1e4ffff6c0 Manual compaction at level-1 from '!items!zRJfxioYBRq4iSBR' @ 150 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.635794 7fddd9fbf6c0 Recovering log #97 +2026/04/14-09:09:27.685698 7fddd9fbf6c0 Delete type=3 #95 +2026/04/14-09:09:27.685843 7fddd9fbf6c0 Delete type=0 #97 +2026/04/14-09:37:12.041593 7fddca1c26c0 Level-0 table #104: started +2026/04/14-09:37:12.041649 7fddca1c26c0 Level-0 table #104: 0 bytes OK +2026/04/14-09:37:12.047872 7fddca1c26c0 Delete type=0 #102 +2026/04/14-09:37:12.068624 7fddca1c26c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.068703 7fddca1c26c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) diff --git a/packs/equipement/MANIFEST-000101 b/packs/equipement/MANIFEST-000101 deleted file mode 100644 index 9b47b16..0000000 Binary files a/packs/equipement/MANIFEST-000101 and /dev/null differ diff --git a/packs/equipement/MANIFEST-000105 b/packs/equipement/MANIFEST-000105 new file mode 100644 index 0000000..d7b6401 Binary files /dev/null and b/packs/equipement/MANIFEST-000105 differ diff --git a/packs/espece/000098.log b/packs/espece/000102.log similarity index 100% rename from packs/espece/000098.log rename to packs/espece/000102.log diff --git a/packs/espece/CURRENT b/packs/espece/CURRENT index 6274e55..d7ae20e 100644 --- a/packs/espece/CURRENT +++ b/packs/espece/CURRENT @@ -1 +1 @@ -MANIFEST-000096 +MANIFEST-000100 diff --git a/packs/espece/LOG b/packs/espece/LOG index a0c16f3..0c97606 100644 --- a/packs/espece/LOG +++ b/packs/espece/LOG @@ -1,7 +1,7 @@ -2026/04/14-09:09:27.828638 7fddcbfff6c0 Recovering log #94 -2026/04/14-09:09:27.891453 7fddcbfff6c0 Delete type=3 #92 -2026/04/14-09:09:27.891583 7fddcbfff6c0 Delete type=0 #94 -2026/04/14-09:37:12.061903 7fddca1c26c0 Level-0 table #99: started -2026/04/14-09:37:12.061955 7fddca1c26c0 Level-0 table #99: 0 bytes OK -2026/04/14-09:37:12.068457 7fddca1c26c0 Delete type=0 #97 -2026/04/14-09:37:12.068687 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.767807 7f8fb17bd6c0 Recovering log #98 +2026/04/30-16:49:03.777077 7f8fb17bd6c0 Delete type=0 #98 +2026/04/30-16:49:03.777137 7f8fb17bd6c0 Delete type=3 #96 +2026/04/30-22:23:51.926732 7f8d1bfff6c0 Level-0 table #103: started +2026/04/30-22:23:51.926790 7f8d1bfff6c0 Level-0 table #103: 0 bytes OK +2026/04/30-22:23:51.933433 7f8d1bfff6c0 Delete type=0 #101 +2026/04/30-22:23:51.960805 7f8d1bfff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/espece/LOG.old b/packs/espece/LOG.old index d9a3e92..a0c16f3 100644 --- a/packs/espece/LOG.old +++ b/packs/espece/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-07:31:00.916824 7f20ecbfc6c0 Recovering log #91 -2026/04/09-07:31:00.927322 7f20ecbfc6c0 Delete type=0 #91 -2026/04/09-07:31:00.927410 7f20ecbfc6c0 Delete type=3 #90 -2026/04/09-23:11:55.875522 7f1e4ffff6c0 Level-0 table #95: started -2026/04/09-23:11:55.875555 7f1e4ffff6c0 Level-0 table #95: 0 bytes OK -2026/04/09-23:11:55.934643 7f1e4ffff6c0 Delete type=0 #93 -2026/04/09-23:11:56.005560 7f1e4ffff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.828638 7fddcbfff6c0 Recovering log #94 +2026/04/14-09:09:27.891453 7fddcbfff6c0 Delete type=3 #92 +2026/04/14-09:09:27.891583 7fddcbfff6c0 Delete type=0 #94 +2026/04/14-09:37:12.061903 7fddca1c26c0 Level-0 table #99: started +2026/04/14-09:37:12.061955 7fddca1c26c0 Level-0 table #99: 0 bytes OK +2026/04/14-09:37:12.068457 7fddca1c26c0 Delete type=0 #97 +2026/04/14-09:37:12.068687 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/espece/MANIFEST-000096 b/packs/espece/MANIFEST-000096 deleted file mode 100644 index 69c0935..0000000 Binary files a/packs/espece/MANIFEST-000096 and /dev/null differ diff --git a/packs/espece/MANIFEST-000100 b/packs/espece/MANIFEST-000100 new file mode 100644 index 0000000..196073b Binary files /dev/null and b/packs/espece/MANIFEST-000100 differ diff --git a/packs/journal/000079.log b/packs/journal/000083.log similarity index 100% rename from packs/journal/000079.log rename to packs/journal/000083.log diff --git a/packs/journal/CURRENT b/packs/journal/CURRENT index c7a124b..635f1ad 100644 --- a/packs/journal/CURRENT +++ b/packs/journal/CURRENT @@ -1 +1 @@ -MANIFEST-000077 +MANIFEST-000081 diff --git a/packs/journal/LOG b/packs/journal/LOG index 7ca438d..a0f0a5f 100644 --- a/packs/journal/LOG +++ b/packs/journal/LOG @@ -1,8 +1,8 @@ -2026/04/14-09:09:27.895712 7fddd8fbd6c0 Recovering log #73 -2026/04/14-09:09:27.973731 7fddd8fbd6c0 Delete type=3 #71 -2026/04/14-09:09:27.973870 7fddd8fbd6c0 Delete type=0 #73 -2026/04/14-09:37:12.075441 7fddca1c26c0 Level-0 table #80: started -2026/04/14-09:37:12.075490 7fddca1c26c0 Level-0 table #80: 0 bytes OK -2026/04/14-09:37:12.081733 7fddca1c26c0 Delete type=0 #78 -2026/04/14-09:37:12.095930 7fddca1c26c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.095983 7fddca1c26c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.778670 7f8fb27bf6c0 Recovering log #79 +2026/04/30-16:49:03.788930 7f8fb27bf6c0 Delete type=0 #79 +2026/04/30-16:49:03.788992 7f8fb27bf6c0 Delete type=3 #77 +2026/04/30-22:23:51.943487 7f8d1bfff6c0 Level-0 table #84: started +2026/04/30-22:23:51.943518 7f8d1bfff6c0 Level-0 table #84: 0 bytes OK +2026/04/30-22:23:51.951135 7f8d1bfff6c0 Delete type=0 #82 +2026/04/30-22:23:51.960834 7f8d1bfff6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) +2026/04/30-22:23:51.972445 7f8d1bfff6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) diff --git a/packs/journal/LOG.old b/packs/journal/LOG.old index 6e73e33..7ca438d 100644 --- a/packs/journal/LOG.old +++ b/packs/journal/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.929957 7f20edbfe6c0 Recovering log #70 -2026/04/09-07:31:00.939549 7f20edbfe6c0 Delete type=0 #70 -2026/04/09-07:31:00.939612 7f20edbfe6c0 Delete type=3 #69 -2026/04/09-23:11:56.905232 7f1e4ffff6c0 Level-0 table #74: started -2026/04/09-23:11:56.905265 7f1e4ffff6c0 Level-0 table #74: 0 bytes OK -2026/04/09-23:11:56.975463 7f1e4ffff6c0 Delete type=0 #72 -2026/04/09-23:11:56.975665 7f1e4ffff6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 8 : 1 -2026/04/09-23:11:56.975673 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:57.005759 7f1e4ffff6c0 Generated table #75@0: 2 keys, 2815 bytes -2026/04/09-23:11:57.005786 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 2815 bytes -2026/04/09-23:11:57.078432 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:57.078623 7f1e4ffff6c0 Delete type=2 #55 -2026/04/09-23:11:57.078774 7f1e4ffff6c0 Delete type=2 #58 -2026/04/09-23:11:57.078833 7f1e4ffff6c0 Delete type=2 #65 -2026/04/09-23:11:57.276364 7f1e4ffff6c0 Manual compaction at level-0 from '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 8 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) -2026/04/09-23:11:57.363786 7f1e4ffff6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 12 : 1 -2026/04/09-23:11:57.363793 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:57.394341 7f1e4ffff6c0 Generated table #76@1: 2 keys, 2815 bytes -2026/04/09-23:11:57.394378 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 2815 bytes -2026/04/09-23:11:57.451312 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:57.451448 7f1e4ffff6c0 Delete type=2 #9 -2026/04/09-23:11:57.451666 7f1e4ffff6c0 Delete type=2 #75 -2026/04/09-23:11:57.575520 7f1e4ffff6c0 Manual compaction at level-1 from '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 12 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.895712 7fddd8fbd6c0 Recovering log #73 +2026/04/14-09:09:27.973731 7fddd8fbd6c0 Delete type=3 #71 +2026/04/14-09:09:27.973870 7fddd8fbd6c0 Delete type=0 #73 +2026/04/14-09:37:12.075441 7fddca1c26c0 Level-0 table #80: started +2026/04/14-09:37:12.075490 7fddca1c26c0 Level-0 table #80: 0 bytes OK +2026/04/14-09:37:12.081733 7fddca1c26c0 Delete type=0 #78 +2026/04/14-09:37:12.095930 7fddca1c26c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.095983 7fddca1c26c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) diff --git a/packs/journal/MANIFEST-000077 b/packs/journal/MANIFEST-000081 similarity index 68% rename from packs/journal/MANIFEST-000077 rename to packs/journal/MANIFEST-000081 index 7e99273..715f74b 100644 Binary files a/packs/journal/MANIFEST-000077 and b/packs/journal/MANIFEST-000081 differ diff --git a/packs/maladie-poison-and-blessure/000100.ldb b/packs/maladie-poison-and-blessure/000100.ldb deleted file mode 100644 index de9911f..0000000 Binary files a/packs/maladie-poison-and-blessure/000100.ldb and /dev/null differ diff --git a/packs/maladie-poison-and-blessure/000103.log b/packs/maladie-poison-and-blessure/000107.log similarity index 100% rename from packs/maladie-poison-and-blessure/000103.log rename to packs/maladie-poison-and-blessure/000107.log diff --git a/packs/maladie-poison-and-blessure/000109.ldb b/packs/maladie-poison-and-blessure/000109.ldb new file mode 100644 index 0000000..92de31e Binary files /dev/null and b/packs/maladie-poison-and-blessure/000109.ldb differ diff --git a/packs/maladie-poison-and-blessure/CURRENT b/packs/maladie-poison-and-blessure/CURRENT index ed5ac88..2a5d251 100644 --- a/packs/maladie-poison-and-blessure/CURRENT +++ b/packs/maladie-poison-and-blessure/CURRENT @@ -1 +1 @@ -MANIFEST-000101 +MANIFEST-000105 diff --git a/packs/maladie-poison-and-blessure/LOG b/packs/maladie-poison-and-blessure/LOG index 336b07b..0d7baf0 100644 --- a/packs/maladie-poison-and-blessure/LOG +++ b/packs/maladie-poison-and-blessure/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:27.505383 7fddcbfff6c0 Recovering log #97 -2026/04/14-09:09:27.573701 7fddcbfff6c0 Delete type=3 #95 -2026/04/14-09:09:27.573885 7fddcbfff6c0 Delete type=0 #97 -2026/04/14-09:37:12.013930 7fddca1c26c0 Level-0 table #104: started -2026/04/14-09:37:12.014060 7fddca1c26c0 Level-0 table #104: 0 bytes OK -2026/04/14-09:37:12.020364 7fddca1c26c0 Delete type=0 #102 -2026/04/14-09:37:12.041283 7fddca1c26c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.041363 7fddca1c26c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.702208 7f8fb27bf6c0 Recovering log #103 +2026/04/30-16:49:03.711665 7f8fb27bf6c0 Delete type=0 #103 +2026/04/30-16:49:03.711763 7f8fb27bf6c0 Delete type=3 #101 +2026/04/30-22:23:51.868071 7f8d1bfff6c0 Level-0 table #108: started +2026/04/30-22:23:51.871388 7f8d1bfff6c0 Level-0 table #108: 2345 bytes OK +2026/04/30-22:23:51.877888 7f8d1bfff6c0 Delete type=0 #106 +2026/04/30-22:23:51.888419 7f8d1bfff6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) +2026/04/30-22:23:51.909593 7f8d1bfff6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at '!items!yleVHgRqGoYLvzxT' @ 40 : 1 +2026/04/30-22:23:51.909602 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:51.913005 7f8d1bfff6c0 Generated table #109@1: 8 keys, 2345 bytes +2026/04/30-22:23:51.913018 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 2345 bytes +2026/04/30-22:23:51.919740 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:51.919925 7f8d1bfff6c0 Delete type=2 #100 +2026/04/30-22:23:51.920251 7f8d1bfff6c0 Delete type=2 #108 +2026/04/30-22:23:51.926626 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yleVHgRqGoYLvzxT' @ 40 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) diff --git a/packs/maladie-poison-and-blessure/LOG.old b/packs/maladie-poison-and-blessure/LOG.old index 4f6ab20..336b07b 100644 --- a/packs/maladie-poison-and-blessure/LOG.old +++ b/packs/maladie-poison-and-blessure/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.854245 7f20edbfe6c0 Recovering log #94 -2026/04/09-07:31:00.865063 7f20edbfe6c0 Delete type=0 #94 -2026/04/09-07:31:00.865121 7f20edbfe6c0 Delete type=3 #93 -2026/04/09-23:11:56.099981 7f1e4ffff6c0 Level-0 table #98: started -2026/04/09-23:11:56.105569 7f1e4ffff6c0 Level-0 table #98: 0 bytes OK -2026/04/09-23:11:56.159882 7f1e4ffff6c0 Delete type=0 #96 -2026/04/09-23:11:56.284217 7f1e4ffff6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at '!items!yleVHgRqGoYLvzxT' @ 16 : 1 -2026/04/09-23:11:56.284226 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:56.306198 7f1e4ffff6c0 Generated table #99@0: 8 keys, 1953 bytes -2026/04/09-23:11:56.306252 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 1953 bytes -2026/04/09-23:11:56.365749 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:56.365864 7f1e4ffff6c0 Delete type=2 #79 -2026/04/09-23:11:56.366005 7f1e4ffff6c0 Delete type=2 #82 -2026/04/09-23:11:56.366066 7f1e4ffff6c0 Delete type=2 #89 -2026/04/09-23:11:56.649232 7f1e4ffff6c0 Manual compaction at level-0 from '!items!yleVHgRqGoYLvzxT' @ 16 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) -2026/04/09-23:11:56.649287 7f1e4ffff6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at '!items!yleVHgRqGoYLvzxT' @ 32 : 1 -2026/04/09-23:11:56.649293 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:56.673369 7f1e4ffff6c0 Generated table #100@1: 8 keys, 1953 bytes -2026/04/09-23:11:56.673396 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 1953 bytes -2026/04/09-23:11:56.738661 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:56.738800 7f1e4ffff6c0 Delete type=2 #33 -2026/04/09-23:11:56.738971 7f1e4ffff6c0 Delete type=2 #99 -2026/04/09-23:11:56.975609 7f1e4ffff6c0 Manual compaction at level-1 from '!items!yleVHgRqGoYLvzxT' @ 32 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.505383 7fddcbfff6c0 Recovering log #97 +2026/04/14-09:09:27.573701 7fddcbfff6c0 Delete type=3 #95 +2026/04/14-09:09:27.573885 7fddcbfff6c0 Delete type=0 #97 +2026/04/14-09:37:12.013930 7fddca1c26c0 Level-0 table #104: started +2026/04/14-09:37:12.014060 7fddca1c26c0 Level-0 table #104: 0 bytes OK +2026/04/14-09:37:12.020364 7fddca1c26c0 Delete type=0 #102 +2026/04/14-09:37:12.041283 7fddca1c26c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.041363 7fddca1c26c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) diff --git a/packs/maladie-poison-and-blessure/MANIFEST-000101 b/packs/maladie-poison-and-blessure/MANIFEST-000101 deleted file mode 100644 index 15396e2..0000000 Binary files a/packs/maladie-poison-and-blessure/MANIFEST-000101 and /dev/null differ diff --git a/packs/maladie-poison-and-blessure/MANIFEST-000105 b/packs/maladie-poison-and-blessure/MANIFEST-000105 new file mode 100644 index 0000000..a993a0f Binary files /dev/null and b/packs/maladie-poison-and-blessure/MANIFEST-000105 differ diff --git a/packs/objet/000098.log b/packs/objet/000102.log similarity index 100% rename from packs/objet/000098.log rename to packs/objet/000102.log diff --git a/packs/objet/CURRENT b/packs/objet/CURRENT index 6274e55..d7ae20e 100644 --- a/packs/objet/CURRENT +++ b/packs/objet/CURRENT @@ -1 +1 @@ -MANIFEST-000096 +MANIFEST-000100 diff --git a/packs/objet/LOG b/packs/objet/LOG index 1684b8b..65344d8 100644 --- a/packs/objet/LOG +++ b/packs/objet/LOG @@ -1,7 +1,7 @@ -2026/04/14-09:09:27.576965 7fddd97be6c0 Recovering log #94 -2026/04/14-09:09:27.633055 7fddd97be6c0 Delete type=3 #92 -2026/04/14-09:09:27.633158 7fddd97be6c0 Delete type=0 #94 -2026/04/14-09:37:12.034435 7fddca1c26c0 Level-0 table #99: started -2026/04/14-09:37:12.034485 7fddca1c26c0 Level-0 table #99: 0 bytes OK -2026/04/14-09:37:12.041061 7fddca1c26c0 Delete type=0 #97 -2026/04/14-09:37:12.041346 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.713557 7f8fb17bd6c0 Recovering log #98 +2026/04/30-16:49:03.723842 7f8fb17bd6c0 Delete type=0 #98 +2026/04/30-16:49:03.723909 7f8fb17bd6c0 Delete type=3 #96 +2026/04/30-22:23:51.840637 7f8d1bfff6c0 Level-0 table #103: started +2026/04/30-22:23:51.840659 7f8d1bfff6c0 Level-0 table #103: 0 bytes OK +2026/04/30-22:23:51.847231 7f8d1bfff6c0 Delete type=0 #101 +2026/04/30-22:23:51.847367 7f8d1bfff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/objet/LOG.old b/packs/objet/LOG.old index 93112c8..1684b8b 100644 --- a/packs/objet/LOG.old +++ b/packs/objet/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-07:31:00.868584 7f20ed3fd6c0 Recovering log #91 -2026/04/09-07:31:00.878275 7f20ed3fd6c0 Delete type=0 #91 -2026/04/09-07:31:00.878335 7f20ed3fd6c0 Delete type=3 #90 -2026/04/09-23:11:55.423085 7f1e4ffff6c0 Level-0 table #95: started -2026/04/09-23:11:55.423120 7f1e4ffff6c0 Level-0 table #95: 0 bytes OK -2026/04/09-23:11:55.490502 7f1e4ffff6c0 Delete type=0 #93 -2026/04/09-23:11:55.689798 7f1e4ffff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.576965 7fddd97be6c0 Recovering log #94 +2026/04/14-09:09:27.633055 7fddd97be6c0 Delete type=3 #92 +2026/04/14-09:09:27.633158 7fddd97be6c0 Delete type=0 #94 +2026/04/14-09:37:12.034435 7fddca1c26c0 Level-0 table #99: started +2026/04/14-09:37:12.034485 7fddca1c26c0 Level-0 table #99: 0 bytes OK +2026/04/14-09:37:12.041061 7fddca1c26c0 Delete type=0 #97 +2026/04/14-09:37:12.041346 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/objet/MANIFEST-000096 b/packs/objet/MANIFEST-000096 deleted file mode 100644 index 69c0935..0000000 Binary files a/packs/objet/MANIFEST-000096 and /dev/null differ diff --git a/packs/objet/MANIFEST-000100 b/packs/objet/MANIFEST-000100 new file mode 100644 index 0000000..196073b Binary files /dev/null and b/packs/objet/MANIFEST-000100 differ diff --git a/packs/ordinateur/000100.ldb b/packs/ordinateur/000100.ldb deleted file mode 100644 index 5490aa9..0000000 Binary files a/packs/ordinateur/000100.ldb and /dev/null differ diff --git a/packs/ordinateur/000103.log b/packs/ordinateur/000107.log similarity index 100% rename from packs/ordinateur/000103.log rename to packs/ordinateur/000107.log diff --git a/packs/ordinateur/000109.ldb b/packs/ordinateur/000109.ldb new file mode 100644 index 0000000..3223509 Binary files /dev/null and b/packs/ordinateur/000109.ldb differ diff --git a/packs/ordinateur/CURRENT b/packs/ordinateur/CURRENT index ed5ac88..2a5d251 100644 --- a/packs/ordinateur/CURRENT +++ b/packs/ordinateur/CURRENT @@ -1 +1 @@ -MANIFEST-000101 +MANIFEST-000105 diff --git a/packs/ordinateur/LOG b/packs/ordinateur/LOG index 77ba930..88f4b8c 100644 --- a/packs/ordinateur/LOG +++ b/packs/ordinateur/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:27.691723 7fddd8fbd6c0 Recovering log #97 -2026/04/14-09:09:27.751300 7fddd8fbd6c0 Delete type=3 #95 -2026/04/14-09:09:27.751449 7fddd8fbd6c0 Delete type=0 #97 -2026/04/14-09:37:12.048047 7fddca1c26c0 Level-0 table #104: started -2026/04/14-09:37:12.048094 7fddca1c26c0 Level-0 table #104: 0 bytes OK -2026/04/14-09:37:12.054263 7fddca1c26c0 Delete type=0 #102 -2026/04/14-09:37:12.068648 7fddca1c26c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.068720 7fddca1c26c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.744472 7f8fb17bd6c0 Recovering log #103 +2026/04/30-16:49:03.753999 7f8fb17bd6c0 Delete type=0 #103 +2026/04/30-16:49:03.754068 7f8fb17bd6c0 Delete type=3 #101 +2026/04/30-22:23:51.878010 7f8d1bfff6c0 Level-0 table #108: started +2026/04/30-22:23:51.882231 7f8d1bfff6c0 Level-0 table #108: 6693 bytes OK +2026/04/30-22:23:51.888264 7f8d1bfff6c0 Delete type=0 #106 +2026/04/30-22:23:51.888426 7f8d1bfff6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) +2026/04/30-22:23:51.900027 7f8d1bfff6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at '!items!yFvuDyV00NdojxGt' @ 67 : 1 +2026/04/30-22:23:51.900038 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:51.903328 7f8d1bfff6c0 Generated table #109@1: 15 keys, 6882 bytes +2026/04/30-22:23:51.903362 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 6882 bytes +2026/04/30-22:23:51.909320 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:51.909402 7f8d1bfff6c0 Delete type=2 #100 +2026/04/30-22:23:51.909524 7f8d1bfff6c0 Delete type=2 #108 +2026/04/30-22:23:51.926616 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yFvuDyV00NdojxGt' @ 67 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) diff --git a/packs/ordinateur/LOG.old b/packs/ordinateur/LOG.old index 06ffdbb..77ba930 100644 --- a/packs/ordinateur/LOG.old +++ b/packs/ordinateur/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.893292 7f20edbfe6c0 Recovering log #94 -2026/04/09-07:31:00.903184 7f20edbfe6c0 Delete type=0 #94 -2026/04/09-07:31:00.903229 7f20edbfe6c0 Delete type=3 #93 -2026/04/09-23:11:56.160046 7f1e4ffff6c0 Level-0 table #98: started -2026/04/09-23:11:56.160087 7f1e4ffff6c0 Level-0 table #98: 0 bytes OK -2026/04/09-23:11:56.221142 7f1e4ffff6c0 Delete type=0 #96 -2026/04/09-23:11:56.366148 7f1e4ffff6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at '!items!yFvuDyV00NdojxGt' @ 28 : 1 -2026/04/09-23:11:56.366156 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:56.403336 7f1e4ffff6c0 Generated table #99@0: 13 keys, 5518 bytes -2026/04/09-23:11:56.403367 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 5518 bytes -2026/04/09-23:11:56.463634 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:56.463768 7f1e4ffff6c0 Delete type=2 #79 -2026/04/09-23:11:56.463912 7f1e4ffff6c0 Delete type=2 #82 -2026/04/09-23:11:56.463976 7f1e4ffff6c0 Delete type=2 #89 -2026/04/09-23:11:56.649253 7f1e4ffff6c0 Manual compaction at level-0 from '!items!yFvuDyV00NdojxGt' @ 28 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) -2026/04/09-23:11:56.739065 7f1e4ffff6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at '!items!yFvuDyV00NdojxGt' @ 54 : 1 -2026/04/09-23:11:56.739073 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:56.767928 7f1e4ffff6c0 Generated table #100@1: 15 keys, 5685 bytes -2026/04/09-23:11:56.767955 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 5685 bytes -2026/04/09-23:11:56.821206 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:56.821329 7f1e4ffff6c0 Delete type=2 #67 -2026/04/09-23:11:56.821468 7f1e4ffff6c0 Delete type=2 #99 -2026/04/09-23:11:56.975628 7f1e4ffff6c0 Manual compaction at level-1 from '!items!yFvuDyV00NdojxGt' @ 54 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) +2026/04/14-09:09:27.691723 7fddd8fbd6c0 Recovering log #97 +2026/04/14-09:09:27.751300 7fddd8fbd6c0 Delete type=3 #95 +2026/04/14-09:09:27.751449 7fddd8fbd6c0 Delete type=0 #97 +2026/04/14-09:37:12.048047 7fddca1c26c0 Level-0 table #104: started +2026/04/14-09:37:12.048094 7fddca1c26c0 Level-0 table #104: 0 bytes OK +2026/04/14-09:37:12.054263 7fddca1c26c0 Delete type=0 #102 +2026/04/14-09:37:12.068648 7fddca1c26c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.068720 7fddca1c26c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) diff --git a/packs/ordinateur/MANIFEST-000101 b/packs/ordinateur/MANIFEST-000101 deleted file mode 100644 index e3be37d..0000000 Binary files a/packs/ordinateur/MANIFEST-000101 and /dev/null differ diff --git a/packs/ordinateur/MANIFEST-000105 b/packs/ordinateur/MANIFEST-000105 new file mode 100644 index 0000000..2198e50 Binary files /dev/null and b/packs/ordinateur/MANIFEST-000105 differ diff --git a/packs/tables-pnj/000005.ldb b/packs/tables-pnj/000005.ldb deleted file mode 100644 index bf3d374..0000000 Binary files a/packs/tables-pnj/000005.ldb and /dev/null differ diff --git a/packs/tables-pnj/000004.log b/packs/tables-pnj/000008.log similarity index 100% rename from packs/tables-pnj/000004.log rename to packs/tables-pnj/000008.log diff --git a/packs/tables-pnj/000010.ldb b/packs/tables-pnj/000010.ldb new file mode 100644 index 0000000..a50b2e3 Binary files /dev/null and b/packs/tables-pnj/000010.ldb differ diff --git a/packs/tables-pnj/CURRENT b/packs/tables-pnj/CURRENT index 1a84852..f7753e2 100644 --- a/packs/tables-pnj/CURRENT +++ b/packs/tables-pnj/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000006 diff --git a/packs/tables-pnj/LOG b/packs/tables-pnj/LOG index 74aff28..057633d 100644 --- a/packs/tables-pnj/LOG +++ b/packs/tables-pnj/LOG @@ -1,5 +1,15 @@ -2026/04/14-09:09:28.285829 7fddcbfff6c0 Delete type=3 #1 -2026/04/14-09:37:12.115891 7fddca1c26c0 Level-0 table #5: started -2026/04/14-09:37:12.134263 7fddca1c26c0 Level-0 table #5: 442791 bytes OK -2026/04/14-09:37:12.141689 7fddca1c26c0 Delete type=0 #3 -2026/04/14-09:37:12.149394 7fddca1c26c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.826939 7f8fb17bd6c0 Recovering log #4 +2026/04/30-16:49:03.836110 7f8fb17bd6c0 Delete type=0 #4 +2026/04/30-16:49:03.836179 7f8fb17bd6c0 Delete type=3 #2 +2026/04/30-22:23:52.137946 7f8d1bfff6c0 Level-0 table #9: started +2026/04/30-22:23:52.146943 7f8d1bfff6c0 Level-0 table #9: 455846 bytes OK +2026/04/30-22:23:52.153617 7f8d1bfff6c0 Delete type=0 #7 +2026/04/30-22:23:52.154161 7f8d1bfff6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) +2026/04/30-22:23:52.164598 7f8d1bfff6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 5340 : 1 +2026/04/30-22:23:52.164609 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:52.173070 7f8d1bfff6c0 Generated table #10@1: 2334 keys, 292055 bytes +2026/04/30-22:23:52.173097 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 292055 bytes +2026/04/30-22:23:52.179150 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:52.179286 7f8d1bfff6c0 Delete type=2 #5 +2026/04/30-22:23:52.179580 7f8d1bfff6c0 Delete type=2 #9 +2026/04/30-22:23:52.179841 7f8d1bfff6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 5340 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) diff --git a/packs/tables-pnj/LOG.old b/packs/tables-pnj/LOG.old new file mode 100644 index 0000000..74aff28 --- /dev/null +++ b/packs/tables-pnj/LOG.old @@ -0,0 +1,5 @@ +2026/04/14-09:09:28.285829 7fddcbfff6c0 Delete type=3 #1 +2026/04/14-09:37:12.115891 7fddca1c26c0 Level-0 table #5: started +2026/04/14-09:37:12.134263 7fddca1c26c0 Level-0 table #5: 442791 bytes OK +2026/04/14-09:37:12.141689 7fddca1c26c0 Delete type=0 #3 +2026/04/14-09:37:12.149394 7fddca1c26c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) diff --git a/packs/tables-pnj/MANIFEST-000002 b/packs/tables-pnj/MANIFEST-000002 deleted file mode 100644 index 54dd2a8..0000000 Binary files a/packs/tables-pnj/MANIFEST-000002 and /dev/null differ diff --git a/packs/tables-pnj/MANIFEST-000006 b/packs/tables-pnj/MANIFEST-000006 new file mode 100644 index 0000000..78f312a Binary files /dev/null and b/packs/tables-pnj/MANIFEST-000006 differ diff --git a/packs/talents-psioniques/000046.ldb b/packs/talents-psioniques/000046.ldb deleted file mode 100644 index 1db69cf..0000000 Binary files a/packs/talents-psioniques/000046.ldb and /dev/null differ diff --git a/packs/talents-psioniques/000049.log b/packs/talents-psioniques/000053.log similarity index 100% rename from packs/talents-psioniques/000049.log rename to packs/talents-psioniques/000053.log diff --git a/packs/talents-psioniques/000055.ldb b/packs/talents-psioniques/000055.ldb new file mode 100644 index 0000000..9e66b40 Binary files /dev/null and b/packs/talents-psioniques/000055.ldb differ diff --git a/packs/talents-psioniques/CURRENT b/packs/talents-psioniques/CURRENT index 1afa5d4..29ffc22 100644 --- a/packs/talents-psioniques/CURRENT +++ b/packs/talents-psioniques/CURRENT @@ -1 +1 @@ -MANIFEST-000047 +MANIFEST-000051 diff --git a/packs/talents-psioniques/LOG b/packs/talents-psioniques/LOG index d778917..8dd012e 100644 --- a/packs/talents-psioniques/LOG +++ b/packs/talents-psioniques/LOG @@ -1,8 +1,15 @@ -2026/04/14-09:09:28.041722 7fddd8fbd6c0 Recovering log #43 -2026/04/14-09:09:28.113572 7fddd8fbd6c0 Delete type=3 #41 -2026/04/14-09:09:28.113676 7fddd8fbd6c0 Delete type=0 #43 -2026/04/14-09:37:12.081908 7fddca1c26c0 Level-0 table #50: started -2026/04/14-09:37:12.081954 7fddca1c26c0 Level-0 table #50: 0 bytes OK -2026/04/14-09:37:12.089167 7fddca1c26c0 Delete type=0 #48 -2026/04/14-09:37:12.095948 7fddca1c26c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) -2026/04/14-09:37:12.096033 7fddca1c26c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) +2026/04/30-16:49:03.802845 7f8fb17bd6c0 Recovering log #49 +2026/04/30-16:49:03.812772 7f8fb17bd6c0 Delete type=0 #49 +2026/04/30-16:49:03.812824 7f8fb17bd6c0 Delete type=3 #47 +2026/04/30-22:23:51.933538 7f8d1bfff6c0 Level-0 table #54: started +2026/04/30-22:23:51.937000 7f8d1bfff6c0 Level-0 table #54: 19466 bytes OK +2026/04/30-22:23:51.943332 7f8d1bfff6c0 Delete type=0 #52 +2026/04/30-22:23:51.960822 7f8d1bfff6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) +2026/04/30-22:23:51.960857 7f8d1bfff6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at '!items!xFUyR7XECD8QJcIw' @ 165 : 1 +2026/04/30-22:23:51.960865 7f8d1bfff6c0 Compacting 1@1 + 1@2 files +2026/04/30-22:23:51.964712 7f8d1bfff6c0 Generated table #55@1: 33 keys, 19466 bytes +2026/04/30-22:23:51.964737 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 19466 bytes +2026/04/30-22:23:51.971716 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/30-22:23:51.971820 7f8d1bfff6c0 Delete type=2 #46 +2026/04/30-22:23:51.972370 7f8d1bfff6c0 Delete type=2 #54 +2026/04/30-22:23:51.992704 7f8d1bfff6c0 Manual compaction at level-1 from '!items!xFUyR7XECD8QJcIw' @ 165 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) diff --git a/packs/talents-psioniques/LOG.old b/packs/talents-psioniques/LOG.old index 2f045bc..d778917 100644 --- a/packs/talents-psioniques/LOG.old +++ b/packs/talents-psioniques/LOG.old @@ -1,23 +1,8 @@ -2026/04/09-07:31:00.966317 7f20edbfe6c0 Recovering log #40 -2026/04/09-07:31:00.977411 7f20edbfe6c0 Delete type=0 #40 -2026/04/09-07:31:00.977467 7f20edbfe6c0 Delete type=3 #39 -2026/04/09-23:11:57.078885 7f1e4ffff6c0 Level-0 table #44: started -2026/04/09-23:11:57.078928 7f1e4ffff6c0 Level-0 table #44: 0 bytes OK -2026/04/09-23:11:57.137852 7f1e4ffff6c0 Delete type=0 #42 -2026/04/09-23:11:57.276385 7f1e4ffff6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at '!items!xFUyR7XECD8QJcIw' @ 66 : 1 -2026/04/09-23:11:57.276393 7f1e4ffff6c0 Compacting 3@0 + 0@1 files -2026/04/09-23:11:57.302978 7f1e4ffff6c0 Generated table #45@0: 33 keys, 19448 bytes -2026/04/09-23:11:57.303006 7f1e4ffff6c0 Compacted 3@0 + 0@1 files => 19448 bytes -2026/04/09-23:11:57.363252 7f1e4ffff6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/04/09-23:11:57.363399 7f1e4ffff6c0 Delete type=2 #25 -2026/04/09-23:11:57.363603 7f1e4ffff6c0 Delete type=2 #28 -2026/04/09-23:11:57.363689 7f1e4ffff6c0 Delete type=2 #35 -2026/04/09-23:11:57.451783 7f1e4ffff6c0 Manual compaction at level-0 from '!items!xFUyR7XECD8QJcIw' @ 66 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) -2026/04/09-23:11:57.575538 7f1e4ffff6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at '!items!xFUyR7XECD8QJcIw' @ 132 : 1 -2026/04/09-23:11:57.575546 7f1e4ffff6c0 Compacting 1@1 + 1@2 files -2026/04/09-23:11:57.607243 7f1e4ffff6c0 Generated table #46@1: 33 keys, 19448 bytes -2026/04/09-23:11:57.607267 7f1e4ffff6c0 Compacted 1@1 + 1@2 files => 19448 bytes -2026/04/09-23:11:57.665733 7f1e4ffff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/09-23:11:57.665877 7f1e4ffff6c0 Delete type=2 #5 -2026/04/09-23:11:57.666030 7f1e4ffff6c0 Delete type=2 #45 -2026/04/09-23:11:57.809717 7f1e4ffff6c0 Manual compaction at level-1 from '!items!xFUyR7XECD8QJcIw' @ 132 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) +2026/04/14-09:09:28.041722 7fddd8fbd6c0 Recovering log #43 +2026/04/14-09:09:28.113572 7fddd8fbd6c0 Delete type=3 #41 +2026/04/14-09:09:28.113676 7fddd8fbd6c0 Delete type=0 #43 +2026/04/14-09:37:12.081908 7fddca1c26c0 Level-0 table #50: started +2026/04/14-09:37:12.081954 7fddca1c26c0 Level-0 table #50: 0 bytes OK +2026/04/14-09:37:12.089167 7fddca1c26c0 Delete type=0 #48 +2026/04/14-09:37:12.095948 7fddca1c26c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) +2026/04/14-09:37:12.096033 7fddca1c26c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) diff --git a/packs/talents-psioniques/MANIFEST-000047 b/packs/talents-psioniques/MANIFEST-000047 deleted file mode 100644 index 1866328..0000000 Binary files a/packs/talents-psioniques/MANIFEST-000047 and /dev/null differ diff --git a/packs/talents-psioniques/MANIFEST-000051 b/packs/talents-psioniques/MANIFEST-000051 new file mode 100644 index 0000000..27c800b Binary files /dev/null and b/packs/talents-psioniques/MANIFEST-000051 differ diff --git a/scripts/CommerceDialog.js b/scripts/CommerceDialog.js index 246b779..edfcbc3 100644 --- a/scripts/CommerceDialog.js +++ b/scripts/CommerceDialog.js @@ -8,6 +8,7 @@ import { calculatePassengers, calculateCargo, findAvailableGoods, calculatePrice, formatCredits } from './tradeHelper.js'; import { searchWorlds, fetchWorldDetail, fetchWorldCoordinates, calcParsecs } from './travellerMapApi.js'; +import { buildActiveActorContext, COMMERCE_SKILLS, getActiveTravellerActor, rollActorSkillEffect, getActorSkillSummary } from './mgt2eSkills.js'; const MODULE_ID = 'mgt2-compendium-amiral-denisov'; @@ -33,9 +34,9 @@ export class CommerceDialog extends FormApplication { } static get defaultOptions() { - return mergeObject(super.defaultOptions, { + return foundry.utils.mergeObject(super.defaultOptions, { id: 'mgt2-commerce', - title: 'Commerce – MGT2', + title: 'Commerce – MgT2e', template: `modules/${MODULE_ID}/templates/commerce-dialog.hbs`, width: 780, height: 'auto', @@ -51,7 +52,10 @@ export class CommerceDialog extends FormApplication { getData() { _registerHandlebarsHelpers(); - return foundry.utils.mergeObject(super.getData(), this._formData); + return foundry.utils.mergeObject(super.getData(), { + ...this._formData, + activeActor: buildActiveActorContext(), + }); } activateListeners(html) { @@ -84,6 +88,31 @@ export class CommerceDialog extends FormApplication { await this._handleBuyPrices(); }); + html.find('[data-action="load-pax-actor"]').on('click', async (ev) => { + ev.preventDefault(); + this._applyPassengerActorData(html); + }); + + html.find('[data-action="roll-pax-effect"]').on('click', async (ev) => { + ev.preventDefault(); + await this._rollActorEffectIntoField(html, 'pax.skillEffect', COMMERCE_SKILLS.passengerEffect); + }); + + html.find('[data-action="load-cargo-actor"]').on('click', async (ev) => { + ev.preventDefault(); + this._applyCargoActorData(html); + }); + + html.find('[data-action="roll-cargo-effect"]').on('click', async (ev) => { + ev.preventDefault(); + await this._rollActorEffectIntoField(html, 'cargo.skillEffect', COMMERCE_SKILLS.cargoEffect); + }); + + html.find('[data-action="load-trade-actor"]').on('click', async (ev) => { + ev.preventDefault(); + this._applyTradeActorData(html); + }); + // ─── Recherche de monde (Traveller Map API) ─────────────────────────────── html.find('.world-search-widget').each((_, widget) => { const $widget = $(widget); @@ -205,6 +234,73 @@ export class CommerceDialog extends FormApplication { this._formData.trade.blackMarket = html.find('[name="trade.blackMarket"]').is(':checked'); } + _getActiveActorOrWarn() { + const { actor } = getActiveTravellerActor(); + if (!actor) { + ui.notifications.warn('Aucun token sélectionné ni personnage assigné pour lire les compétences mgt2e.'); + return null; + } + return actor; + } + + _applyPassengerActorData(html) { + const actor = this._getActiveActorOrWarn(); + if (!actor) return; + + const steward = getActorSkillSummary(actor, COMMERCE_SKILLS.steward); + this._setNumericSelectValue(html, 'pax.stewardLevel', steward.value); + this._readForm(html); + ui.notifications.info(`${actor.name} : Intendant ${steward.value} chargé dans le calcul passagers.`); + } + + _applyCargoActorData(html) { + const actor = this._getActiveActorOrWarn(); + if (!actor) return; + + const socMod = Number(actor.system.characteristics?.SOC?.dm ?? 0); + this._setNumericSelectValue(html, 'cargo.socMod', socMod); + this._readForm(html); + ui.notifications.info(`${actor.name} : DM SOC ${socMod >= 0 ? '+' : ''}${socMod} chargé dans le calcul cargaison.`); + } + + _applyTradeActorData(html) { + const actor = this._getActiveActorOrWarn(); + if (!actor) return; + + const broker = getActorSkillSummary(actor, COMMERCE_SKILLS.tradeBroker); + this._setNumericSelectValue(html, 'trade.brokerSkill', broker.value); + this._readForm(html); + ui.notifications.info(`${actor.name} : Courtier ${broker.value} chargé pour le commerce spéculatif.`); + } + + async _rollActorEffectIntoField(html, fieldName, skillList) { + const actor = this._getActiveActorOrWarn(); + if (!actor) return; + + const rollResult = await rollActorSkillEffect(actor, skillList); + if (!rollResult) { + ui.notifications.warn(`${actor.name} ne possède aucune des compétences attendues pour ce calcul.`); + return; + } + + this._setNumericSelectValue(html, fieldName, rollResult.effect); + this._readForm(html); + ui.notifications.info(`${actor.name} : ${rollResult.label} → 2D6 (${rollResult.diceTotal}) + ${rollResult.totalModifier >= 0 ? '+' : ''}${rollResult.totalModifier} = ${rollResult.total}, effet ${rollResult.effect >= 0 ? '+' : ''}${rollResult.effect}.`); + } + + _setNumericSelectValue(html, fieldName, value) { + const select = html.find(`[name="${fieldName}"]`); + if (!select.length) return; + + const normalized = Number(value ?? 0); + if (!select.find(`option[value="${normalized}"]`).length) { + const label = normalized > 0 ? `+${normalized}` : `${normalized}`; + select.append(``); + } + + select.val(`${normalized}`); + } + // ─── Passagers ───────────────────────────────────────────────────────────── async _handlePassengers() { diff --git a/scripts/NpcDialog.js b/scripts/NpcDialog.js index 61b0e7c..8145669 100644 --- a/scripts/NpcDialog.js +++ b/scripts/NpcDialog.js @@ -25,7 +25,7 @@ export class NpcDialog extends FormApplication { static get defaultOptions() { return foundry.utils.mergeObject(super.defaultOptions, { id: 'mgt2-npc', - title: 'PNJ & Rencontres – MGT2', + title: 'PNJ & Rencontres – MgT2e', template: `modules/${MODULE_ID}/templates/npc-dialog.hbs`, width: 720, height: 'auto', diff --git a/scripts/commerce.js b/scripts/commerce.js index bdc4fd8..86bbd63 100644 --- a/scripts/commerce.js +++ b/scripts/commerce.js @@ -6,6 +6,7 @@ */ import { CommerceDialog } from './CommerceDialog.js'; +import './mgt2eMigration.js'; const MODULE_ID = 'mgt2-compendium-amiral-denisov'; diff --git a/scripts/data/npcTables.js b/scripts/data/npcTables.js index 437e3d0..ea455da 100644 --- a/scripts/data/npcTables.js +++ b/scripts/data/npcTables.js @@ -25,7 +25,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Non-combattant bleu', skillLevel: 0, characteristicBonuses: [], - skills: ['Conduire/aéronef'], + skills: ['pilot'], }, { key: 'combatant-blue', @@ -34,7 +34,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Combattant bleu', skillLevel: 0, characteristicBonuses: [], - skills: ['Conduire/aéronef', 'Combat Arme', 'Mêlée'], + skills: ['pilot', 'guncombat', 'melee'], }, { key: 'noncombatant-average', @@ -43,7 +43,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Non-combattant moyen', skillLevel: 1, characteristicBonuses: ['+1'], - skills: ['Conduire/aéronef', 'Profession'], + skills: ['pilot', 'profession'], }, { key: 'combatant-average', @@ -52,7 +52,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Combattant moyen', skillLevel: 1, characteristicBonuses: ['+1'], - skills: ['Conduire/aéronef', 'Combat Arme', 'Mêlée', 'Reconnaissance'], + skills: ['pilot', 'guncombat', 'melee', 'recon'], }, { key: 'noncombatant-experienced', @@ -61,7 +61,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Non-combattant expérimenté', skillLevel: 2, characteristicBonuses: ['+1', '+2'], - skills: ['Administration', 'Conduire/aéronef', 'Profession'], + skills: ['admin', 'pilot', 'profession'], }, { key: 'combatant-experienced', @@ -70,7 +70,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Combattant expérimenté', skillLevel: 2, characteristicBonuses: ['+1', '+2'], - skills: ['Conduire/aéronef', 'Combat Arme', 'Armes lourdes', 'Mêlée', 'Reconnaissance'], + skills: ['pilot', 'guncombat', 'heavyweapons', 'melee', 'recon'], }, { key: 'noncombatant-elite', @@ -79,7 +79,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Non-combattant élite', skillLevel: 3, characteristicBonuses: ['+1', '+2', '+3'], - skills: ['Administration', 'Conduire/aéronef', 'Enquêter', 'Profession'], + skills: ['admin', 'pilot', 'investigate', 'profession'], }, { key: 'combatant-elite', @@ -88,7 +88,7 @@ export const EXPERIENCE_PROFILES = [ label: 'Combattant élite', skillLevel: 3, characteristicBonuses: ['+1', '+2', '+3'], - skills: ['Conduire/aéronef', 'Combat Arme', 'Armes lourdes', 'Mêlée', 'Reconnaissance', 'Tactique'], + skills: ['pilot', 'guncombat', 'heavyweapons', 'melee', 'recon', 'tactics'], }, ]; diff --git a/scripts/mgt2eMigration.js b/scripts/mgt2eMigration.js new file mode 100644 index 0000000..f15401d --- /dev/null +++ b/scripts/mgt2eMigration.js @@ -0,0 +1,406 @@ +import { inferWeaponSkillFromName } from './mgt2eSkills.js'; + +const MODULE_ID = 'mgt2-compendium-amiral-denisov'; +const MIGRATION_SETTING = 'mgt2eMigrationVersion'; +const MIGRATION_VERSION = 2; + +const ITEM_PACKS = [ + 'armures', + 'competences', + 'maladie-poison-and-blessure', + 'objet', + 'equipement', + 'ordinateur', + 'contenant-sac-coffre', + 'espece', + 'armes', + 'talents-psioniques', + 'carrieres', +]; + +Hooks.once('init', () => { + game.settings.register(MODULE_ID, MIGRATION_SETTING, { + scope: 'world', + config: false, + type: Number, + default: 0, + }); +}); + +Hooks.once('ready', async () => { + if (game.system?.id !== 'mgt2e' || !game.user?.isGM) return; + + const currentVersion = game.settings.get(MODULE_ID, MIGRATION_SETTING) ?? 0; + if (currentVersion >= MIGRATION_VERSION) return; + + ui.notifications.info('Migration mgt2e du module en cours...'); + + try { + for (const packName of ITEM_PACKS) { + await migrateItemPack(packName); + } + + await game.settings.set(MODULE_ID, MIGRATION_SETTING, MIGRATION_VERSION); + ui.notifications.info('Migration mgt2e du module terminée.'); + } catch (error) { + console.error(`${MODULE_ID} | Migration mgt2e impossible`, error); + ui.notifications.error(`Migration mgt2e inachevee : ${error.message}`); + } +}); + +async function migrateItemPack(packName) { + const collection = `${MODULE_ID}.${packName}`; + const pack = game.packs.get(collection); + if (!pack || pack.documentName !== 'Item') return; + + const originalLocked = pack.locked; + if (originalLocked) { + await pack.configure({ locked: false }); + } + + try { + const documents = await pack.getDocuments(); + const folderNames = buildFolderNameMap(pack); + const failures = []; + + for (const document of documents) { + const folderId = document.folder?.id ?? document.folder ?? null; + const update = buildMigratedItemData(document, packName, folderNames.get(folderId)); + if (!update) continue; + + try { + await document.update(update, { diff: false, recursive: false }); + } catch (error) { + failures.push(`${document.name}: ${error.message}`); + } + } + + if (failures.length) { + throw new Error(`${packName} (${failures.length} erreurs) — ${failures.slice(0, 5).join(' | ')}`); + } + } finally { + if (originalLocked) { + await pack.configure({ locked: true }); + } + } +} + +function buildFolderNameMap(pack) { + const folders = new Map(); + for (const folder of pack.folders ?? []) { + folders.set(folder.id, folder.name ?? ''); + } + return folders; +} + +function buildMigratedItemData(document, packName, folderName = '') { + const legacyType = document.type; + const folderId = document.folder?.id ?? document.folder ?? null; + const common = { + name: document.name, + img: document.img, + flags: foundry.utils.mergeObject(document.flags ?? {}, { + [MODULE_ID]: { + legacyType, + migratedToMgt2e: MIGRATION_VERSION, + }, + }), + folder: folderId, + sort: document.sort, + ownership: document.ownership, + }; + + switch (legacyType) { + case 'armor': + return { + ...common, + type: 'armour', + system: buildArmourSystem(document), + }; + case 'weapon': + return { + ...common, + type: 'weapon', + system: buildWeaponSystem(document), + }; + case 'equipment': + return { + ...common, + type: isAugmentFolder(folderName) ? 'augment' : 'item', + system: isAugmentFolder(folderName) ? buildAugmentSystem(document) : buildSimpleItemSystem(document), + }; + case 'computer': + return { + ...common, + type: 'hardware', + system: buildHardwareSystem(document), + }; + case 'item': + if (document.system?.subType === 'software') { + return { + ...common, + type: 'software', + system: buildSoftwareSystem(document), + }; + } + return { + ...common, + type: 'item', + system: buildSimpleItemSystem(document), + }; + case 'career': + return { + ...common, + type: 'item', + system: buildReferenceItemSystem(document, 'Carriere', packName), + }; + case 'talent': + return { + ...common, + type: 'item', + system: buildReferenceItemSystem(document, document.system?.subType === 'psionic' ? 'Talent psionique' : 'Competence', packName), + }; + case 'disease': + return { + ...common, + type: 'item', + system: buildDiseaseItemSystem(document), + }; + default: + return { + ...common, + type: 'item', + system: buildReferenceItemSystem(document, legacyType, packName), + }; + } +} + +function buildWeaponSystem(document) { + const system = document.system ?? {}; + const traits = normalizeTraits(system.traits); + const melee = Boolean(system.range?.isMelee); + + return { + tl: normalizeTl(system.tl), + weight: toNumber(system.weight), + cost: toNumber(system.cost), + notes: traits.notes, + active: Boolean(system.equipped), + quantity: toNumber(system.quantity, 1), + status: system.trash ? 'broken' : null, + legality: 9, + weapon: { + scale: 'traveller', + range: melee ? 0 : toNumber(system.range?.value), + minRange: 0, + damage: normalizeDamage(system.damage), + magazine: toNumber(system.magazine), + ammo: toNumber(system.magazine), + magazineCost: toNumber(system.magazineCost), + characteristic: melee ? 'STR' : 'DEX', + skill: inferWeaponSkillFromName(document.name, melee), + parryBonus: 0, + damageBonus: melee ? 'STR' : '', + damageType: 'standard', + attackBonus: 0, + traits: traits.names, + }, + description: formatDescription(system.description), + }; +} + +function buildArmourSystem(document) { + const system = document.system ?? {}; + return { + tl: normalizeTl(system.tl), + weight: toNumber(system.weight), + cost: toNumber(system.cost), + notes: buildLines([ + system.requireSkillLevel != null ? `Combi requise: ${system.requireSkillLevel}` : '', + ]), + active: Boolean(system.equipped), + quantity: toNumber(system.quantity, 1), + status: system.trash ? 'broken' : null, + legality: 9, + armour: { + protection: toNumber(String(system.protection ?? '').replace(/[^\d-]/g, '')), + otherProtection: 0, + otherTypes: '', + rad: toNumber(system.radiations), + archaic: 0, + skill: toNumber(system.requireSkillLevel) > 0 ? 'vaccsuit' : '', + duration: 0, + slots: 0, + form: 'standard', + layered: 0, + ablat: 0, + powered: Boolean(system.powered) ? 1 : 0, + psi: 0, + worn: Boolean(system.equipped) ? 1 : 0, + }, + description: formatDescription(system.description), + }; +} + +function buildSimpleItemSystem(document) { + const system = document.system ?? {}; + return { + tl: normalizeTl(system.tl), + weight: toNumber(system.weight), + cost: toNumber(system.cost), + notes: '', + active: Boolean(system.equipped), + quantity: toNumber(system.quantity, 1), + status: system.trash ? 'broken' : null, + legality: 9, + description: formatDescription(system.description), + }; +} + +function buildAugmentSystem(document) { + const system = buildSimpleItemSystem(document); + return system; +} + +function buildHardwareSystem(document) { + const system = document.system ?? {}; + return { + tl: normalizeTl(system.tl), + weight: toNumber(system.weight), + cost: toNumber(system.cost), + notes: buildLines([ + system.overload ? 'Surcharge: oui' : '', + system.processing != null ? `Traitement: ${system.processing}` : '', + system.processingUsed != null ? `Traitement utilise: ${system.processingUsed}` : '', + ]), + active: false, + quantity: toNumber(system.quantity, 1), + status: system.trash ? 'broken' : null, + legality: 9, + hardware: { + system: 'computer', + tons: 0, + power: toNumber(system.processing), + rating: inferRating(document.name), + variables: { + max: 0, + tl: normalizeTl(system.tl), + cost: toNumber(system.cost), + }, + }, + description: formatDescription(system.description), + }; +} + +function buildSoftwareSystem(document) { + const system = document.system ?? {}; + return { + quantity: toNumber(system.quantity, 1), + tl: normalizeTl(system.tl), + software: { + bandwidth: toNumber(system.software?.bandwidth), + }, + cost: toNumber(system.cost), + description: formatDescription(system.description), + }; +} + +function buildReferenceItemSystem(document, category, packName) { + const system = document.system ?? {}; + const isSkillReference = packName === 'competences'; + return { + tl: normalizeTl(system.tl), + weight: toNumber(system.weight), + cost: toNumber(system.cost), + notes: buildLines([ + isSkillReference ? 'Référence documentaire uniquement — les compétences de jeu utilisent désormais actor.system.skills et la localisation MGT2.Skills.*.' : '', + category ? `Categorie legacy: ${category}` : '', + system.subType ? `Sous-type legacy: ${system.subType}` : '', + system.level != null ? `Niveau legacy: ${system.level}` : '', + system.assignment ? `Affectations: ${system.assignment}` : '', + ]), + active: false, + quantity: toNumber(system.quantity, 1), + status: null, + legality: 9, + description: isSkillReference + ? formatDescription([system.description, '

Note mgt2e : cette entrée sert de référence documentaire. Les compétences jouables sont natives à la fiche de personnage `mgt2e`.

'].filter(Boolean).join('\n\n')) + : formatDescription(system.description), + }; +} + +function buildDiseaseItemSystem(document) { + const system = document.system ?? {}; + return { + tl: '0', + weight: 0, + cost: 0, + notes: buildLines([ + system.subType ? `Sous-type: ${system.subType}` : '', + system.difficulty ? `Difficulte: ${system.difficulty}` : '', + system.damage ? `Degats: ${system.damage}` : '', + system.interval ? `Intervalle: ${system.interval}` : '', + ]), + active: false, + quantity: 1, + status: null, + legality: 9, + description: formatDescription(system.description), + }; +} + +function isAugmentFolder(folderName) { + return /augmentation/i.test(folderName ?? ''); +} + +function normalizeTl(value) { + const match = String(value ?? '').match(/(\d+)/); + return match ? match[1] : '0'; +} + +function normalizeDamage(value) { + return String(value ?? '1D6').replace(/d/g, 'D'); +} + +function toNumber(value, fallback = 0) { + const parsed = Number.parseInt(String(value ?? ''), 10); + return Number.isFinite(parsed) ? parsed : fallback; +} + +function inferRating(name) { + const match = String(name ?? '').match(/\/(\d+)/); + return match ? Number.parseInt(match[1], 10) : 0; +} + +function normalizeTraits(traits) { + if (!Array.isArray(traits) || !traits.length) return { names: '', notes: '' }; + + const names = traits + .map((trait) => trait?.name ?? trait) + .filter(Boolean) + .join(', '); + const notes = traits + .filter((trait) => trait?.description) + .map((trait) => `${trait.name}: ${trait.description}`) + .join('\n'); + + return { names, notes }; +} + +function formatDescription(value) { + const text = String(value ?? '').trim(); + if (!text) return ''; + if (text.includes('<')) return text; + + const paragraphs = text + .split(/\n{2,}/) + .map((part) => part.trim()) + .filter(Boolean) + .map((part) => `

${part.replace(/\n/g, '
')}

`); + + return paragraphs.join(''); +} + +function buildLines(lines) { + return lines.filter(Boolean).join('\n'); +} diff --git a/scripts/mgt2eSkills.js b/scripts/mgt2eSkills.js new file mode 100644 index 0000000..d7c0a1d --- /dev/null +++ b/scripts/mgt2eSkills.js @@ -0,0 +1,180 @@ +const SKILL_LOCALIZATION_PREFIX = 'MGT2.Skills.'; + +export const COMMERCE_SKILLS = Object.freeze({ + passengerEffect: ['carouse', 'broker', 'streetwise'], + cargoEffect: ['broker', 'streetwise'], + tradeBroker: 'broker', + steward: 'steward', +}); + +export function splitSkillFqn(skillFqn = '') { + const [skillId = '', specialityId = ''] = String(skillFqn ?? '').split('.'); + return { skillId, specialityId }; +} + +export function localizeSkill(skillFqn, fallback = '') { + const { skillId, specialityId } = splitSkillFqn(skillFqn); + if (!skillId) return fallback; + + const skillLabel = localizeSkillId(skillId); + if (!specialityId) return skillLabel; + return `${skillLabel} (${localizeSkillId(specialityId)})`; +} + +export function getActiveTravellerActor() { + const controlled = canvas?.tokens?.controlled?.find((token) => token.actor?.type === 'traveller' || token.actor?.type === 'npc')?.actor; + if (controlled) return { actor: controlled, source: 'token' }; + + if (game.user?.character?.type === 'traveller' || game.user?.character?.type === 'npc') { + return { actor: game.user.character, source: 'character' }; + } + + const owned = game.actors?.find((actor) => actor.isOwner && (actor.type === 'traveller' || actor.type === 'npc')); + if (owned) return { actor: owned, source: 'owned' }; + + return { actor: null, source: null }; +} + +export function getActorSkillSummary(actor, skillFqn) { + if (!actor?.system?.skills) return buildEmptySkillSummary(skillFqn); + + const { skillId, specialityId } = splitSkillFqn(skillFqn); + const skill = actor.system.skills[skillId]; + if (!skill) return buildEmptySkillSummary(skillFqn); + + const speciality = specialityId ? skill.specialities?.[specialityId] ?? null : null; + const characteristic = speciality?.default || skill.default || null; + const characteristicDm = characteristic ? Number(actor.system.characteristics?.[characteristic]?.dm ?? 0) : 0; + const trained = Boolean(skill.trained) || Number(skill.value ?? 0) > 0 || Number(speciality?.value ?? 0) > 0; + const value = speciality ? Number(speciality.value ?? 0) : Number(skill.value ?? 0); + const jackOfAllTrades = Number(actor.system.skills?.jackofalltrades?.value ?? 0); + const rollValue = trained ? value : jackOfAllTrades - 3; + + return { + skillFqn, + skillId, + specialityId, + label: localizeSkill(skillFqn, skill.label || skillId), + value, + rollValue, + trained, + characteristic, + characteristicDm, + totalModifier: rollValue + characteristicDm, + }; +} + +export function getActorCharacteristicSummary(actor, characteristicId) { + if (!actor?.system?.characteristics?.[characteristicId]) { + return { id: characteristicId, value: 0, dm: 0, label: characteristicId }; + } + + const characteristic = actor.system.characteristics[characteristicId]; + return { + id: characteristicId, + value: Number(characteristic.value ?? 0), + dm: Number(characteristic.dm ?? 0), + label: game.i18n.localize(`MGT2.Characteristics.${characteristicId}`), + }; +} + +export function getBestActorSkillSummary(actor, skillList = []) { + const summaries = skillList + .map((skillFqn) => getActorSkillSummary(actor, skillFqn)) + .filter((summary) => summary.skillId); + + if (!summaries.length) return null; + + return summaries.sort((left, right) => { + if (right.totalModifier !== left.totalModifier) return right.totalModifier - left.totalModifier; + if (right.value !== left.value) return right.value - left.value; + return left.label.localeCompare(right.label, 'fr'); + })[0]; +} + +export async function rollActorSkillEffect(actor, skillList = [], difficulty = 8) { + const summary = getBestActorSkillSummary(actor, skillList); + if (!summary) return null; + + const roll = await new Roll('2d6').evaluate(); + const total = Number(roll.total ?? 0) + summary.totalModifier; + return { + ...summary, + diceTotal: Number(roll.total ?? 0), + total, + effect: total - difficulty, + difficulty, + }; +} + +export function setSkillLevel(skills, skillFqn, level) { + const { skillId, specialityId } = splitSkillFqn(skillFqn); + if (!skillId || !skills?.[skillId]) return skills; + + const numericLevel = Number(level ?? 0); + const skill = foundry.utils.mergeObject(skills[skillId], { trained: numericLevel > 0 || skills[skillId].trained }); + + if (specialityId && skill.specialities?.[specialityId]) { + skill.specialities[specialityId] = foundry.utils.mergeObject(skill.specialities[specialityId], { + value: Math.max(Number(skill.specialities[specialityId].value ?? 0), numericLevel), + }); + } else { + skill.value = Math.max(Number(skill.value ?? 0), numericLevel); + } + + skills[skillId] = skill; + return skills; +} + +export function buildActiveActorContext() { + const { actor, source } = getActiveTravellerActor(); + if (!actor) return null; + + return { + id: actor.id, + name: actor.name, + source, + sourceLabel: source === 'token' ? 'token sélectionné' : source === 'character' ? 'personnage assigné' : 'acteur possédé', + broker: getActorSkillSummary(actor, 'broker'), + carouse: getActorSkillSummary(actor, 'carouse'), + streetwise: getActorSkillSummary(actor, 'streetwise'), + steward: getActorSkillSummary(actor, 'steward'), + soc: getActorCharacteristicSummary(actor, 'SOC'), + }; +} + +export function inferWeaponSkillFromName(name, melee) { + const label = String(name ?? '').toLowerCase(); + if (melee) { + if (/(sabre|épée|epee|lame|poignard|couteau|fleuret|rapiere|rapière)/i.test(label)) return 'melee.blade'; + if (/(massue|matraque|bâton|baton|gourdin|marteau|masse)/i.test(label)) return 'melee.bludgeon'; + if (/(griffe|morsure|corne|tentacule|naturel)/i.test(label)) return 'melee.natural'; + return 'melee.unarmed'; + } + + if (/(laser|plasma|fusion|particule|meson)/i.test(label)) return 'guncombat.energy'; + if (/(arc|arbal[eè]te|javelot|lance[- ]?harpon)/i.test(label)) return 'guncombat.archaic'; + if (/(canon|lance[- ]?grenade|missile|mortier|roquette)/i.test(label)) return 'heavyweapons.portable'; + return 'guncombat.slug'; +} + +function localizeSkillId(skillId) { + const localized = game.i18n.localize(`${SKILL_LOCALIZATION_PREFIX}${skillId}`); + return localized.startsWith(SKILL_LOCALIZATION_PREFIX) ? skillId : localized; +} + +function buildEmptySkillSummary(skillFqn) { + const { skillId, specialityId } = splitSkillFqn(skillFqn); + return { + skillFqn, + skillId, + specialityId, + label: localizeSkill(skillFqn, skillId), + value: 0, + rollValue: -3, + trained: false, + characteristic: null, + characteristicDm: 0, + totalModifier: -3, + }; +} diff --git a/scripts/npc.js b/scripts/npc.js index 3e33447..90e50e7 100644 --- a/scripts/npc.js +++ b/scripts/npc.js @@ -1,5 +1,6 @@ import { NpcDialog } from './NpcDialog.js'; import { syncNpcRollTables } from './npcRollTableSync.js'; +import './mgt2eMigration.js'; const MODULE_ID = 'mgt2-compendium-amiral-denisov'; diff --git a/scripts/npcHelper.js b/scripts/npcHelper.js index 11908fd..661db4a 100644 --- a/scripts/npcHelper.js +++ b/scripts/npcHelper.js @@ -10,31 +10,40 @@ import { RANDOM_OPPOSITION_TABLE, ENCOUNTER_CONTEXTS, } from './data/npcTables.js'; +import { localizeSkill, setSkillLevel } from './mgt2eSkills.js'; const MODULE_ID = 'mgt2-compendium-amiral-denisov'; -const SKILL_PACK_ID = `${MODULE_ID}.competences`; const CORE_CHARACTERISTICS = ['strength', 'dexterity', 'endurance', 'intellect', 'education', 'social']; +const MGT2E_CHARACTERISTICS = { + strength: 'STR', + dexterity: 'DEX', + endurance: 'END', + intellect: 'INT', + education: 'EDU', + social: 'SOC', +}; const DEFAULT_PRIORITIES = { 'Non-combattant': ['intellect', 'education', 'social', 'dexterity', 'endurance', 'strength'], 'Combattant': ['dexterity', 'endurance', 'strength', 'education', 'intellect', 'social'], }; +let mgt2eBaseActorSystemPromise = null; const ROLE_HINTS = [ - { match: /médecin/i, skills: ['Médecine', 'Science'], priorities: ['education', 'intellect', 'dexterity'] }, - { match: /scientifique|chercheur/i, skills: ['Science', 'Électronique'], priorities: ['intellect', 'education', 'dexterity'] }, - { match: /diplomate|ambassadeur|attaché culturel/i, skills: ['Diplomatie', 'Langage', 'Persuader'], priorities: ['social', 'education', 'intellect'] }, - { match: /marchand|franc-marchand|courtier/i, skills: ['Courtier', 'Administration', 'Persuader'], priorities: ['social', 'education', 'intellect'] }, - { match: /mercenaire|seigneur de guerre/i, skills: ['Combat Arme', 'Mêlée', 'Reconnaissance'], priorities: ['dexterity', 'endurance', 'strength'] }, - { match: /officier de marine|amiral|capitaine/i, skills: ['Leadership', 'Marin', 'Tactique'], priorities: ['education', 'social', 'intellect'] }, - { match: /explorateur|éclaireur/i, skills: ['Reconnaissance', 'Survie', 'Navigation'], priorities: ['education', 'dexterity', 'endurance'] }, - { match: /interprète|xéno/i, skills: ['Langage', 'Diplomatie', 'Science'], priorities: ['education', 'intellect', 'social'] }, - { match: /cadre de corpo|agent corpo|administrateur|gouverneur|homme d'état|noble/i, skills: ['Administration', 'Leadership', 'Diplomatie'], priorities: ['social', 'education', 'intellect'] }, - { match: /journaliste|enquêteur|inspecteur|agent impérial/i, skills: ['Enquêter', 'Persuader', 'Combat Arme'], priorities: ['intellect', 'education', 'dexterity'] }, - { match: /conspirateur|criminel|contrebandier/i, skills: ['Duperie', 'Sens de la rue', 'Combat Arme'], priorities: ['social', 'dexterity', 'intellect'] }, - { match: /chef religieux|cultiste/i, skills: ['Persuader', 'Leadership', 'Langage'], priorities: ['social', 'education', 'intellect'] }, - { match: /joueur|playboy/i, skills: ['Flambeur', 'Mondanités', 'Persuader'], priorities: ['social', 'intellect', 'education'] }, - { match: /intelligence artificielle/i, skills: ['Électronique', 'Science', 'Profession'], priorities: ['intellect', 'education', 'social'] }, + { match: /médecin/i, skills: ['medic', 'science'], priorities: ['education', 'intellect', 'dexterity'] }, + { match: /scientifique|chercheur/i, skills: ['science', 'electronics'], priorities: ['intellect', 'education', 'dexterity'] }, + { match: /diplomate|ambassadeur|attaché culturel/i, skills: ['diplomat', 'language', 'persuade'], priorities: ['social', 'education', 'intellect'] }, + { match: /marchand|franc-marchand|courtier/i, skills: ['broker', 'admin', 'persuade'], priorities: ['social', 'education', 'intellect'] }, + { match: /mercenaire|seigneur de guerre/i, skills: ['guncombat', 'melee', 'recon'], priorities: ['dexterity', 'endurance', 'strength'] }, + { match: /officier de marine|amiral|capitaine/i, skills: ['leadership', 'seafarer', 'tactics'], priorities: ['education', 'social', 'intellect'] }, + { match: /explorateur|éclaireur/i, skills: ['recon', 'survival', 'navigation'], priorities: ['education', 'dexterity', 'endurance'] }, + { match: /interprète|xéno/i, skills: ['language', 'diplomat', 'science'], priorities: ['education', 'intellect', 'social'] }, + { match: /cadre de corpo|agent corpo|administrateur|gouverneur|homme d'état|noble/i, skills: ['admin', 'leadership', 'diplomat'], priorities: ['social', 'education', 'intellect'] }, + { match: /journaliste|enquêteur|inspecteur|agent impérial/i, skills: ['investigate', 'persuade', 'guncombat'], priorities: ['intellect', 'education', 'dexterity'] }, + { match: /conspirateur|criminel|contrebandier/i, skills: ['deception', 'streetwise', 'guncombat'], priorities: ['social', 'dexterity', 'intellect'] }, + { match: /chef religieux|cultiste/i, skills: ['persuade', 'leadership', 'language'], priorities: ['social', 'education', 'intellect'] }, + { match: /joueur|playboy/i, skills: ['gambler', 'carouse', 'persuade'], priorities: ['social', 'intellect', 'education'] }, + { match: /intelligence artificielle/i, skills: ['electronics', 'science', 'profession'], priorities: ['intellect', 'education', 'social'] }, ]; function getD66Entry(entries, total) { @@ -126,9 +135,9 @@ async function generateExperience(mode = 'random') { } function findRoleHint(roleName, category) { - const hint = ROLE_HINTS.find((entry) => entry.match.test(roleName)); + const hint = ROLE_HINTS.find((entry) => entry.match.test(roleName)); return hint ?? { - skills: ['Profession'], + skills: ['profession'], priorities: DEFAULT_PRIORITIES[category] ?? DEFAULT_PRIORITIES['Non-combattant'], }; } @@ -158,41 +167,6 @@ function buildCharacteristicValues(result) { }; } -function buildCharacteristicsData(values) { - const allKeys = { - strength: { showMax: true }, - dexterity: { showMax: true }, - endurance: { showMax: true }, - intellect: { showMax: false }, - education: { showMax: false }, - social: { showMax: false }, - morale: { showMax: false, value: 0 }, - luck: { showMax: false, value: 0 }, - sanity: { showMax: false, value: 0 }, - charm: { showMax: false, value: 0 }, - psionic: { showMax: false, value: 0 }, - other: { showMax: false, value: 0 }, - }; - - return Object.fromEntries(Object.entries(allKeys).map(([key, config]) => { - const value = values[key] ?? config.value ?? 0; - return [key, { - value, - max: value, - dm: calculateDm(value), - show: true, - showMax: config.showMax, - }]; - })); -} - -async function getSkillPackIndex() { - const pack = game.packs.get(SKILL_PACK_ID); - if (!pack) throw new Error(`Pack de compétences introuvable : ${SKILL_PACK_ID}`); - const index = await pack.getIndex(); - return { pack, index }; -} - function mergeSkillLevels(profileSkills, roleSkills, baseLevel) { const levels = new Map(); @@ -202,36 +176,69 @@ function mergeSkillLevels(profileSkills, roleSkills, baseLevel) { return levels; } -async function buildSkillItems(result) { - const { pack, index } = await getSkillPackIndex(); - const { hint } = buildCharacteristicValues(result); - const skillLevels = mergeSkillLevels(result.experience.profile.skills, hint.skills, result.experience.profile.skillLevel); - const items = []; +function buildMgt2eCharacteristics(existingCharacteristics = {}, values) { + const characteristics = foundry.utils.deepClone(existingCharacteristics); - for (const [skillName, level] of skillLevels.entries()) { - const entry = index.contents.find((item) => item.name === skillName); - if (!entry) continue; - const document = await pack.getDocument(entry._id); - const data = document.toObject(); - delete data._id; - delete data.folder; - data.system.level = level; - items.push(data); + for (const [legacyKey, targetKey] of Object.entries(MGT2E_CHARACTERISTICS)) { + const value = values[legacyKey] ?? 7; + characteristics[targetKey] = foundry.utils.mergeObject(characteristics[targetKey] ?? {}, { + value, + current: value, + dm: calculateDm(value), + show: true, + default: false, + }); } - return items; + return characteristics; +} + +function buildMgt2eSkills(existingSkills = {}, result) { + const skills = foundry.utils.deepClone(existingSkills); + const { hint } = buildCharacteristicValues(result); + const skillLevels = mergeSkillLevels(result.experience.profile.skills, hint.skills, result.experience.profile.skillLevel); + + for (const [skillFqn, level] of skillLevels.entries()) { + setSkillLevel(skills, skillFqn, level); + } + + return skills; } function buildActorDescription(result, actorName, ucp) { + const { hint } = buildCharacteristicValues(result); + const notableSkills = mergeSkillLevels(result.experience.profile.skills, hint.skills, result.experience.profile.skillLevel); return [ `${actorName} — ${result.role.entry.text}`, `Relation : ${result.relation.label}`, `Particularité : ${result.quirk.entry.text}`, `Expérience : ${result.experience.profile.label}`, - `UCP : ${ucp}`, + `UPP : ${ucp}`, + `Compétences clés : ${Array.from(notableSkills.keys()).map((skill) => localizeSkill(skill)).join(', ')}`, ].join('\n'); } +async function getMgt2eBaseActorSystem() { + if (!mgt2eBaseActorSystemPromise) { + mgt2eBaseActorSystemPromise = (async () => { + const pack = game.packs.get('mgt2e.base-actors'); + if (!pack) return null; + + const index = Array.from(await pack.getIndex({ fields: ['name', 'type'] })); + const entry = index.find((document) => document.name === 'DEFAULT TRAVELLER') + ?? index.find((document) => document.type === 'traveller') + ?? index[0]; + if (!entry?._id) return null; + + const document = await pack.getDocument(entry._id); + return document?.toObject()?.system ?? null; + })(); + } + + const system = await mgt2eBaseActorSystemPromise; + return system ? foundry.utils.deepClone(system) : null; +} + export function formatSigned(value) { return value >= 0 ? `+${value}` : `${value}`; } @@ -254,32 +261,27 @@ export async function generateQuickNpc(params = {}) { } export async function createNpcActor(result, options = {}) { - const actorName = options.name?.trim() || `PNJ — ${result.role.entry.text}`; + const requestedName = options.name?.trim(); const { values, ucp } = buildCharacteristicValues(result); - const items = await buildSkillItems(result); - const actor = await Actor.create({ - name: actorName, - type: 'character', - img: 'icons/svg/mystery-man.svg', + const baseActorSystem = game.system?.id === 'mgt2e' ? await getMgt2eBaseActorSystem() : null; + const npcData = { + name: requestedName || `PNJ — ${result.role.entry.text}`, + type: 'npc', + img: 'systems/mgt2e/icons/cargo/passenger-middle.svg', system: { - life: { - value: values.endurance, - max: values.endurance, - }, - personal: { - title: result.role.entry.text, - species: '', - speciesText: {}, - age: '', - ucp, - traits: [ - { name: result.relation.label }, - { name: result.quirk.entry.text }, - ], - }, - characteristics: buildCharacteristicsData(values), - biography: buildActorDescription(result, actorName, ucp), - notes: buildActorDescription(result, actorName, ucp), + settings: foundry.utils.mergeObject(foundry.utils.deepClone(baseActorSystem?.settings ?? {}), { + hideUntrained: true, + lockCharacteristics: true, + }), + sophont: foundry.utils.mergeObject(foundry.utils.deepClone(baseActorSystem?.sophont ?? {}), { + age: 18, + homeworld: '', + profession: result.role.entry.text, + }), + characteristics: foundry.utils.deepClone(baseActorSystem?.characteristics ?? {}), + hits: foundry.utils.deepClone(baseActorSystem?.hits ?? {}), + skills: foundry.utils.deepClone(baseActorSystem?.skills ?? {}), + description: '', }, flags: { [MODULE_ID]: { @@ -288,12 +290,22 @@ export async function createNpcActor(result, options = {}) { role: result.role.entry.text, quirk: result.quirk.entry.text, experience: result.experience.profile.label, + upp: ucp, }, }, }, - }, { renderSheet: false }); + }; + + npcData.name = requestedName || npcData.name || `PNJ — ${result.role.entry.text}`; + npcData.system.sophont = foundry.utils.mergeObject(npcData.system.sophont ?? {}, { + profession: result.role.entry.text, + }); + npcData.system.characteristics = buildMgt2eCharacteristics(npcData.system.characteristics, values); + npcData.system.skills = buildMgt2eSkills(npcData.system.skills, result); + npcData.system.description = buildActorDescription(result, npcData.name, ucp).replace(/\n/g, '
'); + + const actor = await Actor.create(npcData, { renderSheet: false }); - if (items.length) await actor.createEmbeddedDocuments('Item', items); if (options.openSheet !== false) actor.sheet?.render(true); return actor; } diff --git a/scripts/npcRollTableSync.js b/scripts/npcRollTableSync.js index 76d7d29..a14bce5 100644 --- a/scripts/npcRollTableSync.js +++ b/scripts/npcRollTableSync.js @@ -2,7 +2,7 @@ import { NPC_ROLLTABLE_DEFINITIONS } from './data/npcTables.js'; const MODULE_ID = 'mgt2-compendium-amiral-denisov'; const PACK_ID = `${MODULE_ID}.tables-pnj`; -const WORLD_FOLDER_NAME = 'MGT2 — Tables PNJ'; +const WORLD_FOLDER_NAME = 'MgT2e — Tables PNJ'; const ROLLTABLES_VERSION = 1; function entryText(entry) { diff --git a/styles/commerce.css b/styles/commerce.css index 5b0e5e2..1a56f7f 100644 --- a/styles/commerce.css +++ b/styles/commerce.css @@ -165,6 +165,63 @@ letter-spacing: 0.04em; } +.actor-skill-helper { + margin-bottom: 10px; + padding: 8px 10px; + border: 1px dashed #c9a227; + border-radius: 4px; + background: rgba(255, 255, 255, 0.55); +} + +.actor-skill-summary, +.actor-skill-empty { + margin: 0; + font-size: 0.8em; + color: #444; + line-height: 1.4; +} + +.actor-skill-actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin-top: 8px; +} + +.actor-skill-pill { + display: inline-flex; + align-items: center; + gap: 4px; + margin-left: 6px; + padding: 1px 6px; + border-radius: 999px; + background: rgba(44, 44, 62, 0.08); + color: #2c2c3e; + font-size: 0.95em; + white-space: nowrap; +} + +.btn-actor-skill { + width: fit-content !important; + flex: 0 0 auto !important; + height: 28px; + padding: 0 11px; + border: 1px solid #7a5c00; + border-radius: 3px; + background: #fff9eb; + color: #7a5c00; + font-size: 0.8em; + font-weight: bold; + cursor: pointer; + display: inline-flex; + align-items: center; + gap: 5px; +} + +.btn-actor-skill:hover { + background: #f5ecd0; +} + /* --- Bouton de calcul ------------------------------------------------------- */ .form-footer { diff --git a/templates/commerce-dialog.hbs b/templates/commerce-dialog.hbs index 8e64b2e..87d64c7 100644 --- a/templates/commerce-dialog.hbs +++ b/templates/commerce-dialog.hbs @@ -92,6 +92,28 @@
Modificateurs des Voyageurs +
+ {{#if activeActor}} +

+ + {{activeActor.name}} — {{activeActor.sourceLabel}} + {{activeActor.carouse.label}} {{activeActor.carouse.value}} + {{activeActor.broker.label}} {{activeActor.broker.value}} + {{activeActor.streetwise.label}} {{activeActor.streetwise.value}} + {{activeActor.steward.label}} {{activeActor.steward.value}} +

+
+ + +
+ {{else}} +

Sélectionnez un token ou assignez un personnage pour exploiter automatiquement les compétences mgt2e.

+ {{/if}} +