Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 301cc830bc | |||
| 786afeab74 | |||
| e0383def30 | |||
| 7dc51444f0 | |||
| 752a6701c0 |
@@ -1192,6 +1192,10 @@
|
|||||||
"CHAT.ExpReceivedNoReason":"Vous avez reçu <b>{amount}</b> points d'expérience",
|
"CHAT.ExpReceivedNoReason":"Vous avez reçu <b>{amount}</b> points d'expérience",
|
||||||
"CHAT.CriticalDeflection":"Déviation de Critique",
|
"CHAT.CriticalDeflection":"Déviation de Critique",
|
||||||
"CHAT.DamageToArmour":"1 Dommages appliqués à {item} ({type})",
|
"CHAT.DamageToArmour":"1 Dommages appliqués à {item} ({type})",
|
||||||
|
"CHAT.CastSpell":"Incanter {spell}",
|
||||||
|
"CHAT.Dispel":"Dissiper {spell}",
|
||||||
|
"CHAT.DissolutionTable":"Lancer sur la Table de Dissolution du Corps et de l'Esprit pour votre Espèce:<br>@Table[corruption]",
|
||||||
|
"CHAT.InvokePrayer":"Invoquer {prayer}",
|
||||||
|
|
||||||
"Error.SpeciesSkills" : "Impossible d'ajouter des compétences pour les races",
|
"Error.SpeciesSkills" : "Impossible d'ajouter des compétences pour les races",
|
||||||
"Error.SpeciesTalents" : "Impossible d'ajouter des talents pour les races",
|
"Error.SpeciesTalents" : "Impossible d'ajouter des talents pour les races",
|
||||||
@@ -2348,6 +2352,8 @@
|
|||||||
"EFFECT.AffectTheSourceOfFearName":"Tests qui affectent {name}",
|
"EFFECT.AffectTheSourceOfFearName":"Tests qui affectent {name}",
|
||||||
"EFFECT.DeletingEffectItems":"Suppression des items d'effets: {items}",
|
"EFFECT.DeletingEffectItems":"Suppression des items d'effets: {items}",
|
||||||
"EFFECT.BlackpowderShock":"Contre-coup de Poudre Noire",
|
"EFFECT.BlackpowderShock":"Contre-coup de Poudre Noire",
|
||||||
|
"EFFECT.BonusModifier":"Modificateur de Bonus",
|
||||||
|
"EFFECT.CharacteristicsBonus":"Caractéristiques (Modificateur de Bonus)",
|
||||||
|
|
||||||
"GRIEVANCE.Warning1":"Attention",
|
"GRIEVANCE.Warning1":"Attention",
|
||||||
"GRIEVANCE.Warning2":": Cette information est envoyé sur l'espace Github, qui est un espace publique, donc le Tag Discord est préférable. Sinon, contactez moi (MooMan) directement. Si vous avez l'impression que le bug concerne le module FR, contactez LeRatierBretonnier (Discord Foundry FR)",
|
"GRIEVANCE.Warning2":": Cette information est envoyé sur l'espace Github, qui est un espace publique, donc le Tag Discord est préférable. Sinon, contactez moi (MooMan) directement. Si vous avez l'impression que le bug concerne le module FR, contactez LeRatierBretonnier (Discord Foundry FR)",
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
||||||
"version": "9.3.5",
|
"version": "9.4.0",
|
||||||
"esmodules": [
|
"esmodules": [
|
||||||
"wh4_fr.js",
|
"wh4_fr.js",
|
||||||
"modules/babele-register.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",
|
"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-3-5.zip",
|
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-9-3-7.zip",
|
||||||
"id": "wh4-fr-translation",
|
"id": "wh4-fr-translation",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "13",
|
"minimum": "13",
|
||||||
|
|||||||
@@ -248,16 +248,16 @@ Hooks.once('init', () => {
|
|||||||
let translw = translItem?.name || undefined
|
let translw = translItem?.name || undefined
|
||||||
if (translw && translw != s1) {
|
if (translw && translw != s1) {
|
||||||
let res2 = re.exec(translw);
|
let res2 = re.exec(translw);
|
||||||
transl = res2[1] + "(" + subword + ")";
|
transl = res2[1].trim() + " (" + subword + ")";
|
||||||
} else {
|
} else {
|
||||||
s1 = res[1].trim() + " ( )";
|
s1 = res[1].trim() + " ( )";
|
||||||
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
|
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
|
||||||
translw = translItem?.name || undefined
|
translw = translItem?.name || undefined
|
||||||
if(translw) {
|
if(translw) {
|
||||||
let res2 = re.exec(translw);
|
let res2 = re.exec(translw);
|
||||||
transl = res2[1] + "(" + subword + ")";
|
transl = res2[1].trim() + " (" + subword + ")";
|
||||||
} else {
|
} else {
|
||||||
transl = res[1] + " (" + subword + ")";
|
transl = res[1].trim() + " (" + subword + ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -366,7 +366,7 @@ Hooks.once('init', () => {
|
|||||||
translItem = game.babele.translate(compData.metadata.id, { name: s1 }, true)
|
translItem = game.babele.translate(compData.metadata.id, { name: s1 }, true)
|
||||||
let translw = translItem?.name || undefined
|
let translw = translItem?.name || undefined
|
||||||
if (translw && translw != s1) {
|
if (translw && translw != s1) {
|
||||||
transl = translw + " (" + subword + ")";
|
transl = translw.trim() + " (" + subword + ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -424,8 +424,10 @@ Hooks.once('init', () => {
|
|||||||
if (trait_fr?.name && trait_fr?.name != name_en) {
|
if (trait_fr?.name && trait_fr?.name != name_en) {
|
||||||
trait_fr.name = trait_fr.name || trait_en.name
|
trait_fr.name = trait_fr.name || trait_en.name
|
||||||
trait_en.name = nbt + trait_fr.name + special;
|
trait_en.name = nbt + trait_fr.name + special;
|
||||||
|
if ( trait_en.system?.description?.value && trait_fr.system?.description?.value) {
|
||||||
trait_en.system.description.value = trait_fr.system.description.value;
|
trait_en.system.description.value = trait_fr.system.description.value;
|
||||||
if (trait_en.system?.specification && isNaN(trait_en.system.specification.value)) { // This is a string, so translate it
|
}
|
||||||
|
if (trait_en?.system?.specification && isNaN(trait_en.system.specification?.value)) { // This is a string, so translate it
|
||||||
//console.log("Translating : ", trait_en.system.specification.value);
|
//console.log("Translating : ", trait_en.system.specification.value);
|
||||||
trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim());
|
trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim());
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
MANIFEST-001259
|
MANIFEST-001287
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:26:43.527176 7f93eaffd6c0 Recovering log #1257
|
2026/01/29-22:56:42.449653 7f78b77fe6c0 Recovering log #1285
|
||||||
2026/01/07-15:26:43.536993 7f93eaffd6c0 Delete type=3 #1255
|
2026/01/29-22:56:42.460601 7f78b77fe6c0 Delete type=3 #1283
|
||||||
2026/01/07-15:26:43.537037 7f93eaffd6c0 Delete type=0 #1257
|
2026/01/29-22:56:42.460653 7f78b77fe6c0 Delete type=0 #1285
|
||||||
2026/01/07-15:53:28.412551 7f93e9ffb6c0 Level-0 table #1262: started
|
2026/01/29-22:57:35.335489 7f78b67fc6c0 Level-0 table #1290: started
|
||||||
2026/01/07-15:53:28.412580 7f93e9ffb6c0 Level-0 table #1262: 0 bytes OK
|
2026/01/29-22:57:35.335514 7f78b67fc6c0 Level-0 table #1290: 0 bytes OK
|
||||||
2026/01/07-15:53:28.419118 7f93e9ffb6c0 Delete type=0 #1260
|
2026/01/29-22:57:35.341828 7f78b67fc6c0 Delete type=0 #1288
|
||||||
2026/01/07-15:53:28.432727 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
2026/01/29-22:57:35.348187 7f78b67fc6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:09:19.276373 7f93eaffd6c0 Recovering log #1253
|
2026/01/29-20:23:41.937265 7fac3cbfe6c0 Recovering log #1281
|
||||||
2026/01/07-15:09:19.291800 7f93eaffd6c0 Delete type=3 #1251
|
2026/01/29-20:23:41.947854 7fac3cbfe6c0 Delete type=3 #1279
|
||||||
2026/01/07-15:09:19.291847 7f93eaffd6c0 Delete type=0 #1253
|
2026/01/29-20:23:41.947908 7fac3cbfe6c0 Delete type=0 #1281
|
||||||
2026/01/07-15:13:49.642315 7f93e9ffb6c0 Level-0 table #1258: started
|
2026/01/29-20:30:28.237866 7fa9a6fef6c0 Level-0 table #1286: started
|
||||||
2026/01/07-15:13:49.642358 7f93e9ffb6c0 Level-0 table #1258: 0 bytes OK
|
2026/01/29-20:30:28.237897 7fa9a6fef6c0 Level-0 table #1286: 0 bytes OK
|
||||||
2026/01/07-15:13:49.649460 7f93e9ffb6c0 Delete type=0 #1256
|
2026/01/29-20:30:28.274449 7fa9a6fef6c0 Delete type=0 #1284
|
||||||
2026/01/07-15:13:49.662442 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
2026/01/29-20:30:28.305057 7fa9a6fef6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-001261
|
MANIFEST-001289
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:26:43.539401 7f93ebfff6c0 Recovering log #1259
|
2026/01/29-22:56:42.465768 7f78b7fff6c0 Recovering log #1287
|
||||||
2026/01/07-15:26:43.549699 7f93ebfff6c0 Delete type=3 #1257
|
2026/01/29-22:56:42.475309 7f78b7fff6c0 Delete type=3 #1285
|
||||||
2026/01/07-15:26:43.549758 7f93ebfff6c0 Delete type=0 #1259
|
2026/01/29-22:56:42.475364 7f78b7fff6c0 Delete type=0 #1287
|
||||||
2026/01/07-15:53:28.419273 7f93e9ffb6c0 Level-0 table #1264: started
|
2026/01/29-22:57:35.362417 7f78b67fc6c0 Level-0 table #1292: started
|
||||||
2026/01/07-15:53:28.419304 7f93e9ffb6c0 Level-0 table #1264: 0 bytes OK
|
2026/01/29-22:57:35.362439 7f78b67fc6c0 Level-0 table #1292: 0 bytes OK
|
||||||
2026/01/07-15:53:28.426268 7f93e9ffb6c0 Delete type=0 #1262
|
2026/01/29-22:57:35.369784 7f78b67fc6c0 Delete type=0 #1290
|
||||||
2026/01/07-15:53:28.440100 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
2026/01/29-22:57:35.376148 7f78b67fc6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:09:19.293766 7f93ea7fc6c0 Recovering log #1255
|
2026/01/29-20:23:41.951251 7fac277fe6c0 Recovering log #1283
|
||||||
2026/01/07-15:09:19.310998 7f93ea7fc6c0 Delete type=3 #1253
|
2026/01/29-20:23:41.961856 7fac277fe6c0 Delete type=3 #1281
|
||||||
2026/01/07-15:09:19.311072 7f93ea7fc6c0 Delete type=0 #1255
|
2026/01/29-20:23:41.961911 7fac277fe6c0 Delete type=0 #1283
|
||||||
2026/01/07-15:13:49.675722 7f93e9ffb6c0 Level-0 table #1260: started
|
2026/01/29-20:30:28.274586 7fa9a6fef6c0 Level-0 table #1288: started
|
||||||
2026/01/07-15:13:49.675750 7f93e9ffb6c0 Level-0 table #1260: 0 bytes OK
|
2026/01/29-20:30:28.274614 7fa9a6fef6c0 Level-0 table #1288: 0 bytes OK
|
||||||
2026/01/07-15:13:49.682225 7f93e9ffb6c0 Delete type=0 #1258
|
2026/01/29-20:30:28.304924 7fa9a6fef6c0 Delete type=0 #1286
|
||||||
2026/01/07-15:13:49.688884 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
2026/01/29-20:30:28.305066 7fa9a6fef6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-001259
|
MANIFEST-001287
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:26:43.564495 7f93eb7fe6c0 Recovering log #1257
|
2026/01/29-22:56:42.493062 7f78b6ffd6c0 Recovering log #1285
|
||||||
2026/01/07-15:26:43.574446 7f93eb7fe6c0 Delete type=3 #1255
|
2026/01/29-22:56:42.503149 7f78b6ffd6c0 Delete type=3 #1283
|
||||||
2026/01/07-15:26:43.574512 7f93eb7fe6c0 Delete type=0 #1257
|
2026/01/29-22:56:42.503203 7f78b6ffd6c0 Delete type=0 #1285
|
||||||
2026/01/07-15:53:28.432738 7f93e9ffb6c0 Level-0 table #1262: started
|
2026/01/29-22:57:35.355694 7f78b67fc6c0 Level-0 table #1290: started
|
||||||
2026/01/07-15:53:28.432770 7f93e9ffb6c0 Level-0 table #1262: 0 bytes OK
|
2026/01/29-22:57:35.355726 7f78b67fc6c0 Level-0 table #1290: 0 bytes OK
|
||||||
2026/01/07-15:53:28.439930 7f93e9ffb6c0 Delete type=0 #1260
|
2026/01/29-22:57:35.362323 7f78b67fc6c0 Delete type=0 #1288
|
||||||
2026/01/07-15:53:28.446625 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
2026/01/29-22:57:35.376141 7f78b67fc6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:09:19.333002 7f93ea7fc6c0 Recovering log #1253
|
2026/01/29-20:23:41.979254 7fac277fe6c0 Recovering log #1281
|
||||||
2026/01/07-15:09:19.348597 7f93ea7fc6c0 Delete type=3 #1251
|
2026/01/29-20:23:41.990432 7fac277fe6c0 Delete type=3 #1279
|
||||||
2026/01/07-15:09:19.348662 7f93ea7fc6c0 Delete type=0 #1253
|
2026/01/29-20:23:41.990499 7fac277fe6c0 Delete type=0 #1281
|
||||||
2026/01/07-15:13:49.682345 7f93e9ffb6c0 Level-0 table #1258: started
|
2026/01/29-20:30:28.407331 7fa9a6fef6c0 Level-0 table #1286: started
|
||||||
2026/01/07-15:13:49.682371 7f93e9ffb6c0 Level-0 table #1258: 0 bytes OK
|
2026/01/29-20:30:28.407362 7fa9a6fef6c0 Level-0 table #1286: 0 bytes OK
|
||||||
2026/01/07-15:13:49.688691 7f93e9ffb6c0 Delete type=0 #1256
|
2026/01/29-20:30:28.441323 7fa9a6fef6c0 Delete type=0 #1284
|
||||||
2026/01/07-15:13:49.688891 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
2026/01/29-20:30:28.642713 7fa9a6fef6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-001259
|
MANIFEST-001287
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:26:43.514726 7f93ea7fc6c0 Recovering log #1257
|
2026/01/29-22:56:42.435103 7f78cc9ff6c0 Recovering log #1285
|
||||||
2026/01/07-15:26:43.524436 7f93ea7fc6c0 Delete type=3 #1255
|
2026/01/29-22:56:42.445358 7f78cc9ff6c0 Delete type=3 #1283
|
||||||
2026/01/07-15:26:43.524498 7f93ea7fc6c0 Delete type=0 #1257
|
2026/01/29-22:56:42.445414 7f78cc9ff6c0 Delete type=0 #1285
|
||||||
2026/01/07-15:53:28.406072 7f93e9ffb6c0 Level-0 table #1262: started
|
2026/01/29-22:57:35.328574 7f78b67fc6c0 Level-0 table #1290: started
|
||||||
2026/01/07-15:53:28.406116 7f93e9ffb6c0 Level-0 table #1262: 0 bytes OK
|
2026/01/29-22:57:35.328607 7f78b67fc6c0 Level-0 table #1290: 0 bytes OK
|
||||||
2026/01/07-15:53:28.412401 7f93e9ffb6c0 Delete type=0 #1260
|
2026/01/29-22:57:35.335392 7f78b67fc6c0 Delete type=0 #1288
|
||||||
2026/01/07-15:53:28.419261 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
2026/01/29-22:57:35.348176 7f78b67fc6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:09:19.258501 7f93eb7fe6c0 Recovering log #1253
|
2026/01/29-20:23:41.924353 7fac3d3ff6c0 Recovering log #1281
|
||||||
2026/01/07-15:09:19.274117 7f93eb7fe6c0 Delete type=3 #1251
|
2026/01/29-20:23:41.933825 7fac3d3ff6c0 Delete type=3 #1279
|
||||||
2026/01/07-15:09:19.274190 7f93eb7fe6c0 Delete type=0 #1253
|
2026/01/29-20:23:41.933878 7fac3d3ff6c0 Delete type=0 #1281
|
||||||
2026/01/07-15:13:49.656004 7f93e9ffb6c0 Level-0 table #1258: started
|
2026/01/29-20:30:28.174496 7fa9a6fef6c0 Level-0 table #1286: started
|
||||||
2026/01/07-15:13:49.656029 7f93e9ffb6c0 Level-0 table #1258: 0 bytes OK
|
2026/01/29-20:30:28.174527 7fa9a6fef6c0 Level-0 table #1286: 0 bytes OK
|
||||||
2026/01/07-15:13:49.662317 7f93e9ffb6c0 Delete type=0 #1256
|
2026/01/29-20:30:28.203862 7fa9a6fef6c0 Delete type=0 #1284
|
||||||
2026/01/07-15:13:49.662464 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
2026/01/29-20:30:28.305039 7fa9a6fef6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-001259
|
MANIFEST-001287
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:26:43.501310 7f93eb7fe6c0 Recovering log #1257
|
2026/01/29-22:56:42.421350 7f78b6ffd6c0 Recovering log #1285
|
||||||
2026/01/07-15:26:43.512173 7f93eb7fe6c0 Delete type=3 #1255
|
2026/01/29-22:56:42.431020 7f78b6ffd6c0 Delete type=3 #1283
|
||||||
2026/01/07-15:26:43.512224 7f93eb7fe6c0 Delete type=0 #1257
|
2026/01/29-22:56:42.431080 7f78b6ffd6c0 Delete type=0 #1285
|
||||||
2026/01/07-15:53:28.398067 7f93e9ffb6c0 Level-0 table #1262: started
|
2026/01/29-22:57:35.341932 7f78b67fc6c0 Level-0 table #1290: started
|
||||||
2026/01/07-15:53:28.398117 7f93e9ffb6c0 Level-0 table #1262: 0 bytes OK
|
2026/01/29-22:57:35.341953 7f78b67fc6c0 Level-0 table #1290: 0 bytes OK
|
||||||
2026/01/07-15:53:28.405830 7f93e9ffb6c0 Delete type=0 #1260
|
2026/01/29-22:57:35.348055 7f78b67fc6c0 Delete type=0 #1288
|
||||||
2026/01/07-15:53:28.412533 7f93e9ffb6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
2026/01/29-22:57:35.348196 7f78b67fc6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:09:19.238733 7f93ebfff6c0 Recovering log #1253
|
2026/01/29-20:23:41.909492 7fac277fe6c0 Recovering log #1281
|
||||||
2026/01/07-15:09:19.256250 7f93ebfff6c0 Delete type=3 #1251
|
2026/01/29-20:23:41.920402 7fac277fe6c0 Delete type=3 #1279
|
||||||
2026/01/07-15:09:19.256331 7f93ebfff6c0 Delete type=0 #1253
|
2026/01/29-20:23:41.920469 7fac277fe6c0 Delete type=0 #1281
|
||||||
2026/01/07-15:13:49.649560 7f93e9ffb6c0 Level-0 table #1258: started
|
2026/01/29-20:30:28.203984 7fa9a6fef6c0 Level-0 table #1286: started
|
||||||
2026/01/07-15:13:49.649585 7f93e9ffb6c0 Level-0 table #1258: 0 bytes OK
|
2026/01/29-20:30:28.204007 7fa9a6fef6c0 Level-0 table #1286: 0 bytes OK
|
||||||
2026/01/07-15:13:49.655885 7f93e9ffb6c0 Delete type=0 #1256
|
2026/01/29-20:30:28.237718 7fa9a6fef6c0 Delete type=0 #1284
|
||||||
2026/01/07-15:13:49.662454 7f93e9ffb6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
2026/01/29-20:30:28.305049 7fa9a6fef6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000902
|
MANIFEST-000930
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:26:43.552530 7f93eaffd6c0 Recovering log #900
|
2026/01/29-22:56:42.478978 7f78b77fe6c0 Recovering log #928
|
||||||
2026/01/07-15:26:43.562158 7f93eaffd6c0 Delete type=3 #898
|
2026/01/29-22:56:42.489559 7f78b77fe6c0 Delete type=3 #926
|
||||||
2026/01/07-15:26:43.562231 7f93eaffd6c0 Delete type=0 #900
|
2026/01/29-22:56:42.489615 7f78b77fe6c0 Delete type=0 #928
|
||||||
2026/01/07-15:53:28.426399 7f93e9ffb6c0 Level-0 table #905: started
|
2026/01/29-22:57:35.369875 7f78b67fc6c0 Level-0 table #933: started
|
||||||
2026/01/07-15:53:28.426431 7f93e9ffb6c0 Level-0 table #905: 0 bytes OK
|
2026/01/29-22:57:35.369900 7f78b67fc6c0 Level-0 table #933: 0 bytes OK
|
||||||
2026/01/07-15:53:28.432585 7f93e9ffb6c0 Delete type=0 #903
|
2026/01/29-22:57:35.376019 7f78b67fc6c0 Delete type=0 #931
|
||||||
2026/01/07-15:53:28.440113 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
2026/01/29-22:57:35.376158 7f78b67fc6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/01/07-15:09:19.313936 7f93eaffd6c0 Recovering log #896
|
2026/01/29-20:23:41.966258 7fac3cbfe6c0 Recovering log #924
|
||||||
2026/01/07-15:09:19.330494 7f93eaffd6c0 Delete type=3 #894
|
2026/01/29-20:23:41.975859 7fac3cbfe6c0 Delete type=3 #922
|
||||||
2026/01/07-15:09:19.330571 7f93eaffd6c0 Delete type=0 #896
|
2026/01/29-20:23:41.975913 7fac3cbfe6c0 Delete type=0 #924
|
||||||
2026/01/07-15:13:49.669421 7f93e9ffb6c0 Level-0 table #901: started
|
2026/01/29-20:30:28.375267 7fa9a6fef6c0 Level-0 table #929: started
|
||||||
2026/01/07-15:13:49.669459 7f93e9ffb6c0 Level-0 table #901: 0 bytes OK
|
2026/01/29-20:30:28.375310 7fa9a6fef6c0 Level-0 table #929: 0 bytes OK
|
||||||
2026/01/07-15:13:49.675608 7f93e9ffb6c0 Delete type=0 #899
|
2026/01/29-20:30:28.407196 7fa9a6fef6c0 Delete type=0 #927
|
||||||
2026/01/07-15:13:49.688874 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
2026/01/29-20:30:28.642703 7fa9a6fef6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
return !args.skill?.name.includes(game.i18n.localize("NAME.Row")) && !args.skill?.name.includes(game.i18n.localize("NAME.Sail"));
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
if (!this.item.system.properties.qualities.fast)
|
||||||
|
this.item.system.qualities.value.push({name : 'fast'});
|
||||||
|
if (!this.item.system.properties.qualities.magical)
|
||||||
|
this.item.system.qualities.value.push({name : 'magical'});
|
||||||
@@ -16,6 +16,6 @@ if (location)
|
|||||||
|
|
||||||
let roll = await new Roll("max(1, 1d10 - @system.characteristics.t.bonus)", this.actor).roll()
|
let roll = await new Roll("max(1, 1d10 - @system.characteristics.t.bonus)", this.actor).roll()
|
||||||
|
|
||||||
roll.toMessage(this.script.getChatData({flavor : `${this.effet.name} (Durée)`}));
|
roll.toMessage(this.script.getChatData({flavor : `${this.effect.name} (Durée)`}));
|
||||||
|
|
||||||
this.effet.updateSource({"duration.rounds" : roll.total})
|
this.effect.updateSource({"duration.rounds" : roll.total})
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
if (args.skill?.name != game.i18n.localize("NAME.Gossip"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
args.data.reversal = {allowed : true, if: "success"}; // Kind of a kludge here, the talent Tests has a specific condition, but the description simply says "any gossip test can be reversed" so check it here instead of submission
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
this.actor.setupSkill(game.i18n.localize("NAME.Cool"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`}).then(async test => {
|
||||||
|
await test.roll()
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
this.actor.addCondition("stunned")
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
const balanced = game.i18n.localize("WFRP4E.YenluiBalanced");
|
||||||
|
const light = game.i18n.localize("WFRP4E.YenluiLight");
|
||||||
|
const dark = game.i18n.localize("WFRP4E.YenluiDark");
|
||||||
|
|
||||||
|
let newName, newDescription;
|
||||||
|
|
||||||
|
if (this.effect.name === game.i18n.localize("WFRP4E.YenluiDark")) {
|
||||||
|
newName = game.i18n.localize("WFRP4E.YenluiBalanced");
|
||||||
|
newDescription = game.i18n.localize("WFRP4E.YenluiBalancedDesc");
|
||||||
|
} else if (this.effect.name === game.i18n.localize("WFRP4E.YenluiBalanced")) {
|
||||||
|
newName = game.i18n.localize("WFRP4E.YenluiLight");
|
||||||
|
newDescription = game.i18n.localize("WFRP4E.YenluiLightDesc");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newName) {
|
||||||
|
await this.effect.update({name: newName});
|
||||||
|
await this.item.update({name: newName, "system.description.value": newDescription});
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
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 Tests = this.item.system.tests.value
|
||||||
let name = this.item.name
|
let name = this.item.name
|
||||||
|
|
||||||
// If name already specifies, make sure Tests value reflects that
|
// If name already specifies, make sure Tests value reflects that
|
||||||
@@ -26,6 +26,6 @@ if (!this.item.name.includes("(") || this.item.system.Tests.value.includes("Terr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.effet.updateSource({name})
|
this.effect.updateSource({name})
|
||||||
this.item.updateSource({name, "system.tests.value" : tests})
|
this.item.updateSource({name, "system.tests.value" : tests})
|
||||||
}
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return !args.skill?.name.includes(game.i18n.localize("NAME.Language"));
|
||||||
@@ -83,7 +83,7 @@ for (let trapping of trappings)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateObj.name = updateObj.name += " " + this.effet.name
|
updateObj.name = updateObj.name += " " + this.effect.name
|
||||||
|
|
||||||
await this.actor.update(updateObj)
|
await this.actor.update(updateObj)
|
||||||
this.actor.createEmbeddedDocuments("Item", items);
|
this.actor.createEmbeddedDocuments("Item", items);
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name.includes(game.i18n.localize("NAME.Channelling")) || args.skill?.name == `${game.i18n.localize("NAME.Language")} (${game.i18n.localize("SPEC.Magick")})`
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
const qualities = foundry.utils.deepClone(args.item.system.qualities.value);
|
||||||
|
qualities.push({name:"fine", value: 1});
|
||||||
|
args.item?.update({"system.qualities.value": qualities});
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
let test = await args.actor.setupCharacteristic("wp", {skipTargets: true, appendTitle : " - " + this.effet.name, context : {failure: "Gain de 1 état Sonné"}})
|
let test = await args.actor.setupCharacteristic("wp", {skipTargets: true, appendTitle : " - " + this.effect.name, context : {failure: "Gain de 1 état Sonné"}})
|
||||||
await Test.roll();
|
await Test.roll();
|
||||||
if (Test.Échoué)
|
if (Test.Échoué)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, appendTitle : " - " + this.effect.name})
|
||||||
|
await test.roll();
|
||||||
|
if (!test.succeeded)
|
||||||
|
{
|
||||||
|
let item = await fromUuid("Compendium.wfrp4e-core.items.ZhMADOqoo0y8Q9bx")
|
||||||
|
let data = item.toObject();
|
||||||
|
if (this.item.system.location.key == "rLeg")
|
||||||
|
{
|
||||||
|
data.system.location.value = "Orteil Droit"
|
||||||
|
data.system.location.key = "rToe";
|
||||||
|
}
|
||||||
|
else if (this.item.system.location.key == "lLeg")
|
||||||
|
{
|
||||||
|
data.system.location.value = "Orteil Gauche"
|
||||||
|
data.system.location.key = "lToe";
|
||||||
|
}
|
||||||
|
this.actor.createEmbeddedDocuments("Item", [data])
|
||||||
|
}
|
||||||
|
this.effect.delete();
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
this.actor.setupSkill(game.i18n.localize("NAME.Cool"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`}).then(async test => {
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
this.actor.addCondition("stunned", 3)
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return !args.skill?.name?.includes(game.i18n.localize("NAME.Sail"))
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.type != "channelling" && !args.skill?.name.includes(game.i18n.localize("NAME.Channelling"))
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
if (args.item.range && args.item.range.bands)
|
||||||
|
{
|
||||||
|
args.item.range.bands[game.i18n.localize("Long Range")].modifier = 0
|
||||||
|
args.item.range.bands[game.i18n.localize("Extreme")].modifier /= 2
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
if (args.test.result.castOutcome == "success" && args.test.spell.system.lore.value.includes("high"))
|
||||||
|
{
|
||||||
|
this.effect.update({name: this.effect.setSpecifier(parseInt(this.effect.specifier - 1))})
|
||||||
|
|
||||||
|
this.script.message("La valeur de Protection est maintenant de " + (this.effect.specifier - 1), {flavor: this.effect.sourceItem.name})
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name == game.i18n.localize("NAME.Bribery") || args.skill?.name.includes(game.i18n.localize("NAME.Stealth"));
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.item?.name != game.i18n.localize("NAME.Navigation")
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
if (args.totalWoundLoss > 0)
|
||||||
|
{
|
||||||
|
let test = await args.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`})
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed && parseInt(args.sourceTest?.result.SL) > 0)
|
||||||
|
{
|
||||||
|
args.actor.addCondition("stunned", parseInt(args.sourceTest?.attackerTest.result.SL))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
let skill = `${game.i18n.localize("NAME.Trade")} (${this.item.parenthesesText})`
|
||||||
|
let currentCareer = this.actor.system.currentCareer;
|
||||||
|
let existingSkill = this.actor.itemTypes.skill.find(i => i.name == skill);
|
||||||
|
|
||||||
|
if (!currentCareer) return
|
||||||
|
|
||||||
|
|
||||||
|
let inCurrentCareer = currentCareer.system.skills.concat(currentCareer.system.addedSkills).includes(skill);
|
||||||
|
let craftsmanAdded = this.actor.getFlag("wfrp4e", "craftsmanAdded") || {};
|
||||||
|
if (existingSkill && inCurrentCareer && !craftsmanAdded[existingSkill.name])
|
||||||
|
{
|
||||||
|
existingSkill.system.advances.costModifier = -5;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
craftsmanAdded[skill] = true;
|
||||||
|
currentCareer.system.addedSkills.push(skill);
|
||||||
|
foundry.utils.setProperty(this.actor, "flags.wfrp4e.craftsmanAdded", craftsmanAdded)
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
let item = await fromUuid("Compendium.wfrp4e-core.items.9h82z72XGo9tfgQS")
|
||||||
|
let data = item.toObject();
|
||||||
|
data.name = data.name += ` (${game.i18n.localize("SPEC.Hearing")})`
|
||||||
|
this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id})
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name.includes(game.i18n.localize("NAME.Lore"));
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
|
||||||
|
if (!["Goblin", "Orc"].includes(this.actor.system.details.species.value)) {
|
||||||
|
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), { appendTitle: ` - ${this.effect.name}` })
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed) {
|
||||||
|
let infection = await fromUuid("Compendium.wfrp4e-core.items.Item.1hQuVFZt9QnnbWzg")
|
||||||
|
this.actor.createEmbeddedDocuments("Item", [infection])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Since wounds change when the effect is deleted, need to wait until after
|
||||||
|
// the max wounds have been recalculated to apply damage
|
||||||
|
warhammer.utility.sleep(1000).then(async () => {
|
||||||
|
let roll = await new Roll("1d10").roll({allowInteractive : false});
|
||||||
|
|
||||||
|
roll.toMessage(this.script.getChatData());
|
||||||
|
this.script.message(await this.actor.applyBasicDamage(roll.total, { damageType: game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL, suppressMsg: true }))
|
||||||
|
|
||||||
|
})
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
let currentCareer = this.actor.system.currentCareer;
|
||||||
|
if (!currentCareer)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let talents = [game.i18n.localize("NAME.AA"),
|
||||||
|
`${game.i18n.localize("NAME.ArcaneMagic")} (${game.i18n.localize("SPEC.Any")})`,
|
||||||
|
game.i18n.localize("NAME.ChaosMagic") + " " + "(Tzeentch)",
|
||||||
|
game.i18n.localize("NAME.FastHands"),
|
||||||
|
game.i18n.localize("NAME.ID"),
|
||||||
|
game.i18n.localize("NAME.MagicalSense"),
|
||||||
|
game.i18n.localize("NAME.PettyMagic"),
|
||||||
|
game.i18n.localize("NAME.SecondSight"),
|
||||||
|
game.i18n.localize("NAME.WarWizard"),
|
||||||
|
game.i18n.localize("NAME.Witch")].filter(t => !currentCareer.system.talents.includes(t))
|
||||||
|
|
||||||
|
currentCareer.system.talents = currentCareer.system.talents.concat(talents)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
const qualities = foundry.utils.deepClone(args.item.system.qualities.value);
|
||||||
|
qualities.push({name:"lightweight"});
|
||||||
|
args.item?.update({"system.qualities.value": qualities});
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
return !args.actor?.has(game.i18n.localize("NAME.Swarm")) ||
|
||||||
|
![game.wfrp4e.config.actorSizeNums.tiny, game.wfrp4e.config.actorSizeNums.ltl]
|
||||||
|
.includes(args.actor?.sizeNum)
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
if (Number(this.actor.system.details.age.value) > 870) {
|
||||||
|
if (["t", "wp", "fel"].includes(args.characteristic))
|
||||||
|
args.fields.slBonus -= 3;
|
||||||
|
if (["ag", "dex", "int"].includes(args.characteristic))
|
||||||
|
args.fields.slBonus -= 2;
|
||||||
|
} else if (Number(this.actor.system.details.age.value) > 350) {
|
||||||
|
if (["t", "wp"].includes(args.characteristic))
|
||||||
|
args.fields.slBonus -= 2;
|
||||||
|
if (["fel"].includes(args.characteristic))
|
||||||
|
args.fields.slBonus -= 1;
|
||||||
|
} else {
|
||||||
|
if (["t", "wp"].includes(args.characteristic))
|
||||||
|
args.fields.slBonus -= 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
this.effect.updateSource({name: this.effect.setSpecifier("9")});
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
let choice = await ItemDialog.create(ItemDialog.objectToArray(game.wfrp4e.config.locations, this.effect.img), 1, "Choose Location");
|
||||||
|
if (choice[0])
|
||||||
|
{
|
||||||
|
this.effect.updateSource({name : `${this.effect.name} (${choice[0].name})`})
|
||||||
|
this.effect.updateSource({"flags.wfrp4e.location" : choice[0].id})
|
||||||
|
}
|
||||||
|
|
||||||
|
let location = choice[0].id;
|
||||||
|
|
||||||
|
if (["lArm", "rArm"].includes(location))
|
||||||
|
{
|
||||||
|
let dropped = this.actor.itemTypes.weapon.filter(i => i.isEquipped & i.system.usesHands.includes(location));
|
||||||
|
|
||||||
|
if (dropped.length)
|
||||||
|
{
|
||||||
|
this.script.notification(`Dropped ${dropped.map(i => i.name).join(", ")}!`)
|
||||||
|
for(let weapon of dropped)
|
||||||
|
{
|
||||||
|
await weapon.system.toggleEquip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location == "body")
|
||||||
|
{
|
||||||
|
await this.actor.addCondition("fatigued");
|
||||||
|
test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {fields : {difficulty : "hard"}, skipTargets: true, appendTitle : ` - ${this.effect.name}`})
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
this.actor.addCondition("prone");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location == "head")
|
||||||
|
{
|
||||||
|
await this.actor.addCondition("stunned");
|
||||||
|
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("unconscious");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
args.abort = true;
|
||||||
|
this.script.notification("Impossible d'attaquer cette cible !");
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name != game.i18n.localize("NAME.CharmAnimal") && !args.skill?.name.includes(game.i18n.localize("NAME.AnimalTraining"));
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return !["NAME.Evaluate", "NAME.Gamble"].map(i => game.i18n.localize(i)).includes(args.skill?.name)
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
if (this.actor.hasCondition("surprised"))
|
||||||
|
{
|
||||||
|
this.actor.setupSkill(game.i18n.localize("NAME.Cool"), {fields : {difficulty : "average"}, skipTargets: true, appendTitle : " - " + this.effect.name}).then(test => test.roll())
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return this.effect.name !== game.i18n.localize("WFRP4E.YenluiLight")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name == game.i18n.localize("NAME.ConsumeAlcohol");
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.item?.system.isRanged;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name != game.i18n.localize("NAME.Research") && !args.skill?.name?.includes(game.i18n.localize("NAME.Language"));
|
||||||
@@ -69,7 +69,7 @@ for (let trapping of trappings)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateObj.name = updateObj.name += " " + this.effet.name
|
updateObj.name = updateObj.name += " " + this.effect.name
|
||||||
|
|
||||||
await this.actor.update(updateObj)
|
await this.actor.update(updateObj)
|
||||||
this.actor.createEmbeddedDocuments("Item", items);
|
this.actor.createEmbeddedDocuments("Item", items);
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
this.actor.addEffectItems("Compendium.wfrp4e-core.items.Item.EO05HX7jql0g605A", this.effect, {"system.specification.value": this.actor.system.characteristics.ag.value});
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name !== game.i18n.localize("NAME.Endurance");
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`, fields: {difficulty : "average"}}).then(async test =>
|
||||||
|
{
|
||||||
|
await test.roll()
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
let char = Math.ceil(CONFIG.Dice.randomUniform() * 2) == 2 ? "s" : "t";
|
||||||
|
this.script.message(`<strong>${this.actor.name}</strong> perd 1 point de ${game.wfrp4e.config.characteristics[char]}`)
|
||||||
|
this.actor.update({[`system.characteristics.${char}.initial`] : this.actor.system.characteristics[char].initial - 1})
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -44,7 +44,7 @@ for (let trait of traits)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
updateObj.name = updateObj.name += " " + this.effet.name
|
updateObj.name = updateObj.name += " " + this.effect.name
|
||||||
|
|
||||||
await this.actor.update(updateObj)
|
await this.actor.update(updateObj)
|
||||||
this.actor.createEmbeddedDocuments("Item", items);
|
this.actor.createEmbeddedDocuments("Item", items);
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name?.includes(game.i18n.localize("NAME.Language")) || args.type == "cast"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`, fields : {difficulty : "average"}, context : {failure: "1 Corruption Point Gained"}})
|
||||||
|
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("Gain de 1 point de Corruption", {whisper : ChatMessage.getWhisperRecipients("GM")})
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
let test = await this.actor.setupCharacteristic("ag", {skipTargets: true, appendTitle : ` - ${this.effet.name}`});
|
let test = await this.actor.setupCharacteristic("ag", {skipTargets: true, appendTitle : ` - ${this.effect.name}`});
|
||||||
await Test.roll();
|
await Test.roll();
|
||||||
if (Test.Échoué)
|
if (Test.Échoué)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
if (args.totalWoundLoss > 0)
|
||||||
|
{
|
||||||
|
let test = await args.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, appendTitle : " - " + this.effect.name})
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
args.totalWoundLoss += 5;
|
||||||
|
args.modifiers.other.push({label : this.effect.name, value : 5})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -106,7 +106,7 @@ if (ride)
|
|||||||
items = items.concat({name : "Chaos Steed", type: "trapping", "system.trappingType.value" : "misc"}, skill)
|
items = items.concat({name : "Chaos Steed", type: "trapping", "system.trappingType.value" : "misc"}, skill)
|
||||||
}
|
}
|
||||||
|
|
||||||
updateObj.name = updateObj.name += " " + this.effet.name
|
updateObj.name = updateObj.name += " " + this.effect.name
|
||||||
|
|
||||||
await this.actor.update(updateObj)
|
await this.actor.update(updateObj)
|
||||||
this.actor.createEmbeddedDocuments("Item", items);
|
this.actor.createEmbeddedDocuments("Item", items);
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name != game.i18n.localize("NAME.Research");
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.skill?.name.includes(game.i18n.localize("NAME.Channelling")) || args.type == "channelling" || args.skill?.name == game.i18n.localize("NAME.Charm") || args.skill?.name.includes(`${game.i18n.localize("NAME.Language")} (${game.i18n.localize("SPEC.Magick")})`) || args.type == "cast"
|
||||||
@@ -69,7 +69,7 @@ for (let trapping of trappings)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateObj.name = updateObj.name += " " + this.effet.name
|
updateObj.name = updateObj.name += " " + this.effect.name
|
||||||
|
|
||||||
await this.actor.update(updateObj)
|
await this.actor.update(updateObj)
|
||||||
this.actor.createEmbeddedDocuments("Item", items);
|
this.actor.createEmbeddedDocuments("Item", items);
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
await this.effect.update({duration:{rounds: this.actor.system.characteristics.ws.bonus}});
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {fields: {difficulty : "average"}, appendTitle : " - Wounded"})
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
fromUuid("Compendium.wfrp4e-core.items.kKccDTGzWzSXCBOb").then(disease => {
|
||||||
|
this.actor.createEmbeddedDocuments("Item", [disease.toObject()])
|
||||||
|
this.script.scriptNotification("Gain de " + disease.name)
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -69,7 +69,7 @@ for (let trapping of trappings)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateObj.name = updateObj.name += " " + this.effet.name
|
updateObj.name = updateObj.name += " " + this.effect.name
|
||||||
|
|
||||||
await this.actor.update(updateObj)
|
await this.actor.update(updateObj)
|
||||||
this.actor.createEmbeddedDocuments("Item", items);
|
this.actor.createEmbeddedDocuments("Item", items);
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return !args.item?.name.includes(game.i18n.localize("NAME.Stealth"))
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
const traits = this.actor.itemTypes.trait.filter(t => ["bestial", "skittish"].includes(s.name.toLowerCase()));
|
||||||
|
trait.system.disabled = true;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return !([game.i18n.localize("NAME.AnimalCare"), game.i18n.localize("NAME.CharmAnimal")].includes(args.item?.name) || args.item?.name.includes(game.i18n.localize("NAME.Ride")) || args.item?.name.includes(game.i18n.localize("NAME.AnimalTraining")));
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
let bite = await fromUuid("Compendium.wfrp4e-core.items.pLW9SVX0TVTYPiPv")
|
||||||
|
let sense = await fromUuid("Compendium.wfrp4e-core.items.9h82z72XGo9tfgQS")
|
||||||
|
let biteData = bite.toObject();
|
||||||
|
let senseData = sense.toObject();
|
||||||
|
|
||||||
|
biteData.system.specification.value = 6 - this.actor.characteristics.s.bonus;
|
||||||
|
senseData.name = senseData.name += game.i18n.localize("SPEC.Smell")
|
||||||
|
this.actor.createEmbeddedDocuments("Item", [biteData, senseData], {fromEffect : this.effect.id})
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`})
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
this.actor.addCondition("prone");
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
let roll = Math.ceil(CONFIG.Dice.randomUniform() * 10)
|
||||||
|
if (args.test.isFumble && roll == 1 && !args.test.result.misfire)
|
||||||
|
{
|
||||||
|
args.test.result.misfire = game.i18n.localize("Misfire") + " (Rolled 1)"
|
||||||
|
args.test.result.misfireDamage = eval(parseInt(args.test.result.roll.toString().split('').pop()) + args.test.item.Damage)
|
||||||
|
}
|
||||||
|
else if (args.test.isFumble && roll != 1)
|
||||||
|
{
|
||||||
|
args.test.result.other.push("Misfire Roll: " + roll)
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
const deduct = this.effect.setFlag("wfrp4e", "failed");
|
||||||
|
|
||||||
|
if (!deduct) return;
|
||||||
|
|
||||||
|
this.actor.system.characteristics.ws.modifier -= 20;
|
||||||
|
this.actor.system.characteristics.bs.modifier -= 20;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
let test = await this.actor.setupCharacteristic("wp", {skipTargets: true, appendTitle : " - " + this.effet.name, context : {failure: "GAin d'1 état Sonné"}})
|
let test = await this.actor.setupCharacteristic("wp", {skipTargets: true, appendTitle : " - " + this.effect.name, context : {failure: "GAin d'1 état Sonné"}})
|
||||||
await Test.roll();
|
await Test.roll();
|
||||||
if (Test.Échoué)
|
if (Test.Échoué)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, appendTitle : ` - ${this.effect.name}`, fields: {difficulty: "average"}});
|
||||||
|
await test.roll();
|
||||||
|
if (test.failed)
|
||||||
|
{
|
||||||
|
this.actor.addCondition("prone")
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ if (actor.itemTypes.skill.find(s => s.name === "Savoir (Océans)")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let Test = await actor.setupSkill('Calme', {
|
let Test = await actor.setupSkill('Calme', {
|
||||||
appendTitle: ` – ${this.effet.name}`,
|
appendTitle: ` – ${this.effect.name}`,
|
||||||
skipTargets: true,
|
skipTargets: true,
|
||||||
fields: {difficulty: 'easy'},
|
fields: {difficulty: 'easy'},
|
||||||
characteristic: 'wp',
|
characteristic: 'wp',
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
return args.type == "channelling" || args.skill?.name.includes(game.i18n.localize("NAME.Channelling"))
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user