Sync to 4.2.0

This commit is contained in:
sladecraven 2021-08-26 21:01:54 +02:00
parent b077bed206
commit 909c19f8cb
5 changed files with 69 additions and 26 deletions

View File

@ -224,7 +224,7 @@
{
"key": "data.characteristics.fel.modifier",
"mode": 2,
"value": ""
"value": "10"
}
],
"disabled": false,
@ -306,7 +306,7 @@
{
"key": "data.characteristics.dex.modifier",
"mode": 2,
"value": ""
"value": "10"
}
],
"disabled": false,

View File

@ -2221,7 +2221,7 @@
"effectApplication": "apply",
"effectTrigger": "preOpposedDefender",
"preventDuplicateEffects": false,
"script": "if ((args.attackerTest.weapon && args.attackerTest.weapon.attackType == \"melee\") || (args.attackerTest.trait && !args.attackerTest.trait.name.includes(\"Ranged\")))\n{\n let content = `<b>${args.attackerTest.actor.token.name}</b> takes ${this.actor.characteristics.wp.bonus} Damage from Cerulean Shield if they used a metal weapon.`\n args.opposedTest.result.other.push(content);\n}"
"script": "if ((args.attackerTest.weapon && args.attackerTest.weapon.attackType == \"melee\") || (args.attackerTest.trait && !args.attackerTest.trait.name.includes(\"Ranged\")))\n{\n let content = `<b>${args.attackerTest.actor.data.token.name}</b> reçoit ${this.actor.characteristics.wp.bonus} Dégats du Bouclier Céruléen si il utilise une arme en métal.`\n args.opposedTest.result.other.push(content);\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/cerulean-shield.png",
@ -3623,7 +3623,7 @@
"effectApplication": "apply",
"effectTrigger": "oneTime",
"preventDuplicateEffects": true,
"script": "args.prefillModifiers.modifier -= 20"
"script": "let item = await fromUuid(\"Compendium.wfrp4e-core.traits.MVI0lXcg6vvtooAF\")\nthis.actor.createEmbeddedDocuments(\"Item\", [item.toObject()])"
}
},
"icon": "modules/wfrp4e-core/icons/blank.png",
@ -4566,7 +4566,7 @@
"name": "Dernières paroles"
},
{
"description": "<p>Pour lancer ce Sort, vous devez être debot et pieds nus, en contact direct avec la terre. Pour la durée du Sort, toutes les créatures également en contact direct avec la terre à l'intérieur de la Zone d'Effet guérisseent d'un nombre de Blessures égal à votre Bonus de Force Mentale au début de chaque round.</p>",
"description": "<p>Pour lancer ce Sort, vous devez être debout et pieds nus, en contact direct avec la terre. Pour la durée du Sort, toutes les créatures également en contact direct avec la terre à l'intérieur de la Zone d'Effet guérisseent d'un nombre de Blessures égal à votre Bonus de Force Mentale au début de chaque round.</p>",
"effects": [
{
"_id": "c32DjCbePouMb7cz",
@ -4585,7 +4585,7 @@
"effectApplication": "apply",
"effectTrigger": "endRound",
"preventDuplicateEffects": false,
"script": "fromUuid(this.effect.origin).then(caster => {\n if (caster)\n {\n let bonus = caster.characteristics.wp.bonus\n let wounds = duplicate(this.actor.status.wounds)\n wounds.value += bonus\n if (wounds.value > wounds.max)\n wounds.value = wounds.max\n this.actor.update({\"data.status.wounds\" : wounds})\n ChatMessage.create({content: `${this.actor.data.token.name} gagne ${bonus} Blessures (si en contact direct avec le sol)`, speaker : {alias : this.effect.label}})\n }\n})"
"script": "fromUuid(this.effect.origin).then(caster => {\n if (caster)\n {\n let bonus = caster.characteristics.wp.bonus\n this.actor.modifyWounds(bonus)\n\n ChatMessage.create({content: `${this.actor.data.token.name} regagne ${bonus} Points de Blessures (si en contact direct avec la Terre)`, speaker : {alias : this.effect.label}})\n }\n})"
}
},
"icon": "modules/wfrp4e-core/icons/spells/earthblood.png",
@ -5236,7 +5236,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/blank.png",
@ -5316,7 +5316,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/daemonology.png",
@ -5348,7 +5348,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/death.png",
@ -5396,7 +5396,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/fire.png",
@ -5444,7 +5444,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliqur l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/heavens.png",
@ -5492,7 +5492,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/life.png",
@ -5540,7 +5540,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/light.png",
@ -5588,7 +5588,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/metal.png",
@ -5636,7 +5636,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/necromancy.png",
@ -5668,7 +5668,7 @@
"effectApplication": "apply",
"effectTrigger": "invoke",
"preventDuplicateEffects": false,
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Select a target to apply the effect.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
"script": "let value = 1\nlet name = this.actor.data.token.name\n\nif (game.user.isGM)\n{\nif (!game.user.targets.size)\n return ui.notifications.warn(\"Sélectionnez une cible pour appliquer l'effet.\")\n game.user.targets.forEach(t => {\n t.actor.applyFear(value, name)\n })\n game.user.updateTokenTargets([]);\n}\nelse \n{\n game.wfrp4e.utility.postFear(value, name)\n}"
}
},
"icon": "modules/wfrp4e-core/icons/spells/shadow.png",
@ -5758,7 +5758,7 @@
"effectApplication": "damage",
"effectTrigger": "applyDamage",
"lore": true,
"script": "\n let applyAP = (args.damageType == game.wfrp4e.config.DAMAGE_TYPE.IGNORE_TB || args.damageType == game.wfrp4e.config.DAMAGE_TYPE.NORMAL)\n\n let AP = args.AP\n let metalValue = 0;\n for (let layer of AP.layers) {\n if (layer.metal) {\n metalValue += layer.value\n }\n }\n \n \n if (metalValue)\n args.messageElements.push(\"-2 Metal Armour\")\n args.totalWoundLoss += metalValue\n \n if (applyAP) {\n \n args.totalWoundLoss += metalValue\n let newUsed = AP.used - metalValue;\n \n let apIndex = args.messageElements.findIndex(i => i.includes(game.i18n.localize(\"AP\")))\n args.messageElements[apIndex] = newUsed + \"/\" + AP.value + \" \" + game.i18n.localize(\"AP\")\n }\n "
"script": "\n let applyAP = (args.damageType == game.wfrp4e.config.DAMAGE_TYPE.IGNORE_TB || args.damageType == game.wfrp4e.config.DAMAGE_TYPE.NORMAL)\n\n let AP = args.AP\n let metalValue = 0;\n for (let layer of AP.layers) {\n if (layer.metal) {\n metalValue += layer.value\n }\n }\n \n \n if (metalValue)\n args.messageElements.push(\"-2 aux Armures en Métal\")\n args.totalWoundLoss += metalValue\n \n if (applyAP) {\n \n args.totalWoundLoss += metalValue\n let newUsed = AP.used - metalValue;\n \n let apIndex = args.messageElements.findIndex(i => i.includes(game.i18n.localize(\"AP\")))\n args.messageElements[apIndex] = newUsed + \"/\" + AP.value + \" \" + game.i18n.localize(\"AP\")\n }\n "
}
},
"icon": "modules/wfrp4e-core/icons/spells/metal.png",

45
fr.json
View File

@ -66,6 +66,49 @@
"SETTINGS.AdvantageBonusHint": "Configurer le bonus donné par l'avantage",
"SETTINGS.AdvantageBonus": "Bonus d'avantage",
"SETTINGS.MooSizeDamageHint":"Les bonus de dommages sont liés à la taille absolue, au lieu des différences de taille relatives (voir la page de Wiki en lien ci-dessus)",
"SETTINGS.MooHomebrewItems":"Modifications d'Items",
"SETTINGS.MooHomebrewItemHint":"Change (avec l'application des règles ci-dessus) différents obejts. Voir la page de Wiki indiquée ci-dessus. **ATTENTION: A n'activer que sur un nouveau monde, et avec la plupart des règles ci-dessus activées**",
"SETTINGS.MooAdvantage":"Avantage",
"SETTINGS.MooAdvantageHint":"Au lieu de +10 avantage, vous gagnez +1DR par Avantage <b>sur un test réussi</b>",
"SETTINGS.MooDifficulty":"Options de difficulté",
"SETTINGS.MooDifficultyHint":"Les difficultés sont symétriques",
"SETTINGS.MooCritsFumbles":"Critiques de MooMan",
"SETTINGS.MooCritsFumblesHint":"MooCritsFumblesHint",
"SETTINGS.MooConditions":"Changement sur les états",
"SETTINGS.MooConditionsHint":"Modifie divers textes d'états",
"SETTINGS.MooConditionTriggers":"Déclenchement d'Etat",
"SETTINGS.MooConditionTriggersHint":"Les états s'activent à la fin du tour du joueur, au lieu de la fin du round.",
"SETTINGS.MooCritModifiers":"Modificateurs de Tables de Critiques",
"SETTINGS.MooCritMOdifiersHint":"Lorsque vous encaissez des dommages en dessous de 0 Point de Blessure, ajoutez ou soustrayez 10 du jet sur la table des Coups Critiques pour chaque points de dommages soustrait de votre Bonus d'Endurance.<br><br>Ex. J'ai 4 Points de Blessures restants , 50 en Endurance. J'encaisse 12 Dommages. Cela implique -8. Avec un BE de 5, cela entraîne un +30 sur la table des Coups Critiques.<br><br>Ex. J'ai 4 Points de Blessures restants , 50 en Endurance. J'encaisse 5 Dommages. Cela implique -1. Avec un BE de 5, cela entraine un -40 sur la table des Coups Critiques.",
"SETTINGS.MooSLDamage":"Calcule des dommages opposés",
"SETTINGS.MooSLDamageHint":"Le calcule des dommages est basé uniquement sur le DR de l'attaquant, au lieu de la différence attaquant/défenseur",
"SETTINGS.MooRangedDamage":"Modification des dommages des projectiles",
"SETTINGS.MooRangedDamageHint":"Les dommages des projectiles est modifié par les dizaines de la difficultée appliquée : +20 = -2 dommages, -30 = +3 dommages",
"SETTINGS.MooMagicAdvantage":"Modification des Avantages en Magie",
"SETTINGS.MooMagicAdvantageHint":"Les Avantages s'appliquent à la Folcalisation et pas à l'Incantation. Les avantages sont toujours gagnés grâce à l'Incantation.",
"SETTINGS.MooOvercasting":"Dépenses des Sur-Incantation",
"SETTINGS.MooOvercastingHint":"Les Sur-Incantations dépensent le DR utilisé, donc si le sort fait des dommages, pour chaque Sur-Incantation utilisée, le sort fait -2 Dommages, et est plus facile à opposer",
"SETTINGS.MooCatastrophicMiscasts":"Incantations Imparfaites Catastrophiques",
"SETTINGS.MooCatastrophicMiscastsHint":"Ajoute la table des Incantations Imparfaites Catastrophiques et modifie les tables existantes. De plus, obtenir un 100 sur une Incantation ou une Focalisation augmente le niveau d'Incantations Imparfaites de 1",
"SETTINGS.MooCriticalChannelling":"Focalisation Critique",
"SETTINGS.MooCriticalChannellingHint":"Si vous incantez un sort avec succès à partir d'une Focalisation critique, vous ajoutez +DR égaux au NI du sort. Ces DR ne peuvent pas être utilisés pour Sur-Incanter, seulement le DR généré par le test. Si le Test d'Incantation échoue, vous faites un Incantation Imparfaite ou ce la incrémente l'Incantation Imparfaite de 1.",
"SETTINGS.MooCastAfterChannelling":"Incanter après la Focalisation",
"SETTINGS.MooCastAfterChannellingHint":"Lors de l'incantation d'un sort Focalisé, une incantation échouée compte comme une interruption. Vous pouvez conserver les DR focalisés si ce Test est échoué.",
"SETTINGS.MooPenetrating":"Valeur de Pénétration",
"SETTINGS.MooPenetratingHint":"Ajoute une valeur à l'option Pénétrante, Pénétrante X - où l'arme ignore X PA (si aucun chiffre n'est indiqué, la valeur par défaut est de 2)",
"SETTINGS.MooQualities":"Nouvelles Qualités",
"SETTINGS.MooQualitiesHint":"Ajout les qualités 'Simple' et 'Elan'",
"SETTINGS.MooShieldAP":"PA des Boucliers",
"SETTINGS.MooShieldAPHint":"Les PA des boucliers et l'atténuation des critiques (cf. ci-dessous) sont appliqués uniquement si vous réussissez un test défensif.",
"SETTINGS.MooCriticalMitigation":"Atténuation des Critiques",
"SETTINGS.MooCriticalMitigationHint":"(Au lieu de la Déviation) Lorsque vous subissez un Coup Critique, pour chaque PA dans la localisation, le lancer sur la table des Blessures Critiques est réduit de 10. Si le résultat du jet est négatif, aucune blessure critique n'est reçue. Après que la blessure critique ait été résolue, la couche d'armure la plus externe est endommagé et ses PA réduits de 1. Cela s'applique uniquement si l'attaquant a ciblé la localisation.",
"SETTINGS.MooRangeBands":"Modificateurs de Portée des Projectiles",
"SETTINGS.MooRangeBandsHint":"Les projectiles ont une portée optimale, correspodant à une des distances de portée. Cibler une créature dans hors de cette portée impliquer des malus. Consulter le Wiki pour plus de détails.",
"SETTINGS.MooSizeDamage":"Taille et calcul des dommages",
"ROLL.CatastrophicMis":"Incantations Imparfaites Catastrophiques",
"SHEET.Close" : "Fermer",
"SHEET.Configure" : "Configurer la feuille",
"SHEET.Token" : "Configurer le Token",
@ -200,8 +243,8 @@
"ITEM.TypeContainer": "Conteneur",
"ITEM.TypePrayer": "Prière",
"ITEM.TypeTrapping": "Equipement",
"ITEM.OptimalRange": "Portée optimale",
"Basic" : "Basic",
"Advanced" : "Avancée",
"Qualities" : "Atouts",
"Flaws" : "Défauts",

View File

@ -2,7 +2,7 @@
"name": "WH4-fr-translation",
"title": "WFRP4e - Core Module en français.",
"description": "Traduction Française pour Warhammer v4.",
"version": "4.1.3",
"version": "4.2.0",
"minimumCoreVersion" : "0.8.0",
"compatibleCoreVersion": "0.8.9",
"author": "LeRatierBretonnien",

View File

@ -14,7 +14,7 @@ fp:close()
for tag, value in pairs(entags) do
if not frtags[tag] then
print(tag, value)
print('"'..tag..'":"'.. value..'",')
end
end