Compare commits

...

2 Commits

41 changed files with 4429 additions and 137 deletions

View File

@@ -0,0 +1,92 @@
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
// Patterns pour détecter les variables JavaScript nommées "Blessures"
const patterns = [
// Déclarations de variables
/\b(let|const|var)\s+Blessures\b/g,
// Paramètres de fonction
/function\s+\w*\s*\([^)]*\bBlessures\b[^)]*\)/g,
// Arrow functions avec paramètres
/\(\s*[^)]*\bBlessures\b[^)]*\)\s*=>/g,
// Arrow function avec un seul paramètre sans parenthèses
/\bBlessures\s*=>/g,
// Destructuration d'objets
/\{\s*[^}]*\bBlessures\b[^}]*\}\s*=/g,
// Destructuration de tableaux
/\[\s*[^\]]*\bBlessures\b[^\]]*\]\s*=/g,
// Catch clause
/catch\s*\(\s*Blessures\s*\)/g,
// For...of/in loops
/for\s*\(\s*(let|const|var)?\s*Blessures\s+(of|in)\b/g,
];
function findBlessuresInFile(filePath) {
const content = fs.readFileSync(filePath, 'utf-8');
const lines = content.split('\n');
const results = [];
lines.forEach((line, index) => {
patterns.forEach(pattern => {
pattern.lastIndex = 0; // Reset regex
if (pattern.test(line)) {
results.push({
line: index + 1,
content: line.trim()
});
}
});
});
return results;
}
function walkDirectory(dir) {
const files = fs.readdirSync(dir);
const allResults = {};
files.forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
Object.assign(allResults, walkDirectory(filePath));
} else if (file.endsWith('.js')) {
const results = findBlessuresInFile(filePath);
if (results.length > 0) {
allResults[filePath] = results;
}
}
});
return allResults;
}
// Main
const scriptsDir = path.join(__dirname, 'scripts');
console.log('🔍 Recherche des variables JavaScript nommées "Blessures" dans le répertoire scripts/...\n');
if (!fs.existsSync(scriptsDir)) {
console.error('❌ Le répertoire scripts/ n\'existe pas');
process.exit(1);
}
const results = walkDirectory(scriptsDir);
if (Object.keys(results).length === 0) {
console.log('✅ Aucune variable JavaScript nommée "Blessures" trouvée.');
} else {
console.log(`⚠️ ${Object.keys(results).length} fichier(s) contenant des variables "Blessures" :\n`);
Object.entries(results).forEach(([filePath, occurrences]) => {
const relativePath = path.relative(__dirname, filePath);
console.log(`📄 ${relativePath}`);
occurrences.forEach(({ line, content }) => {
console.log(` Ligne ${line}: ${content}`);
});
console.log('');
});
}

92
find-tests-variables.cjs Normal file
View File

@@ -0,0 +1,92 @@
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
// Patterns pour détecter les variables JavaScript nommées "Tests"
const patterns = [
// Déclarations de variables
/\b(let|const|var)\s+Tests\b/g,
// Paramètres de fonction
/function\s+\w*\s*\([^)]*\bTests\b[^)]*\)/g,
// Arrow functions avec paramètres
/\(\s*[^)]*\bTests\b[^)]*\)\s*=>/g,
// Arrow function avec un seul paramètre sans parenthèses
/\bTests\s*=>/g,
// Destructuration d'objets
/\{\s*[^}]*\bTests\b[^}]*\}\s*=/g,
// Destructuration de tableaux
/\[\s*[^\]]*\bTests\b[^\]]*\]\s*=/g,
// Catch clause
/catch\s*\(\s*Tests\s*\)/g,
// For...of/in loops
/for\s*\(\s*(let|const|var)?\s*Tests\s+(of|in)\b/g,
];
function findTestsInFile(filePath) {
const content = fs.readFileSync(filePath, 'utf-8');
const lines = content.split('\n');
const results = [];
lines.forEach((line, index) => {
patterns.forEach(pattern => {
pattern.lastIndex = 0; // Reset regex
if (pattern.test(line)) {
results.push({
line: index + 1,
content: line.trim()
});
}
});
});
return results;
}
function walkDirectory(dir) {
const files = fs.readdirSync(dir);
const allResults = {};
files.forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
Object.assign(allResults, walkDirectory(filePath));
} else if (file.endsWith('.js')) {
const results = findTestsInFile(filePath);
if (results.length > 0) {
allResults[filePath] = results;
}
}
});
return allResults;
}
// Main
const scriptsDir = path.join(__dirname, 'scripts');
console.log('🔍 Recherche des variables JavaScript nommées "Tests" dans le répertoire scripts/...\n');
if (!fs.existsSync(scriptsDir)) {
console.error('❌ Le répertoire scripts/ n\'existe pas');
process.exit(1);
}
const results = walkDirectory(scriptsDir);
if (Object.keys(results).length === 0) {
console.log('✅ Aucune variable JavaScript nommée "Tests" trouvée.');
} else {
console.log(`⚠️ ${Object.keys(results).length} fichier(s) contenant des variables "Tests" :\n`);
Object.entries(results).forEach(([filePath, occurrences]) => {
const relativePath = path.relative(__dirname, filePath);
console.log(`📄 ${relativePath}`);
occurrences.forEach(({ line, content }) => {
console.log(` Ligne ${line}: ${content}`);
});
console.log('');
});
}

View File

@@ -8,7 +8,7 @@
}
],
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
"version": "9.4.1",
"version": "9.4.3",
"esmodules": [
"wh4_fr.js",
"modules/babele-register.js",
@@ -120,7 +120,7 @@
}
],
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/raw/v10/module.json",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-9-4-1.zip",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-9-4-3.zip",
"id": "wh4-fr-translation",
"compatibility": {
"minimum": "13",

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
MANIFEST-001295
MANIFEST-001307

View File

@@ -1,7 +1,7 @@
2026/02/26-22:04:24.137615 7f63f7fff6c0 Recovering log #1293
2026/02/26-22:04:24.149067 7f63f7fff6c0 Delete type=3 #1291
2026/02/26-22:04:24.149129 7f63f7fff6c0 Delete type=0 #1293
2026/02/26-22:04:46.481770 7f61f6fff6c0 Level-0 table #1298: started
2026/02/26-22:04:46.481795 7f61f6fff6c0 Level-0 table #1298: 0 bytes OK
2026/02/26-22:04:46.488240 7f61f6fff6c0 Delete type=0 #1296
2026/02/26-22:04:46.495528 7f61f6fff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
2026/03/05-20:38:02.743870 7f7930fff6c0 Recovering log #1305
2026/03/05-20:38:02.754744 7f7930fff6c0 Delete type=3 #1303
2026/03/05-20:38:02.754879 7f7930fff6c0 Delete type=0 #1305
2026/03/05-20:42:36.083534 7f78e15b46c0 Level-0 table #1310: started
2026/03/05-20:42:36.083606 7f78e15b46c0 Level-0 table #1310: 0 bytes OK
2026/03/05-20:42:36.090385 7f78e15b46c0 Delete type=0 #1308
2026/03/05-20:42:36.111635 7f78e15b46c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2026/02/26-22:02:13.939121 7f640dbff6c0 Recovering log #1289
2026/02/26-22:02:13.988348 7f640dbff6c0 Delete type=3 #1287
2026/02/26-22:02:13.988418 7f640dbff6c0 Delete type=0 #1289
2026/02/26-22:03:13.280219 7f61f6fff6c0 Level-0 table #1294: started
2026/02/26-22:03:13.280273 7f61f6fff6c0 Level-0 table #1294: 0 bytes OK
2026/02/26-22:03:13.287523 7f61f6fff6c0 Delete type=0 #1292
2026/02/26-22:03:13.287733 7f61f6fff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
2026/03/05-20:35:58.958021 7f78e2ffd6c0 Recovering log #1301
2026/03/05-20:35:59.014393 7f78e2ffd6c0 Delete type=3 #1299
2026/03/05-20:35:59.014563 7f78e2ffd6c0 Delete type=0 #1301
2026/03/05-20:36:36.801154 7f78e15b46c0 Level-0 table #1306: started
2026/03/05-20:36:36.801207 7f78e15b46c0 Level-0 table #1306: 0 bytes OK
2026/03/05-20:36:36.851951 7f78e15b46c0 Delete type=0 #1304
2026/03/05-20:36:36.886757 7f78e15b46c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001297
MANIFEST-001309

View File

@@ -1,7 +1,7 @@
2026/02/26-22:04:24.151462 7f640d3fe6c0 Recovering log #1295
2026/02/26-22:04:24.164087 7f640d3fe6c0 Delete type=3 #1293
2026/02/26-22:04:24.164148 7f640d3fe6c0 Delete type=0 #1295
2026/02/26-22:04:46.511516 7f61f6fff6c0 Level-0 table #1300: started
2026/02/26-22:04:46.511542 7f61f6fff6c0 Level-0 table #1300: 0 bytes OK
2026/02/26-22:04:46.518083 7f61f6fff6c0 Delete type=0 #1298
2026/02/26-22:04:46.532552 7f61f6fff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2026/03/05-20:38:02.758975 7f78e37fe6c0 Recovering log #1307
2026/03/05-20:38:02.770688 7f78e37fe6c0 Delete type=3 #1305
2026/03/05-20:38:02.770801 7f78e37fe6c0 Delete type=0 #1307
2026/03/05-20:42:36.097432 7f78e15b46c0 Level-0 table #1312: started
2026/03/05-20:42:36.097481 7f78e15b46c0 Level-0 table #1312: 0 bytes OK
2026/03/05-20:42:36.104419 7f78e15b46c0 Delete type=0 #1310
2026/03/05-20:42:36.111679 7f78e15b46c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2026/02/26-22:02:13.990565 7f640d3fe6c0 Recovering log #1291
2026/02/26-22:02:14.041205 7f640d3fe6c0 Delete type=3 #1289
2026/02/26-22:02:14.041341 7f640d3fe6c0 Delete type=0 #1291
2026/02/26-22:03:13.287859 7f61f6fff6c0 Level-0 table #1296: started
2026/02/26-22:03:13.287883 7f61f6fff6c0 Level-0 table #1296: 0 bytes OK
2026/02/26-22:03:13.294100 7f61f6fff6c0 Delete type=0 #1294
2026/02/26-22:03:13.315154 7f61f6fff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2026/03/05-20:35:59.019628 7f7930fff6c0 Recovering log #1303
2026/03/05-20:35:59.074111 7f7930fff6c0 Delete type=3 #1301
2026/03/05-20:35:59.074362 7f7930fff6c0 Delete type=0 #1303
2026/03/05-20:36:37.079874 7f78e15b46c0 Level-0 table #1308: started
2026/03/05-20:36:37.079944 7f78e15b46c0 Level-0 table #1308: 0 bytes OK
2026/03/05-20:36:37.117249 7f78e15b46c0 Delete type=0 #1306
2026/03/05-20:36:37.117631 7f78e15b46c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001295
MANIFEST-001307

View File

@@ -1,7 +1,7 @@
2026/02/26-22:04:24.183291 7f640dbff6c0 Recovering log #1293
2026/02/26-22:04:24.198373 7f640dbff6c0 Delete type=3 #1291
2026/02/26-22:04:24.198448 7f640dbff6c0 Delete type=0 #1293
2026/02/26-22:04:46.518228 7f61f6fff6c0 Level-0 table #1298: started
2026/02/26-22:04:46.518251 7f61f6fff6c0 Level-0 table #1298: 0 bytes OK
2026/02/26-22:04:46.524767 7f61f6fff6c0 Delete type=0 #1296
2026/02/26-22:04:46.532566 7f61f6fff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
2026/03/05-20:38:02.790472 7f78e3fff6c0 Recovering log #1305
2026/03/05-20:38:02.801425 7f78e3fff6c0 Delete type=3 #1303
2026/03/05-20:38:02.801553 7f78e3fff6c0 Delete type=0 #1305
2026/03/05-20:42:36.090593 7f78e15b46c0 Level-0 table #1310: started
2026/03/05-20:42:36.090646 7f78e15b46c0 Level-0 table #1310: 0 bytes OK
2026/03/05-20:42:36.097257 7f78e15b46c0 Delete type=0 #1308
2026/03/05-20:42:36.111659 7f78e15b46c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2026/02/26-22:02:14.115468 7f640cbfd6c0 Recovering log #1289
2026/02/26-22:02:14.169882 7f640cbfd6c0 Delete type=3 #1287
2026/02/26-22:02:14.169955 7f640cbfd6c0 Delete type=0 #1289
2026/02/26-22:03:13.301545 7f61f6fff6c0 Level-0 table #1294: started
2026/02/26-22:03:13.301610 7f61f6fff6c0 Level-0 table #1294: 0 bytes OK
2026/02/26-22:03:13.307921 7f61f6fff6c0 Delete type=0 #1292
2026/02/26-22:03:13.315187 7f61f6fff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
2026/03/05-20:35:59.141622 7f7930fff6c0 Recovering log #1301
2026/03/05-20:35:59.197458 7f7930fff6c0 Delete type=3 #1299
2026/03/05-20:35:59.197605 7f7930fff6c0 Delete type=0 #1301
2026/03/05-20:36:36.998926 7f78e15b46c0 Level-0 table #1306: started
2026/03/05-20:36:36.999012 7f78e15b46c0 Level-0 table #1306: 0 bytes OK
2026/03/05-20:36:37.079601 7f78e15b46c0 Delete type=0 #1304
2026/03/05-20:36:37.117606 7f78e15b46c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001295
MANIFEST-001307

View File

@@ -1,7 +1,7 @@
2026/02/26-22:04:24.123515 7f640d3fe6c0 Recovering log #1293
2026/02/26-22:04:24.135202 7f640d3fe6c0 Delete type=3 #1291
2026/02/26-22:04:24.135283 7f640d3fe6c0 Delete type=0 #1293
2026/02/26-22:04:46.488408 7f61f6fff6c0 Level-0 table #1298: started
2026/02/26-22:04:46.488442 7f61f6fff6c0 Level-0 table #1298: 0 bytes OK
2026/02/26-22:04:46.495308 7f61f6fff6c0 Delete type=0 #1296
2026/02/26-22:04:46.495540 7f61f6fff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
2026/03/05-20:38:02.727495 7f78e2ffd6c0 Recovering log #1305
2026/03/05-20:38:02.739900 7f78e2ffd6c0 Delete type=3 #1303
2026/03/05-20:38:02.740017 7f78e2ffd6c0 Delete type=0 #1305
2026/03/05-20:42:36.060514 7f78e15b46c0 Level-0 table #1310: started
2026/03/05-20:42:36.060577 7f78e15b46c0 Level-0 table #1310: 0 bytes OK
2026/03/05-20:42:36.067949 7f78e15b46c0 Delete type=0 #1308
2026/03/05-20:42:36.083144 7f78e15b46c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2026/02/26-22:02:13.889590 7f63f7fff6c0 Recovering log #1289
2026/02/26-22:02:13.936962 7f63f7fff6c0 Delete type=3 #1287
2026/02/26-22:02:13.937017 7f63f7fff6c0 Delete type=0 #1289
2026/02/26-22:03:13.273521 7f61f6fff6c0 Level-0 table #1294: started
2026/02/26-22:03:13.273553 7f61f6fff6c0 Level-0 table #1294: 0 bytes OK
2026/02/26-22:03:13.280005 7f61f6fff6c0 Delete type=0 #1292
2026/02/26-22:03:13.287724 7f61f6fff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
2026/03/05-20:35:58.885055 7f78e37fe6c0 Recovering log #1301
2026/03/05-20:35:58.952601 7f78e37fe6c0 Delete type=3 #1299
2026/03/05-20:35:58.952732 7f78e37fe6c0 Delete type=0 #1301
2026/03/05-20:36:36.852227 7f78e15b46c0 Level-0 table #1306: started
2026/03/05-20:36:36.852283 7f78e15b46c0 Level-0 table #1306: 0 bytes OK
2026/03/05-20:36:36.886395 7f78e15b46c0 Delete type=0 #1304
2026/03/05-20:36:36.886780 7f78e15b46c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001295
MANIFEST-001307

View File

@@ -1,7 +1,7 @@
2026/02/26-22:04:24.106231 7f640dbff6c0 Recovering log #1293
2026/02/26-22:04:24.120853 7f640dbff6c0 Delete type=3 #1291
2026/02/26-22:04:24.120905 7f640dbff6c0 Delete type=0 #1293
2026/02/26-22:04:46.475371 7f61f6fff6c0 Level-0 table #1298: started
2026/02/26-22:04:46.475399 7f61f6fff6c0 Level-0 table #1298: 0 bytes OK
2026/02/26-22:04:46.481643 7f61f6fff6c0 Delete type=0 #1296
2026/02/26-22:04:46.495513 7f61f6fff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
2026/03/05-20:38:02.710364 7f7930fff6c0 Recovering log #1305
2026/03/05-20:38:02.722794 7f7930fff6c0 Delete type=3 #1303
2026/03/05-20:38:02.722917 7f7930fff6c0 Delete type=0 #1305
2026/03/05-20:42:36.068193 7f78e15b46c0 Level-0 table #1310: started
2026/03/05-20:42:36.068246 7f78e15b46c0 Level-0 table #1310: 0 bytes OK
2026/03/05-20:42:36.074966 7f78e15b46c0 Delete type=0 #1308
2026/03/05-20:42:36.083182 7f78e15b46c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2026/02/26-22:02:13.830812 7f640d3fe6c0 Recovering log #1289
2026/02/26-22:02:13.887231 7f640d3fe6c0 Delete type=3 #1287
2026/02/26-22:02:13.887289 7f640d3fe6c0 Delete type=0 #1289
2026/02/26-22:03:13.266764 7f61f6fff6c0 Level-0 table #1294: started
2026/02/26-22:03:13.266813 7f61f6fff6c0 Level-0 table #1294: 0 bytes OK
2026/02/26-22:03:13.273358 7f61f6fff6c0 Delete type=0 #1292
2026/02/26-22:03:13.287711 7f61f6fff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
2026/03/05-20:35:58.822672 7f78e2ffd6c0 Recovering log #1301
2026/03/05-20:35:58.879917 7f78e2ffd6c0 Delete type=3 #1299
2026/03/05-20:35:58.880051 7f78e2ffd6c0 Delete type=0 #1301
2026/03/05-20:36:36.762561 7f78e15b46c0 Level-0 table #1306: started
2026/03/05-20:36:36.762639 7f78e15b46c0 Level-0 table #1306: 0 bytes OK
2026/03/05-20:36:36.800890 7f78e15b46c0 Delete type=0 #1304
2026/03/05-20:36:36.886730 7f78e15b46c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000938
MANIFEST-000950

View File

@@ -1,7 +1,7 @@
2026/02/26-22:04:24.166725 7f63f7fff6c0 Recovering log #936
2026/02/26-22:04:24.181007 7f63f7fff6c0 Delete type=3 #934
2026/02/26-22:04:24.181079 7f63f7fff6c0 Delete type=0 #936
2026/02/26-22:04:46.525121 7f61f6fff6c0 Level-0 table #941: started
2026/02/26-22:04:46.525166 7f61f6fff6c0 Level-0 table #941: 0 bytes OK
2026/02/26-22:04:46.532271 7f61f6fff6c0 Delete type=0 #939
2026/02/26-22:04:46.532577 7f61f6fff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2026/03/05-20:38:02.775184 7f7930fff6c0 Recovering log #948
2026/03/05-20:38:02.786747 7f7930fff6c0 Delete type=3 #946
2026/03/05-20:38:02.786856 7f7930fff6c0 Delete type=0 #948
2026/03/05-20:42:36.104620 7f78e15b46c0 Level-0 table #953: started
2026/03/05-20:42:36.104679 7f78e15b46c0 Level-0 table #953: 0 bytes OK
2026/03/05-20:42:36.111433 7f78e15b46c0 Delete type=0 #951
2026/03/05-20:42:36.111701 7f78e15b46c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2026/02/26-22:02:14.050871 7f640dbff6c0 Recovering log #932
2026/02/26-22:02:14.109358 7f640dbff6c0 Delete type=3 #930
2026/02/26-22:02:14.109436 7f640dbff6c0 Delete type=0 #932
2026/02/26-22:03:13.308043 7f61f6fff6c0 Level-0 table #937: started
2026/02/26-22:03:13.308070 7f61f6fff6c0 Level-0 table #937: 0 bytes OK
2026/02/26-22:03:13.315010 7f61f6fff6c0 Delete type=0 #935
2026/02/26-22:03:13.315204 7f61f6fff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2026/03/05-20:35:59.080273 7f78e2ffd6c0 Recovering log #944
2026/03/05-20:35:59.136381 7f78e2ffd6c0 Delete type=3 #942
2026/03/05-20:35:59.136563 7f78e2ffd6c0 Delete type=0 #944
2026/03/05-20:36:36.924587 7f78e15b46c0 Level-0 table #949: started
2026/03/05-20:36:36.924663 7f78e15b46c0 Level-0 table #949: 0 bytes OK
2026/03/05-20:36:36.998629 7f78e15b46c0 Delete type=0 #947
2026/03/05-20:36:37.117578 7f78e15b46c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)

View File

@@ -1,31 +1,28 @@
if (!this.item.name.includes("(") || this.item.system.tests.value.includes("Terrain") || this.item.system.tests.value.toLowerCase().includes("(any)"))
{
let Tests = this.item.system.tests.value
let name = this.item.name
if (!this.item.name.includes("(") || this.item.system.tests.value.includes("Terrain") || this.item.system.tests.value.toLowerCase().includes("(any)")) {
let tests = this.item.system.tests.value
let name = this.item.name
// If name already specifies, make sure Tests value reflects that
if (name.includes("(") && !name.toLowerCase().includes("(any)"))
{
let terrain = name.split("(")[1].split(")")[0]
tests = tests.replace("the Terrain", terrain)
}
else // If no sense specified, provide dialog choice
{
let choice = await ItemDialog.create(ItemDialog.objectToArray({
coastal : "Littoral",
deserts : "Déserts",
marshes : "Marécages",
rocky : "Rocailleux",
tundra : "Toundra",
woodlands : "Régions boisées"
}, this.item.img), 1, "Choisissez un Terrain");
if (choice[0])
{
name = `${name.split("(")[0].trim()} (${choice[0].name})`
tests = tests.replace("Terrain", choice[0].name + " Terrain")
}
// If name already specifies, make sure Tests value reflects that
if (name.includes("(") && !name.toLowerCase().includes("(any)")) {
let terrain = name.split("(")[1].split(")")[0]
tests = tests.replace("the Terrain", terrain)
}
else // If no sense specified, provide dialog choice
{
let choice = await ItemDialog.create(ItemDialog.objectToArray({
coastal: "Littoral",
deserts: "Déserts",
marshes: "Marécages",
rocky: "Rocailleux",
tundra: "Toundra",
woodlands: "Régions boisées"
}, this.item.img), 1, "Choisissez un Terrain");
if (choice[0]) {
name = `${name.split("(")[0].trim()} (${choice[0].name})`
tests = tests.replace("Terrain", choice[0].name + " Terrain")
}
}
this.effect.updateSource({name})
this.item.updateSource({name, "system.tests.value" : tests})
this.effect.updateSource({ name })
this.item.updateSource({ name, "system.tests.value": tests })
}

View File

@@ -10,17 +10,17 @@ scriptData[0].script = `
let chatData = {whisper: ChatMessage.getWhisperRecipients("GM")};
let message = "";
let Blessures = foundry.utils.duplicate(this.actor.status.Blessures);
let wounds = foundry.utils.duplicate(this.actor.status.wounds);
let regenRoll = await new Roll("1d10").roll({allowInteractive : false});
let regen = regenRoll.total;
if (Blessures.value >= Blessures.max)
if (wounds.value >= wounds.max)
return;
if (Blessures.value > 0) {
Blessures.value += Math.floor(regen / 2);
if (Blessures.value > Blessures.max) {
Blessures.value = Blessures.max;
if (wounds.value > 0) {
wounds.value += Math.floor(regen / 2);
if (wounds.value > wounds.max) {
wounds.value = wounds.max;
}
message += \`<b>\${this.actor.name}</b> regagne \${regen} Blessures.\`;
@@ -29,7 +29,7 @@ scriptData[0].script = `
}
} else if (regen >= 8) {
message += \`<b>\${this.actor.name}</b> a obtenu un \${regen} et regagne 1 Blessure.\`;
Blessures.value += 1;
wounds.value += 1;
if (regen === 10) {
message += "<br>De plus, il régénère une Blessure Critique.";
}
@@ -37,7 +37,7 @@ scriptData[0].script = `
message += \`<b>\${this.actor.name}</b> Résultat de régénération de \${regen} - Aucun effet.\`;
}
await this.actor.update({"system.status.wounds": Blessures});
await this.actor.update({"system.status.wounds": wounds});
this.script.message(message, {whisper: ChatMessage.getWhisperRecipients("GM")});
`
@@ -46,4 +46,4 @@ await effet.update({
"system.scriptData": scriptData
});
await trait.update({name});
await trait.update({ name });

View File

@@ -5,15 +5,15 @@ let wounds = foundry.utils.duplicate(this.actor.status.wounds)
let regenRoll = await new Roll("1d10").roll({allowInteractive : false});
let regen = regenRoll.total;
if (Blessures.value >= Blessures.max)
if (wounds.value >= wounds.max)
return
if (Blessures.value > 0)
if (wounds.value > 0)
{
Blessures.value += regen
if (Blessures.value > Blessures.max)
wounds.value += regen
if (wounds.value > wounds.max)
{
Blessures.value = Blessures.max
wounds.value = wounds.max
}
message += `<b>${this.actor.name}</b> regagne ${regen} Point de Blessures.`
@@ -25,7 +25,7 @@ if (Blessures.value > 0)
else if (regen >= 8)
{
message += `<b>${this.actor.name}</b> a fait un ${regen} et regagne 1 Point de Blessures.`
Blessures.value += 1
wounds.value += 1
if (regen == 10)
{
message += `<br>De plus, il guérit d'une Blessure Critique.`
@@ -36,5 +36,5 @@ else
message += `<b>${this.actor.name}</b> a fait un ${regen} et ne régénère pas de Point de Blessures.`
}
await this.actor.update({ "system.status.wounds": Blessures })
await this.actor.update({ "system.status.wounds": wounds })
this.script.message(message, { whisper: ChatMessage.getWhisperRecipients("GM") })

View File

@@ -1,6 +1,6 @@
if (!this.item.name.includes("(") || this.item.system.tests.value.includes("(Sense)") || this.item.system.tests.value.toLowerCase().includes("(any)"))
{
let Tests = this.item.system.tests.value
let tests = this.item.system.tests.value
let name = this.item.name
// If name already specifies, make sure Tests value reflects that

2009
tools/check-tests-log.txt Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

111
tools/check-tests.js Normal file
View File

@@ -0,0 +1,111 @@
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const SCRIPTS_DIR = path.join(__dirname, '..', 'scripts');
const LOG_FILE = path.join(__dirname, 'check-tests-log.txt');
const log = [];
function writeLog(message) {
console.log(message);
log.push(message);
}
function getAllJsFiles(dir) {
const files = [];
function traverse(currentDir) {
const entries = fs.readdirSync(currentDir, { withFileTypes: true });
for (const entry of entries) {
const fullPath = path.join(currentDir, entry.name);
if (entry.isDirectory()) {
traverse(fullPath);
} else if (entry.isFile() && entry.name.endsWith('.js')) {
files.push(fullPath);
}
}
}
traverse(dir);
return files;
}
function checkForTests(filePath) {
const content = fs.readFileSync(filePath, 'utf-8');
return content.includes('let Tests');
}
// Programme principal
writeLog('='.repeat(60));
writeLog('VÉRIFICATION DE "let Tests" DANS LES SCRIPTS');
writeLog('='.repeat(60));
writeLog(`Date: ${new Date().toISOString()}`);
writeLog(`Répertoire: ${SCRIPTS_DIR}\n`);
const allFiles = getAllJsFiles(SCRIPTS_DIR);
writeLog(`Total de fichiers trouvés: ${allFiles.length}\n`);
const filesWithTests = [];
const filesWithoutTests = [];
allFiles.forEach(filePath => {
const relativePath = path.relative(path.join(__dirname, '..'), filePath);
if (checkForTests(filePath)) {
filesWithTests.push(relativePath);
} else {
filesWithoutTests.push(relativePath);
}
});
// Afficher les résultats
writeLog('=== FICHIERS CONTENANT "let Tests" ===\n');
if (filesWithTests.length > 0) {
filesWithTests.forEach(file => {
writeLog(`${file}`);
});
} else {
writeLog('Aucun fichier trouvé.');
}
writeLog(`\nTotal: ${filesWithTests.length} fichier(s)\n`);
writeLog('='.repeat(60));
writeLog('=== FICHIERS NE CONTENANT PAS "let Tests" ===\n');
if (filesWithoutTests.length > 0) {
filesWithoutTests.forEach(file => {
writeLog(`${file}`);
});
} else {
writeLog('Aucun fichier trouvé.');
}
writeLog(`\nTotal: ${filesWithoutTests.length} fichier(s)\n`);
writeLog('='.repeat(60));
writeLog('RÉSUMÉ');
writeLog('='.repeat(60));
writeLog(`Fichiers avec "let Tests": ${filesWithTests.length}`);
writeLog(`Fichiers sans "let Tests": ${filesWithoutTests.length}`);
writeLog(`Total de fichiers analysés: ${allFiles.length}`);
writeLog('='.repeat(60));
// Sauvegarder le log
fs.writeFileSync(LOG_FILE, log.join('\n'), 'utf-8');
writeLog(`\nLog sauvegardé dans: ${LOG_FILE}`);
// Exporter les résultats en JSON
const results = {
date: new Date().toISOString(),
totalFiles: allFiles.length,
filesWithTests: filesWithTests,
filesWithoutTests: filesWithoutTests
};
const resultsFile = path.join(__dirname, 'check-tests-results.json');
fs.writeFileSync(resultsFile, JSON.stringify(results, null, 2), 'utf-8');
writeLog(`Résultats sauvegardés dans: ${resultsFile}`);