Compare commits

...

17 Commits

Author SHA1 Message Date
4d0b3ca280 Support v8.3.X 2024-12-06 06:56:45 +01:00
d019c8fe22 Integrate various fixed from Pallando 2024-11-10 22:08:15 +01:00
e3247a5a92 Merge pull request 'Add missing witchcraft spells and common folder names' (#106) from pallando/foundryvtt-wh4-lang-fr-fr:missing into v10
Reviewed-on: #106
2024-11-10 22:02:16 +01:00
42295f71cb Merge pull request 'Additions' (#107) from pallando/foundryvtt-wh4-lang-fr-fr:additions into v10
Reviewed-on: #107
2024-11-10 22:02:07 +01:00
e7722dd222 Add translation converters for Imperial Zoo items 2024-11-10 14:32:30 +01:00
513e41b8f2 Convert disease incubation/duration for Lustria and OWB2 2024-11-10 14:26:37 +01:00
46b47a5b24 Add converter for disease incubation/duration units 2024-11-10 14:25:36 +01:00
e1e52ca2be Add translation converters for Old World Bundle 2 items 2024-11-10 13:41:04 +01:00
a7c848a30d Remove useless necromancy folder from wom items 2024-11-10 13:29:02 +01:00
f0248692cc Add translation converters for Archives vol. 3 items 2024-11-10 13:20:15 +01:00
682b62c2e0 Add translation converters for Lustria items 2024-11-10 13:15:12 +01:00
3978fab79a Add translation converters for Salzenmund items 2024-11-10 13:11:32 +01:00
64be1078e1 Fix babele-register.js for subskills when core is not first compendium checked 2024-11-10 13:00:39 +01:00
925c2721a9 Add folder names from translated compendiums to SoC, WoM and UiA 2024-11-10 12:55:26 +01:00
97d9d5d8fa Add missing witchcraft spells to core items 2024-11-10 12:50:37 +01:00
77cc368a7e Fix old script library 2024-10-25 11:14:29 +02:00
bfe160cc00 Fix character import 2024-10-22 13:20:02 +02:00
81 changed files with 716 additions and 156 deletions

View File

@ -0,0 +1,91 @@
{
"label": "Items (Archives Vol. III)",
"folders": {
"Armour": "Armures",
"Careers": "Carrières",
"Skills": "Compétences",
"Spells": "Sorts"
},
"mapping": {
"description": "system.description.value",
"trappings": "system.trappings",
"class": {
"path": "system.class.value",
"converter": "generic_localization"
},
"skills": {
"path": "system.skills",
"converter": "career_skills"
},
"careergroup": {
"path": "system.careergroup.value",
"converter": "career_careergroup"
},
"talents": {
"path": "system.talents",
"converter": "career_talents"
},
"pduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"prange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"ptarget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"pdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"test": {
"path": "system.test",
"converter": "role_skills"
},
"tests": "system.tests.value",
"maxcost": {
"path": "system.cost.max",
"converter": "spells_duration_range_target_damage"
},
"sduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"srange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"starget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"sdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"penalty": "system.penalty.value",
"location": {
"path": "system.location.value",
"converter": "generic_localization"
},
"durationValue": "system.duration.value",
"durationUnit": "system.duration.unit",
"contraction": "system.contraction.value",
"incubationValue": "system.incubation.value",
"incubationUnit": "system.incubation.unit",
"symptoms": "system.symptoms.value",
"permanent": "system.permanent.value",
"special": "system.special.value",
"qualities": {
"path": "system.qualities.value",
"converter": "trapping_qualities_flaws"
},
"flaws": {
"path": "system.flaws.value",
"converter": "trapping_qualities_flaws"
}
}
}

View File

@ -1525,7 +1525,7 @@
},
{
"description": "<p style=\"text-align: justify:\">Votre main est méchamment coupée, ce qui rend votre prise glissante. Recevez 1 État @Condition[Hémorragique]. Tant que vous êtes sous leffet de cet État, effectuez un Test de <strong>Dextérité Accessible (+20)</strong> avant deffectuer une action qui nécessite que vous teniez quoi que ce soit dans cette main ; sur un échec, lobjet vous glisse de la main.</p>",
"id": "Bleeding hand",
"id": "Bleeding Hand",
"name": "Main ensanglantée"
},
{
@ -2548,7 +2548,7 @@
"tests": "Charme quand vous mentez"
},
{
"description": "<p>Vous êtes un lanceur de Sorts autodidacte qui a compris peu à peu comment utiliser la magie, par tâtonnements. Ajoutez Langue (Magick) à nimporte quelle Carrière que vous entamez ; si elle est déjà comprise dans votre Carrière, vous pouvez, à la place, acheter la Compétence pour 5 PX de moins par Augmentation. De plus, vous pouvez dépenser un Point de Résilience pour lancer (et mémoriser) un Sort provenant de nimporte quel Domaine de Magie, pour 0 PX. Vous pouvez le faire un nombre de fois égal à votre Niveau dans ce Talent.</p>",
"description": "<p>Vous êtes agile comme un chat, et capable de tomber de plus grandes hauteurs que les autres sans vous blesser. Chaque fois que vous tombez, effectuez un Test dAthlétisme. Sur un succès, réduisez la distance de chute de 1 mètre, +1 mètre supplémentaire par +1 DR obtenu, pour calculer les Dégâts</p>",
"id": "Catfall",
"name": "Souplesse féline",
"tests": "Athlétisme quand vous tombez"
@ -2825,7 +2825,7 @@
},
{
"description": "<p>Vous êtes entraîné à vous placer très près dun 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": "Infighter",
"id": "InFighter",
"name": "Combattant au contact",
"tests": "Corps à corps quand vous combattez au contact ou que vous allez au contact"
},
@ -3798,6 +3798,11 @@
"id": "Bolt (Shadow)",
"name": "Carreau (Ombres)"
},
{
"description": "<p>Vous concentrez la magie en un carreau destructeur. <em>Carreau</em> est un <em>Projectile magique</em> avec Dégât +4.</p>",
"id": "Bolt (Witchcraft)",
"name": "Carreau (Sorcellerie)"
},
{
"description": "<p>Vous effectuez immédiatement une attaque de Souffle, comme si vous aviez dépensé 2 Avantages pour activer le Trait de créature @Compendium[wfrp4e-core.items.uqGxFOEqeurwkAO3]{Souffle}. Souffle est un <em>Projectile magique</em> dont les Dégâts sont égaux à votre Bonus d'Endurance. Le MJ détermine quel type d'attaque de Souffle correspond le mieux à votre Talent Magie des Arcanes.</p>",
"id": "Breath",
@ -3918,6 +3923,11 @@
"id": "Bridge (Shadow)",
"name": "Pont (Ombres)"
},
{
"description": "<p>Vous créez un pont d'énergie magique, d'une longueur et d'une largeur maximales en mètres égales à votre Bonus de Force Mentale. Pour chaque +2 DR, vous pouvez augmenter la longueur ou la largeur d'un nombre de mètres égal à votre Bonus de Force Mentale.</p>",
"id": "Bridge (Witchcraft)",
"name": "Pont (Sorcellerie)"
},
{
"description": "<p>La magie qui afflue dans vos pieds s'assure que les matières organiques sur lesquelles vous marchez ne soient pas endommagées : les brindilles ne cassent pas, l'herbe revient à sa position d'origine, et même les fleurs délicates ne sont pas abîmées. Ceux qui cherchent à utiliser la Compétence @Compendium[wfrp4e-core.items.rt2rGSwFDCDHPh0A] pour vous suivre à travers un terrain rural subissent une pénalité de -30 à leurs Tests.</p>",
"id": "Careful Step",
@ -4323,6 +4333,11 @@
"id": "Dome (Shadow)",
"name": "Dôme (Ombres)"
},
{
"description": "<p>Vous créez un dôme d'énergie magique au-dessus des têtes, bloquant les attaques de l'extérieur. Quiconque se trouve dans la Zone d'Effet gagne le Trait de créature @Compendium[wfrp4e-core.items.Bvd2aZ0gQUXHfCTh]{Protection(+6)} contre les Attaques magiques ou à distances provenant de l'extérieur du dôme. Les personnes à l'intérieur peuvent attaquer des cibles situées à l'extérieur du dôme normalement, et le dôme ne gêne pas le déplacement",
"id": "Dome (Witchcraft)",
"name": "Dôme (Sorcellerie)"
},
{
"description": "<p>Vous tissez un masque et une cape d'<em>Ulgu</em> autour de votre silhouette, adoptant l'apparence d'une autre créature humanoïde avec laquelle vous êtes familier (comme déterminé par le MJ). Votre apparence trompe quiconque ne possède pas le Talent <em>@Compendium[wfrp4e-core.items.OEjUvJKi0xmBwbS2]</em>, bien que certains puissent le remarquer si vos manières sont incorrectes. Ceux possédant ce Talent doivent réussir un Test de <strong>Perception Complexe (-10)</strong> pour remarquer que vous camouflez votre silhouette. Cela ne leur permet pas de voir à travers le Sort. Pour ce faire, ils doivent le dissiper.</p>",
"id": "Doppelganger",
@ -4783,6 +4798,11 @@
"id": "Magic Shield (Shadow)",
"name": "Bouclier magique (Ombres)"
},
{
"description": "<p>Vous vous entourez d'une bande de magie protectrice. Tant que le Sort est actif, ajoutez +(Bonus de Force Mentale) DR quand vous tentez de dissiper un Sort.</p>",
"id": "Magic Shield (Witchcraft)",
"name": "Bouclier magique (Sorcellerie)"
},
{
"description": "<p>Vous focalisez les relents de <em>Dhar</em>, provoquant une brève déchirure dans la réalité. Un Démon Mineur apparaît immédiatement par cette déchirure (référez-vous à la page 335 pour y trouver deux exemples : @Compendium[wfrp4e-core.bestiary.KZkuwdOYmE3nwB2n] et @Compendium[wfrp4e-core.bestiary.8gG2Wim6wAlJWRax]. Un Démon Mineur apparaît immédiatement par cette déchirure. Effectuez un Test Opposé de <strong>Focalisation (Dhar)/Force Mentale</strong> avec le démon. Sur un succès, ce dernier répondra favorablement à un ordre que vous lui donnerez, littéralement, avant de disparaître (en partant du principe qu'il puisse accomplir ce que vous lui avez demandé avant la fin du Sort). Sur un échec, le démon attaque sur le champ.</p>",
"id": "Manifest Lesser Daemon",
@ -5068,6 +5088,11 @@
"id": "Push (Shadow)",
"name": "Poussée (Ombres)"
},
{
"description": "<p>Toutes les créatures situées à une distance en mètres égale à votre Bonus de Force Mentale sont repoussées d'un nombre de mètres égal à votre Bonus de Force Mentale et gagnent l'État <em>@Condition[A Terre]{À Terre}</em>.Si cela les amène à entrer en contact avec un mur ou un autre grand obstacle, elles subissent un nombre de Dégâts égal à la distance parcourue en mètres. Pour chaque +2 DR, vous pouvez repousser les créatures d'un nombre de mètres supplémentaires égal à votre Bonus de Force Mentale.</p>",
"id": "Push (Witchcraft)",
"name": "Poussée (Sorcellerie)"
},
{
"description": "<p>Vous focalisez un important flux de <em>Dhar</em> directement vers le sol, faisant se rassembler et sortir de vieux os. DR+1 Squelettes sortiront ainsi du sol dans la zone d'effet que vous aurez choisie avant la fin du round. Il subissent tous l'État <em>@Condition[A Terre]{À Terre}</em>. Ces morts-vivants sont sous votre contrôle et sont capables d'exécuter les ordres simples que vous leur donnerez. Si vous êtes tué où que vous subissez l'État <em>@Condition[Inconscient]</em>, le Sort s'achève et les morts-vivants s'écroulent. Pour chaque DR+2 que vous obtenez, vous pouvez invoquer DR Squelettes supplémentaires.</p>",
"id": "Raise Dead",
@ -9358,9 +9383,9 @@
"Food and Drink": "Nourriture et Boissons",
"Herbs and Draughts": "Herbes et Décoctions",
"Injuries": "Blessures",
"Lore of Bests": "Domaine des Bêtes",
"Lore of Beasts": "Domaine des Bêtes",
"Lore of Daemonology": "Démonologie",
"Lore of Death": "Domaine de la mort",
"Lore of Death": "Domaine de la Mort",
"Lore of Fire": "Domaine du Feu",
"Lore of Heaven": "Domaine des Cieux",
"Lore of Hedgecraft": "Magie des Haies",

View File

@ -0,0 +1,94 @@
{
"label": "Items (Lustria)",
"folders": {
"Careers": "Carrières",
"Spells": "Sorts",
"Trappings": "Possessions",
"Weapons": "Armes"
},
"mapping": {
"description": "system.description.value",
"trappings": "system.trappings",
"class": {
"path": "system.class.value",
"converter": "generic_localization"
},
"skills": {
"path": "system.skills",
"converter": "career_skills"
},
"modType": "system.modType.value",
"careergroup": {
"path": "system.careergroup.value",
"converter": "career_careergroup"
},
"talents": {
"path": "system.talents",
"converter": "career_talents"
},
"pduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"prange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"ptarget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"pdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"test": {
"path": "system.test",
"converter": "role_skills"
},
"tests": "system.tests.value",
"sduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"srange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"starget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"sdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"penalty": "system.penalty.value",
"location": {
"path": "system.location.value",
"converter": "generic_localization"
},
"durationValue": "system.duration.value",
"durationUnit": {
"path": "system.duration.unit",
"converter": "disease_duration_unit"
},
"contraction": "system.contraction.value",
"incubationValue": "system.incubation.value",
"incubationUnit": {
"path": "system.incubation.unit",
"converter": "disease_duration_unit"
},
"symptoms": "system.symptoms.value",
"permanent": "system.permanent.value",
"special": "system.special.value",
"qualities": {
"path": "system.qualities.value",
"converter": "trapping_qualities_flaws"
},
"flaws": {
"path": "system.flaws.value",
"converter": "trapping_qualities_flaws"
}
}
}

View File

@ -0,0 +1,103 @@
{
"label": "Items (Old World Bundle II)",
"folders": {
"Lore of the Beasts": "Domaine des Bêtes",
"Lore of Death": "Domaine de la Mort",
"Lore of Fire": "Domaine du Feu",
"Lore of Heavens": "Domaine des Cieux",
"Lore of Hedgecraft": "Magie des Haies",
"Lore of Life": "Domaine de la Vie",
"Lore of Light": "Domaine de la Lumière",
"Lore of Metal": "Domaine du Métal",
"Lore of Shadows": "Domaine des Ombres",
"Lore of Witchcraft": "Sorcellerie"
},
"mapping": {
"description": "system.description.value",
"trappings": "system.trappings",
"class": {
"path": "system.class.value",
"converter": "generic_localization"
},
"skills": {
"path": "system.skills",
"converter": "career_skills"
},
"careergroup": {
"path": "system.careergroup.value",
"converter": "career_careergroup"
},
"talents": {
"path": "system.talents",
"converter": "career_talents"
},
"pduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"prange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"ptarget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"pdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"test": {
"path": "system.test",
"converter": "role_skills"
},
"tests": "system.tests.value",
"maxcost": {
"path": "system.cost.max",
"converter": "spells_duration_range_target_damage"
},
"sduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"srange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"starget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"sdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"penalty": "system.penalty.value",
"location": {
"path": "system.location.value",
"converter": "generic_localization"
},
"durationValue": "system.duration.value",
"durationUnit": {
"path": "system.duration.unit",
"converter": "disease_duration_unit"
},
"contraction": "system.contraction.value",
"incubationValue": "system.incubation.value",
"incubationUnit": {
"path": "system.incubation.unit",
"converter": "disease_duration_unit"
},
"symptoms": "system.symptoms.value",
"permanent": "system.permanent.value",
"special": "system.special.value",
"qualities": {
"path": "system.qualities.value",
"converter": "trapping_qualities_flaws"
},
"flaws": {
"path": "system.flaws.value",
"converter": "trapping_qualities_flaws"
}
}
}

View File

@ -0,0 +1,89 @@
{
"label": "Items (Salzenmund)",
"mapping": {
"effects": {
"converter": "process_effects",
"path": "effects"
},
"careergroup": {
"converter": "career_careergroup",
"path": "system.careergroup.value"
},
"class": {
"converter": "generic_localization",
"path": "system.class.value"
},
"contraction": "system.contraction.value",
"description": "system.description.value",
"durationUnit": "system.duration.unit",
"durationValue": "system.duration.value",
"flaws": {
"converter": "trapping_qualities_flaws",
"path": "system.flaws.value"
},
"incubationUnit": "system.incubation.unit",
"incubationValue": "system.incubation.value",
"location": {
"converter": "generic_localization",
"path": "system.location.value"
},
"modifier": {
"converter": "mutations_modifier",
"path": "system.modifier.value"
},
"mutationType": {
"converter": "generic_localization",
"path": "system.mutationType.value"
},
"pdamage": {
"converter": "spells_duration_range_target_damage",
"path": "system.damage.value"
},
"pduration": {
"converter": "spells_duration_range_target_damage",
"path": "system.duration.value"
},
"penalty": "system.penalty.value",
"permanent": "system.permanent.value",
"prange": {
"converter": "spells_duration_range_target_damage",
"path": "system.range.value"
},
"ptarget": {
"converter": "spells_duration_range_target_damage",
"path": "system.target.value"
},
"qualities": {
"converter": "trapping_qualities_flaws",
"path": "system.qualities.value"
},
"sdamage": {
"converter": "spells_duration_range_target_damage",
"path": "system.damage.value"
},
"sduration": {
"converter": "spells_duration_range_target_damage",
"path": "system.duration.value"
},
"skills": {
"converter": "career_skills",
"path": "system.skills"
},
"special": "system.special.value",
"srange": {
"converter": "spells_duration_range_target_damage",
"path": "system.range.value"
},
"starget": {
"converter": "spells_duration_range_target_damage",
"path": "system.target.value"
},
"symptoms": "system.symptoms.value",
"talents": {
"converter": "career_talents",
"path": "system.talents"
},
"tests": "system.tests.value",
"trappings": "system.trappings"
}
}

View File

@ -1,5 +1,15 @@
{
"label": "Items (Sea of Claws)",
"folders": {
"Ammunition": "Munitions",
"Careers": "Carrières",
"Criticals": "Critiques",
"Diseases": "Maladies",
"Skills": "Compétences",
"Spells": "Sorts",
"Trappings": "Possessions",
"Weapons": "Armes"
},
"mapping": {
"description": "system.description.value",
"trappings": "system.trappings",
@ -11,6 +21,7 @@
"path": "system.skills",
"converter": "career_skills"
},
"modType": "system.modType.value",
"careergroup": {
"path": "system.careergroup.value",
"converter": "career_careergroup"
@ -78,4 +89,4 @@
"converter": "trapping_qualities_flaws"
}
}
}
}

View File

@ -1,5 +1,15 @@
{
"label": "Items (Up In Arms)",
"folders": {
"Ammunition": "Munitions",
"Careers": "Carrières",
"Criticals": "Critiques",
"Prayers": "Prières",
"Skills": "Compétences",
"Spells": "Sorts",
"Trappings": "Possessions",
"Weapons": "Armes"
},
"mapping": {
"skills": {
"path": "system.skills",

View File

@ -1,5 +1,22 @@
{
"label": "Items (Winds of Magic)",
"folders": {
"Ammunition": "Munitions",
"Armour": "Armures",
"Careers": "Carrières",
"Lore of Beasts": "Domaine des Bêtes",
"Lore of Death": "Domaine de la Mort",
"Lore of Fire": "Domaine du Feu",
"Lore of Heavens": "Domaine des Cieux",
"Lore of Life": "Domaine de la Vie",
"Lore of Light": "Domaine de la Lumière",
"Lore of Metal": "Domaine du Métal",
"Lore of Shadow": "Domaine des Ombres",
"Skills": "Compétences",
"Spells": "Sorts",
"Trappings": "Possessions",
"Weapons": "Armes"
},
"mapping": {
"description": "system.description.value",
"trappings": "system.trappings",

View File

@ -0,0 +1,95 @@
{
"label": "Items (Imperial Zoo)",
"folders": {
"Ammunition": "Munitions",
"Careers": "Carrières",
"Prayers": "Prières",
"Trappings": "Possessions",
"Weapons": "Armes"
},
"mapping": {
"description": "system.description.value",
"trappings": "system.trappings",
"class": {
"path": "system.class.value",
"converter": "generic_localization"
},
"skills": {
"path": "system.skills",
"converter": "career_skills"
},
"modType": "system.modType.value",
"careergroup": {
"path": "system.careergroup.value",
"converter": "career_careergroup"
},
"talents": {
"path": "system.talents",
"converter": "career_talents"
},
"pduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"prange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"ptarget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"pdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"test": {
"path": "system.test",
"converter": "role_skills"
},
"tests": "system.tests.value",
"sduration": {
"path": "system.duration.value",
"converter": "spells_duration_range_target_damage"
},
"srange": {
"path": "system.range.value",
"converter": "spells_duration_range_target_damage"
},
"starget": {
"path": "system.target.value",
"converter": "spells_duration_range_target_damage"
},
"sdamage": {
"path": "system.damage.value",
"converter": "spells_duration_range_target_damage"
},
"penalty": "system.penalty.value",
"location": {
"path": "system.location.value",
"converter": "generic_localization"
},
"durationValue": "system.duration.value",
"durationUnit": {
"path": "system.duration.unit",
"converter": "disease_duration_unit"
},
"contraction": "system.contraction.value",
"incubationValue": "system.incubation.value",
"incubationUnit": {
"path": "system.incubation.unit",
"converter": "disease_duration_unit"
},
"symptoms": "system.symptoms.value",
"permanent": "system.permanent.value",
"special": "system.special.value",
"qualities": {
"path": "system.qualities.value",
"converter": "trapping_qualities_flaws"
},
"flaws": {
"path": "system.flaws.value",
"converter": "trapping_qualities_flaws"
}
}
}

View File

@ -207,6 +207,7 @@
"SETTINGS.AutomaticSuccessHint":"Tout les jets inférieurs ou égaux à cette valeur seront considérés comme des réussites",
"SETTINGS.AdvantageMax":"Limite d'avantages",
"SETTINGS.AdvantageMaxHint":"Limite les avantages à un nombre pré-définie, comme 2, 4,etc.",
"SETTINGS.MooCritModifiersHint":"Lorsque vous subissez des dégâts au-delà de 0 blessure, ajoutez ou soustrayez 10 au tableau des coups critiques pour chaque point de différence de dégâts par rapport à votre bonus d'Endurance.<br><br>Ex. Il me reste 4 blessures, Endurance 50. Je subis 12 dégâts. Cela ferait 8 au-delà de 0. Avec un BE de 5, cela donnerait un +30 au coup critique obtenu.<br><br>Ex. Il me reste 4 blessures, Enurance 50, je subis 5 dégâts. Cela ferait 1 au-delà de 0. Avec une BE de 5, cela donnerait un -40 au coup critique obtenu.",
"ROLL.CatastrophicMis":"Incantations Imparfaites Catastrophiques",
@ -285,7 +286,9 @@
"SHEET.GenerateName":"Générer un nom",
"SHEET.CannotDeleteItemEffect":"Cet Effet provient d'un Item de cet acteur. Supprimer l'Item lui-même ou l'Effet depuis l'onglet Effet de la fiche de l'Item.",
"SHEET.TemporaryEffectHint":"Ces Effets proviennent de l'acteur qui les possède. Utiliser la fiche de personnage pour interagir avec.",
"SHEET.ItemSheetEditableDisabled":"L'édition de cet Item est désactivé tant que les effets de {effects} sont actifs. Désactivez ou supprimez ces effets sur l'acteur concerné.",
"SHEET.LocationAP":"Localisation des PA",
"ACTOR.BasicSkillsTitle" : "Ajouter les compétences de base",
"ACTOR.BasicSkillsPrompt": "Ajouter les compétences de base ?",
"ACTOR.PreparationError" : "Quelque chose s'est mal passé lors de la préparation des données d'Acteurs: ",
@ -939,6 +942,8 @@
"DIALOG.ErrorMustSelectItem":"Au moins 1 item doit être selectionné",
"DIALOG.ChooseActor":"Choisissez l'Acteur pour réaliser le test",
"DIALOG.ItemDialog":"Fenêtre d'Item",
"DIALOG.LinkCareer":"Relier la carrière",
"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.",
"CHAT.CareerChoose" : "Choisissez votre carrière",
"CHAT.DamageError" : "Erreur de calcul des dégâts:",
@ -1311,6 +1316,8 @@
"MARKET.NotifyNoActor": "Aucun acteur n'est selectionné ou associé avec l'utilisateur actuel",
"MARKET.ItemAdded": "{item} ajouté à {actor}",
"MARKET.d":"d",
"MARKET.For":"pour",
"MARKET.PaidFor":"<b>Produit acheté :</b> {product}",
"WFRP4E.TrappingType.Weapon" : "Arme",
"WFRP4E.TrappingType.Armour" : "Armure",

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -8,7 +8,7 @@
}
],
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
"version": "8.2.0",
"version": "8.3.0",
"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.3.0.zip",
"id": "wh4-fr-translation",
"compatibility": {
"minimum": "12",

View File

@ -222,10 +222,12 @@ const __check_fix_wrong_modules = (chatFlag, patchFinished) => {
WH4FRPatchConfig.perform_patch();
let coreFound = false;
game.modules.forEach((module, name) => {
//console.log("TESTING MODULE", module)
if (module.id == "wfrp4e-core" && module.active) {
coreFound = true
patch_core_tables(__wfrp4e_tables);
}
if (module.id == "wfrp4e-eis" && module.active) {
@ -255,12 +257,21 @@ 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>",
user: game.user.id,
whisper: ChatMessage.getWhisperRecipients("GM")
});
if ( !coreFound) {
if (game.user.isGM && chatFlag) {
ChatMessage.create({
content: "<div><strong>Le module Core WFRP4E n'a pas été trouvé ou activé. Veuillez acheter et/ou activer ce module de base avant de continuer.</strong></div>",
whisper: ChatMessage.getWhisperRecipients("GM")
});
}
} else {
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 : Support WFRP4E v8.3.X</div></ul>",
user: game.user.id,
whisper: ChatMessage.getWhisperRecipients("GM")
});
}
}
}
@ -355,6 +366,11 @@ const __add_actors_translation = () => {
}
}
}
// Close the warning dialog
if ( game.wfrp4e.warnDialog) {
game.wfrp4e.warnDialog.close();
game.wfrp4e.warnDialog = null;
}
}
@ -373,6 +389,13 @@ Hooks.on("chatMessage", (html, content, msg) => {
Hooks.on('ready', () => {
if (game.user.isGM) {
game.wfrp4e.warnDialog = new Dialog({
title: "Chargement de la traduction FR - Merci d'attendre",
content: `<img src="modules/wh4-fr-translation/images/warhammer-v1-logo.webp"><p class="wfrp4-fr-message">Les moines de l'ordre de l'Enclume, associés aux légistes de Talabaheim, préparent la traduction Bretonnienne de ce monde...</h3><p class="wfrp4-fr-message">Merci d'attendre la disparition de ce message pour vaquer dans l'Empire.</p> <p class="wfrp4-fr-message">Si une bénédiction de Shallya apparait dans le tchat, c'est que tout s'est bien passé.</p>`,
buttons: {
}
})
game.wfrp4e.warnDialog.render(true, {focus: true, left: 20, top: 20});
let chatData = {
user: game.user.id,
rollMode: game.settings.get("core", "rollMode"),
@ -412,11 +435,11 @@ Hooks.on('ready', () => {
"doom": "Maudit (-40)"
}
console.log("WFRP4E-TRANSLATION | Loading timeout");
game.wfrp4e.warnDialog.render(true, {focus: true, left: 20, top: 20});
//setTimeout( __check_fix_wrong_modules, 2000, true, false);
setTimeout(__check_fix_wrong_modules, 20000, true, true);
setTimeout(__add_actors_translation, 21000, false, true);
//__patchStyleSheet()
/* ATTEMPT !!

View File

@ -257,8 +257,12 @@ Hooks.once('init', () => {
s1 = res[1].trim() + " ( )";
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
translw = translItem?.name || undefined
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
if(translw) {
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
} else {
transl = res[1] + " (" + subword + ")";
}
}
}
}
@ -364,7 +368,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 + ")";
}
@ -658,6 +662,10 @@ Hooks.once('init', () => {
// Auto-translate duration
"spells_duration_range_target_damage": (value) => {
return WFRP4FrTranslation.processSpellContent(value);
},
// Auto-translate disease duration units
"disease_duration_unit": (unit) => {
return game.i18n.localize(unit).capitalize();
}
});
}

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
MANIFEST-000856
MANIFEST-000901

View File

@ -1,7 +1,7 @@
2024/10/18-18:13:47.044529 7f84f82006c0 Recovering log #854
2024/10/18-18:13:47.054801 7f84f82006c0 Delete type=3 #852
2024/10/18-18:13:47.054895 7f84f82006c0 Delete type=0 #854
2024/10/18-18:21:20.233601 7f84f64006c0 Level-0 table #859: started
2024/10/18-18:21:20.233644 7f84f64006c0 Level-0 table #859: 0 bytes OK
2024/10/18-18:21:20.240532 7f84f64006c0 Delete type=0 #857
2024/10/18-18:21:20.255441 7f84f64006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
2024/12/06-06:29:10.294570 7f29111f86c0 Recovering log #899
2024/12/06-06:29:10.446463 7f29111f86c0 Delete type=3 #897
2024/12/06-06:29:10.446572 7f29111f86c0 Delete type=0 #899
2024/12/06-06:56:31.907843 7f2907bff6c0 Level-0 table #904: started
2024/12/06-06:56:31.907892 7f2907bff6c0 Level-0 table #904: 0 bytes OK
2024/12/06-06:56:31.914240 7f2907bff6c0 Delete type=0 #902
2024/12/06-06:56:31.914535 7f2907bff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2024/10/13-10:15:10.833255 7f4ae56006c0 Recovering log #850
2024/10/13-10:15:10.843913 7f4ae56006c0 Delete type=3 #848
2024/10/13-10:15:10.844060 7f4ae56006c0 Delete type=0 #850
2024/10/13-10:17:29.386405 7f4ae28006c0 Level-0 table #855: started
2024/10/13-10:17:29.386456 7f4ae28006c0 Level-0 table #855: 0 bytes OK
2024/10/13-10:17:29.392764 7f4ae28006c0 Delete type=0 #853
2024/10/13-10:17:29.392939 7f4ae28006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
2024/12/03-14:47:53.089822 7f75367fc6c0 Recovering log #895
2024/12/03-14:47:53.101494 7f75367fc6c0 Delete type=3 #893
2024/12/03-14:47:53.101658 7f75367fc6c0 Delete type=0 #895
2024/12/03-14:50:29.795688 7f752ffff6c0 Level-0 table #900: started
2024/12/03-14:50:29.795734 7f752ffff6c0 Level-0 table #900: 0 bytes OK
2024/12/03-14:50:29.803156 7f752ffff6c0 Delete type=0 #898
2024/12/03-14:50:29.810671 7f752ffff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000858
MANIFEST-000903

View File

@ -1,7 +1,7 @@
2024/10/18-18:13:47.059680 7f84f8c006c0 Recovering log #856
2024/10/18-18:13:47.069621 7f84f8c006c0 Delete type=3 #854
2024/10/18-18:13:47.069738 7f84f8c006c0 Delete type=0 #856
2024/10/18-18:21:20.247704 7f84f64006c0 Level-0 table #861: started
2024/10/18-18:21:20.247743 7f84f64006c0 Level-0 table #861: 0 bytes OK
2024/10/18-18:21:20.255126 7f84f64006c0 Delete type=0 #859
2024/10/18-18:21:20.255506 7f84f64006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2024/12/06-06:29:10.458438 7f29121fa6c0 Recovering log #901
2024/12/06-06:29:10.648063 7f29121fa6c0 Delete type=3 #899
2024/12/06-06:29:10.648184 7f29121fa6c0 Delete type=0 #901
2024/12/06-06:56:31.988576 7f2907bff6c0 Level-0 table #906: started
2024/12/06-06:56:31.988629 7f2907bff6c0 Level-0 table #906: 0 bytes OK
2024/12/06-06:56:31.995315 7f2907bff6c0 Delete type=0 #904
2024/12/06-06:56:32.003057 7f2907bff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2024/10/13-10:15:10.848652 7f4ae4c006c0 Recovering log #852
2024/10/13-10:15:10.859932 7f4ae4c006c0 Delete type=3 #850
2024/10/13-10:15:10.860057 7f4ae4c006c0 Delete type=0 #852
2024/10/13-10:17:29.394222 7f4ae28006c0 Level-0 table #857: started
2024/10/13-10:17:29.394285 7f4ae28006c0 Level-0 table #857: 0 bytes OK
2024/10/13-10:17:29.400389 7f4ae28006c0 Delete type=0 #855
2024/10/13-10:17:29.400639 7f4ae28006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2024/12/03-14:47:53.106157 7f7534ff96c0 Recovering log #897
2024/12/03-14:47:53.116505 7f7534ff96c0 Delete type=3 #895
2024/12/03-14:47:53.116661 7f7534ff96c0 Delete type=0 #897
2024/12/03-14:50:29.810973 7f752ffff6c0 Level-0 table #902: started
2024/12/03-14:50:29.811089 7f752ffff6c0 Level-0 table #902: 0 bytes OK
2024/12/03-14:50:29.817802 7f752ffff6c0 Delete type=0 #900
2024/12/03-14:50:29.840199 7f752ffff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000856
MANIFEST-000901

View File

@ -1,7 +1,7 @@
2024/10/18-18:13:47.092813 7f84f8c006c0 Recovering log #854
2024/10/18-18:13:47.103058 7f84f8c006c0 Delete type=3 #852
2024/10/18-18:13:47.103152 7f84f8c006c0 Delete type=0 #854
2024/10/18-18:21:20.255597 7f84f64006c0 Level-0 table #859: started
2024/10/18-18:21:20.255672 7f84f64006c0 Level-0 table #859: 0 bytes OK
2024/10/18-18:21:20.263027 7f84f64006c0 Delete type=0 #857
2024/10/18-18:21:20.291487 7f84f64006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
2024/12/06-06:29:10.837927 7f29109f76c0 Recovering log #899
2024/12/06-06:29:11.040497 7f29109f76c0 Delete type=3 #897
2024/12/06-06:29:11.040590 7f29109f76c0 Delete type=0 #899
2024/12/06-06:56:31.980149 7f2907bff6c0 Level-0 table #904: started
2024/12/06-06:56:31.980264 7f2907bff6c0 Level-0 table #904: 0 bytes OK
2024/12/06-06:56:31.988318 7f2907bff6c0 Delete type=0 #902
2024/12/06-06:56:32.003025 7f2907bff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2024/10/13-10:15:10.881019 7f4ae38006c0 Recovering log #850
2024/10/13-10:15:10.891271 7f4ae38006c0 Delete type=3 #848
2024/10/13-10:15:10.891371 7f4ae38006c0 Delete type=0 #850
2024/10/13-10:17:29.409477 7f4ae28006c0 Level-0 table #855: started
2024/10/13-10:17:29.409555 7f4ae28006c0 Level-0 table #855: 0 bytes OK
2024/10/13-10:17:29.416471 7f4ae28006c0 Delete type=0 #853
2024/10/13-10:17:29.416760 7f4ae28006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
2024/12/03-14:47:53.136674 7f75357fa6c0 Recovering log #895
2024/12/03-14:47:53.146963 7f75357fa6c0 Delete type=3 #893
2024/12/03-14:47:53.147060 7f75357fa6c0 Delete type=0 #895
2024/12/03-14:50:29.826423 7f752ffff6c0 Level-0 table #900: started
2024/12/03-14:50:29.826474 7f752ffff6c0 Level-0 table #900: 0 bytes OK
2024/12/03-14:50:29.832704 7f752ffff6c0 Delete type=0 #898
2024/12/03-14:50:29.840232 7f752ffff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

@ -1 +1 @@
MANIFEST-000856
MANIFEST-000901

View File

@ -1,7 +1,7 @@
2024/10/18-18:13:47.028103 7f84f8c006c0 Recovering log #854
2024/10/18-18:13:47.039373 7f84f8c006c0 Delete type=3 #852
2024/10/18-18:13:47.039514 7f84f8c006c0 Delete type=0 #854
2024/10/18-18:21:20.226682 7f84f64006c0 Level-0 table #859: started
2024/10/18-18:21:20.226742 7f84f64006c0 Level-0 table #859: 0 bytes OK
2024/10/18-18:21:20.233411 7f84f64006c0 Delete type=0 #857
2024/10/18-18:21:20.255407 7f84f64006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
2024/12/06-06:29:10.129684 7f29109f76c0 Recovering log #899
2024/12/06-06:29:10.271002 7f29109f76c0 Delete type=3 #897
2024/12/06-06:29:10.271205 7f29109f76c0 Delete type=0 #899
2024/12/06-06:56:31.900017 7f2907bff6c0 Level-0 table #904: started
2024/12/06-06:56:31.900067 7f2907bff6c0 Level-0 table #904: 0 bytes OK
2024/12/06-06:56:31.907608 7f2907bff6c0 Delete type=0 #902
2024/12/06-06:56:31.914514 7f2907bff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2024/10/13-10:15:10.817002 7f4ae38006c0 Recovering log #850
2024/10/13-10:15:10.828770 7f4ae38006c0 Delete type=3 #848
2024/10/13-10:15:10.828963 7f4ae38006c0 Delete type=0 #850
2024/10/13-10:17:29.378580 7f4ae28006c0 Level-0 table #855: started
2024/10/13-10:17:29.378612 7f4ae28006c0 Level-0 table #855: 0 bytes OK
2024/10/13-10:17:29.384956 7f4ae28006c0 Delete type=0 #853
2024/10/13-10:17:29.385130 7f4ae28006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
2024/12/03-14:47:53.073823 7f75357fa6c0 Recovering log #895
2024/12/03-14:47:53.084784 7f75357fa6c0 Delete type=3 #893
2024/12/03-14:47:53.084913 7f75357fa6c0 Delete type=0 #895
2024/12/03-14:50:29.803402 7f752ffff6c0 Level-0 table #900: started
2024/12/03-14:50:29.803447 7f752ffff6c0 Level-0 table #900: 0 bytes OK
2024/12/03-14:50:29.810467 7f752ffff6c0 Delete type=0 #898
2024/12/03-14:50:29.810690 7f752ffff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

View File

@ -1 +1 @@
MANIFEST-000856
MANIFEST-000901

View File

@ -1,7 +1,7 @@
2024/10/18-18:13:47.009196 7f84f82006c0 Recovering log #854
2024/10/18-18:13:47.019931 7f84f82006c0 Delete type=3 #852
2024/10/18-18:13:47.020097 7f84f82006c0 Delete type=0 #854
2024/10/18-18:21:20.240695 7f84f64006c0 Level-0 table #859: started
2024/10/18-18:21:20.240733 7f84f64006c0 Level-0 table #859: 0 bytes OK
2024/10/18-18:21:20.247510 7f84f64006c0 Delete type=0 #857
2024/10/18-18:21:20.255477 7f84f64006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
2024/12/06-06:29:09.964705 7f29119f96c0 Recovering log #899
2024/12/06-06:29:10.110563 7f29119f96c0 Delete type=3 #897
2024/12/06-06:29:10.110670 7f29119f96c0 Delete type=0 #899
2024/12/06-06:56:31.893168 7f2907bff6c0 Level-0 table #904: started
2024/12/06-06:56:31.893262 7f2907bff6c0 Level-0 table #904: 0 bytes OK
2024/12/06-06:56:31.899789 7f2907bff6c0 Delete type=0 #902
2024/12/06-06:56:31.914479 7f2907bff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2024/10/13-10:15:10.801247 7f4ae42006c0 Recovering log #850
2024/10/13-10:15:10.812259 7f4ae42006c0 Delete type=3 #848
2024/10/13-10:15:10.812486 7f4ae42006c0 Delete type=0 #850
2024/10/13-10:17:29.369815 7f4ae28006c0 Level-0 table #855: started
2024/10/13-10:17:29.369929 7f4ae28006c0 Level-0 table #855: 0 bytes OK
2024/10/13-10:17:29.377441 7f4ae28006c0 Delete type=0 #853
2024/10/13-10:17:29.377632 7f4ae28006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
2024/12/03-14:47:53.059390 7f7535ffb6c0 Recovering log #895
2024/12/03-14:47:53.069945 7f7535ffb6c0 Delete type=3 #893
2024/12/03-14:47:53.070032 7f7535ffb6c0 Delete type=0 #895
2024/12/03-14:50:29.788958 7f752ffff6c0 Level-0 table #900: started
2024/12/03-14:50:29.789039 7f752ffff6c0 Level-0 table #900: 0 bytes OK
2024/12/03-14:50:29.795527 7f752ffff6c0 Delete type=0 #898
2024/12/03-14:50:29.810646 7f752ffff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

View File

View File

@ -1 +1 @@
MANIFEST-000499
MANIFEST-000544

View File

@ -1,8 +1,7 @@
2024/10/18-18:13:47.076254 7f84f82006c0 Recovering log #497
2024/10/18-18:13:47.087782 7f84f82006c0 Delete type=3 #495
2024/10/18-18:13:47.087917 7f84f82006c0 Delete type=0 #497
2024/10/18-18:21:20.283730 7f84f64006c0 Level-0 table #502: started
2024/10/18-18:21:20.283779 7f84f64006c0 Level-0 table #502: 0 bytes OK
2024/10/18-18:21:20.291168 7f84f64006c0 Delete type=0 #500
2024/10/18-18:21:20.377603 7f84f64006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2024/10/18-18:21:20.395543 7f84f64006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2024/12/06-06:29:10.660724 7f29119f96c0 Recovering log #542
2024/12/06-06:29:10.820379 7f29119f96c0 Delete type=3 #540
2024/12/06-06:29:10.820543 7f29119f96c0 Delete type=0 #542
2024/12/06-06:56:31.995574 7f2907bff6c0 Level-0 table #547: started
2024/12/06-06:56:31.995632 7f2907bff6c0 Level-0 table #547: 0 bytes OK
2024/12/06-06:56:32.002701 7f2907bff6c0 Delete type=0 #545
2024/12/06-06:56:32.003082 7f2907bff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,7 @@
2024/10/13-10:15:10.864885 7f4ae42006c0 Recovering log #493
2024/10/13-10:15:10.876950 7f4ae42006c0 Delete type=3 #491
2024/10/13-10:15:10.877043 7f4ae42006c0 Delete type=0 #493
2024/10/13-10:17:29.401759 7f4ae28006c0 Level-0 table #498: started
2024/10/13-10:17:29.401816 7f4ae28006c0 Level-0 table #498: 0 bytes OK
2024/10/13-10:17:29.407953 7f4ae28006c0 Delete type=0 #496
2024/10/13-10:17:29.408135 7f4ae28006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2024/10/13-10:17:29.408173 7f4ae28006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2024/12/03-14:47:53.121100 7f7535ffb6c0 Recovering log #538
2024/12/03-14:47:53.132879 7f7535ffb6c0 Delete type=3 #536
2024/12/03-14:47:53.132978 7f7535ffb6c0 Delete type=0 #538
2024/12/03-14:50:29.818123 7f752ffff6c0 Level-0 table #543: started
2024/12/03-14:50:29.818237 7f752ffff6c0 Level-0 table #543: 0 bytes OK
2024/12/03-14:50:29.826237 7f752ffff6c0 Delete type=0 #541
2024/12/03-14:50:29.840216 7f752ffff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -2,3 +2,9 @@
:root{
--color-bg-option: #352516;
}
.wfrp4-fr-message {
font-size: 1.4rem;
color: antiquewhite;
align-self: center;
text-align: center;
}

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Loading Spells")
let spells = await warhammer.utility.findAllItems("spell", "Loading Spells")
let text = (await game.wfrp4e.tables.rollTable("random-caster", {hideDSN: true})).result

View File

@ -7,7 +7,7 @@ let god = await ValueDialog.create("Enter a Deity", "Blessed")
if (god)
{
let prayers = await game.wfrp4e.utility.findAll("prayer", "Loading Prayers")
let prayers = await warhammer.utility.findAllItems("prayer", "Loading Prayers")
let blessings = prayers.filter(p => p.system.god.value.split(",").map(i => i.trim().toLowerCase()).includes(god.toLowerCase()) && p.system.type.value == "blessing")
if (blessings.length)
{

View File

@ -1,4 +1,4 @@
let mutations = await game.wfrp4e.utility.findAll("mutation", "Loading Mutations")
let mutations = await warhammer.utility.findAllItems("mutation", "Loading Mutations")
let roll = Math.floor(CONFIG.Dice.randomUniform() * mutations.length);
this.actor.createEmbeddedDocuments("Item", [mutations[roll]]);
this.script.scriptNotification(`Added ${mutations[roll].name}`)

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Loading Spells")
let spells = await warhammer.utility.findAllItems("spell", "Loading Spells")
let lore = (await game.wfrp4e.tables.rollTable("random-caster", {hideDSN: true})).text
this.script.scriptNotification(lore)

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Loading Spells", true);
let spells = await warhammer.utility.findAllItems("spell", "Loading Spells", true);
let choice = await ItemDialog.create(spells, 1);

View File

@ -1,4 +1,4 @@
let careers = await game.wfrp4e.utility.findAll("career", "", true);
let careers = await warhammer.utility.findAllItems("career", "", true);
careers.forEach(c => {
if (!c.id)
{

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Loading Spells");
let spells = await warhammer.utility.findAllItems("spell", "Loading Spells");
spells = spells.filter(s => ["fire", "heavens", "beasts", "shadow", "light", "life", "death", "metal"].includes(s.system.lore.value)).sort((a, b) => a.system.lore.value > b.system.lore.value ? 1 : -1)
let choice = await ItemDialog.create(spells, 1, "Choose Spell");

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Loading Spells");
let spells = await warhammer.utility.findAllItems("spell", "Loading Spells");
spells = spells.filter(s => ["slaanesh"].includes(s.system.lore.value))
let choice = await ItemDialog.create(spells, 1, "Choose Spell");

View File

@ -1,7 +0,0 @@
[Dolphin]
SortOrder=1
SortRole=modificationtime
Timestamp=2024,10,8,20,1,53.617
Version=4
ViewMode=1
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Chargement des sorts")
let spells = await warhammer.utility.findAllItems("spell", "Chargement des sorts")
let text = (await game.wfrp4e.tables.rollTable("random-caster", {hideDSN: true})).result

View File

@ -1,4 +1,4 @@
let mutations = await game.wfrp4e.utility.findAll("mutation", "Chargement des mutations")
let mutations = await warhammer.utility.findAllItems("mutation", "Chargement des mutations")
let roll = Math.floor(CONFIG.Dice.randomUniform() * mutations.length);
this.actor.createEmbeddedDocuments("Item", [mutations[roll]]);
this.script.scriptNotification(`Ajout ${mutations[roll].name}`)

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Chargement des sorts")
let spells = await warhammer.utility.findAllItems("spell", "Chargement des sorts")
let lore = (await game.wfrp4e.tables.rollTable("random-caster", {hideDSN: true})).text
this.script.scriptNotification(lore)

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Chargement des sorts", true);
let spells = await warhammer.utility.findAllItems("spell", "Chargement des sorts", true);
let choice = await ItemDialog.create(spells, 1);

View File

@ -1,4 +1,4 @@
let careers = await game.wfrp4e.utility.findAll("career", "", true);
let careers = await warhammer.utility.findAllItems("career", "", true);
careers.forEach(c => {
if (!c.id)
{

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Chargement des sorts");
let spells = await warhammer.utility.findAllItems("spell", "Chargement des sorts");
spells = spells.filter(s => ["feu", "cieux", "bêtes", "ombres", "lumière", "vie", "mort", "métal"].includes(s.system.lore.value)).sort((a, b) => a.system.lore.value > b.system.lore.value ? 1 : -1)
let choice = await ItemDialog.create(spells, 1, "Choisir un sort");

View File

@ -1,4 +1,4 @@
let spells = await game.wfrp4e.utility.findAll("spell", "Chargement des sorts");
let spells = await warhammer.utility.findAllItems("spell", "Chargement des sorts");
spells = spells.filter(s => ["slaanesh"].includes(s.system.lore.value))
let choice = await ItemDialog.create(spells, 1, "Choisir un sort");