Mise à jour des compendiums et scripts pour v14

- Mise à jour des manifestes et logs des packs
- Modification des scripts NPC (NpcDialog.js, travellerNpcGenerator.js, npc.js)
- Mise à jour de la description du module pour refléter l'onglet 'PNJ Détaillé'

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-05-28 00:47:11 +02:00
parent 76870c27bf
commit 9453c15d58
87 changed files with 581 additions and 390 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
"verified": "13", "verified": "13",
"maximum": "14" "maximum": "14"
}, },
"description": "Module de compendium et d'outils Mongoose Traveller 2e pour FoundryVTT écrit par JdR.Ninja.\nInclut les commandes /commerce, /pnj, /rencontre, /mission et /gennpc pour automatiser le commerce, les PNJ rapides, les rencontres, les contrats aléatoires et la génération de PNJ Traveller selon les règles du générateur officiel, en s'appuyant sur les compétences natives des fiches.", "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. La fenêtre /pnj inclut un onglet 'PNJ Détaillé' pour la génération de PNJ Traveller selon les règles du générateur officiel, en s'appuyant sur les compétences natives des fiches.",
"esmodules": [ "esmodules": [
"scripts/commerce.js", "scripts/commerce.js",
"scripts/npc.js", "scripts/npc.js",
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000075 MANIFEST-000084
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.659414 7fdf5b7fe6c0 Recovering log #73 2026/05/27-23:11:58.414164 7f3e6f7fe6c0 Recovering log #82
2026/05/24-16:50:54.670747 7fdf5b7fe6c0 Delete type=3 #71 2026/05/27-23:11:58.424222 7f3e6f7fe6c0 Delete type=3 #80
2026/05/24-16:50:54.670783 7fdf5b7fe6c0 Delete type=0 #73 2026/05/27-23:11:58.424274 7f3e6f7fe6c0 Delete type=0 #82
2026/05/24-17:30:55.121088 7fdf5affd6c0 Level-0 table #78: started
2026/05/24-17:30:55.125303 7fdf5affd6c0 Level-0 table #78: 9864 bytes OK
2026/05/24-17:30:55.131248 7fdf5affd6c0 Delete type=0 #76
2026/05/24-17:30:55.131416 7fdf5affd6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.131452 7fdf5affd6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at '!items!yoIqL0RQEnzNVJB6' @ 161 : 1
2026/05/24-17:30:55.131457 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.134712 7fdf5affd6c0 Generated table #79@1: 29 keys, 10438 bytes
2026/05/24-17:30:55.134726 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 10438 bytes
2026/05/24-17:30:55.141487 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.141544 7fdf5affd6c0 Delete type=2 #70
2026/05/24-17:30:55.141639 7fdf5affd6c0 Delete type=2 #78
2026/05/24-17:30:55.187693 7fdf5affd6c0 Manual compaction at level-1 from '!items!yoIqL0RQEnzNVJB6' @ 161 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:27:59.998100 7f5a46ffd6c0 Recovering log #68 2026/05/27-14:31:25.639035 7f3e6f7fe6c0 Recovering log #77
2026/05/18-20:28:00.055719 7f5a46ffd6c0 Delete type=3 #66 2026/05/27-14:31:25.648169 7f3e6f7fe6c0 Delete type=3 #75
2026/05/18-20:28:00.055824 7f5a46ffd6c0 Delete type=0 #68 2026/05/27-14:31:25.648196 7f3e6f7fe6c0 Delete type=0 #77
2026/05/18-20:29:47.499128 7f5a467fc6c0 Level-0 table #74: started 2026/05/27-14:33:21.786747 7f3e6effd6c0 Level-0 table #83: started
2026/05/18-20:29:47.499199 7f5a467fc6c0 Level-0 table #74: 0 bytes OK 2026/05/27-14:33:21.786766 7f3e6effd6c0 Level-0 table #83: 0 bytes OK
2026/05/18-20:29:47.505640 7f5a467fc6c0 Delete type=0 #72 2026/05/27-14:33:21.793932 7f3e6effd6c0 Delete type=0 #81
2026/05/18-20:29:47.505916 7f5a467fc6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.800554 7f3e6effd6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.505957 7f5a467fc6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.800579 7f3e6effd6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000174 MANIFEST-000183
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.546518 7fdf5b7fe6c0 Recovering log #172 2026/05/27-23:11:58.290859 7f3e6f7fe6c0 Recovering log #181
2026/05/24-16:50:54.556572 7fdf5b7fe6c0 Delete type=3 #170 2026/05/27-23:11:58.307573 7f3e6f7fe6c0 Delete type=3 #179
2026/05/24-16:50:54.556614 7fdf5b7fe6c0 Delete type=0 #172 2026/05/27-23:11:58.307626 7f3e6f7fe6c0 Delete type=0 #181
2026/05/24-17:30:54.977322 7fdf5affd6c0 Level-0 table #177: started
2026/05/24-17:30:54.980526 7fdf5affd6c0 Level-0 table #177: 3210 bytes OK
2026/05/24-17:30:54.986935 7fdf5affd6c0 Delete type=0 #175
2026/05/24-17:30:55.016293 7fdf5affd6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.016335 7fdf5affd6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at '!items!wpBopoosZiWXjlKD' @ 78 : 1
2026/05/24-17:30:55.016340 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.019483 7fdf5affd6c0 Generated table #178@1: 6 keys, 3210 bytes
2026/05/24-17:30:55.019496 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 3210 bytes
2026/05/24-17:30:55.026070 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.026126 7fdf5affd6c0 Delete type=2 #169
2026/05/24-17:30:55.026250 7fdf5affd6c0 Delete type=2 #177
2026/05/24-17:30:55.052180 7fdf5affd6c0 Manual compaction at level-1 from '!items!wpBopoosZiWXjlKD' @ 78 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:27:59.309876 7f5a477fe6c0 Recovering log #167 2026/05/27-14:31:25.531736 7f3ebd7ff6c0 Recovering log #176
2026/05/18-20:27:59.371762 7f5a477fe6c0 Delete type=3 #165 2026/05/27-14:31:25.541455 7f3ebd7ff6c0 Delete type=3 #174
2026/05/18-20:27:59.371874 7f5a477fe6c0 Delete type=0 #167 2026/05/27-14:31:25.541507 7f3ebd7ff6c0 Delete type=0 #176
2026/05/18-20:29:47.416279 7f5a467fc6c0 Level-0 table #173: started 2026/05/27-14:33:21.722465 7f3e6effd6c0 Level-0 table #182: started
2026/05/18-20:29:47.416343 7f5a467fc6c0 Level-0 table #173: 0 bytes OK 2026/05/27-14:33:21.722495 7f3e6effd6c0 Level-0 table #182: 0 bytes OK
2026/05/18-20:29:47.425598 7f5a467fc6c0 Delete type=0 #171 2026/05/27-14:33:21.728923 7f3e6effd6c0 Delete type=0 #180
2026/05/18-20:29:47.425873 7f5a467fc6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.735721 7f3e6effd6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.425920 7f5a467fc6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.735741 7f3e6effd6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000058 MANIFEST-000067
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.686699 7fdf5bfff6c0 Recovering log #56 2026/05/27-23:11:58.442577 7f3e6f7fe6c0 Recovering log #65
2026/05/24-16:50:54.695982 7fdf5bfff6c0 Delete type=3 #54 2026/05/27-23:11:58.452097 7f3e6f7fe6c0 Delete type=3 #63
2026/05/24-16:50:54.696016 7fdf5bfff6c0 Delete type=0 #56 2026/05/27-23:11:58.452144 7f3e6f7fe6c0 Delete type=0 #65
2026/05/24-17:30:55.150957 7fdf5affd6c0 Level-0 table #61: started
2026/05/24-17:30:55.154345 7fdf5affd6c0 Level-0 table #61: 4273 bytes OK
2026/05/24-17:30:55.160772 7fdf5affd6c0 Delete type=0 #59
2026/05/24-17:30:55.187706 7fdf5affd6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.210353 7fdf5affd6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at '!items!vJInnoigCTJzuY2S' @ 126 : 1
2026/05/24-17:30:55.210359 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.213753 7fdf5affd6c0 Generated table #62@1: 16 keys, 4273 bytes
2026/05/24-17:30:55.213776 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 4273 bytes
2026/05/24-17:30:55.220661 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.220738 7fdf5affd6c0 Delete type=2 #53
2026/05/24-17:30:55.220857 7fdf5affd6c0 Delete type=2 #61
2026/05/24-17:30:55.237555 7fdf5affd6c0 Manual compaction at level-1 from '!items!vJInnoigCTJzuY2S' @ 126 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:28:00.170623 7f5a477fe6c0 Recovering log #51 2026/05/27-14:31:25.663213 7f3e6f7fe6c0 Recovering log #60
2026/05/18-20:28:00.231017 7f5a477fe6c0 Delete type=3 #49 2026/05/27-14:31:25.672282 7f3e6f7fe6c0 Delete type=3 #58
2026/05/18-20:28:00.231120 7f5a477fe6c0 Delete type=0 #51 2026/05/27-14:31:25.672315 7f3e6f7fe6c0 Delete type=0 #60
2026/05/18-20:29:47.515216 7f5a467fc6c0 Level-0 table #57: started 2026/05/27-14:33:21.794049 7f3e6effd6c0 Level-0 table #66: started
2026/05/18-20:29:47.515280 7f5a467fc6c0 Level-0 table #57: 0 bytes OK 2026/05/27-14:33:21.794078 7f3e6effd6c0 Level-0 table #66: 0 bytes OK
2026/05/18-20:29:47.522604 7f5a467fc6c0 Delete type=0 #55 2026/05/27-14:33:21.800426 7f3e6effd6c0 Delete type=0 #64
2026/05/18-20:29:47.522854 7f5a467fc6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.808266 7f3e6effd6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.522882 7f5a467fc6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.831733 7f3e6effd6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000177 MANIFEST-000186
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.559278 7fdf5bfff6c0 Recovering log #175 2026/05/27-23:11:58.309946 7f3ebcffe6c0 Recovering log #184
2026/05/24-16:50:54.569235 7fdf5bfff6c0 Delete type=3 #173 2026/05/27-23:11:58.320486 7f3ebcffe6c0 Delete type=3 #182
2026/05/24-16:50:54.569273 7fdf5bfff6c0 Delete type=0 #175 2026/05/27-23:11:58.320525 7f3ebcffe6c0 Delete type=0 #184
2026/05/24-17:30:54.996524 7fdf5affd6c0 Level-0 table #180: started
2026/05/24-17:30:55.000122 7fdf5affd6c0 Level-0 table #180: 30255 bytes OK
2026/05/24-17:30:55.006363 7fdf5affd6c0 Delete type=0 #178
2026/05/24-17:30:55.016315 7fdf5affd6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.041863 7fdf5affd6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at '!items!yqjKyTCgpclCuHyK' @ 544 : 1
2026/05/24-17:30:55.041874 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.045796 7fdf5affd6c0 Generated table #181@1: 39 keys, 30255 bytes
2026/05/24-17:30:55.045823 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 30255 bytes
2026/05/24-17:30:55.051904 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.051997 7fdf5affd6c0 Delete type=2 #172
2026/05/24-17:30:55.052110 7fdf5affd6c0 Delete type=2 #180
2026/05/24-17:30:55.062783 7fdf5affd6c0 Manual compaction at level-1 from '!items!yqjKyTCgpclCuHyK' @ 544 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:27:59.380990 7f5a47fff6c0 Recovering log #170 2026/05/27-14:31:25.544106 7f3ebd7ff6c0 Recovering log #179
2026/05/18-20:27:59.439837 7f5a47fff6c0 Delete type=3 #168 2026/05/27-14:31:25.554048 7f3ebd7ff6c0 Delete type=3 #177
2026/05/18-20:27:59.439975 7f5a47fff6c0 Delete type=0 #170 2026/05/27-14:31:25.554071 7f3ebd7ff6c0 Delete type=0 #179
2026/05/18-20:29:47.426912 7f5a467fc6c0 Level-0 table #176: started 2026/05/27-14:33:21.729016 7f3e6effd6c0 Level-0 table #185: started
2026/05/18-20:29:47.426974 7f5a467fc6c0 Level-0 table #176: 0 bytes OK 2026/05/27-14:33:21.729040 7f3e6effd6c0 Level-0 table #185: 0 bytes OK
2026/05/18-20:29:47.437378 7f5a467fc6c0 Delete type=0 #174 2026/05/27-14:33:21.735577 7f3e6effd6c0 Delete type=0 #183
2026/05/18-20:29:47.437633 7f5a467fc6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.735798 7f3e6effd6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.437658 7f5a467fc6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.735816 7f3e6effd6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000112 MANIFEST-000120
+3 -7
View File
@@ -1,7 +1,3 @@
2026/05/24-16:50:54.623242 7fdf5bfff6c0 Recovering log #110 2026/05/27-23:11:58.375862 7f3e6ffff6c0 Recovering log #118
2026/05/24-16:50:54.633193 7fdf5bfff6c0 Delete type=3 #108 2026/05/27-23:11:58.385912 7f3e6ffff6c0 Delete type=3 #116
2026/05/24-16:50:54.633252 7fdf5bfff6c0 Delete type=0 #110 2026/05/27-23:11:58.385947 7f3e6ffff6c0 Delete type=0 #118
2026/05/24-17:30:55.081463 7fdf5affd6c0 Level-0 table #115: started
2026/05/24-17:30:55.081487 7fdf5affd6c0 Level-0 table #115: 0 bytes OK
2026/05/24-17:30:55.087560 7fdf5affd6c0 Delete type=0 #113
2026/05/24-17:30:55.097957 7fdf5affd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2026/05/18-20:27:59.766699 7f5a47fff6c0 Recovering log #106 2026/05/27-14:31:25.604521 7f3ebd7ff6c0 Recovering log #114
2026/05/18-20:27:59.824574 7f5a47fff6c0 Delete type=3 #104 2026/05/27-14:31:25.613630 7f3ebd7ff6c0 Delete type=3 #112
2026/05/18-20:27:59.824666 7f5a47fff6c0 Delete type=0 #106 2026/05/27-14:31:25.613651 7f3ebd7ff6c0 Delete type=0 #114
2026/05/18-20:29:47.472932 7f5a467fc6c0 Level-0 table #111: started 2026/05/27-14:33:21.767043 7f3e6effd6c0 Level-0 table #119: started
2026/05/18-20:29:47.473002 7f5a467fc6c0 Level-0 table #111: 0 bytes OK 2026/05/27-14:33:21.767067 7f3e6effd6c0 Level-0 table #119: 0 bytes OK
2026/05/18-20:29:47.479740 7f5a467fc6c0 Delete type=0 #109 2026/05/27-14:33:21.773608 7f3e6effd6c0 Delete type=0 #117
2026/05/18-20:29:47.479998 7f5a467fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.780095 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000119 MANIFEST-000128
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.597446 7fdf5b7fe6c0 Recovering log #117 2026/05/27-23:11:58.349736 7f3e6ffff6c0 Recovering log #126
2026/05/24-16:50:54.607335 7fdf5b7fe6c0 Delete type=3 #115 2026/05/27-23:11:58.359183 7f3e6ffff6c0 Delete type=3 #124
2026/05/24-16:50:54.607379 7fdf5b7fe6c0 Delete type=0 #117 2026/05/27-23:11:58.359211 7f3e6ffff6c0 Delete type=0 #126
2026/05/24-17:30:55.052370 7fdf5affd6c0 Level-0 table #122: started
2026/05/24-17:30:55.056355 7fdf5affd6c0 Level-0 table #122: 20248 bytes OK
2026/05/24-17:30:55.062721 7fdf5affd6c0 Delete type=0 #120
2026/05/24-17:30:55.081449 7fdf5affd6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.087647 7fdf5affd6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at '!items!zRJfxioYBRq4iSBR' @ 258 : 1
2026/05/24-17:30:55.087653 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.091676 7fdf5affd6c0 Generated table #123@1: 42 keys, 19863 bytes
2026/05/24-17:30:55.091690 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 19863 bytes
2026/05/24-17:30:55.097740 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.097812 7fdf5affd6c0 Delete type=2 #114
2026/05/24-17:30:55.097896 7fdf5affd6c0 Delete type=2 #122
2026/05/24-17:30:55.104450 7fdf5affd6c0 Manual compaction at level-1 from '!items!zRJfxioYBRq4iSBR' @ 258 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:27:59.596317 7f5a47fff6c0 Recovering log #112 2026/05/27-14:31:25.580201 7f3ebd7ff6c0 Recovering log #121
2026/05/18-20:27:59.649784 7f5a47fff6c0 Delete type=3 #110 2026/05/27-14:31:25.589450 7f3ebd7ff6c0 Delete type=3 #119
2026/05/18-20:27:59.649914 7f5a47fff6c0 Delete type=0 #112 2026/05/27-14:31:25.589494 7f3ebd7ff6c0 Delete type=0 #121
2026/05/18-20:29:47.456954 7f5a467fc6c0 Level-0 table #118: started 2026/05/27-14:33:21.747566 7f3e6effd6c0 Level-0 table #127: started
2026/05/18-20:29:47.457019 7f5a467fc6c0 Level-0 table #118: 0 bytes OK 2026/05/27-14:33:21.747585 7f3e6effd6c0 Level-0 table #127: 0 bytes OK
2026/05/18-20:29:47.463638 7f5a467fc6c0 Delete type=0 #116 2026/05/27-14:33:21.754474 7f3e6effd6c0 Delete type=0 #125
2026/05/18-20:29:47.463868 7f5a467fc6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.760899 7f3e6effd6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.463950 7f5a467fc6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.760915 7f3e6effd6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000112 MANIFEST-000120
+3 -7
View File
@@ -1,7 +1,3 @@
2026/05/24-16:50:54.634756 7fdfa8dfe6c0 Recovering log #110 2026/05/27-23:11:58.388239 7f3e6f7fe6c0 Recovering log #118
2026/05/24-16:50:54.645375 7fdfa8dfe6c0 Delete type=3 #108 2026/05/27-23:11:58.398684 7f3e6f7fe6c0 Delete type=3 #116
2026/05/24-16:50:54.645440 7fdfa8dfe6c0 Delete type=0 #110 2026/05/27-23:11:58.398724 7f3e6f7fe6c0 Delete type=0 #118
2026/05/24-17:30:55.097965 7fdf5affd6c0 Level-0 table #115: started
2026/05/24-17:30:55.097985 7fdf5affd6c0 Level-0 table #115: 0 bytes OK
2026/05/24-17:30:55.104346 7fdf5affd6c0 Delete type=0 #113
2026/05/24-17:30:55.131378 7fdf5affd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2026/05/18-20:27:59.838862 7f5a46ffd6c0 Recovering log #106 2026/05/27-14:31:25.615623 7f3ebd7ff6c0 Recovering log #114
2026/05/18-20:27:59.893943 7f5a46ffd6c0 Delete type=3 #104 2026/05/27-14:31:25.625348 7f3ebd7ff6c0 Delete type=3 #112
2026/05/18-20:27:59.894068 7f5a46ffd6c0 Delete type=0 #106 2026/05/27-14:31:25.625369 7f3ebd7ff6c0 Delete type=0 #114
2026/05/18-20:29:47.480953 7f5a467fc6c0 Level-0 table #111: started 2026/05/27-14:33:21.761003 7f3e6effd6c0 Level-0 table #119: started
2026/05/18-20:29:47.481012 7f5a467fc6c0 Level-0 table #111: 0 bytes OK 2026/05/27-14:33:21.761022 7f3e6effd6c0 Level-0 table #119: 0 bytes OK
2026/05/18-20:29:47.487588 7f5a467fc6c0 Delete type=0 #109 2026/05/27-14:33:21.766953 7f3e6effd6c0 Delete type=0 #117
2026/05/18-20:29:47.487817 7f5a467fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.780083 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000093 MANIFEST-000101
+3 -8
View File
@@ -1,8 +1,3 @@
2026/05/24-16:50:54.647193 7fdf5b7fe6c0 Recovering log #91 2026/05/27-23:11:58.400455 7f3ebd7ff6c0 Recovering log #99
2026/05/24-16:50:54.656827 7fdf5b7fe6c0 Delete type=3 #89 2026/05/27-23:11:58.410587 7f3ebd7ff6c0 Delete type=3 #97
2026/05/24-16:50:54.656870 7fdf5b7fe6c0 Delete type=0 #91 2026/05/27-23:11:58.410645 7f3ebd7ff6c0 Delete type=0 #99
2026/05/24-17:30:55.114778 7fdf5affd6c0 Level-0 table #96: started
2026/05/24-17:30:55.114807 7fdf5affd6c0 Level-0 table #96: 0 bytes OK
2026/05/24-17:30:55.121001 7fdf5affd6c0 Delete type=0 #94
2026/05/24-17:30:55.131407 7fdf5affd6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.131437 7fdf5affd6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:27:59.909714 7f5a477fe6c0 Recovering log #87 2026/05/27-14:31:25.627132 7f3ebd7ff6c0 Recovering log #95
2026/05/18-20:27:59.963841 7f5a477fe6c0 Delete type=3 #85 2026/05/27-14:31:25.636967 7f3ebd7ff6c0 Delete type=3 #93
2026/05/18-20:27:59.963963 7f5a477fe6c0 Delete type=0 #87 2026/05/27-14:31:25.637002 7f3ebd7ff6c0 Delete type=0 #95
2026/05/18-20:29:47.488790 7f5a467fc6c0 Level-0 table #92: started 2026/05/27-14:33:21.773684 7f3e6effd6c0 Level-0 table #100: started
2026/05/18-20:29:47.488852 7f5a467fc6c0 Level-0 table #92: 0 bytes OK 2026/05/27-14:33:21.773700 7f3e6effd6c0 Level-0 table #100: 0 bytes OK
2026/05/18-20:29:47.496720 7f5a467fc6c0 Delete type=0 #90 2026/05/27-14:33:21.779958 7f3e6effd6c0 Delete type=0 #98
2026/05/18-20:29:47.497943 7f5a467fc6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.786739 7f3e6effd6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.498034 7f5a467fc6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.800533 7f3e6effd6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000119 MANIFEST-000128
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.573746 7fdf5bfff6c0 Recovering log #117 2026/05/27-23:11:58.323722 7f3e6f7fe6c0 Recovering log #126
2026/05/24-16:50:54.583876 7fdf5bfff6c0 Delete type=3 #115 2026/05/27-23:11:58.334612 7f3e6f7fe6c0 Delete type=3 #124
2026/05/24-16:50:54.583933 7fdf5bfff6c0 Delete type=0 #117 2026/05/27-23:11:58.334668 7f3e6f7fe6c0 Delete type=0 #126
2026/05/24-17:30:55.026316 7fdf5affd6c0 Level-0 table #122: started
2026/05/24-17:30:55.029368 7fdf5affd6c0 Level-0 table #122: 1988 bytes OK
2026/05/24-17:30:55.035351 7fdf5affd6c0 Delete type=0 #120
2026/05/24-17:30:55.052192 7fdf5affd6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.062793 7fdf5affd6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at '!items!yleVHgRqGoYLvzxT' @ 56 : 1
2026/05/24-17:30:55.062796 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.065855 7fdf5affd6c0 Generated table #123@1: 8 keys, 1988 bytes
2026/05/24-17:30:55.065865 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 1988 bytes
2026/05/24-17:30:55.071780 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.071820 7fdf5affd6c0 Delete type=2 #114
2026/05/24-17:30:55.071877 7fdf5affd6c0 Delete type=2 #122
2026/05/24-17:30:55.087630 7fdf5affd6c0 Manual compaction at level-1 from '!items!yleVHgRqGoYLvzxT' @ 56 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:27:59.461881 7f5a46ffd6c0 Recovering log #112 2026/05/27-14:31:25.557570 7f3ebd7ff6c0 Recovering log #121
2026/05/18-20:27:59.517849 7f5a46ffd6c0 Delete type=3 #110 2026/05/27-14:31:25.567130 7f3ebd7ff6c0 Delete type=3 #119
2026/05/18-20:27:59.517983 7f5a46ffd6c0 Delete type=0 #112 2026/05/27-14:31:25.567150 7f3ebd7ff6c0 Delete type=0 #121
2026/05/18-20:29:47.438640 7f5a467fc6c0 Level-0 table #118: started 2026/05/27-14:33:21.735841 7f3e6effd6c0 Level-0 table #127: started
2026/05/18-20:29:47.438693 7f5a467fc6c0 Level-0 table #118: 0 bytes OK 2026/05/27-14:33:21.735866 7f3e6effd6c0 Level-0 table #127: 0 bytes OK
2026/05/18-20:29:47.445247 7f5a467fc6c0 Delete type=0 #116 2026/05/27-14:33:21.741712 7f3e6effd6c0 Delete type=0 #125
2026/05/18-20:29:47.445955 7f5a467fc6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.760883 7f3e6effd6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.446012 7f5a467fc6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.760906 7f3e6effd6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000112 MANIFEST-000120
+3 -7
View File
@@ -1,7 +1,3 @@
2026/05/24-16:50:54.586100 7fdfa8dfe6c0 Recovering log #110 2026/05/27-23:11:58.337311 7f3ebcffe6c0 Recovering log #118
2026/05/24-16:50:54.595631 7fdfa8dfe6c0 Delete type=3 #108 2026/05/27-23:11:58.347349 7f3ebcffe6c0 Delete type=3 #116
2026/05/24-16:50:54.595694 7fdfa8dfe6c0 Delete type=0 #110 2026/05/27-23:11:58.347392 7f3ebcffe6c0 Delete type=0 #118
2026/05/24-17:30:55.035470 7fdf5affd6c0 Level-0 table #115: started
2026/05/24-17:30:55.035483 7fdf5affd6c0 Level-0 table #115: 0 bytes OK
2026/05/24-17:30:55.041734 7fdf5affd6c0 Delete type=0 #113
2026/05/24-17:30:55.052200 7fdf5affd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2026/05/18-20:27:59.526598 7f5a94bff6c0 Recovering log #106 2026/05/27-14:31:25.569405 7f3ebd7ff6c0 Recovering log #114
2026/05/18-20:27:59.589070 7f5a94bff6c0 Delete type=3 #104 2026/05/27-14:31:25.578632 7f3ebd7ff6c0 Delete type=3 #112
2026/05/18-20:27:59.589252 7f5a94bff6c0 Delete type=0 #106 2026/05/27-14:31:25.578657 7f3ebd7ff6c0 Delete type=0 #114
2026/05/18-20:29:47.448116 7f5a467fc6c0 Level-0 table #111: started 2026/05/27-14:33:21.741780 7f3e6effd6c0 Level-0 table #119: started
2026/05/18-20:29:47.448187 7f5a467fc6c0 Level-0 table #111: 0 bytes OK 2026/05/27-14:33:21.741799 7f3e6effd6c0 Level-0 table #119: 0 bytes OK
2026/05/18-20:29:47.455433 7f5a467fc6c0 Delete type=0 #109 2026/05/27-14:33:21.747507 7f3e6effd6c0 Delete type=0 #117
2026/05/18-20:29:47.455684 7f5a467fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.760892 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000119 MANIFEST-000128
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.610807 7fdfa95ff6c0 Recovering log #117 2026/05/27-23:11:58.362926 7f3ebd7ff6c0 Recovering log #126
2026/05/24-16:50:54.620344 7fdfa95ff6c0 Delete type=3 #115 2026/05/27-23:11:58.372894 7f3ebd7ff6c0 Delete type=3 #124
2026/05/24-16:50:54.620394 7fdfa95ff6c0 Delete type=0 #117 2026/05/27-23:11:58.372934 7f3ebd7ff6c0 Delete type=0 #126
2026/05/24-17:30:55.071908 7fdf5affd6c0 Level-0 table #122: started
2026/05/24-17:30:55.075519 7fdf5affd6c0 Level-0 table #122: 5396 bytes OK
2026/05/24-17:30:55.081331 7fdf5affd6c0 Delete type=0 #120
2026/05/24-17:30:55.097948 7fdf5affd6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.104470 7fdf5affd6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at '!items!yFvuDyV00NdojxGt' @ 93 : 1
2026/05/24-17:30:55.104477 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.108502 7fdf5affd6c0 Generated table #123@1: 15 keys, 5574 bytes
2026/05/24-17:30:55.108520 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 5574 bytes
2026/05/24-17:30:55.114469 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.114575 7fdf5affd6c0 Delete type=2 #114
2026/05/24-17:30:55.114702 7fdf5affd6c0 Delete type=2 #122
2026/05/24-17:30:55.131396 7fdf5affd6c0 Manual compaction at level-1 from '!items!yFvuDyV00NdojxGt' @ 93 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:27:59.682456 7f5a46ffd6c0 Recovering log #112 2026/05/27-14:31:25.591969 7f3ebd7ff6c0 Recovering log #121
2026/05/18-20:27:59.750017 7f5a46ffd6c0 Delete type=3 #110 2026/05/27-14:31:25.601963 7f3ebd7ff6c0 Delete type=3 #119
2026/05/18-20:27:59.750123 7f5a46ffd6c0 Delete type=0 #112 2026/05/27-14:31:25.601983 7f3ebd7ff6c0 Delete type=0 #121
2026/05/18-20:29:47.464929 7f5a467fc6c0 Level-0 table #118: started 2026/05/27-14:33:21.754559 7f3e6effd6c0 Level-0 table #127: started
2026/05/18-20:29:47.465002 7f5a467fc6c0 Level-0 table #118: 0 bytes OK 2026/05/27-14:33:21.754583 7f3e6effd6c0 Level-0 table #127: 0 bytes OK
2026/05/18-20:29:47.471758 7f5a467fc6c0 Delete type=0 #116 2026/05/27-14:33:21.760810 7f3e6effd6c0 Delete type=0 #125
2026/05/18-20:29:47.472004 7f5a467fc6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.760994 7f3e6effd6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.472035 7f5a467fc6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.773676 7f3e6effd6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000021 MANIFEST-000048
+48 -50
View File
@@ -1,50 +1,48 @@
2026/05/24-16:50:54.697724 7fdfa8dfe6c0 Recovering log #18 2026/05/27-23:11:58.454344 7f3ebcffe6c0 Recovering log #44
2026/05/24-16:50:54.707598 7fdfa8dfe6c0 Delete type=3 #16 2026/05/27-23:11:58.463285 7f3ebcffe6c0 Delete type=3 #40
2026/05/24-16:50:54.707634 7fdfa8dfe6c0 Delete type=0 #18 2026/05/27-23:11:58.463300 7f3ebcffe6c0 Delete type=0 #44
2026/05/24-17:00:32.390913 7fdf5affd6c0 Level-0 table #24: started 2026/05/27-23:37:44.587645 7f3e6effd6c0 Level-0 table #51: started
2026/05/24-17:00:32.409568 7fdf5affd6c0 Level-0 table #24: 1225651 bytes OK 2026/05/27-23:37:44.605872 7f3e6effd6c0 Level-0 table #51: 1343154 bytes OK
2026/05/24-17:00:32.416341 7fdf5affd6c0 Delete type=0 #22 2026/05/27-23:37:44.612030 7f3e6effd6c0 Delete type=0 #49
2026/05/24-17:03:56.805332 7fdf5affd6c0 Level-0 table #26: started 2026/05/28-00:04:39.168329 7f3e6effd6c0 Level-0 table #53: started
2026/05/24-17:03:56.824851 7fdf5affd6c0 Level-0 table #26: 1099794 bytes OK 2026/05/28-00:04:39.185209 7f3e6effd6c0 Level-0 table #53: 1393674 bytes OK
2026/05/24-17:03:56.831981 7fdf5affd6c0 Delete type=0 #23 2026/05/28-00:04:39.191603 7f3e6effd6c0 Delete type=0 #50
2026/05/24-17:12:00.516549 7fdf5affd6c0 Level-0 table #28: started 2026/05/28-00:18:55.273857 7f3e6effd6c0 Level-0 table #55: started
2026/05/24-17:12:00.550743 7fdf5affd6c0 Level-0 table #28: 1268131 bytes OK 2026/05/28-00:18:55.294346 7f3e6effd6c0 Level-0 table #55: 1451564 bytes OK
2026/05/24-17:12:00.582730 7fdf5affd6c0 Delete type=0 #25 2026/05/28-00:18:55.300308 7f3e6effd6c0 Delete type=0 #52
2026/05/24-17:16:09.186372 7fdf5affd6c0 Level-0 table #30: started 2026/05/28-00:20:15.021651 7f3e6effd6c0 Level-0 table #57: started
2026/05/24-17:16:09.219830 7fdf5affd6c0 Level-0 table #30: 1432074 bytes OK 2026/05/28-00:20:15.040525 7f3e6effd6c0 Level-0 table #57: 1496314 bytes OK
2026/05/24-17:16:09.258561 7fdf5affd6c0 Delete type=0 #27 2026/05/28-00:20:15.046886 7f3e6effd6c0 Delete type=0 #54
2026/05/24-17:18:30.349891 7fdf5affd6c0 Level-0 table #32: started 2026/05/28-00:20:43.720521 7f3e6effd6c0 Level-0 table #59: started
2026/05/24-17:18:30.379065 7fdf5affd6c0 Level-0 table #32: 1608171 bytes OK 2026/05/28-00:20:43.742455 7f3e6effd6c0 Level-0 table #59: 1546947 bytes OK
2026/05/24-17:18:30.388404 7fdf5affd6c0 Delete type=0 #29 2026/05/28-00:20:43.748835 7f3e6effd6c0 Delete type=0 #56
2026/05/24-17:18:30.388776 7fdf5affd6c0 Compacting 4@0 + 1@1 files 2026/05/28-00:20:43.749387 7f3e6effd6c0 Compacting 4@0 + 1@1 files
2026/05/24-17:18:30.411581 7fdf5affd6c0 Generated table #33@0: 6650 keys, 986248 bytes 2026/05/28-00:20:43.771709 7f3e6effd6c0 Generated table #60@0: 10302 keys, 1546947 bytes
2026/05/24-17:18:30.411611 7fdf5affd6c0 Compacted 4@0 + 1@1 files => 986248 bytes 2026/05/28-00:20:43.771721 7f3e6effd6c0 Compacted 4@0 + 1@1 files => 1546947 bytes
2026/05/24-17:18:30.420963 7fdf5affd6c0 compacted to: files[ 0 1 1 0 0 0 0 ] 2026/05/28-00:20:43.777946 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ]
2026/05/24-17:18:30.421191 7fdf5affd6c0 Delete type=2 #24 2026/05/28-00:20:43.778171 7f3e6effd6c0 Delete type=2 #51
2026/05/24-17:18:30.421480 7fdf5affd6c0 Delete type=2 #26 2026/05/28-00:20:43.778444 7f3e6effd6c0 Delete type=2 #53
2026/05/24-17:18:30.421601 7fdf5affd6c0 Delete type=2 #28 2026/05/28-00:20:43.778777 7f3e6effd6c0 Delete type=2 #55
2026/05/24-17:18:30.421786 7fdf5affd6c0 Delete type=2 #30 2026/05/28-00:20:43.778977 7f3e6effd6c0 Delete type=2 #57
2026/05/24-17:18:30.422133 7fdf5affd6c0 Delete type=2 #32 2026/05/28-00:20:43.779160 7f3e6effd6c0 Delete type=2 #59
2026/05/24-17:21:12.979159 7fdf5affd6c0 Level-0 table #35: started 2026/05/28-00:21:51.457842 7f3e6effd6c0 Level-0 table #62: started
2026/05/24-17:21:13.003011 7fdf5affd6c0 Level-0 table #35: 1764850 bytes OK 2026/05/28-00:21:51.479532 7f3e6effd6c0 Level-0 table #62: 1604425 bytes OK
2026/05/24-17:21:13.009270 7fdf5affd6c0 Delete type=0 #31 2026/05/28-00:21:51.485724 7f3e6effd6c0 Delete type=0 #58
2026/05/24-17:30:55.160858 7fdf5affd6c0 Level-0 table #37: started 2026/05/28-00:30:27.802783 7f3e6effd6c0 Level-0 table #64: started
2026/05/24-17:30:55.180790 7fdf5affd6c0 Level-0 table #37: 1929143 bytes OK 2026/05/28-00:30:27.823947 7f3e6effd6c0 Level-0 table #64: 1651065 bytes OK
2026/05/24-17:30:55.187168 7fdf5affd6c0 Delete type=0 #34 2026/05/28-00:30:27.829721 7f3e6effd6c0 Delete type=0 #61
2026/05/24-17:30:55.187713 7fdf5affd6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 70890 : 1 2026/05/28-00:35:01.919877 7f3e6effd6c0 Level-0 table #66: started
2026/05/24-17:30:55.187715 7fdf5affd6c0 Compacting 2@0 + 1@1 files 2026/05/28-00:35:01.987012 7f3e6effd6c0 Level-0 table #66: 1703060 bytes OK
2026/05/24-17:30:55.203256 7fdf5affd6c0 Generated table #38@0: 7978 keys, 1186513 bytes 2026/05/28-00:35:02.043369 7f3e6effd6c0 Delete type=0 #63
2026/05/24-17:30:55.203267 7fdf5affd6c0 Compacted 2@0 + 1@1 files => 1186513 bytes 2026/05/28-00:37:26.052331 7f3e6effd6c0 Level-0 table #68: started
2026/05/24-17:30:55.209485 7fdf5affd6c0 compacted to: files[ 0 1 1 0 0 0 0 ] 2026/05/28-00:37:26.076959 7f3e6effd6c0 Level-0 table #68: 1753179 bytes OK
2026/05/24-17:30:55.209584 7fdf5affd6c0 Delete type=2 #33 2026/05/28-00:37:26.083119 7f3e6effd6c0 Delete type=0 #65
2026/05/24-17:30:55.209874 7fdf5affd6c0 Delete type=2 #35 2026/05/28-00:37:26.083369 7f3e6effd6c0 Compacting 4@0 + 1@1 files
2026/05/24-17:30:55.210245 7fdf5affd6c0 Delete type=2 #37 2026/05/28-00:37:26.103213 7f3e6effd6c0 Generated table #69@0: 11630 keys, 1753179 bytes
2026/05/24-17:30:55.237542 7fdf5affd6c0 Manual compaction at level-0 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 70890 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) 2026/05/28-00:37:26.103227 7f3e6effd6c0 Compacted 4@0 + 1@1 files => 1753179 bytes
2026/05/24-17:30:55.237576 7fdf5affd6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 92964 : 1 2026/05/28-00:37:26.109075 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ]
2026/05/24-17:30:55.237582 7fdf5affd6c0 Compacting 1@1 + 1@2 files 2026/05/28-00:37:26.109152 7f3e6effd6c0 Delete type=2 #60
2026/05/24-17:30:55.258486 7fdf5affd6c0 Generated table #39@1: 7978 keys, 1186513 bytes 2026/05/28-00:37:26.109336 7f3e6effd6c0 Delete type=2 #62
2026/05/24-17:30:55.258511 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 1186513 bytes 2026/05/28-00:37:26.109453 7f3e6effd6c0 Delete type=2 #64
2026/05/24-17:30:55.264533 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ] 2026/05/28-00:37:26.109722 7f3e6effd6c0 Delete type=2 #66
2026/05/24-17:30:55.264684 7fdf5affd6c0 Delete type=2 #20 2026/05/28-00:37:26.109828 7f3e6effd6c0 Delete type=2 #68
2026/05/24-17:30:55.264949 7fdf5affd6c0 Delete type=2 #38
2026/05/24-17:30:55.283063 7fdf5affd6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 92964 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
+25 -15
View File
@@ -1,15 +1,25 @@
2026/05/18-20:28:00.247967 7f5a94bff6c0 Recovering log #13 2026/05/27-14:31:25.674162 7f3e6f7fe6c0 Recovering log #36
2026/05/18-20:28:00.322431 7f5a94bff6c0 Delete type=3 #11 2026/05/27-14:31:25.684284 7f3e6f7fe6c0 Delete type=3 #21
2026/05/18-20:28:00.322531 7f5a94bff6c0 Delete type=0 #13 2026/05/27-14:31:25.684327 7f3e6f7fe6c0 Delete type=0 #36
2026/05/18-20:29:47.524056 7f5a467fc6c0 Level-0 table #19: started 2026/05/27-14:32:13.276652 7f3e6effd6c0 Level-0 table #43: started
2026/05/18-20:29:47.536717 7f5a467fc6c0 Level-0 table #19: 417426 bytes OK 2026/05/27-14:32:13.292995 7f3e6effd6c0 Level-0 table #43: 1244894 bytes OK
2026/05/18-20:29:47.544323 7f5a467fc6c0 Delete type=0 #17 2026/05/27-14:32:13.298790 7f3e6effd6c0 Delete type=0 #41
2026/05/18-20:29:47.545004 7f5a467fc6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.808275 7f3e6effd6c0 Level-0 table #45: started
2026/05/18-20:29:47.545055 7f5a467fc6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 12474 : 1 2026/05/27-14:33:21.824612 7f3e6effd6c0 Level-0 table #45: 1294793 bytes OK
2026/05/18-20:29:47.545064 7f5a467fc6c0 Compacting 1@1 + 1@2 files 2026/05/27-14:33:21.831380 7f3e6effd6c0 Delete type=0 #42
2026/05/18-20:29:47.560513 7f5a467fc6c0 Generated table #20@1: 2998 keys, 417426 bytes 2026/05/27-14:33:21.838976 7f3e6effd6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1
2026/05/18-20:29:47.560554 7f5a467fc6c0 Compacted 1@1 + 1@2 files => 417426 bytes 2026/05/27-14:33:21.838980 7f3e6effd6c0 Compacting 1@0 + 1@1 files
2026/05/18-20:29:47.567200 7f5a467fc6c0 compacted to: files[ 0 0 1 0 0 0 0 ] 2026/05/27-14:33:21.852317 7f3e6effd6c0 Generated table #46@0: 8642 keys, 1294793 bytes
2026/05/18-20:29:47.567433 7f5a467fc6c0 Delete type=2 #15 2026/05/27-14:33:21.852331 7f3e6effd6c0 Compacted 1@0 + 1@1 files => 1294793 bytes
2026/05/18-20:29:47.567841 7f5a467fc6c0 Delete type=2 #19 2026/05/27-14:33:21.859689 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ]
2026/05/18-20:29:47.568160 7f5a467fc6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 12474 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.859935 7f3e6effd6c0 Delete type=2 #43
2026/05/27-14:33:21.860058 7f3e6effd6c0 Delete type=2 #45
2026/05/27-14:33:21.877111 7f3e6effd6c0 Manual compaction at level-0 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
2026/05/27-14:33:21.877144 7f3e6effd6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1
2026/05/27-14:33:21.877150 7f3e6effd6c0 Compacting 1@1 + 1@2 files
2026/05/27-14:33:21.895679 7f3e6effd6c0 Generated table #47@1: 8642 keys, 1294793 bytes
2026/05/27-14:33:21.895699 7f3e6effd6c0 Compacted 1@1 + 1@2 files => 1294793 bytes
2026/05/27-14:33:21.901922 7f3e6effd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/27-14:33:21.902059 7f3e6effd6c0 Delete type=2 #39
2026/05/27-14:33:21.902514 7f3e6effd6c0 Delete type=2 #46
2026/05/27-14:33:21.908609 7f3e6effd6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000065 MANIFEST-000074
+3 -15
View File
@@ -1,15 +1,3 @@
2026/05/24-16:50:54.673462 7fdfa95ff6c0 Recovering log #63 2026/05/27-23:11:58.427900 7f3ebd7ff6c0 Recovering log #72
2026/05/24-16:50:54.683865 7fdfa95ff6c0 Delete type=3 #61 2026/05/27-23:11:58.438233 7f3ebd7ff6c0 Delete type=3 #70
2026/05/24-16:50:54.683923 7fdfa95ff6c0 Delete type=0 #63 2026/05/27-23:11:58.438292 7f3ebd7ff6c0 Delete type=0 #72
2026/05/24-17:30:55.141699 7fdf5affd6c0 Level-0 table #68: started
2026/05/24-17:30:55.144973 7fdf5affd6c0 Level-0 table #68: 18651 bytes OK
2026/05/24-17:30:55.150867 7fdf5affd6c0 Delete type=0 #66
2026/05/24-17:30:55.187701 7fdf5affd6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
2026/05/24-17:30:55.227041 7fdf5affd6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at '!items!xFUyR7XECD8QJcIw' @ 231 : 1
2026/05/24-17:30:55.227053 7fdf5affd6c0 Compacting 1@1 + 1@2 files
2026/05/24-17:30:55.230678 7fdf5affd6c0 Generated table #69@1: 33 keys, 18651 bytes
2026/05/24-17:30:55.230696 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 18651 bytes
2026/05/24-17:30:55.237297 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/24-17:30:55.237359 7fdf5affd6c0 Delete type=2 #60
2026/05/24-17:30:55.237471 7fdf5affd6c0 Delete type=2 #68
2026/05/24-17:30:55.265203 7fdf5affd6c0 Manual compaction at level-1 from '!items!xFUyR7XECD8QJcIw' @ 231 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/05/18-20:28:00.088714 7f5a94bff6c0 Recovering log #58 2026/05/27-14:31:25.650849 7f3e6f7fe6c0 Recovering log #67
2026/05/18-20:28:00.147839 7f5a94bff6c0 Delete type=3 #56 2026/05/27-14:31:25.660624 7f3e6f7fe6c0 Delete type=3 #65
2026/05/18-20:28:00.147945 7f5a94bff6c0 Delete type=0 #58 2026/05/27-14:31:25.660648 7f3e6f7fe6c0 Delete type=0 #67
2026/05/18-20:29:47.507007 7f5a467fc6c0 Level-0 table #64: started 2026/05/27-14:33:21.780104 7f3e6effd6c0 Level-0 table #73: started
2026/05/18-20:29:47.507077 7f5a467fc6c0 Level-0 table #64: 0 bytes OK 2026/05/27-14:33:21.780129 7f3e6effd6c0 Level-0 table #73: 0 bytes OK
2026/05/18-20:29:47.513818 7f5a467fc6c0 Delete type=0 #62 2026/05/27-14:33:21.786659 7f3e6effd6c0 Delete type=0 #71
2026/05/18-20:29:47.514115 7f5a467fc6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.800546 7f3e6effd6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
2026/05/18-20:29:47.514158 7f5a467fc6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) 2026/05/27-14:33:21.808253 7f3e6effd6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+174 -2
View File
@@ -1,6 +1,19 @@
import { formatCredits } from './tradeHelper.js'; import { formatCredits } from './tradeHelper.js';
import { createNpcActor, generateClientMission, generateEncounter, generateQuickNpc } from './npcHelper.js'; import { createNpcActor, generateClientMission, generateEncounter, generateQuickNpc } from './npcHelper.js';
import { NPC_RELATIONS } from './data/npcTables.js'; import { NPC_RELATIONS } from './data/npcTables.js';
import { generateAndCreateTravellerNpc } from './travellerNpcGenerator.js';
import { generateRandomName } from './data/travellerNpcGenerator.js';
import {
CITIZEN_CATEGORY_LIST,
EXPERIENCE_LEVEL_LIST,
ROLE_LIST,
GENDER_LIST,
DEFAULT_OPTIONS,
CITIZEN_CATEGORY_LABELS_FR,
EXPERIENCE_LEVEL_LABELS_FR,
ROLE_LABELS_FR,
GENDER_LABELS_FR
} from './data/travellerNpcGenerator.js';
const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api;
const MODULE_ID = 'mgt2-compendium-amiral-denisov'; const MODULE_ID = 'mgt2-compendium-amiral-denisov';
@@ -41,6 +54,19 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
context: options.context ?? 'starport', context: options.context ?? 'starport',
includeFollowUp: true, includeFollowUp: true,
}, },
mission: {},
traveller: {
citizenCategory: DEFAULT_OPTIONS.citizenCategory,
experience: DEFAULT_OPTIONS.experience,
role: DEFAULT_OPTIONS.role,
gender: DEFAULT_OPTIONS.gender,
firstName: '',
surname: '',
useRandomName: true,
createActor: DEFAULT_OPTIONS.createActor,
actorName: '',
openCreatedActor: DEFAULT_OPTIONS.openCreatedActor,
},
}; };
} }
@@ -50,6 +76,25 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
...this._formData, ...this._formData,
activeTab: this._activeTab, activeTab: this._activeTab,
relations: Object.entries(NPC_RELATIONS).map(([key, value]) => ({ key, label: value.label })), relations: Object.entries(NPC_RELATIONS).map(([key, value]) => ({ key, label: value.label })),
citizenCategories: CITIZEN_CATEGORY_LIST.map(c => ({
key: c.key,
label: CITIZEN_CATEGORY_LABELS_FR[c.key] || c.label,
description: c.description
})),
experienceLevels: EXPERIENCE_LEVEL_LIST.map(e => ({
key: e.key,
label: EXPERIENCE_LEVEL_LABELS_FR[e.key] || e.label,
description: e.description
})),
roles: ROLE_LIST.map(r => ({
key: r.key,
label: ROLE_LABELS_FR[r.key] || r.label,
description: r.description
})),
genders: GENDER_LIST.map(g => ({
key: g.key,
label: GENDER_LABELS_FR[g.key] || g.label
})),
}; };
} }
@@ -84,6 +129,27 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
this._readForm(html); this._readForm(html);
this._activateTab($(event.currentTarget).data('tab')); this._activateTab($(event.currentTarget).data('tab'));
}); });
// Gestion des événements pour l'onglet PNJ Détaillé (Traveller)
html.find('[data-action="generate-traveller-npc"]').on('click', async (event) => {
event.preventDefault();
this._readForm(html);
await this._handleTravellerNpc();
});
html.find('[data-action="randomize-name"]').on('click', (event) => {
event.preventDefault();
this._randomizeTravellerName(html);
});
html.find('[name="traveller.useRandomName"]').on('change', (event) => {
const useRandom = event.target.checked;
this._formData.traveller.useRandomName = useRandom;
html.find('.traveller-name-fields').toggleClass('hidden', useRandom);
});
// Initialiser l'affichage des champs de nom pour l'onglet Traveller
html.find('.traveller-name-fields').toggleClass('hidden', this._formData.traveller.useRandomName);
} }
_getForm() { _getForm() {
@@ -137,6 +203,18 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
this._formData.npc.openCreatedActor = html.find('[name="npc.openCreatedActor"]').is(':checked'); this._formData.npc.openCreatedActor = html.find('[name="npc.openCreatedActor"]').is(':checked');
this._formData.encounter.context = html.find('[name="encounter.context"]').val(); this._formData.encounter.context = html.find('[name="encounter.context"]').val();
this._formData.encounter.includeFollowUp = html.find('[name="encounter.includeFollowUp"]').is(':checked'); this._formData.encounter.includeFollowUp = html.find('[name="encounter.includeFollowUp"]').is(':checked');
// Données pour l'onglet PNJ Détaillé (Traveller)
this._formData.traveller.citizenCategory = html.find('[name="traveller.citizenCategory"]').val();
this._formData.traveller.experience = html.find('[name="traveller.experience"]').val();
this._formData.traveller.role = html.find('[name="traveller.role"]').val();
this._formData.traveller.gender = html.find('[name="traveller.gender"]').val();
this._formData.traveller.firstName = html.find('[name="traveller.firstName"]').val();
this._formData.traveller.surname = html.find('[name="traveller.surname"]').val();
this._formData.traveller.useRandomName = html.find('[name="traveller.useRandomName"]').is(':checked');
this._formData.traveller.createActor = html.find('[name="traveller.createActor"]').is(':checked');
this._formData.traveller.actorName = html.find('[name="traveller.actorName"]').val();
this._formData.traveller.openCreatedActor = html.find('[name="traveller.openCreatedActor"]').is(':checked');
} }
async _handleNpc() { async _handleNpc() {
@@ -162,14 +240,75 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
await this._postToChatResult(result); await this._postToChatResult(result);
} }
async _handleTravellerNpc() {
const button = $(this.element).find('[data-action="generate-traveller-npc"]');
const originalLabel = button.html();
try {
button.prop('disabled', true).html('<i class="fas fa-spinner fa-spin"></i> Génération...');
const generateOptions = {
citizenCategory: this._formData.traveller.citizenCategory,
experience: this._formData.traveller.experience,
role: this._formData.traveller.role,
gender: this._formData.traveller.gender,
createActor: this._formData.traveller.createActor,
actorName: this._formData.traveller.actorName,
openCreatedActor: this._formData.traveller.openCreatedActor
};
if (!this._formData.traveller.useRandomName && this._formData.traveller.firstName && this._formData.traveller.surname) {
generateOptions.firstName = this._formData.traveller.firstName;
generateOptions.surname = this._formData.traveller.surname;
}
const result = await generateAndCreateTravellerNpc(generateOptions);
if (result.success) {
await this._postToChatResult(result);
if (result.createdActor) {
ui.notifications.info(`Fiche PNJ Traveller créée : ${result.createdActor.name}`);
}
} else {
ui.notifications.error('Erreur lors de la génération du PNJ Traveller');
}
} catch (error) {
console.error(`${MODULE_ID} | Erreur lors de la génération du PNJ Traveller:`, error);
ui.notifications.error(`Erreur: ${error.message}`);
} finally {
button.prop('disabled', false).html(originalLabel);
}
}
_randomizeTravellerName(html) {
const name = generateRandomName(this._formData.traveller.gender);
html.find('[name="traveller.firstName"]').val(name.firstName);
html.find('[name="traveller.surname"]').val(name.surname);
this._formData.traveller.firstName = name.firstName;
this._formData.traveller.surname = name.surname;
this._formData.traveller.useRandomName = false;
html.find('[name="traveller.useRandomName"]').prop('checked', false);
html.find('.traveller-name-fields').removeClass('hidden');
}
async _postToChatResult(data) { async _postToChatResult(data) {
registerHandlebarsHelpers(); registerHandlebarsHelpers();
const html = await foundry.applications.handlebars.renderTemplate(`modules/${MODULE_ID}/templates/npc-result.hbs`, data);
// Déterminer quel template utiliser en fonction du type de données
let template = `modules/${MODULE_ID}/templates/npc-result.hbs`;
let resultType = 'npc-result';
if (data.type === 'traveller-npc' || data?.flags?.[MODULE_ID]?.type === 'traveller-npc-result') {
template = `modules/${MODULE_ID}/templates/traveller-npc-result.hbs`;
resultType = 'traveller-npc-result';
}
const html = await foundry.applications.handlebars.renderTemplate(template, data);
await ChatMessage.create({ await ChatMessage.create({
content: html, content: html,
speaker: ChatMessage.getSpeaker(), speaker: ChatMessage.getSpeaker(),
flags: { [MODULE_ID]: { type: 'npc-result' } }, flags: { [MODULE_ID]: { type: resultType } },
}); });
} }
} }
@@ -180,8 +319,41 @@ function registerHandlebarsHelpers() {
if (helpersRegistered) return; if (helpersRegistered) return;
helpersRegistered = true; helpersRegistered = true;
// Helpers existants pour NPC
Handlebars.registerHelper('eq', (a, b) => a === b); Handlebars.registerHelper('eq', (a, b) => a === b);
Handlebars.registerHelper('join', (arr, sep) => (Array.isArray(arr) ? arr.join(sep) : '')); Handlebars.registerHelper('join', (arr, sep) => (Array.isArray(arr) ? arr.join(sep) : ''));
Handlebars.registerHelper('formatCredits', (amount) => formatCredits(amount)); Handlebars.registerHelper('formatCredits', (amount) => formatCredits(amount));
Handlebars.registerHelper('contains', (text, search) => String(text ?? '').includes(search)); Handlebars.registerHelper('contains', (text, search) => String(text ?? '').includes(search));
// Helpers pour Traveller NPC
Handlebars.registerHelper('gt', (a, b) => a > b);
// Helper pour afficher le niveau de compétence avec un symbole
Handlebars.registerHelper('skillLevelSymbol', (level) => {
if (level === 0) return '';
if (level === 1) return '★';
if (level === 2) return '★★';
if (level === 3) return '★★★';
return `+${level}`;
});
// Helper pour formater le DM (Difficulté Modificateur)
Handlebars.registerHelper('formatDm', (value) => {
const dm = Math.floor((value - 6) / 3);
return dm >= 0 ? `+${dm}` : `${dm}`;
});
// Helper pour obtenir la classe CSS du niveau de compétence
Handlebars.registerHelper('skillLevelClass', (level) => {
if (level === 3) return 'skill-level-3';
if (level === 2) return 'skill-level-2';
if (level === 1) return 'skill-level-1';
return 'skill-level-0';
});
// Helper pour lookup dans un objet
Handlebars.registerHelper('lookup', (obj, key) => {
if (!obj || !key) return '';
return obj[key] !== undefined ? obj[key] : '';
});
} }
+2 -2
View File
@@ -774,7 +774,7 @@ export const DEFAULT_OPTIONS = {
*/ */
export const SKILL_LABELS_FR = { export const SKILL_LABELS_FR = {
'Pilot-Spacecraft': 'Pilote Vaisseau spatial', 'Pilot-Spacecraft': 'Pilote Vaisseau spatial',
'Pilot-Small Craft': 'Pilote Aéronef léger', 'Pilot-Small Craft': 'Pilote Petits vaisseaux',
'Pilot': 'Pilote', 'Pilot': 'Pilote',
'Flyer': 'Pilote Aéronef atmosphérique', 'Flyer': 'Pilote Aéronef atmosphérique',
'Astrogation': 'Astrogation', 'Astrogation': 'Astrogation',
@@ -804,7 +804,7 @@ export const SKILL_LABELS_FR = {
'Advocate': 'Plaidoyer', 'Advocate': 'Plaidoyer',
'Diplomat': 'Diplomatie', 'Diplomat': 'Diplomatie',
'Streetwise': 'Rues', 'Streetwise': 'Rues',
'Leadership': 'Direction', 'Leadership': 'Leadership',
'Science-Biology': 'Science Biologie', 'Science-Biology': 'Science Biologie',
'Science-Chemistry': 'Science Chimie', 'Science-Chemistry': 'Science Chimie',
'Science': 'Science', 'Science': 'Science',
+1 -38
View File
@@ -1,5 +1,4 @@
import { NpcDialog } from './NpcDialog.js'; import { NpcDialog } from './NpcDialog.js';
import { openTravellerNpcDialog } from './TravellerNpcDialog.js';
import { syncNpcRollTables } from './npcRollTableSync.js'; import { syncNpcRollTables } from './npcRollTableSync.js';
import './mgt2eMigration.js'; import './mgt2eMigration.js';
@@ -10,10 +9,6 @@ function openNpcDialog(initialTab, options = {}) {
new NpcDialog({ initialTab, ...options }).render({ force: true }); new NpcDialog({ initialTab, ...options }).render({ force: true });
} }
function openTravellerNpcGenerator() {
openTravellerNpcDialog();
}
function registerNpcCommand(commandName, initialTab) { function registerNpcCommand(commandName, initialTab) {
if (!ChatLogV2?.CHAT_COMMANDS) { if (!ChatLogV2?.CHAT_COMMANDS) {
console.warn(`${MODULE_ID} | ChatLog.CHAT_COMMANDS indisponible, commande /${commandName} non enregistrée`); console.warn(`${MODULE_ID} | ChatLog.CHAT_COMMANDS indisponible, commande /${commandName} non enregistrée`);
@@ -30,22 +25,6 @@ function registerNpcCommand(commandName, initialTab) {
console.log(`${MODULE_ID} | Commande /${commandName} enregistrée via ChatLog.CHAT_COMMANDS`); console.log(`${MODULE_ID} | Commande /${commandName} enregistrée via ChatLog.CHAT_COMMANDS`);
} }
function registerTravellerNpcCommand() {
if (!ChatLogV2?.CHAT_COMMANDS) {
console.warn(`${MODULE_ID} | ChatLog.CHAT_COMMANDS indisponible, commande /gennpc non enregistrée`);
return;
}
ChatLogV2.CHAT_COMMANDS.gennpc = {
rgx: new RegExp(`^\\/gennpc(?:\\s+(.*))?$`, 'i'),
fn: () => {
openTravellerNpcGenerator();
return false;
},
};
console.log(`${MODULE_ID} | Commande /gennpc enregistrée via ChatLog.CHAT_COMMANDS`);
}
Hooks.once('init', () => { Hooks.once('init', () => {
console.log(`${MODULE_ID} | Outils PNJ initialisés`); console.log(`${MODULE_ID} | Outils PNJ initialisés`);
@@ -64,12 +43,11 @@ Hooks.once('init', () => {
registerNpcCommand('pnj', 'npc'); registerNpcCommand('pnj', 'npc');
registerNpcCommand('rencontre', 'encounter'); registerNpcCommand('rencontre', 'encounter');
registerNpcCommand('mission', 'mission'); registerNpcCommand('mission', 'mission');
registerTravellerNpcCommand();
}); });
Hooks.once('ready', async () => { Hooks.once('ready', async () => {
await syncNpcRollTables(); await syncNpcRollTables();
console.log(`${MODULE_ID} | Outils PNJ prêts tapez /pnj, /rencontre, /mission ou /gennpc dans le chat`); console.log(`${MODULE_ID} | Outils PNJ prêts tapez /pnj, /rencontre ou /mission dans le chat`);
}); });
/** /**
@@ -115,11 +93,6 @@ Hooks.on('renderChatInput', (app, html, data) => {
event.stopImmediatePropagation(); event.stopImmediatePropagation();
openNpcDialog('mission'); openNpcDialog('mission');
input.val(''); input.val('');
} else if (content?.startsWith('/gennpc')) {
event.preventDefault();
event.stopImmediatePropagation();
openTravellerNpcGenerator();
input.val('');
} }
} }
}); });
@@ -147,11 +120,6 @@ Hooks.on('preCreateChatMessage', (message, data, options) => {
openNpcDialog('mission'); openNpcDialog('mission');
return false; // Empêche la création du message return false; // Empêche la création du message
} }
if (content === '/gennpc' || content?.startsWith('/gennpc ')) {
openTravellerNpcGenerator();
return false; // Empêche la création du message
}
}); });
// Gardé pour compatibilité v13 // Gardé pour compatibilité v13
@@ -186,9 +154,4 @@ Hooks.on('chatMessage', (...args) => {
openNpcDialog('mission'); openNpcDialog('mission');
return false; return false;
} }
if (trimmed === '/gennpc' || trimmed?.startsWith('/gennpc ')) {
openTravellerNpcGenerator();
return false;
}
}); });
+75 -27
View File
@@ -49,61 +49,100 @@ const MODULE_ID = 'mgt2-compendium-amiral-denisov';
* Mapping des compétences Traveller vers mgt2e * Mapping des compétences Traveller vers mgt2e
* @type {Object<string, string>} * @type {Object<string, string>}
*/ */
// Mapping des compétences Traveller vers MgT2e
// IMPORTANT: MgT2e utilise des noms de compétences EN MINUSCULES (ex: pilot, electronics, gunner)
// basé sur les références dans npcHelper.js et mgt2eSkills.js
// Format: 'Compétence-Traveller' -> 'competence_mgt2e' ou 'competence_mgt2e.specialite'
// Les spécialités sont en minuscules avec underscores
// Si une spécialité n'existe pas dans MgT2e, setSkillLevel appliquera le niveau à la compétence parente
const SKILL_MAPPING = { const SKILL_MAPPING = {
'Pilot-Spacecraft': 'pilot.spacecraft', // Pilotage - MgT2e a une compétence "pilot" (confirmé par les références)
'Pilot-Small Craft': 'pilot.smallcraft', // Corrigé : Small Craft = Petits vaisseaux (pas Aéronef léger)
'Pilot-Spacecraft': 'pilot.vaisseau_spatial',
'Pilot-Small Craft': 'pilot.petits_vaisseaux',
'Pilot': 'pilot', 'Pilot': 'pilot',
'Flyer': 'pilot.aeronef_atmospherique',
// Astrogation et Navigation (compétences séparées)
'Astrogation': 'astrogation', 'Astrogation': 'astrogation',
'Electronics-Sensors': 'electronics.sensors', 'Navigation': 'navigation',
// Électronique - MgT2e a une compétence "electronics" (confirmé par npcHelper.js:34)
// Révisé : "computers" → "informatique" pour alignement avec le libellé FR
'Electronics-Sensors': 'electronics.capteurs',
'Electronics-Communications': 'electronics.communications', 'Electronics-Communications': 'electronics.communications',
'Electronics-Computers': 'electronics.computers', 'Electronics-Computers': 'electronics.informatique',
'Electronics': 'electronics', 'Electronics': 'electronics',
'Gunner-Turrets': 'gunner.turrets', 'Computers': 'electronics',
'Gunner-Screens': 'gunner.screens', 'Communications': 'electronics',
'Gunner': 'gunner',
// Artillerie - MgT2e utilise "gunner" ou "guncombat" ?
// Dans npcHelper.js:37 on voit "guncombat", donc utilisons ça
'Gunner-Turrets': 'guncombat.tourelles',
'Gunner-Screens': 'guncombat.boucliers',
'Gunner': 'guncombat',
// Mécanique
'Mechanic': 'mechanic', 'Mechanic': 'mechanic',
'Engineer-MDrive': 'engineer.mdrive',
'Engineer-Power': 'engineer.power', // Ingénierie - MgT2e utilise probablement "engineer"
'Engineer-JDrive': 'engineer.jdrive', 'Engineer-MDrive': 'engineer.propulsion_manoeuvre',
'Engineer-Life Support': 'engineer.lifesupport', 'Engineer-Power': 'engineer.energie',
'Engineer-JDrive': 'engineer.propulsion_saut',
'Engineer-Life Support': 'engineer.support_vie',
'Engineer': 'engineer', 'Engineer': 'engineer',
// Social et Administration - tous confirmés dans npcHelper.js
'Steward': 'steward', 'Steward': 'steward',
'Carouse': 'carouse', 'Carouse': 'carouse',
'Persuade': 'persuade', 'Persuade': 'persuade',
'Broker': 'broker', 'Broker': 'broker',
'Admin': 'admin', 'Admin': 'admin',
'Computers': 'electronics.computers',
'Language': 'language', 'Language': 'language',
'Advocate': 'advocate', 'Advocate': 'advocate',
'Leadership': 'leadership', 'Leadership': 'leadership',
'Medic': 'medic', 'Medic': 'medic',
'Streetwise': 'streetwise',
'Diplomat': 'diplomat', 'Diplomat': 'diplomat',
'Science-Biology': 'science.biology',
'Science-Chemistry': 'science.chemistry', // Sciences
'Science-Biology': 'science.biologie',
'Science-Chemistry': 'science.chimie',
'Science': 'science', 'Science': 'science',
'Deception': 'deception',
'Investigate': 'investigate', // Combat - "guncombat" confirmé dans npcHelper.js:37
'Gun Combat': 'guncombat', 'Gun Combat': 'guncombat',
'Heavy Weapons': 'heavyweapons', 'Heavy Weapons': 'heavyweapons',
'Melee-Unarmed': 'melee.unarmed', // Mêlée - "melee" confirmé dans npcHelper.js:37
'Melee-Blade': 'melee.blade', 'Melee-Unarmed': 'melee.sans_arme',
'Melee-Blade': 'melee.arme_blanche',
'Melee': 'melee', 'Melee': 'melee',
'Athletics-Strength': 'athletics.strength',
'Athletics-Dexterity': 'athletics.dexterity', // Athlétisme - probablement "athletics"
// Révisé : "dexterite" → "dextérité" (avec accent)
'Athletics-Strength': 'athletics.force',
'Athletics-Dexterity': 'athletics.dextérité',
'Athletics': 'athletics', 'Athletics': 'athletics',
// Tactique et Exploration - "tactics" et "recon" confirmés dans npcHelper.js
'Tactics': 'tactics', 'Tactics': 'tactics',
'Recon': 'recon', 'Recon': 'recon',
'Survival': 'survival', 'Survival': 'survival',
'Navigation': 'navigation',
'Stealth': 'stealth', 'Stealth': 'stealth',
'Explosives': 'explosives', 'Explosives': 'explosives',
'Communications': 'electronics.communications', 'Deception': 'deception',
'Drive-Grav': 'drive.grav', 'Investigate': 'investigate',
// Conduite - probablement "drive"
// Révisé : "gravite" → "gravité" (avec accent)
'Drive-Grav': 'drive.gravité',
'Drive': 'drive', 'Drive': 'drive',
// Équipement - probablement "vaccsuit" ou similaire
'Vacc Suit': 'vaccsuit', 'Vacc Suit': 'vaccsuit',
'Flyer': 'flyer',
'Art-Acting': 'art.acting', // Art - probablement "art"
// Révisé : "jeu_d_acteur" → "jeu_acteur" (plus naturel)
'Art-Acting': 'art.jeu_acteur',
'Art-Instrument': 'art.instrument', 'Art-Instrument': 'art.instrument',
'Art': 'art' 'Art': 'art'
}; };
@@ -114,7 +153,16 @@ const SKILL_MAPPING = {
* @returns {string} - Nom au format mgt2e * @returns {string} - Nom au format mgt2e
*/ */
function convertSkillToMgt2eFormat(skillName) { function convertSkillToMgt2eFormat(skillName) {
return SKILL_MAPPING[skillName] || skillName.toLowerCase().replace(/-| /g, '.'); // Vérifier d'abord dans le mapping explicite
if (SKILL_MAPPING[skillName]) {
return SKILL_MAPPING[skillName];
}
// Si pas dans le mapping, essayer de deviner
// MgT2e utilise des noms en minuscules (ex: pilot, electronics, guncombat)
// 1. Remplacer les tirets et espaces par des points
// 2. Tout mettre en minuscules
return skillName.toLowerCase().replace(/-| /g, '.');
} }
/** /**
+113
View File
@@ -10,6 +10,9 @@
<a class="item {{#if (eq activeTab "mission")}}active{{/if}}" data-tab="mission"> <a class="item {{#if (eq activeTab "mission")}}active{{/if}}" data-tab="mission">
<i class="fas fa-briefcase"></i> Client & mission <i class="fas fa-briefcase"></i> Client & mission
</a> </a>
<a class="item {{#if (eq activeTab "traveller")}}active{{/if}}" data-tab="traveller">
<i class="fas fa-user-astronaut"></i> PNJ Détaillé
</a>
</nav> </nav>
<section class="tab-content"> <section class="tab-content">
@@ -119,6 +122,116 @@
</button> </button>
</div> </div>
</div> </div>
<div class="tab {{#if (eq activeTab "traveller")}}active{{/if}}" data-tab="traveller">
<h3><i class="fas fa-user-astronaut"></i> Générateur de PNJ Traveller</h3>
<p class="traveller-npc-intro">
Génère un personnage non-joueur selon les règles du générateur Traveller,
avec caractéristiques, compétences et rôle aléatoires ou personnalisés.
</p>
<fieldset>
<legend>Identité du PNJ</legend>
<div class="form-group checkbox-group">
<label>
<input type="checkbox" name="traveller.useRandomName" {{#if traveller.useRandomName}}checked{{/if}}>
Utiliser un nom aléatoire
</label>
</div>
<div class="form-group-row traveller-name-fields {{#if traveller.useRandomName}}hidden{{/if}}">
<div class="form-group">
<label for="traveller-firstName">Prénom</label>
<input id="traveller-firstName" name="traveller.firstName" type="text" value="{{traveller.firstName}}" placeholder="John">
</div>
<div class="form-group">
<label for="traveller-surname">Nom de famille</label>
<input id="traveller-surname" name="traveller.surname" type="text" value="{{traveller.surname}}" placeholder="Smith">
</div>
<div class="form-group">
<button type="button" class="btn-small" data-action="randomize-name" title="Générer un nom aléatoire">
<i class="fas fa-dice-d6"></i>
</button>
</div>
</div>
<div class="form-group-row">
<div class="form-group">
<label for="traveller-gender">Genre</label>
<select id="traveller-gender" name="traveller.gender">
{{#each genders}}
<option value="{{key}}" {{#if (eq ../traveller.gender key)}}selected{{/if}}>{{label}}</option>
{{/each}}
</select>
</div>
<div class="form-group">
<label for="traveller-role">Rôle <span class="required">*</span></label>
<select id="traveller-role" name="traveller.role" required>
{{#each roles}}
<option value="{{key}}" {{#if (eq ../traveller.role key)}}selected{{/if}}>{{label}}</option>
{{/each}}
</select>
</div>
</div>
</fieldset>
<fieldset>
<legend>Caractéristiques et Expérience</legend>
<div class="form-group-row">
<div class="form-group">
<label for="traveller-citizenCategory">Catégorie de citoyen</label>
<select id="traveller-citizenCategory" name="traveller.citizenCategory">
{{#each citizenCategories}}
<option value="{{key}}" {{#if (eq ../traveller.citizenCategory key)}}selected{{/if}}>{{label}}</option>
{{/each}}
</select>
<div class="hint">{{description}}</div>
</div>
<div class="form-group">
<label for="traveller-experience">Niveau d'expérience</label>
<select id="traveller-experience" name="traveller.experience">
{{#each experienceLevels}}
<option value="{{key}}" {{#if (eq ../traveller.experience key)}}selected{{/if}}>{{label}}</option>
{{/each}}
</select>
<div class="hint">{{description}}</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>Création de fiche d'acteur</legend>
<div class="form-group checkbox-group">
<label>
<input type="checkbox" name="traveller.createActor" {{#if traveller.createActor}}checked{{/if}}>
Créer une fiche PNJ dans les Acteurs
</label>
</div>
<div class="form-group-row">
<div class="form-group">
<label for="traveller-actorName">Nom de la fiche <span class="hint">(facultatif)</span></label>
<input id="traveller-actorName" name="traveller.actorName" type="text" value="{{traveller.actorName}}" placeholder="PNJ — Pilote">
</div>
</div>
<div class="form-group checkbox-group">
<label>
<input type="checkbox" name="traveller.openCreatedActor" {{#if traveller.openCreatedActor}}checked{{/if}}>
Ouvrir automatiquement la fiche créée
</label>
</div>
</fieldset>
<div class="form-footer">
<button type="button" class="btn-calculate" data-action="generate-traveller-npc">
<i class="fas fa-dice-d6"></i> Générer le PNJ Traveller
</button>
</div>
</div>
</section> </section>
</form> </form>