New fixes for v7.0.0

This commit is contained in:
2023-09-01 13:30:43 +02:00
parent 4120946ef3
commit 07419d8685
12 changed files with 890 additions and 84 deletions

View File

@ -149,30 +149,34 @@ Hooks.once('init', () => {
Babele.get().registerConverters({
"career_skills": (skills_list) => {
let compendiumName = 'wfrp4e-core.skills' // Per default
if (game.system.version.match("7.")) {
compendiumName = 'wfrp4e-core.items'
}
//console.log( "Thru here ...", compendium, skills_list);
if (skills_list) {
var i;
var len = skills_list.length;
var re = /(.*)\((.*)\)/i;
let i;
let len = skills_list.length;
let re = /(.*)\((.*)\)/i;
for (i = 0; i < len; i++) {
skills_list[i] = skills_list[i].trim();
var transl = game.babele.translate('wfrp4e-core.skills', { name: skills_list[i] }, true).name;
let transl = game.babele.translate(compendiumName, { name: skills_list[i] }, true).name;
if (!transl) transl = skills_list[i]
//console.log("List ...", skills_list[i]);
if (transl == skills_list[i]) {
var res = re.exec(skills_list[i]);
let res = re.exec(skills_list[i]);
if (res) {
//console.log("Matched/split:", res[1], res[2]);
var subword = game.i18n.localize(res[2].trim());
var s1 = res[1].trim() + " ()";
var translw = game.babele.translate('wfrp4e-core.skills', { name: s1 }, true).name;
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim() + " ()";
let translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
if (translw != s1) {
var res2 = re.exec(translw);
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
} else {
s1 = res[1].trim() + " ( )";
translw = game.babele.translate('wfrp4e-core.skills', { name: s1 }, true).name;
var res2 = re.exec(translw);
translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
}
}
@ -195,9 +199,13 @@ Hooks.once('init', () => {
}
// Auto patch
if (results[0].text.includes("wfrp4e-core.career-descriptions") ) {
results[0].text = "wfrp4e-core.journal-entries"
if (game.system.version.match("7.")) {
results[0].text = "wfrp4e-core.journals"
} else {
results[0].text = "wfrp4e-core.journal-entries"
}
}
if (results[0].text.includes("wfrp4e-core.journal-entries")) {
if (results[0].text.includes("wfrp4e-core.journal")) {
for (let data of results) {
let career = data.text.match(/{(.*)}/)
//console.log(">>>>>", career)
@ -216,38 +224,45 @@ Hooks.once('init', () => {
"npc_details": (details) => {
//console.log("DETAILS: ", details);
let newDetails = duplicate(details);
if (details.species && details.species.value)
if (details.species?.value)
newDetails.species.value = game.i18n.localize(details.species.value);
if (details.gender && details.gender.value)
if (details.gender?.value)
newDetails.gender.value = game.i18n.localize(details.gender.value);
if (details.class && details.class.value)
if (details.class?.value)
newDetails.class.value = game.i18n.localize(details.class.value);
return newDetails;
},
"career_talents": (talents_list) => {
var compendium = game.packs.find(p => p.collection === 'wfrp4e-core.talents');
var i;
let compendiumName = 'wfrp4e-core.talents' // Per default
if (game.system.version.match("7.")) {
compendiumName = 'wfrp4e-core.items'
}
let i;
if (talents_list) {
var len = talents_list.length;
var re = /(.*)\((.*)\)/i;
let len = talents_list.length;
let re = /(.*)\((.*)\)/i;
for (i = 0; i < len; i++) {
var transl = game.babele.translate('wfrp4e-core.talents', { name: talents_list[i] }, true).name;
let transl = game.babele.translate(compendiumName, { name: talents_list[i] }, true).name;
if (!transl) transl = talents_list[i]
if (transl == talents_list[i]) {
var res = re.exec(talents_list[i]);
let res = re.exec(talents_list[i]);
if (res) {
//console.log("Matched/split:", res[1], res[2]);
var subword = game.i18n.localize(res[2].trim());
var s1 = res[1].trim(); // No () in talents table
var translw = game.babele.translate('wfrp4e-core.talents', { name: s1 }, true).name;
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim(); // No () in talents table
let translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
if (translw != s1) {
transl = translw + " (" + subword + ")";
} else {
s1 = res[1].trim() + " ( )";
translw = game.babele.translate('wfrp4e-core.talents', { name: s1 }, true).name;
var res2 = re.exec(translw);
transl = res2[1] + " (" + subword + ")";
translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
let res2 = re.exec(translw);
if (res2) {
transl = res2[1] + " (" + subword + ")";
} else {
transl = translw
}
}
}
}
@ -257,10 +272,10 @@ Hooks.once('init', () => {
return talents_list;
},
"npc_characteristics": (chars) => { // Auto-convert char names in the sheet
for (var key in chars) {
var char = chars[key];
for (let key in chars) {
let char = chars[key];
//console.log("Was here !", key, char );
var abrev = char["abrev"];
let abrev = char["abrev"];
let toTransl = "CHAR." + abrev;
if (game.i18n.localize(toTransl) != toTransl) { // Manages unknown language
char["label"] = game.i18n.localize("CHAR." + abrev);
@ -275,9 +290,9 @@ Hooks.once('init', () => {
return beast_traits
}
for (let trait_en of beast_traits) {
var special = "";
var nbt = "";
var name_en = trait_en.name.trim(); // strip \r in some traits name
let special = "";
let nbt = "";
let name_en = trait_en.name.trim(); // strip \r in some traits name
if (!trait_en.name || trait_en.name.length == 0) {
console.log("Wrong item name found!!!!")
continue
@ -286,41 +301,49 @@ Hooks.once('init', () => {
if (trait_en.type == "trait") {
//console.log("Trait translation", compmod, trait_en)
if (name_en.includes("Tentacles")) { // Process specific Tentacles case
var re = /(.d*)x Tentacles/i;
var res = re.exec(name_en);
let re = /(.d*)x Tentacles/i;
let res = re.exec(name_en);
if (res && res[1])
nbt = res[1] + "x ";
name_en = "Tentacles";
} else if (name_en.includes("(") && name_en.includes(")")) { // Then process specific traits name with (xxxx) inside
var re = /(.*) \((.*)\)/i;
var res = re.exec(name_en);
let re = /(.*) \((.*)\)/i;
let res = re.exec(name_en);
name_en = res[1]; // Get the root traits name
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
}
var trait_fr = game.babele.translate('wfrp4e-core.traits', { name: name_en }, true);
let compendiumName = 'wfrp4e-core.traits' // Per default
if (game.system.version.match("7.")) {
compendiumName = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumName, { name: name_en }, true);
//console.log(">>>>> Trait ?", name_en, nbt, trait_fr, trait_fr.name, special);
trait_fr.name = trait_fr.name || trait_en.name
trait_en.name = nbt + trait_fr.name + special;
if (trait_fr.system && trait_fr.system.description && trait_fr.system.description.value) {
if (trait_fr.system?.description?.value) {
trait_en.system.description.value = trait_fr.system.description.value;
} else if (game.modules.get('wfrp4e-eis')) { // No description in the FR compendium -> test other compendium if presenr
trait_fr = game.babele.translate('wfrp4e-eis.eisitems', { name: name_en }, true);
trait_fr = game.babele.translate('wfrp4e-eis.items', { name: name_en }, true);
trait_en.name = nbt + trait_fr.name + special;
if (trait_fr.system && trait_fr.system.description && trait_fr.system.description.value)
if (trait_fr.system?.description?.value)
trait_en.system.description.value = trait_fr.system.description.value;
}
if (trait_en.system && trait_en.system.specification && isNaN(trait_en.system.specification.value)) { // This is a string, so translate it
if (trait_en.system?.specification && isNaN(trait_en.system.specification.value)) { // This is a string, so translate it
//console.log("Translating : ", trait_en.system.specification.value);
trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim());
}
} else if (trait_en.type == "skill") {
if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside
var re = /(.*) +\((.*)\)/i;
var res = re.exec(name_en);
let re = /(.*) +\((.*)\)/i;
let res = re.exec(name_en);
name_en = res[1].trim(); // Get the root skill name
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
}
var trait_fr = game.babele.translate('wfrp4e-core.skills', { name: name_en }, true);
let compendiumSkills = 'wfrp4e-core.skills' // Per default
if (game.system.version.match("7.")) {
compendiumSkills = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumSkills, { name: name_en }, true);
//console.log(">>>>> Skill ?", name_en, special, trait_fr.name, trait_fr);
trait_fr.name = trait_fr.name || name_en
if (trait_fr.name != name_en) { // Translation OK
@ -331,15 +354,23 @@ Hooks.once('init', () => {
}
} else if (trait_en.type == "prayer") {
var trait_fr = game.babele.translate('wfrp4e-core.prayers', { name: name_en }, true);
let compendiumPrayers = 'wfrp4e-core.prayers' // Per default
if (game.system.version.match("7.")) {
compendiumPrayers = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumPrayers, { name: name_en }, true);
//console.log(">>>>> Prayer ?", name_en, special, trait_fr.name );
trait_fr.name = trait_fr.name || name_en
trait_en.name = trait_fr.name + special;
if (trait_fr.system && trait_fr.system.description && trait_fr.system.description.value)
if (trait_fr.system?.description?.value)
trait_en.system.description.value = trait_fr.system.description.value;
} else if (trait_en.type == "spell") {
var trait_fr = game.babele.translate('wfrp4e-core.spells', { name: name_en }, true)
let compendiumSpells = 'wfrp4e-core.spells' // Per default
if (game.system.version.match("7.")) {
compendiumSpells = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumSpells, { name: name_en }, true)
if (trait_fr.name == name_en) { // If no translation, test eisspells
trait_fr = game.babele.translate('wfrp4e-eis.eisspells', { name: name_en }, true);
}
@ -349,16 +380,21 @@ Hooks.once('init', () => {
trait_fr.name = trait_fr.name || name_en
//console.log(">>>>> Spell ?", name_en, special, trait_fr.name );
trait_en.name = trait_fr.name + special;
if (trait_fr.system && trait_fr.system.description && trait_fr.system.description.value)
if (trait_fr.system?.description?.value)
trait_en.system.description.value = trait_fr.system.description.value;
} else if (trait_en.type == "talent") {
} else if (trait_en.type == "talent") {
if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside
var re = /(.*) +\((.*)\)/i;
var res = re.exec(name_en);
let re = /(.*) +\((.*)\)/i;
let res = re.exec(name_en);
name_en = res[1].trim(); // Get the root talent name, no parenthesis this time...
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
}
var trait_fr = game.babele.translate('wfrp4e-core.talents', { name: name_en }, true)
let compendiumTalents = 'wfrp4e-core.talents' // Per default
if (game.system.version.match("7.")) {
compendiumTalents = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumTalents, { name: name_en }, true)
trait_fr.name = trait_fr.name || name_en // Security since babele v10
//console.log(">>>>> Talent ?", trait_fr, name_en, special, trait_fr.name);
if (trait_fr.name != "Sprinter" && trait_fr.name == name_en) { // If no translation, test ugtalents
@ -372,13 +408,21 @@ Hooks.once('init', () => {
}
}
} else if (trait_en.type == "career") {
var career_fr = game.babele.translate('wfrp4e-core.careers', trait_en, true);
let compendiumCareers = 'wfrp4e-core.careers' // Per default
if (game.system.version.match("7.")) {
compendiumCareers = 'wfrp4e-core.items'
}
let career_fr = game.babele.translate(compendiumCareers, trait_en, true);
career_fr.name = career_fr.name || trait_en.name
//console.log(">>>>> Career ?", career_fr.name );
trait_en.system = duplicate(career_fr.system);
} else if (trait_en.type == "trapping" || trait_en.type == "weapon" || trait_en.type == "armour" || trait_en.type == "container" || trait_en.type == "money") {
var trapping_fr = game.babele.translate('wfrp4e-core.trappings', trait_en, true);
let compendiumTrappings = 'wfrp4e-core.trappings' // Per default
if (game.system.version.match("7.")) {
compendiumTrappings = 'wfrp4e-core.items'
}
let trapping_fr = game.babele.translate(compendiumTrappings, trait_en, true);
//console.log(">>>>> Trapping ?", name_en, trapping_fr.name);
trapping_fr.name = trapping_fr.name || trait_en.name
if (trapping_fr.system) {
@ -434,9 +478,13 @@ Hooks.once('init', () => {
}
//console.log("Carre groupe : ", value )
// Per default
var compendium = game.packs.find(p => p.collection === 'wfrp4e-core.careers');
let compendiumCareers = 'wfrp4e-core.careers' // Per default
if (game.system.version.match("7.")) {
compendiumCareers = 'wfrp4e-core.items'
}
let compendium = game.packs.find(p => p.collection === compendiumCareers);
if (compendium) {
let newName = game.babele.translate('wfrp4e-core.careers', { name: value }).name
let newName = game.babele.translate(compendiumCareers, { name: value }).name
if (!newName) newName = value
return newName
} else {
@ -493,8 +541,8 @@ Hooks.once('init', () => {
let label = effect.label;
let gravity = "";
if (label.includes("(") && label.includes(")")) { // Then process specific skills name with (xxxx) inside
var re = /(.*) +\((.*)\)/i;
var res = re.exec(label);
let re = /(.*) +\((.*)\)/i;
let res = re.exec(label);
label = res[1].trim(); // Get the gravity
gravity = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
}