Compare commits

...

27 Commits

Author SHA1 Message Date
9ba6bde6e0 Fix versionning 2023-11-13 07:07:10 +01:00
1ff7be02d4 Fix versionning 2023-11-13 07:06:55 +01:00
bd113b6ef3 Fix spell damages 2023-11-12 00:22:44 +01:00
db1bf4e23a Utilisation des ID pour certains items litigieux 2023-11-09 17:04:42 +01:00
4cf52343c6 Merge pull request 'Utilisation des IDs pour les éléments doublons du core' (#98) from pallando/foundryvtt-wh4-lang-fr-fr:core-duplicates into v10
Reviewed-on: #98
2023-11-09 17:01:41 +01:00
83822ade7f Use IDs for duplicate items in core 2023-11-06 22:26:06 +01:00
e79474ab8d Nouvelles tables de critiques 2023-10-29 09:53:13 +01:00
8d5fb68182 Merge pull request 'Gestion des résultats des critiques pour le Starter Set et Up In Arms' (#97) from pallando/foundryvtt-wh4-lang-fr-fr:update-tables into v10
Reviewed-on: #97
2023-10-29 09:52:03 +01:00
54612628b8 Handle results for criticals from Up In Arms 2023-10-25 22:37:46 +02:00
3f861ed86c Translate Critical Hits tables from the Starter Set 2023-10-25 22:36:55 +02:00
a15260bff7 Use raw spells functions 2023-10-14 11:28:48 +02:00
541e2836ca Amelioration du parser de statblock 2023-10-12 20:10:13 +02:00
73133b0abf Amelioration du parser de statblock 2023-10-12 08:31:55 +02:00
7ceaa73233 Better management of careers translations 2023-10-03 11:51:09 +02:00
a888502952 Better management of careers translations 2023-10-03 11:43:31 +02:00
a1f1861172 Better management of careers translations 2023-10-03 11:42:43 +02:00
0335ffb354 Merge pull request 'bugfix' (#95) from pallando/foundryvtt-wh4-lang-fr-fr:bugfix into v10
Reviewed-on: #95
2023-10-03 11:41:41 +02:00
303cdece36 Merge pull request 'Gestion des items de Winds of Magic' (#96) from pallando/foundryvtt-wh4-lang-fr-fr:wom into v10
Reviewed-on: #96
2023-10-03 11:41:28 +02:00
71b45c0cad Update wfrp4e-core.careers.json to make it valid 2023-10-03 11:18:41 +02:00
1408122c59 Remove tory | grep github 2023-10-03 11:18:40 +02:00
7305a9c370 Add wfrp4e-wom.items.json 2023-10-03 11:13:52 +02:00
e427e3702b Fix skill testing 2023-10-03 10:48:42 +02:00
8c7848bf2b Fix compendiums 2023-10-01 21:15:56 +02:00
e5ba63b8e0 Fix compendiums 2023-10-01 21:15:31 +02:00
16f97040d3 Fix compendiums 2023-10-01 21:08:37 +02:00
a9aa0edad8 Fix compendiums 2023-10-01 20:30:32 +02:00
0f0c482187 Fix compendiums 2023-10-01 20:28:29 +02:00
108 changed files with 2156 additions and 416 deletions

4
.gitignore vendored
View File

@ -1,6 +1,2 @@
.history/
.vscode/
/packs/*/
/packs/*/CURRENT
/packs/*/LOG
/packs/*/LOCK

View File

@ -72,6 +72,7 @@ Pour info, il existe énormément de cas particuliers dans le système de règle
* compendium/talents -> LeRatier/Dr.Droide/Moilu/Gharazel
* various modules and fixes -> Ashburry77
* various modules and fixes -> Bimkiz
* contributions au code et améliorations -> Pallando
## Feedback

View File

@ -41,7 +41,7 @@ Hooks.once('init', () => {
}
/*---------------------------------------------------------------------*/
game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) {
/* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) {
try {
formula = formula.toLowerCase();
@ -85,10 +85,10 @@ Hooks.once('init', () => {
catch (e) {
throw ui.notifications.error("Error: could not parse spell damage. See console for details")
}
}
}*/
/*---------------------------------------------------------------------*/
game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellPrayerFormula = function (type, aoe = false, formulaOverride) {
/* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellPrayerFormula = function (type, aoe = false, formulaOverride) {
let formula = formulaOverride || this[type]?.value
if (Number.isNumeric(formula))
return formula
@ -134,7 +134,7 @@ Hooks.once('init', () => {
//console.log("calculateSpellAttributes -> " + formula );
return formula.capitalize();
}
}*/
/*---------------------------------------------------------------------*/
// Converters area
@ -158,29 +158,32 @@ Hooks.once('init', () => {
for (i = 0; i < len; i++) {
skills_list[i] = skills_list[i].trim();
for (let compData of validCompendiums) {
let transl = game.babele.translate(compData.metadata.id, { name: skills_list[i], type: "skill" }, true).name;
let translItem = game.babele.translate(compData.metadata.id, { name: skills_list[i], type: "skill" }, true)
let transl = translItem?.name || undefined
if (!transl) transl = skills_list[i]
//console.log("List ...", skills_list[i]);
//console.log("List ...", skills_list[i], compData.metadata.id, translItem);
if (transl == skills_list[i]) {
let res = re.exec(skills_list[i]);
if (res) {
//console.log("Matched/split:", res[1], res[2]);
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim() + " ()";
let translw = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true).name;
if (translw != s1) {
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
let translw = translItem?.name || undefined
if (translw && translw != s1) {
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
} else {
s1 = res[1].trim() + " ( )";
translw = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true).name;
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
translw = translItem?.name || undefined
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
}
}
}
skills_list[i] = transl;
if (transl?.system)
if (translItem?.system)
break;
}
}
@ -241,26 +244,26 @@ Hooks.once('init', () => {
let len = talents_list.length;
let re = /(.*)\((.*)\)/i;
for (i = 0; i < len; i++) {
let translated = false;
for (let compData of validCompendiums) {
//console.log("TALENT - Parsing : ", talents_list)
let transl = game.babele.translate(compData.metadata.id, { name: talents_list[i], type: "talent" }, true).name;
let translItem = game.babele.translate(compData.metadata.id, { name: talents_list[i], type: "talent" }, true);
let transl = translItem?.name || undefined
if (!transl) transl = talents_list[i]
if (transl == talents_list[i]) {
let res = re.exec(talents_list[i]);
if (res) {
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim(); // No () in talents table
let translw = game.babele.translate(compData.metadata.id, { name: s1, type: "talent" }, true).name;
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "talent" }, true)
let translw = translItem?.name || undefined
//console.log("Ssearch talent name:", compData.metadata.id, s1, translw);
if (translw && translw != s1) {
transl = translw + " (" + subword + ")";
translated = true
}
}
}
talents_list[i] = transl;
if (translated)
if (translItem?.system)
break;
}
}
@ -541,6 +544,7 @@ Hooks.once('init', () => {
var translw = value;
var re = /(.*) Bonus (\w*)/i;
var res = re.exec(value);
console.log("RES1:", res);
var unit = "";
if (res) { // Test "<charac> Bonus <unit>" pattern
if (res[1]) { // We have char name, then convert it
@ -567,7 +571,12 @@ Hooks.once('init', () => {
if (unit == "days") unit = "jours";
if (unit == "yard") unit = "mètre";
if (unit == "yards") unit = "mètres";
translw += " " + unit;
if (unit == "Bonus") { // Another weird management
translw = "Bonus de " + translw;
} else {
translw += " " + unit;
}
console.log("Spell duration/range/damage/target :", value, translw);
return translw;
}
});

View File

@ -998,7 +998,7 @@
{
"id": "Informer",
"trappings": [
"Bâtonnet de fusain",,
"Bâtonnet de fusain",
"Besace contenant 2 tenues vestimentaires différentes et une Cape à capuchon"
],
"description": "<p>@UUID[Compendium.wfrp4e-core.journal-entries.wczCPcuHT4VQDLpL.JournalEntryPage.ssJHG82vEHHRoAUF]{Espion}<\/p>",

View File

@ -7580,7 +7580,7 @@
"effects": {
"label0": "Frénésie"
},
"id": "Frenzy",
"id": "DrNUTPeodEgpWTnT",
"name": "Frénésie"
},
{
@ -7760,7 +7760,7 @@
},
{
"description": "<p>Le souffle de la créature est une arme puissante. Pendant son tour, au prix de 2 Avantages, elle peut activer son Souffle en tant qu'Attaque gratuite. Choisissez 1 cible qu'elle peut voir, située à une distance en mètres égale à son Bonus d'Endurance + 20. Tous les personnages situés à une distance en mètres égale à son Bonus de Force de cette cible sont touchés, ainsi que tous les personnages entre la créature et la cible.</p>\n<p>Effectuez un Test opposé de <strong>CT/Esquive</strong> contre toutes les cibles affectées (un lancer pour chaque cible). Toutes les cibles qui échouent subissent un montant de Dégâts d'Arme égal à son <em>Indice</em>.</p>\n<p>De plus, si le trait indique l'un des <em>Types</em> suivants entre parenthèses, appliquez également les règles correspondantes :</p><ul><li><strong>Froid :</strong> Les cibles gagnent l'État @Condition[Assommé] pour chaque tranche de 5 Blessures subies (minimum 1);</li><li><strong>Corrosif :</strong> Toutes les Armures et Armes portées par les cibles subissent 1 Dégât;</li><li><strong>Feu :</strong> Toutes les Blessures infligées ignorent les PA. Les cibles gagnent l'Etat @Condition[En flammes]{Enflammé};</li><li><strong>Électricité :</strong> Toutes les Blessures infligées ignorent les PA. Les cibles gagnent l'État @Condition[Assommé];</li><li><strong>Poison :</strong> Toutes les Blessures infligées ignorent les PA. Les cibles gagnent l'Etat @Condition[Empoisonné];</li><li><strong>Fumée :</strong> La zone se remplit de fumée, bloquant les Lignes de vue pendant un nombre de Rounds égal au Bonus d'Endurance de la créature.</li></ul></p>\n<p>La créature est immunisée à votre propre Souffle. Il s'agit d'une Attaque Magique.</p>",
"id": "Breath",
"id": "uqGxFOEqeurwkAO3",
"name": "Souffle"
},
{
@ -7866,7 +7866,7 @@
},
{
"description": "Le sang de la créature est corrosif. Chaque fois qu'elle subit des Blessures dont le sang éclabousse, tous ceux qui sont <em>Engagés</em> avec elle reçoivent ldl0 Points de Blessure modifiés par le Bonus d'Endurance et les PA, avec un minimum de 1.",
"id": "Corrosive Blood",
"id": "M5QSWOYt2Rbv2yxW",
"name": "Sang corrosif",
"effects": [
{
@ -7908,7 +7908,7 @@
},
{
"description": "<p>La créature peut voir dans l'obscurité comme en plein jour.</p>",
"id": "Dark Vision",
"id": "JQa5DLnTs2SEzRrc",
"name": "Infravision"
},
{
@ -7923,7 +7923,7 @@
},
{
"description": "<p>La créature perturbe ou désoriente ses ennemis : peut-être quelle dégage un musc soporifique ou une odeur nauséabonde, ou peut-être que son apparence est horrifiante ou étrange. Toute personne se trouvant à un nombre de mètres égal à son Bonus dEndurance obtient une pénalité de -20 à tous ses Tests. Les créatures touchées ne peuvent subir cette pénalité quune seule fois, peu importe le nombre dennemis Perturbants.</p>",
"id": "Distracting",
"id": "MVI0lXcg6vvtooAF",
"name": "Perturbant",
"effects": [
{
@ -7992,12 +7992,12 @@
},
{
"description": "<p>Quand la créature se Déplace, elle peut voler jusquà <em>Indice</em> mètres. Elle ignore alors tous les terrains, obstacles et personnages qui sinterposent. À la fin de son Mouvement, elle décide si elle atterrit ou si elle continue de voler. Elle peut utiliser ce Mouvement pour Charger.<p>\n</p>Si elle commence son tour en volant, elle doit choisir le Vol pour son Mouvement. Si elle ne peut pas voler, le MJ décide à quelle distance elle tombe.<p>\n<p>Lorsquelle est une cible en vol, il faut mesurer la distance horizontale normalement, puis augmenter la distance de 1. Ainsi, une Longue Distance devient une Distance Extrême, et une créature volante à une Distance Extrême ne peut pas être touchée.</p>\n<p>Quand elle vole, elle subit une pénalité de -20 à toutes les tentatives de combat à distance, alors quelle virevolte dans le ciel.</p>",
"id": "Flight",
"id": "EO05HX7jql0g605A",
"name": "Vol"
},
{
"description": "<p style=\"text-align: justify:\">La créature peut, par le biais d'un Test de Force Mentale, se mettre dans un état psychologique dans lequel elle va se surmotiver, mordre son bouclier, etc. Sur un succès, elle entre en <em>Frénésie</em>. </p>\n<p style=\"text-align: justify:\">Tant qu'elle est en <em>Frénésie</em>, elle est immunisée à tous les autres Traits Psychologiques, et sous aucun prétexte elle ne fuira, ni ne battra en retraite. À l'inverse, elle doit se déplacer à son maximum en direction de l'ennemi le plus proche dans sa Ligne de Vue pour l'attaquer. La seule Action possible est un Test de <strong>Capacité de Combat</strong> ou un Test d'<strong>Athlétisme</strong> pour atteindre son ennemi le plus rapidement possible. De plus, elle peut effectuer un Test de <strong>Capacité de Combat</strong> gratuit chaque round car elle se lance à corps perdu dans son attaque. Enfin, elle gagne un Bonus de Force de + 1 grâce à sa férocité.\n<p style=\"text-align: justify:\"> Elle reste en <em>Frénésie</em> jusqu'à ce que tous ses ennemis dans sa Ligne de Vue soient neutralisés ou qu'elle gagne l'État <em><a class='condition-chat'>Assommé</a></em> ou <em><a class='condition-chat'>Inconscient</a></em>. Dès que sa <em>Frénésie</em> s'achève, elle gagne l'État <em><a class='condition-chat'>Extenué</a></em>.</p>",
"id": "Frenzy",
"id": "yRhhOlt18COq4e1q",
"name": "Frénésie",
"effects": [
{
@ -8056,7 +8056,7 @@
},
{
"description": "<p>La créature peut encaisser plus de Dégâts que la plupart des autres. Augmentez ses Points de Blessure d'un nombre égal à son Bonus d'Endurance (appliqué avant tout modificateur de Taille).</p>",
"id": "Hardy",
"id": "HbrwGhUl0ZXz4kLA",
"name": "Endurant",
"effects": [
{
@ -8083,7 +8083,7 @@
},
{
"description": "<p style=\"text-align: justify:\">La créature hait profondément la Cible, qui représente en général un groupe de personnes ou de créatures, comme les « hochlanders », les « pieuvres des tourbières » ou les « esclavagistes ». Elle n'interagit jamais avec des personnes qu'elle hait à ce point. Lorsqu'elle rencontre ceux qui vous provoquent la <em>Haine</em>, elle doit effectuer un Test de Psychologie. Sur un échec, elle ressent de la <em>Haine</em>. À la fin de chaque round qui suivra, elle pourra tenter un autre Test de Psychologie afin de mettre fin à son État de <em>Haine</em>. Si elle ne le fait pas, les effets de la <em>Haine</em> se dissiperont d'eux-mêmes lorsque tous les membres du groupe concerné dans sa Ligne de Vue seront morts ou auront disparu, ou qu'elle gagne l'État @Condition[Inconscient]. Tant qu'elle ressent de la <em>Haine</em>, elle doit faire tout ce qui est en son pouvoir pour détruire le groupe haï, et ce, le plus rapidement et de manière la plus violente possible. Elle gagne + 1 DR à tous ses Tests de Combat effectués contre le groupe en question et est immunisée à @Compendium[wfrp4e-core.items.Ib2YQYChktDFN93y]{Peur} et @Compendium[wfrp4e-core.items.I0yPc4PH5erWJLmu]{Intimidation} (mais pas @UUID[Compendium.wfrp4e-core.items.meMkLEwdJIDLxM0B]{Terreur}) causés par ceux de ce groupe.</p>",
"id": "Hatred",
"id": "aE3pyW20Orvdjzj0",
"name": "Haine"
},
{
@ -8172,7 +8172,7 @@
},
{
"description": "<p>La Magie naffecte pas la créature autant que les autres. Le DR de tous les Sorts l'affectant est réduit du nombre indiqué. Ainsi, Résistance à la Magie 2 réduit le DR de 2.</p>",
"id": "Magic Resistance",
"id": "yrkI7ATjqLPDTFmZ",
"name": "Résistance à la Magie",
"effects": [
{
@ -8219,7 +8219,7 @@
},
{
"description": "<p>La créature possède le Talent Vision nocturne. Elle peut voir parfaitement dans les ténèbres naturelles. En présumant qu'il y ait une faible source de lumière (telle que la lumière des étoiles, le clair de lune, la bioluminescence), elle peut voir clairement jusqu'à 20 mètres par Niveau de Vision nocturne. De plus, elle peut étendre la distance d'illumination effective de toutes les sources de lumière de 20 mètres par niveau de Vision nocturne.</p>",
"id": "Night Vision",
"id": "FmHDbCOy3pH8yKhm",
"name": "Vision Nocturne"
},
{
@ -8259,7 +8259,7 @@
},
{
"description": "<p>La créature est capable de guérir à une vitesse extraordinaire, et même de faire repousser ses membres amputés.<p></p>Au début de chaque round, s'il reste plus de 0 Point de Blessure à la créature, elle régénère 1d10 Points de Blessure. Si elle est à 0 Point de Blessure, lancez 1d10. Sur un résultat de 8+, elle régénère 1 seul Point de Blessure. Sur un résultat de 10, elle régénère également une Blessure Critique, et ne souffre plus des pénalités et États associés.<p></p>Les Blessures et Blessures Critiques infligées par le Feu ne peuvent pas être régénérées, et doivent être notées séparément.</p>",
"id": "Regenerate",
"id": "SfUUdOGjdYpr3KSR",
"name": "Régénération",
"effects": [
{
@ -8536,7 +8536,7 @@
"transfer": true
}
],
"id": "Tracker",
"id": "ClOlztW6hH8rslbp",
"name": "Pisteur"
},
{
@ -8620,7 +8620,7 @@
},
{
"description": "<p>Parce qu'elles sont magiques, bénéficient d'un talisman particulier ou sont simplement chanceuses, certaines créatures semblent éviter les coups. Lancer 1d10 après chaque coup reçu. En cas de résultat supérieur ou égal à <em>Indice</em>, le coup est ignoré même sil sagit dun Critique.</p>",
"id": "Ward",
"id": "Bvd2aZ0gQUXHfCTh",
"name": "Protection"
},
{
@ -9404,7 +9404,7 @@
{
"description": "<p>Vous avez voué votre douleur au service de votre Dieu. Chaque jour, vous devez passer une demi-cloche (une demi-heure) à prier en continuant à vous infliger un nombre de Blessures égal à votre Niveau de Flagellant. Jusquà votre prochain repos, si vous possédez le Talent @Compendium[wfrp4e-core.items.hXcfygzujgyMN1uI], vous pouvez entrer en <em>Frénésie</em> immédiatement sans effectuer de Test.<p>Le Talent @Compendium[wfrp4e-core.items.hXcfygzujgyMN1uI] est ajouté à la liste des Talents de nimporte laquelle de vos Carrière. Si vous ne réussissez pas à vous flageller un jour donné, ou si vous permettez à votre chair meurtrie de guérir, vous ne pouvez dépenser aucune Résilience et aucune Détermination jusquà une nouvelle flagellation. </p>",
"effects": [],
"id": "Flagellant",
"id": "Gs10qhA4CDmZyb1g",
"name": "Flagellant",
"tests": "Tout Test pour résister aux Puissances de la Ruine"
},
@ -9449,7 +9449,7 @@
"tests": ""
},
{
"description": "<p>Vous pouvez entrer en @Compendium[wfrp4e-corepsychologies.DrNUTPeodEgpWTnT].</p>",
"description": "<p>Vous pouvez entrer en @Compendium[wfrp4e-core.items.DrNUTPeodEgpWTnT].</p>",
"effects": [
{
"_id": "y1pfxqA1jLh5Ywca",
@ -10992,7 +10992,7 @@
{
"description": "<p>Vous êtes doué pour repérer et utiliser des pièges. Vous pouvez effectuer un Test de Perception pour en repérer automatiquement, sans avoir à prévenir le MJ de votre intention ; le MJ peut préférer effectuer ces Tests secrètement, à votre place.</p>",
"effects": [],
"id": "Trapper",
"id": "a7v422EZcOUUC20X",
"name": "Trappeur",
"tests": "Tests de Perception pour repérer des pièges, Piégeage"
},
@ -26240,4 +26240,4 @@
"name": "Zélote"
}
]
}
}

View File

@ -0,0 +1,23 @@
{
"label": "Tables (Starter Set)",
"mapping": {
"results": {
"path": "results",
"converter": "resultConverter"
}
},
"entries": {
"3m4LPj58xoNju80B": {
"name": "Blessures Critiques - Tête (Starter Set)"
},
"BlDLji1LeqHOVj8r": {
"name": "Blessures Critiques - Jambe (Starter Set)"
},
"yYfGtudjckO3bubF": {
"name": "Blessures Critiques - Bras (Starter Set)"
},
"yvzv7xxQuxX7N16b": {
"name": "Blessures Critiques - Corps (Starter Set)"
}
}
}

View File

@ -0,0 +1,23 @@
{
"label": "Tables (Up In Arms)",
"mapping": {
"results": {
"path": "results",
"converter": "resultConverter"
}
},
"entries": {
"Head Critical Wounds (Up In Arms)": {
"name": "Head Critical Wounds (Up In Arms)"
},
"Leg Critical Wounds (Up In Arms)": {
"name": "Leg Critical Wounds (Up In Arms)"
},
"Arm Critical Wounds (Up In Arms)": {
"name": "Arm Critical Wounds (Up In Arms)"
},
"Body Critical Wounds (Up In Arms)": {
"name": "Body Critical Wounds (Up In Arms)"
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
}
],
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
"version": "7.0.11",
"version": "7.0.21",
"esmodules": [
"babele-register.js",
"addon-register.js",
@ -50,18 +50,6 @@
"ASSISTANT": "OWNER"
}
},
{
"label": "Sorts FR",
"type": "Item",
"name": "sort-fr",
"path": "packs/sort-fr",
"system": "wfrp4e",
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Aides de Jeu FR",
"type": "JournalEntry",
@ -75,55 +63,7 @@
}
},
{
"label": "Potions : Drogues et Sédatifs",
"type": "Item",
"name": "drogues-and-sedatifs",
"path": "packs/drogues-and-sedatifs",
"system": "wfrp4e",
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Potions : Pansements et Cataplasmes",
"type": "Item",
"name": "pansements-and-cataplasmes",
"path": "packs/pansements-and-cataplasmes",
"system": "wfrp4e",
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Potions : Poisons et Toxiques",
"type": "Item",
"name": "poisons-and-toxiques",
"path": "packs/poisons-and-toxiques",
"system": "wfrp4e",
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Potions : Potions et Décoctions",
"type": "Item",
"name": "potions-and-decoctions",
"path": "packs/potions-and-decoctions",
"system": "wfrp4e",
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Potions : Antidotes et Remèdes",
"label": "Potions",
"type": "Item",
"name": "antidotes-and-remedes",
"path": "packs/antidotes-and-remedes",
@ -159,11 +99,27 @@
}
}
],
"packFolders": [
{
"name": "Module WFRP4 FR",
"sorting": "m",
"color": "#00435c",
"packs": [
"apothicarium",
"tables-des-traductions",
"antidotes-and-remedes",
"aides-de-jeu-fr",
"dons-de-rhya",
"plats-dauberges"
],
"folders": []
}
],
"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-7.0.11.zip",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-7.0.21.zip",
"id": "wh4-fr-translation",
"compatibility": {
"minimum": "10",
"minimum": "11",
"verified": "11"
},
"relationships": {
@ -182,4 +138,4 @@
}
]
}
}
}

View File

@ -176,6 +176,22 @@ export class WH4FRPatchConfig {
game.wfrp4e.config.species["welf"] = "Elfe Sylvain";
}
if (game.wfrp4e.config.charastericticsBonus) {
game.wfrp4e.config.charastericticsBonus =
{
"ws": "Bonus de Capacité de Combat",
"bs": "Bonus de Capacité de Tir",
"s": "Bonus de Force",
"t": "Bonus d'Endurance",
"i": "Bonus d'Initiative",
"ag": "Bonus d'Agilité",
"dex": "Bonus de Dexterité",
"int": "Bonus d'Intelligence",
"wp": "Bonus de Force Mentale",
"fel": "Bonus de Sociabilité"
}
}
if (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];

View File

@ -52,13 +52,13 @@ import "./xregexp-all.js";
const us_carac = 'm\\s+ws\\s+bs\\s+s\\s+t\\s+i\\s+agi?\\s+dex\\s+int\\s+\\wp\\s+fel\\s+w';
const fr_carac = 'm\\s+cc\\s+ct\\s+f\\s+e\\s+i\\s+agi?\\s+dex\\s+int\\s+fm\\s+soc\\s+b';
const carac_val = '(?<m>[0-9\\-]+)\\s+(?<ws>[0-9\\-]+)\\s+(?<bs>[0-9\\-]+)\\s+(?<s>[0-9\\-]+)\\s+(?<t>[0-9\\-]+)\\s+(?<i>[0-9\\-]+)\\s+(?<ag>[0-9\\-]+)\\s+(?<dex>[0-9\\-]+)\\s+(?<int>[0-9\\-]+)\\s+(?<wp>[0-9\\-]+)\\s+(?<fel>[0-9\\-]+)\\s+(?<w>[0-9\\-\*]+)';
const name_val = '(?<name>[a-zA-Z\\s\\-,]*)[\\s\\r\\na-zA-Z]*(?<tiers>.*|[\\(\\)a-z0-9]+)';
const name_val = '(?<name>[a-zA-Z\\s\\-,\']*)[\\s\\r\\na-zA-Z]*(?<tiers>.*|[\\(\\)a-z0-9]+)';
let sectionDataFR = [
{ name: "trait", toFind: "Traits\\s*:", secondParse: '(?<name>[a-zöàéè\\s]*)[\\s\\+]*(?<value>.*|[\\+0-9]+)', index: -1 },
{ name: "skill", toFind: "Compétences\\s*:", secondParse: '(?<name>[a-zàéè\\s\\(\\)]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-zöàéè\\-\\(\\)\\s\\/\']*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-zöàéè\\-\\!\\(\\)\\s\\/\']*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-zöàéè\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Equipement\\s*:", secondParse: '(?<name>[a-zöàéè0-9\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Equipement\\s*:", secondParse: '(?<name>[a-zöàéè0-9\\s(\\)\\-]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "spell", toFind: "Sorts\\s*\\([a-z\\s]*\\)*:", secondParse: '(?<name>[a-zöàéè\\s]*)', index: -1 },
{ name: "spellpetty", toFind: "Spells\\s*\\(Magie Mineure\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
{ name: "spellarcane", toFind: "Spells\\s*\\(Arcane[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
@ -67,13 +67,17 @@ let sectionDataFR = [
let sectionDataUS = [
{ name: "trait", toFind: "Traits\\s*:", secondParse: '(?<name>[a-z\\s]*)[\\s\\+]*(?<value>.*|[\\+0-9]+)', index: -1 },
{ name: "skill", toFind: "Skills\\s*:", secondParse: '(?<name>[a-z\\s\\(\\)]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-z\\-\\s\\(\\)\\/\']*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-z\\-\\s\\!\\(\\)\\/\']*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-zö\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Trappings\\s*:", secondParse: '(?<name>[a-zö0-9\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Trappings\\s*:", secondParse: '(?<name>[a-zö0-9\\s\\(\\)\\-]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "spellpetty", toFind: "Spells\\s*\\(Petty\\s*[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
{ name: "spellarcane", toFind: "Spells\\s*\\(Arcane\\s*[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
{ name: "spelllore", toFind: "Spells\\s*\\(Lore\\s*of\\s*(?<lore>[a-z\\s]*)\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 }
]
let moneyUS = [ {name:" gold crown", key: "gc"}, {name: " gc", key: "gc"},
{name:" silver shilling", key:"ss"}, {name:" ss", key: "ss"}, {name:"/-", key: "ss"}, {name:" brass penn", key: "bp"}, {name:" bp", key: "bp"} ]
let moneyFR = [ {name:" couronnes d", key: "gc"}, {name: " co", key: "gc"},
{name:" pistoles ", key:"ss"}, {name:" pa", key: "ss"}, {name:"/-", key: "ss"}, {name:" sous de cuivre", key: "bp"}, {name:" sc", key: "bp"} ]
let regSep = XRegExp('\\s*,\\s*', 'gi'); // Term separator, with auto trim
let regLine1 = XRegExp('[\\r\\n\\.]', 'gi'); // Term separator, with auto trim
let regName = XRegExp(name_val, 'gi');
@ -178,7 +182,7 @@ async function __findSkill(skillName, value = undefined) {
/************************************************************************************/
async function __findTalent(talentName) {
let parseStr = '(?<name>[a-z\\s\\/\']*)[\\s\\+]*(?<specialized>[a-z\\s\\(\\)\']*)';
let parseStr = '(?<name>[a-z\\s\\!\\/\']*)[\\s\\+]*(?<specialized>[a-z\\s\\(\\)\']*)';
let talentSplit = XRegExp.exec(talentName, XRegExp(parseStr, 'gi'));
let toSearch = talentSplit.name.toLowerCase().trim();
@ -246,16 +250,19 @@ export default async function statParserFR(statString, type = "npc") {
// Patch wront/strange carac value before processing
statString = statString.replace(/ /g, " 0")
let moneys = { gc: 0, ss: 0, bp: 0 }
let statNameReg = us_carac
let sectionData = sectionDataUS
let sectionData = duplicate(sectionDataUS)
let skillGrouping = __SkillGroupsUS
let moneyLang = moneyUS
// Detect French stat block
if (statString.includes('CC') && statString.includes('CT') && statString.includes('FM')) {
//ui.notifications.warn("Le parsing de stablock en Français n'est pas encore prêt")
statNameReg = fr_carac
sectionData = sectionDataFR
sectionData = duplicate(sectionDataFR)
skillGrouping = __SkillGroupsFR
moneyLang = moneyFR
}
let reg1 = XRegExp(statNameReg, 'gi')
@ -368,7 +375,7 @@ export default async function statParserFR(statString, type = "npc") {
} else {
itemFound.system.specification.value = game.i18n.localize(value)
}
itemFound.name += "(" + value + ")"
//itemFound.name += "(" + value + ")"
}
if (!itemFound)
ui.notifications.error("Trait non trouvé, à ajouter manuellement : " + name, { permanent: true })
@ -405,6 +412,7 @@ export default async function statParserFR(statString, type = "npc") {
if (!itemFound) {
ui.notifications.error("Talent non trouvé, à ajouter manuellement : " + name, { permanent: true })
}
} else if (def.name == 'trapping') {
itemFound = await __findItem(name, "trapping");
if (!itemFound) {
@ -415,7 +423,7 @@ export default async function statParserFR(statString, type = "npc") {
}
if (!itemFound && name) {
if (name.toLowerCase().includes("armor") || name.toLowerCase().includes("armure") || name.toLowerCase().includes("armour")) {
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "armor", system: game.system.model.Item.armor })
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "armour", system: game.system.model.Item.armor })
} else if (name.toLowerCase().includes("weapon") || name.toLowerCase().includes("arme")) {
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "weapon", system: game.system.model.Item.weapon })
} else {
@ -427,13 +435,22 @@ export default async function statParserFR(statString, type = "npc") {
}
itemFound = itemFound.toObject()
}
// Searching money stuff
for (let mondeyDef of moneyLang) {
if (name.toLowerCase().includes(mondeyDef.name)) {
let regMoney = XRegExp("(\\d+)\\s*" + mondeyDef.name.trim(), 'gi')
let moneyParsed = XRegExp.exec(name.toLowerCase(), regMoney)
console.log("Parsing money", name, moneyParsed)
moneys[mondeyDef.key] += (moneyParsed && moneyParsed[1]) ? Number(moneyParsed[1]) : 0
}
}
} else if (def.name.includes('spell')) {
console.log("Found spells section!!!!", name, def, def.lore || "NO LORE")
// Lore management, firs pass
if ( def.lore ) {
if (def.lore) {
let newName = name + " (" + def.lore + ")"
itemFound = await __findItem(newName, "spell");
console.log("Trying to find ", newName, itemFound)
//console.log("Trying to find ", newName, itemFound)
}
if (!itemFound) { // If not found with Lore, try without the lore
itemFound = await __findItem(name, "spell");
@ -455,14 +472,39 @@ export default async function statParserFR(statString, type = "npc") {
}
let moneyItems = await game.wfrp4e.utility.allMoneyItems() || [];
moneyItems = moneyItems.sort((a, b) => (a.system.coinValue.value > b.system.coinValue.value) ? -1 : 1);
moneyItems.forEach(m => m.system.quantity.value = 0)
for (let m of moneyItems) {
m.system.quantity.value = 0
if (m.system.coinValue.value == 1) {
m.system.quantity.value += moneys.bp
}
if (m.system.coinValue.value == 240) {
m.system.quantity.value += moneys.gc
}
if (m.system.coinValue.value == 12) {
m.system.quantity.value += moneys.ss
}
}
globalItemList = globalItemList.concat(moneyItems);
//console.log("My liste :", globalItemList);
//DEBUG : console.log("My liste :", moneyItems, moneys);
let name = pnjName;
let effects = globalItemList.reduce((total, globItem) => total.concat(globItem.effects), [])
effects = effects.filter(e => !!e)
effects = effects.filter(e => e.transfer)
for (let e of effects) {
for (let c of e.changes) {
// Charac management stuff
if (c.key?.includes("characteristics")) {
let cKey = c.key.split(".")[2]
model.characteristics[cKey].initial -= Number(c.value)
}
// Move management
if (c.key?.includes("move")) {
model.details.move.value -= Number(c.value)
}
}
}
//DEBUG : console.log("EFFECTS", effects)
return { name, type, data: model, items: globalItemList, effects }
}

View File

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000342

View File

11
packs/aides-de-jeu-fr/LOG Normal file
View File

@ -0,0 +1,11 @@
2023/11/12-16:28:45.276682 7f4c327fc6c0 Delete type=3 #1
2023/11/12-16:30:07.848922 7f4c30ff96c0 Level-0 table #345: started
2023/11/12-16:30:07.848963 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
2023/11/12-16:30:07.855601 7f4c30ff96c0 Delete type=0 #343
2023/11/12-16:30:07.882513 7f4c30ff96c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at '!journal!suuYN87Al1ZZWtQQ' @ 5 : 1
2023/11/12-16:30:07.882529 7f4c30ff96c0 Compacting 1@0 + 0@1 files
2023/11/12-16:30:07.887126 7f4c30ff96c0 Generated table #346@0: 5 keys, 49338 bytes
2023/11/12-16:30:07.887163 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 49338 bytes
2023/11/12-16:30:07.894400 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2023/11/12-16:30:07.894598 7f4c30ff96c0 Delete type=2 #5
2023/11/12-16:30:07.919620 7f4c30ff96c0 Manual compaction at level-0 from '!journal!suuYN87Al1ZZWtQQ' @ 5 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,4 @@
2023/11/12-16:28:45.253740 7f4c32ffd6c0 Log #340: 0 ops saved to Table #341 OK
2023/11/12-16:28:45.253935 7f4c32ffd6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/aides-de-jeu-fr/000340.log: OK
2023/11/12-16:28:45.255237 7f4c32ffd6c0 Table #5: 5 entries OK
2023/11/12-16:28:45.259457 7f4c32ffd6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/aides-de-jeu-fr; recovered 1 files; 49338 bytes. Some data may have been lost. ****

Binary file not shown.

View File

View File

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000343

View File

View File

@ -0,0 +1,11 @@
2023/11/12-16:28:45.304949 7f4c31ffb6c0 Delete type=3 #1
2023/11/12-16:30:07.855778 7f4c30ff96c0 Level-0 table #346: started
2023/11/12-16:30:07.855832 7f4c30ff96c0 Level-0 table #346: 0 bytes OK
2023/11/12-16:30:07.862356 7f4c30ff96c0 Delete type=0 #344
2023/11/12-16:30:07.894853 7f4c30ff96c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at '!items!ylFhk7mGZOnAJTUT' @ 103 : 1
2023/11/12-16:30:07.894875 7f4c30ff96c0 Compacting 1@0 + 0@1 files
2023/11/12-16:30:07.900627 7f4c30ff96c0 Generated table #347@0: 89 keys, 96484 bytes
2023/11/12-16:30:07.900658 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 96484 bytes
2023/11/12-16:30:07.906863 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2023/11/12-16:30:07.907101 7f4c30ff96c0 Delete type=2 #272
2023/11/12-16:30:07.919636 7f4c30ff96c0 Manual compaction at level-0 from '!items!ylFhk7mGZOnAJTUT' @ 103 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,4 @@
2023/11/12-16:28:45.280834 7f4c327fc6c0 Log #341: 0 ops saved to Table #342 OK
2023/11/12-16:28:45.281059 7f4c327fc6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/antidotes-and-remedes/000341.log: OK
2023/11/12-16:28:45.282622 7f4c327fc6c0 Table #272: 89 entries OK
2023/11/12-16:28:45.286508 7f4c327fc6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/antidotes-and-remedes; recovered 1 files; 96484 bytes. Some data may have been lost. ****

Binary file not shown.

View File

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000342

0
packs/apothicarium/LOCK Normal file
View File

11
packs/apothicarium/LOG Normal file
View File

@ -0,0 +1,11 @@
2023/11/12-16:28:45.354171 7f4c32ffd6c0 Delete type=3 #1
2023/11/12-16:30:07.919758 7f4c30ff96c0 Level-0 table #345: started
2023/11/12-16:30:07.919806 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
2023/11/12-16:30:07.926377 7f4c30ff96c0 Delete type=0 #343
2023/11/12-16:30:07.926603 7f4c30ff96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at '!journal!cZtNgayIw2QFhC9u' @ 1 : 1
2023/11/12-16:30:07.926620 7f4c30ff96c0 Compacting 1@0 + 0@1 files
2023/11/12-16:30:07.931147 7f4c30ff96c0 Generated table #346@0: 1 keys, 18667 bytes
2023/11/12-16:30:07.931182 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 18667 bytes
2023/11/12-16:30:07.937420 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2023/11/12-16:30:07.937601 7f4c30ff96c0 Delete type=2 #5
2023/11/12-16:30:07.937809 7f4c30ff96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 1 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,4 @@
2023/11/12-16:28:45.334424 7f4c317fa6c0 Log #340: 0 ops saved to Table #341 OK
2023/11/12-16:28:45.334594 7f4c317fa6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/apothicarium/000340.log: OK
2023/11/12-16:28:45.335422 7f4c317fa6c0 Table #5: 1 entries OK
2023/11/12-16:28:45.338815 7f4c317fa6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/apothicarium; recovered 1 files; 18667 bytes. Some data may have been lost. ****

Binary file not shown.

View File

View File

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000342

0
packs/dons-de-rhya/LOCK Normal file
View File

11
packs/dons-de-rhya/LOG Normal file
View File

@ -0,0 +1,11 @@
2023/11/12-16:28:45.249196 7f4c32ffd6c0 Delete type=3 #1
2023/11/12-16:30:07.842308 7f4c30ff96c0 Level-0 table #345: started
2023/11/12-16:30:07.842386 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
2023/11/12-16:30:07.848757 7f4c30ff96c0 Delete type=0 #343
2023/11/12-16:30:07.869748 7f4c30ff96c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at '!journal!yzw9I0r3hCK7PJnz' @ 23 : 1
2023/11/12-16:30:07.870212 7f4c30ff96c0 Compacting 1@0 + 0@1 files
2023/11/12-16:30:07.875695 7f4c30ff96c0 Generated table #346@0: 23 keys, 53814 bytes
2023/11/12-16:30:07.875744 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 53814 bytes
2023/11/12-16:30:07.882149 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2023/11/12-16:30:07.882321 7f4c30ff96c0 Delete type=2 #5
2023/11/12-16:30:07.919602 7f4c30ff96c0 Manual compaction at level-0 from '!journal!yzw9I0r3hCK7PJnz' @ 23 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,4 @@
2023/11/12-16:28:45.216086 7f4c317fa6c0 Log #340: 0 ops saved to Table #341 OK
2023/11/12-16:28:45.216263 7f4c317fa6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/dons-de-rhya/000340.log: OK
2023/11/12-16:28:45.217493 7f4c317fa6c0 Table #5: 23 entries OK
2023/11/12-16:28:45.221094 7f4c317fa6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/dons-de-rhya; recovered 1 files; 53814 bytes. Some data may have been lost. ****

Binary file not shown.

View File

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.570183 7f5807fff6c0 Recovering log #266
2023/10/01-20:44:40.632484 7f5807fff6c0 Delete type=3 #264
2023/10/01-20:44:40.632822 7f5807fff6c0 Delete type=0 #266
2023/10/01-20:59:02.099129 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.099170 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.106069 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.112689 7f58067fc6c0 Manual compaction at level-0 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.112752 7f58067fc6c0 Manual compaction at level-1 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.727478 7f5807fff6c0 Recovering log #262
2023/10/01-18:43:22.785389 7f5807fff6c0 Delete type=3 #260
2023/10/01-18:43:22.785534 7f5807fff6c0 Delete type=0 #262
2023/10/01-18:47:48.446951 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.447052 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.485936 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.524251 7f58067fc6c0 Manual compaction at level-0 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.524330 7f58067fc6c0 Manual compaction at level-1 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.636180 7f5a9cdff6c0 Recovering log #266
2023/10/01-20:44:40.697598 7f5a9cdff6c0 Delete type=3 #264
2023/10/01-20:44:40.697748 7f5a9cdff6c0 Delete type=0 #266
2023/10/01-20:59:02.084751 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.084857 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.091434 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.112649 7f58067fc6c0 Manual compaction at level-0 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.112721 7f58067fc6c0 Manual compaction at level-1 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.793152 7f5806ffd6c0 Recovering log #262
2023/10/01-18:43:22.857219 7f5806ffd6c0 Delete type=3 #260
2023/10/01-18:43:22.857359 7f5806ffd6c0 Delete type=0 #262
2023/10/01-18:47:48.340716 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.340770 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.376145 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.376399 7f58067fc6c0 Manual compaction at level-0 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.376460 7f58067fc6c0 Manual compaction at level-1 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000342

View File

11
packs/plats-dauberges/LOG Normal file
View File

@ -0,0 +1,11 @@
2023/11/12-16:28:45.211861 7f4c317fa6c0 Delete type=3 #1
2023/11/12-16:30:07.824306 7f4c30ff96c0 Level-0 table #345: started
2023/11/12-16:30:07.824373 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
2023/11/12-16:30:07.830848 7f4c30ff96c0 Delete type=0 #343
2023/11/12-16:30:07.831080 7f4c30ff96c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 227 : 1
2023/11/12-16:30:07.831097 7f4c30ff96c0 Compacting 1@0 + 0@1 files
2023/11/12-16:30:07.835289 7f4c30ff96c0 Generated table #346@0: 234 keys, 19449 bytes
2023/11/12-16:30:07.835330 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 19449 bytes
2023/11/12-16:30:07.841639 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2023/11/12-16:30:07.841825 7f4c30ff96c0 Delete type=2 #5
2023/11/12-16:30:07.842195 7f4c30ff96c0 Manual compaction at level-0 from '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 227 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,4 @@
2023/11/12-16:28:45.038839 7f4c31ffb6c0 Log #340: 0 ops saved to Table #341 OK
2023/11/12-16:28:45.039026 7f4c31ffb6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/plats-dauberges/000340.log: OK
2023/11/12-16:28:45.039821 7f4c31ffb6c0 Table #5: 234 entries OK
2023/11/12-16:28:45.045897 7f4c31ffb6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/plats-dauberges; recovered 1 files; 19449 bytes. Some data may have been lost. ****

Binary file not shown.

View File

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.701549 7f5806ffd6c0 Recovering log #266
2023/10/01-20:44:40.764544 7f5806ffd6c0 Delete type=3 #264
2023/10/01-20:44:40.764684 7f5806ffd6c0 Delete type=0 #266
2023/10/01-20:59:02.106210 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.106249 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.112490 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.112706 7f58067fc6c0 Manual compaction at level-0 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.112767 7f58067fc6c0 Manual compaction at level-1 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.865435 7f58077fe6c0 Recovering log #262
2023/10/01-18:43:22.924289 7f58077fe6c0 Delete type=3 #260
2023/10/01-18:43:22.924448 7f58077fe6c0 Delete type=0 #262
2023/10/01-18:47:48.407565 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.407608 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.446683 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.524233 7f58067fc6c0 Manual compaction at level-0 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.524299 7f58067fc6c0 Manual compaction at level-1 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.768234 7f58077fe6c0 Recovering log #266
2023/10/01-20:44:40.821657 7f58077fe6c0 Delete type=3 #264
2023/10/01-20:44:40.821800 7f58077fe6c0 Delete type=0 #266
2023/10/01-20:59:02.112885 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.112924 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.119967 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.147587 7f58067fc6c0 Manual compaction at level-0 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.147752 7f58067fc6c0 Manual compaction at level-1 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.932395 7f5a9cdff6c0 Recovering log #262
2023/10/01-18:43:22.998115 7f5a9cdff6c0 Delete type=3 #260
2023/10/01-18:43:22.998245 7f5a9cdff6c0 Delete type=0 #262
2023/10/01-18:47:48.376668 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.376711 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.407379 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.524212 7f58067fc6c0 Manual compaction at level-0 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.524283 7f58067fc6c0 Manual compaction at level-1 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/sort-fr/000005.ldb Normal file

Binary file not shown.

0
packs/sort-fr/000274.log Normal file
View File

1
packs/sort-fr/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000272

0
packs/sort-fr/LOCK Normal file
View File

8
packs/sort-fr/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/10/01-20:59:53.930690 7f5a9cdff6c0 Recovering log #270
2023/10/01-20:59:53.941737 7f5a9cdff6c0 Delete type=3 #268
2023/10/01-20:59:53.942093 7f5a9cdff6c0 Delete type=0 #270
2023/10/01-21:01:43.214418 7f58067fc6c0 Level-0 table #275: started
2023/10/01-21:01:43.214458 7f58067fc6c0 Level-0 table #275: 0 bytes OK
2023/10/01-21:01:43.221508 7f58067fc6c0 Delete type=0 #273
2023/10/01-21:01:43.236081 7f58067fc6c0 Manual compaction at level-0 from '!items!2NuLGbLlyHPck2Je' @ 72057594037927935 : 1 .. '!items.effects!VexogjUDXdGAHWmN.kNTwaivtonPJpdY6' @ 0 : 0; will stop at (end)
2023/10/01-21:01:43.236146 7f58067fc6c0 Manual compaction at level-1 from '!items!2NuLGbLlyHPck2Je' @ 72057594037927935 : 1 .. '!items.effects!VexogjUDXdGAHWmN.kNTwaivtonPJpdY6' @ 0 : 0; will stop at (end)

8
packs/sort-fr/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.439485 7f58077fe6c0 Recovering log #266
2023/10/01-20:44:40.500106 7f58077fe6c0 Delete type=3 #264
2023/10/01-20:44:40.500261 7f58077fe6c0 Delete type=0 #266
2023/10/01-20:59:02.063156 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.063229 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.069747 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.084232 7f58067fc6c0 Manual compaction at level-0 from '!items!2NuLGbLlyHPck2Je' @ 72057594037927935 : 1 .. '!items.effects!VexogjUDXdGAHWmN.kNTwaivtonPJpdY6' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.084332 7f58067fc6c0 Manual compaction at level-1 from '!items!2NuLGbLlyHPck2Je' @ 72057594037927935 : 1 .. '!items.effects!VexogjUDXdGAHWmN.kNTwaivtonPJpdY6' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000342

View File

View File

@ -0,0 +1,11 @@
2023/11/12-16:28:45.330471 7f4c317fa6c0 Delete type=3 #1
2023/11/12-16:30:07.862607 7f4c30ff96c0 Level-0 table #345: started
2023/11/12-16:30:07.862667 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
2023/11/12-16:30:07.869562 7f4c30ff96c0 Delete type=0 #343
2023/11/12-16:30:07.907474 7f4c30ff96c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at '!journal!yfZxl4I7XAuUF6r3' @ 12 : 1
2023/11/12-16:30:07.907497 7f4c30ff96c0 Compacting 1@0 + 0@1 files
2023/11/12-16:30:07.913133 7f4c30ff96c0 Generated table #346@0: 12 keys, 64134 bytes
2023/11/12-16:30:07.913182 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 64134 bytes
2023/11/12-16:30:07.919296 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2023/11/12-16:30:07.919431 7f4c30ff96c0 Delete type=2 #5
2023/11/12-16:30:07.919655 7f4c30ff96c0 Manual compaction at level-0 from '!journal!yfZxl4I7XAuUF6r3' @ 12 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,4 @@
2023/11/12-16:28:45.310132 7f4c31ffb6c0 Log #340: 0 ops saved to Table #341 OK
2023/11/12-16:28:45.310346 7f4c31ffb6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/tables-des-traductions/000340.log: OK
2023/11/12-16:28:45.311453 7f4c31ffb6c0 Table #5: 12 entries OK
2023/11/12-16:28:45.314949 7f4c31ffb6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/tables-des-traductions; recovered 1 files; 64134 bytes. Some data may have been lost. ****

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More