diff --git a/compendium/wfrp4e-core.prayers.json b/compendium/wfrp4e-core.prayers.json index 5fabc5e..c0a0009 100644 --- a/compendium/wfrp4e-core.prayers.json +++ b/compendium/wfrp4e-core.prayers.json @@ -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, diff --git a/compendium/wfrp4e-core.spells.json b/compendium/wfrp4e-core.spells.json index a9de5dc..551db86 100644 --- a/compendium/wfrp4e-core.spells.json +++ b/compendium/wfrp4e-core.spells.json @@ -2197,7 +2197,7 @@ "effectTrigger": "preTakeDamage", "preventDuplicateEffects": false, "script": "if ((args.opposedTest.attackerTest.item && args.opposedTest.attackerTest.item.attackType == \"melee\") || (args.opposedTest.attackerTest.item && !args.opposedTest.attackerTest.item.name.includes(\"Ranged\")))\n{\n args.actor.status.armour[args.opposedTest.result.hitloc.value].value += {{SL}}\n}" - } + } }, "icon": "modules/wfrp4e-core/icons/spells/cerulean-shield.png", "label": "Bouclier céruléen", @@ -2221,8 +2221,8 @@ "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 = `${args.attackerTest.actor.token.name} 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 = `${args.attackerTest.actor.data.token.name} 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", "label": "Cerulean Damage", @@ -3586,7 +3586,7 @@ "effectTrigger": "oneTime", "preventDuplicateEffects": false, "script": "if (!this.actor.has(game.i18n.localize(\"NAME.Daemonic\")))\n return \nfromUuid(this.effect.origin).then(caster => {\n if (caster)\n {\n let wp = caster.characteristics.wp\n if (this.actor.characteristics.wp.value >= wp.value)\n return\n this.actor.applyBasicDamage(wp.bonus, { damageType : game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL})\n }\n})" - } + } }, "icon": "modules/wfrp4e-core/icons/spells/destroy-lesser-daemon.png", "label": "Destruction de Démon Mineur", @@ -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": "
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.
", + "description": "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.
", "effects": [ { "_id": "c32DjCbePouMb7cz", @@ -4585,8 +4585,8 @@ "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", "label": "Sang de la Terre", @@ -4603,7 +4603,7 @@ "effectTrigger": "oneTime", "lore": true, "script": "\n fromUuid(this.effect.origin).then(caster => {\n if (this.actor.isOwner)\n {\n if (!this.actor.has(game.i18n.localize(\"NAME.Daemonic\")) && !this.actor.has(game.i18n.localize(\"NAME.Undead\")))\n {\n let bleeding = this.actor.hasCondition(\"bleeding\")\n let fatigued = this.actor.hasCondition(\"fatigued\")\n if (bleeding) this.actor.removeCondition(\"bleeding\", bleeding.flags.wfrp4e.value)\n if (fatigued) this.actor.removeCondition(\"fatigued\", fatigued.flags.wfrp4e.value)\n }\n else if (this.actor.has(game.i18n.localize(\"NAME.Undead\")))\n this.actor.applyBasicDamage(caster.characteristics.wp.bonus, {damageType : game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL});\n }\n })" - } + } }, "icon": "modules/wfrp4e-core/icons/spells/life.png", "label": "Domaine de la Vie", @@ -5236,8 +5236,8 @@ "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", "label": "Effrayant", @@ -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", diff --git a/fr.json b/fr.json index 2bf6410..cec58af 100644 --- a/fr.json +++ b/fr.json @@ -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 sur un test réussi", + "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.