Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ed4aa5aa16 | |||
| 38d88c2f19 |
+1
-1
@@ -8,7 +8,7 @@
|
||||
}
|
||||
],
|
||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
||||
"version": "9.4.3",
|
||||
"version": "9.6.0",
|
||||
"esmodules": [
|
||||
"wh4_fr.js",
|
||||
"modules/babele-register.js",
|
||||
|
||||
@@ -274,7 +274,7 @@ const __check_fix_wrong_modules = (chatFlag, patchFinished) => {
|
||||
}
|
||||
} else if (game.user.isGM && patchFinished) {
|
||||
ChatMessage.create({
|
||||
content: "<div>Les modules WFRP4E ont été <strong>patchés avec succés</strong>. Vous pouvez y aller et que <strong>Shallya vous garde !</strong><div><div>Changements v9.3.5 : <ul><li>Ajout de la commande /voyage !</li><li>Améliorations de la commande /auberge</li><li>Les joueurs doivent désormais pouvoir créer leur persos</li><li>Très grosses mise à jour des scripts d'Effets et de leur traduction</li></ul></div>",
|
||||
content: "<div>Les modules WFRP4E ont été <strong>patchés avec succés</strong>. Vous pouvez y aller et que <strong>Shallya vous garde !</strong><div><div>Changements v9.6.0 : <ul><li>Très grosse mise à jour des scripts d'Effets et de leur traduction</li></ul></div>",
|
||||
user: game.user.id,
|
||||
whisper: ChatMessage.getWhisperRecipients("GM")
|
||||
});
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
MANIFEST-001339
|
||||
MANIFEST-001364
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/04/13-23:10:07.603169 7fddd97be6c0 Recovering log #1337
|
||||
2026/04/13-23:10:07.613544 7fddd97be6c0 Delete type=3 #1335
|
||||
2026/04/13-23:10:07.613619 7fddd97be6c0 Delete type=0 #1337
|
||||
2026/04/13-23:14:52.439353 7fddca1c26c0 Level-0 table #1342: started
|
||||
2026/04/13-23:14:52.439375 7fddca1c26c0 Level-0 table #1342: 0 bytes OK
|
||||
2026/04/13-23:14:52.447401 7fddca1c26c0 Delete type=0 #1340
|
||||
2026/04/13-23:14:52.447538 7fddca1c26c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:28:58.536469 7f5a46ffd6c0 Recovering log #1361
|
||||
2026/05/18-07:28:58.548900 7f5a46ffd6c0 Delete type=3 #1359
|
||||
2026/05/18-07:28:58.549070 7f5a46ffd6c0 Delete type=0 #1361
|
||||
2026/05/18-07:30:05.697583 7f5a467fc6c0 Level-0 table #1367: started
|
||||
2026/05/18-07:30:05.697633 7f5a467fc6c0 Level-0 table #1367: 0 bytes OK
|
||||
2026/05/18-07:30:05.704017 7f5a467fc6c0 Delete type=0 #1365
|
||||
2026/05/18-07:30:05.718239 7f5a467fc6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
2026/04/13-23:01:32.388566 7fddd97be6c0 Recovering log #1333
|
||||
2026/04/13-23:01:32.399282 7fddd97be6c0 Delete type=3 #1331
|
||||
2026/04/13-23:01:32.399346 7fddd97be6c0 Delete type=0 #1333
|
||||
2026/04/13-23:07:12.207745 7fddca1c26c0 Level-0 table #1338: started
|
||||
2026/04/13-23:07:12.207766 7fddca1c26c0 Level-0 table #1338: 0 bytes OK
|
||||
2026/04/13-23:07:12.214487 7fddca1c26c0 Delete type=0 #1336
|
||||
2026/04/13-23:07:12.214671 7fddca1c26c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:26:22.617911 7f5a94bff6c0 Delete type=3 #1
|
||||
2026/05/18-07:27:45.533452 7f5a467fc6c0 Level-0 table #1362: started
|
||||
2026/05/18-07:27:45.533503 7f5a467fc6c0 Level-0 table #1362: 0 bytes OK
|
||||
2026/05/18-07:27:45.540598 7f5a467fc6c0 Delete type=0 #1360
|
||||
2026/05/18-07:27:45.568568 7f5a467fc6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 29 : 1
|
||||
2026/05/18-07:27:45.568588 7f5a467fc6c0 Compacting 1@0 + 0@1 files
|
||||
2026/05/18-07:27:45.575581 7f5a467fc6c0 Generated table #1363@0: 13 keys, 49760 bytes
|
||||
2026/05/18-07:27:45.575663 7f5a467fc6c0 Compacted 1@0 + 0@1 files => 49760 bytes
|
||||
2026/05/18-07:27:45.582576 7f5a467fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2026/05/18-07:27:45.582792 7f5a467fc6c0 Delete type=2 #1226
|
||||
2026/05/18-07:27:45.611087 7f5a467fc6c0 Manual compaction at level-0 from '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 29 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-001341
|
||||
MANIFEST-001366
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/04/13-23:10:07.616013 7fddcbfff6c0 Recovering log #1339
|
||||
2026/04/13-23:10:07.625710 7fddcbfff6c0 Delete type=3 #1337
|
||||
2026/04/13-23:10:07.625777 7fddcbfff6c0 Delete type=0 #1339
|
||||
2026/04/13-23:14:52.426320 7fddca1c26c0 Level-0 table #1344: started
|
||||
2026/04/13-23:14:52.426354 7fddca1c26c0 Level-0 table #1344: 0 bytes OK
|
||||
2026/04/13-23:14:52.432796 7fddca1c26c0 Delete type=0 #1342
|
||||
2026/04/13-23:14:52.447521 7fddca1c26c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:28:58.553517 7f5a477fe6c0 Recovering log #1363
|
||||
2026/05/18-07:28:58.565268 7f5a477fe6c0 Delete type=3 #1361
|
||||
2026/05/18-07:28:58.565423 7f5a477fe6c0 Delete type=0 #1363
|
||||
2026/05/18-07:30:05.704317 7f5a467fc6c0 Level-0 table #1369: started
|
||||
2026/05/18-07:30:05.704383 7f5a467fc6c0 Level-0 table #1369: 0 bytes OK
|
||||
2026/05/18-07:30:05.711087 7f5a467fc6c0 Delete type=0 #1367
|
||||
2026/05/18-07:30:05.718264 7f5a467fc6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
2026/04/13-23:01:32.401911 7fddd8fbd6c0 Recovering log #1335
|
||||
2026/04/13-23:01:32.411157 7fddd8fbd6c0 Delete type=3 #1333
|
||||
2026/04/13-23:01:32.411219 7fddd8fbd6c0 Delete type=0 #1335
|
||||
2026/04/13-23:07:12.194188 7fddca1c26c0 Level-0 table #1340: started
|
||||
2026/04/13-23:07:12.194235 7fddca1c26c0 Level-0 table #1340: 0 bytes OK
|
||||
2026/04/13-23:07:12.201298 7fddca1c26c0 Delete type=0 #1338
|
||||
2026/04/13-23:07:12.214646 7fddca1c26c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:26:22.652077 7f5a47fff6c0 Delete type=3 #1
|
||||
2026/05/18-07:27:45.540983 7f5a467fc6c0 Level-0 table #1364: started
|
||||
2026/05/18-07:27:45.541077 7f5a467fc6c0 Level-0 table #1364: 0 bytes OK
|
||||
2026/05/18-07:27:45.548306 7f5a467fc6c0 Delete type=0 #1362
|
||||
2026/05/18-07:27:45.583119 7f5a467fc6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at '!items!ylFhk7mGZOnAJTUT' @ 416 : 1
|
||||
2026/05/18-07:27:45.583140 7f5a467fc6c0 Compacting 1@0 + 0@1 files
|
||||
2026/05/18-07:27:45.590339 7f5a467fc6c0 Generated table #1365@0: 103 keys, 115060 bytes
|
||||
2026/05/18-07:27:45.590381 7f5a467fc6c0 Compacted 1@0 + 0@1 files => 115060 bytes
|
||||
2026/05/18-07:27:45.596853 7f5a467fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2026/05/18-07:27:45.597062 7f5a467fc6c0 Delete type=2 #1228
|
||||
2026/05/18-07:27:45.611108 7f5a467fc6c0 Manual compaction at level-0 from '!items!ylFhk7mGZOnAJTUT' @ 416 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-001339
|
||||
MANIFEST-001364
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/04/13-23:10:07.641322 7fddd9fbf6c0 Recovering log #1337
|
||||
2026/04/13-23:10:07.651537 7fddd9fbf6c0 Delete type=3 #1335
|
||||
2026/04/13-23:10:07.651623 7fddd9fbf6c0 Delete type=0 #1337
|
||||
2026/04/13-23:14:52.478583 7fddca1c26c0 Level-0 table #1342: started
|
||||
2026/04/13-23:14:52.478613 7fddca1c26c0 Level-0 table #1342: 0 bytes OK
|
||||
2026/04/13-23:14:52.484781 7fddca1c26c0 Delete type=0 #1340
|
||||
2026/04/13-23:14:52.484989 7fddca1c26c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:28:58.588715 7f5a46ffd6c0 Recovering log #1361
|
||||
2026/05/18-07:28:58.601140 7f5a46ffd6c0 Delete type=3 #1359
|
||||
2026/05/18-07:28:58.601277 7f5a46ffd6c0 Delete type=0 #1361
|
||||
2026/05/18-07:30:05.740416 7f5a467fc6c0 Level-0 table #1367: started
|
||||
2026/05/18-07:30:05.740496 7f5a467fc6c0 Level-0 table #1367: 0 bytes OK
|
||||
2026/05/18-07:30:05.747194 7f5a467fc6c0 Delete type=0 #1365
|
||||
2026/05/18-07:30:05.747493 7f5a467fc6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
2026/04/13-23:01:32.426243 7fddcbfff6c0 Recovering log #1333
|
||||
2026/04/13-23:01:32.436951 7fddcbfff6c0 Delete type=3 #1331
|
||||
2026/04/13-23:01:32.437016 7fddcbfff6c0 Delete type=0 #1333
|
||||
2026/04/13-23:07:12.201427 7fddca1c26c0 Level-0 table #1338: started
|
||||
2026/04/13-23:07:12.201453 7fddca1c26c0 Level-0 table #1338: 0 bytes OK
|
||||
2026/04/13-23:07:12.207634 7fddca1c26c0 Delete type=0 #1336
|
||||
2026/04/13-23:07:12.214659 7fddca1c26c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:26:22.724053 7f5a477fe6c0 Delete type=3 #1
|
||||
2026/05/18-07:27:45.611259 7f5a467fc6c0 Level-0 table #1362: started
|
||||
2026/05/18-07:27:45.611332 7f5a467fc6c0 Level-0 table #1362: 0 bytes OK
|
||||
2026/05/18-07:27:45.617997 7f5a467fc6c0 Delete type=0 #1360
|
||||
2026/05/18-07:27:45.646323 7f5a467fc6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 5 : 1
|
||||
2026/05/18-07:27:45.646350 7f5a467fc6c0 Compacting 1@0 + 0@1 files
|
||||
2026/05/18-07:27:45.651592 7f5a467fc6c0 Generated table #1363@0: 3 keys, 19341 bytes
|
||||
2026/05/18-07:27:45.651637 7f5a467fc6c0 Compacted 1@0 + 0@1 files => 19341 bytes
|
||||
2026/05/18-07:27:45.658205 7f5a467fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2026/05/18-07:27:45.658493 7f5a467fc6c0 Delete type=2 #1226
|
||||
2026/05/18-07:27:45.658909 7f5a467fc6c0 Manual compaction at level-0 from '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 5 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-001339
|
||||
MANIFEST-001364
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/04/13-23:10:07.590923 7fddd8fbd6c0 Recovering log #1337
|
||||
2026/04/13-23:10:07.600770 7fddd8fbd6c0 Delete type=3 #1335
|
||||
2026/04/13-23:10:07.600832 7fddd8fbd6c0 Delete type=0 #1337
|
||||
2026/04/13-23:14:52.419409 7fddca1c26c0 Level-0 table #1342: started
|
||||
2026/04/13-23:14:52.419440 7fddca1c26c0 Level-0 table #1342: 0 bytes OK
|
||||
2026/04/13-23:14:52.426167 7fddca1c26c0 Delete type=0 #1340
|
||||
2026/04/13-23:14:52.447511 7fddca1c26c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:28:58.518987 7f5a47fff6c0 Recovering log #1361
|
||||
2026/05/18-07:28:58.530654 7f5a47fff6c0 Delete type=3 #1359
|
||||
2026/05/18-07:28:58.530808 7f5a47fff6c0 Delete type=0 #1361
|
||||
2026/05/18-07:30:05.690995 7f5a467fc6c0 Level-0 table #1367: started
|
||||
2026/05/18-07:30:05.691047 7f5a467fc6c0 Level-0 table #1367: 0 bytes OK
|
||||
2026/05/18-07:30:05.697374 7f5a467fc6c0 Delete type=0 #1365
|
||||
2026/05/18-07:30:05.718212 7f5a467fc6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
2026/04/13-23:01:32.376215 7fddcbfff6c0 Recovering log #1333
|
||||
2026/04/13-23:01:32.386265 7fddcbfff6c0 Delete type=3 #1331
|
||||
2026/04/13-23:01:32.386335 7fddcbfff6c0 Delete type=0 #1333
|
||||
2026/04/13-23:07:12.172988 7fddca1c26c0 Level-0 table #1338: started
|
||||
2026/04/13-23:07:12.173015 7fddca1c26c0 Level-0 table #1338: 0 bytes OK
|
||||
2026/04/13-23:07:12.180381 7fddca1c26c0 Delete type=0 #1336
|
||||
2026/04/13-23:07:12.187032 7fddca1c26c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:26:22.583179 7f5a46ffd6c0 Delete type=3 #1
|
||||
2026/05/18-07:27:45.526779 7f5a467fc6c0 Level-0 table #1362: started
|
||||
2026/05/18-07:27:45.526853 7f5a467fc6c0 Level-0 table #1362: 0 bytes OK
|
||||
2026/05/18-07:27:45.533273 7f5a467fc6c0 Delete type=0 #1360
|
||||
2026/05/18-07:27:45.555413 7f5a467fc6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 114 : 1
|
||||
2026/05/18-07:27:45.555438 7f5a467fc6c0 Compacting 1@0 + 0@1 files
|
||||
2026/05/18-07:27:45.561268 7f5a467fc6c0 Generated table #1363@0: 46 keys, 60465 bytes
|
||||
2026/05/18-07:27:45.561341 7f5a467fc6c0 Compacted 1@0 + 0@1 files => 60465 bytes
|
||||
2026/05/18-07:27:45.568073 7f5a467fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2026/05/18-07:27:45.568270 7f5a467fc6c0 Delete type=2 #1226
|
||||
2026/05/18-07:27:45.611060 7f5a467fc6c0 Manual compaction at level-0 from '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 114 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-001339
|
||||
MANIFEST-001364
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/04/13-23:10:07.578503 7fddd9fbf6c0 Recovering log #1337
|
||||
2026/04/13-23:10:07.588788 7fddd9fbf6c0 Delete type=3 #1335
|
||||
2026/04/13-23:10:07.588855 7fddd9fbf6c0 Delete type=0 #1337
|
||||
2026/04/13-23:14:52.432890 7fddca1c26c0 Level-0 table #1342: started
|
||||
2026/04/13-23:14:52.432912 7fddca1c26c0 Level-0 table #1342: 0 bytes OK
|
||||
2026/04/13-23:14:52.439225 7fddca1c26c0 Delete type=0 #1340
|
||||
2026/04/13-23:14:52.447529 7fddca1c26c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:28:58.501212 7f5a46ffd6c0 Recovering log #1361
|
||||
2026/05/18-07:28:58.513409 7f5a46ffd6c0 Delete type=3 #1359
|
||||
2026/05/18-07:28:58.513573 7f5a46ffd6c0 Delete type=0 #1361
|
||||
2026/05/18-07:30:05.682910 7f5a467fc6c0 Level-0 table #1367: started
|
||||
2026/05/18-07:30:05.683011 7f5a467fc6c0 Level-0 table #1367: 0 bytes OK
|
||||
2026/05/18-07:30:05.690419 7f5a467fc6c0 Delete type=0 #1365
|
||||
2026/05/18-07:30:05.690705 7f5a467fc6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
2026/04/13-23:01:32.363321 7fddd9fbf6c0 Recovering log #1333
|
||||
2026/04/13-23:01:32.373224 7fddd9fbf6c0 Delete type=3 #1331
|
||||
2026/04/13-23:01:32.373285 7fddd9fbf6c0 Delete type=0 #1333
|
||||
2026/04/13-23:07:12.180494 7fddca1c26c0 Level-0 table #1338: started
|
||||
2026/04/13-23:07:12.180514 7fddca1c26c0 Level-0 table #1338: 0 bytes OK
|
||||
2026/04/13-23:07:12.186759 7fddca1c26c0 Delete type=0 #1336
|
||||
2026/04/13-23:07:12.187045 7fddca1c26c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:26:22.549412 7f5a46ffd6c0 Delete type=3 #1
|
||||
2026/05/18-07:27:45.506132 7f5a467fc6c0 Level-0 table #1362: started
|
||||
2026/05/18-07:27:45.506206 7f5a467fc6c0 Level-0 table #1362: 0 bytes OK
|
||||
2026/05/18-07:27:45.513652 7f5a467fc6c0 Delete type=0 #1360
|
||||
2026/05/18-07:27:45.513973 7f5a467fc6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 695 : 1
|
||||
2026/05/18-07:27:45.513989 7f5a467fc6c0 Compacting 1@0 + 0@1 files
|
||||
2026/05/18-07:27:45.519341 7f5a467fc6c0 Generated table #1363@0: 234 keys, 27934 bytes
|
||||
2026/05/18-07:27:45.519389 7f5a467fc6c0 Compacted 1@0 + 0@1 files => 27934 bytes
|
||||
2026/05/18-07:27:45.525840 7f5a467fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2026/05/18-07:27:45.526182 7f5a467fc6c0 Delete type=2 #1226
|
||||
2026/05/18-07:27:45.526639 7f5a467fc6c0 Manual compaction at level-0 from '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 695 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000982
|
||||
MANIFEST-001007
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/04/13-23:10:07.628261 7fddd97be6c0 Recovering log #980
|
||||
2026/04/13-23:10:07.638743 7fddd97be6c0 Delete type=3 #978
|
||||
2026/04/13-23:10:07.638813 7fddd97be6c0 Delete type=0 #980
|
||||
2026/04/13-23:14:52.447639 7fddca1c26c0 Level-0 table #985: started
|
||||
2026/04/13-23:14:52.447658 7fddca1c26c0 Level-0 table #985: 0 bytes OK
|
||||
2026/04/13-23:14:52.454058 7fddca1c26c0 Delete type=0 #983
|
||||
2026/04/13-23:14:52.484949 7fddca1c26c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:28:58.571772 7f5a94bff6c0 Recovering log #1004
|
||||
2026/05/18-07:28:58.582799 7f5a94bff6c0 Delete type=3 #1002
|
||||
2026/05/18-07:28:58.582927 7f5a94bff6c0 Delete type=0 #1004
|
||||
2026/05/18-07:30:05.711307 7f5a467fc6c0 Level-0 table #1010: started
|
||||
2026/05/18-07:30:05.711365 7f5a467fc6c0 Level-0 table #1010: 0 bytes OK
|
||||
2026/05/18-07:30:05.718010 7f5a467fc6c0 Delete type=0 #1008
|
||||
2026/05/18-07:30:05.718285 7f5a467fc6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
2026/04/13-23:01:32.413810 7fddd97be6c0 Recovering log #976
|
||||
2026/04/13-23:01:32.423395 7fddd97be6c0 Delete type=3 #974
|
||||
2026/04/13-23:01:32.423455 7fddd97be6c0 Delete type=0 #976
|
||||
2026/04/13-23:07:12.187249 7fddca1c26c0 Level-0 table #981: started
|
||||
2026/04/13-23:07:12.187284 7fddca1c26c0 Level-0 table #981: 0 bytes OK
|
||||
2026/04/13-23:07:12.194022 7fddca1c26c0 Delete type=0 #979
|
||||
2026/04/13-23:07:12.214628 7fddca1c26c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2026/05/18-07:26:22.688104 7f5a94bff6c0 Delete type=3 #1
|
||||
2026/05/18-07:27:45.548530 7f5a467fc6c0 Level-0 table #1005: started
|
||||
2026/05/18-07:27:45.548593 7f5a467fc6c0 Level-0 table #1005: 0 bytes OK
|
||||
2026/05/18-07:27:45.555108 7f5a467fc6c0 Delete type=0 #1003
|
||||
2026/05/18-07:27:45.597357 7f5a467fc6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 59 : 1
|
||||
2026/05/18-07:27:45.597377 7f5a467fc6c0 Compacting 1@0 + 0@1 files
|
||||
2026/05/18-07:27:45.602670 7f5a467fc6c0 Generated table #1006@0: 24 keys, 67879 bytes
|
||||
2026/05/18-07:27:45.602722 7f5a467fc6c0 Compacted 1@0 + 0@1 files => 67879 bytes
|
||||
2026/05/18-07:27:45.610609 7f5a467fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2026/05/18-07:27:45.610794 7f5a467fc6c0 Delete type=2 #869
|
||||
2026/05/18-07:27:45.611142 7f5a467fc6c0 Manual compaction at level-0 from '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 59 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
return args.item?.system?.isProjectiles && args.data.targets[0]?.actor?.sizeNum < 3
|
||||
return args.item?.system?.isRanged && args.data.targets[0]?.actor?.sizeNum < 3
|
||||
@@ -0,0 +1 @@
|
||||
this.item.system.encumbrance.value = Math.max(0, this.item.system.encumbrance.value - 1)
|
||||
@@ -0,0 +1,18 @@
|
||||
let melee = ["Compendium.wfrp4e-core.items.Item.4MJJCiOKPkBByYwW", "Compendium.wfrp4e-core.items.Item.RWJrupj9seau0w31", "Compendium.wfrp4e-core.items.Item.jt0DmVK9IiF6Sd2h"];
|
||||
let ranged = ["Compendium.wfrp4e-core.items.Item.5eDd6iFeR9G6cCfz", "Compendium.wfrp4e-core.items.Item.jrYW2OyDHd1Md2my", "Compendium.wfrp4e-core.items.Item.cygaI9gq4BQJvbB5"];
|
||||
|
||||
if (args.equipped)
|
||||
{
|
||||
if (this.item.system.isMelee)
|
||||
{
|
||||
this.actor.addEffectItems(melee, this.effect);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.actor.addEffectItems(ranged, this.effect);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.effect.deleteCreatedItems();
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
let property = this.effect.getFlag("wfrp4e", "property");
|
||||
if (property && !this.item.system.flaws.value.find(i => i.name == property));
|
||||
{
|
||||
this.item.system.flaws.value.push({name : property});
|
||||
}
|
||||
+17
-14
@@ -1,28 +1,31 @@
|
||||
if (!this.item.name.includes("(") || this.item.system.tests.value.includes("Terrain") || this.item.system.tests.value.toLowerCase().includes("(any)")) {
|
||||
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)")) {
|
||||
// Si le nom précise déjà un terrain, on met à jour la valeur de tests
|
||||
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
|
||||
else // Sinon, on propose un choix par dialogue
|
||||
{
|
||||
let choice = await ItemDialog.create(ItemDialog.objectToArray({
|
||||
coastal: "Littoral",
|
||||
deserts: "Déserts",
|
||||
marshes: "Marécages",
|
||||
rocky: "Rocailleux",
|
||||
tundra: "Toundra",
|
||||
woodlands: "Régions boisées"
|
||||
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]) {
|
||||
if (choice[0])
|
||||
{
|
||||
name = `${name.split("(")[0].trim()} (${choice[0].name})`
|
||||
tests = tests.replace("Terrain", choice[0].name + " Terrain")
|
||||
tests = tests.replace("the 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})
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
let damage = await new Roll("1d10").roll();
|
||||
damage.toMessage(this.script.getChatData());
|
||||
this.actor.applyDamage(damage.total, {
|
||||
damageType: game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL,
|
||||
createMessage: this.script.getChatData()
|
||||
});
|
||||
|
||||
const test = await this.actor.setupSkill(
|
||||
game.i18n.localize("NAME.Endurance"),
|
||||
{
|
||||
fields: {difficulty: "average"},
|
||||
skipTargets: true,
|
||||
appendTitle: ` — ${this.effect.name}`,
|
||||
},
|
||||
);
|
||||
|
||||
await test.roll();
|
||||
if (test.failed)
|
||||
{
|
||||
this.actor.addCondition("stunned");
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
if (args.opposedTest.result.hitloc.value == this.item.system.location.key && args.totalWoundLoss > 0)
|
||||
if (args.loc == this.item.system.location.key && args.totalWoundLoss > 0)
|
||||
{
|
||||
args.actor.addCondition("bleeding", 2);
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
if (!this.item.system.properties.qualities.pummel) this.item.system.qualities.value.push({name : 'pummel'});if (!this.item.system.properties.qualities.hack) this.item.system.qualities.value.push({name : 'hack'})
|
||||
@@ -0,0 +1 @@
|
||||
return game.messages.get(args.context.dispel)?.system.test.spell.system.magicMissile.value;
|
||||
@@ -1 +1 @@
|
||||
args.prefillModifiers.difficulty = "hard"
|
||||
args.fields.difficulty = "hard"
|
||||
@@ -0,0 +1,6 @@
|
||||
let damage = await new Roll("1d10 + 1").roll();
|
||||
damage.toMessage(this.script.getChatData());
|
||||
this.actor.applyDamage(damage.total, {
|
||||
damageType: game.wfrp4e.config.DAMAGE_TYPE.IGNORE_AP,
|
||||
createMessage: this.script.getChatData()
|
||||
});
|
||||
@@ -0,0 +1,10 @@
|
||||
if (args.type == "effect" && args.options.action == "delete" && ["prone"].some(i => args.document.statuses.has(i)))
|
||||
{
|
||||
this.script.notification("Impossible de retirer " + args.document.name);
|
||||
let resist = await this.effect.resistEffect();
|
||||
if (resist)
|
||||
{
|
||||
this.effect.delete();
|
||||
}
|
||||
return resist;
|
||||
}
|
||||
@@ -5,5 +5,5 @@ let SL = Math.floor(args.test.target / 10) - Math.floor(args.test.result.roll /
|
||||
let ones = Number(args.test.result.roll.toString().split("").pop())
|
||||
|
||||
if (ones > SL)
|
||||
args.Test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} DR</span>`)
|
||||
args.test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} DR</span>`)
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Pray"), {appendTitle: ` - ${this.effect.name}`});
|
||||
await test.roll();
|
||||
|
||||
if (test.succeeded)
|
||||
{
|
||||
this.actor.removeCondition("blinded", 1 + parseInt(test.result.SL));
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
args.options.terror
|
||||
@@ -0,0 +1,6 @@
|
||||
let roll = await new Roll("2d10 + @sin", {sin: this.actor.system.status.sin.value || 0}).roll();
|
||||
roll.toMessage(this.script.getChatData());
|
||||
this.effect.updateSource({duration: {
|
||||
value: roll.total,
|
||||
units: "days"
|
||||
}});
|
||||
@@ -0,0 +1,6 @@
|
||||
let roll = await new Roll("2d10 + @sin", {sin: this.actor.system.status.sin.value || 0}).roll();
|
||||
roll.toMessage(this.script.getChatData());
|
||||
this.effect.updateSource({duration: {
|
||||
value: roll.total,
|
||||
units: "rounds"
|
||||
}});
|
||||
@@ -0,0 +1 @@
|
||||
this.actor.modifyWounds(-1);
|
||||
@@ -0,0 +1,21 @@
|
||||
let damage = await new Roll("1d10 + @sin", {sin: this.actor.system.status.sin.value || 0}).roll();
|
||||
damage.toMessage(this.script.getChatData());
|
||||
this.actor.applyDamage(damage.total, {
|
||||
damageType: game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL,
|
||||
createMessage: this.script.getChatData()
|
||||
});
|
||||
|
||||
const test = await this.actor.setupSkill(
|
||||
game.i18n.localize("NAME.Endurance"),
|
||||
{
|
||||
fields: {difficulty: "difficult"},
|
||||
skipTargets: true,
|
||||
appendTitle: ` — ${this.effect.name}`,
|
||||
},
|
||||
);
|
||||
|
||||
await test.roll();
|
||||
if (test.failed)
|
||||
{
|
||||
this.actor.addCondition("stunned");
|
||||
}
|
||||
@@ -5,5 +5,5 @@ let SL = Math.floor(args.test.target / 10) - Math.floor(args.test.result.roll /
|
||||
let ones = Number(args.test.result.roll.toString().split("").pop())
|
||||
|
||||
if (ones > SL)
|
||||
args.Test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} DR</span>`)
|
||||
args.test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} DR</span>`)
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
let roll = await new Roll("1d10").roll();
|
||||
|
||||
roll.toMessage(this.script.getChatData());
|
||||
|
||||
if (roll.total == 1)
|
||||
{
|
||||
this.item.updateSource({"system.description.value" : this.item.system.description.value += `<p><strong>${this.effect.name}</strong>: The weapon counts as a @Corruption[minor]{minor source of Corruption}.</p>`});
|
||||
}
|
||||
else if (roll.total <= 5)
|
||||
{
|
||||
let quirks = await fromUuid("Compendium.wfrp4e-archives2.tables.RollTable.LbNZOF6Ov7xKHS5Z");
|
||||
if (quirks)
|
||||
{
|
||||
let quirkRoll = await new Roll("1d100 + 40").roll();
|
||||
quirkRoll.toMessage(this.script.getChatData());
|
||||
let quirkResult = (await quirks.roll({roll: quirkRoll})).results[0].text;
|
||||
this.item.updateSource({"system.description.value" : this.item.system.description.value += `<p><strong>${this.effect.name}</strong>: ${quirkResult.replace("<p>", "")}</p>`});
|
||||
}
|
||||
else
|
||||
{
|
||||
this.item.updateSource({"system.description.value" : this.item.system.description.value += `<p><strong>${this.effect.name}</strong>: Generate an additional Quirk or Curse by rolling on the @UUID[Compendium.wfrp4e-archives2.tables.RollTable.LbNZOF6Ov7xKHS5Z]{Quirks and Curses} Table and adding +40 to the result.</p>`});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.item.updateSource({"system.description.value" : this.item.system.description.value += `<p><strong>${this.effect.name}</strong>: People who recognise the weapon are subject to @UUID[Compendium.wfrp4e-core.items.Item.0VpT5yubw4UL7j6f]{Animosity} towards the bearer.</p>`});
|
||||
}
|
||||
@@ -11,8 +11,8 @@ if (args.test.result.castOutcome == "failure")
|
||||
this.script.notification(`Lost ${value} Wounds`)
|
||||
this.actor.modifyWounds(-1 * value)
|
||||
await this.item.system.toggleEquip();
|
||||
args.Test.addSL(value);
|
||||
args.Test.preData.other.push(`<strong>${this.effect.name}</strong>: +${value} SL`)
|
||||
args.test.addSL(value);
|
||||
args.test.preData.other.push(`<strong>${this.effect.name}</strong>: +${value} SL`)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Cool"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`})
|
||||
await test.roll();
|
||||
if (test.failed && this.actor.type == "character")
|
||||
{
|
||||
this.actor.update({"system.status.corruption.value" : parseInt(this.actor.status.corruption.value) + 1})
|
||||
this.script.message("Gagné un point de Corruption", {whisper : ChatMessage.getWhisperRecipients("GM")})
|
||||
}
|
||||
@@ -13,7 +13,7 @@ const test = await this.actor.setupSkill(game.i18n.localize("NAME.Résistance"),
|
||||
await test.roll();
|
||||
|
||||
if (test.failed) {
|
||||
await this.actor.addEffectItems(bloodyFluxUUID, this.effet);
|
||||
await this.actor.addEffectItems(bloodyFluxUUID, this.effect);
|
||||
} else {
|
||||
const SL = test.result.SL;
|
||||
const heal = 1 + SL;
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
this.actor.addCondition("blinded");
|
||||
let roll = await new Roll("1d10").roll();
|
||||
roll.toMessage(this.script.getChatData());
|
||||
this.effect.updateSource({duration: {value: roll.total, units: "hours"}});
|
||||
@@ -0,0 +1,5 @@
|
||||
if (args.sourceTest.options.doubleDamage)
|
||||
{
|
||||
args.modifiers.other.push({label: this.effect.name, value: args.totalWoundLoss});
|
||||
args.totalWoundLoss *= 2;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
let test = args.test
|
||||
if (test && test.spell?.system.magicMissile.value)
|
||||
{
|
||||
let roll = await new Roll("1d100").roll();
|
||||
roll.toMessage(this.script.getChatData());
|
||||
if (roll.total <= 30)
|
||||
{
|
||||
this.script.message(`<strong>${this.item.name}</strong> : Le sort échoue !`)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
if (args.test.skill?.name == game.i18n.localize("NAME.Pray") || args.test.prayer)
|
||||
{
|
||||
if (parseInt(args.test.result.SL) > 0)
|
||||
{
|
||||
args.test.result.SL = "+0";
|
||||
args.test.result.description = game.i18n.localize("ROLL.MarginalSuccess");
|
||||
args.test.result.other.push(`<strong>${this.effect.name}</strong>: Maximum +0 SL`)
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
let halve;
|
||||
if (args.opposedTest.attackerTest.item?.type != "spell")
|
||||
if (args.sourceItem?.type != "spell")
|
||||
{
|
||||
halve = await foundry.applications.api.DialogV2.confirm({window : {title : this.effect.name}, content : "Diviser les dégâts par deux ? (Divise tous les dégâts sauf le feu, le froid et la magie)"})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
let properties = {
|
||||
fine : "Fine",
|
||||
durable : "Durable",
|
||||
lightweight : "Lightweight",
|
||||
practical : "Practical"
|
||||
};
|
||||
|
||||
|
||||
let choice = await ItemDialog.create(ItemDialog.objectToArray(properties), 1, {title: this.effect.name, text: "Select Property"});
|
||||
|
||||
if (choice[0])
|
||||
{
|
||||
this.effect.updateSource({"flags.wfrp4e.property" : choice[0].id, name : this.effect.setSpecifier(choice[0].name)});
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
let colors = {
|
||||
fire : "#b22222",
|
||||
heavens : "#87ceeb",
|
||||
metal : "#ee9b3a",
|
||||
shadow : "#808080",
|
||||
life : "#008000",
|
||||
beasts : "#a52a2a",
|
||||
light : "#f0ffff",
|
||||
death : "#800080",
|
||||
necromancy : "#800080",
|
||||
daemonology : "#8b0000"
|
||||
};
|
||||
|
||||
let spell = this.actor.itemTypes.spell.find(i => Object.keys(colors).includes(i.system.lore.value[0]));
|
||||
|
||||
let color;
|
||||
if (spell)
|
||||
{
|
||||
color = colors[spell.system.lore.value[0]];
|
||||
}
|
||||
else
|
||||
{
|
||||
color = Object.values(colors)[Math.ceil(CONFIG.Dice.randomUniform() * 10)];
|
||||
}
|
||||
|
||||
this.effect.updateSource({changes: this.effect.changes.concat({key: "token.light.color", type: "override", value: color})});
|
||||
@@ -0,0 +1,15 @@
|
||||
let qualities = {
|
||||
fast : "Rapide",
|
||||
hack : "Tranchant",
|
||||
impale : "Empalant",
|
||||
penetrating : "Pénétrant",
|
||||
precise : "Précis"
|
||||
}
|
||||
|
||||
let choice = await ItemDialog.create(ItemDialog.objectToArray(qualities, this.item.img), 1, {text: "Choisissez une qualité", title: this.effect.name});
|
||||
|
||||
if (choice[0])
|
||||
{
|
||||
this.script.message(choice[0].name);
|
||||
this.effect.setFlag("wfrp4e", "quality", choice[0].id);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
if (args.totalWoundLoss > 0) args.actor.addCondition('ablaze')
|
||||
@@ -2,7 +2,7 @@ let lore = this.effect.name.split("(")[1].split(")")[0].toLowerCase();
|
||||
|
||||
// If channelling corresponding lore
|
||||
if (args.type == "channelling" && args.spell.system.lore.value == lore)
|
||||
args.prefillModifiers.slBonus += 2
|
||||
args.fields.slBonus += 2
|
||||
// If channelling or casting different lore
|
||||
else if (args.spell.system.lore.value != lore && args.spell.system.lore.value != "petty")
|
||||
args.prefillModifiers.slBonus -= 1
|
||||
args.fields.slBonus -= 1
|
||||
@@ -0,0 +1,6 @@
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Cool"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`, fields : {difficulty : "hard"}, context : {failure: "Gain Broken"}});
|
||||
await test.roll();
|
||||
if (test.failed)
|
||||
{
|
||||
this.actor.addCondition("broken");
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
if (args.opposedTest.attackerTest.weapon?.system.properties?.qualities.hack && !args.hackReminder)
|
||||
if (args.sourceItem?.system.properties?.qualities.hack && !args.hackReminder)
|
||||
{
|
||||
args.hackReminder = true;
|
||||
args.opposedTest.result.other.push(`<strong>${this.effect.name}</strong>: Hack causes ${this.item.Advances} extra damage`)
|
||||
if (args.opposedTest)
|
||||
{
|
||||
args.opposedTest.result.other.push(`<strong>${this.effect.name}</strong> : Tranchant inflige ${this.item.Advances} dégâts supplémentaires`)
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
if (args.totalWoundLoss > 0) {
|
||||
if (args.opposedTest)
|
||||
{
|
||||
args.opposedTest.result.other.push(
|
||||
`@Corruption[minor]{Moderate Exposure to Corruption}`
|
||||
`@Corruption[minor]{Exposition modérée à la Corruption}`
|
||||
)
|
||||
}
|
||||
this.script.message(`<strong>${this.effect.name}</strong>:
|
||||
@Corruption[moderate]{Moderate Exposure to Corruption} <br/>
|
||||
<strong>${args.actor.prototypeToken.name}</strong> must take an
|
||||
<strong>Corruption (Moderate) Test</strong>`,
|
||||
@Corruption[moderate]{Exposition modérée à la Corruption} <br/>
|
||||
<strong>${args.actor.prototypeToken.name}</strong> doit effectuer un
|
||||
<strong>Test de Corruption (Modéré)</strong>`,
|
||||
{whisper: ChatMessage.getWhisperRecipients("GM")}
|
||||
)
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
if ((args.opposedTest.attackerTest.item && args.opposedTest.attackerTest.item.isMelee) || (args.opposedTest.attackerTest.item && !args.opposedTest.attackerTest.item.name.includes("Projectiles")))
|
||||
if ((args.sourceItem && args.sourceItem.isMelee) || (args.sourceItem && !args.sourceItem.name.includes("Projectiles")))
|
||||
{
|
||||
let choice = await foundry.applications.api.DialogV2.confirm({window : {title : this.effect.name}, content : `<p>Apply damage with <strong>${this.effect.name}</strong> to attacker?`})
|
||||
let choice = await foundry.applications.api.DialogV2.confirm({window : {title : this.effect.name}, content : `<p>Appliquer les dégâts avec <strong>${this.effect.name}</strong> à l'attaquant ?`})
|
||||
|
||||
if (choice)
|
||||
{
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
args.prefillModifiers.modifier += 10
|
||||
args.fields.modifier += 10
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
let properties = {
|
||||
ugly : "Ugly",
|
||||
shoddy : "Shoddy",
|
||||
unreliable : "Unreliable"
|
||||
};
|
||||
|
||||
let choice = await ItemDialog.create(ItemDialog.objectToArray(properties), 1, {title: this.effect.name, text: "Select Property"});
|
||||
|
||||
if (choice[0])
|
||||
{
|
||||
this.effect.updateSource({"flags.wfrp4e.property" : choice[0].id, name : this.effect.setSpecifier(choice[0].name)});
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
let skills = this.actor.itemTypes.skill.filter(s => (this.effect.getFlag("wfrp4e", "skills") || []).includes(s.name));
|
||||
skills.forEach(s => {
|
||||
s.system.modifier.value -= 10;
|
||||
})
|
||||
@@ -1,4 +1,4 @@
|
||||
if (args.opposedTest.result.hitloc.value == this.item.system.location.key && args.totalWoundLoss > 0)
|
||||
if (args.loc == this.item.system.location.key && args.totalWoundLoss > 0)
|
||||
{
|
||||
args.actor.addCondition("bleeding", 2);
|
||||
this.script.notification("Etat Hémorragique ajouté")
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
if (args.opposedTest.result.hitloc.value == "body")
|
||||
if (args.loc == "body")
|
||||
{
|
||||
if ((await new Roll("1d2").roll()).total == 1)
|
||||
{
|
||||
args.opposedTest.result.hitloc.value = "head"
|
||||
this.script.message(`Localisation du coup changé pour la tête`)
|
||||
args.loc = "head"
|
||||
args.AP = foundry.utils.deepClone(args.actor.status.armour[args.loc]);
|
||||
this.script.message(`Localisation du coup changée pour la tête`)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
let locs = Object.keys(this.actor.system.status.armour);
|
||||
|
||||
let location = locs[Math.floor(CONFIG.Dice.randomUniform() * (locs.length))];
|
||||
|
||||
game.wfrp4e.tables.formatChatRoll(`crit${location}`, {criticalLocation: location, showRoll: true});
|
||||
@@ -0,0 +1,3 @@
|
||||
let roll = await new Roll("1d10").roll();
|
||||
roll.toMessage(this.script.getChatData());
|
||||
this.effect.updateSource({duration: {value: roll.total, units: "hours"}});
|
||||
@@ -0,0 +1,2 @@
|
||||
let skill = this.actor.itemTypes.skill.find(s => s.name === game.i18n.localize("NAME.Pray"));
|
||||
skill.system.modifier.value -= 10;
|
||||
@@ -0,0 +1,27 @@
|
||||
this.actor.addCondition("ablaze");
|
||||
let colors = {
|
||||
fire : "#b22222",
|
||||
heavens : "#87ceeb",
|
||||
metal : "#ee9b3a",
|
||||
shadow : "#808080",
|
||||
life : "#008000",
|
||||
beasts : "#a52a2a",
|
||||
light : "#f0ffff",
|
||||
death : "#800080",
|
||||
necromancy : "#800080",
|
||||
daemonology : "#8b0000"
|
||||
};
|
||||
|
||||
let spell = this.actor.itemTypes.spell.find(i => Object.keys(colors).includes(i.system.lore.value[0]));
|
||||
|
||||
let color;
|
||||
if (spell)
|
||||
{
|
||||
color = colors[spell.system.lore.value[0]];
|
||||
}
|
||||
else
|
||||
{
|
||||
color = Object.values(colors)[Math.ceil(CONFIG.Dice.randomUniform() * 10)];
|
||||
}
|
||||
|
||||
this.effect.updateSource({changes: this.effect.changes.concat({key: "token.light.color", type: "override", value: color})});
|
||||
@@ -1,4 +1,4 @@
|
||||
if (args.opposedTest.result.hitloc.value == "body" && args.totalWoundLoss > 0)
|
||||
if (args.loc == "body" && args.totalWoundLoss > 0)
|
||||
{
|
||||
args.actor.addCondition("bleeding", 2)
|
||||
this.script.notification("Etat Hémmoragique appliqué : 2 niveaux de saignement")
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
if (args.type == "effect" && args.options.action == "delete" && ["blinded"].some(i => args.document.statuses.has(i)))
|
||||
{
|
||||
this.script.notification("Impossible de retirer " + args.document.name);
|
||||
return false;
|
||||
}
|
||||
@@ -25,7 +25,7 @@ if (god)
|
||||
if (blessings.length)
|
||||
{
|
||||
this.script.scriptNotification("Ajout de " + blessings.map(i => i.name).join(", "))
|
||||
await this.actor.addEffectItems(blessings.map(i => i.uuid), this.effet)
|
||||
await this.actor.addEffectItems(blessings.map(i => i.uuid), this.effect)
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
this.actor.addCondition("deafened");
|
||||
@@ -0,0 +1 @@
|
||||
game.wfrp4e.tables.formatChatRoll(`mutatephys`, {showRoll: true});
|
||||
@@ -0,0 +1,5 @@
|
||||
if (args.totalWoundLoss > 0)
|
||||
{
|
||||
args.modifiers.other.push({label : this.effect.name, value : args.totalWoundLoss + 4})
|
||||
args.totalWoundLoss = (args.totalWoundLoss * 2) + 4
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
await this.actor.addCondition("blinded");
|
||||
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Cool"), {appendTitle: ` - ${this.effect.name}`, skipTargets: true});
|
||||
await test.roll();
|
||||
|
||||
if (test.failed)
|
||||
{
|
||||
await this.actor.addCondition("blinded");
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
if (!this.item.system.properties.qualities.fast) this.item.system.qualities.value.push({name : 'fast'});
|
||||
if (!this.item.system.properties.qualities.precise) this.item.system.qualities.value.push({name : 'precise'})
|
||||
if (!this.item.system.properties.qualities.penetrating) this.item.system.qualities.value.push({name : 'penetrating'})
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user