Compare commits

...

12 Commits

Author SHA1 Message Date
c8119601d8 Enhance robustness 2026-01-05 17:44:31 +01:00
d1da169fa3 Enhance robustness 2026-01-05 17:24:01 +01:00
07928acb48 Ajout Aux Armes 2025-11-12 22:26:13 +01:00
9860535f5f Ajotu Aux Armes 2025-11-12 22:24:58 +01:00
fc560ddee7 Align with v9.3.0 2025-10-31 18:05:03 +00:00
47454b30f1 Align with v9.3.0 2025-10-31 18:04:13 +00:00
4ee45273b3 COrrection sur Natation - again 2025-10-13 20:59:50 +02:00
94ca8cb6ea Align to v9.2.X 2025-09-23 16:44:41 +02:00
6af8d03d22 Fix natation/swim 2025-07-25 15:03:04 +02:00
7afcadfb6f Fix natation/swim 2025-07-25 10:51:41 +02:00
5801a5270f Fix translated talents ... 2025-07-20 10:17:55 +02:00
f8908617a1 Fix translated talents ... 2025-07-20 10:17:37 +02:00
54 changed files with 546 additions and 496 deletions

View File

@@ -2841,6 +2841,12 @@
"name": "Combattant au contact", "name": "Combattant au contact",
"tests": "Corps à corps quand vous combattez au contact ou que vous allez au contact" "tests": "Corps à corps quand vous combattez au contact ou que vous allez au contact"
}, },
{
"description": "<p>Vous êtes entraîné à vous placer très près dun adversaire. Vous ne subissez aucune pénalité pour vous battre contre un adversaire avec une arme plus longue que la vôtre. De plus, si vous utilisez les règles optionnelles de Combat au contact (voir page 297), gagnez un bonus de +10 pour toucher votre adversaire.</p>",
"id": "Infighter",
"name": "Combattant au contact",
"tests": "Corps à corps quand vous combattez au contact ou que vous allez au contact"
},
{ {
"description": "<p>Vos appels exaltants peuvent renverser le cours d'une bataille. Référez-vous au tableau suivant pour voir combien de personnes vous pouvez à présent influencer avec votre Compétence @Compendium[wfrp4e-core.items.oMaJZ5cvCJeOUq9H] lors d'une guerre.</p>\n<p>&nbsp;</p>\n<div>\n<table title=\"\" border=\"1\" summary=\"\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<p>Talent pris</p>\n</td>\n<td>\n<p>Nombre de soldats influencés</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>1</p>\n</td>\n<td>\n<p>Normal × 5</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>2</p>\n</td>\n<td>\n<p>Normal × 10</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>3</p>\n</td>\n<td>\n<p>&nbsp;Normal × 20</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>4</p>\n</td>\n<td>\n<p>&nbsp;Normal × 50</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>5</p>\n</td>\n<td>\n<p>&nbsp;Normal × 100</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>6</p>\n</td>\n<td>\n<p>&nbsp;Normal × 200</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>7</p>\n</td>\n<td>\n<p>&nbsp;Normal × 500</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>8</p>\n</td>\n<td>\n<p>&nbsp;Normal × 1000</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>9</p>\n</td>\n<td>\n<p>&nbsp;Tous ceux qui peuvent entendre votre voix inspirante</p>\n</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Exemple</strong> : <em>Le monastère de labbesse Brigitte van der Hoogenband est pris dassaut par les peaux-vertes, et les choses vont mal. De fait, elle décide de renforcer lesprit de ses soldats avec un Test de Commandement, leur octroyant +10 à tous les Tests de Psychologie. Elle obtient 3 DR à son Test de Commandement. Étant donné quelle possède un Bonus de Sociabilité de 6, et quelle peut influencer un nombre de soldats, égal à son Bonus de Sociabilité + DR en utilisant Commandement, elle renforce 9 soldats. Cependant, comme elle possède Exaltant 3, ce nombre est multiplié par 20, ce qui signifie que 180 de ses soldats sont inspirés par ses cris dencouragement « MAINTENEZ LES RANGS ! »</em>", "description": "<p>Vos appels exaltants peuvent renverser le cours d'une bataille. Référez-vous au tableau suivant pour voir combien de personnes vous pouvez à présent influencer avec votre Compétence @Compendium[wfrp4e-core.items.oMaJZ5cvCJeOUq9H] lors d'une guerre.</p>\n<p>&nbsp;</p>\n<div>\n<table title=\"\" border=\"1\" summary=\"\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<p>Talent pris</p>\n</td>\n<td>\n<p>Nombre de soldats influencés</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>1</p>\n</td>\n<td>\n<p>Normal × 5</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>2</p>\n</td>\n<td>\n<p>Normal × 10</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>3</p>\n</td>\n<td>\n<p>&nbsp;Normal × 20</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>4</p>\n</td>\n<td>\n<p>&nbsp;Normal × 50</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>5</p>\n</td>\n<td>\n<p>&nbsp;Normal × 100</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>6</p>\n</td>\n<td>\n<p>&nbsp;Normal × 200</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>7</p>\n</td>\n<td>\n<p>&nbsp;Normal × 500</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>8</p>\n</td>\n<td>\n<p>&nbsp;Normal × 1000</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>9</p>\n</td>\n<td>\n<p>&nbsp;Tous ceux qui peuvent entendre votre voix inspirante</p>\n</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Exemple</strong> : <em>Le monastère de labbesse Brigitte van der Hoogenband est pris dassaut par les peaux-vertes, et les choses vont mal. De fait, elle décide de renforcer lesprit de ses soldats avec un Test de Commandement, leur octroyant +10 à tous les Tests de Psychologie. Elle obtient 3 DR à son Test de Commandement. Étant donné quelle possède un Bonus de Sociabilité de 6, et quelle peut influencer un nombre de soldats, égal à son Bonus de Sociabilité + DR en utilisant Commandement, elle renforce 9 soldats. Cependant, comme elle possède Exaltant 3, ce nombre est multiplié par 20, ce qui signifie que 180 de ses soldats sont inspirés par ses cris dencouragement « MAINTENEZ LES RANGS ! »</em>",
"id": "WCXnFSV4WOSmzzc4", "id": "WCXnFSV4WOSmzzc4",

File diff suppressed because it is too large Load Diff

15
fr.json
View File

@@ -314,6 +314,10 @@
"SHEET.NPCSheetNoTheme":"Fiche de PNJ (sans thème)", "SHEET.NPCSheetNoTheme":"Fiche de PNJ (sans thème)",
"SHEET.VehicleSheet":"Fiche de véhicule", "SHEET.VehicleSheet":"Fiche de véhicule",
"SHEET.VehicleSheetNoTheme":"Fiche de véhicule (sans thème)", "SHEET.VehicleSheetNoTheme":"Fiche de véhicule (sans thème)",
"SHEET.Append":"Ajouter après",
"SHEET.Prepend":"Ajouter avant",
"SHEET.SkillName":"Nom de la compétence",
"SHEET.TalentName":"Nom du Talent",
"SHEETS.Actor.vehicle":"Fiche de Véhicule", "SHEETS.Actor.vehicle":"Fiche de Véhicule",
"SHEETS.Item.ammunition":"Fiche de Munitions", "SHEETS.Item.ammunition":"Fiche de Munitions",
@@ -429,6 +433,7 @@
"ITEM.Roles":"Roles", "ITEM.Roles":"Roles",
"ITEM.VitalRoles":"Roles vitaux", "ITEM.VitalRoles":"Roles vitaux",
"ITEM.LearningXP":"XP d'Apprentissage", "ITEM.LearningXP":"XP d'Apprentissage",
"ITEM.Custom":"Personnalisé",
"TOKEN.MOVEMENT.Status.immobile":"Immobile", "TOKEN.MOVEMENT.Status.immobile":"Immobile",
"TOKEN.MOVEMENT.Status.restricted":"Restreint", "TOKEN.MOVEMENT.Status.restricted":"Restreint",
@@ -645,6 +650,7 @@
"Hide": "Cacher", "Hide": "Cacher",
"Targets": "Cibles", "Targets": "Cibles",
"Melee": "Corps à corps", "Melee": "Corps à corps",
"Swim":" Natation",
"Cost": "Prix", "Cost": "Prix",
"Length": "Longueur", "Length": "Longueur",
"Cargo": "Cargaison", "Cargo": "Cargaison",
@@ -737,7 +743,6 @@
"Stat Block Parser":"Parser de fiches de PNJ", "Stat Block Parser":"Parser de fiches de PNJ",
"Submit":"Soumettre", "Submit":"Soumettre",
"SuccessLevels":"DR", "SuccessLevels":"DR",
"Swim":"Nager",
"TBRed":"BE", "TBRed":"BE",
"TookDamage":"Encaisse {damage} dommages", "TookDamage":"Encaisse {damage} dommages",
"ToughnessDesc":"Endurance", "ToughnessDesc":"Endurance",
@@ -1020,6 +1025,7 @@
"DIALOG.LinkCareerContent":"Relier {new} avec {old}? Les compétences de {old} seront ajoutées à {new}, tout en préservant toutes les spécialisations effectuées avec la carrière précédente.", "DIALOG.LinkCareerContent":"Relier {new} avec {old}? Les compétences de {old} seront ajoutées à {new}, tout en préservant toutes les spécialisations effectuées avec la carrière précédente.",
"DIALOG.ChoosePassenger":"Choisissez un passager", "DIALOG.ChoosePassenger":"Choisissez un passager",
"DIALOG.PostQuantityContent":"Combien de fois cet item peut être récupéré? Laissez vide pour illimité.", "DIALOG.PostQuantityContent":"Combien de fois cet item peut être récupéré? Laissez vide pour illimité.",
"DIALOG.ChooseArmour":"Choisissez une armure à endommager",
"CHAT.CareerChoose" : "Choisissez votre carrière", "CHAT.CareerChoose" : "Choisissez votre carrière",
"CHAT.DamageError" : "Erreur de calcul des dégâts:", "CHAT.DamageError" : "Erreur de calcul des dégâts:",
@@ -1184,6 +1190,8 @@
"CHAT.Vital":"Vital", "CHAT.Vital":"Vital",
"CHAT.DiseaseRollError":"Une erreur s'est produite lors du jet d'incubation ou de durée de la maladie.", "CHAT.DiseaseRollError":"Une erreur s'est produite lors du jet d'incubation ou de durée de la maladie.",
"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.DamageToArmour":"1 Dommages appliqués à {item} ({type})",
"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",
@@ -2696,6 +2704,10 @@
"major":"Majeur", "major":"Majeur",
"minor":"Mineur", "minor":"Mineur",
"moderate":"Modéré", "moderate":"Modéré",
"DurationPlaceholder":"Texte concernant a durée",
"ErrorArmourDamagePermission":"Vous n'avez pas les droits pour endommager l'armure de cet acteur.",
"IncubationPlaceholder":"Texte concernant l'incubation",
"Required Trappings":"Equipement requis",
"WH":{ "WH":{
"TransferType":{ "TransferType":{
@@ -2716,5 +2728,6 @@
"SHEET.ExperienceLog":"Journal d'Expérince", "SHEET.ExperienceLog":"Journal d'Expérince",
"SHEET.Attacker":"Attaquant", "SHEET.Attacker":"Attaquant",
"SHEET.Randomize":"Aléatoire", "SHEET.Randomize":"Aléatoire",
"SHEET.RequiredTrappingsError":"Impossible de lancer les revenus sans avoir tous les équipements requis dans cette carrière !",
"Sheet.RollIncome":"Revenu" "Sheet.RollIncome":"Revenu"
} }

View File

@@ -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.1.3", "version": "9.3.3",
"esmodules": [ "esmodules": [
"modules/babele-register.js", "modules/babele-register.js",
"modules/addon-register.js", "modules/addon-register.js",
@@ -119,7 +119,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-1-3.zip", "download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-9-3-2.zip",
"id": "wh4-fr-translation", "id": "wh4-fr-translation",
"compatibility": { "compatibility": {
"minimum": "13", "minimum": "13",

View File

@@ -2,51 +2,72 @@
export class WH4FRPatchConfig { export class WH4FRPatchConfig {
/************************************************************************************/ /************************************************************************************/
static translateSkillList( skillList) { static translateSkillList(skillList) {
if (!skillList || skillList.length == 0) {
return skillList;
}
let compendiumName = 'wfrp4e-core.items' let compendiumName = 'wfrp4e-core.items'
let newList = []; let newList = [];
for( let compName of skillList) { for (let compName of skillList) {
if (!compName) {
newList.push(compName);
continue;
}
if (!isNaN(compName)) { // If numeric, keep as is (for skill levels)
newList.push(compName);
continue;
}
// Trim compName
compName = compName.trim();
let special = ""; let special = "";
let newName = compName; let newName = compName;
if ( compName.includes("(") && compName.includes(")") ) { // Then process specific skills name with (xxxx) inside let baseName = compName
let re = /(.*) +\((.*)\)/i; if (compName.includes("(") && compName.includes(")")) { // Then process specific skills name with (xxxx) inside
let res = re.exec( compName ); let re = /(.*) +\((.*)\)/i;
let res = re.exec(compName);
compName = res[1].trim(); // Get the root skill name compName = res[1].trim(); // Get the root skill name
special = " (" + game.i18n.localize( res[2].trim() ) + ")"; // And the special keyword special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
} }
let compNameFR = game.babele.translate( compendiumName, { name: compName }, true ); let compNameFR = game.babele.translate(compendiumName, { name: compName }, true);
if (compNameFR.name != compName) { // Translation OK if (compNameFR.name != compName) { // Translation OK
newName = compNameFR.name + special; newName = compNameFR.name + special;
} }
// DEBUG console.log("Translating skill ", compName, baseName, " to ", newName, special);
if (!newName || newName == "" || newName === undefined || newName === "undefined") { // If no translation, keep the original name
newName = baseName; // If no translation, keep the original name
}
newList.push(newName); newList.push(newName);
} }
return newList; return newList;
} }
/************************************************************************************/ /************************************************************************************/
static translateTalentList( talentList) { static translateTalentList(talentList) {
if (!talentList || talentList.length == 0) {
return talentList;
}
let compendiumName = 'wfrp4e-core.items' let compendiumName = 'wfrp4e-core.items'
let newList = []; let newList = [];
for( let talentLine of talentList) { for (let talentLine of talentList) {
let special = ""; let special = "";
let newName = talentLine; let newName = talentLine;
if ( isNaN(talentLine) ) { if (isNaN(talentLine)) {
let subList = talentLine.split(','); let subList = talentLine.split(',');
let newSubList = []; let newSubList = [];
for (let talentName of subList ) { for (let talentName of subList) {
talentName = talentName.trim(); talentName = talentName.trim();
let newName2 = talentName; let newName2 = talentName;
if ( talentName.includes("(") && talentName.includes(")") ) { // Then process specific skills name with (xxxx) inside if (talentName.includes("(") && talentName.includes(")")) { // Then process specific skills name with (xxxx) inside
let re = /(.*) +\((.*)\)/i; let re = /(.*) +\((.*)\)/i;
let res = re.exec( talentName ); let res = re.exec(talentName);
talentName = res[1].trim(); // Get the root skill name talentName = res[1].trim(); // Get the root skill name
special = " (" + game.i18n.localize( res[2].trim() ) + ")"; // And the special keyword special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
} }
let talentNameFR = game.babele.translate( compendiumName, { name: talentName }, true ); let talentNameFR = game.babele.translate(compendiumName, { name: talentName }, true);
if (talentNameFR.name != talentName) { // Translation OK if (talentNameFR.name != talentName) { // Translation OK
newName2 = talentNameFR.name + special; newName2 = talentNameFR.name + special;
} }
@@ -60,15 +81,18 @@ export class WH4FRPatchConfig {
} }
/************************************************************************************/ /************************************************************************************/
static patch_subspecies( ) { static patch_subspecies() {
for ( let speciesName in game.wfrp4e.config.subspecies) { if (!game.wfrp4e?.config?.subspecies) {
return
}
for (let speciesName in game.wfrp4e.config.subspecies) {
let subspeciesList = game.wfrp4e.config.subspecies[speciesName]; let subspeciesList = game.wfrp4e.config.subspecies[speciesName];
for ( let subspeciesName in subspeciesList) { for (let subspeciesName in subspeciesList) {
let subspecies = subspeciesList[subspeciesName]; let subspecies = subspeciesList[subspeciesName];
if ( subspecies.skills) { if (subspecies.skills) {
subspecies.skills = this.translateSkillList(subspecies.skills); subspecies.skills = this.translateSkillList(subspecies.skills);
} }
if ( subspecies.talents) { if (subspecies.talents) {
subspecies.talents = this.translateTalentList(subspecies.talents); subspecies.talents = this.translateTalentList(subspecies.talents);
} }
} }
@@ -76,20 +100,26 @@ export class WH4FRPatchConfig {
} }
/************************************************************************************/ /************************************************************************************/
static patch_species_skills( ) { static patch_species_skills() {
if (!game.wfrp4e?.config?.speciesSkills) {
return
}
console.log("Patching species skills...."); console.log("Patching species skills....");
for (let speciesName in game.wfrp4e.config.speciesSkills) { for (let speciesName in game.wfrp4e.config.speciesSkills) {
let speciesComp = game.wfrp4e.config.speciesSkills[speciesName]; let speciesComp = game.wfrp4e.config.speciesSkills[speciesName];
console.log("SpeciesName", speciesName, speciesComp); console.log("SpeciesName", speciesName, speciesComp);
game.wfrp4e.config.speciesSkills[speciesName] = this.translateSkillList( speciesComp ) game.wfrp4e.config.speciesSkills[speciesName] = this.translateSkillList(speciesComp)
} }
} }
/************************************************************************************/ /************************************************************************************/
static patch_species_talents( ) { static patch_species_talents() {
if (!game.wfrp4e?.config?.speciesTalents) {
return
}
for (let speciesName in game.wfrp4e.config.speciesTalents) { for (let speciesName in game.wfrp4e.config.speciesTalents) {
let speciesTalents = game.wfrp4e.config.speciesTalents[speciesName]; let speciesTalents = game.wfrp4e.config.speciesTalents[speciesName];
game.wfrp4e.config.speciesTalents[speciesName] = this.translateTalentList( speciesTalents); game.wfrp4e.config.speciesTalents[speciesName] = this.translateTalentList(speciesTalents);
} }
} }
@@ -97,16 +127,16 @@ export class WH4FRPatchConfig {
static patch_career() { static patch_career() {
let compendiumName = 'wfrp4e-core.items' let compendiumName = 'wfrp4e-core.items'
if ( game.wfrp4e.tables.career) { if (game.wfrp4e?.tables?.career) {
for( let row of game.wfrp4e.tables.career.rows) { for (let row of game.wfrp4e.tables.career.rows) {
for ( let key in row) { for (let key in row) {
if (key != "range") { if (key != "range") {
if ( row[key].name == 'Slayer' ) { if (row[key].name == 'Slayer') {
row[key].name = "Tueur Nains"; row[key].name = "Tueur Nains";
} else if ( row[key].name == 'Duelist' ) { } else if (row[key].name == 'Duelist') {
row[key].name = "Duelliste"; row[key].name = "Duelliste";
} else { } else {
let career_fr = game.babele.translate( compendiumName, {name: row[key].name}, true ); let career_fr = game.babele.translate(compendiumName, { name: row[key].name }, true);
row[key].name = career_fr.name; row[key].name = career_fr.name;
} }
} }
@@ -118,12 +148,15 @@ export class WH4FRPatchConfig {
/************************************************************************************/ /************************************************************************************/
static fixSpeciesTable() { static fixSpeciesTable() {
let speciesTable = game.wfrp4e.tables.findTable("species"); let speciesTable = game.wfrp4e?.tables?.findTable("species");
if (!speciesTable?.results) {
return
}
let newResults = foundry.utils.duplicate(speciesTable.results); let newResults = foundry.utils.duplicate(speciesTable.results);
for (let result of newResults) { for (let result of newResults) {
result.name = game.i18n.localize(result.name); result.name = game.i18n.localize(result.name);
} }
speciesTable.update({results: newResults } ) speciesTable.update({ results: newResults })
console.log("Species table patched to use 'Humain' instead of 'Human'", speciesTable); console.log("Species table patched to use 'Humain' instead of 'Human'", speciesTable);
} }
@@ -139,7 +172,7 @@ export class WH4FRPatchConfig {
} }
// Detect and patch as necessary // Detect and patch as necessary
if (game.wfrp4e.config?.talentBonuses ) { if (game.wfrp4e.config?.talentBonuses) {
this.fixSpeciesTable() // Force 'name' field replacement this.fixSpeciesTable() // Force 'name' field replacement
@@ -181,22 +214,22 @@ export class WH4FRPatchConfig {
if (game.wfrp4e.config.characteristicsBonus) { if (game.wfrp4e.config.characteristicsBonus) {
game.wfrp4e.config.characteristicsBonus = game.wfrp4e.config.characteristicsBonus =
{ {
"ws": "Bonus de Capacité de Combat", "ws": "Bonus de Capacité de Combat",
"bs": "Bonus de Capacité de Tir", "bs": "Bonus de Capacité de Tir",
"s": "Bonus de Force", "s": "Bonus de Force",
"t": "Bonus d'Endurance", "t": "Bonus d'Endurance",
"i": "Bonus d'Initiative", "i": "Bonus d'Initiative",
"ag": "Bonus d'Agilité", "ag": "Bonus d'Agilité",
"dex": "Bonus de Dexterité", "dex": "Bonus de Dexterité",
"int": "Bonus d'Intelligence", "int": "Bonus d'Intelligence",
"wp": "Bonus de Force Mentale", "wp": "Bonus de Force Mentale",
"fel": "Bonus de Sociabilité" "fel": "Bonus de Sociabilité"
} }
} }
if (game.wfrp4e.config.classTrappings) { if (game.wfrp4e.config.classTrappings) {
for(const c of Object.keys(game.wfrp4e.config.classTrappings)) { for (const c of Object.keys(game.wfrp4e.config.classTrappings)) {
game.wfrp4e.config.classTrappings[game.i18n.localize(c)] = game.wfrp4e.config.classTrappings[c]; game.wfrp4e.config.classTrappings[game.i18n.localize(c)] = game.wfrp4e.config.classTrappings[c];
} }
} }

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
MANIFEST-001142 MANIFEST-001231

View File

@@ -1,7 +1,7 @@
2025/06/04-19:41:39.538144 7ff25affd6c0 Recovering log #1140 2026/01/05-17:20:14.396780 7f93eb7fe6c0 Recovering log #1229
2025/06/04-19:41:39.549313 7ff25affd6c0 Delete type=3 #1138 2026/01/05-17:20:14.456467 7f93eb7fe6c0 Delete type=3 #1227
2025/06/04-19:41:39.549457 7ff25affd6c0 Delete type=0 #1140 2026/01/05-17:20:14.456537 7f93eb7fe6c0 Delete type=0 #1229
2025/06/04-19:57:50.962467 7ff25a3ff6c0 Level-0 table #1145: started 2026/01/05-17:22:12.851160 7f93e9ffb6c0 Level-0 table #1234: started
2025/06/04-19:57:50.962508 7ff25a3ff6c0 Level-0 table #1145: 0 bytes OK 2026/01/05-17:22:12.851180 7f93e9ffb6c0 Level-0 table #1234: 0 bytes OK
2025/06/04-19:57:50.968762 7ff25a3ff6c0 Delete type=0 #1143 2026/01/05-17:22:12.857087 7f93e9ffb6c0 Delete type=0 #1232
2025/06/04-19:57:50.982716 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end) 2026/01/05-17:22:12.870416 7f93e9ffb6c0 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 @@
2025/06/04-19:39:36.647042 7ff25bfff6c0 Recovering log #1136 2026/01/04-22:01:24.254078 7f93eaffd6c0 Recovering log #1224
2025/06/04-19:39:36.657683 7ff25bfff6c0 Delete type=3 #1134 2026/01/04-22:01:24.350065 7f93eaffd6c0 Delete type=3 #1222
2025/06/04-19:39:36.657749 7ff25bfff6c0 Delete type=0 #1136 2026/01/04-22:01:24.350146 7f93eaffd6c0 Delete type=0 #1224
2025/06/04-19:39:59.536407 7ff25a3ff6c0 Level-0 table #1141: started 2026/01/04-22:02:13.377643 7f93e9ffb6c0 Level-0 table #1230: started
2025/06/04-19:39:59.536481 7ff25a3ff6c0 Level-0 table #1141: 0 bytes OK 2026/01/04-22:02:13.377670 7f93e9ffb6c0 Level-0 table #1230: 0 bytes OK
2025/06/04-19:39:59.543440 7ff25a3ff6c0 Delete type=0 #1139 2026/01/04-22:02:13.384805 7f93e9ffb6c0 Delete type=0 #1228
2025/06/04-19:39:59.565026 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end) 2026/01/04-22:02:13.385131 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-001144 MANIFEST-001233

View File

@@ -1,7 +1,7 @@
2025/06/04-19:41:39.552657 7ff25bfff6c0 Recovering log #1142 2026/01/05-17:20:14.458755 7f93eb7fe6c0 Recovering log #1231
2025/06/04-19:41:39.562973 7ff25bfff6c0 Delete type=3 #1140 2026/01/05-17:20:14.498635 7f93eb7fe6c0 Delete type=3 #1229
2025/06/04-19:41:39.563043 7ff25bfff6c0 Delete type=0 #1142 2026/01/05-17:20:14.498701 7f93eb7fe6c0 Delete type=0 #1231
2025/06/04-19:57:50.982905 7ff25a3ff6c0 Level-0 table #1147: started 2026/01/05-17:22:12.845184 7f93e9ffb6c0 Level-0 table #1236: started
2025/06/04-19:57:50.982939 7ff25a3ff6c0 Level-0 table #1147: 0 bytes OK 2026/01/05-17:22:12.845214 7f93e9ffb6c0 Level-0 table #1236: 0 bytes OK
2025/06/04-19:57:50.990059 7ff25a3ff6c0 Delete type=0 #1145 2026/01/05-17:22:12.851070 7f93e9ffb6c0 Delete type=0 #1234
2025/06/04-19:57:51.012060 7ff25a3ff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end) 2026/01/05-17:22:12.870407 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/06/04-19:39:36.661476 7ff25affd6c0 Recovering log #1138 2026/01/04-22:01:24.357771 7f93ebfff6c0 Recovering log #1226
2025/06/04-19:39:36.671782 7ff25affd6c0 Delete type=3 #1136 2026/01/04-22:01:24.468440 7f93ebfff6c0 Delete type=3 #1224
2025/06/04-19:39:36.671934 7ff25affd6c0 Delete type=0 #1138 2026/01/04-22:01:24.468504 7f93ebfff6c0 Delete type=0 #1226
2025/06/04-19:39:59.550475 7ff25a3ff6c0 Level-0 table #1143: started 2026/01/04-22:02:13.391738 7f93e9ffb6c0 Level-0 table #1232: started
2025/06/04-19:39:59.550504 7ff25a3ff6c0 Level-0 table #1143: 0 bytes OK 2026/01/04-22:02:13.391763 7f93e9ffb6c0 Level-0 table #1232: 0 bytes OK
2025/06/04-19:39:59.558216 7ff25a3ff6c0 Delete type=0 #1141 2026/01/04-22:02:13.397715 7f93e9ffb6c0 Delete type=0 #1230
2025/06/04-19:39:59.565076 7ff25a3ff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end) 2026/01/04-22:02:13.410782 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-001142 MANIFEST-001231

View File

@@ -1,7 +1,7 @@
2025/06/04-19:41:39.579753 7ff25b7fe6c0 Recovering log #1140 2026/01/05-17:20:14.575428 7f93ea7fc6c0 Recovering log #1229
2025/06/04-19:41:39.591676 7ff25b7fe6c0 Delete type=3 #1138 2026/01/05-17:20:14.619638 7f93ea7fc6c0 Delete type=3 #1227
2025/06/04-19:41:39.591835 7ff25b7fe6c0 Delete type=0 #1140 2026/01/05-17:20:14.619716 7f93ea7fc6c0 Delete type=0 #1229
2025/06/04-19:57:50.990284 7ff25a3ff6c0 Level-0 table #1145: started 2026/01/05-17:22:12.876750 7f93e9ffb6c0 Level-0 table #1234: started
2025/06/04-19:57:50.990348 7ff25a3ff6c0 Level-0 table #1145: 0 bytes OK 2026/01/05-17:22:12.876780 7f93e9ffb6c0 Level-0 table #1234: 0 bytes OK
2025/06/04-19:57:50.997867 7ff25a3ff6c0 Delete type=0 #1143 2026/01/05-17:22:12.884154 7f93e9ffb6c0 Delete type=0 #1232
2025/06/04-19:57:51.012102 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end) 2026/01/05-17:22:12.900968 7f93e9ffb6c0 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 @@
2025/06/04-19:39:36.690188 7ff25affd6c0 Recovering log #1136 2026/01/04-22:01:24.562817 7f93eb7fe6c0 Recovering log #1224
2025/06/04-19:39:36.700266 7ff25affd6c0 Delete type=3 #1134 2026/01/04-22:01:24.662382 7f93eb7fe6c0 Delete type=3 #1222
2025/06/04-19:39:36.700336 7ff25affd6c0 Delete type=0 #1136 2026/01/04-22:01:24.662455 7f93eb7fe6c0 Delete type=0 #1224
2025/06/04-19:39:59.558368 7ff25a3ff6c0 Level-0 table #1141: started 2026/01/04-22:02:13.397968 7f93e9ffb6c0 Level-0 table #1230: started
2025/06/04-19:39:59.558395 7ff25a3ff6c0 Level-0 table #1141: 0 bytes OK 2026/01/04-22:02:13.398010 7f93e9ffb6c0 Level-0 table #1230: 0 bytes OK
2025/06/04-19:39:59.564814 7ff25a3ff6c0 Delete type=0 #1139 2026/01/04-22:02:13.404471 7f93e9ffb6c0 Delete type=0 #1228
2025/06/04-19:39:59.565096 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end) 2026/01/04-22:02:13.410790 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

@@ -1 +1 @@
MANIFEST-001142 MANIFEST-001231

View File

@@ -1,7 +1,7 @@
2025/06/04-19:41:39.525306 7ff2609fa6c0 Recovering log #1140 2026/01/05-17:20:14.340612 7f93eb7fe6c0 Recovering log #1229
2025/06/04-19:41:39.534933 7ff2609fa6c0 Delete type=3 #1138 2026/01/05-17:20:14.394663 7f93eb7fe6c0 Delete type=3 #1227
2025/06/04-19:41:39.535006 7ff2609fa6c0 Delete type=0 #1140 2026/01/05-17:20:14.394743 7f93eb7fe6c0 Delete type=0 #1229
2025/06/04-19:57:50.975975 7ff25a3ff6c0 Level-0 table #1145: started 2026/01/05-17:22:12.857180 7f93e9ffb6c0 Level-0 table #1234: started
2025/06/04-19:57:50.976033 7ff25a3ff6c0 Level-0 table #1145: 0 bytes OK 2026/01/05-17:22:12.857204 7f93e9ffb6c0 Level-0 table #1234: 0 bytes OK
2025/06/04-19:57:50.982538 7ff25a3ff6c0 Delete type=0 #1143 2026/01/05-17:22:12.863647 7f93e9ffb6c0 Delete type=0 #1232
2025/06/04-19:57:50.982740 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end) 2026/01/05-17:22:12.870424 7f93e9ffb6c0 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 @@
2025/06/04-19:39:36.632014 7ff2609fa6c0 Recovering log #1136 2026/01/04-22:01:24.160908 7f93ea7fc6c0 Recovering log #1224
2025/06/04-19:39:36.643639 7ff2609fa6c0 Delete type=3 #1134 2026/01/04-22:01:24.250354 7f93ea7fc6c0 Delete type=3 #1222
2025/06/04-19:39:36.643779 7ff2609fa6c0 Delete type=0 #1136 2026/01/04-22:01:24.250444 7f93ea7fc6c0 Delete type=0 #1224
2025/06/04-19:39:59.529217 7ff25a3ff6c0 Level-0 table #1141: started 2026/01/04-22:02:13.371437 7f93e9ffb6c0 Level-0 table #1230: started
2025/06/04-19:39:59.529246 7ff25a3ff6c0 Level-0 table #1141: 0 bytes OK 2026/01/04-22:02:13.371468 7f93e9ffb6c0 Level-0 table #1230: 0 bytes OK
2025/06/04-19:39:59.535955 7ff25a3ff6c0 Delete type=0 #1139 2026/01/04-22:02:13.377536 7f93e9ffb6c0 Delete type=0 #1228
2025/06/04-19:39:59.536241 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end) 2026/01/04-22:02:13.385115 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

View File

@@ -1 +1 @@
MANIFEST-001142 MANIFEST-001231

View File

@@ -1,7 +1,7 @@
2025/06/04-19:41:39.510754 7ff25affd6c0 Recovering log #1140 2026/01/05-17:20:14.280921 7f93ea7fc6c0 Recovering log #1229
2025/06/04-19:41:39.521463 7ff25affd6c0 Delete type=3 #1138 2026/01/05-17:20:14.337958 7f93ea7fc6c0 Delete type=3 #1227
2025/06/04-19:41:39.521531 7ff25affd6c0 Delete type=0 #1140 2026/01/05-17:20:14.338043 7f93ea7fc6c0 Delete type=0 #1229
2025/06/04-19:57:50.969079 7ff25a3ff6c0 Level-0 table #1145: started 2026/01/05-17:22:12.838440 7f93e9ffb6c0 Level-0 table #1234: started
2025/06/04-19:57:50.969151 7ff25a3ff6c0 Level-0 table #1145: 0 bytes OK 2026/01/05-17:22:12.838473 7f93e9ffb6c0 Level-0 table #1234: 0 bytes OK
2025/06/04-19:57:50.975744 7ff25a3ff6c0 Delete type=0 #1143 2026/01/05-17:22:12.844706 7f93e9ffb6c0 Delete type=0 #1232
2025/06/04-19:57:50.982728 7ff25a3ff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end) 2026/01/05-17:22:12.844991 7f93e9ffb6c0 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 @@
2025/06/04-19:39:36.618882 7ff25b7fe6c0 Recovering log #1136 2026/01/04-22:01:24.060098 7f93ebfff6c0 Recovering log #1224
2025/06/04-19:39:36.628823 7ff25b7fe6c0 Delete type=3 #1134 2026/01/04-22:01:24.158104 7f93ebfff6c0 Delete type=3 #1222
2025/06/04-19:39:36.628913 7ff25b7fe6c0 Delete type=0 #1136 2026/01/04-22:01:24.158187 7f93ebfff6c0 Delete type=0 #1224
2025/06/04-19:39:59.522519 7ff25a3ff6c0 Level-0 table #1141: started 2026/01/04-22:02:13.363838 7f93e9ffb6c0 Level-0 table #1230: started
2025/06/04-19:39:59.522571 7ff25a3ff6c0 Level-0 table #1141: 0 bytes OK 2026/01/04-22:02:13.363872 7f93e9ffb6c0 Level-0 table #1230: 0 bytes OK
2025/06/04-19:39:59.529048 7ff25a3ff6c0 Delete type=0 #1139 2026/01/04-22:02:13.371335 7f93e9ffb6c0 Delete type=0 #1228
2025/06/04-19:39:59.536218 7ff25a3ff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end) 2026/01/04-22:02:13.385100 7f93e9ffb6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

View File

View File

@@ -1 +1 @@
MANIFEST-000785 MANIFEST-000874

View File

@@ -1,7 +1,7 @@
2025/06/04-19:41:39.566007 7ff25affd6c0 Recovering log #783 2026/01/05-17:20:14.509126 7f93ea7fc6c0 Recovering log #872
2025/06/04-19:41:39.575843 7ff25affd6c0 Delete type=3 #781 2026/01/05-17:20:14.568971 7f93ea7fc6c0 Delete type=3 #870
2025/06/04-19:41:39.575932 7ff25affd6c0 Delete type=0 #783 2026/01/05-17:20:14.569021 7f93ea7fc6c0 Delete type=0 #872
2025/06/04-19:57:51.004365 7ff25a3ff6c0 Level-0 table #788: started 2026/01/05-17:22:12.863773 7f93e9ffb6c0 Level-0 table #877: started
2025/06/04-19:57:51.004432 7ff25a3ff6c0 Level-0 table #788: 0 bytes OK 2026/01/05-17:22:12.863802 7f93e9ffb6c0 Level-0 table #877: 0 bytes OK
2025/06/04-19:57:51.011786 7ff25a3ff6c0 Delete type=0 #786 2026/01/05-17:22:12.870319 7f93e9ffb6c0 Delete type=0 #875
2025/06/04-19:57:51.012158 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end) 2026/01/05-17:22:12.870431 7f93e9ffb6c0 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 @@
2025/06/04-19:39:36.675374 7ff25bfff6c0 Recovering log #779 2026/01/04-22:01:24.471625 7f93eaffd6c0 Recovering log #867
2025/06/04-19:39:36.686819 7ff25bfff6c0 Delete type=3 #777 2026/01/04-22:01:24.559238 7f93eaffd6c0 Delete type=3 #865
2025/06/04-19:39:36.686965 7ff25bfff6c0 Delete type=0 #779 2026/01/04-22:01:24.559306 7f93eaffd6c0 Delete type=0 #867
2025/06/04-19:39:59.543592 7ff25a3ff6c0 Level-0 table #784: started 2026/01/04-22:02:13.404597 7f93e9ffb6c0 Level-0 table #873: started
2025/06/04-19:39:59.543622 7ff25a3ff6c0 Level-0 table #784: 0 bytes OK 2026/01/04-22:02:13.404646 7f93e9ffb6c0 Level-0 table #873: 0 bytes OK
2025/06/04-19:39:59.550325 7ff25a3ff6c0 Delete type=0 #782 2026/01/04-22:02:13.410707 7f93e9ffb6c0 Delete type=0 #871
2025/06/04-19:39:59.565053 7ff25a3ff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end) 2026/01/04-22:02:13.410796 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)

Binary file not shown.