2020-11-05 23:14:01 +01:00
/************************************************************************************/
2020-11-06 00:10:51 +01:00
//import WFRP_Tables from "/systems/wfrp4e/modules/system/tables-wfrp4e.js";
//import WFRP4E from "/systems/wfrp4e/modules/system/config-wfrp4e.js";
2020-04-26 18:38:43 +02:00
2020-05-31 10:10:58 +02:00
/************************************************************************************/
const _patch _eis = ( ) => {
2020-07-03 11:38:38 +02:00
if ( WFRP4E && WFRP4E . symptoms && WFRP4E . symptoms [ "delirium" ] == undefined ) {
WFRP4E . symptoms [ "delirium" ] = "Délire" ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . symptomDescriptions [ "delirium" ] = "Votre sensibilité va et vient, avec des moments de clarté remplaçés subitement Your sensibility comes and goes, with moments of clarity replaced suddenly par des accès de délire, des hallucinations et de la terreur. Faites un <b>Test de Force Mentale Intermédiaire (+0)</b> chaque heure, et consultez la table <b><a class='table-click' data-table='delirium'>Délires</a></b> table." ;
// '<br>' creates a new line
// This is how you can roll from chat cards. Wrap 'd10' in <b><a class = 'chat-roll'>___</a></b>
WFRP4E . symptomTreatment [ "delirium" ] = "Certaines autorités traitent le délire comme un fièvre, avec les mêmes prescriptions. Les médicaments coutent quelques sous à quelques pistoles, en seulement 10% sont efficaces.<br><br>Avec des soins corrects, un test de <b>Guérison Intermédiaire (0)</b> arrêtes les hallucinations pour <b><a class = 'chat-roll'>1d10</a></b> heures.<br><br>Il est aussi courant de soigner les patients délirants avec des drogues tranquillisantes, comme la Fleur de Lune ou même de la Racine de Mandragore, pour garder les patients calmes pendant la crise, les envoyant dans un sommeil agité jusqu'à ce qu'il erécupèrent ou meurent." ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . symptoms [ "swelling" ] = "Gonflement" ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . symptomDescriptions [ "swelling" ] = "Une partie du corps gonfle jusqu'à plusieurs fois sa taille normale, devenant rouge vif ou violette et devenant presque inutilisable. La partie du corps affectée correspond normalement à une plaie ou une morsure provoquant le gonflement, ou l'endroit où une maladie ou une infection est entrée dans le corps. <br> <br> <b> Tête </b>: Les yeux et la langue enflent, les joues deviennent livides, la mâchoire est toujours ouverte. Il est impossible de manger, mais des liquides légers peuvent être sirotés en petites quantités. Tous les tests nécessitant la parole sont plus difficiles de 3 niveaux. <br> <b> Bras </b>: le bras et la main gonflent, les articulations des épaules et du coude ne peuvent plus bouger et la main devient inutile. Pour la durée du gonflement, le bras compte comme Amputé. <br> <b> Corps </b>: Le corps entier gonfle jusqu'à ce que la victime ne puisse plus porter de vêtements. Tous les tests impliquant le mouvement deviennent difficiles de 3 niveaux. <br> <b> Jambe </b>: La jambe gonfle de manière grotesque, devenant aussi large que la partie la plus large de la cuisse sur toute sa longueur. Le pied est presque indiscernable. Pour la durée du gonflement, la jambe compte comme amputée (WFRP, page 180)." ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . symptomTreatment [ "swelling" ] = "La plupart des traitements consistent à plonger la partie affectée, ou parfois tout le corps, dans un bain d'eau glacée pour réduire la chaleur qui accompagne les gonflements. Un <b> Test de Guérison Difficile (-20) étendu </b> nécessitant +3 DR réduit le renflement de <b> <a class ='chat-roll'> 2d10 </a> </b> heures. Chaque test dure une heure. Le patient se retrouve avec l'Etat Exténué +1 pour chaque test effectué au cours du processus. <br> <br> A la place, certains médecins saignent le patient avec une lame ou des sangsues. Un <b>Test de Guérison étendu </b> réussi nécessitant +4 SL et des Outils (médecin) réduit le renflement de (<a class ='chat-roll'> 1d10 </a> + Bonus d'Endurance du patient) heures. Chaque test a une difficulté de base <b> impossible (-50) </b> et dure une demi-heure." ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . difficultyModifiers [ "futile" ] = - 40 ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . difficultyModifiers [ "impossible" ] = - 50 ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . difficultyLabels [ "futile" ] = "Futile (-40)" ;
2020-05-31 10:10:58 +02:00
2020-07-03 11:38:38 +02:00
WFRP4E . difficultyLabels [ "impossible" ] = "Impossible (-50)" ;
WFRP4E . loreEffect [ "tzeentch" ] = "Les cibles des sorts de Tzeentch sont déchirées par la magie transformatrice du Chaos. Les cibles affectées par un sort du savoir de Tzeentch doivent réussir un test d'endurance Intermédiaire (+0) ou gagner +1 Point de Corruption. S'ils réussissent leur test, ils gagnent à la place +1 Point de Chance, qui peut être utilisé normalement. Tels sont les caprices de Tzeentch" ;
}
2020-05-31 10:10:58 +02:00
}
2020-07-03 11:38:38 +02:00
/************************************************************************************/
const _fix _post _module _loading = ( ) => {
// Detect and patch as necessary
2020-11-06 11:07:03 +01:00
if ( game . wfrp4e . config && game . wfrp4e . config . talentBonuses && game . wfrp4e . config . talentBonuses [ "vivacité" ] == undefined ) {
2020-07-03 11:38:38 +02:00
console . log ( "Patching WFRP4E now ...." ) ;
2020-11-14 21:44:36 +01:00
game . wfrp4e . config . qualityDescriptions [ "distract" ] = game . i18n . localize ( "WFRP4E.Properties.Distract" ) ; // Patch missing quality
2020-07-03 11:38:38 +02:00
2020-11-06 11:07:03 +01:00
game . wfrp4e . config . talentBonuses = {
2020-07-03 11:38:38 +02:00
"perspicace" : "int" ,
"affable" : "fel" ,
"tireur de précision" : "bs" ,
"très fort" : "s" ,
"vivacité" : "i" ,
"reflexes foudroyants" : "ag" ,
"imperturbable" : "wp" ,
"très résistant" : "t" ,
"doigts de fée" : "dex" ,
"guerrier né" : "ws"
}
2020-11-06 11:07:03 +01:00
game . wfrp4e . config . speciesSkills = {
2020-07-03 11:38:38 +02:00
"human" : [
"Soins aux animaux" ,
"Charme" ,
"Calme" ,
"Evaluation" ,
"Ragot" ,
"Marchandage" ,
"Langue (Bretonnien)" ,
"Langue (Wastelander)" ,
"Commandement" ,
"Savoir (Reikland)" ,
"Corps à corps (Base)" ,
"Projectiles (Arc)"
] ,
"dwarf" : [
"Résistance à l'alcool" ,
"Calme" ,
"Résistance" ,
"Divertissement (Raconter)" ,
"Evaluation" ,
"Intimidation" ,
"Langue (Khazalid)" ,
"Savoir (Nains)" ,
"Savoir (Geologie)" ,
"Savoir (Metallurgie)" ,
"Corps à corps (Base)" ,
"Métier (Au choix)"
] ,
"halfling" : [
"Charme" ,
"Résistance à l'alcool" ,
"Esquive" ,
"Pari" ,
"Marchandage" ,
"Intuition" ,
"Langue (Mootland)" ,
"Savoir (Reikland)" ,
"Perception" ,
"Escamotage" ,
"Discrétion (Au choix)" ,
"Métier (Cuisinier)"
] ,
"helf" : [
"Calme" ,
"Divertissement (Chant)" ,
"Evaluation" ,
"Langue (Eltharin)" ,
"Commandement" ,
"Corps à corps (Base)" ,
"Navigation" ,
"Perception" ,
"Musicien (Au choix)" ,
"Projectiles (Arc)" ,
"Voile" ,
"Natation"
] ,
"welf" : [
"Athlétisme" ,
"Escalade" ,
"Résistance" ,
"Divertissement (Chant)" ,
"Intimidation" ,
"Langue (Eltharin)" ,
"Corps à corps (Base)" ,
"Survie en extérieur" ,
"Perception" ,
"Projectiles (Arc)" ,
"Discrétion (Rural)" ,
"Pistage"
] ,
}
2020-11-06 11:07:03 +01:00
game . wfrp4e . config . speciesTalents = {
2020-07-03 11:38:38 +02:00
"human" : [
"Destinée" ,
"Affable, Perspicace" ,
3
] ,
"dwarf" : [
"Résistance à la Magie" ,
"Vision Nocturne" ,
"Lire/Ecrire, Impitoyable" ,
"Déterminé, Obstiné" ,
"Costaud" ,
0
] ,
"halfling" : [
"Sens Aiguisé (Gout)" ,
"Vision Nocturne" ,
2020-12-09 22:38:00 +01:00
"Resistant (Chaos)" ,
2020-07-03 11:38:38 +02:00
"Petit" ,
2020-12-09 22:38:00 +01:00
2
2020-07-03 11:38:38 +02:00
] ,
"helf" : [
"Sens Aiguisé (Vue)" ,
"Imperturbable, Perspicace" ,
"Vision Nocturne" ,
"Seconde Vue, Sixième Sens" ,
"Lire/Ecrire" ,
0
] ,
"welf" : [
"Sens Aiguisé (Sight)" ,
"Dur à cuire, Seconde Vue" ,
"Vision Nocturne" ,
"Seconde Vue, Sixth Sense" ,
"Lire/Ecrire" ,
0
] ,
}
2020-11-06 11:07:03 +01:00
game . wfrp4e . config . species = {
2020-07-03 11:38:38 +02:00
"human" : "Humain" ,
"dwarf" : "Nain" ,
"halfling" : "Halfling" ,
"helf" : "Haut Elfe" ,
"welf" : "Elfe Sylvain"
}
2021-02-05 20:47:09 +01:00
game . wfrp4e . config . effectApplication = {
"actor" : "Acteur" ,
"equipped" : "Lorsque l'objet est équipé" ,
"apply" : "Appliquer avec le ciblage" ,
"damage" : "Appliquer quand l'objet applique des Dégâts" ,
}
game . wfrp4e . config . applyScope = {
"actor" : "Acteur" ,
"item" : "Item"
}
game . wfrp4e . config . effectTriggers = {
"invoke" : "Appliqué manuellement" ,
"oneTime" : "Immediat" ,
"dialogChoice" : "Choix par un Dialogue" ,
"prefillDialog" : "Dialogue pré-remplie" ,
"prePrepareData" : "Pré-Préparation des données" ,
"prePrepareItems" : "Pré-préparation des Items d'Acteurs" ,
"prepareData" : "Préparation des données" ,
"preWoundCalc" : "Avant le calcul des Blessures" ,
"woundCalc" : "Calcul des Blessures" ,
"preApplyDamage" : "Avant l'application des Dégâts" ,
"applyDamage" : "Application des Dégâts" ,
"preTakeDamage" : "Avant de prendre les Dégâts" ,
"takeDamage" : "Prise des Dégâts" ,
"preApplyCondition" : "Avant l'application d'un Etat" ,
"applyCondition" : "Application d'Etat" ,
"prePrepareItem" : "Avant la préparation d'un Item" ,
"prepareItem" : "Préparation d'Item" ,
"preRollTest" : "Avant le lancement du Test" ,
"preRollWeaponTest" : "Avant le lancement d'un Test d'Arme" ,
"preRollCastTest" : "Avant le lancement d'un Test d'Incantation" ,
"preChannellingTest" : "Avant le lancement d'un Test de Focalisation" ,
"preRollPrayerTest" : "Avant le lancement d'un Test de Prière" ,
"preRollTraitTest" : "Avant le lancement d'un Test de Trait" ,
"rollTest" : "Lancement du Test" ,
"rollIncomeTest" : "Lancement d'un Test de Revenu" ,
"rollWeaponTest" : "Lancement d'un Test d'Arme" ,
"rollCastTest" : "Lancement d'un Test d'Incantation" ,
"rollChannellingTest" : "Lancement d'un Test de Focalisation" ,
"rollPrayerTest" : "Lancement d'un Test de Prière" ,
"rollTraitTest" : "Lancement d'un Test de Trait" ,
"preOpposedAttacker" : "Avant l'opposition de l'Attaquant" ,
"preOpposedDefender" : "Avant l'opposition du Défenseur" ,
"opposedAttacker" : "Opposition de l'Attaquant" ,
"opposedDefender" : "Opposition du Défenseur" ,
"calculateOpposedDamage" : "Calcul des Dếgats suite au Test Opposé" ,
"targetPrefillDialog" : "Pré-remplir le dialogue de la cible" ,
"getInitiativeFormula" : "Initiative" ,
"endTurn" : "Fin du Tour" ,
"endRound" : "Fin du Round" ,
"endCombat" : "Fin du Combat"
}
2020-07-03 11:38:38 +02:00
}
}
2020-05-31 10:10:58 +02:00
2020-04-26 18:38:43 +02:00
/************************************************************************************/
/* Manages /auberge command */
const _manage _inn _roll = async ( content , msg ) => {
// Split input into arguments
let command = content . split ( " " ) . map ( function ( item ) {
return item . trim ( ) ;
} )
2020-11-05 21:53:12 +01:00
console . log ( game . wfrp4e . tables [ "talents" ] ) ;
2020-04-26 18:38:43 +02:00
if ( command [ 0 ] == "/auberge" && command [ 1 ] )
{
msg [ "type" ] = 0 ;
msg [ "rollMode" ] = "gmroll" ;
2020-05-12 09:24:49 +02:00
var compendium = game . packs . get ( 'WH4-fr-translation.plats-dauberges' ) ;
2020-04-26 18:38:43 +02:00
let rollList = [ ] ;
await compendium . getIndex ( ) . then ( index => rollList = index ) ;
//console.log("Got compendium...", rollList.length);
for ( var i = 0 ; i < rollList . length ; i ++ ) {
var rollTab = rollList [ i ] ;
if ( rollTab . name . toLowerCase ( ) . includes ( command [ 1 ] . toLowerCase ( ) ) ) {
let my _rollTable ;
await compendium . getEntity ( rollTab . _id ) . then ( mytab => my _rollTable = mytab ) ;
2020-05-12 09:24:49 +02:00
let myroll = my _rollTable . roll ( ) ;
//console.log("RES: ", myroll );
msg . content = my _rollTable . name + " : " + myroll . results [ 0 ] . text ;
2020-04-26 18:38:43 +02:00
//my_rollTable.draw();
ChatMessage . create ( msg ) ;
return false ;
}
}
}
if ( content . includes ( "/auberge" ) ) {
msg [ "type" ] = 0 ;
msg [ "rollMode" ] = "gmroll" ;
msg [ "content" ] = "Syntaxe : /auberge MOT_CLE, avec MOT_CLE parmi:<br>BoissonsBase, BoissonsFortes, Desserts, PlatsCommuns, PlatsExcellents, PlatsMaritimes, PlatsMédiocres, PlatsQualité, PlatsRivières<br>Des raccourcis sont possibles avec une partie du nom : /auberge Base (correspond à BoissonBase) ou /auberge Mari (correspond à PlatsMaritimes), etc."
ChatMessage . create ( msg ) ;
return false ;
}
}
2020-06-13 23:09:11 +02:00
/************************************************************************************/
let _ _eis _tables = { "animalmishap" : 1 , "beasthead" : 1 , "coincedentalenc" : 1 , "demonic-mien" : 1 ,
"expandedmutatemental" : 1 , "expandedmutatephys" : 1 , "fixations" : 1 ,
"harmfulenc" : 1 , "positiveenc" : 1 , "weather" : 1 , "mutatephys" : 1
}
2020-06-30 22:04:54 +02:00
let _ _wfrp4e _tables = { "career" : 1 , "critbody" : 1 , "critleg" : 1 , "doom" : 1 , "eyes" : 1 , "majormis" : 1 , "mutatemental" : 1 , "oops" : 1 , "species" : 1 , "travel" : 1 ,
2020-11-06 00:10:51 +01:00
"hitloc" : 1 , "critarm" : 1 , "crithead" : 1 , "delirium" : 1 , "event" : 1 , "hair" : 1 , "minormis" : 1 , "mutatephys" : 1 , "talents" : 1 , "wrath" : 1
2020-06-30 22:04:54 +02:00
}
2020-07-04 21:48:40 +02:00
let _ _to _table _translate = [ { name : "traits" , transl : "Traits" } , { name : "talents" , transl : "Talents" } , { name : "skills" , transl : "Compétences" } ,
2020-09-09 16:24:23 +02:00
{ name : "careers" , transl : "Carrières" } , { name : "spells" , transl : "Sorts" } , { name : "prayers" , transl : "Bénédictions et Miracles" } ,
{ name : "injuries" , transl : "Blessures" } , { name : "criticals" , transl : "Critiques" } , { name : "trappings" , transl : "Equipement" } ,
{ name : "bestiary" , transl : "Bestiaire" } , { name : "diseases" , transl : "Maladies" }
2020-07-04 21:48:40 +02:00
]
/************************************************************************************/
const _ _create _translation _tables = async ( compmod ) => {
for ( let iterData of _ _to _table _translate ) {
let entityName = compmod + '.' + iterData . name ;
let compData = game . packs . get ( entityName ) ;
let compFull = await compData . getContent ( ) ;
let htmlTab = "<table border='1'><tbody>" ;
for ( let entryData of compFull ) {
htmlTab += "<tr><td>" + entryData . data . originalName + "</td><td>@Compendium[" + entityName + '.' + entryData . id + "]{" + entryData . name + "}</td></tr>\n" ;
} ;
htmlTab += "</table>" ;
let myjournal = await JournalEntry . create ( { name : 'Traduction des ' + iterData . transl , content : htmlTab } ) ;
game . journal . insert ( myjournal ) ;
}
}
2020-07-05 15:24:11 +02:00
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* The default static compendium of translation tables must be aut - mapped to the relevant
2020-11-06 09:17:37 +01:00
* compendium content name ( ie either wfrp4e or wfrp4e - core up to now ) .
2020-07-05 15:24:11 +02:00
* * /
const _ _auto _patch _translation _journal _compendium = async ( compmod ) => {
2020-07-14 10:13:57 +02:00
if ( game . user . isGM ) {
let compData = game . packs . get ( "WH4-fr-translation.tables-des-traductions" ) ;
compData . locked = false ;
let translEntries = await compData . getContent ( ) ;
for ( let entryData of translEntries ) {
let mydata = duplicate ( entryData . data ) ;
2020-11-06 09:17:37 +01:00
mydata . content = mydata . content . replace ( /wfrp4e-content/g , compmod ) ;
2020-07-14 10:13:57 +02:00
entryData . update ( mydata ) ;
}
compData . locked = true ;
2020-07-05 15:24:11 +02:00
}
}
2020-06-11 23:22:53 +02:00
/************************************************************************************/
2020-07-03 11:38:38 +02:00
const _ _check _fix _wrong _modules = ( chatFlag , patchFinished ) => {
_fix _post _module _loading ( ) ;
2020-06-30 22:04:54 +02:00
2020-06-11 23:22:53 +02:00
game . modules . forEach ( ( module , name ) => {
2020-11-05 22:23:15 +01:00
if ( name == "wfrp4e-core" && module . active ) {
2020-06-30 22:04:54 +02:00
FilePicker . browse ( "data" , "modules/WH4-fr-translation/tables/" ) . then ( resp => {
for ( var file of resp . files ) {
let filename = file . substring ( file . lastIndexOf ( "/" ) + 1 , file . indexOf ( ".json" ) ) ;
if ( _ _wfrp4e _tables [ filename ] == 1 ) { // Matching table name -> patch !
fetch ( file ) . then ( r => r . json ( ) ) . then ( records => {
2020-11-06 09:17:37 +01:00
//console.log("Patch !!!", filename, records);
2020-11-06 00:10:51 +01:00
//WFRP_Tables[filename] = records;
2020-11-06 00:12:00 +01:00
game . wfrp4e . tables [ filename ] = records ;
2020-06-30 22:04:54 +02:00
} ) ;
}
}
} ) ;
}
2020-11-06 00:10:51 +01:00
if ( name == "wfrp4e-rnhd2" && module . active ) {
2020-11-05 22:23:15 +01:00
game . wfrp4e . tables . career . name = "Carrières aléatoires" ;
2020-06-11 23:22:53 +02:00
2020-11-06 00:10:51 +01:00
FilePicker . browse ( "data" , "modules/WH4-fr-translation/tables/" ) . then ( resp => {
2020-06-11 23:22:53 +02:00
for ( var file of resp . files ) {
if ( file . match ( "career.json" ) ) {
fetch ( file ) . then ( r => r . json ( ) ) . then ( records => {
let mycareer = records ;
2020-11-05 22:40:59 +01:00
for ( let k = 0 ; k < game . wfrp4e . config . career . rows . length ; k ++ ) {
2020-06-11 23:22:53 +02:00
WFRP _Tables . career . rows [ k ] . name = mycareer . rows [ k ] . name ; // Patch !!!
}
} ) ;
}
}
2020-11-06 00:10:51 +01:00
} ) ;
2020-11-05 21:53:12 +01:00
game . wfrp4e . config . speciesSkills [ "gnome" ] = [
2020-06-11 23:22:53 +02:00
"Focalisation (Ulgu)" ,
"Charme" ,
"Résistance à l'alcool" ,
"Esquive" ,
"Divertissement (Au choix)" ,
"Ragots" ,
"Marchandage" ,
"Langue (Ghassally)" ,
"Langue (Magick)" ,
"Langue (Wastelander)" ,
"Survie en extérieur" ,
"Discrétion (Au choix)"
] ;
2020-11-05 21:53:12 +01:00
game . wfrp4e . config . speciesTalents [ "gnome" ] = [
2020-06-11 23:22:53 +02:00
"Insignifiant, Imprégné avec Uglu" ,
"Chance, Imitation" ,
"Vision Nocturne" ,
"Pêcheur, Lire/Ecrire" ,
"Seconde Vue, Sixième Sens" ,
"Petit" ,
0
] ;
2020-06-30 22:04:54 +02:00
if ( game . user . isGM && chatFlag )
2020-06-17 08:42:58 +02:00
ChatMessage . create ( { title : "Module RNHD patché" , content : "<strong>Le module RHND a été detecté et automatiquement patché.</strong>" , whisper : ChatMessage . getWhisperRecipients ( "GM" ) } ) ;
2020-06-11 23:22:53 +02:00
}
2020-06-30 22:04:54 +02:00
if ( name == "wfrp4e-ew" && module . active && game . user . isGM && chatFlag ) {
2020-06-13 23:09:11 +02:00
ChatMessage . create ( { title : "Module non compatible detecté !" , content : "<strong>Vous avez le module EW (wfrp4e-ew ?) installé. Malheureusement, ce module n'est pas compatible avec" +
" les traductions et vient casser le fonctionnement de la traduction. Veuillez recopier les compendiums dans votre monde, désactiver le module et re-démarrer le monde</strong>" ,
whisper : ChatMessage . getWhisperRecipients ( "GM" )
} ) ;
2020-06-11 23:22:53 +02:00
}
} ) ;
2020-07-03 11:38:38 +02:00
if ( game . user . isGM && patchFinished )
2020-07-19 00:04:59 +02:00
ChatMessage . create ( { title : "Patch fini !" , content : "Les modules WFRP4E ont été patchés <strong>avec succès</strong>. Vous pouvez y aller et que <strong>Shallya vous garde !</strong>" , whisper : ChatMessage . getWhisperRecipients ( "GM" ) } ) ;
2020-07-03 11:38:38 +02:00
2020-06-11 23:22:53 +02:00
}
2020-04-26 18:38:43 +02:00
/************************************************************************************/
2020-07-19 00:01:28 +02:00
const _ _add _actors _translation = ( ) => {
2020-04-30 21:56:09 +02:00
const lang = game . settings . get ( 'core' , 'language' ) ;
2020-07-19 00:01:28 +02:00
if ( lang == "fr" ) {
2020-05-11 10:01:50 +02:00
let pack _array = [ ] ;
game . packs . forEach ( ( pack , name ) => {
let newpack = pack ;
if ( ! pack . translated && pack . entity === 'Actor' ) {
2020-04-30 21:56:09 +02:00
let translations = {
"label" : pack . metadata . name ,
"mapping" : {
"name" : "name" ,
"description" : "details.biography.value" ,
"items" : {
"path" : "items" ,
"converter" : "bestiary_traits"
} ,
"characteristics" : {
"path" : "data.characteristics" ,
"converter" : "npc_characteristics"
2020-11-10 15:01:06 +01:00
} ,
"details" : {
"path" : "data.details" ,
"converter" : "npc_details"
2020-04-30 21:56:09 +02:00
}
2020-04-26 18:38:43 +02:00
} ,
2020-04-30 21:56:09 +02:00
"entries" : [
]
2020-05-11 10:01:50 +02:00
} ;
newpack = new TranslatedCompendium ( pack , translations ) ;
2020-06-22 09:10:40 +02:00
console . log ( "Actor compendium has been replaced !!!!" , pack . metadata . name ) ;
2020-04-30 21:56:09 +02:00
}
2020-06-22 09:13:50 +02:00
//console.log("Parsing pack", newpack);
2020-06-22 09:10:40 +02:00
if ( newpack . metadata . name == "forien-armoury" ) {
newpack . mapping . mapping [ "qualities" ] = {
2020-06-21 22:28:51 +02:00
"path" : "data.qualities.value" ,
"converter" : "trapping_qualities_flaws"
2020-06-22 09:10:40 +02:00
} ;
newpack . mapping . mapping [ "flaws" ] = {
2020-06-21 22:28:51 +02:00
"path" : "data.flaws.value" ,
"converter" : "trapping_qualities_flaws"
} ;
console . log ( "Forien armoury patched !!" ) ;
}
2020-05-11 10:01:50 +02:00
pack _array . push ( [ name , newpack ] ) ;
2020-04-30 21:56:09 +02:00
} ) ;
2020-05-11 10:01:50 +02:00
game . packs = new Collection ( pack _array ) ;
2020-07-19 00:01:28 +02:00
}
}
/************************************************************************************/
/* Hook for specific command */
Hooks . on ( "chatMessage" , ( html , content , msg ) => {
if ( content . includes ( "/auberge" ) ) {
_manage _inn _roll ( content , msg ) ;
return false ;
2020-04-30 21:56:09 +02:00
}
2020-07-04 21:48:40 +02:00
2020-07-19 00:01:28 +02:00
} ) ;
/************************************************************************************/
/* Additionnal hooks ready */
Hooks . once ( 'ready' , ( ) => {
if ( game . user . isGM )
2020-07-19 00:04:59 +02:00
ChatMessage . create ( { title : "Patch en progression" , content : "Les modules WFRP4E sont <strong>en cours de patch pour traduction</strong>... Merci <strong>d'attendre le message de fin</strong> (dans environ 20 secondes)" , whisper : ChatMessage . getWhisperRecipients ( "GM" ) } ) ;
2020-07-19 00:01:28 +02:00
2020-11-06 00:12:00 +01:00
setTimeout ( _ _check _fix _wrong _modules , 2000 , true , false ) ;
setTimeout ( _ _check _fix _wrong _modules , 10000 , false , false ) ;
setTimeout ( _ _check _fix _wrong _modules , 20000 , false , true ) ;
setTimeout ( _ _add _actors _translation , 21000 , false , true ) ;
2020-07-19 00:01:28 +02:00
2020-07-04 21:48:40 +02:00
let compmod = "wfrp4e" ;
// Check various settings in the installation
game . modules . forEach ( ( module , name ) => {
2020-11-05 21:53:12 +01:00
if ( name == "wfrp4e-core" && module . active ) {
compmod = "wfrp4e-core" ;
}
2020-07-04 21:48:40 +02:00
} ) ;
2020-11-06 09:17:37 +01:00
_ _auto _patch _translation _journal _compendium ( compmod )
2020-07-05 15:24:11 +02:00
/ * U n c o m m e n t t h i s t o a u t o - c r e a t e t h e t r a n s l a t i o n t a b l e s
Auto - create translation journal tables
2020-07-04 21:48:40 +02:00
_ _create _translation _tables ( compmod ) ;
* /
2020-09-09 16:24:23 +02:00
//__create_translation_tables(compmod);
2020-07-04 21:48:40 +02:00
2020-04-26 18:38:43 +02:00
} ) ;