@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
testMatch: ['**/scripts/tests/*.test.js'],
|
||||
transform: {},
|
||||
};
|
||||
+71
-1
@@ -25,6 +25,65 @@
|
||||
"styles/npc.css",
|
||||
"styles/traveller-npc.css"
|
||||
],
|
||||
"packFolders": {
|
||||
"name": "Amiral Denisov",
|
||||
"sorting": "m",
|
||||
"color": "#00435c",
|
||||
"folders": [
|
||||
{
|
||||
"name": "Equipements",
|
||||
"sorting": "a",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"armures",
|
||||
"objet",
|
||||
"equipement",
|
||||
"ordinateur",
|
||||
"contenant-sac-coffre",
|
||||
"armes"
|
||||
],
|
||||
"folders": []
|
||||
},
|
||||
{
|
||||
"name": "Références",
|
||||
"sorting": "b",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"competences",
|
||||
"maladie-poison-and-blessure",
|
||||
"espece",
|
||||
"talents-psioniques",
|
||||
"carrieres"
|
||||
],
|
||||
"folders": []
|
||||
},
|
||||
{
|
||||
"name": "PNJ & Items",
|
||||
"sorting": "c",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"tables-pnj",
|
||||
"pnj",
|
||||
"competences",
|
||||
"maladie-poison-and-blessure",
|
||||
"espece",
|
||||
"talents-psioniques",
|
||||
"carrieres"
|
||||
],
|
||||
"folders": []
|
||||
},
|
||||
{
|
||||
"name": "Journaux",
|
||||
"sorting": "d",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"journal"
|
||||
],
|
||||
"folders": []
|
||||
}
|
||||
],
|
||||
"packs": []
|
||||
},
|
||||
"packs": [
|
||||
{
|
||||
"name": "armures",
|
||||
@@ -116,7 +175,7 @@
|
||||
},
|
||||
{
|
||||
"name": "journal",
|
||||
"label": "Journal Psioniques",
|
||||
"label": "Journal Psioniques",
|
||||
"path": "packs/journal",
|
||||
"type": "JournalEntry",
|
||||
"system": "mgt2e",
|
||||
@@ -168,6 +227,17 @@
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pnj",
|
||||
"label": "PNJs",
|
||||
"path": "packs/pnj",
|
||||
"type": "Actor",
|
||||
"system": "mgt2e",
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "module",
|
||||
"private": true
|
||||
}
|
||||
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000100
|
||||
MANIFEST-000132
|
||||
|
||||
+8
-3
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.863670 7f52c63fe6c0 Recovering log #98
|
||||
2026/06/01-22:42:05.873307 7f52c63fe6c0 Delete type=3 #96
|
||||
2026/06/01-22:42:05.873357 7f52c63fe6c0 Delete type=0 #98
|
||||
2026/06/12-20:52:58.023135 7fc410ffe6c0 Recovering log #130
|
||||
2026/06/12-20:52:58.033792 7fc410ffe6c0 Delete type=3 #128
|
||||
2026/06/12-20:52:58.033845 7fc410ffe6c0 Delete type=0 #130
|
||||
2026/06/12-20:53:22.703483 7fc3c11be6c0 Level-0 table #135: started
|
||||
2026/06/12-20:53:22.703533 7fc3c11be6c0 Level-0 table #135: 0 bytes OK
|
||||
2026/06/12-20:53:22.710309 7fc3c11be6c0 Delete type=0 #133
|
||||
2026/06/12-20:53:22.717089 7fc3c11be6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.724385 7fc3c11be6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||
|
||||
+8
-8
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.535828 7f52c6bff6c0 Recovering log #94
|
||||
2026/06/01-08:35:53.546637 7f52c6bff6c0 Delete type=3 #92
|
||||
2026/06/01-08:35:53.546677 7f52c6bff6c0 Delete type=0 #94
|
||||
2026/06/01-08:51:10.470757 7f52c4bfb6c0 Level-0 table #99: started
|
||||
2026/06/01-08:51:10.470772 7f52c4bfb6c0 Level-0 table #99: 0 bytes OK
|
||||
2026/06/01-08:51:10.476934 7f52c4bfb6c0 Delete type=0 #97
|
||||
2026/06/01-08:51:10.484526 7f52c4bfb6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.491484 7f52c4bfb6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.594732 7fc3c3fff6c0 Recovering log #126
|
||||
2026/06/12-20:51:44.605104 7fc3c3fff6c0 Delete type=3 #124
|
||||
2026/06/12-20:51:44.605163 7fc3c3fff6c0 Delete type=0 #126
|
||||
2026/06/12-20:52:05.597166 7fc3c11be6c0 Level-0 table #131: started
|
||||
2026/06/12-20:52:05.597184 7fc3c11be6c0 Level-0 table #131: 0 bytes OK
|
||||
2026/06/12-20:52:05.604422 7fc3c11be6c0 Delete type=0 #129
|
||||
2026/06/12-20:52:05.618860 7fc3c11be6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.619120 7fc3c11be6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000199
|
||||
MANIFEST-000231
|
||||
|
||||
+8
-3
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.758175 7f52c53fc6c0 Recovering log #197
|
||||
2026/06/01-22:42:05.768018 7f52c53fc6c0 Delete type=3 #195
|
||||
2026/06/01-22:42:05.768044 7f52c53fc6c0 Delete type=0 #197
|
||||
2026/06/12-20:52:57.899810 7fc3c37fe6c0 Recovering log #229
|
||||
2026/06/12-20:52:57.911135 7fc3c37fe6c0 Delete type=3 #227
|
||||
2026/06/12-20:52:57.911180 7fc3c37fe6c0 Delete type=0 #229
|
||||
2026/06/12-20:53:22.642554 7fc3c11be6c0 Level-0 table #234: started
|
||||
2026/06/12-20:53:22.642590 7fc3c11be6c0 Level-0 table #234: 0 bytes OK
|
||||
2026/06/12-20:53:22.648801 7fc3c11be6c0 Delete type=0 #232
|
||||
2026/06/12-20:53:22.649072 7fc3c11be6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.649091 7fc3c11be6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.408086 7f52c63fe6c0 Recovering log #193
|
||||
2026/06/01-08:35:53.419231 7f52c63fe6c0 Delete type=3 #191
|
||||
2026/06/01-08:35:53.419290 7f52c63fe6c0 Delete type=0 #193
|
||||
2026/06/01-08:51:10.410303 7f52c4bfb6c0 Level-0 table #198: started
|
||||
2026/06/01-08:51:10.410335 7f52c4bfb6c0 Level-0 table #198: 0 bytes OK
|
||||
2026/06/01-08:51:10.417249 7f52c4bfb6c0 Delete type=0 #196
|
||||
2026/06/01-08:51:10.423845 7f52c4bfb6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.424110 7f52c4bfb6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.470883 7fc3c37fe6c0 Recovering log #225
|
||||
2026/06/12-20:51:44.481326 7fc3c37fe6c0 Delete type=3 #223
|
||||
2026/06/12-20:51:44.481382 7fc3c37fe6c0 Delete type=0 #225
|
||||
2026/06/12-20:52:05.534179 7fc3c11be6c0 Level-0 table #230: started
|
||||
2026/06/12-20:52:05.534214 7fc3c11be6c0 Level-0 table #230: 0 bytes OK
|
||||
2026/06/12-20:52:05.540979 7fc3c11be6c0 Delete type=0 #228
|
||||
2026/06/12-20:52:05.541333 7fc3c11be6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.562210 7fc3c11be6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000083
|
||||
MANIFEST-000115
|
||||
|
||||
+8
-3
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.887236 7f52c63fe6c0 Recovering log #81
|
||||
2026/06/01-22:42:05.897193 7f52c63fe6c0 Delete type=3 #79
|
||||
2026/06/01-22:42:05.897236 7f52c63fe6c0 Delete type=0 #81
|
||||
2026/06/12-20:52:58.051634 7fc410ffe6c0 Recovering log #113
|
||||
2026/06/12-20:52:58.062421 7fc410ffe6c0 Delete type=3 #111
|
||||
2026/06/12-20:52:58.062480 7fc410ffe6c0 Delete type=0 #113
|
||||
2026/06/12-20:53:22.717098 7fc3c11be6c0 Level-0 table #118: started
|
||||
2026/06/12-20:53:22.717122 7fc3c11be6c0 Level-0 table #118: 0 bytes OK
|
||||
2026/06/12-20:53:22.724248 7fc3c11be6c0 Delete type=0 #116
|
||||
2026/06/12-20:53:22.822698 7fc3c11be6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.829756 7fc3c11be6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.563616 7f52c6bff6c0 Recovering log #77
|
||||
2026/06/01-08:35:53.575271 7f52c6bff6c0 Delete type=3 #75
|
||||
2026/06/01-08:35:53.575318 7f52c6bff6c0 Delete type=0 #77
|
||||
2026/06/01-08:51:10.477043 7f52c4bfb6c0 Level-0 table #82: started
|
||||
2026/06/01-08:51:10.477061 7f52c4bfb6c0 Level-0 table #82: 0 bytes OK
|
||||
2026/06/01-08:51:10.484427 7f52c4bfb6c0 Delete type=0 #80
|
||||
2026/06/01-08:51:10.491475 7f52c4bfb6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.498513 7f52c4bfb6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.625465 7fc3c37fe6c0 Recovering log #109
|
||||
2026/06/12-20:51:44.635539 7fc3c37fe6c0 Delete type=3 #107
|
||||
2026/06/12-20:51:44.635595 7fc3c37fe6c0 Delete type=0 #109
|
||||
2026/06/12-20:52:05.611307 7fc3c11be6c0 Level-0 table #114: started
|
||||
2026/06/12-20:52:05.611325 7fc3c11be6c0 Level-0 table #114: 0 bytes OK
|
||||
2026/06/12-20:52:05.618732 7fc3c11be6c0 Delete type=0 #112
|
||||
2026/06/12-20:52:05.619090 7fc3c11be6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.619279 7fc3c11be6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000202
|
||||
MANIFEST-000234
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.770418 7f52c6bff6c0 Recovering log #200
|
||||
2026/06/01-22:42:05.779812 7f52c6bff6c0 Delete type=3 #198
|
||||
2026/06/01-22:42:05.779865 7f52c6bff6c0 Delete type=0 #200
|
||||
2026/06/12-20:52:57.913632 7fc410ffe6c0 Recovering log #232
|
||||
2026/06/12-20:52:57.923055 7fc410ffe6c0 Delete type=3 #230
|
||||
2026/06/12-20:52:57.923103 7fc410ffe6c0 Delete type=0 #232
|
||||
2026/06/12-20:53:22.662427 7fc3c11be6c0 Level-0 table #237: started
|
||||
2026/06/12-20:53:22.662456 7fc3c11be6c0 Level-0 table #237: 0 bytes OK
|
||||
2026/06/12-20:53:22.669591 7fc3c11be6c0 Delete type=0 #235
|
||||
2026/06/12-20:53:22.676441 7fc3c11be6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.676637 7fc3c11be6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.422306 7f52c53fc6c0 Recovering log #196
|
||||
2026/06/01-08:35:53.433915 7f52c53fc6c0 Delete type=3 #194
|
||||
2026/06/01-08:35:53.433952 7f52c53fc6c0 Delete type=0 #196
|
||||
2026/06/01-08:51:10.450191 7f52c4bfb6c0 Level-0 table #201: started
|
||||
2026/06/01-08:51:10.450225 7f52c4bfb6c0 Level-0 table #201: 0 bytes OK
|
||||
2026/06/01-08:51:10.456638 7f52c4bfb6c0 Delete type=0 #199
|
||||
2026/06/01-08:51:10.463422 7f52c4bfb6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.470752 7f52c4bfb6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.484787 7fc410ffe6c0 Recovering log #228
|
||||
2026/06/12-20:51:44.494717 7fc410ffe6c0 Delete type=3 #226
|
||||
2026/06/12-20:51:44.494769 7fc410ffe6c0 Delete type=0 #228
|
||||
2026/06/12-20:52:05.541367 7fc3c11be6c0 Level-0 table #233: started
|
||||
2026/06/12-20:52:05.541402 7fc3c11be6c0 Level-0 table #233: 0 bytes OK
|
||||
2026/06/12-20:52:05.548343 7fc3c11be6c0 Delete type=0 #231
|
||||
2026/06/12-20:52:05.562225 7fc3c11be6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.562411 7fc3c11be6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000136
|
||||
MANIFEST-000168
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
2026/06/01-22:42:05.829157 7f52c53fc6c0 Recovering log #134
|
||||
2026/06/01-22:42:05.838624 7f52c53fc6c0 Delete type=3 #132
|
||||
2026/06/01-22:42:05.838670 7f52c53fc6c0 Delete type=0 #134
|
||||
2026/06/12-20:52:57.981469 7fc410ffe6c0 Recovering log #166
|
||||
2026/06/12-20:52:57.992240 7fc410ffe6c0 Delete type=3 #164
|
||||
2026/06/12-20:52:57.992286 7fc410ffe6c0 Delete type=0 #166
|
||||
2026/06/12-20:53:22.676645 7fc3c11be6c0 Level-0 table #171: started
|
||||
2026/06/12-20:53:22.676670 7fc3c11be6c0 Level-0 table #171: 0 bytes OK
|
||||
2026/06/12-20:53:22.683046 7fc3c11be6c0 Delete type=0 #169
|
||||
2026/06/12-20:53:22.703339 7fc3c11be6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/06/01-08:35:53.494562 7f52c6bff6c0 Recovering log #130
|
||||
2026/06/01-08:35:53.505274 7f52c6bff6c0 Delete type=3 #128
|
||||
2026/06/01-08:35:53.505312 7f52c6bff6c0 Delete type=0 #130
|
||||
2026/06/01-08:51:10.430797 7f52c4bfb6c0 Level-0 table #135: started
|
||||
2026/06/01-08:51:10.430815 7f52c4bfb6c0 Level-0 table #135: 0 bytes OK
|
||||
2026/06/01-08:51:10.436925 7f52c4bfb6c0 Delete type=0 #133
|
||||
2026/06/01-08:51:10.449909 7f52c4bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.553830 7fc3c37fe6c0 Recovering log #162
|
||||
2026/06/12-20:51:44.563465 7fc3c37fe6c0 Delete type=3 #160
|
||||
2026/06/12-20:51:44.563519 7fc3c37fe6c0 Delete type=0 #162
|
||||
2026/06/12-20:52:05.576474 7fc3c11be6c0 Level-0 table #167: started
|
||||
2026/06/12-20:52:05.576496 7fc3c11be6c0 Level-0 table #167: 0 bytes OK
|
||||
2026/06/12-20:52:05.583147 7fc3c11be6c0 Delete type=0 #165
|
||||
2026/06/12-20:52:05.590265 7fc3c11be6c0 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 @@
|
||||
MANIFEST-000144
|
||||
MANIFEST-000176
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.805356 7f52c5bfd6c0 Recovering log #142
|
||||
2026/06/01-22:42:05.815150 7f52c5bfd6c0 Delete type=3 #140
|
||||
2026/06/01-22:42:05.815203 7f52c5bfd6c0 Delete type=0 #142
|
||||
2026/06/12-20:52:57.954396 7fc410ffe6c0 Recovering log #174
|
||||
2026/06/12-20:52:57.964106 7fc410ffe6c0 Delete type=3 #172
|
||||
2026/06/12-20:52:57.964146 7fc410ffe6c0 Delete type=0 #174
|
||||
2026/06/12-20:53:22.669694 7fc3c11be6c0 Level-0 table #179: started
|
||||
2026/06/12-20:53:22.669720 7fc3c11be6c0 Level-0 table #179: 0 bytes OK
|
||||
2026/06/12-20:53:22.676299 7fc3c11be6c0 Delete type=0 #177
|
||||
2026/06/12-20:53:22.676452 7fc3c11be6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.676473 7fc3c11be6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.466145 7f52c6bff6c0 Recovering log #138
|
||||
2026/06/01-08:35:53.477972 7f52c6bff6c0 Delete type=3 #136
|
||||
2026/06/01-08:35:53.478013 7f52c6bff6c0 Delete type=0 #138
|
||||
2026/06/01-08:51:10.424141 7f52c4bfb6c0 Level-0 table #143: started
|
||||
2026/06/01-08:51:10.424176 7f52c4bfb6c0 Level-0 table #143: 0 bytes OK
|
||||
2026/06/01-08:51:10.430711 7f52c4bfb6c0 Delete type=0 #141
|
||||
2026/06/01-08:51:10.449900 7f52c4bfb6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.456752 7f52c4bfb6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.524826 7fc3c37fe6c0 Recovering log #170
|
||||
2026/06/12-20:51:44.535451 7fc3c37fe6c0 Delete type=3 #168
|
||||
2026/06/12-20:51:44.535506 7fc3c37fe6c0 Delete type=0 #170
|
||||
2026/06/12-20:52:05.562430 7fc3c11be6c0 Level-0 table #175: started
|
||||
2026/06/12-20:52:05.562454 7fc3c11be6c0 Level-0 table #175: 0 bytes OK
|
||||
2026/06/12-20:52:05.569802 7fc3c11be6c0 Delete type=0 #173
|
||||
2026/06/12-20:52:05.590244 7fc3c11be6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.590432 7fc3c11be6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000136
|
||||
MANIFEST-000168
|
||||
|
||||
+7
-3
@@ -1,3 +1,7 @@
|
||||
2026/06/01-22:42:05.840284 7f52c6bff6c0 Recovering log #134
|
||||
2026/06/01-22:42:05.850204 7f52c6bff6c0 Delete type=3 #132
|
||||
2026/06/01-22:42:05.850246 7f52c6bff6c0 Delete type=0 #134
|
||||
2026/06/12-20:52:57.995403 7fc3c37fe6c0 Recovering log #166
|
||||
2026/06/12-20:52:58.005793 7fc3c37fe6c0 Delete type=3 #164
|
||||
2026/06/12-20:52:58.005851 7fc3c37fe6c0 Delete type=0 #166
|
||||
2026/06/12-20:53:22.683153 7fc3c11be6c0 Level-0 table #171: started
|
||||
2026/06/12-20:53:22.683178 7fc3c11be6c0 Level-0 table #171: 0 bytes OK
|
||||
2026/06/12-20:53:22.690078 7fc3c11be6c0 Delete type=0 #169
|
||||
2026/06/12-20:53:22.703354 7fc3c11be6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/06/01-08:35:53.508573 7f52c53fc6c0 Recovering log #130
|
||||
2026/06/01-08:35:53.519646 7f52c53fc6c0 Delete type=3 #128
|
||||
2026/06/01-08:35:53.519709 7f52c53fc6c0 Delete type=0 #130
|
||||
2026/06/01-08:51:10.437011 7f52c4bfb6c0 Level-0 table #135: started
|
||||
2026/06/01-08:51:10.437031 7f52c4bfb6c0 Level-0 table #135: 0 bytes OK
|
||||
2026/06/01-08:51:10.443132 7f52c4bfb6c0 Delete type=0 #133
|
||||
2026/06/01-08:51:10.449915 7f52c4bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.566595 7fc410ffe6c0 Recovering log #162
|
||||
2026/06/12-20:51:44.577675 7fc410ffe6c0 Delete type=3 #160
|
||||
2026/06/12-20:51:44.577730 7fc410ffe6c0 Delete type=0 #162
|
||||
2026/06/12-20:52:05.583251 7fc3c11be6c0 Level-0 table #167: started
|
||||
2026/06/12-20:52:05.583269 7fc3c11be6c0 Level-0 table #167: 0 bytes OK
|
||||
2026/06/12-20:52:05.590142 7fc3c11be6c0 Delete type=0 #165
|
||||
2026/06/12-20:52:05.590369 7fc3c11be6c0 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 @@
|
||||
MANIFEST-000117
|
||||
MANIFEST-000149
|
||||
|
||||
+8
-3
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.852043 7f52c5bfd6c0 Recovering log #115
|
||||
2026/06/01-22:42:05.861694 7f52c5bfd6c0 Delete type=3 #113
|
||||
2026/06/01-22:42:05.861740 7f52c5bfd6c0 Delete type=0 #115
|
||||
2026/06/12-20:52:58.008917 7fc3c3fff6c0 Recovering log #147
|
||||
2026/06/12-20:52:58.019530 7fc3c3fff6c0 Delete type=3 #145
|
||||
2026/06/12-20:52:58.019585 7fc3c3fff6c0 Delete type=0 #147
|
||||
2026/06/12-20:53:22.690192 7fc3c11be6c0 Level-0 table #152: started
|
||||
2026/06/12-20:53:22.690216 7fc3c11be6c0 Level-0 table #152: 0 bytes OK
|
||||
2026/06/12-20:53:22.696652 7fc3c11be6c0 Delete type=0 #150
|
||||
2026/06/12-20:53:22.703367 7fc3c11be6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.717074 7fc3c11be6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.522844 7f52c5bfd6c0 Recovering log #111
|
||||
2026/06/01-08:35:53.532856 7f52c5bfd6c0 Delete type=3 #109
|
||||
2026/06/01-08:35:53.532912 7f52c5bfd6c0 Delete type=0 #111
|
||||
2026/06/01-08:51:10.463428 7f52c4bfb6c0 Level-0 table #116: started
|
||||
2026/06/01-08:51:10.463447 7f52c4bfb6c0 Level-0 table #116: 0 bytes OK
|
||||
2026/06/01-08:51:10.470660 7f52c4bfb6c0 Delete type=0 #114
|
||||
2026/06/01-08:51:10.477037 7f52c4bfb6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.484516 7f52c4bfb6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.581216 7fc3c37fe6c0 Recovering log #143
|
||||
2026/06/12-20:51:44.591542 7fc3c37fe6c0 Delete type=3 #141
|
||||
2026/06/12-20:51:44.591593 7fc3c37fe6c0 Delete type=0 #143
|
||||
2026/06/12-20:52:05.590481 7fc3c11be6c0 Level-0 table #148: started
|
||||
2026/06/12-20:52:05.590505 7fc3c11be6c0 Level-0 table #148: 0 bytes OK
|
||||
2026/06/12-20:52:05.597069 7fc3c11be6c0 Delete type=0 #146
|
||||
2026/06/12-20:52:05.618846 7fc3c11be6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.619137 7fc3c11be6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000144
|
||||
MANIFEST-000176
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.782042 7f52c5bfd6c0 Recovering log #142
|
||||
2026/06/01-22:42:05.791804 7f52c5bfd6c0 Delete type=3 #140
|
||||
2026/06/01-22:42:05.791860 7f52c5bfd6c0 Delete type=0 #142
|
||||
2026/06/12-20:52:57.926432 7fc3c37fe6c0 Recovering log #174
|
||||
2026/06/12-20:52:57.936438 7fc3c37fe6c0 Delete type=3 #172
|
||||
2026/06/12-20:52:57.936485 7fc3c37fe6c0 Delete type=0 #174
|
||||
2026/06/12-20:53:22.649158 7fc3c11be6c0 Level-0 table #179: started
|
||||
2026/06/12-20:53:22.649178 7fc3c11be6c0 Level-0 table #179: 0 bytes OK
|
||||
2026/06/12-20:53:22.655504 7fc3c11be6c0 Delete type=0 #177
|
||||
2026/06/12-20:53:22.676414 7fc3c11be6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.676616 7fc3c11be6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.437746 7f52c6bff6c0 Recovering log #138
|
||||
2026/06/01-08:35:53.448341 7f52c6bff6c0 Delete type=3 #136
|
||||
2026/06/01-08:35:53.448380 7f52c6bff6c0 Delete type=0 #138
|
||||
2026/06/01-08:51:10.443210 7f52c4bfb6c0 Level-0 table #143: started
|
||||
2026/06/01-08:51:10.443229 7f52c4bfb6c0 Level-0 table #143: 0 bytes OK
|
||||
2026/06/01-08:51:10.449810 7f52c4bfb6c0 Delete type=0 #141
|
||||
2026/06/01-08:51:10.450168 7f52c4bfb6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.463413 7f52c4bfb6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.497744 7fc3c3fff6c0 Recovering log #170
|
||||
2026/06/12-20:51:44.508610 7fc3c3fff6c0 Delete type=3 #168
|
||||
2026/06/12-20:51:44.508662 7fc3c3fff6c0 Delete type=0 #170
|
||||
2026/06/12-20:52:05.548467 7fc3c11be6c0 Level-0 table #175: started
|
||||
2026/06/12-20:52:05.548492 7fc3c11be6c0 Level-0 table #175: 0 bytes OK
|
||||
2026/06/12-20:52:05.555571 7fc3c11be6c0 Delete type=0 #173
|
||||
2026/06/12-20:52:05.562235 7fc3c11be6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.562402 7fc3c11be6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||
|
||||
BIN
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000136
|
||||
MANIFEST-000168
|
||||
|
||||
+7
-3
@@ -1,3 +1,7 @@
|
||||
2026/06/01-22:42:05.793837 7f52c53fc6c0 Recovering log #134
|
||||
2026/06/01-22:42:05.803487 7f52c53fc6c0 Delete type=3 #132
|
||||
2026/06/01-22:42:05.803533 7f52c53fc6c0 Delete type=0 #134
|
||||
2026/06/12-20:52:57.939847 7fc4117ff6c0 Recovering log #166
|
||||
2026/06/12-20:52:57.951112 7fc4117ff6c0 Delete type=3 #164
|
||||
2026/06/12-20:52:57.951166 7fc4117ff6c0 Delete type=0 #166
|
||||
2026/06/12-20:53:22.655606 7fc3c11be6c0 Level-0 table #171: started
|
||||
2026/06/12-20:53:22.655631 7fc3c11be6c0 Level-0 table #171: 0 bytes OK
|
||||
2026/06/12-20:53:22.662292 7fc3c11be6c0 Delete type=0 #169
|
||||
2026/06/12-20:53:22.676430 7fc3c11be6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
2026/06/01-08:35:53.451848 7f52c63fe6c0 Recovering log #130
|
||||
2026/06/01-08:35:53.463255 7f52c63fe6c0 Delete type=3 #128
|
||||
2026/06/01-08:35:53.463313 7f52c63fe6c0 Delete type=0 #130
|
||||
2026/06/01-08:51:10.417333 7f52c4bfb6c0 Level-0 table #135: started
|
||||
2026/06/01-08:51:10.417354 7f52c4bfb6c0 Level-0 table #135: 0 bytes OK
|
||||
2026/06/01-08:51:10.423737 7f52c4bfb6c0 Delete type=0 #133
|
||||
2026/06/01-08:51:10.424133 7f52c4bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.511682 7fc410ffe6c0 Recovering log #162
|
||||
2026/06/12-20:51:44.521666 7fc410ffe6c0 Delete type=3 #160
|
||||
2026/06/12-20:51:44.521720 7fc410ffe6c0 Delete type=0 #162
|
||||
2026/06/12-20:52:05.555691 7fc3c11be6c0 Level-0 table #167: started
|
||||
2026/06/12-20:52:05.555716 7fc3c11be6c0 Level-0 table #167: 0 bytes OK
|
||||
2026/06/12-20:52:05.562097 7fc3c11be6c0 Delete type=0 #165
|
||||
2026/06/12-20:52:05.562305 7fc3c11be6c0 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 @@
|
||||
MANIFEST-000144
|
||||
MANIFEST-000176
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.817864 7f52c6bff6c0 Recovering log #142
|
||||
2026/06/01-22:42:05.827428 7f52c6bff6c0 Delete type=3 #140
|
||||
2026/06/01-22:42:05.827476 7f52c6bff6c0 Delete type=0 #142
|
||||
2026/06/12-20:52:57.967451 7fc4117ff6c0 Recovering log #174
|
||||
2026/06/12-20:52:57.978196 7fc4117ff6c0 Delete type=3 #172
|
||||
2026/06/12-20:52:57.978251 7fc4117ff6c0 Delete type=0 #174
|
||||
2026/06/12-20:53:22.696764 7fc3c11be6c0 Level-0 table #179: started
|
||||
2026/06/12-20:53:22.696789 7fc3c11be6c0 Level-0 table #179: 0 bytes OK
|
||||
2026/06/12-20:53:22.703214 7fc3c11be6c0 Delete type=0 #177
|
||||
2026/06/12-20:53:22.703379 7fc3c11be6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.710437 7fc3c11be6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.480904 7f52c63fe6c0 Recovering log #138
|
||||
2026/06/01-08:35:53.491518 7f52c63fe6c0 Delete type=3 #136
|
||||
2026/06/01-08:35:53.491573 7f52c63fe6c0 Delete type=0 #138
|
||||
2026/06/01-08:51:10.456761 7f52c4bfb6c0 Level-0 table #143: started
|
||||
2026/06/01-08:51:10.456779 7f52c4bfb6c0 Level-0 table #143: 0 bytes OK
|
||||
2026/06/01-08:51:10.463323 7f52c4bfb6c0 Delete type=0 #141
|
||||
2026/06/01-08:51:10.470745 7f52c4bfb6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.477028 7f52c4bfb6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.538990 7fc410ffe6c0 Recovering log #170
|
||||
2026/06/12-20:51:44.550083 7fc410ffe6c0 Delete type=3 #168
|
||||
2026/06/12-20:51:44.550141 7fc410ffe6c0 Delete type=0 #170
|
||||
2026/06/12-20:52:05.569908 7fc3c11be6c0 Level-0 table #175: started
|
||||
2026/06/12-20:52:05.569929 7fc3c11be6c0 Level-0 table #175: 0 bytes OK
|
||||
2026/06/12-20:52:05.576375 7fc3c11be6c0 Delete type=0 #173
|
||||
2026/06/12-20:52:05.590256 7fc3c11be6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.590425 7fc3c11be6c0 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.
@@ -0,0 +1 @@
|
||||
MANIFEST-000014
|
||||
@@ -0,0 +1,8 @@
|
||||
2026/06/12-20:52:58.209985 7fc3c3fff6c0 Recovering log #12
|
||||
2026/06/12-20:52:58.222276 7fc3c3fff6c0 Delete type=3 #10
|
||||
2026/06/12-20:52:58.222315 7fc3c3fff6c0 Delete type=0 #12
|
||||
2026/06/12-20:53:22.822733 7fc3c11be6c0 Level-0 table #17: started
|
||||
2026/06/12-20:53:22.822761 7fc3c11be6c0 Level-0 table #17: 0 bytes OK
|
||||
2026/06/12-20:53:22.829641 7fc3c11be6c0 Delete type=0 #15
|
||||
2026/06/12-20:53:22.836426 7fc3c11be6c0 Manual compaction at level-0 from '!actors!DL3zXfXxWMOQhXJY' @ 72057594037927935 : 1 .. '!actors.items!JAHYXFedTxNlGYX8.nmIgA3CQkOSEpCSP' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.960032 7fc3c11be6c0 Manual compaction at level-1 from '!actors!DL3zXfXxWMOQhXJY' @ 72057594037927935 : 1 .. '!actors.items!JAHYXFedTxNlGYX8.nmIgA3CQkOSEpCSP' @ 0 : 0; will stop at (end)
|
||||
@@ -0,0 +1,8 @@
|
||||
2026/06/12-20:51:44.772467 7fc3c37fe6c0 Recovering log #8
|
||||
2026/06/12-20:51:44.784739 7fc3c37fe6c0 Delete type=3 #6
|
||||
2026/06/12-20:51:44.784799 7fc3c37fe6c0 Delete type=0 #8
|
||||
2026/06/12-20:52:05.700099 7fc3c11be6c0 Level-0 table #13: started
|
||||
2026/06/12-20:52:05.700122 7fc3c11be6c0 Level-0 table #13: 0 bytes OK
|
||||
2026/06/12-20:52:05.707051 7fc3c11be6c0 Delete type=0 #11
|
||||
2026/06/12-20:52:05.714022 7fc3c11be6c0 Manual compaction at level-0 from '!actors!DL3zXfXxWMOQhXJY' @ 72057594037927935 : 1 .. '!actors.items!JAHYXFedTxNlGYX8.nmIgA3CQkOSEpCSP' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.714257 7fc3c11be6c0 Manual compaction at level-1 from '!actors!DL3zXfXxWMOQhXJY' @ 72057594037927935 : 1 .. '!actors.items!JAHYXFedTxNlGYX8.nmIgA3CQkOSEpCSP' @ 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.
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 @@
|
||||
MANIFEST-000171
|
||||
MANIFEST-000291
|
||||
|
||||
+19
-104
@@ -1,104 +1,19 @@
|
||||
2026/06/01-22:42:05.898881 7f52c6bff6c0 Recovering log #164
|
||||
2026/06/01-22:42:05.908070 7f52c6bff6c0 Delete type=3 #158
|
||||
2026/06/01-22:42:05.908116 7f52c6bff6c0 Delete type=0 #164
|
||||
2026/06/01-22:42:20.631787 7f52c4bfb6c0 Level-0 table #174: started
|
||||
2026/06/01-22:42:20.664092 7f52c4bfb6c0 Level-0 table #174: 3534281 bytes OK
|
||||
2026/06/01-22:42:20.670615 7f52c4bfb6c0 Delete type=0 #172
|
||||
2026/06/01-22:44:14.476907 7f52c4bfb6c0 Level-0 table #176: started
|
||||
2026/06/01-22:44:14.517289 7f52c4bfb6c0 Level-0 table #176: 3590317 bytes OK
|
||||
2026/06/01-22:44:14.524467 7f52c4bfb6c0 Delete type=0 #173
|
||||
2026/06/01-22:46:05.183822 7f52c4bfb6c0 Level-0 table #178: started
|
||||
2026/06/01-22:46:05.221801 7f52c4bfb6c0 Level-0 table #178: 3635543 bytes OK
|
||||
2026/06/01-22:46:05.228261 7f52c4bfb6c0 Delete type=0 #175
|
||||
2026/06/01-22:47:46.984190 7f52c4bfb6c0 Level-0 table #180: started
|
||||
2026/06/01-22:47:47.016424 7f52c4bfb6c0 Level-0 table #180: 3689250 bytes OK
|
||||
2026/06/01-22:47:47.022818 7f52c4bfb6c0 Delete type=0 #177
|
||||
2026/06/01-22:49:07.037465 7f52c4bfb6c0 Level-0 table #182: started
|
||||
2026/06/01-22:49:07.113718 7f52c4bfb6c0 Level-0 table #182: 3742709 bytes OK
|
||||
2026/06/01-22:49:07.141920 7f52c4bfb6c0 Delete type=0 #179
|
||||
2026/06/01-22:49:07.142905 7f52c4bfb6c0 Compacting 4@0 + 1@1 files
|
||||
2026/06/01-22:49:07.200300 7f52c4bfb6c0 Generated table #183@0: 12232 keys, 2147703 bytes
|
||||
2026/06/01-22:49:07.251271 7f52c4bfb6c0 Generated table #184@0: 12346 keys, 1594009 bytes
|
||||
2026/06/01-22:49:07.251297 7f52c4bfb6c0 Compacted 4@0 + 1@1 files => 3741712 bytes
|
||||
2026/06/01-22:49:07.282491 7f52c4bfb6c0 compacted to: files[ 0 2 2 0 0 0 0 ]
|
||||
2026/06/01-22:49:07.282953 7f52c4bfb6c0 Delete type=2 #174
|
||||
2026/06/01-22:49:07.283509 7f52c4bfb6c0 Delete type=2 #176
|
||||
2026/06/01-22:49:07.284069 7f52c4bfb6c0 Delete type=2 #178
|
||||
2026/06/01-22:49:07.284659 7f52c4bfb6c0 Delete type=2 #180
|
||||
2026/06/01-22:49:07.285224 7f52c4bfb6c0 Delete type=2 #182
|
||||
2026/06/01-22:50:15.076056 7f52c4bfb6c0 Level-0 table #186: started
|
||||
2026/06/01-22:50:15.139569 7f52c4bfb6c0 Level-0 table #186: 3791699 bytes OK
|
||||
2026/06/01-22:50:15.177008 7f52c4bfb6c0 Delete type=0 #181
|
||||
2026/06/01-22:51:23.050617 7f52c4bfb6c0 Level-0 table #188: started
|
||||
2026/06/01-22:51:23.083717 7f52c4bfb6c0 Level-0 table #188: 3847811 bytes OK
|
||||
2026/06/01-22:51:23.090754 7f52c4bfb6c0 Delete type=0 #185
|
||||
2026/06/01-22:54:31.041731 7f52c4bfb6c0 Level-0 table #190: started
|
||||
2026/06/01-22:54:31.075783 7f52c4bfb6c0 Level-0 table #190: 3898158 bytes OK
|
||||
2026/06/01-22:54:31.085709 7f52c4bfb6c0 Delete type=0 #187
|
||||
2026/06/01-22:56:43.017283 7f52c4bfb6c0 Level-0 table #192: started
|
||||
2026/06/01-22:56:43.056579 7f52c4bfb6c0 Level-0 table #192: 3942180 bytes OK
|
||||
2026/06/01-22:56:43.067120 7f52c4bfb6c0 Delete type=0 #189
|
||||
2026/06/01-22:56:43.067709 7f52c4bfb6c0 Compacting 4@0 + 2@1 files
|
||||
2026/06/01-22:56:43.096331 7f52c4bfb6c0 Generated table #193@0: 12110 keys, 2146786 bytes
|
||||
2026/06/01-22:56:43.123233 7f52c4bfb6c0 Generated table #194@0: 13796 keys, 1794145 bytes
|
||||
2026/06/01-22:56:43.123251 7f52c4bfb6c0 Compacted 4@0 + 2@1 files => 3940931 bytes
|
||||
2026/06/01-22:56:43.135664 7f52c4bfb6c0 compacted to: files[ 0 2 2 0 0 0 0 ]
|
||||
2026/06/01-22:56:43.136005 7f52c4bfb6c0 Delete type=2 #183
|
||||
2026/06/01-22:56:43.136216 7f52c4bfb6c0 Delete type=2 #184
|
||||
2026/06/01-22:56:43.136413 7f52c4bfb6c0 Delete type=2 #186
|
||||
2026/06/01-22:56:43.136721 7f52c4bfb6c0 Delete type=2 #188
|
||||
2026/06/01-22:56:43.137001 7f52c4bfb6c0 Delete type=2 #190
|
||||
2026/06/01-22:56:43.137270 7f52c4bfb6c0 Delete type=2 #192
|
||||
2026/06/01-23:02:49.561038 7f52c4bfb6c0 Level-0 table #196: started
|
||||
2026/06/01-23:02:49.590283 7f52c4bfb6c0 Level-0 table #196: 3996082 bytes OK
|
||||
2026/06/01-23:02:49.596507 7f52c4bfb6c0 Delete type=0 #191
|
||||
2026/06/01-23:05:28.996035 7f52c4bfb6c0 Level-0 table #198: started
|
||||
2026/06/01-23:05:29.028796 7f52c4bfb6c0 Level-0 table #198: 4042529 bytes OK
|
||||
2026/06/01-23:05:29.035710 7f52c4bfb6c0 Delete type=0 #195
|
||||
2026/06/01-23:11:22.779385 7f52c4bfb6c0 Level-0 table #200: started
|
||||
2026/06/01-23:11:22.817516 7f52c4bfb6c0 Level-0 table #200: 4095432 bytes OK
|
||||
2026/06/01-23:11:22.823424 7f52c4bfb6c0 Delete type=0 #197
|
||||
2026/06/01-23:19:54.339957 7f52c4bfb6c0 Level-0 table #202: started
|
||||
2026/06/01-23:19:54.367799 7f52c4bfb6c0 Level-0 table #202: 4146311 bytes OK
|
||||
2026/06/01-23:19:54.373753 7f52c4bfb6c0 Delete type=0 #199
|
||||
2026/06/01-23:19:54.374306 7f52c4bfb6c0 Compacting 4@0 + 2@1 files
|
||||
2026/06/01-23:19:54.395646 7f52c4bfb6c0 Generated table #203@0: 11893 keys, 2146843 bytes
|
||||
2026/06/01-23:19:54.419845 7f52c4bfb6c0 Generated table #204@0: 15341 keys, 1997992 bytes
|
||||
2026/06/01-23:19:54.419877 7f52c4bfb6c0 Compacted 4@0 + 2@1 files => 4144835 bytes
|
||||
2026/06/01-23:19:54.426071 7f52c4bfb6c0 compacted to: files[ 0 2 2 0 0 0 0 ]
|
||||
2026/06/01-23:19:54.426414 7f52c4bfb6c0 Delete type=2 #193
|
||||
2026/06/01-23:19:54.426875 7f52c4bfb6c0 Delete type=2 #194
|
||||
2026/06/01-23:19:54.427165 7f52c4bfb6c0 Delete type=2 #196
|
||||
2026/06/01-23:19:54.427644 7f52c4bfb6c0 Delete type=2 #198
|
||||
2026/06/01-23:19:54.428125 7f52c4bfb6c0 Delete type=2 #200
|
||||
2026/06/01-23:19:54.428618 7f52c4bfb6c0 Delete type=2 #202
|
||||
2026/06/01-23:23:22.212670 7f52c4bfb6c0 Level-0 table #206: started
|
||||
2026/06/01-23:23:22.246031 7f52c4bfb6c0 Level-0 table #206: 4199267 bytes OK
|
||||
2026/06/01-23:23:22.252324 7f52c4bfb6c0 Delete type=0 #201
|
||||
2026/06/01-23:32:01.046035 7f52c4bfb6c0 Level-0 table #208: started
|
||||
2026/06/01-23:32:01.083523 7f52c4bfb6c0 Level-0 table #208: 4245727 bytes OK
|
||||
2026/06/01-23:32:01.090732 7f52c4bfb6c0 Delete type=0 #205
|
||||
2026/06/01-23:34:50.675178 7f52c4bfb6c0 Level-0 table #210: started
|
||||
2026/06/01-23:34:50.708986 7f52c4bfb6c0 Level-0 table #210: 4300427 bytes OK
|
||||
2026/06/01-23:34:50.715366 7f52c4bfb6c0 Delete type=0 #207
|
||||
2026/06/01-23:37:05.691865 7f52c4bfb6c0 Level-0 table #212: started
|
||||
2026/06/01-23:37:05.728371 7f52c4bfb6c0 Level-0 table #212: 4351044 bytes OK
|
||||
2026/06/01-23:37:05.735021 7f52c4bfb6c0 Delete type=0 #209
|
||||
2026/06/01-23:37:05.735982 7f52c4bfb6c0 Compacting 4@0 + 2@1 files
|
||||
2026/06/01-23:37:05.756894 7f52c4bfb6c0 Generated table #213@0: 11588 keys, 2145171 bytes
|
||||
2026/06/01-23:37:05.783035 7f52c4bfb6c0 Generated table #214@0: 16666 keys, 2163321 bytes
|
||||
2026/06/01-23:37:05.787317 7f52c4bfb6c0 Generated table #215@0: 308 keys, 41171 bytes
|
||||
2026/06/01-23:37:05.787329 7f52c4bfb6c0 Compacted 4@0 + 2@1 files => 4349663 bytes
|
||||
2026/06/01-23:37:05.793772 7f52c4bfb6c0 compacted to: files[ 0 3 2 0 0 0 0 ]
|
||||
2026/06/01-23:37:05.793970 7f52c4bfb6c0 Delete type=2 #203
|
||||
2026/06/01-23:37:05.794138 7f52c4bfb6c0 Delete type=2 #204
|
||||
2026/06/01-23:37:05.794271 7f52c4bfb6c0 Delete type=2 #206
|
||||
2026/06/01-23:37:05.794472 7f52c4bfb6c0 Delete type=2 #208
|
||||
2026/06/01-23:37:05.794734 7f52c4bfb6c0 Delete type=2 #210
|
||||
2026/06/01-23:37:05.794942 7f52c4bfb6c0 Delete type=2 #212
|
||||
2026/06/01-23:54:42.760778 7f52c4bfb6c0 Level-0 table #217: started
|
||||
2026/06/01-23:54:42.788274 7f52c4bfb6c0 Level-0 table #217: 4406061 bytes OK
|
||||
2026/06/01-23:54:42.794452 7f52c4bfb6c0 Delete type=0 #211
|
||||
2026/06/02-00:07:09.406466 7f52c4bfb6c0 Level-0 table #219: started
|
||||
2026/06/02-00:07:09.441912 7f52c4bfb6c0 Level-0 table #219: 4455911 bytes OK
|
||||
2026/06/02-00:07:09.447798 7f52c4bfb6c0 Delete type=0 #216
|
||||
2026/06/12-20:52:58.065673 7fc3c3fff6c0 Recovering log #286
|
||||
2026/06/12-20:52:58.076152 7fc3c3fff6c0 Delete type=3 #284
|
||||
2026/06/12-20:52:58.076196 7fc3c3fff6c0 Delete type=0 #286
|
||||
2026/06/12-20:53:22.724394 7fc3c11be6c0 Level-0 table #294: started
|
||||
2026/06/12-20:53:22.813324 7fc3c11be6c0 Level-0 table #294: 5029605 bytes OK
|
||||
2026/06/12-20:53:22.820890 7fc3c11be6c0 Delete type=0 #292
|
||||
2026/06/12-20:53:22.829771 7fc3c11be6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.836453 7fc3c11be6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 1617840 : 1
|
||||
2026/06/12-20:53:22.836460 7fc3c11be6c0 Compacting 1@1 + 3@2 files
|
||||
2026/06/12-20:53:22.873874 7fc3c11be6c0 Generated table #295@1: 10562 keys, 2142429 bytes
|
||||
2026/06/12-20:53:22.924542 7fc3c11be6c0 Generated table #296@1: 16816 keys, 2164017 bytes
|
||||
2026/06/12-20:53:22.944331 7fc3c11be6c0 Generated table #297@1: 5500 keys, 721026 bytes
|
||||
2026/06/12-20:53:22.944361 7fc3c11be6c0 Compacted 1@1 + 3@2 files => 5027472 bytes
|
||||
2026/06/12-20:53:22.951445 7fc3c11be6c0 compacted to: files[ 0 0 3 0 0 0 0 ]
|
||||
2026/06/12-20:53:22.951933 7fc3c11be6c0 Delete type=2 #288
|
||||
2026/06/12-20:53:22.952420 7fc3c11be6c0 Delete type=2 #289
|
||||
2026/06/12-20:53:22.952708 7fc3c11be6c0 Delete type=2 #290
|
||||
2026/06/12-20:53:22.953103 7fc3c11be6c0 Delete type=2 #294
|
||||
2026/06/12-20:53:22.960065 7fc3c11be6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 1617840 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end)
|
||||
|
||||
+19
-39
@@ -1,39 +1,19 @@
|
||||
2026/06/01-08:35:53.577873 7f52c53fc6c0 Recovering log #151
|
||||
2026/06/01-08:35:53.588883 7f52c53fc6c0 Delete type=3 #115
|
||||
2026/06/01-08:35:53.588945 7f52c53fc6c0 Delete type=0 #151
|
||||
2026/06/01-08:47:35.073031 7f52c4bfb6c0 Level-0 table #161: started
|
||||
2026/06/01-08:47:35.109060 7f52c4bfb6c0 Level-0 table #161: 3389567 bytes OK
|
||||
2026/06/01-08:47:35.119693 7f52c4bfb6c0 Delete type=0 #159
|
||||
2026/06/01-08:49:55.679233 7f52c4bfb6c0 Level-0 table #163: started
|
||||
2026/06/01-08:49:55.721583 7f52c4bfb6c0 Level-0 table #163: 3442926 bytes OK
|
||||
2026/06/01-08:49:55.728383 7f52c4bfb6c0 Delete type=0 #160
|
||||
2026/06/01-08:51:10.512438 7f52c4bfb6c0 Level-0 table #165: started
|
||||
2026/06/01-08:51:10.552653 7f52c4bfb6c0 Level-0 table #165: 3485558 bytes OK
|
||||
2026/06/01-08:51:10.559696 7f52c4bfb6c0 Delete type=0 #162
|
||||
2026/06/01-08:51:10.560948 7f52c4bfb6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 761930 : 1
|
||||
2026/06/01-08:51:10.560964 7f52c4bfb6c0 Compacting 2@0 + 1@1 files
|
||||
2026/06/01-08:51:10.590673 7f52c4bfb6c0 Generated table #166@0: 12461 keys, 2148113 bytes
|
||||
2026/06/01-08:51:10.614131 7f52c4bfb6c0 Generated table #167@0: 10457 keys, 1336575 bytes
|
||||
2026/06/01-08:51:10.614152 7f52c4bfb6c0 Compacted 2@0 + 1@1 files => 3484688 bytes
|
||||
2026/06/01-08:51:10.620854 7f52c4bfb6c0 compacted to: files[ 0 2 2 0 0 0 0 ]
|
||||
2026/06/01-08:51:10.621202 7f52c4bfb6c0 Delete type=2 #161
|
||||
2026/06/01-08:51:10.621653 7f52c4bfb6c0 Delete type=2 #163
|
||||
2026/06/01-08:51:10.622090 7f52c4bfb6c0 Delete type=2 #165
|
||||
2026/06/01-08:51:10.641251 7f52c4bfb6c0 Manual compaction at level-0 from '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 761930 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.649348 7f52c4bfb6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!e9c7LNgXUFbYLZF1.0q5zLunzoX2kqo8m' @ 780825 : 1
|
||||
2026/06/01-08:51:10.649351 7f52c4bfb6c0 Compacting 1@1 + 1@2 files
|
||||
2026/06/01-08:51:10.679226 7f52c4bfb6c0 Generated table #168@1: 12461 keys, 2148113 bytes
|
||||
2026/06/01-08:51:10.684351 7f52c4bfb6c0 Generated table #169@1: 755 keys, 94591 bytes
|
||||
2026/06/01-08:51:10.684370 7f52c4bfb6c0 Compacted 1@1 + 1@2 files => 2242704 bytes
|
||||
2026/06/01-08:51:10.692020 7f52c4bfb6c0 compacted to: files[ 0 1 3 0 0 0 0 ]
|
||||
2026/06/01-08:51:10.692313 7f52c4bfb6c0 Delete type=2 #155
|
||||
2026/06/01-08:51:10.692659 7f52c4bfb6c0 Delete type=2 #166
|
||||
2026/06/01-08:51:10.711439 7f52c4bfb6c0 Manual compaction at level-1 from '!tables.results!e9c7LNgXUFbYLZF1.0q5zLunzoX2kqo8m' @ 780825 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 784560 : 1
|
||||
2026/06/01-08:51:10.711444 7f52c4bfb6c0 Compacting 1@1 + 2@2 files
|
||||
2026/06/01-08:51:10.734315 7f52c4bfb6c0 Generated table #170@1: 10457 keys, 1336575 bytes
|
||||
2026/06/01-08:51:10.734332 7f52c4bfb6c0 Compacted 1@1 + 2@2 files => 1336575 bytes
|
||||
2026/06/01-08:51:10.741118 7f52c4bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ]
|
||||
2026/06/01-08:51:10.741262 7f52c4bfb6c0 Delete type=2 #157
|
||||
2026/06/01-08:51:10.741508 7f52c4bfb6c0 Delete type=2 #167
|
||||
2026/06/01-08:51:10.741680 7f52c4bfb6c0 Delete type=2 #169
|
||||
2026/06/01-08:51:10.747933 7f52c4bfb6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 784560 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.638713 7fc410ffe6c0 Recovering log #279
|
||||
2026/06/12-20:51:44.649235 7fc410ffe6c0 Delete type=3 #277
|
||||
2026/06/12-20:51:44.649296 7fc410ffe6c0 Delete type=0 #279
|
||||
2026/06/12-20:52:05.627084 7fc3c11be6c0 Level-0 table #287: started
|
||||
2026/06/12-20:52:05.691136 7fc3c11be6c0 Level-0 table #287: 4971536 bytes OK
|
||||
2026/06/12-20:52:05.698145 7fc3c11be6c0 Delete type=0 #285
|
||||
2026/06/12-20:52:05.714008 7fc3c11be6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.714299 7fc3c11be6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 1585250 : 1
|
||||
2026/06/12-20:52:05.714307 7fc3c11be6c0 Compacting 1@1 + 3@2 files
|
||||
2026/06/12-20:52:05.744344 7fc3c11be6c0 Generated table #288@1: 10660 keys, 2142130 bytes
|
||||
2026/06/12-20:52:05.781422 7fc3c11be6c0 Generated table #289@1: 16841 keys, 2165292 bytes
|
||||
2026/06/12-20:52:05.794598 7fc3c11be6c0 Generated table #290@1: 5045 keys, 662072 bytes
|
||||
2026/06/12-20:52:05.794618 7fc3c11be6c0 Compacted 1@1 + 3@2 files => 4969494 bytes
|
||||
2026/06/12-20:52:05.801998 7fc3c11be6c0 compacted to: files[ 0 0 3 0 0 0 0 ]
|
||||
2026/06/12-20:52:05.802346 7fc3c11be6c0 Delete type=2 #281
|
||||
2026/06/12-20:52:05.802678 7fc3c11be6c0 Delete type=2 #282
|
||||
2026/06/12-20:52:05.802871 7fc3c11be6c0 Delete type=2 #283
|
||||
2026/06/12-20:52:05.803095 7fc3c11be6c0 Delete type=2 #287
|
||||
2026/06/12-20:52:05.821244 7fc3c11be6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 1585250 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000090
|
||||
MANIFEST-000122
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
2026/06/01-22:42:05.875087 7f52c6bff6c0 Recovering log #88
|
||||
2026/06/01-22:42:05.885101 7f52c6bff6c0 Delete type=3 #86
|
||||
2026/06/01-22:42:05.885133 7f52c6bff6c0 Delete type=0 #88
|
||||
2026/06/12-20:52:58.037556 7fc3c3fff6c0 Recovering log #120
|
||||
2026/06/12-20:52:58.047938 7fc3c3fff6c0 Delete type=3 #118
|
||||
2026/06/12-20:52:58.048005 7fc3c3fff6c0 Delete type=0 #120
|
||||
2026/06/12-20:53:22.710451 7fc3c11be6c0 Level-0 table #125: started
|
||||
2026/06/12-20:53:22.710474 7fc3c11be6c0 Level-0 table #125: 0 bytes OK
|
||||
2026/06/12-20:53:22.716951 7fc3c11be6c0 Delete type=0 #123
|
||||
2026/06/12-20:53:22.724368 7fc3c11be6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:53:22.822717 7fc3c11be6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/06/01-08:35:53.549764 7f52c5bfd6c0 Recovering log #84
|
||||
2026/06/01-08:35:53.560355 7f52c5bfd6c0 Delete type=3 #82
|
||||
2026/06/01-08:35:53.560413 7f52c5bfd6c0 Delete type=0 #84
|
||||
2026/06/01-08:51:10.491490 7f52c4bfb6c0 Level-0 table #89: started
|
||||
2026/06/01-08:51:10.491513 7f52c4bfb6c0 Level-0 table #89: 0 bytes OK
|
||||
2026/06/01-08:51:10.498412 7f52c4bfb6c0 Delete type=0 #87
|
||||
2026/06/01-08:51:10.505791 7f52c4bfb6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||
2026/06/01-08:51:10.560715 7f52c4bfb6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:51:44.607543 7fc410ffe6c0 Recovering log #116
|
||||
2026/06/12-20:51:44.622157 7fc410ffe6c0 Delete type=3 #114
|
||||
2026/06/12-20:51:44.622215 7fc410ffe6c0 Delete type=0 #116
|
||||
2026/06/12-20:52:05.604539 7fc3c11be6c0 Level-0 table #121: started
|
||||
2026/06/12-20:52:05.604563 7fc3c11be6c0 Level-0 table #121: 0 bytes OK
|
||||
2026/06/12-20:52:05.611212 7fc3c11be6c0 Delete type=0 #119
|
||||
2026/06/12-20:52:05.618870 7fc3c11be6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||
2026/06/12-20:52:05.619129 7fc3c11be6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
+88
-2
@@ -1,5 +1,6 @@
|
||||
import { formatCredits } from './tradeHelper.js';
|
||||
import { createNpcActor, generateClientMission, generateEncounter, generateQuickNpc } from './npcHelper.js';
|
||||
import { createNpcActor, generateClientMission, generateEncounter, generateQuickNpc, formatSigned } from './npcHelper.js';
|
||||
import { generateAllyEnemy } from './allyEnemyGenerator.js';
|
||||
import { NPC_RELATIONS } from './data/npcTables.js';
|
||||
import { generateAndCreateTravellerNpc } from './travellerNpcGenerator.js';
|
||||
import { generateRandomName } from './data/travellerNpcGenerator.js';
|
||||
@@ -68,6 +69,13 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||
actorName: '',
|
||||
openCreatedActor: DEFAULT_OPTIONS.openCreatedActor,
|
||||
},
|
||||
ae: {
|
||||
relation: options.relation ?? 'contact',
|
||||
includeSpecial: true,
|
||||
createActor: false,
|
||||
actorName: '',
|
||||
openCreatedActor: true,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -138,6 +146,12 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||
await this._handleTravellerNpc();
|
||||
});
|
||||
|
||||
html.find('[data-action="generate-ally-enemy"]').on('click', async (event) => {
|
||||
event.preventDefault();
|
||||
this._readForm(html);
|
||||
await this._handleAllyEnemy();
|
||||
});
|
||||
|
||||
html.find('[data-action="randomize-name"]').on('click', (event) => {
|
||||
event.preventDefault();
|
||||
this._randomizeTravellerName(html);
|
||||
@@ -205,6 +219,13 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||
this._formData.encounter.context = html.find('[name="encounter.context"]').val();
|
||||
this._formData.encounter.includeFollowUp = html.find('[name="encounter.includeFollowUp"]').is(':checked');
|
||||
|
||||
// Données pour l'onglet Alliés/Ennemis
|
||||
this._formData.ae.relation = html.find('[name="ae.relation"]').val();
|
||||
this._formData.ae.includeSpecial = html.find('[name="ae.includeSpecial"]').is(':checked');
|
||||
this._formData.ae.createActor = html.find('[name="ae.createActor"]').is(':checked');
|
||||
this._formData.ae.actorName = html.find('[name="ae.actorName"]').val();
|
||||
this._formData.ae.openCreatedActor = html.find('[name="ae.openCreatedActor"]').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();
|
||||
@@ -281,6 +302,60 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||
}
|
||||
}
|
||||
|
||||
async _handleAllyEnemy() {
|
||||
const button = $(this.element).find('[data-action="generate-ally-enemy"]');
|
||||
const originalLabel = button.html();
|
||||
|
||||
try {
|
||||
button.prop('disabled', true).html('<i class="fas fa-spinner fa-spin"></i> Génération...');
|
||||
|
||||
const result = await generateAllyEnemy(this._formData.ae.relation, {
|
||||
includeSpecial: this._formData.ae.includeSpecial,
|
||||
});
|
||||
|
||||
if (result.success) {
|
||||
if (this._formData.ae.createActor) {
|
||||
const ae = this._formData.ae;
|
||||
const actorName = ae.actorName?.trim() || `PNJ — ${result.relation.label}`;
|
||||
const baseActorSystem = game.system?.id === 'mgt2e'
|
||||
? await (await import('./travellerNpcGenerator.js')).getMgt2eBaseActorSystem()
|
||||
: null;
|
||||
const actorData = {
|
||||
name: actorName,
|
||||
type: 'npc',
|
||||
img: 'systems/mgt2e/icons/cargo/passenger-middle.svg',
|
||||
system: {
|
||||
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.relation.label,
|
||||
}),
|
||||
characteristics: foundry.utils.deepClone(baseActorSystem?.characteristics ?? {}),
|
||||
hits: foundry.utils.deepClone(baseActorSystem?.hits ?? {}),
|
||||
skills: foundry.utils.deepClone(baseActorSystem?.skills ?? {}),
|
||||
},
|
||||
flags: {
|
||||
[MODULE_ID]: { generatedAllyEnemy: { relation: result.relation.key } },
|
||||
},
|
||||
};
|
||||
const actor = await Actor.create(actorData, { renderSheet: false });
|
||||
result.createdActor = { id: actor.id, name: actor.name };
|
||||
if (ae.openCreatedActor) actor.sheet?.render(true);
|
||||
ui.notifications.info(`Fiche PNJ créée : ${actor.name}`);
|
||||
}
|
||||
await this._postToChatResult(result);
|
||||
} else {
|
||||
ui.notifications.error('Erreur lors de la génération de la relation');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`${MODULE_ID} | Erreur AE:`, 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);
|
||||
@@ -295,13 +370,15 @@ export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||
async _postToChatResult(data) {
|
||||
registerHandlebarsHelpers();
|
||||
|
||||
// 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';
|
||||
} else if (data.type === 'ally-enemy') {
|
||||
template = `modules/${MODULE_ID}/templates/ally-enemy-result.hbs`;
|
||||
resultType = 'ally-enemy-result';
|
||||
}
|
||||
|
||||
const html = await foundry.applications.handlebars.renderTemplate(template, data);
|
||||
@@ -369,4 +446,13 @@ function registerHandlebarsHelpers() {
|
||||
if (!obj || !key) return '';
|
||||
return obj[key] !== undefined ? obj[key] : '';
|
||||
});
|
||||
|
||||
const RELATION_LABELS = Object.entries(NPC_RELATIONS).reduce((acc, [key, val]) => {
|
||||
acc[key] = val.label;
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
Handlebars.registerHelper('lookupRelationKey', (key) => RELATION_LABELS[key] || key);
|
||||
|
||||
Handlebars.registerHelper('formatSigned', (value) => formatSigned(value));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,277 @@
|
||||
import { NPC_RELATIONS } from './data/npcTables.js';
|
||||
import {
|
||||
RELATION_FORMULAS,
|
||||
AFFINITY_INIMITY_MAP,
|
||||
POWER_INFLUENCE_MAP,
|
||||
AFFINITY_LABELS,
|
||||
INIMITY_LABELS,
|
||||
POWER_LABELS,
|
||||
INFLUENCE_LABELS,
|
||||
SPECIAL_CHARACTERISTICS_TABLE,
|
||||
} from './data/allyEnemyTables.js';
|
||||
|
||||
export function mapRollToValue(roll, mapping) {
|
||||
return mapping[roll] ?? 0;
|
||||
}
|
||||
|
||||
export function getLabel(value, labels) {
|
||||
return labels.find(l => l.value === Math.abs(value)) ?? labels[0];
|
||||
}
|
||||
|
||||
export function clamp(value, min, max) {
|
||||
return Math.max(min, Math.min(max, value));
|
||||
}
|
||||
|
||||
async function rollFormula(formula) {
|
||||
const roll = await new Roll(formula).evaluate();
|
||||
return { formula, total: roll.total };
|
||||
}
|
||||
|
||||
function getD66Entry(entries, total) {
|
||||
return entries.find(e => e.d66 === total) ?? null;
|
||||
}
|
||||
|
||||
async function rollD66(entries) {
|
||||
const tens = await rollFormula('1d6');
|
||||
const ones = await rollFormula('1d6');
|
||||
const total = (tens.total * 10) + ones.total;
|
||||
return {
|
||||
total,
|
||||
tens: tens.total,
|
||||
ones: ones.total,
|
||||
entry: getD66Entry(entries, total),
|
||||
};
|
||||
}
|
||||
|
||||
async function rollAffinityInimity(relationKey) {
|
||||
const formulas = RELATION_FORMULAS[relationKey];
|
||||
let affinityRoll = null;
|
||||
let inimityRoll = null;
|
||||
|
||||
if (formulas.affinity !== '0') {
|
||||
affinityRoll = await rollFormula(formulas.affinity);
|
||||
}
|
||||
if (formulas.inimity !== '0') {
|
||||
inimityRoll = await rollFormula(formulas.inimity);
|
||||
}
|
||||
|
||||
return {
|
||||
affinityValue: affinityRoll ? mapRollToValue(affinityRoll.total, AFFINITY_INIMITY_MAP) : 0,
|
||||
inimityValue: inimityRoll ? mapRollToValue(inimityRoll.total, AFFINITY_INIMITY_MAP) : 0,
|
||||
affinityRoll,
|
||||
inimityRoll,
|
||||
formulas,
|
||||
};
|
||||
}
|
||||
|
||||
async function resolveSpecialCharacteristics(currentRelationKey, depth = 0) {
|
||||
if (depth > 5) return [];
|
||||
|
||||
const d66Result = await rollD66(SPECIAL_CHARACTERISTICS_TABLE);
|
||||
if (!d66Result.entry) return [];
|
||||
|
||||
const entry = d66Result.entry;
|
||||
const result = {
|
||||
d66: d66Result.total,
|
||||
text: entry.text,
|
||||
effects: entry.effects,
|
||||
appliedDeltas: { affinity: 0, inimity: 0, power: 0, influence: 0 },
|
||||
rerollNote: null,
|
||||
swapNote: null,
|
||||
narrativeText: entry.effects.action === 'narrativeOnly' ? entry.text : null,
|
||||
newRelationKey: null,
|
||||
subCharacteristics: [],
|
||||
};
|
||||
|
||||
if (entry.effects.affinityMod) result.appliedDeltas.affinity = entry.effects.affinityMod;
|
||||
if (entry.effects.inimityMod) result.appliedDeltas.inimity = entry.effects.inimityMod;
|
||||
if (entry.effects.powerMod) result.appliedDeltas.power = entry.effects.powerMod;
|
||||
if (entry.effects.influenceMod) result.appliedDeltas.influence = entry.effects.influenceMod;
|
||||
|
||||
if (entry.effects.action === 'extraRolls') {
|
||||
const count = entry.effects.actionValue || 1;
|
||||
for (let i = 0; i < count; i++) {
|
||||
const extra = await resolveSpecialCharacteristics(currentRelationKey, depth + 1);
|
||||
result.subCharacteristics.push(...extra);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export async function generateAllyEnemy(relationKey = 'contact', options = {}) {
|
||||
const relation = NPC_RELATIONS[relationKey];
|
||||
let currentRelationKey = relationKey;
|
||||
|
||||
const initial = await rollAffinityInimity(relationKey);
|
||||
let affinityValue = initial.affinityValue;
|
||||
let inimityValue = initial.inimityValue;
|
||||
let affinityRoll = initial.affinityRoll;
|
||||
let inimityRoll = initial.inimityRoll;
|
||||
let currentFormulas = initial.formulas;
|
||||
|
||||
const powerRoll = await rollFormula('2d6');
|
||||
const influenceRoll = await rollFormula('2d6');
|
||||
let powerValue = mapRollToValue(powerRoll.total, POWER_INFLUENCE_MAP);
|
||||
let influenceValue = mapRollToValue(influenceRoll.total, POWER_INFLUENCE_MAP);
|
||||
|
||||
let specialRoll = null;
|
||||
let specialCharacteristics = [];
|
||||
|
||||
if (options.includeSpecial !== false) {
|
||||
specialRoll = await rollFormula('2d6');
|
||||
|
||||
if (specialRoll.total >= 8) {
|
||||
let queue = await resolveSpecialCharacteristics(currentRelationKey);
|
||||
|
||||
while (queue.length > 0) {
|
||||
const sc = queue.shift();
|
||||
|
||||
if (sc.effects.action === 'extraRolls') {
|
||||
queue.push(...sc.subCharacteristics);
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'moderateRelation') {
|
||||
if (currentRelationKey === 'enemy') {
|
||||
currentRelationKey = 'rival';
|
||||
const rerolled = await rollAffinityInimity(currentRelationKey);
|
||||
affinityValue = rerolled.affinityValue;
|
||||
inimityValue = rerolled.inimityValue;
|
||||
affinityRoll = rerolled.affinityRoll;
|
||||
inimityRoll = rerolled.inimityRoll;
|
||||
currentFormulas = rerolled.formulas;
|
||||
sc.newRelationKey = currentRelationKey;
|
||||
} else if (currentRelationKey === 'ally') {
|
||||
currentRelationKey = 'contact';
|
||||
const rerolled = await rollAffinityInimity(currentRelationKey);
|
||||
affinityValue = rerolled.affinityValue;
|
||||
inimityValue = rerolled.inimityValue;
|
||||
affinityRoll = rerolled.affinityRoll;
|
||||
inimityRoll = rerolled.inimityRoll;
|
||||
currentFormulas = rerolled.formulas;
|
||||
sc.newRelationKey = currentRelationKey;
|
||||
}
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'intensifyRelation') {
|
||||
if (currentRelationKey === 'rival') {
|
||||
currentRelationKey = 'enemy';
|
||||
const rerolled = await rollAffinityInimity(currentRelationKey);
|
||||
affinityValue = rerolled.affinityValue;
|
||||
inimityValue = rerolled.inimityValue;
|
||||
affinityRoll = rerolled.affinityRoll;
|
||||
inimityRoll = rerolled.inimityRoll;
|
||||
currentFormulas = rerolled.formulas;
|
||||
sc.newRelationKey = currentRelationKey;
|
||||
} else if (currentRelationKey === 'contact') {
|
||||
currentRelationKey = 'ally';
|
||||
const rerolled = await rollAffinityInimity(currentRelationKey);
|
||||
affinityValue = rerolled.affinityValue;
|
||||
inimityValue = rerolled.inimityValue;
|
||||
affinityRoll = rerolled.affinityRoll;
|
||||
inimityRoll = rerolled.inimityRoll;
|
||||
currentFormulas = rerolled.formulas;
|
||||
sc.newRelationKey = currentRelationKey;
|
||||
}
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'reRollAffinity') {
|
||||
const reroll = await rollFormula('2d6');
|
||||
const rerolledValue = mapRollToValue(reroll.total, AFFINITY_INIMITY_MAP);
|
||||
if (rerolledValue > affinityValue) {
|
||||
sc.rerollNote = `Affinité relancée : ${reroll.total} → ${rerolledValue} (était ${affinityValue})`;
|
||||
sc.appliedDeltas.affinity = rerolledValue - affinityValue;
|
||||
}
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'reRollInimity') {
|
||||
const reroll = await rollFormula('2d6');
|
||||
const rerolledValue = mapRollToValue(reroll.total, AFFINITY_INIMITY_MAP);
|
||||
if (rerolledValue > inimityValue) {
|
||||
sc.rerollNote = `Inimitié relancée : ${reroll.total} → ${rerolledValue} (était ${inimityValue})`;
|
||||
sc.appliedDeltas.inimity = rerolledValue - inimityValue;
|
||||
}
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'swapAffinityInimity') {
|
||||
sc.swapNote = 'Affinité et Inimitié échangées';
|
||||
const tmpAff = affinityValue;
|
||||
const tmpInim = inimityValue;
|
||||
sc.appliedDeltas.affinity = tmpInim - affinityValue;
|
||||
sc.appliedDeltas.inimity = tmpAff - inimityValue;
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'setPowerToZero') {
|
||||
sc.appliedDeltas.power = -powerValue;
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'createEnemy') {
|
||||
sc.narrativeText = 'Un nouvel Ennemi commun au Voyageur et à cet individu est créé.';
|
||||
}
|
||||
|
||||
if (sc.effects.action === 'createContactOrRival') {
|
||||
const net = affinityValue - inimityValue;
|
||||
sc.narrativeText = net > 0
|
||||
? 'Un nouveau Contact est créé (Affinité supérieure à l\'Inimitié).'
|
||||
: 'Un nouveau Rival est créé (Inimitié supérieure à l\'Affinité).';
|
||||
}
|
||||
|
||||
let newAffinity = affinityValue + (sc.appliedDeltas.affinity || 0);
|
||||
let newInimity = inimityValue + (sc.appliedDeltas.inimity || 0);
|
||||
let newPower = powerValue + (sc.appliedDeltas.power || 0);
|
||||
let newInfluence = influenceValue + (sc.appliedDeltas.influence || 0);
|
||||
|
||||
affinityValue = clamp(newAffinity, 0, 6);
|
||||
inimityValue = clamp(newInimity, 0, 6);
|
||||
powerValue = clamp(newPower, 0, 6);
|
||||
influenceValue = clamp(newInfluence, 0, 6);
|
||||
|
||||
specialCharacteristics.push(sc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const finalRelation = currentRelationKey !== relationKey
|
||||
? NPC_RELATIONS[currentRelationKey]
|
||||
: relation;
|
||||
|
||||
const netScore = affinityValue - inimityValue;
|
||||
|
||||
return {
|
||||
success: true,
|
||||
type: 'ally-enemy',
|
||||
relation: { key: currentRelationKey, label: finalRelation.label, summary: finalRelation.summary },
|
||||
originalRelationKey: relationKey,
|
||||
relationChanged: currentRelationKey !== relationKey,
|
||||
|
||||
affinity: {
|
||||
formula: currentFormulas.affinity,
|
||||
roll: affinityRoll?.total ?? 0,
|
||||
value: affinityValue,
|
||||
label: getLabel(affinityValue, AFFINITY_LABELS).label,
|
||||
description: getLabel(affinityValue, AFFINITY_LABELS).description,
|
||||
},
|
||||
inimity: {
|
||||
formula: currentFormulas.inimity,
|
||||
roll: inimityRoll?.total ?? 0,
|
||||
value: inimityValue,
|
||||
label: getLabel(inimityValue, INIMITY_LABELS).label,
|
||||
description: getLabel(inimityValue, INIMITY_LABELS).description,
|
||||
},
|
||||
netScore,
|
||||
|
||||
power: {
|
||||
value: powerValue,
|
||||
label: getLabel(powerValue, POWER_LABELS).label,
|
||||
description: getLabel(powerValue, POWER_LABELS).description,
|
||||
},
|
||||
influence: {
|
||||
value: influenceValue,
|
||||
label: getLabel(influenceValue, INFLUENCE_LABELS).label,
|
||||
description: getLabel(influenceValue, INFLUENCE_LABELS).description,
|
||||
},
|
||||
|
||||
specialRoll: specialRoll ? { roll: specialRoll.total, triggered: specialRoll.total >= 8 } : null,
|
||||
specialCharacteristics,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
export const RELATION_FORMULAS = {
|
||||
ally: { affinity: '2d6', inimity: '0' },
|
||||
contact: { affinity: '1d6+1', inimity: '1d6-1' },
|
||||
rival: { affinity: '1d6-1', inimity: '1d6+1' },
|
||||
enemy: { affinity: '0', inimity: '2d6' },
|
||||
};
|
||||
|
||||
export const AFFINITY_INIMITY_MAP = {
|
||||
2: 0, 3: 1, 4: 1, 5: 2, 6: 2,
|
||||
7: 3, 8: 3, 9: 4, 10: 4, 11: 5, 12: 6,
|
||||
};
|
||||
|
||||
export const POWER_INFLUENCE_MAP = {
|
||||
2: 0, 3: 0, 4: 0, 5: 0,
|
||||
6: 1, 7: 1, 8: 2, 9: 3, 10: 4, 11: 5, 12: 6,
|
||||
};
|
||||
|
||||
export const AFFINITY_LABELS = [
|
||||
{ value: 0, label: 'Aucune', description: 'Aucune affinité envers le Voyageur. Peut être un ennemi ou quelqu\'un d\'indifférent selon son Inimitié.' },
|
||||
{ value: 1, label: 'Vaguement bienveillant', description: 'Bienveillance comparable à celle d\'un inconnu ordinaire. Petits gestes d\'entraide par courtoisie.' },
|
||||
{ value: 2, label: 'Bienveillant', description: 'Aidera probablement le Voyageur si simple et sans danger, même sans récompense.' },
|
||||
{ value: 3, label: 'Très bienveillant', description: 'N\'hésitera pas à prendre des risques modérés ou à offrir son aide de son propre chef.' },
|
||||
{ value: 4, label: 'Ami loyal', description: 'Fera presque tout son possible pour aider, mais peut être retenu par d\'autres loyautés.' },
|
||||
{ value: 5, label: 'Amour', description: 'Passera très probablement les intérêts du Voyageur avant les siens ou ceux d\'autrui.' },
|
||||
{ value: 6, label: 'Fanatique', description: 'Fera tout ce que le Voyageur exige, quels que soient les risques.' },
|
||||
];
|
||||
|
||||
export const INIMITY_LABELS = [
|
||||
{ value: 0, label: 'Aucune', description: 'Aucune inimitié envers le Voyageur.' },
|
||||
{ value: 1, label: 'Méfiant', description: 'Vaguement mal disposé mais ne fera pas d\'efforts particuliers pour faire obstacle.' },
|
||||
{ value: 2, label: 'Malveillant', description: 'Peut commettre des actes de malveillance mineurs par pure mesquinerie.' },
|
||||
{ value: 3, label: 'Très malveillant', description: 'Se donnera du mal pour faire obstacle au Voyageur par simple rancune.' },
|
||||
{ value: 4, label: 'Haine', description: 'Fera presque tout pour avoir le dessus sur le Voyageur.' },
|
||||
{ value: 5, label: 'Haine farouche', description: 'Complotera activement ou prendra de grands risques pour nuire au Voyageur.' },
|
||||
{ value: 6, label: 'Haine aveugle', description: 'Peut s\'engager dans des actions autodestructrices pour nuire au Voyageur.' },
|
||||
];
|
||||
|
||||
export const POWER_LABELS = [
|
||||
{ value: 0, label: 'Négligeable', description: 'Ne dispose pratiquement d\'aucune ressource mobilisable en dehors de ses possessions personnelles.' },
|
||||
{ value: 1, label: 'Faible', description: 'Quelques amis ou contacts. Équivalent d\'un groupe de Voyageurs typique.' },
|
||||
{ value: 2, label: 'Utile', description: 'Possède un atout majeur : petit vaisseau, unité de mercenaires, équipe d\'avocats.' },
|
||||
{ value: 3, label: 'Modérément puissant', description: 'Ressources très importantes : unité de mercenaires ou entreprise de taille moyenne.' },
|
||||
{ value: 4, label: 'Puissant', description: 'Atouts majeurs : compagnie de transport marchand ou grand groupe commercial.' },
|
||||
{ value: 5, label: 'Très puissant', description: 'Pouvoir colossal : haute sphère gouvernementale ou PDG d\'une grande compagnie.' },
|
||||
{ value: 6, label: 'Acteur majeur', description: 'Pèse sur la politique interstellaire : amiral ou haut dignitaire.' },
|
||||
];
|
||||
|
||||
export const INFLUENCE_LABELS = [
|
||||
{ value: 0, label: 'Aucune influence', description: 'N\'a pratiquement aucune influence sur qui que ce soit.' },
|
||||
{ value: 1, label: 'Faible influence', description: 'Peut faire jouer quelques faveurs auprès de fonctionnaires mineurs.' },
|
||||
{ value: 2, label: 'Influence modérée', description: 'A un ou plusieurs notables locaux « dans la poche ».' },
|
||||
{ value: 3, label: 'Influent', description: 'Exerce une influence sur des gens de pouvoir (fonctionnaires, négociants).' },
|
||||
{ value: 4, label: 'Très influent', description: 'Influence interplanétaire, personnalités gouvernementales ou figures de la pègre.' },
|
||||
{ value: 5, label: 'Extrêmement influent', description: 'Influence interstellaire, pression sur les législateurs.' },
|
||||
{ value: 6, label: 'Incontournable', description: 'A l\'oreille de personnes extrêmement puissantes (noble dirigeant le sous-secteur).' },
|
||||
];
|
||||
|
||||
export const SPECIAL_CHARACTERISTICS_TABLE = [
|
||||
{ d66: 11, text: 'Cet individu a des raisons de pardonner au Voyageur ou de l\'apprécier plus que d\'ordinaire.', effects: { affinityMod: 1 } },
|
||||
{ d66: 12, text: 'Les relations entre le Voyageur et cet individu se sont particulièrement détériorées.', effects: { inimityMod: 1, affinityMod: -1 } },
|
||||
{ d66: 13, text: 'Un événement a altéré la relation entre le Voyageur et cet associé.', effects: { affinityMod: 1, inimityMod: -1 } },
|
||||
{ d66: 14, text: 'Un incident augmente l\'Inimitié entre le Voyageur et cet individu.', effects: { inimityMod: 1 } },
|
||||
{ d66: 15, text: 'La relation devient plus modérée. Un Ennemi devient un Rival et un Allié devient un Contact. Relancez l\'Affinité et l\'Inimitié.', effects: { action: 'moderateRelation' } },
|
||||
{ d66: 16, text: 'La relation s\'intensifie. Un Rival devient un Ennemi et un Contact devient un Allié. Relancez l\'Affinité et l\'Inimitié.', effects: { action: 'intensifyRelation' } },
|
||||
{ d66: 21, text: 'Cet individu gagne en pouvoir.', effects: { powerMod: 1 } },
|
||||
{ d66: 22, text: 'Cet individu perd une partie de sa base de pouvoir.', effects: { powerMod: -1 } },
|
||||
{ d66: 23, text: 'Cet individu gagne en influence.', effects: { influenceMod: 1 } },
|
||||
{ d66: 24, text: 'L\'influence de cet individu diminue.', effects: { influenceMod: -1 } },
|
||||
{ d66: 25, text: 'Cet individu gagne à la fois en pouvoir et en influence.', effects: { powerMod: 1, influenceMod: 1 } },
|
||||
{ d66: 26, text: 'Cet individu perd à la fois en pouvoir et en influence.', effects: { powerMod: -1, influenceMod: -1 } },
|
||||
{ d66: 31, text: 'Cet individu appartient à un groupe culturel ou religieux inhabituel.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 32, text: 'Cet individu appartient à une xéno-espèce rare.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 33, text: 'Cet individu est particulièrement atypique (intelligence artificielle ou entité profondément xéno).', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 34, text: 'Cet individu représente en réalité une organisation (mouvement politique, entreprise).', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 35, text: 'Cet individu est membre d\'une organisation dont la vision est généralement opposée à celle du Voyageur.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 36, text: 'Cet individu est une figure douteuse (criminel, pirate ou noble déchu). Le Voyageur sera jugé par association.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 41, text: 'Le Voyageur et cet individu se sont violemment brouillés. Relancez l\'Inimitié sur 2D et utilisez le nouveau résultat s\'il est supérieur.', effects: { action: 'reRollInimity' } },
|
||||
{ d66: 42, text: 'Le Voyageur et cet individu se sont réconciliés. Relancez l\'Affinité sur 2D et appliquez le nouveau résultat s\'il est supérieur.', effects: { action: 'reRollAffinity' } },
|
||||
{ d66: 43, text: 'Cet individu traverse une période difficile.', effects: { powerMod: -1 } },
|
||||
{ d66: 44, text: 'Cet individu a été ruiné par un malheur causé par le Voyageur.', effects: { action: 'setPowerToZero', inimityMod: 1 } },
|
||||
{ d66: 45, text: 'Cet individu a gagné en influence grâce à l\'aide du Voyageur.', effects: { influenceMod: 1, affinityMod: 1 } },
|
||||
{ d66: 46, text: 'Cet individu a gagné du pouvoir aux dépens d\'un tiers qui blâme désormais le Voyageur.', effects: { powerMod: 1, action: 'createEnemy' } },
|
||||
{ d66: 51, text: 'Cet individu a disparu dans des circonstances suspectes.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 52, text: 'Cet individu est injoignable, occupé à quelque chose d\'intéressant mais sans caractère suspect.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 53, text: 'Cet individu est en grave difficulté et aurait bien besoin de l\'aide du Voyageur.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 54, text: 'Cet individu a récemment bénéficié d\'une chance insolente.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 55, text: 'Cet individu est incarcéré ou piégé quelque part.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 56, text: 'Cet individu est retrouvé ou déclaré mort. Ce n\'est peut-être pas toute la vérité…', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 61, text: 'Cet individu s\'est récemment marié ou a vécu un événement bouleversant sa vie.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 62, text: 'Cet individu a été renié par sa famille, a divorcé ou a vécu un événement tragique.', effects: { action: 'narrativeOnly' } },
|
||||
{ d66: 63, text: 'Les relations de cet individu commencent à affecter le Voyageur. Créez un nouveau Contact si son Affinité est supérieure à son Inimitié, ou un Rival si l\'Inimitié est supérieure.', effects: { action: 'createContactOrRival' } },
|
||||
{ d66: 64, text: 'La relation entre le Voyageur et cet associé est complètement redéfinie. Alliés↔Ennemis, Rivaux↔Contacts. Échangez les valeurs d\'Affinité et d\'Inimitié.', effects: { action: 'swapAffinityInimity' } },
|
||||
{ d66: 65, text: 'Tirez deux autres caractéristiques spéciales.', effects: { action: 'extraRolls', actionValue: 2 } },
|
||||
{ d66: 66, text: 'Tirez trois autres caractéristiques spéciales.', effects: { action: 'extraRolls', actionValue: 3 } },
|
||||
];
|
||||
@@ -37,6 +37,7 @@ Hooks.once('init', () => {
|
||||
`modules/${MODULE_ID}/templates/npc-result.hbs`,
|
||||
`modules/${MODULE_ID}/templates/traveller-npc-dialog.hbs`,
|
||||
`modules/${MODULE_ID}/templates/traveller-npc-result.hbs`,
|
||||
`modules/${MODULE_ID}/templates/ally-enemy-result.hbs`,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import {
|
||||
RELATION_FORMULAS,
|
||||
AFFINITY_INIMITY_MAP,
|
||||
POWER_INFLUENCE_MAP,
|
||||
AFFINITY_LABELS,
|
||||
INIMITY_LABELS,
|
||||
POWER_LABELS,
|
||||
INFLUENCE_LABELS,
|
||||
SPECIAL_CHARACTERISTICS_TABLE,
|
||||
} from '../data/allyEnemyTables.js';
|
||||
|
||||
import { mapRollToValue, getLabel, clamp } from '../allyEnemyGenerator.js';
|
||||
|
||||
let passed = 0;
|
||||
let failed = 0;
|
||||
|
||||
function test(name, fn) {
|
||||
try {
|
||||
fn();
|
||||
passed++;
|
||||
console.log(` PASS ${name}`);
|
||||
} catch (e) {
|
||||
failed++;
|
||||
console.error(` FAIL ${name}\n ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
function assertEqual(actual, expected, msg) {
|
||||
assert.strictEqual(actual, expected, msg || `expected ${expected}, got ${actual}`);
|
||||
}
|
||||
|
||||
// ──────────────────────────────────────
|
||||
console.log('\nmapRollToValue');
|
||||
// ──────────────────────────────────────
|
||||
test('maps 2→0', () => assertEqual(mapRollToValue(2, AFFINITY_INIMITY_MAP), 0));
|
||||
test('maps 3→1', () => assertEqual(mapRollToValue(3, AFFINITY_INIMITY_MAP), 1));
|
||||
test('maps 5→2', () => assertEqual(mapRollToValue(5, AFFINITY_INIMITY_MAP), 2));
|
||||
test('maps 7→3', () => assertEqual(mapRollToValue(7, AFFINITY_INIMITY_MAP), 3));
|
||||
test('maps 9→4', () => assertEqual(mapRollToValue(9, AFFINITY_INIMITY_MAP), 4));
|
||||
test('maps 11→5', () => assertEqual(mapRollToValue(11, AFFINITY_INIMITY_MAP), 5));
|
||||
test('maps 12→6', () => assertEqual(mapRollToValue(12, AFFINITY_INIMITY_MAP), 6));
|
||||
test('unknown roll → 0', () => assertEqual(mapRollToValue(13, AFFINITY_INIMITY_MAP), 0));
|
||||
|
||||
test('power 2-5→0', () => { assertEqual(mapRollToValue(2, POWER_INFLUENCE_MAP), 0); assertEqual(mapRollToValue(5, POWER_INFLUENCE_MAP), 0); });
|
||||
test('power 6-7→1', () => { assertEqual(mapRollToValue(6, POWER_INFLUENCE_MAP), 1); assertEqual(mapRollToValue(7, POWER_INFLUENCE_MAP), 1); });
|
||||
test('power 8→2', () => assertEqual(mapRollToValue(8, POWER_INFLUENCE_MAP), 2));
|
||||
test('power 9→3', () => assertEqual(mapRollToValue(9, POWER_INFLUENCE_MAP), 3));
|
||||
test('power 10→4', () => assertEqual(mapRollToValue(10, POWER_INFLUENCE_MAP), 4));
|
||||
test('power 11→5', () => assertEqual(mapRollToValue(11, POWER_INFLUENCE_MAP), 5));
|
||||
test('power 12→6', () => assertEqual(mapRollToValue(12, POWER_INFLUENCE_MAP), 6));
|
||||
|
||||
// ──────────────────────────────────────
|
||||
console.log('\ngetLabel');
|
||||
// ──────────────────────────────────────
|
||||
test('finds matching affinity label', () => {
|
||||
assertEqual(getLabel(3, AFFINITY_LABELS).label, 'Très bienveillant');
|
||||
});
|
||||
|
||||
test('returns first for out-of-range', () => {
|
||||
assertEqual(getLabel(99, AFFINITY_LABELS).label, 'Aucune');
|
||||
});
|
||||
|
||||
test('finds inimity label', () => {
|
||||
assertEqual(getLabel(4, INIMITY_LABELS).label, 'Haine');
|
||||
});
|
||||
|
||||
test('finds power label', () => {
|
||||
assertEqual(getLabel(5, POWER_LABELS).label, 'Très puissant');
|
||||
});
|
||||
|
||||
test('finds influence label', () => {
|
||||
assertEqual(getLabel(2, INFLUENCE_LABELS).label, 'Influence modérée');
|
||||
});
|
||||
|
||||
// ──────────────────────────────────────
|
||||
console.log('\nclamp');
|
||||
// ──────────────────────────────────────
|
||||
test('within range', () => assertEqual(clamp(3, 0, 6), 3));
|
||||
test('below min', () => assertEqual(clamp(-1, 0, 6), 0));
|
||||
test('above max', () => assertEqual(clamp(7, 0, 6), 6));
|
||||
test('edge min', () => assertEqual(clamp(0, 0, 6), 0));
|
||||
test('edge max', () => assertEqual(clamp(6, 0, 6), 6));
|
||||
|
||||
// ──────────────────────────────────────
|
||||
console.log('\nRELATION_FORMULAS');
|
||||
// ──────────────────────────────────────
|
||||
test('ally: 2d6 affinity, 0 inimity', () => {
|
||||
assertEqual(RELATION_FORMULAS.ally.affinity, '2d6');
|
||||
assertEqual(RELATION_FORMULAS.ally.inimity, '0');
|
||||
});
|
||||
|
||||
test('contact: 1d6+1 affinity, 1d6-1 inimity', () => {
|
||||
assertEqual(RELATION_FORMULAS.contact.affinity, '1d6+1');
|
||||
assertEqual(RELATION_FORMULAS.contact.inimity, '1d6-1');
|
||||
});
|
||||
|
||||
test('rival: 1d6-1 affinity, 1d6+1 inimity', () => {
|
||||
assertEqual(RELATION_FORMULAS.rival.affinity, '1d6-1');
|
||||
assertEqual(RELATION_FORMULAS.rival.inimity, '1d6+1');
|
||||
});
|
||||
|
||||
test('enemy: 0 affinity, 2d6 inimity', () => {
|
||||
assertEqual(RELATION_FORMULAS.enemy.affinity, '0');
|
||||
assertEqual(RELATION_FORMULAS.enemy.inimity, '2d6');
|
||||
});
|
||||
|
||||
// ──────────────────────────────────────
|
||||
console.log('\nLABELS — array lengths');
|
||||
// ──────────────────────────────────────
|
||||
test('AFFINITY_LABELS has 7 entries', () => assertEqual(AFFINITY_LABELS.length, 7));
|
||||
test('INIMITY_LABELS has 7 entries', () => assertEqual(INIMITY_LABELS.length, 7));
|
||||
test('POWER_LABELS has 7 entries', () => assertEqual(POWER_LABELS.length, 7));
|
||||
test('INFLUENCE_LABELS has 7 entries', () => assertEqual(INFLUENCE_LABELS.length, 7));
|
||||
|
||||
// ──────────────────────────────────────
|
||||
console.log('\nSPECIAL_CHARACTERISTICS_TABLE');
|
||||
// ──────────────────────────────────────
|
||||
test('has 36 D66 entries', () => assertEqual(SPECIAL_CHARACTERISTICS_TABLE.length, 36));
|
||||
|
||||
test('all entries have valid D66 range', () => {
|
||||
for (const e of SPECIAL_CHARACTERISTICS_TABLE) {
|
||||
if (e.d66 < 11 || e.d66 > 66) throw new Error(`entry d66=${e.d66} out of range`);
|
||||
if (!e.text) throw new Error(`entry d66=${e.d66} missing text`);
|
||||
if (!e.effects) throw new Error(`entry d66=${e.d66} missing effects`);
|
||||
}
|
||||
});
|
||||
|
||||
test('D66 65 is extraRolls 2', () => {
|
||||
const e = SPECIAL_CHARACTERISTICS_TABLE.find(x => x.d66 === 65);
|
||||
assertEqual(e.effects.action, 'extraRolls');
|
||||
assertEqual(e.effects.actionValue, 2);
|
||||
});
|
||||
|
||||
test('D66 66 is extraRolls 3', () => {
|
||||
const e = SPECIAL_CHARACTERISTICS_TABLE.find(x => x.d66 === 66);
|
||||
assertEqual(e.effects.action, 'extraRolls');
|
||||
assertEqual(e.effects.actionValue, 3);
|
||||
});
|
||||
|
||||
test('D66 11 has affinityMod 1', () => {
|
||||
const e = SPECIAL_CHARACTERISTICS_TABLE.find(x => x.d66 === 11);
|
||||
assertEqual(e.effects.affinityMod, 1);
|
||||
});
|
||||
|
||||
test('D66 44 has setPowerToZero + inimityMod 1', () => {
|
||||
const e = SPECIAL_CHARACTERISTICS_TABLE.find(x => x.d66 === 44);
|
||||
assertEqual(e.effects.action, 'setPowerToZero');
|
||||
assertEqual(e.effects.inimityMod, 1);
|
||||
});
|
||||
|
||||
// ──────────────────────────────────────
|
||||
console.log('\n');
|
||||
// ──────────────────────────────────────
|
||||
|
||||
if (failed > 0) {
|
||||
console.error(`\n ${failed} of ${passed + failed} tests FAILED\n`);
|
||||
process.exit(1);
|
||||
} else {
|
||||
console.log(` All ${passed} tests passed\n`);
|
||||
}
|
||||
@@ -330,6 +330,65 @@ button.btn-calculate:hover,
|
||||
background: #eef8ee;
|
||||
}
|
||||
|
||||
/* === MGT2 Alliés & Ennemis (result chat) ================================== */
|
||||
|
||||
.ae-special-entry {
|
||||
background: #fbf8f1;
|
||||
border: 1px solid #d7ccb0;
|
||||
border-radius: 4px;
|
||||
padding: 7px 9px;
|
||||
margin: 6px 0;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
.ae-special-header {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
align-items: baseline;
|
||||
font-weight: 500;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.ae-special-detail {
|
||||
margin-top: 4px;
|
||||
color: #555;
|
||||
font-size: 0.92em;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.ae-narrative {
|
||||
font-style: italic;
|
||||
color: #6a5422;
|
||||
}
|
||||
|
||||
.ae-special-mods {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 4px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.ae-mod {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 1px 7px;
|
||||
border-radius: 3px;
|
||||
font-size: 0.82em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.ae-mod-pos {
|
||||
background: #dff0d8;
|
||||
color: #2a6a2a;
|
||||
border: 1px solid #b8d498;
|
||||
}
|
||||
|
||||
.ae-mod-neg {
|
||||
background: #fce4e4;
|
||||
color: #a33;
|
||||
border: 1px solid #e8b4b4;
|
||||
}
|
||||
|
||||
/* === MGT2 Sector Map ====================================================== */
|
||||
|
||||
#mgt2-sector-map .window-content {
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
<div class="mgt2-npc-result">
|
||||
<div class="npc-header">
|
||||
<h3>
|
||||
<i class="fas fa-handshake"></i>
|
||||
{{#if relationChanged}}
|
||||
{{lookupRelationKey originalRelationKey}} → {{relation.label}}
|
||||
{{else}}
|
||||
{{relation.label}}
|
||||
{{/if}}
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="npc-pill-row">
|
||||
<span class="npc-pill">{{relation.label}}</span>
|
||||
<span class="npc-pill npc-pill-muted">Score net : {{netScore}}</span>
|
||||
</div>
|
||||
|
||||
<div class="npc-card-grid">
|
||||
<div class="npc-card-block">
|
||||
<div class="npc-card-title">Affinité ({{affinity.value}}/6)</div>
|
||||
<div class="npc-roll-line">{{affinity.formula}} → {{affinity.roll}}</div>
|
||||
<div class="npc-card-value">{{affinity.label}}</div>
|
||||
<div class="npc-subline">{{affinity.description}}</div>
|
||||
</div>
|
||||
<div class="npc-card-block">
|
||||
<div class="npc-card-title">Inimitié ({{inimity.value}}/6)</div>
|
||||
<div class="npc-roll-line">{{inimity.formula}} → {{inimity.roll}}</div>
|
||||
<div class="npc-card-value">-{{inimity.value}} — {{inimity.label}}</div>
|
||||
<div class="npc-subline">{{inimity.description}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="npc-card-grid">
|
||||
<div class="npc-card-block">
|
||||
<div class="npc-card-title">Pouvoir ({{power.value}}/6)</div>
|
||||
<div class="npc-card-value">{{power.label}}</div>
|
||||
<div class="npc-subline">{{power.description}}</div>
|
||||
</div>
|
||||
<div class="npc-card-block">
|
||||
<div class="npc-card-title">Influence ({{influence.value}}/6)</div>
|
||||
<div class="npc-card-value">{{influence.label}}</div>
|
||||
<div class="npc-subline">{{influence.description}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if specialCharacteristics.length}}
|
||||
<div class="npc-section">
|
||||
<div class="npc-section-title">Caractéristiques spéciales</div>
|
||||
{{#each specialCharacteristics}}
|
||||
<div class="ae-special-entry">
|
||||
<div class="ae-special-header">
|
||||
<span class="npc-inline-roll">D{{d66}}</span>
|
||||
<span>{{text}}</span>
|
||||
</div>
|
||||
{{#if rerollNote}}
|
||||
<div class="ae-special-detail">{{rerollNote}}</div>
|
||||
{{/if}}
|
||||
{{#if swapNote}}
|
||||
<div class="ae-special-detail">{{swapNote}}</div>
|
||||
{{/if}}
|
||||
{{#if narrativeText}}
|
||||
<div class="ae-special-detail ae-narrative">{{narrativeText}}</div>
|
||||
{{/if}}
|
||||
{{#if newRelationKey}}
|
||||
<div class="ae-special-detail">La relation devient : {{lookupRelationKey newRelationKey}}</div>
|
||||
{{/if}}
|
||||
<div class="ae-special-mods">
|
||||
{{#if appliedDeltas.affinity}}
|
||||
<span class="ae-mod ae-mod-{{#if (gt appliedDeltas.affinity 0)}}pos{{else}}neg{{/if}}">
|
||||
Affinité {{formatSigned appliedDeltas.affinity}}
|
||||
</span>
|
||||
{{/if}}
|
||||
{{#if appliedDeltas.inimity}}
|
||||
<span class="ae-mod ae-mod-{{#if (gt appliedDeltas.inimity 0)}}pos{{else}}neg{{/if}}">
|
||||
Inimitié {{formatSigned appliedDeltas.inimity}}
|
||||
</span>
|
||||
{{/if}}
|
||||
{{#if appliedDeltas.power}}
|
||||
<span class="ae-mod ae-mod-{{#if (gt appliedDeltas.power 0)}}pos{{else}}neg{{/if}}">
|
||||
Pouvoir {{formatSigned appliedDeltas.power}}
|
||||
</span>
|
||||
{{/if}}
|
||||
{{#if appliedDeltas.influence}}
|
||||
<span class="ae-mod ae-mod-{{#if (gt appliedDeltas.influence 0)}}pos{{else}}neg{{/if}}">
|
||||
Influence {{formatSigned appliedDeltas.influence}}
|
||||
</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="npc-footer">
|
||||
<small>Généré par le module {{MODULE_ID}}</small>
|
||||
</div>
|
||||
</div>
|
||||
@@ -13,6 +13,9 @@
|
||||
<a class="item {{#if (eq activeTab "traveller")}}active{{/if}}" data-tab="traveller">
|
||||
<i class="fas fa-user-astronaut"></i> PNJ Détaillé
|
||||
</a>
|
||||
<a class="item {{#if (eq activeTab "ally-enemy")}}active{{/if}}" data-tab="ally-enemy">
|
||||
<i class="fas fa-handshake"></i> Alliés & Ennemis
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<section class="tab-content">
|
||||
@@ -232,6 +235,62 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab {{#if (eq activeTab "ally-enemy")}}active{{/if}}" data-tab="ally-enemy">
|
||||
<h3><i class="fas fa-handshake"></i> Alliés, Contacts, Rivaux et Ennemis</h3>
|
||||
<p class="npc-intro">Génère une relation avec Affinité, Inimitié, Pouvoir et Influence selon les règles du Livre de l'Équipage.</p>
|
||||
|
||||
<fieldset>
|
||||
<legend>Type de relation</legend>
|
||||
<div class="form-group-row">
|
||||
<div class="form-group">
|
||||
<label for="ae-relation">Relation de base</label>
|
||||
<select id="ae-relation" name="ae.relation">
|
||||
{{#each relations}}
|
||||
<option value="{{key}}" {{#if (eq ../ae.relation key)}}selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group checkbox-group">
|
||||
<label>
|
||||
<input type="checkbox" name="ae.includeSpecial" {{#if ae.includeSpecial}}checked{{/if}}>
|
||||
Inclure les caractéristiques spéciales (jet 2D, 8+)
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Création de fiche d'acteur</legend>
|
||||
|
||||
<div class="form-group checkbox-group">
|
||||
<label>
|
||||
<input type="checkbox" name="ae.createActor" {{#if ae.createActor}}checked{{/if}}>
|
||||
Créer une fiche PNJ dans les Acteurs
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group-row">
|
||||
<div class="form-group">
|
||||
<label for="ae-actorName">Nom de la fiche <span class="hint">(facultatif)</span></label>
|
||||
<input id="ae-actorName" name="ae.actorName" type="text" value="{{ae.actorName}}" placeholder="PNJ — Rival">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group checkbox-group">
|
||||
<label>
|
||||
<input type="checkbox" name="ae.openCreatedActor" {{#if ae.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-ally-enemy">
|
||||
<i class="fas fa-dice-d6"></i> Générer la relation
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user