Fix character import
This commit is contained in:
		| @@ -8,7 +8,7 @@ | ||||
|     } | ||||
|   ], | ||||
|   "url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr", | ||||
|   "version": "8.2.0", | ||||
|   "version": "8.2.1", | ||||
|   "esmodules": [ | ||||
|     "modules/babele-register.js", | ||||
|     "modules/addon-register.js", | ||||
| @@ -117,7 +117,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-8.2.0.zip", | ||||
|   "download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-8.2.1.zip", | ||||
|   "id": "wh4-fr-translation", | ||||
|   "compatibility": { | ||||
|     "minimum": "12", | ||||
|   | ||||
| @@ -257,7 +257,7 @@ const __check_fix_wrong_modules = (chatFlag, patchFinished) => { | ||||
|   }); | ||||
|   if (game.user.isGM && patchFinished) { | ||||
|     ChatMessage.create({ | ||||
|       content: "<div>Les modules WFRP4E ont été <strong>patchés avec succés</strong>. Vous pouvez y aller et que <strong>Shallya vous garde !</strong></div><div>Derniers changements : correction pour acteurs de RNHD et ajout des traductions des items de Aventures à Ubesreik 1 (François Cheminade)</div></ul>", | ||||
|       content: "<div>Les modules WFRP4E ont été <strong>patchés avec succés</strong>. Vous pouvez y aller et que <strong>Shallya vous garde !</strong></div><div>Derniers changements : Support wfrp4 v8.X, import de personnage OK</div></ul>", | ||||
|       user: game.user.id, | ||||
|       whisper: ChatMessage.getWhisperRecipients("GM") | ||||
|     }); | ||||
|   | ||||
| @@ -364,7 +364,7 @@ Hooks.once('init', () => { | ||||
|                   let s1 = res[1].trim(); // No () in talents table | ||||
|                   translItem = game.babele.translate(compData.metadata.id, { name: s1 }, true) | ||||
|                   let translw = translItem?.name || undefined | ||||
|                   console.log("Search talent name:", compData.metadata.id, s1, translw); | ||||
|                   //console.log("Search talent name:", compData.metadata.id, s1, translw); | ||||
|                   if (translw && translw != s1) { | ||||
|                     transl = translw + " (" + subword + ")"; | ||||
|                   } | ||||
|   | ||||
| @@ -1,18 +1,8 @@ | ||||
| /************************************************************************************/ | ||||
| // Some internal test strings | ||||
| let strfr = `LA TERREUR DE LA TEUFEL, TROLL DE RIVIÈRE RUSÉ | ||||
| M | ||||
|  CC CT | ||||
|  F | ||||
|  E | ||||
|  I | ||||
|  Ag Dex Int FM Soc B | ||||
| 4 | ||||
|  40 15 | ||||
|  55 | ||||
|  45 | ||||
|  20 | ||||
|  15 15 30 20 5 38 | ||||
| M  CC CT  F  E  I  Ag Dex Int FM Soc B | ||||
| 4 40 15  55  45  20  15 15 30 20 5 38  | ||||
| Traits : Amphibie, Arme +9, Armure (2), Dur à Cuire, Insensible | ||||
| à la douleur, Morsure +8, Régénération, Taille (Grande), Vision | ||||
| Nocturne, Vomissement` | ||||
| @@ -52,7 +42,7 @@ 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 }, | ||||
| @@ -246,7 +236,7 @@ function __patchName(name) { | ||||
|  | ||||
| /************************************************************************************/ | ||||
| export default async function statParserFR(statString, type = "npc") { | ||||
|   let model = foundry.utils.duplicate(game.system.model.Actor[type]); | ||||
|   let model = foundry.utils.duplicate(game.model.Actor[type]); | ||||
|  | ||||
|   // Patch wront/strange carac value before processing | ||||
|   statString = statString.replace(/ –/g, " 0") | ||||
| @@ -308,14 +298,14 @@ export default async function statParserFR(statString, type = "npc") { | ||||
|     let resCarac = XRegExp.exec(statString, reg2) // resr contains all carac found | ||||
|  | ||||
|     // Setup carac | ||||
|     //console.log("CARAC", resCarac) | ||||
|     console.log("CARAC", resCarac) | ||||
|     if (resCarac["Agi"]) resCarac["Ag"] = resCarac["Agi"] // Auto patch | ||||
|     model.details.move.value = Number(resCarac["m"]) | ||||
|     for (let key in model.characteristics) { | ||||
|       if (resCarac[key] === '-') resCarac[key] = 0 | ||||
|       model.characteristics[key].initial = Number(resCarac[key]) | ||||
|     } | ||||
|     //console.log("CARAC", model.characteristics); | ||||
|     console.log("CARAC", model.characteristics); | ||||
|  | ||||
|     // Search position of skills/talents/... | ||||
|     for (let def of sectionData) { | ||||
| @@ -424,11 +414,11 @@ 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: "armour", system: game.system.model.Item.armor }) | ||||
|                 itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "armour", system: game.model.Item.armour }) | ||||
|               } 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 }) | ||||
|                 itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "weapon", system: game.model.Item.weapon }) | ||||
|               } else { | ||||
|                 itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "trapping", system: game.system.model.Item.trapping }) | ||||
|                 itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "trapping", system: game.model.Item.trapping }) | ||||
|                 itemFound.system.trappingType.value = "misc" | ||||
|                 if (name.toLowerCase().includes("cloth")) { | ||||
|                   itemFound.system.trappingType.value = "clothingAccessories" | ||||
| @@ -457,7 +447,7 @@ export default async function statParserFR(statString, type = "npc") { | ||||
|               itemFound = await __findItem(name, "spell"); | ||||
|             } | ||||
|             if (!itemFound && name) { // Auto-create the spell name | ||||
|               itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name + "(To be checked/completed)", type: "spell", system: game.system.model.Item.spell }) | ||||
|               itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name + "(To be checked/completed)", type: "spell", system: game.model.Item.spell }) | ||||
|               itemFound = itemFound.toObject(); | ||||
|             } | ||||
|           } else if (def.name == 'mutation') { | ||||
| @@ -507,7 +497,7 @@ export default async function statParserFR(statString, type = "npc") { | ||||
|     } | ||||
|     //DEBUG : console.log("EFFECTS", effects) | ||||
|  | ||||
|     return { name, type, data: model, items: globalItemList, effects } | ||||
|     return { name, type, system: model, items: globalItemList, effects } | ||||
|   } | ||||
|  | ||||
|   // If the carac string has not been found | ||||
|   | ||||
										
											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