Compare commits
4 Commits
foundryvtt
...
v10
| Author | SHA1 | Date | |
|---|---|---|---|
| 07928acb48 | |||
| 9860535f5f | |||
| fc560ddee7 | |||
| 47454b30f1 |
@@ -2841,6 +2841,12 @@
|
||||
"name": "Combattant 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 d’un 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": "In–fighter",
|
||||
"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> </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> Normal × 20</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>4</p>\n</td>\n<td>\n<p> Normal × 50</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>5</p>\n</td>\n<td>\n<p> Normal × 100</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>6</p>\n</td>\n<td>\n<p> Normal × 200</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>7</p>\n</td>\n<td>\n<p> Normal × 500</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>8</p>\n</td>\n<td>\n<p> Normal × 1000</p>\n</td>\n</tr>\n<tr>\n<td>\n<p>9</p>\n</td>\n<td>\n<p> 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 l’abbesse Brigitte van der Hoogenband est pris d’assaut par les peaux-vertes, et les choses vont mal. De fait, elle décide de renforcer l’esprit 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é qu’elle possède un Bonus de Sociabilité de 6, et qu’elle 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 d’encouragement « MAINTENEZ LES RANGS ! »</em>",
|
||||
"id": "WCXnFSV4WOSmzzc4",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
5
fr.json
5
fr.json
@@ -433,6 +433,7 @@
|
||||
"ITEM.Roles":"Roles",
|
||||
"ITEM.VitalRoles":"Roles vitaux",
|
||||
"ITEM.LearningXP":"XP d'Apprentissage",
|
||||
"ITEM.Custom":"Personnalisé",
|
||||
|
||||
"TOKEN.MOVEMENT.Status.immobile":"Immobile",
|
||||
"TOKEN.MOVEMENT.Status.restricted":"Restreint",
|
||||
@@ -1024,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.ChoosePassenger":"Choisissez un passager",
|
||||
"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.DamageError" : "Erreur de calcul des dégâts:",
|
||||
@@ -1189,6 +1191,7 @@
|
||||
"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.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.SpeciesTalents" : "Impossible d'ajouter des talents pour les races",
|
||||
@@ -2704,6 +2707,7 @@
|
||||
"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":{
|
||||
"TransferType":{
|
||||
@@ -2724,5 +2728,6 @@
|
||||
"SHEET.ExperienceLog":"Journal d'Expérince",
|
||||
"SHEET.Attacker":"Attaquant",
|
||||
"SHEET.Randomize":"Aléatoire",
|
||||
"SHEET.RequiredTrappingsError":"Impossible de lancer les revenus sans avoir tous les équipements requis dans cette carrière !",
|
||||
"Sheet.RollIncome":"Revenu"
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
}
|
||||
],
|
||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
||||
"version": "9.2.1",
|
||||
"version": "9.3.2",
|
||||
"esmodules": [
|
||||
"modules/babele-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",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-9-2-1.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",
|
||||
"compatibility": {
|
||||
"minimum": "13",
|
||||
|
||||
@@ -2,29 +2,37 @@
|
||||
export class WH4FRPatchConfig {
|
||||
|
||||
/************************************************************************************/
|
||||
static translateSkillList( skillList) {
|
||||
static translateSkillList(skillList) {
|
||||
|
||||
let compendiumName = 'wfrp4e-core.items'
|
||||
|
||||
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 newName = compName;
|
||||
let baseName = compName
|
||||
if ( compName.includes("(") && compName.includes(")") ) { // Then process specific skills name with (xxxx) inside
|
||||
let re = /(.*) +\((.*)\)/i;
|
||||
let res = re.exec( compName );
|
||||
if (compName.includes("(") && compName.includes(")")) { // Then process specific skills name with (xxxx) inside
|
||||
let re = /(.*) +\((.*)\)/i;
|
||||
let res = re.exec(compName);
|
||||
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
|
||||
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
|
||||
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);
|
||||
@@ -33,27 +41,27 @@ export class WH4FRPatchConfig {
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
static translateTalentList( talentList) {
|
||||
static translateTalentList(talentList) {
|
||||
|
||||
let compendiumName = 'wfrp4e-core.items'
|
||||
|
||||
let newList = [];
|
||||
for( let talentLine of talentList) {
|
||||
for (let talentLine of talentList) {
|
||||
let special = "";
|
||||
let newName = talentLine;
|
||||
if ( isNaN(talentLine) ) {
|
||||
if (isNaN(talentLine)) {
|
||||
let subList = talentLine.split(',');
|
||||
let newSubList = [];
|
||||
for (let talentName of subList ) {
|
||||
for (let talentName of subList) {
|
||||
talentName = talentName.trim();
|
||||
let newName2 = talentName;
|
||||
if ( talentName.includes("(") && talentName.includes(")") ) { // Then process specific skills name with (xxxx) inside
|
||||
let re = /(.*) +\((.*)\)/i;
|
||||
let res = re.exec( talentName );
|
||||
if (talentName.includes("(") && talentName.includes(")")) { // Then process specific skills name with (xxxx) inside
|
||||
let re = /(.*) +\((.*)\)/i;
|
||||
let res = re.exec(talentName);
|
||||
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
|
||||
newName2 = talentNameFR.name + special;
|
||||
}
|
||||
@@ -67,15 +75,15 @@ export class WH4FRPatchConfig {
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
static patch_subspecies( ) {
|
||||
for ( let speciesName in game.wfrp4e.config.subspecies) {
|
||||
static patch_subspecies() {
|
||||
for (let speciesName in game.wfrp4e.config.subspecies) {
|
||||
let subspeciesList = game.wfrp4e.config.subspecies[speciesName];
|
||||
for ( let subspeciesName in subspeciesList) {
|
||||
for (let subspeciesName in subspeciesList) {
|
||||
let subspecies = subspeciesList[subspeciesName];
|
||||
if ( subspecies.skills) {
|
||||
if (subspecies.skills) {
|
||||
subspecies.skills = this.translateSkillList(subspecies.skills);
|
||||
}
|
||||
if ( subspecies.talents) {
|
||||
if (subspecies.talents) {
|
||||
subspecies.talents = this.translateTalentList(subspecies.talents);
|
||||
}
|
||||
}
|
||||
@@ -83,20 +91,20 @@ export class WH4FRPatchConfig {
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
static patch_species_skills( ) {
|
||||
static patch_species_skills() {
|
||||
console.log("Patching species skills....");
|
||||
for (let speciesName in game.wfrp4e.config.speciesSkills) {
|
||||
let speciesComp = game.wfrp4e.config.speciesSkills[speciesName];
|
||||
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() {
|
||||
for (let speciesName in game.wfrp4e.config.speciesTalents) {
|
||||
let speciesTalents = game.wfrp4e.config.speciesTalents[speciesName];
|
||||
game.wfrp4e.config.speciesTalents[speciesName] = this.translateTalentList( speciesTalents);
|
||||
game.wfrp4e.config.speciesTalents[speciesName] = this.translateTalentList(speciesTalents);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,16 +112,16 @@ export class WH4FRPatchConfig {
|
||||
static patch_career() {
|
||||
let compendiumName = 'wfrp4e-core.items'
|
||||
|
||||
if ( game.wfrp4e.tables.career) {
|
||||
for( let row of game.wfrp4e.tables.career.rows) {
|
||||
for ( let key in row) {
|
||||
if (game.wfrp4e.tables.career) {
|
||||
for (let row of game.wfrp4e.tables.career.rows) {
|
||||
for (let key in row) {
|
||||
if (key != "range") {
|
||||
if ( row[key].name == 'Slayer' ) {
|
||||
if (row[key].name == 'Slayer') {
|
||||
row[key].name = "Tueur Nains";
|
||||
} else if ( row[key].name == 'Duelist' ) {
|
||||
} else if (row[key].name == 'Duelist') {
|
||||
row[key].name = "Duelliste";
|
||||
} 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;
|
||||
}
|
||||
}
|
||||
@@ -130,7 +138,7 @@ export class WH4FRPatchConfig {
|
||||
for (let result of newResults) {
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -146,7 +154,7 @@ export class WH4FRPatchConfig {
|
||||
}
|
||||
|
||||
// Detect and patch as necessary
|
||||
if (game.wfrp4e.config?.talentBonuses ) {
|
||||
if (game.wfrp4e.config?.talentBonuses) {
|
||||
|
||||
this.fixSpeciesTable() // Force 'name' field replacement
|
||||
|
||||
@@ -188,22 +196,22 @@ export class WH4FRPatchConfig {
|
||||
|
||||
if (game.wfrp4e.config.characteristicsBonus) {
|
||||
game.wfrp4e.config.characteristicsBonus =
|
||||
{
|
||||
"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é"
|
||||
{
|
||||
"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)) {
|
||||
for (const c of Object.keys(game.wfrp4e.config.classTrappings)) {
|
||||
game.wfrp4e.config.classTrappings[game.i18n.localize(c)] = game.wfrp4e.config.classTrappings[c];
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user