Better spells handling

This commit is contained in:
LeRatierBretonnien 2020-04-10 15:11:26 +02:00
parent 9bc414c8a2
commit 3e242bf0a4
4 changed files with 91 additions and 12 deletions

View File

@ -11,7 +11,7 @@ Hooks.once('init', () => {
Babele.get().registerConverters({
"career_skills": (skills_list) => {
console.log( game.i18n.localize( "Any" ) );
console.log( "Thru here ..." );
var compendium = game.packs.find(p => p.collection === 'wfrp4e.skills');
var i;
var len = skills_list.length;
@ -24,8 +24,8 @@ Hooks.once('init', () => {
//console.log("Matched/split:", res[1], res[2]);
var subword = game.i18n.localize(res[2].trim() );
var s1 = res[1].trim() + " ()";
var translw = compendium.i18nName( s1 );
if (translw != transl) {
var translw = compendium.i18nName( s1 );
if (translw != s1) {
var res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
} else {
@ -54,7 +54,7 @@ Hooks.once('init', () => {
var subword = game.i18n.localize(res[2].trim() );
var s1 = res[1].trim(); // No () in talents table
var translw = compendium.i18nName( s1 );
if (translw != transl) {
if (translw != s1) {
transl = translw + "(" + subword + ")";
} else {
s1 = res[1].trim() + " ( )";
@ -72,7 +72,7 @@ Hooks.once('init', () => {
"generic_localization": (value) => {
if ( value )
return game.i18n.localize( value.trim() );
},
},
"trapping_qualities_flaws": (value) => {
if ( value ) {
var list = value.split( "," );
@ -94,6 +94,45 @@ Hooks.once('init', () => {
"career_careergroup": (value) => {
var compendium = game.packs.find(p => p.collection === 'wfrp4e.careers');
return compendium.i18nName( value );
},
// Auto-translate duration
"spells_duration_range_target_damage": (value) => {
--console.log("Spell duration/range/damage/target :", value);
if ( value == "" ) return ""; // Hop !
if ( value == "Touch" ) return "Contact"; // Hop !
if ( value == "You" ) return "Vous"; // Hop !
if ( value == "Instant" ) return "Instantané"; // Hop !
var translw = value;
var re = /(.*) Bonus (\w*)/i;
var res = re.exec( value );
var unit = "";
if ( res ) { // Test "<charac> Bonus <unit>" pattern
if ( res[1] ) { // We have char name, then convert it
translw = "Bonus de " + game.i18n.localize( res[1].trim() );
}
unit = res[2];
} else {
re = /(\d+) (\w+)/i;
res = re.exec( value );
if (res) { // Test : "<number> <unit>" pattern
translw = res[1];
unit = res[2];
} else { // Test
re = /(\w+) (\w+)/i;
res = re.exec( value );
if (res) { // Test : "<charac> <unit>" pattern
translw = game.i18n.localize( res[1].trim() );
unit = res[2];
}
}
}
if ( unit == "hour") unit = "heure";
if ( unit == "hours") unit = "heures";
if ( unit == "days") unit = "jours";
if ( unit == "yard") unit = "mètre";
if ( unit == "yards") unit = "mètres";
translw += " " + unit;
return translw;
}
});
}

View File

@ -757,4 +757,4 @@
"description": "<p>Beaucoup de gens au Reikland embrassent une profession ; même les aventuriers ont souvent une Carrière plus fiable ou plus respectable sur laquelle compter entre deux épisodes palpitants. La Compétence Métier représente votre capacité à créer quelque chose ou à fournir un service, ainsi que votre connaissance du savoir essentiel entourant votre profession.</p>\n<p>&nbsp;</p>\n<p>Posséder la Compétence est suffisant pour effectuer automatiquement les tâches associées à votre profession, en partant du principe que vous possédez les ressources et des outils adaptés. Vous avez besoin d'effectuer un Test de Métier uniquement si vous cherchez à créer quelque chose rapidement, que les conditions sont défavorables ou que vous cherchez à inventer ou créer un objet de grande qualité.</p>\n<p>&nbsp;</p>\n<p>Les Tests de Métier de ce type sont souvent des Tests étendus, dont le DR et le temps nécessaires dépendent de la portée ou de l'ampleur de ce qui est produit ; un repas rapide avec Métier (Cuisinier) pour impressionner un seigneur local prendra bien moins de temps que la construction d'un navire de guerre avec Métier (Charpentier de marine).</p>\n<p>&nbsp;</p>\n<p>Vous pouvez aussi effectuer un Test de Métier comme une Compétence Savoir pour déterminer une information importante concernant la profession en question. Dans de telles circonstances, le MJ peut préférer utiliser l'Int plutôt que la Dex comme Caractéristique de base, bien que cela soit souvent ignoré pour simplifer.</p>\n<p>&nbsp;</p>\n<p>Bien que beaucoup de Compétences Métier aient peu d'utilité en combat, il y a autant de Compétences Métier que de professions, et certaines peuvent être utilisées en fonction des circonstances. Par exemple, réussir un Test de Métier (Apothicaire) peut être utile si vous combattez dans une échoppe d'Apothicaire, car vous identifiez des substances âcres à jeter sur vos ennemis.</p>\n<p>&nbsp;</p>\n<p>La Compétence Métier est aussi utilisée pour effectuer une Activité Artisanat (voir page 196).</p>"
}
]
}
}

View File

@ -1,6 +1,24 @@
{
"label": "Spells",
"entries": [
"label": "Sorts",
"mapping": {
"sduration": {
"path": "data.duration.value",
"converter": "spells_duration_range_target_damage"
},
"srange": {
"path": "data.range.value",
"converter": "spells_duration_range_target_damage"
},
"starget": {
"path": "data.target.value",
"converter": "spells_duration_range_target_damage"
},
"sdamage": {
"path": "data.damage.value",
"converter": "spells_duration_range_target_damage"
}
},
"entries": [
{
"id": "Acquiescence",
"name": "Consentement",

30
fr.json
View File

@ -651,6 +651,26 @@
"Engineering": "Ingénierie",
"Entangling": "Entraves",
"Sling": "Fronde",
"Petty": "Mineure",
"Beasts": "Bêtes",
"Death": "Mort",
"Fire": "Feu",
"Heavens": "Cieux",
"Metal": "Métal",
"Life": "Vie",
"Light": "Lumière",
"Shadow": "Ombres",
"Hedgecraft": "Sauvage",
"Witchcraft": "Sorcellerie",
"Daemonology": "Démonologie",
"Necromancy": "Nécromancie",
"Nurgle": "Nurgle",
"Slaanesh": "Slaanesh",
"Tzeentch": "Tzeentch",
"Cast Skill": "Compétence d'incantation",
"Language" : "Langue",
"Magick" : "Magick",
"AP": "PA",
"yards": "mètres",
@ -736,7 +756,7 @@
"TIER.Brass" : "Bronze",
"NAME.Pray" : "Prière",
"NAME.Language" : "Language",
"NAME.Language" : "Langue",
"SPEC.Magick" : "Magick",
"NAME.Channelling" : "Focalisation",
"NAME.Melee" : "Corps à Corps",
@ -844,7 +864,8 @@
"ITEM.NoSpec" : "Pas de spécialisation",
"Instant" : "Immédiat",
"Casting Number": "Niveau d'Incantation",
"ClassTrappings.Academics": "Vêtements, Dague, Bourse, Besace contenant un nécessaire d'écriture et 1d10 feuilles de parchemin",
"ClassTrappings.Burghers": "Cape, Vêtements, Dague, Chapeau, Bourse, Besace contenant 1 repas",
"ClassTrappings.Courtiers": "Vêtements de qualité, Dague, Bourse contenant une pince à épiler, Cures-oreilles et un peigne",
@ -853,8 +874,9 @@
"ClassTrappings.Riverfolk": "Cape, Vêtements, Dague, Bourse, Besace contenant 1 flasque d'alcool",
"ClassTrappings.Rogues": "Vêtements, Dague, Bourse, Besace contenant 2 bougies, 1d10 allumettes et une capuche ou un masque",
"ClassTrappings.Warriors": "Vêtements, Arme à 1 main, Dague, Bourse",
"NAME.Stealth" : "Discrétion",
"AP" : "PA",
"Scatter" : "Dispersion"
"Scatter" : "Dispersion"
}