Compare commits

..

50 Commits

Author SHA1 Message Date
3602fdc5f9 Correction condition sonné 2023-11-17 22:59:21 +01:00
5c4c6b8163 Table de traductions OK à nouveau 2023-11-15 19:54:04 +01:00
9ba6bde6e0 Fix versionning 2023-11-13 07:07:10 +01:00
1ff7be02d4 Fix versionning 2023-11-13 07:06:55 +01:00
bd113b6ef3 Fix spell damages 2023-11-12 00:22:44 +01:00
db1bf4e23a Utilisation des ID pour certains items litigieux 2023-11-09 17:04:42 +01:00
4cf52343c6 Merge pull request 'Utilisation des IDs pour les éléments doublons du core' (#98) from pallando/foundryvtt-wh4-lang-fr-fr:core-duplicates into v10
Reviewed-on: #98
2023-11-09 17:01:41 +01:00
83822ade7f Use IDs for duplicate items in core 2023-11-06 22:26:06 +01:00
e79474ab8d Nouvelles tables de critiques 2023-10-29 09:53:13 +01:00
8d5fb68182 Merge pull request 'Gestion des résultats des critiques pour le Starter Set et Up In Arms' (#97) from pallando/foundryvtt-wh4-lang-fr-fr:update-tables into v10
Reviewed-on: #97
2023-10-29 09:52:03 +01:00
54612628b8 Handle results for criticals from Up In Arms 2023-10-25 22:37:46 +02:00
3f861ed86c Translate Critical Hits tables from the Starter Set 2023-10-25 22:36:55 +02:00
a15260bff7 Use raw spells functions 2023-10-14 11:28:48 +02:00
541e2836ca Amelioration du parser de statblock 2023-10-12 20:10:13 +02:00
73133b0abf Amelioration du parser de statblock 2023-10-12 08:31:55 +02:00
7ceaa73233 Better management of careers translations 2023-10-03 11:51:09 +02:00
a888502952 Better management of careers translations 2023-10-03 11:43:31 +02:00
a1f1861172 Better management of careers translations 2023-10-03 11:42:43 +02:00
0335ffb354 Merge pull request 'bugfix' (#95) from pallando/foundryvtt-wh4-lang-fr-fr:bugfix into v10
Reviewed-on: #95
2023-10-03 11:41:41 +02:00
303cdece36 Merge pull request 'Gestion des items de Winds of Magic' (#96) from pallando/foundryvtt-wh4-lang-fr-fr:wom into v10
Reviewed-on: #96
2023-10-03 11:41:28 +02:00
71b45c0cad Update wfrp4e-core.careers.json to make it valid 2023-10-03 11:18:41 +02:00
1408122c59 Remove tory | grep github 2023-10-03 11:18:40 +02:00
7305a9c370 Add wfrp4e-wom.items.json 2023-10-03 11:13:52 +02:00
e427e3702b Fix skill testing 2023-10-03 10:48:42 +02:00
8c7848bf2b Fix compendiums 2023-10-01 21:15:56 +02:00
e5ba63b8e0 Fix compendiums 2023-10-01 21:15:31 +02:00
16f97040d3 Fix compendiums 2023-10-01 21:08:37 +02:00
a9aa0edad8 Fix compendiums 2023-10-01 20:30:32 +02:00
0f0c482187 Fix compendiums 2023-10-01 20:28:29 +02:00
644e8b8146 Fix talents naming 2023-09-28 07:49:24 +02:00
044dcde7bf Merge pull request 'Correction des possessions de carrière pour correspondre aux journaux' (#94) from pallando/foundryvtt-wh4-lang-fr-fr:match-trappings into v10
Reviewed-on: #94
2023-09-25 10:55:01 +02:00
fb6ef1b0b3 Merge pull request 'Petites corrections' (#93) from pallando/foundryvtt-wh4-lang-fr-fr:fixes into v10
Reviewed-on: #93
2023-09-25 10:54:48 +02:00
2eee4d5da1 Few changes 2023-09-24 22:47:50 +02:00
6149261726 Apply previous corrections to careers and trappings JSONs 2023-09-21 23:39:41 +02:00
4a1295de15 Fix trappings to match journals 2023-09-21 23:09:47 +02:00
095a3a0929 Remove unnecessary 'Vigilance' from trappings in Apprenti Cavalier journal entry 2023-09-18 22:39:30 +02:00
b3703c62d3 Fix Jewellery in items 2023-09-17 23:55:33 +02:00
b5f77c27c6 Add Honour Guard description and remove duplicate entries 2023-09-17 21:13:37 +02:00
6eaf2bb030 Fix journals 2023-09-17 10:44:03 +02:00
2ae5349f15 Fix Honour Guard 2023-09-17 10:40:56 +02:00
0650e39019 Fix trait translation 2023-09-16 15:27:37 +02:00
959e0e0555 Update compendium links 2023-09-15 09:36:32 +02:00
27788a3f15 Fix compendiums again 2023-09-14 14:19:40 +02:00
037ba87761 Fix careek links 2023-09-13 10:15:45 +02:00
e2178329f7 Possessions des classes 2023-09-12 18:26:43 +02:00
83da960d30 Merge pull request 'Ajout des possessions de classe dans la création de personnage' (#91) from pallando/foundryvtt-wh4-lang-fr-fr:class-trappings into v10
Reviewed-on: #91
2023-09-12 18:25:05 +02:00
4f22403c5f Fix class trappings in character creation 2023-09-12 15:55:37 +02:00
6e9df6e59a Fix actor import 2023-09-11 06:44:18 +02:00
43d78c5c68 Fix actor import 2023-09-11 06:43:56 +02:00
6918eaeb1b Various fixes 2023-09-10 22:22:47 +02:00
126 changed files with 3820 additions and 1741 deletions

4
.gitignore vendored
View File

@ -1,6 +1,2 @@
.history/
.vscode/
/packs/*/
/packs/*/CURRENT
/packs/*/LOG
/packs/*/LOCK

View File

@ -72,6 +72,7 @@ Pour info, il existe énormément de cas particuliers dans le système de règle
* compendium/talents -> LeRatier/Dr.Droide/Moilu/Gharazel
* various modules and fixes -> Ashburry77
* various modules and fixes -> Bimkiz
* contributions au code et améliorations -> Pallando
## Feedback

View File

@ -41,7 +41,7 @@ Hooks.once('init', () => {
}
/*---------------------------------------------------------------------*/
game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) {
/* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) {
try {
formula = formula.toLowerCase();
@ -85,10 +85,10 @@ Hooks.once('init', () => {
catch (e) {
throw ui.notifications.error("Error: could not parse spell damage. See console for details")
}
}
}*/
/*---------------------------------------------------------------------*/
game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellPrayerFormula = function (type, aoe = false, formulaOverride) {
/* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellPrayerFormula = function (type, aoe = false, formulaOverride) {
let formula = formulaOverride || this[type]?.value
if (Number.isNumeric(formula))
return formula
@ -134,7 +134,7 @@ Hooks.once('init', () => {
//console.log("calculateSpellAttributes -> " + formula );
return formula.capitalize();
}
}*/
/*---------------------------------------------------------------------*/
// Converters area
@ -149,39 +149,43 @@ Hooks.once('init', () => {
Babele.get().registerConverters({
"career_skills": (skills_list) => {
let compendiumName = 'wfrp4e-core.skills' // Per default
if (game.system.version.match("7.")) {
compendiumName = 'wfrp4e-core.items'
}
//console.log( "Thru here ...", compendium, skills_list);
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill")
//DEBUG: console.log( "Thru here ...", compendium, skills_list);
if (skills_list) {
let i;
let len = skills_list.length;
let re = /(.*)\((.*)\)/i;
for (i = 0; i < len; i++) {
skills_list[i] = skills_list[i].trim();
let transl = game.babele.translate(compendiumName, { name: skills_list[i] }, true).name;
if (!transl) transl = skills_list[i]
//console.log("List ...", skills_list[i]);
if (transl == skills_list[i]) {
let res = re.exec(skills_list[i]);
if (res) {
//console.log("Matched/split:", res[1], res[2]);
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim() + " ()";
let translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
if (translw != s1) {
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
} else {
s1 = res[1].trim() + " ( )";
translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
for (let compData of validCompendiums) {
let translItem = game.babele.translate(compData.metadata.id, { name: skills_list[i], type: "skill" }, true)
let transl = translItem?.name || undefined
if (!transl) transl = skills_list[i]
//console.log("List ...", skills_list[i], compData.metadata.id, translItem);
if (transl == skills_list[i]) {
let res = re.exec(skills_list[i]);
if (res) {
//console.log("Matched/split:", res[1], res[2]);
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim() + " ()";
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
let translw = translItem?.name || undefined
if (translw && translw != s1) {
let res2 = re.exec(translw);
transl = res2[1] + "(" + subword + ")";
} else {
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 + ")";
}
}
}
skills_list[i] = transl;
if (translItem?.system)
break;
}
skills_list[i] = transl;
}
}
return skills_list;
@ -198,13 +202,13 @@ Hooks.once('init', () => {
return results
}
// Auto patch
if (results[0].text.includes("wfrp4e-core.career-descriptions") ) {
if (results[0].text.includes("wfrp4e-core.career-descriptions")) {
if (game.system.version.match("7.")) {
results[0].text = "wfrp4e-core.journals"
} else {
results[0].text = "wfrp4e-core.journal-entries"
results[0].text = "wfrp4e-core.journal-entries"
}
}
}
if (results[0].text.includes("wfrp4e-core.journal")) {
for (let data of results) {
let career = data.text.match(/{(.*)}/)
@ -234,39 +238,34 @@ Hooks.once('init', () => {
},
"career_talents": (talents_list) => {
let compendiumName = 'wfrp4e-core.talents' // Per default
if (game.system.version.match("7.")) {
compendiumName = 'wfrp4e-core.items'
}
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("talent")
let i;
if (talents_list) {
let len = talents_list.length;
let re = /(.*)\((.*)\)/i;
for (i = 0; i < len; i++) {
let transl = game.babele.translate(compendiumName, { name: talents_list[i] }, true).name;
if (!transl) transl = talents_list[i]
if (transl == talents_list[i]) {
let res = re.exec(talents_list[i]);
if (res) {
//console.log("Matched/split:", res[1], res[2]);
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim(); // No () in talents table
let translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
if (translw != s1) {
transl = translw + " (" + subword + ")";
} else {
s1 = res[1].trim() + " ( )";
translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
let res2 = re.exec(translw);
if (res2) {
transl = res2[1] + " (" + subword + ")";
} else {
transl = translw
}
for (let compData of validCompendiums) {
//console.log("TALENT - Parsing : ", talents_list)
let translItem = game.babele.translate(compData.metadata.id, { name: talents_list[i], type: "talent" }, true);
let transl = translItem?.name || undefined
if (!transl) transl = talents_list[i]
if (transl == talents_list[i]) {
let res = re.exec(talents_list[i]);
if (res) {
let subword = game.i18n.localize(res[2].trim());
let s1 = res[1].trim(); // No () in talents table
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "talent" }, true)
let translw = translItem?.name || undefined
//console.log("Ssearch talent name:", compData.metadata.id, s1, translw);
if (translw && translw != s1) {
transl = translw + " (" + subword + ")";
}
}
}
talents_list[i] = transl;
if (translItem?.system)
break;
}
talents_list[i] = transl;
}
}
return talents_list;
@ -289,6 +288,7 @@ Hooks.once('init', () => {
console.log("No beast traits found here ...")
return beast_traits
}
//console.log("TRANS:", beast_traits)
for (let trait_en of beast_traits) {
let special = "";
let nbt = "";
@ -312,25 +312,19 @@ Hooks.once('init', () => {
name_en = res[1]; // Get the root traits name
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
}
let compendiumName = 'wfrp4e-core.traits' // Per default
if (game.system.version.match("7.")) {
compendiumName = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumName, { name: name_en }, true);
//console.log(">>>>> Trait ?", name_en, nbt, trait_fr, trait_fr.name, special);
trait_fr.name = trait_fr.name || trait_en.name
trait_en.name = nbt + trait_fr.name + special;
if (trait_fr.system?.description?.value) {
trait_en.system.description.value = trait_fr.system.description.value;
} else if (game.modules.get('wfrp4e-eis')) { // No description in the FR compendium -> test other compendium if presenr
trait_fr = game.babele.translate('wfrp4e-eis.items', { name: name_en }, true);
trait_en.name = nbt + trait_fr.name + special;
if (trait_fr.system?.description?.value)
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("trait")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
trait_fr.name = trait_fr.name || trait_en.name
trait_en.name = nbt + trait_fr.name + special;
trait_en.system.description.value = trait_fr.system.description.value;
}
if (trait_en.system?.specification && isNaN(trait_en.system.specification.value)) { // This is a string, so translate it
//console.log("Translating : ", trait_en.system.specification.value);
trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim());
if (trait_en.system?.specification && isNaN(trait_en.system.specification.value)) { // This is a string, so translate it
//console.log("Translating : ", trait_en.system.specification.value);
trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim());
}
break // Translation has been found, skip other compendiums
}
}
} else if (trait_en.type == "skill") {
if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside
@ -339,94 +333,90 @@ Hooks.once('init', () => {
name_en = res[1].trim(); // Get the root skill name
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
}
let compendiumSkills = 'wfrp4e-core.skills' // Per default
if (game.system.version.match("7.")) {
compendiumSkills = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumSkills, { name: name_en }, true);
//console.log(">>>>> Skill ?", name_en, special, trait_fr.name, trait_fr);
trait_fr.name = trait_fr.name || name_en
if (trait_fr.name != name_en) { // Translation OK
trait_en.name = trait_fr.name + special;
if (trait_fr.system) {
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
//console.log(">>>>> Skill ?", name_en, special, trait_fr.name, trait_fr);
trait_fr.name = trait_fr.name || name_en
trait_en.name = trait_fr.name + special;
trait_en.system.description.value = trait_fr.system.description.value;
break; // Translation has been found, skip other compendiums
}
}
} else if (trait_en.type == "prayer") {
let compendiumPrayers = 'wfrp4e-core.prayers' // Per default
if (game.system.version.match("7.")) {
compendiumPrayers = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumPrayers, { name: name_en }, true);
//console.log(">>>>> Prayer ?", name_en, special, trait_fr.name );
trait_fr.name = trait_fr.name || name_en
trait_en.name = trait_fr.name + special;
if (trait_fr.system?.description?.value)
trait_en.system.description.value = trait_fr.system.description.value;
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("prayer")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
//DEBUG : console.log(">>>>> Prayer ?", name_en, special, trait_fr.name );
trait_fr.name = trait_fr.name || name_en
trait_en.name = trait_fr.name + special;
if (trait_fr.system?.description?.value) {
trait_en.system.description.value = trait_fr.system.description.value;
}
break;
}
}
} else if (trait_en.type == "spell") {
let compendiumSpells = 'wfrp4e-core.spells' // Per default
if (game.system.version.match("7.")) {
compendiumSpells = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumSpells, { name: name_en }, true)
if (trait_fr.name == name_en) { // If no translation, test eisspells
trait_fr = game.babele.translate('wfrp4e-eis.eisspells', { name: name_en }, true);
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("spell")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
trait_fr.name = trait_fr.name || name_en
//DEBUG : console.log(">>>>> Spell ?", name_en, special, trait_fr.name );
trait_en.name = trait_fr.name + special;
if (trait_fr.system?.description?.value) {
trait_en.system.description.value = trait_fr.system.description.value;
}
break;
}
}
if (trait_fr.name == name_en) { // If no translation, test unofficial grimoire
trait_fr = game.babele.translate('wfrp4e-unofficial-grimoire.ug-spells', { name: name_en }, true);
}
trait_fr.name = trait_fr.name || name_en
//console.log(">>>>> Spell ?", name_en, special, trait_fr.name );
trait_en.name = trait_fr.name + special;
if (trait_fr.system?.description?.value)
trait_en.system.description.value = trait_fr.system.description.value;
} else if (trait_en.type == "talent") {
} else if (trait_en.type == "talent") {
if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside
let re = /(.*) +\((.*)\)/i;
let res = re.exec(name_en);
name_en = res[1].trim(); // Get the root talent name, no parenthesis this time...
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
}
let compendiumTalents = 'wfrp4e-core.talents' // Per default
if (game.system.version.match("7.")) {
compendiumTalents = 'wfrp4e-core.items'
}
let trait_fr = game.babele.translate(compendiumTalents, { name: name_en }, true)
trait_fr.name = trait_fr.name || name_en // Security since babele v10
//console.log(">>>>> Talent ?", trait_fr, name_en, special, trait_fr.name);
if (trait_fr.name != "Sprinter" && trait_fr.name == name_en) { // If no translation, test ugtalents
trait_fr = game.babele.translate('wfrp4e-unofficial-grimoire.ug-careerstalentstraits', { name: name_en }, true);
trait_fr.name = trait_fr.name || name_en // Security since babele v10
}
if (trait_fr.name && (trait_fr.name == "Sprinter" || trait_fr.name != name_en)) { // Talent translated!
trait_en.name = trait_fr.name.trim() + special
if (trait_fr.system) { // Why ???
trait_en.system.description.value = trait_fr.system.description.value;
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("talent")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
trait_fr.name = trait_fr.name || name_en // Security since babele v10
//console.log(">>>>> Talent ?", trait_fr, name_en, special, trait_fr.name);
if (trait_fr.name && (trait_fr.name == "Sprinter" || trait_fr.name != name_en)) { // Talent translated!
trait_en.name = trait_fr.name.trim() + special
if (trait_fr.system?.description?.value) { // Why ???
trait_en.system.description.value = trait_fr.system.description.value;
}
}
break;
}
}
} else if (trait_en.type == "career") {
let compendiumCareers = 'wfrp4e-core.careers' // Per default
if (game.system.version.match("7.")) {
compendiumCareers = 'wfrp4e-core.items'
}
let career_fr = game.babele.translate(compendiumCareers, trait_en, true);
career_fr.name = career_fr.name || trait_en.name
//console.log(">>>>> Career ?", career_fr.name );
trait_en.system = duplicate(career_fr.system);
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("career")
for (let compData of validCompendiums) {
let career_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true);
if (career_fr?.system) {
trait_en.name = career_fr.name || trait_en.name
// DEBG: console.log(">>>>> Career ?", career_fr.name );
trait_en.system = duplicate(career_fr.system);
break;
}
}
} else if (trait_en.type == "trapping" || trait_en.type == "weapon" || trait_en.type == "armour" || trait_en.type == "container" || trait_en.type == "money") {
let compendiumTrappings = 'wfrp4e-core.trappings' // Per default
if (game.system.version.match("7.")) {
compendiumTrappings = 'wfrp4e-core.items'
}
let trapping_fr = game.babele.translate(compendiumTrappings, trait_en, true);
//console.log(">>>>> Trapping ?", name_en, trapping_fr.name);
trapping_fr.name = trapping_fr.name || trait_en.name
if (trapping_fr.system) {
trait_en.system.description = trapping_fr.system.description;
let validCompendiums = game.wfrp4e.tags.getPacksWithTag(["trapping"], ["weapon", "armour", "container", "money"])
for (let compData of validCompendiums) {
let trapping_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true);
if (trapping_fr?.system) {
//console.log(">>>>> Trapping ?", name_en, trapping_fr.name);
trait_en.name = trapping_fr.name || trait_en.name
if (trapping_fr.system?.description?.value) {
trait_en.system.description.value = trapping_fr.system.description.value
}
break;
}
}
}
}
@ -478,18 +468,13 @@ Hooks.once('init', () => {
}
//console.log("Carre groupe : ", value )
// Per default
let compendiumCareers = 'wfrp4e-core.careers' // Per default
if (game.system.version.match("7.")) {
compendiumCareers = 'wfrp4e-core.items'
}
let compendium = game.packs.find(p => p.collection === compendiumCareers);
if (compendium) {
let newName = game.babele.translate(compendiumCareers, { name: value }).name
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("career")
for (let compData of validCompendiums) {
let newName = game.babele.translate(compData.metadata.id, { name: value }).name
if (!newName) newName = value
return newName
} else {
ui.notifications.error("Impossible de trouver la carrière " + value + ". Elle n'est probablement pas traduite.", { permanent: true })
}
ui.notifications.error("Impossible de trouver la carrière " + value + ". Elle n'est probablement pas traduite.", { permanent: true })
return value
},
@ -556,10 +541,11 @@ Hooks.once('init', () => {
if (value == "Touch") return "Contact"; // Hop !
if (value == "You") return "Vous"; // Hop !
if (value == "Instant") return "Instantané"; // Hop !
var translw = value;
var re = /(.*) Bonus (\w*)/i;
var res = re.exec(value);
var unit = "";
let translw = value;
let re = /(.*) Bonus (\w*)/i;
let res = re.exec(value);
//console.log("RES1:", res);
let unit = "";
if (res) { // Test "<charac> Bonus <unit>" pattern
if (res[1]) { // We have char name, then convert it
translw = "Bonus de " + game.i18n.localize(res[1].trim());
@ -585,7 +571,12 @@ Hooks.once('init', () => {
if (unit == "days") unit = "jours";
if (unit == "yard") unit = "mètre";
if (unit == "yards") unit = "mètres";
translw += " " + unit;
if (unit == "Bonus") { // Another weird management
translw = "Bonus de " + translw;
} else {
translw += " " + unit;
}
//console.log("Spell duration/range/damage/target :", value, translw);
return translw;
}
});
@ -619,7 +610,7 @@ function registerUsageCount(registerKey) {
/*---------------------------------------------------------------------*/
Hooks.once('ready', () => {
registerUsageCount("wh4-fr-translation")

View File

@ -31,7 +31,7 @@
{
"id": "Karak Mountain Strider",
"name": "Arpenteur des karak",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"career_careergroup": "Patrouilleur des karak",
"trappings": [
"4 apprentis Coureurs des forts",
@ -52,7 +52,7 @@
{
"id": "Field Warden Captain",
"name": "Capitaine Gardechamps",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"career_careergroup": "Gardechamps",
"trappings": [
"garnison de Sergent Gardechamps",
@ -72,7 +72,7 @@
{
"id": "Badger Rider",
"name": "Chevaucheur de blaireau",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"career_careergroup": "Chevaucheur de blaireau",
"trappings": [
"fontes de selle",
@ -83,7 +83,7 @@
{
"id": "Hold Runner",
"name": "Coureur des forts",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"career_careergroup": "Patrouilleur des karak",
"trappings": [
"sac à dos",
@ -95,7 +95,7 @@
{
"id": "Forest's Wrath",
"name": "Courrouxde de la forêt",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"career_careergroup": "Rôdeur fantôme",
"trappings": [
"trophée d'un ennemi légendaire",
@ -111,7 +111,7 @@
{
"id": "Windwraith",
"name": "Esprit du vent",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"career_careergroup": "Rôdeur fantôme",
"trappings": [
"arc elfique et armure de cuir avec au moins 1 Atout chacun",
@ -131,7 +131,7 @@
{
"id": "Forest Ranger",
"name": "Garde forestier",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"career_careergroup": "Rôdeur fantôme",
"trappings": [
"sac à dos",
@ -143,7 +143,7 @@
{
"id": "Novice Warden",
"name": "Garde novice",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"career_careergroup": "Gardechamps",
"trappings": [
"sac à dos",
@ -156,7 +156,7 @@
{
"id": "Field Warden",
"name": "Gardechamps",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"career_careergroup": "Gardechamps",
"trappings": [
"veste en cuir",
@ -167,7 +167,7 @@
{
"id": "Karak Pathkeeper",
"name": "Gardien des routes des karak",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"career_careergroup": "Patrouilleur des karak",
"trappings": [
"outils (Maçonnerie)"
@ -206,7 +206,7 @@
{
"id": "Badger Master",
"name": "Maître blaireau",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"career_careergroup": "Chevaucheur de blaireau",
"trappings": [
"gros blaireau apprivoisé (blaireau-poney tacheté du Moot)",
@ -223,7 +223,7 @@
{
"id": "Karak Ranger",
"name": "Patrouilleur des karak",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.GBhO6rb28jKbYfEk]{Patrouilleur des Karak}</p>",
"career_careergroup": "Patrouilleur des karak",
"trappings": [
"arme à poudre noire avec munitions",
@ -248,7 +248,7 @@
{
"id": "Ghost Strider",
"name": "Rôdeur fantôme",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.J4o6g4sjXQ8OXjIj]{Rôdeur Fantôme}</p>",
"career_careergroup": "Rôdeur fantôme",
"trappings": [
"arc elfique et 10 flèches fabriquées par le Personnage",
@ -264,7 +264,7 @@
{
"id": "Badger Sergeant",
"name": "Sergent blaireau",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"career_careergroup": "Chevaucheur de blaireau",
"trappings": [
"caparaçon pour blaireau (2 PA sur la tête et le torse)",
@ -274,7 +274,7 @@
{
"id": "Field Warden Sergeant",
"name": "Sergent Gardechamps",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
"career_careergroup": "Gardechamps",
"trappings": [
"chemise de mailles de bonne qualité",
@ -284,7 +284,7 @@
{
"id": "Badger Botherer",
"name": "Taquineur de blaireau",
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"description": "<p>@Compendium[wfrp4e-archives1.journals.AKNVB3Of7B82YFT1]{Chevaucheur de blaireau}</p>",
"career_careergroup": "Chevaucheur de blaireau",
"trappings": [
"sac à dos",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -104,11 +104,11 @@
"name": "Ivre-mort",
"description": "Si vous échouez à un nombre de Tests de Résistance à l'Alcool égal à votre Bonus dEndurance, vous êtes Ivre. Faites un lancer sur le tableau suivant pour en connaître les conséquences:",
"results": {
"1-2": "<b>« Bravoure du Marienburgher ! »</b>: Gagnez un bonus de +20 à votre Compétence @Compendium[wfrp4e-core.skills.pxNjTxsp1Kp0SmQe].",
"3-4": "<b>« : Ignorez tous vos @Compendium[wfrp4e-core.psychologies.klCJX0mNpXYH5AIx]{Préjugés} et toutes vos @Compendium[wfrp4e-core.psychologies.Q2MCUrG2HppMcvN0]{Animosités} existantes.",
"1-2": "<b>« Bravoure du Marienburgher ! »</b>: Gagnez un bonus de +20 à votre Compétence @Compendium[wfrp4e-core.items.pxNjTxsp1Kp0SmQe].",
"3-4": "<b>« : Ignorez tous vos @Compendium[wfrp4e-core.items.klCJX0mNpXYH5AIx]{Préjugés} et toutes vos @Compendium[wfrp4e-core.items.Q2MCUrG2HppMcvN0]{Animosités} existantes.",
"5-6": "<b>« Pourquoi est-ce que la pièce tourne ? »</b>: : À votre tour, vous pouvez soit effectuer un Mouvement, soit une Action, mais pas les deux (voir page 157).",
"7-8": "<b>« Je vais tous vous prendre un par un ! »</b>: Gagnez @Compendium[wfrp4e-core.psychologies.Q2MCUrG2HppMcvN0]{Animosité (Tout le monde !)}.",
"9-10": "<b>« Comment je suis arrivé là ? »</b>: Vous vous réveillez le lendemain, avec une gueule de bois de tous les diables et peu de souvenirs de ce qui sest passé. Le MJ et les autres Joueurs qui étaient avec vous combleront les lacunes embarrassantes si vous cherchez à le savoir. Réussissez un Test de @Compendium[wfrp4e-core.skills.R2ytluHiEFF2KQ5e] ou gagnez un État @Condition[Empoisonné]."
"7-8": "<b>« Je vais tous vous prendre un par un ! »</b>: Gagnez @Compendium[wfrp4e-core.items.Q2MCUrG2HppMcvN0]{Animosité (Tout le monde !)}.",
"9-10": "<b>« Comment je suis arrivé là ? »</b>: Vous vous réveillez le lendemain, avec une gueule de bois de tous les diables et peu de souvenirs de ce qui sest passé. Le MJ et les autres Joueurs qui étaient avec vous combleront les lacunes embarrassantes si vous cherchez à le savoir. Réussissez un Test de @Compendium[wfrp4e-core.items.R2ytluHiEFF2KQ5e] ou gagnez un État @Condition[Empoisonné]."
}
},
{
@ -953,7 +953,7 @@
"76-80": "<b>Coeur du traître<\/b>:Les Sombres Dieux vous incitent à commettre une immonde perfidie. Si vous attaquez ou trahissez un allié dans toute la mesure de vos capacités, regagnez tous vos Points de Chance. Si vous faites perdre 1 Point de Destin à un autre Personnage, gagnez 1 Point de Destin.",
"1-5": "<b>Voix fantomatique<\/b>:Toutes les personnes dans un rayon de (Force Mentale) mètres entendent de sombres murmures envoûtants émanant du Royaume du Choas. Toutes les créatures douées de conscience doivent réussir un Test de Calme Accessible (+20) ou gagner 1 Point de Corruption.",
"6-10": "<b>Regard maudit<\/b>:Vos yeux prennent une couleur anormale associée à votre Domaine pendant [[1d10]] heures. Tant que vos yeux gardent cette couleur, vous possédez un État @Condition[Aveuglé] qui ne peut être retiré d'aucune façon.",
"11-15": "<b>Choc aethyrique<\/b>:Vous subissez <a class = 'chat-roll'><i class='fas fa-dice'><\/i> [[1d10]]<\/a> Blessures qui ignorent le Bonus d'Endurance et les PA. Réussissez un Test de Résistance Accessible (+20) ou gagnez également 1 État Assommé.",
"11-15": "<b>Choc aethyrique<\/b>:Vous subissez <a class = 'chat-roll'><i class='fas fa-dice'><\/i> [[1d10]]<\/a> Blessures qui ignorent le Bonus d'Endurance et les PA. Réussissez un Test de Résistance Accessible (+20) ou gagnez également 1 État Sonné.",
"16-20": "<b>Marche de la mort<\/b>:Vos pas sèment la mort sur leur passage. Pour les [[1d10]] prochaines heures, toutes lesp lantes vivantes près de vous fanent et meurent.",
"21-25": "<b>Rébellion intestinale<\/b>:Vos intestins deviennent incontrôlables et vous vous souillez. Gagnez 1 État @Condition[Exténué] qui ne peut être retiré tant que vous ne pouvez pas changer de vêtement et vous nettoyer",
"26-30": "<b>Feu de l'âme<\/b>:Gagnez 1 État @Condition[En Flammes], alors que vous êtes enveloppé de flammes impies de la couleur associée à votre Domaine.",
@ -966,7 +966,7 @@
"96-100": "<b>Contre-réaction aethyrique<\/b>:Quiconque situé dans un rayon en mètres égal à votre Bonus de Force Mentale, ami ou ennemi, subit [[1d10]] Points de Blessure qui ignore le Bonus d'Endurance et les PA, et reçoit 1 État @Condition[A Terre]. S'il n'y a aucune cible à portée, la magie n'a nulle part où aller, donc votre tête explose, vous tuant instantanément.",
"61-65": "<b>Lévitation<\/b>:Vous êtes soulevé par les Vents de Magie, flottant [[1d10]] mètres au-dessus du sol pendant [[1d10]] minutes. Les autres personnages peuvent vous déplacer de force, et vous pouvez avançer à l'aide de Sorts, d'ailes ou autre, mais vous revenez continuellement à votre position de lévitation lorsqu'on vous laisse tranquille.",
"91-95": "<b>Drain de puissance<\/b>:Vous êtes incapable d'utiliser le Talent vous permettant de lancer des Sorts, pendant [[1d10]] minutes.",
"66-70": "<b>Régurgitation<\/b>:Vous vomissez de façon incontrôlable bien plus de rejets que votre corps ne peut normallement en contenir. Gagnez l'État @Condition[Assommé], qui dure [[1d10]] rounds.",
"66-70": "<b>Régurgitation<\/b>:Vous vomissez de façon incontrôlable bien plus de rejets que votre corps ne peut normallement en contenir. Gagnez l'État @Condition[Sonné], qui dure [[1d10]] rounds.",
"86-90": "<b>Puanteur infernale<\/b>:VOus sentez vraiment mauvais ! Vous gagnez le Trait de créature Perturbant, et probablement l'inimité de toute personne ayant de l'odorat. Cet effet dure [[1d10]] heures.",
"71-75": "<b>Secousse du Chaos<\/b>:Toutes les créatures dans un rayon de 1d100 mètres doivent réussir un Test d'Athlétisme Accessible (+20) ou gagner l'État @Condition[Prone]{A Terre}.",
"81-85": "<b>Terrible affaiblissement<\/b>:Gagnez 1 point de Corruption, 1 État À Terre et 1 État @Condition[Exténué]."
@ -1019,8 +1019,8 @@
"41-60": "Vous avez mal jugé de votre manoeuvre, ce qui vous laisse hors de position, ou vous perdez la prise de votre arme à distance. Au cours du prochain round, votre Action subira une pénalité de -10.",
"61-70": "Vous trébuchez franchement et peinez à vous redresser. Vous perdez votre prochain Mouvement.",
"71-80": "Vous ne tenez pas votre arme correctement, ou vous laissez tomber vos munitions. Vous perdez votre prochaine Action",
"81-90": "Vous effectuez un mouvement trop ample, ou vous trébuchez et vous tordez la cheville. Subissez le traumatisme @Compendium[wfrp4e-core.injuries.rlXUw5Bgz2xUjVbU]{Déchirure Musculaire (Mineur)} (voir p179). Ce dernier compte comme une Blessure Critique.",
"91-100": "Vous manquez complètement votre attaque et touchez 1 Allié au hasard à distance en utilisant le chiffre des unités de votre lancer de dés pour déterminer le DR.SI personne n'est à distance, vous vous frappez tout seul et obtenez l'état @Condition[Assommé] (voir p 167)."
"81-90": "Vous effectuez un mouvement trop ample, ou vous trébuchez et vous tordez la cheville. Subissez le traumatisme @Compendium[wfrp4e-core.items.rlXUw5Bgz2xUjVbU]{Déchirure Musculaire (Mineur)} (voir p179). Ce dernier compte comme une Blessure Critique.",
"91-100": "Vous manquez complètement votre attaque et touchez 1 Allié au hasard à distance en utilisant le chiffre des unités de votre lancer de dés pour déterminer le DR.SI personne n'est à distance, vous vous frappez tout seul et obtenez l'état @Condition[Sonné] (voir p 167)."
}
},
{
@ -1077,13 +1077,13 @@
"101-105": "<b>Châtiment<\/b>:Vous êtes réduit à 0 Blessures (si vous n'y êtes pas déjà) puis gagnez un État @Condition[Inconscient], qui ne peut pas être enlevée tant que vous n'avez pas récupéré au moins 1 Blessures.",
"31-35": "<b>Je trouve inquiétant votre manque de foi<\/b>:Vous ne pouvez pas faire de Tests de Prières pour [[1d10]] + (Points de Péché) Rounds.",
"106-110": "<b>Ne prononcez pas mon nom en vain<\/b>:Vous perdez les Talents Bénis et Invoqués pour les prochains [[1d10]] + (Points de Péché) jours.",
"36-40": "<b>Partagez ma douleur<\/b>:Vous souffrez de blessures de 1+(Points de Péché), ignorant le bonus d'Endurance et les PA. Tentez également un Test de Résistance Accessible (+20). Si vous échouez, gagnez un État @Condition[Assommé].",
"36-40": "<b>Partagez ma douleur<\/b>:Vous souffrez de blessures de 1+(Points de Péché), ignorant le bonus d'Endurance et les PA. Tentez également un Test de Résistance Accessible (+20). Si vous échouez, gagnez un État @Condition[Sonné].",
"141-145": "<b>Prouvez votre valeur<\/b>:Un serviteur divin de votre divinité apparaît à moins de 100 mètres et attaque, intervient, réprimande ou similaire selon la nature du dieu offensé.",
"41-45": "<b>Votre cause est indigne<\/b>:Vos cibles gagnent un État À Terre. Toutes les Bénédictions ou Miracles de votre divinité qui les ciblent échouent automatiquement pour les prochains [[1d10]] + (Points de Péché) jours.",
"136-140": "<b>Excommunication<\/b>:Vous perdez les Talents Invoquer et Bénir jusqu'à ce que vous exécutiez 2 Pénitences ; la première Pénitence rend le Talent Bénir, et la seconde rend le Talent Invoquer. Tous les adeptes de votre dieu sont automatiquement conscients de votre situation ; tous les Tests pour interagir avec eux sont automatiquement Très Difficile (-30), et ne peuvent être modifiés positivement au-delà de cela.",
"46-50": "<b>Cessez vos babillages<\/b>:Vous ne pouvez pas faire de Tests de Prière pour les prochains [[2d10]] + (Points de Péché) rounds.",
"131-135": "<b>Souffrez comme je souffre<\/b>:Vous gagnez 1+(Points de Péché) @Condition[Hémorragique] chaque matin, jusqu'à ce que vous ayez fait une pénitence.",
"51-55": "<b>Ressentez ma colère<\/b>:Vous souffrez de [[1d10]] + (Points de Péché) Blessures. Tentez également un Test de Résistance Intermédiaire (+0). Si vous échouez, gagnez un État @Condition[Assommé].",
"51-55": "<b>Ressentez ma colère<\/b>:Vous souffrez de [[1d10]] + (Points de Péché) Blessures. Tentez également un Test de Résistance Intermédiaire (+0). Si vous échouez, gagnez un État @Condition[Sonné].",
"126-130": "<b>Tonerre et foudre<\/b>:Ton dieu te frappe. Vous êtes réduit à 0 Blessures (si vous n'y êtes pas déjà) et obtenez l'État @Condition[En Flammes].",
"56-60": "<b>Je ne vous aiderez pas<\/b>:Vous subissez une pénalité de -10 à une Compétence associée à votre divinité (telle que déterminée par le MJ) pour les prochains [[1d10]] + (Points de Péché) jours .",
"121-125": "<b>Contemplez votre cruauté<\/b>:Vous souffrez de visions atroces de tous vos échecs, qui semblent durer une éternité, mais qui sont terminés en un instant. Discutez avec votre MJ pour crée une psychologie personnalisée (voir page 190) qui reflète votre personnage qui vit l'expérience traumatisante.",
@ -1091,18 +1091,18 @@
"116-120": "<b>Vous abusez de ma miséricorde<\/b>:Vous perdez les Talents d'Invoquer et de Bénir pour les prochains [[2d10]] + Jours de (Points de Péché).",
"66-70": "<b>Frappé de cécité<\/b>:Gagnez l'État @Condition[A Terre]. Gagnez 1+(Points de Péché) État @Condition[Aveuglé], qui ne peut être éliminé qu'en passant un Test de Prière Intermédiaire (+0), avec succès en éliminant 1 + DR États @Condition[Aveuglé].",
"111-115": "<b>Ne vous attachez pas aux futilités<\/b>:Toutes vos Objet sont retirées, vous laissant nue. Pour chaque pénitence que vous complétez, vous aurez un objet magique pris qui vous sera retourné, si vous avez un.",
"71-75": "<b>Qu'allez-vous sacrifier ?<\/b>:Vous souffrez [[1d10]] + (Points de Péché) Blessures, ignorant le Bonus d'Endurance et les PA. Essayez également un Test de Résistance Complexe (-10). Si vous échouez, gagnez un État @Condition[Assommé].",
"71-75": "<b>Qu'allez-vous sacrifier ?<\/b>:Vous souffrez [[1d10]] + (Points de Péché) Blessures, ignorant le Bonus d'Endurance et les PA. Essayez également un Test de Résistance Complexe (-10). Si vous échouez, gagnez un État @Condition[Sonné].",
"146-150": "<b>Je te chasse<\/b>:Tu es abandonné par ton dieu. Vous perdez définitivement les Talents Bénis et Invoqués, et vous perdez toutes les Avancées de Prière. De plus, tous les adeptes de votre dieu sont automatiquement conscients de votre situation ; tous les Tests pour interagir avec eux sont automatiquement Très Difficile (-30), et ne peuvent être modifiés positivement au-delà.",
"76-80": "<b>Vous avez péché contre moi<\/b>:Votre dieu est extrêmement agacé et vous force à faire des Tests de Prière en guise d'Action pour les prochains [[1d10]] + Points Péché Rounds en pénitence.",
"151-151": "<b>Appelé à rendre des comtes<\/b>:Tu es convoqué devant ton dieu pour faire face au jugement final. A moins d'avoir un Point de Destins, vous ne revenez jamais. Si vous dépensez un Point de Destin, vous êtes renvoyé à un point choisi par le MJ, et vous subissez également les effets de Je vous chasse.",
"1-5": "<b>Visions sacrées<\/b>:Les visions de votre dieu tourmentent vos sens. Tenter un Test de Résistance Accessible (+20). Si vous échouez, gagnez un Etat @Condition[Assommé]. Le MJ détermine ce que peuvent être les visions.",
"1-5": "<b>Visions sacrées<\/b>:Les visions de votre dieu tourmentent vos sens. Tenter un Test de Résistance Accessible (+20). Si vous échouez, gagnez un Etat @Condition[Sonné]. Le MJ détermine ce que peuvent être les visions.",
"96-100": "<b>Faites pénitence<\/b>:Tu dois faire une pénitence.",
"6-10": "<b>Pensez à vos actes<\/b>:Tout Test de Prière réussi ne peut pas atteindre plus de +0 DR pour la semaine suivante.",
"89-95": "<b>Redoutez ma colère<\/b>:Gagnez 1+(Points de Péché) en État @Condition[Brisé].",
"11-15": "<b>Tenez compte de mes enseignements<\/b>:Vous souffrez d'une pénalité de -10 à votre Compétence de Prière pour les [[1d10]] + (Points de Péché) prochains Rounds.",
"88-88": "<b>Interférence démoniaque<\/b>:Les Dieux des Ténèbres répondent à vos supplications au lieu de votre dieux. [[1d10]] Petits Démons apparaissent à moins de [[2d10]] mètres de votre position, et attaquent les cibles les plus proches.",
"16-20": "<b>Prouvez votre dévotion<\/b>:Gagnez un État @Condition[A Terre]. Cette condition n'est pas supprimée tant que vous n'avez pas réussi un Test de Prière Accessible (+20).",
"81-87": "<b>Purifier la chair<\/b>:Vous souffrez de [[2d10]] + (Points de Péché) Blessures, ignorant le bonus d'Endurance et les PA. Tentez également un Test de Résistance Difficile (-20). Si vous échouez, gagnez un État @Condition[Assommé]. Si vous échouez avec -4 DR ou moins, obtenez un État @Condition[Unconscious]{Inconscient} qui dure un minimum de [[1d10]] Rounds.",
"81-87": "<b>Purifier la chair<\/b>:Vous souffrez de [[2d10]] + (Points de Péché) Blessures, ignorant le bonus d'Endurance et les PA. Tentez également un Test de Résistance Difficile (-20). Si vous échouez, gagnez un État @Condition[Sonné]. Si vous échouez avec -4 DR ou moins, obtenez un État @Condition[Unconscious]{Inconscient} qui dure un minimum de [[1d10]] Rounds.",
"21-25": "<b>Vous abusez de ma patience<\/b>:Vous ne pouvez pas faire de Tests de Prière pour [[1d10]] Rounds."
}
},

View File

@ -779,7 +779,7 @@
{
"description": "<p style=\"text-align: justify;\">Le prix varie en fonction de la fabrication, du type de métal et de la valeur des gemmes. En règle générale, des bagues communes sans gemme coûtent 10 pièces du métal correspondant (par exemple, cuivre, argent ou or) alors que les colliers coûtent 20 pièces du métal correspondant.</p>",
"effects": [],
"id": "Jewellry",
"id": "Jewellery",
"name": "Bijoux"
},
{

View File

@ -138,7 +138,7 @@
{
"id": "Bestial Rage",
"name": "Rage Bestiale",
"description": "<p>Vous invoquez la fureur de la bête, obtenant temporairement le Trait @Compendium[wfrp4e-core.traits.fjd1u9VAgiYzhBRp]{Rage} .</p>"
"description": "<p>Vous invoquez la fureur de la bête, obtenant temporairement le Trait @Compendium[wfrp4e-core.items.fjd1u9VAgiYzhBRp]{Rage} .</p>"
},
{
"id": "Blood Drain",
@ -213,7 +213,7 @@
{
"id": "Climb",
"name": "Escalade",
"description": "<p>Vos ongles de doigts et d'orteils deviennent des courtes griffes, pas assez longues pour servir d'armes mais suffisantes pour rendre l'escalade beaucoup plus facile. Lorsque vous êtes pieds nus et sans gants, vous obtenez le Talent @Compendium[wfrp4e-core.talents.MGEPI4jNhymNIRVz]{Grimpeur} Grimpeur pour la durée du sort.</p>"
"description": "<p>Vos ongles de doigts et d'orteils deviennent des courtes griffes, pas assez longues pour servir d'armes mais suffisantes pour rendre l'escalade beaucoup plus facile. Lorsque vous êtes pieds nus et sans gants, vous obtenez le Talent @Compendium[wfrp4e-core.items.MGEPI4jNhymNIRVz]{Grimpeur} Grimpeur pour la durée du sort.</p>"
},
{
"id": "Closed Rowlock",
@ -238,7 +238,7 @@
{
"id": "Eyes of the Beast",
"name": "Eyes of the Beast",
"description": "<p>Vos yeux brillent d'une lumière verte impie, vous permettant de voir comme si vous aviez le Trait @Compendium[wfrp4e-core.traits.FmHDbCOy3pH8yKhm]{Night Vision} Vision Nocturne . Si vous avez déjà la Vision Nocturne, la portée de votre vue nocturne double.</p>"
"description": "<p>Vos yeux brillent d'une lumière verte impie, vous permettant de voir comme si vous aviez le Trait @Compendium[wfrp4e-core.items.FmHDbCOy3pH8yKhm]{Night Vision} Vision Nocturne . Si vous avez déjà la Vision Nocturne, la portée de votre vue nocturne double.</p>"
},
{
"id": "Favoured of Tzeentch",
@ -333,7 +333,7 @@
{
"id": "Invisible",
"name": "Invisible",
"description": "<p>A Character with the @Compendium[wfrp4e-core.talents.OEjUvJKi0xmBwbS2]{Second Sight} Talent can see the ghost as a faint, smoke-like swirl in the air, and may attack with no penalties to hit. Attacks by other Characters suffer a -40 penalty to hit, reduced to -30 if a Character with Second Sight is directing the attacks.</p>"
"description": "<p>A Character with the @Compendium[wfrp4e-core.items.OEjUvJKi0xmBwbS2]{Second Sight} Talent can see the ghost as a faint, smoke-like swirl in the air, and may attack with no penalties to hit. Attacks by other Characters suffer a -40 penalty to hit, reduced to -30 if a Character with Second Sight is directing the attacks.</p>"
},
{
"id": "Juck",
@ -384,7 +384,7 @@
{
"id": "Potion of Flight",
"name": "Potion of Flight",
"description": "<p>When drunk, this potion affects the drinker as a @Compendium[wfrp4e-core.spells.9wmmln3DunIqGXM2]{Flight} Spell. The effect lasts for 20 Rounds, minus the drinker&rsquo;s Toughness bonus.</p>"
"description": "<p>When drunk, this potion affects the drinker as a @Compendium[wfrp4e-core.items.9wmmln3DunIqGXM2]{Flight} Spell. The effect lasts for 20 Rounds, minus the drinker&rsquo;s Toughness bonus.</p>"
},
{
"id": "Racing Hull",
@ -459,7 +459,7 @@
{
"id": "Ring of Protection against Undead",
"name": "Ring of Protection against Undead",
"description": "<p>The wearer of the Ring of Protection against Undead takes half normal damage from all attacks by enemies with the @Compendium[wfrp4e-core.traits.PFTD9gDvRWW9uh5g]{Undead} Creature Trait that do not also have the @Compendium[wfrp4e-core.traits.tNWrJUOArwfWXsPw]{Ethereal} Creature Trait, and gains a bonus of + 10 to all tests for all spells, Skills, and Traits pertaining to such creatures.</p>"
"description": "<p>The wearer of the Ring of Protection against Undead takes half normal damage from all attacks by enemies with the @Compendium[wfrp4e-core.items.PFTD9gDvRWW9uh5g]{Undead} Creature Trait that do not also have the @Compendium[wfrp4e-core.items.tNWrJUOArwfWXsPw]{Ethereal} Creature Trait, and gains a bonus of + 10 to all tests for all spells, Skills, and Traits pertaining to such creatures.</p>"
},
{
"id": "Ring of Protection from Fire",
@ -484,7 +484,7 @@
{
"id": "Sign of the Beast",
"name": "Sign of the Beast",
"description": "<p>Your face shifts subtly, displaying the mark of Tzeentch and the signs of bestial nature; Beastmen of Tzeentch know you as a friend and ally. Gain +20 to all <strong>Fellowship </strong>Tests when dealing with such creatures. Any followers or creatures of Khorne or Slaanesh suffer @Compendium[wfrp4e-core.traits.0VpT5yubw4UL7j6f]{Animosity} toward you, while those of Nurgle regard you with @Compendium[wfrp4e-core.traits.aE3pyW20Orvdjzj0]{Hatred}.</p>"
"description": "<p>Your face shifts subtly, displaying the mark of Tzeentch and the signs of bestial nature; Beastmen of Tzeentch know you as a friend and ally. Gain +20 to all <strong>Fellowship </strong>Tests when dealing with such creatures. Any followers or creatures of Khorne or Slaanesh suffer @Compendium[wfrp4e-core.items.0VpT5yubw4UL7j6f]{Animosity} toward you, while those of Nurgle regard you with @Compendium[wfrp4e-core.items.aE3pyW20Orvdjzj0]{Hatred}.</p>"
},
{
"id": "Slave to Chaos",
@ -579,7 +579,7 @@
{
"id": "Transformation of the Beast",
"name": "Transformation of the Beast",
"description": "<p>You channel the power of Tzeentch, and your body transforms into that of a @Compendium[wfrp4e-core.bestiary.R37OtN5gmPWCYOP3]{Gor}. You gain the following temporary benefits:</p>\n<p><strong>Characteristics</strong>: use your own characteristic or that of a Gor, whichever is better.</p>\n<p><strong>Traits</strong>: gain @Compendium[wfrp4e-core.traits.VUJUZVN3VYhOaPjj]{Armour 1}, @Compendium[wfrp4e-core.traits.fjd1u9VAgiYzhBRp]{Fury}, and @Compendium[wfrp4e-core.traits.BqPZn6q3VHn9HUrW]{Horns +6}</p>\n<p><strong>Skills</strong>: gain Beast Tongue but lose the ability to speak intelligibly in any other language.</p>"
"description": "<p>You channel the power of Tzeentch, and your body transforms into that of a @Compendium[wfrp4e-core.bestiary.R37OtN5gmPWCYOP3]{Gor}. You gain the following temporary benefits:</p>\n<p><strong>Characteristics</strong>: use your own characteristic or that of a Gor, whichever is better.</p>\n<p><strong>Traits</strong>: gain @Compendium[wfrp4e-core.items.VUJUZVN3VYhOaPjj]{Armour 1}, @Compendium[wfrp4e-core.items.fjd1u9VAgiYzhBRp]{Fury}, and @Compendium[wfrp4e-core.items.BqPZn6q3VHn9HUrW]{Horns +6}</p>\n<p><strong>Skills</strong>: gain Beast Tongue but lose the ability to speak intelligibly in any other language.</p>"
},
{
"id": "Tremor",

View File

@ -150,7 +150,7 @@
{
"id": "Bestial Rage",
"name": "Rage Bestiale",
"description": "<p>Vous invoquez la fureur de la bête, obtenant temporairement le Trait @Compendium[wfrp4e-core.traits.fjd1u9VAgiYzhBRp]{Rage} .</p>"
"description": "<p>Vous invoquez la fureur de la bête, obtenant temporairement le Trait @Compendium[wfrp4e-core.items.fjd1u9VAgiYzhBRp]{Rage} .</p>"
},
{
"id": "Blood Drain",
@ -225,7 +225,7 @@
{
"id": "Climb",
"name": "Escalade",
"description": "<p>Vos ongles de doigts et d'orteils deviennent des courtes griffes, pas assez longues pour servir d'armes mais suffisantes pour rendre l'escalade beaucoup plus facile. Lorsque vous êtes pieds nus et sans gants, vous obtenez le Talent @Compendium[wfrp4e-core.talents.MGEPI4jNhymNIRVz]{Grimpeur} Grimpeur pour la durée du sort.</p>"
"description": "<p>Vos ongles de doigts et d'orteils deviennent des courtes griffes, pas assez longues pour servir d'armes mais suffisantes pour rendre l'escalade beaucoup plus facile. Lorsque vous êtes pieds nus et sans gants, vous obtenez le Talent @Compendium[wfrp4e-core.items.MGEPI4jNhymNIRVz]{Grimpeur} Grimpeur pour la durée du sort.</p>"
},
{
"id": "Closed Rowlock",
@ -250,7 +250,7 @@
{
"id": "Eyes of the Beast",
"name": "Eyes of the Beast",
"description": "<p>Vos yeux brillent d'une lumière verte impie, vous permettant de voir comme si vous aviez le Trait @Compendium[wfrp4e-core.traits.FmHDbCOy3pH8yKhm]{Night Vision} Vision Nocturne . Si vous avez déjà la Vision Nocturne, la portée de votre vue nocturne double.</p>"
"description": "<p>Vos yeux brillent d'une lumière verte impie, vous permettant de voir comme si vous aviez le Trait @Compendium[wfrp4e-core.items.FmHDbCOy3pH8yKhm]{Night Vision} Vision Nocturne . Si vous avez déjà la Vision Nocturne, la portée de votre vue nocturne double.</p>"
},
{
"id": "Favoured of Tzeentch",
@ -345,7 +345,7 @@
{
"id": "Invisible",
"name": "Invisible",
"description": "<p>A Character with the @Compendium[wfrp4e-core.talents.OEjUvJKi0xmBwbS2]{Second Sight} Talent can see the ghost as a faint, smoke-like swirl in the air, and may attack with no penalties to hit. Attacks by other Characters suffer a -40 penalty to hit, reduced to -30 if a Character with Second Sight is directing the attacks.</p>"
"description": "<p>A Character with the @Compendium[wfrp4e-core.items.OEjUvJKi0xmBwbS2]{Second Sight} Talent can see the ghost as a faint, smoke-like swirl in the air, and may attack with no penalties to hit. Attacks by other Characters suffer a -40 penalty to hit, reduced to -30 if a Character with Second Sight is directing the attacks.</p>"
},
{
"id": "Juck",
@ -396,7 +396,7 @@
{
"id": "Potion of Flight",
"name": "Potion of Flight",
"description": "<p>When drunk, this potion affects the drinker as a @Compendium[wfrp4e-core.spells.9wmmln3DunIqGXM2]{Flight} Spell. The effect lasts for 20 Rounds, minus the drinker&rsquo;s Toughness bonus.</p>"
"description": "<p>When drunk, this potion affects the drinker as a @Compendium[wfrp4e-core.items.9wmmln3DunIqGXM2]{Flight} Spell. The effect lasts for 20 Rounds, minus the drinker&rsquo;s Toughness bonus.</p>"
},
{
"id": "Racing Hull",
@ -471,7 +471,7 @@
{
"id": "Ring of Protection against Undead",
"name": "Ring of Protection against Undead",
"description": "<p>The wearer of the Ring of Protection against Undead takes half normal damage from all attacks by enemies with the @Compendium[wfrp4e-core.traits.PFTD9gDvRWW9uh5g]{Undead} Creature Trait that do not also have the @Compendium[wfrp4e-core.traits.tNWrJUOArwfWXsPw]{Ethereal} Creature Trait, and gains a bonus of + 10 to all tests for all spells, Skills, and Traits pertaining to such creatures.</p>"
"description": "<p>The wearer of the Ring of Protection against Undead takes half normal damage from all attacks by enemies with the @Compendium[wfrp4e-core.items.PFTD9gDvRWW9uh5g]{Undead} Creature Trait that do not also have the @Compendium[wfrp4e-core.items.tNWrJUOArwfWXsPw]{Ethereal} Creature Trait, and gains a bonus of + 10 to all tests for all spells, Skills, and Traits pertaining to such creatures.</p>"
},
{
"id": "Ring of Protection from Fire",
@ -496,7 +496,7 @@
{
"id": "Sign of the Beast",
"name": "Sign of the Beast",
"description": "<p>Your face shifts subtly, displaying the mark of Tzeentch and the signs of bestial nature; Beastmen of Tzeentch know you as a friend and ally. Gain +20 to all <strong>Fellowship </strong>Tests when dealing with such creatures. Any followers or creatures of Khorne or Slaanesh suffer @Compendium[wfrp4e-core.traits.0VpT5yubw4UL7j6f]{Animosity} toward you, while those of Nurgle regard you with @Compendium[wfrp4e-core.traits.aE3pyW20Orvdjzj0]{Hatred}.</p>"
"description": "<p>Your face shifts subtly, displaying the mark of Tzeentch and the signs of bestial nature; Beastmen of Tzeentch know you as a friend and ally. Gain +20 to all <strong>Fellowship </strong>Tests when dealing with such creatures. Any followers or creatures of Khorne or Slaanesh suffer @Compendium[wfrp4e-core.items.0VpT5yubw4UL7j6f]{Animosity} toward you, while those of Nurgle regard you with @Compendium[wfrp4e-core.items.aE3pyW20Orvdjzj0]{Hatred}.</p>"
},
{
"id": "Slave to Chaos",
@ -591,7 +591,7 @@
{
"id": "Transformation of the Beast",
"name": "Transformation of the Beast",
"description": "<p>You channel the power of Tzeentch, and your body transforms into that of a @Compendium[wfrp4e-core.bestiary.R37OtN5gmPWCYOP3]{Gor}. You gain the following temporary benefits:</p>\n<p><strong>Characteristics</strong>: use your own characteristic or that of a Gor, whichever is better.</p>\n<p><strong>Traits</strong>: gain @Compendium[wfrp4e-core.traits.VUJUZVN3VYhOaPjj]{Armour 1}, @Compendium[wfrp4e-core.traits.fjd1u9VAgiYzhBRp]{Fury}, and @Compendium[wfrp4e-core.traits.BqPZn6q3VHn9HUrW]{Horns +6}</p>\n<p><strong>Skills</strong>: gain Beast Tongue but lose the ability to speak intelligibly in any other language.</p>"
"description": "<p>You channel the power of Tzeentch, and your body transforms into that of a @Compendium[wfrp4e-core.bestiary.R37OtN5gmPWCYOP3]{Gor}. You gain the following temporary benefits:</p>\n<p><strong>Characteristics</strong>: use your own characteristic or that of a Gor, whichever is better.</p>\n<p><strong>Traits</strong>: gain @Compendium[wfrp4e-core.items.VUJUZVN3VYhOaPjj]{Armour 1}, @Compendium[wfrp4e-core.items.fjd1u9VAgiYzhBRp]{Fury}, and @Compendium[wfrp4e-core.items.BqPZn6q3VHn9HUrW]{Horns +6}</p>\n<p><strong>Skills</strong>: gain Beast Tongue but lose the ability to speak intelligibly in any other language.</p>"
},
{
"id": "Tremor",

View File

@ -49,7 +49,7 @@
{
"id": "Waterborne Diseases",
"name": "Maladies Fluviales",
"results": {"76-80":"@Compendium[wfrp4e-dotr.dotr-items.PIqixe4OQgrVQpFc]{Vers des Cavités}","81-90":"@Compendium[wfrp4e-dotr.items.pl0JMqXbCFSYGvBLnE]{Vers du Reik}","91-100":"@Compendium[wfrp4e-core.diseases.herUmN51D9TiL2Vn]{Flux sanglant}","1-40":"@Compendium[wfrp4e-core.diseases.txeLd7R13qxSvmsr]{Galopante}","41-60":"@Compendium[wfrp4e-dotr.dotr-items.fUYD3itr7AlZwQDI]{La Grippe}","61-70":"@Compendium[wfrp4e-core.diseases.1hQuVFZt9QnnbWzg]{Infection Mineure}","71-75":"@Compendium[wfrp4e-core.diseases.kKccDTGzWzSXCBOb]{Blessure Infectée}"}
"results": {"76-80":"@Compendium[wfrp4e-dotr.items.PIqixe4OQgrVQpFc]{Vers des Cavités}","81-90":"@Compendium[wfrp4e-dotr.items.pl0JMqXbCFSYGvBLnE]{Vers du Reik}","91-100":"@Compendium[wfrp4e-core.diseases.herUmN51D9TiL2Vn]{Flux sanglant}","1-40":"@Compendium[wfrp4e-core.diseases.txeLd7R13qxSvmsr]{Galopante}","41-60":"@Compendium[wfrp4e-dotr.items.fUYD3itr7AlZwQDI]{La Grippe}","61-70":"@Compendium[wfrp4e-core.diseases.1hQuVFZt9QnnbWzg]{Infection Mineure}","71-75":"@Compendium[wfrp4e-core.diseases.kKccDTGzWzSXCBOb]{Blessure Infectée}"}
},
{
"id": "Wind Table",

View File

@ -78,7 +78,7 @@
{
"id": "Fleshthief",
"name": "Voleur de chair",
"description": "<p><span class=\"fontstyle0\">La créature, qui doit posséder le Trait @Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque}</span><span class=\"fontstyle2\">&nbsp;</span><span class=\"fontstyle0\">, peut porter l'apparence de n'importe quel humain qu'elle a tué. De plus, elle peut parfaitement imiter la personne, y compris sa voix et ses manières. Préparer cette apparence prend <a class=\"chat-roll\">1d10</a> Rounds, après quoi cette aparence peut être enlevée ou remise en 1 Round. Une fois revêtue, l'apparence disparait uniquement si la créature est tuée, et elle peut-être atteinte par des armes normales. Si la créature le souhaite, elle peut gratuitement transformer cette apparence d'une manière horrible, gagnant aisni le Trait @Compendium[wfrp4e.traits.kJNAY1YRaCy9IgmT]{Terreur 1}</span><span class=\"fontstyle2\"> &nbsp;</span><span class=\"fontstyle0\"> pendant 1 Round. L'apparence ainsi transformée est détruite par l'opération et ne peut plus être utilisée par la créature.</span></p>\n<p><span class=\"fontstyle0\"><br>Ceux qui connaissent la personne dont l'apparence a été prise peut tenter un Test </span><strong><span class=\"fontstyle3\">d'Intuition Futile (-40)</span></strong><span class=\"fontstyle0\"> pour détecter su'il ya quelque chose de curieux, mais sans savoir exactement quoi.</span> .</p>"
"description": "<p><span class=\"fontstyle0\">La créature, qui doit posséder le Trait @Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque}</span><span class=\"fontstyle2\">&nbsp;</span><span class=\"fontstyle0\">, peut porter l'apparence de n'importe quel humain qu'elle a tué. De plus, elle peut parfaitement imiter la personne, y compris sa voix et ses manières. Préparer cette apparence prend <a class=\"chat-roll\">1d10</a> Rounds, après quoi cette aparence peut être enlevée ou remise en 1 Round. Une fois revêtue, l'apparence disparait uniquement si la créature est tuée, et elle peut-être atteinte par des armes normales. Si la créature le souhaite, elle peut gratuitement transformer cette apparence d'une manière horrible, gagnant aisni le Trait @Compendium[wfrp4e-core.items.kJNAY1YRaCy9IgmT]{Terreur 1}</span><span class=\"fontstyle2\"> &nbsp;</span><span class=\"fontstyle0\"> pendant 1 Round. L'apparence ainsi transformée est détruite par l'opération et ne peut plus être utilisée par la créature.</span></p>\n<p><span class=\"fontstyle0\"><br>Ceux qui connaissent la personne dont l'apparence a été prise peut tenter un Test </span><strong><span class=\"fontstyle3\">d'Intuition Futile (-40)</span></strong><span class=\"fontstyle0\"> pour détecter su'il ya quelque chose de curieux, mais sans savoir exactement quoi.</span> .</p>"
},
{
"id": "Mark of Tzeentch",
@ -128,7 +128,7 @@
{
"id": "Tzeentch's Fire",
"name": "Feu de Tzeentch",
"description": "<p><span class=\"fontstyle0\">La créature est courronnée par le Feu de Tzeentch, qui s'échappe frequemment par les doigts, la mouche ou les yeux. Toutes les créatures d'un même type (ie toutes les Horreurs Roses, toutes les Horreur Bleues) dans le voisinnage groupent leur pouvoirs. L'une des Horreurs est choisie pour recevoir ce pouvoir et peut Incanter 1 sort de Tzeentch. Les Horreurs Roses lancent le sort @Compendium[eis.eisspells.sklbZU3K8ogeu3mC]{Flammes Roses de Tzeentch}; les autres peuvent lancer @Compendium[eis.eisspells.mR4cEXEAfLCqlnQ6]{Flamme Bleue de Tzeentch}. Chaque créature supplémentaire qui contribue ajoute gratuitement +1 DR, jusqu'à un maximum de +9 DR</span></p>"
"description": "<p><span class=\"fontstyle0\">La créature est courronnée par le Feu de Tzeentch, qui s'échappe frequemment par les doigts, la mouche ou les yeux. Toutes les créatures d'un même type (ie toutes les Horreurs Roses, toutes les Horreur Bleues) dans le voisinnage groupent leur pouvoirs. L'une des Horreurs est choisie pour recevoir ce pouvoir et peut Incanter 1 sort de Tzeentch. Les Horreurs Roses lancent le sort @Compendium[wfrp4e-eis.items.sklbZU3K8ogeu3mC]{Flammes Roses de Tzeentch}; les autres peuvent lancer @Compendium[wfrp4e-eis.items.mR4cEXEAfLCqlnQ6]{Flamme Bleue de Tzeentch}. Chaque créature supplémentaire qui contribue ajoute gratuitement +1 DR, jusqu'à un maximum de +9 DR</span></p>"
},
{
"id": "Dog",

View File

@ -14,12 +14,12 @@
{
"id": "Acid Blood",
"name": "Sang acide",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.M5QSWOYt2Rbv2yxW]{Sang corrosif}</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.M5QSWOYt2Rbv2yxW]{Sang corrosif}</p>"
},
{
"id": "Aethyric Leak",
"name": "Fuite Aethérique",
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.talents.qdMbxW09FUoYBzmB]{Sorcier!}</p>"
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.items.qdMbxW09FUoYBzmB]{Sorcier!}</p>"
},
{
"id": "Animalistic Legs",
@ -29,22 +29,22 @@
{
"id": "Animalistic Psyche",
"name": "Esprit Animal",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.AGcJl5rHjkyIQBPP]{Bestial} pour <strong><a class=\"chat-roll\">1d10</a></strong> heures si vous échouez à n'importe quel Test dérivé de Force Mentale</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.AGcJl5rHjkyIQBPP]{Bestial} pour <strong><a class=\"chat-roll\">1d10</a></strong> heures si vous échouez à n'importe quel Test dérivé de Force Mentale</p>"
},
{
"id": "Beacon of Corruption",
"name": "Balise de Corruption",
"description": "<p>Lorsque vous êtes sujet à la Psychologie, gagnez le Trait de Creature @Compendium[wfrp4e-core.traits.xsGbDFqK2qh7lsIj]{Corruption} (Mineure)</p>"
"description": "<p>Lorsque vous êtes sujet à la Psychologie, gagnez le Trait de Creature @Compendium[wfrp4e-core.items.xsGbDFqK2qh7lsIj]{Corruption} (Mineure)</p>"
},
{
"id": "Beaked Face",
"name": "Bec au visage",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure}&nbsp;+3; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure}&nbsp;+3; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Bear Head",
"name": "Tête d'Ours",
"description": "<p>+1 PA à la tête; Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +9 ; cette mutation ne peut pas être cachée</p>"
"description": "<p>+1 PA à la tête; Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +9 ; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Beast Head",
@ -59,42 +59,42 @@
{
"id": "Beyond Pain",
"name": "Au delà de la souffrance",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.wMwSRDmgiF2IdCJr]{Insensible à la douleur}</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.wMwSRDmgiF2IdCJr]{Insensible à la douleur}</p>"
},
{
"id": "Big Ears",
"name": "Grandes Oreilles",
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.talents.9h82z72XGo9tfgQS]{Sens auguisé}&nbsp;(Ouïe); cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.items.9h82z72XGo9tfgQS]{Sens auguisé}&nbsp;(Ouïe); cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Bird's Feet",
"name": "Pieds d'Oiseaux",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.rOV2s6PQBBrhpMOv]{Arboricole}</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.rOV2s6PQBBrhpMOv]{Arboricole}</p>"
},
{
"id": "Blank Face",
"name": "Visage Vide",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur}&nbsp;2; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur}&nbsp;2; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Blasphemous Soul",
"name": "Ame blasphématoire",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.aE3pyW20Orvdjzj0]{Haine} (Religion)</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.aE3pyW20Orvdjzj0]{Haine} (Religion)</p>"
},
{
"id": "Blasted Mind",
"name": "Esprit dévasté",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.IAWyzDfC286a9MPz]{Immunité psychologique} pour <strong><a class=\"chat-roll\">1d10</a></strong>&nbsp; Rounds au lieu de subir un état Brisé, après quoi subissez <strong><a class=\"chat-roll\">1d10</a></strong> états Brisés</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.IAWyzDfC286a9MPz]{Immunité psychologique} pour <strong><a class=\"chat-roll\">1d10</a></strong>&nbsp; Rounds au lieu de subir un état Brisé, après quoi subissez <strong><a class=\"chat-roll\">1d10</a></strong> états Brisés</p>"
},
{
"id": "Boar Head",
"name": "Tête de Sanglier",
"description": "<p>+1 PA à la Tête; @Compendium[wfrp4e-core.traits.BqPZn6q3VHn9HUrW]{Cornes (Défenses)}; cette mutation ne peut pas être cachée</p>"
"description": "<p>+1 PA à la Tête; @Compendium[wfrp4e-core.items.BqPZn6q3VHn9HUrW]{Cornes (Défenses)}; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Breathe Fire",
"name": "Souffe Enflammé",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.uqGxFOEqeurwkAO3]{Souffle}&nbsp;5 (Feu)</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.uqGxFOEqeurwkAO3]{Souffle}&nbsp;5 (Feu)</p>"
},
{
"id": "Bulging Eyes",
@ -104,7 +104,7 @@
{
"id": "Bull Head",
"name": "Tête de Taureau",
"description": "<p>+1 PA à la Tête; Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.BqPZn6q3VHn9HUrW]{Cornes}; cette mutation ne peut pas être cachée</p>"
"description": "<p>+1 PA à la Tête; Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.BqPZn6q3VHn9HUrW]{Cornes}; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Burning Skin",
@ -119,12 +119,12 @@
{
"id": "Claws",
"name": "Griffes",
"description": "<p>Les main sont considérées comme des armes : @Compendium[wfrp4e-core.traits.AtpAudHA4ybXVlWM]{Weapon}, avec des dommages égal au Bonus de Force; cette mutation ne peut pas être cachée</p>"
"description": "<p>Les main sont considérées comme des armes : @Compendium[wfrp4e-core.items.AtpAudHA4ybXVlWM]{Weapon}, avec des dommages égal au Bonus de Force; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Cloud of Flies",
"name": "Nuage de Mouches",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Corpulent",
@ -134,12 +134,12 @@
{
"id": "Crested Head",
"name": "Crête de Coq",
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.talents.6l3jvIAvrKxt0lA9]{Attirant}&nbsp;lorsque vous interagissez avec des Muntants ou des Hommes-Bêtes; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.items.6l3jvIAvrKxt0lA9]{Attirant}&nbsp;lorsque vous interagissez avec des Muntants ou des Hommes-Bêtes; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Deafening Cry",
"name": "Cri Assourdissant",
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;</p>"
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;</p>"
},
{
"id": "Distended Digits",
@ -149,12 +149,12 @@
{
"id": "Dog Head",
"name": "Tête de Chien",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +5; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +5; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Eagle Head",
"name": "Tête d'Aigle",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +4; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +4; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Elastic Arms",
@ -194,17 +194,17 @@
{
"id": "Fitful Hatred",
"name": "Haine Changeante",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.aE3pyW20Orvdjzj0]{Haine} (Cible). Effectuez un lancer sur la table des <a class=\"table-click\" data-table=\"fixations\">Fixations</a> une fois par jour pour déterminer la cible</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.aE3pyW20Orvdjzj0]{Haine} (Cible). Effectuez un lancer sur la table des <a class=\"table-click\" data-table=\"fixations\">Fixations</a> une fois par jour pour déterminer la cible</p>"
},
{
"id": "Fleshy Tentacle",
"name": "Tentacule de Chair",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.4xF7M6ylIiGntekh]{# Tentacules}&nbsp;; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.4xF7M6ylIiGntekh]{# Tentacules}&nbsp;; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Foul Odour",
"name": "Odeur Nauséabonde",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;</p>"
},
{
"id": "Furred Skin",
@ -214,7 +214,7 @@
{
"id": "Giant Spider Head",
"name": "Tête d'Araignée Géante",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +3 et @Compendium[wfrp4e-core.traits.gFkRm9wS65qe18Xv]{Venin (Intermédiaire}, cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +3 et @Compendium[wfrp4e-core.items.gFkRm9wS65qe18Xv]{Venin (Intermédiaire}, cette mutation ne peut pas être cachée</p>"
},
{
"id": "Gills",
@ -234,17 +234,17 @@
{
"id": "Goat Head",
"name": "Tête de Chèvre",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.BqPZn6q3VHn9HUrW]{Cornes}, cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.BqPZn6q3VHn9HUrW]{Cornes}, cette mutation ne peut pas être cachée</p>"
},
{
"id": "Headless",
"name": "Sans-tête",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur}&nbsp;2; les coups à la tête sont considérés comme ratés; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur}&nbsp;2; les coups à la tête sont considérés comme ratés; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Hopper",
"name": "Sauteur",
"description": "<p>Votre Mouvement est réduit de 2 et ne peut plus êter augmenté; gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.j6v78dnOOdCB6c3d]{Bond}&nbsp;; cette mutation ne peut pas être cachée</p>"
"description": "<p>Votre Mouvement est réduit de 2 et ne peut plus êter augmenté; gagnez le Trait de Créature @Compendium[wfrp4e-core.items.j6v78dnOOdCB6c3d]{Bond}&nbsp;; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Hounds of Despair",
@ -254,7 +254,7 @@
{
"id": "Hurried Masochism",
"name": "Masochisme Urgent",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.GbDyBCu8ZjDp6dkj]{Belliqueux}; vous ne pouvez pas fuir volontairement</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.GbDyBCu8ZjDp6dkj]{Belliqueux}; vous ne pouvez pas fuir volontairement</p>"
},
{
"id": "Inhuman Beauty",
@ -294,12 +294,12 @@
{
"id": "Mindless Wandering",
"name": "Errance Sans Esprit",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.9GNpAqgsKzxZKJpp]{Stupide} lorsque seul</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.9GNpAqgsKzxZKJpp]{Stupide} lorsque seul</p>"
},
{
"id": "Monstrous Paranoia",
"name": "Paranoïa Monstrueuse",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.IPKRMGry6WotuS1G]{Craintif}</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.IPKRMGry6WotuS1G]{Craintif}</p>"
},
{
"id": "Multiple Arms",
@ -329,37 +329,37 @@
{
"id": "Pin Head",
"name": "Tête d'épingle",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.9GNpAqgsKzxZKJpp]{Stupide}&nbsp;; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.9GNpAqgsKzxZKJpp]{Stupide}&nbsp;; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Pointed Head",
"name": "Tête Pointue",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.9GNpAqgsKzxZKJpp]{Stupide}&nbsp;; vous ne pouvez pas porter de casque; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.9GNpAqgsKzxZKJpp]{Stupide}&nbsp;; vous ne pouvez pas porter de casque; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Rat Head",
"name": "Tête de Rat",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +4 et @Compendium[wfrp4e-core.traits.V0c3qBU1CMm8bmsW]{Infecté}s; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +4 et @Compendium[wfrp4e-core.items.V0c3qBU1CMm8bmsW]{Infecté}s; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Ravenous Hunger",
"name": "Faim Vorace",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.xneBqGOs1QS7kfUr]{Affamé}</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.xneBqGOs1QS7kfUr]{Affamé}</p>"
},
{
"id": "Rearranged Face",
"name": "Visage Arrangé",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur}&nbsp;1; Les Personnages cherchant à savoir si vous mentez subissent un malus de -20 à leurs tests d'Intuition; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur}&nbsp;1; Les Personnages cherchant à savoir si vous mentez subissent un malus de -20 à leurs tests d'Intuition; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Rotting Flesh",
"name": "Chaire Pourrie",
"description": "<p>Gagnez les Traits de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur} 2, et @Compendium[wfrp4e.traits.V0c3qBU1CMm8bmsW]{Infecté}&nbsp;</p>"
"description": "<p>Gagnez les Traits de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur} 2, et @Compendium[wfrp4e.traits.V0c3qBU1CMm8bmsW]{Infecté}&nbsp;</p>"
},
{
"id": "Shifting Colours",
"name": "Couleurs Changeantes",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant}&nbsp;; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Short Legs",
@ -369,27 +369,27 @@
{
"id": "Skull Face",
"name": "Face de Crâne",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur}&nbsp;2; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur}&nbsp;2; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Snake Head",
"name": "Tête de Serpent",
"description": "<p>+1 PA à la Tête; Gagnez les Traits de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +3 et @Compendium[wfrp4e-core.traits.gFkRm9wS65qe18Xv]{Venin (Intermédiaire)}; cette mutation ne peut pas être cachée</p>"
"description": "<p>+1 PA à la Tête; Gagnez les Traits de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +3 et @Compendium[wfrp4e-core.items.gFkRm9wS65qe18Xv]{Venin (Intermédiaire)}; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Spiked Skin",
"name": "Peau Cloutée",
"description": "<p>Pas d'armure possible; +1 PA sur tout les corps; gagnez une attaque gratuite (@Compendium[wfrp4e-core.traits.AtpAudHA4ybXVlWM]{Arme}&nbsp;+4) lors des Charges; cette mutation ne peut pas être cachée</p>"
"description": "<p>Pas d'armure possible; +1 PA sur tout les corps; gagnez une attaque gratuite (@Compendium[wfrp4e-core.items.AtpAudHA4ybXVlWM]{Arme}&nbsp;+4) lors des Charges; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Suckered Hands and Feet",
"name": "Mains et Pieds Ventouses",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.KII1gWnxIZ8HzmU5]{Grimpant}&nbsp;; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.KII1gWnxIZ8HzmU5]{Grimpant}&nbsp;; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Terrible Phobia",
"name": "Phobie Terrible",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.4CMKeDTDrRQZbPIJ]{Craintif} (Cible), faites un jet sur table des <a class=\"table-click\" data-table=\"fixations\">Idées Fixes</a> pour déterminer la cible</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.4CMKeDTDrRQZbPIJ]{Craintif} (Cible), faites un jet sur table des <a class=\"table-click\" data-table=\"fixations\">Idées Fixes</a> pour déterminer la cible</p>"
},
{
"id": "Thorny Scales",
@ -399,7 +399,7 @@
{
"id": "Three Eyes",
"name": "Troisième Oeil",
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.talents.9h82z72XGo9tfgQS]{Sens aiguisé}&nbsp;(Vue); cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.items.9h82z72XGo9tfgQS]{Sens aiguisé}&nbsp;(Vue); cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Thrill Seeker",
@ -409,12 +409,12 @@
{
"id": "Transparent Skin",
"name": "Peau Transparente",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur}&nbsp;2; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur}&nbsp;2; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Two Heads",
"name": "Bicéphale",
"description": "<p>Gagnez leTalent @Compendium[wfrp4e-core.talents.IFKWu98qmWpaSfUi]{Ambidextre}; cette mutation ne peut pas être cachée</p>"
"description": "<p>Gagnez leTalent @Compendium[wfrp4e-core.items.IFKWu98qmWpaSfUi]{Ambidextre}; cette mutation ne peut pas être cachée</p>"
},
{
"id": "Uneven Horns",
@ -429,12 +429,12 @@
{
"id": "Warp Frenzy",
"name": "Frénésie Mutagène",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.yRhhOlt18COq4e1q]{Frénésie}&nbsp;; Quand vous entrez en Frénésie, gagnez temporairement une autre mutation physique</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.yRhhOlt18COq4e1q]{Frénésie}&nbsp;; Quand vous entrez en Frénésie, gagnez temporairement une autre mutation physique</p>"
},
{
"id": "Webbed Feet",
"name": "Pieds Palmés",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.sJ3yX1kvzu2hgNq5]{Amphibie}&nbsp;; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.sJ3yX1kvzu2hgNq5]{Amphibie}&nbsp;; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Weeping Pus",
@ -449,12 +449,12 @@
{
"id": "Wings",
"name": "Ailes",
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.EO05HX7jql0g605A]{Vol} 60; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.EO05HX7jql0g605A]{Vol} 60; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
},
{
"id": "Wolf Head",
"name": "Tête de Loup",
"description": "<p>+1 PA à la Tête; gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +6; gagnez le Talent @Compendium[wfrp4e-core.talents.9h82z72XGo9tfgQS]{Sens Aiguisé (Odorat)}; cette mutation ne peut pas être cachée</p>"
"description": "<p>+1 PA à la Tête; gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +6; gagnez le Talent @Compendium[wfrp4e-core.items.9h82z72XGo9tfgQS]{Sens Aiguisé (Odorat)}; cette mutation ne peut pas être cachée</p>"
}
]
}

View File

@ -23,13 +23,13 @@
{
"id": "Demonic Mien (Undivided)",
"name": "Allure Démoniaque (Indivisible)",
"description": "<p><span class=\"fontstyle0\">Vous canalisez le pouvoir de transformation du Chaos dans votre propre chair, sacrifiant temporairement votre forme mortelle sur lautel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects dun démon loyal à votre dieu protecteur. Lancez 1d10 sur le <a class=\"table-click\" data-table=\"demonic-mien\">Tableau de la page 78</a>, et appliquez le Trait pertinent pour toute la durée du Sort. Pour chaque +2 DR, vous pouvez à la fois prolonger la durée et refaire un jet sur le Tableau. Si vous obtenez le Trait <span class=\"fontstyle3\">@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]Démoniaque</span> et que vous êtes réduit à 0 Blessure, votre âme est aspirée dans les Royaumes du Chaos, comme décrit dans les règles des Traits de créature.</span></p>",
"description": "<p><span class=\"fontstyle0\">Vous canalisez le pouvoir de transformation du Chaos dans votre propre chair, sacrifiant temporairement votre forme mortelle sur lautel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects dun démon loyal à votre dieu protecteur. Lancez 1d10 sur le <a class=\"table-click\" data-table=\"demonic-mien\">Tableau de la page 78</a>, et appliquez le Trait pertinent pour toute la durée du Sort. Pour chaque +2 DR, vous pouvez à la fois prolonger la durée et refaire un jet sur le Tableau. Si vous obtenez le Trait <span class=\"fontstyle3\">@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]Démoniaque</span> et que vous êtes réduit à 0 Blessure, votre âme est aspirée dans les Royaumes du Chaos, comme décrit dans les règles des Traits de créature.</span></p>",
"effets": []
},
{
"id": "Demonic Mien (Tzeentch)",
"name": "Allure Démoniaque (Tzeentch)",
"description": "<p><span class=\"fontstyle0\">Vous canalisez le pouvoir de transformation du Chaos dans votre propre chair, sacrifiant temporairement votre forme mortelle sur lautel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects dun démon loyal à votre dieu protecteur. Lancez 1d10 sur le <a class=\"table-click\" data-table=\"demonic-mien\">Tableau de la page 78</a>, et appliquez le Trait pertinent pour toute la durée du Sort. Pour chaque +2 DR, vous pouvez à la fois prolonger la durée et refaire un jet sur le Tableau. Si vous obtenez le Trait <span class=\"fontstyle3\">@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]Démoniaque</span> et que vous êtes réduit à 0 Blessure, votre âme est aspirée dans les Royaumes du Chaos, comme décrit dans les règles des Traits de créature.</span></p><p>\n\n <b>Domaine:</b> Les Cibles des Sorts issus du Domaine de Tzeentch sont déchirées par la Magie transformatrice du Chaos. Celles affectées par un Sort du Domaine de Tzeentch doivent réussir un Test de Résistance Intermédiaire (+0) ou gagner +1 point de Corruption. Si elles réussissent leur Test, elles gagnent +1 Point de Chance, qu'elles peuvent utiliser normalement. Tels sont les caprices de Tzeentch.<p>",
"description": "<p><span class=\"fontstyle0\">Vous canalisez le pouvoir de transformation du Chaos dans votre propre chair, sacrifiant temporairement votre forme mortelle sur lautel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects dun démon loyal à votre dieu protecteur. Lancez 1d10 sur le <a class=\"table-click\" data-table=\"demonic-mien\">Tableau de la page 78</a>, et appliquez le Trait pertinent pour toute la durée du Sort. Pour chaque +2 DR, vous pouvez à la fois prolonger la durée et refaire un jet sur le Tableau. Si vous obtenez le Trait <span class=\"fontstyle3\">@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]Démoniaque</span> et que vous êtes réduit à 0 Blessure, votre âme est aspirée dans les Royaumes du Chaos, comme décrit dans les règles des Traits de créature.</span></p><p>\n\n <b>Domaine:</b> Les Cibles des Sorts issus du Domaine de Tzeentch sont déchirées par la Magie transformatrice du Chaos. Celles affectées par un Sort du Domaine de Tzeentch doivent réussir un Test de Résistance Intermédiaire (+0) ou gagner +1 point de Corruption. Si elles réussissent leur Test, elles gagnent +1 Point de Chance, qu'elles peuvent utiliser normalement. Tels sont les caprices de Tzeentch.<p>",
"effets": []
},
{
@ -47,7 +47,7 @@
{
"id": "Tzeentch's Golden Aura",
"name": "Aura Dorée de Tzeentch",
"description": "<p><span class=\"fontstyle0\">Ce Sort est lun des plus simples et des plus pratiques dans larsenal dun sorcier de Tzeentch. Un tourbillon de feu jaune est invoqué à partir de lAethyr et enveloppe le corps du Lanceur, le protégeant des coups et des projectiles. Tant que le Sort est en vigueur, le Lanceur bénéficie du Trait de créature @Compendium[wfrp4e.traits.Bvd2aZ0gQUXHfCTh]{Protection 9+}.</span></p><p>\n\n <b>Domaine:</b> Les Cibles des Sorts issus du Domaine de Tzeentch sont déchirées par la Magie transformatrice du Chaos. Celles affectées par un Sort du Domaine de Tzeentch doivent réussir un Test de Résistance Intermédiaire (+0) ou gagner +1 point de Corruption. Si elles réussissent leur Test, elles gagnent +1 Point de Chance, qu'elles peuvent utiliser normalement. Tels sont les caprices de Tzeentch.<p>",
"description": "<p><span class=\"fontstyle0\">Ce Sort est lun des plus simples et des plus pratiques dans larsenal dun sorcier de Tzeentch. Un tourbillon de feu jaune est invoqué à partir de lAethyr et enveloppe le corps du Lanceur, le protégeant des coups et des projectiles. Tant que le Sort est en vigueur, le Lanceur bénéficie du Trait de créature @Compendium[wfrp4e-core.items.Bvd2aZ0gQUXHfCTh]{Protection 9+}.</span></p><p>\n\n <b>Domaine:</b> Les Cibles des Sorts issus du Domaine de Tzeentch sont déchirées par la Magie transformatrice du Chaos. Celles affectées par un Sort du Domaine de Tzeentch doivent réussir un Test de Résistance Intermédiaire (+0) ou gagner +1 point de Corruption. Si elles réussissent leur Test, elles gagnent +1 Point de Chance, qu'elles peuvent utiliser normalement. Tels sont les caprices de Tzeentch.<p>",
"effets": []
},
{
@ -125,7 +125,7 @@
{
"id": "Bolt of Change",
"name": "Éclair du changement",
"description": "<p><span class=\"fontstyle0\">Un éclair pulsant dune scintillante énergie chaotique déchire l'air. L'Éclair du changement est un <i>Projectile magique</i>, et la Cible subit des Dégâts +7. De plus, elle doit effectuer un Test de </strong>Résistance Intermédiaire (+0)</strong>. Une Cible qui échoue gagne +1 Point de Corruption. En cas de Maladresse, la Cible effectue immédiatement un jet de Mutation, et gagne le Talent Compendium[wfrp4e.talents.hiU7vhBOVpVI8c7C]{Magie du Chaos (Tzeentch)}. Un Personnage affecté par ce sort peut résister à une Mutation en dépensant un Point de Détermination.</span></p><p>\n\n <b>Domaine:</b> Les Cibles des Sorts issus du Domaine de Tzeentch sont déchirées par la Magie transformatrice du Chaos. Celles affectées par un Sort du Domaine de Tzeentch doivent réussir un Test de Résistance Intermédiaire (+0) ou gagner +1 point de Corruption. Si elles réussissent leur Test, elles gagnent +1 Point de Chance, qu'elles peuvent utiliser normalement. Tels sont les caprices de Tzeentch.<p>",
"description": "<p><span class=\"fontstyle0\">Un éclair pulsant dune scintillante énergie chaotique déchire l'air. L'Éclair du changement est un <i>Projectile magique</i>, et la Cible subit des Dégâts +7. De plus, elle doit effectuer un Test de </strong>Résistance Intermédiaire (+0)</strong>. Une Cible qui échoue gagne +1 Point de Corruption. En cas de Maladresse, la Cible effectue immédiatement un jet de Mutation, et gagne le Talent Compendium[wfrp4e-core.items.hiU7vhBOVpVI8c7C]{Magie du Chaos (Tzeentch)}. Un Personnage affecté par ce sort peut résister à une Mutation en dépensant un Point de Détermination.</span></p><p>\n\n <b>Domaine:</b> Les Cibles des Sorts issus du Domaine de Tzeentch sont déchirées par la Magie transformatrice du Chaos. Celles affectées par un Sort du Domaine de Tzeentch doivent réussir un Test de Résistance Intermédiaire (+0) ou gagner +1 point de Corruption. Si elles réussissent leur Test, elles gagnent +1 Point de Chance, qu'elles peuvent utiliser normalement. Tels sont les caprices de Tzeentch.<p>",
"effets": [
{
"_id": "35UAihuCR5o2saMI",
@ -142,7 +142,7 @@
"wfrp4e": {
"effectTrigger": "oneTime",
"effectApplication": "apply",
"script": "args.actor.setupSkill(\"Résistance\", { context: { failure: \"1 Point de Corruption acquis\" } }).then(setupData => {\n args.actor.basicTest(setupData).then(test => {\n if (test.result.outcome == \"failure\" && args.actor.type == \"character\") {\n let msg = \"\"\n args.actor.update({ \"data.status.corruption.value\": parseInt(args.actor.status.corruption.value) + 1 })\n msg += `<b>${args.actor.prototypeToken.name}</b> gains a Corruption point<br>`\n if ((test.result.outcome.roll % 11 == 0) || test.result.outcome.roll == 100 || test.result.outcome.roll == 99)\n msg += `<b>${args.actor.prototypeToken.name}</b> reçoit une mutation (@Table[expandedmutatephys]{Physique} ou @Table[expandedmutatemental]{Mentale}) et reçoit @Compendium[wfrp4e-core.talents.hiU7vhBOVpVI8c7C]{Chaos Magic (Tzeentch)}`\n ChatMessage.create({content : msg, speaker : {alias : this.effect.label}})\n args.actor.checkCorruption()\n }\n })\n})",
"script": "args.actor.setupSkill(\"Résistance\", { context: { failure: \"1 Point de Corruption acquis\" } }).then(setupData => {\n args.actor.basicTest(setupData).then(test => {\n if (test.result.outcome == \"failure\" && args.actor.type == \"character\") {\n let msg = \"\"\n args.actor.update({ \"data.status.corruption.value\": parseInt(args.actor.status.corruption.value) + 1 })\n msg += `<b>${args.actor.prototypeToken.name}</b> gains a Corruption point<br>`\n if ((test.result.outcome.roll % 11 == 0) || test.result.outcome.roll == 100 || test.result.outcome.roll == 99)\n msg += `<b>${args.actor.prototypeToken.name}</b> reçoit une mutation (@Table[expandedmutatephys]{Physique} ou @Table[expandedmutatemental]{Mentale}) et reçoit @Compendium[wfrp4e-core.items.hiU7vhBOVpVI8c7C]{Chaos Magic (Tzeentch)}`\n ChatMessage.create({content : msg, speaker : {alias : this.effect.label}})\n args.actor.checkCorruption()\n }\n })\n})",
"preventDuplicateEffects": false
}
}

View File

@ -105,30 +105,30 @@
"id": "Demonic Mien - Nurgle",
"name": "Trait Démonique - Nurgle",
"results": {
"1-1": "@Compendium[wfrp4e.traits.a8MC97PLzl10WocT]{Grand}",
"2-2": "@Compendium[wfrp4e.traits.uqGxFOEqeurwkAO3]{Souffle +7 (Corrosion & Poison)}",
"3-3": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque 7}",
"4-4": "@Compendium[wfrp4e.traits.PaW8i6JOxWyzAZCz]{Maladie (Nurgle's Rot)}",
"5-5": "@Compendium[wfrp4e.traits.MVI0lXcg6vvtooAF]{Perturbant (Puanteur)}",
"1-1": "@Compendium[wfrp4e-core.items.a8MC97PLzl10WocT]{Grand}",
"2-2": "@Compendium[wfrp4e-core.items.uqGxFOEqeurwkAO3]{Souffle +7 (Corrosion & Poison)}",
"3-3": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque 7}",
"4-4": "@Compendium[wfrp4e-core.items.PaW8i6JOxWyzAZCz]{Maladie (Nurgle's Rot)}",
"5-5": "@Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant (Puanteur)}",
"6-6": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
"7-7": "@Compendium[wfrp4e.traits.TBcdTlYSRH8Rd1x0]{Infecté}",
"7-7": "@Compendium[wfrp4e-core.items.TBcdTlYSRH8Rd1x0]{Infecté}",
"8-8": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>",
"9-9": "@Compendium[wfrp4e.traits.SfUUdOGjdYpr3KSR]{Régénération}",
"10-10": "@Compendium[wfrp4e.traits.JzeN9MZ0xUDvpE2l]{Vomissement}"
"9-9": "@Compendium[wfrp4e-core.items.SfUUdOGjdYpr3KSR]{Régénération}",
"10-10": "@Compendium[wfrp4e-core.items.JzeN9MZ0xUDvpE2l]{Vomissement}"
}
},
{
"id": "Demonic Mien - Slaanesh",
"name": "Trait Démonique - Slaanesh",
"results": {
"1-1": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque (6)}",
"2-2": "@Compendium[wfrp4e.traits.MVI0lXcg6vvtooAF]{Perturbant}",
"4-4": "@Compendium[wfrp4e.traits.yRhhOlt18COq4e1q]{Frénésie}",
"5-5": "@Compendium[wfrp4e.traits.IAWyzDfC286a9MPz]{Immunité Psychologique}",
"7-7": "@Compendium[wfrp4e.traits.wMwSRDmgiF2IdCJr]{Insensible à la douleur}",
"8-8": "@Compendium[wfrp4e.traits.0eEJ280MIC0IbEop]{Regard pétrifiant}",
"9-9": "@Compendium[wfrp4e.traits.xg6z63j6BH5AaqLL]{Langue préhensile (6 mètres) +6}",
"10-10": "@Compendium[wfrp4e.traits.gFkRm9wS65qe18Xv]{Venin}",
"1-1": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque (6)}",
"2-2": "@Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant}",
"4-4": "@Compendium[wfrp4e-core.items.yRhhOlt18COq4e1q]{Frénésie}",
"5-5": "@Compendium[wfrp4e-core.items.IAWyzDfC286a9MPz]{Immunité Psychologique}",
"7-7": "@Compendium[wfrp4e-core.items.wMwSRDmgiF2IdCJr]{Insensible à la douleur}",
"8-8": "@Compendium[wfrp4e-core.items.0eEJ280MIC0IbEop]{Regard pétrifiant}",
"9-9": "@Compendium[wfrp4e-core.items.xg6z63j6BH5AaqLL]{Langue préhensile (6 mètres) +6}",
"10-10": "@Compendium[wfrp4e-core.items.gFkRm9wS65qe18Xv]{Venin}",
"3-3": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
"6-6": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>"
}
@ -139,27 +139,27 @@
"results": {
"4-4": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
"8-9": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>",
"1-1": "@Compendium[wfrp4e.traits.uqGxFOEqeurwkAO3]{Souffle +9 (Feu)}",
"2-2": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque (9)}",
"3-3": "@Compendium[wfrp4e.traits.tNWrJUOArwfWXsPw]{Ethéré}",
"5-5": "@Compendium[wfrp4e.traits.EO05HX7jql0g605A]{Vol (9)}",
"6-6": "@Compendium[wfrp4e.traits.mDgEMOoJpi8DkRYb]{Magique}",
"7-7": "@Compendium[wfrp4e.traits.yrkI7ATjqLPDTFmZ]{Résistance à la Magie}}",
"10-10": "@Compendium[wfrp4e.traits.vY0CHKsJRV3gYBj3]{Lanceur de Sorts (Au choix)}"
"1-1": "@Compendium[wfrp4e-core.items.uqGxFOEqeurwkAO3]{Souffle +9 (Feu)}",
"2-2": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque (9)}",
"3-3": "@Compendium[wfrp4e-core.items.tNWrJUOArwfWXsPw]{Ethéré}",
"5-5": "@Compendium[wfrp4e-core.items.EO05HX7jql0g605A]{Vol (9)}",
"6-6": "@Compendium[wfrp4e-core.items.mDgEMOoJpi8DkRYb]{Magique}",
"7-7": "@Compendium[wfrp4e-core.items.yrkI7ATjqLPDTFmZ]{Résistance à la Magie}}",
"10-10": "@Compendium[wfrp4e-core.items.vY0CHKsJRV3gYBj3]{Lanceur de Sorts (Au choix)}"
}
},
{
"id": "Demonic Mien - Undivided",
"name": "Trait Démonique - Commun",
"results": {
"8-8": "@Compendium[wfrp4e.traits.BqPZn6q3VHn9HUrW]{Cornes +10}",
"10-10": "@Compendium[wfrp4e.traits.UnJ25lL8aUzem5JO]{Attaque Caudale (+10)}",
"8-8": "@Compendium[wfrp4e-core.items.BqPZn6q3VHn9HUrW]{Cornes +10}",
"10-10": "@Compendium[wfrp4e-core.items.UnJ25lL8aUzem5JO]{Attaque Caudale (+10)}",
"5-5": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
"9-9": "@Compendium[wfrp4e.traits.mDgEMOoJpi8DkRYb]{Magique}",
"1-2": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque (8)}",
"3-3": "@Compendium[wfrp4e.traits.9NROryHer1uXAKwY]{Elite}",
"4-4": "@Compendium[wfrp4e.traits.9MjH4xyVrd3Inzak]Rapide}",
"6-6": "@Compendium[wfrp4e.traits.EO05HX7jql0g605A]{Vol (8)}"
"9-9": "@Compendium[wfrp4e-core.items.mDgEMOoJpi8DkRYb]{Magique}",
"1-2": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque (8)}",
"3-3": "@Compendium[wfrp4e-core.items.9NROryHer1uXAKwY]{Elite}",
"4-4": "@Compendium[wfrp4e-core.items.9MjH4xyVrd3Inzak]Rapide}",
"6-6": "@Compendium[wfrp4e-core.items.EO05HX7jql0g605A]{Vol (8)}"
}
},
{

View File

@ -40,7 +40,7 @@
{
"id": "Boots of Gucci",
"name": "Bottes de Gucci",
"description": "<p>En activant les bottes à l'aide de la phrase &lsquo;La grâce va au-delà du style&rsquo;, le porteur bénéficie du Talent @Compendium[wfrp4e-core.talents.sYbgpSnRqSZWgwFP]{Savoir-vivre (Noble, Guilde, Serviteur)} tant qu'il garde les bottes aux pieds. S'il le souhaite, il peut prononcer à nouveau la phrase pour changer la version du Talent dont il bénéficie.</p>"
"description": "<p>En activant les bottes à l'aide de la phrase &lsquo;La grâce va au-delà du style&rsquo;, le porteur bénéficie du Talent @Compendium[wfrp4e-core.items.sYbgpSnRqSZWgwFP]{Savoir-vivre (Noble, Guilde, Serviteur)} tant qu'il garde les bottes aux pieds. S'il le souhaite, il peut prononcer à nouveau la phrase pour changer la version du Talent dont il bénéficie.</p>"
},
{
"id": "Magical Dagger",
@ -50,12 +50,12 @@
{
"id": "Child of Ulric",
"name": "Enfant d'Ulric",
"description": "<h4>Traits</h4>\n<p>@Compendium[wfrp4e-core.traits.VUJUZVN3VYhOaPjj]{Armure}</p>\n<p>@Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure}</p>\n<p>@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur}</p>\n<p>@Compendium[wfrp4e-core.traits.FmHDbCOy3pH8yKhm]{Vision nocturne}</p>\n<p>@Compendium[wfrp4e-core.traits.ClOlztW6hH8rslbp]{Pisteur}</p>\n<p>@Compendium[wfrp4e-core.traits.AtpAudHA4ybXVlWM]{Arme}</p>\n<h4>Optional</h4>\n<p>@Compendium[wfrp4e-core.traits.GbDyBCu8ZjDp6dkj]{Belliqueux}</p>\n<p>@Compendium[wfrp4e-core.traits.AGcJl5rHjkyIQBPP]{Bestial}</p>\n<p>@Compendium[wfrp4e-core.traits.a8MC97PLzl10WocT]{Grand}</p>\n<p>@Compendium[wfrp4e-core.traits.5muSFXd6oc760uVj]{Béni (Ulric)}</p>\n<p>@Compendium[wfrp4e-core.traits.4mF5Sp3t09kZhBYc]{Champion}</p>\n<p>@Compendium[wfrp4e-core.traits.UsJ2uIOOtHA7JqD5]{Increvable}</p>\n<p>@Compendium[wfrp4e-core.traits.9MjH4xyVrd3Inzak]{Rapide}</p>\n<p>@Compendium[wfrp4e-core.traits.yRhhOlt18COq4e1q]{Frénésie}</p>\n<p>@Compendium[wfrp4e-core.traits.IAWyzDfC286a9MPz]{Immunité psycologique}</p>\n<p>@Compendium[wfrp4e-core.traits.SfUUdOGjdYpr3KSR]{Régénération}</p>\n<p>@Compendium[wfrp4e-core.traits.8slW8CJ2oVTxeQ6q]{Taille (Grande)}</p>"
"description": "<h4>Traits</h4>\n<p>@Compendium[wfrp4e-core.items.VUJUZVN3VYhOaPjj]{Armure}</p>\n<p>@Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure}</p>\n<p>@Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur}</p>\n<p>@Compendium[wfrp4e-core.items.FmHDbCOy3pH8yKhm]{Vision nocturne}</p>\n<p>@Compendium[wfrp4e-core.items.ClOlztW6hH8rslbp]{Pisteur}</p>\n<p>@Compendium[wfrp4e-core.items.AtpAudHA4ybXVlWM]{Arme}</p>\n<h4>Optional</h4>\n<p>@Compendium[wfrp4e-core.items.GbDyBCu8ZjDp6dkj]{Belliqueux}</p>\n<p>@Compendium[wfrp4e-core.items.AGcJl5rHjkyIQBPP]{Bestial}</p>\n<p>@Compendium[wfrp4e-core.items.a8MC97PLzl10WocT]{Grand}</p>\n<p>@Compendium[wfrp4e-core.items.5muSFXd6oc760uVj]{Béni (Ulric)}</p>\n<p>@Compendium[wfrp4e-core.items.4mF5Sp3t09kZhBYc]{Champion}</p>\n<p>@Compendium[wfrp4e-core.items.UsJ2uIOOtHA7JqD5]{Increvable}</p>\n<p>@Compendium[wfrp4e-core.items.9MjH4xyVrd3Inzak]{Rapide}</p>\n<p>@Compendium[wfrp4e-core.items.yRhhOlt18COq4e1q]{Frénésie}</p>\n<p>@Compendium[wfrp4e-core.items.IAWyzDfC286a9MPz]{Immunité psycologique}</p>\n<p>@Compendium[wfrp4e-core.items.SfUUdOGjdYpr3KSR]{Régénération}</p>\n<p>@Compendium[wfrp4e-core.items.8slW8CJ2oVTxeQ6q]{Taille (Grande)}</p>"
},
{
"id": "Sword of Fear",
"name": "Épée de la peur",
"description": "<p>Le porteur de l'épée peut invoquer son pouvoir en prononçant les mots &lsquo;Rend-toi ou meurs!&rsquo;, et obtien le Trait @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (2)} (WFJDR, p. 190) pendant [[/r 2d10]] Rounds. L'épée inflige également des dégâts aux créatures normalement immunisées aux attaques non magique et bénéficie des Qualités d'objet <em>Raffiné</em> et <em>Solide</em> (WFJDR, p. 292).</p>"
"description": "<p>Le porteur de l'épée peut invoquer son pouvoir en prononçant les mots &lsquo;Rend-toi ou meurs!&rsquo;, et obtien le Trait @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur (2)} (WFJDR, p. 190) pendant [[/r 2d10]] Rounds. L'épée inflige également des dégâts aux créatures normalement immunisées aux attaques non magique et bénéficie des Qualités d'objet <em>Raffiné</em> et <em>Solide</em> (WFJDR, p. 292).</p>"
},
{
"id": "Gromril Helm",
@ -65,12 +65,12 @@
{
"id": "Bless With Filth",
"name": "Infecte bénédiction",
"description": "<p>Vous maudissez les lames, griffes et dents de ceux qui vous entourent pour entraîner des blessures infectées. Pour le durée du sort, chaque Personnage dans la zone d'effet compte comme possédant le Trait de créature @Compendium[wfrp4e-core.traits.V0c3qBU1CMm8bmsW]{Infecté}.</p>"
"description": "<p>Vous maudissez les lames, griffes et dents de ceux qui vous entourent pour entraîner des blessures infectées. Pour le durée du sort, chaque Personnage dans la zone d'effet compte comme possédant le Trait de créature @Compendium[wfrp4e-core.items.V0c3qBU1CMm8bmsW]{Infecté}.</p>"
},
{
"id": "Survivor",
"name": "Survivant",
"description": "<p>@Compendium[wfrp4e-middenheim.middenheim-journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"description": "<p>@Compendium[wfrp4e-middenheim.journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"career_careergroup": "Frère loup",
"trappings": [
"arme simple",
@ -85,7 +85,7 @@
{
"id": "Wolf Brother",
"name": "Grand Loup",
"description": "<p>@Compendium[wfrp4e-middenheim.middenheim-journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"description": "<p>@Compendium[wfrp4e-middenheim.journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"career_careergroup": "Frère loup",
"trappings": [
"arme simple",
@ -96,7 +96,7 @@
{
"id": "Wolf Club",
"name": "Compagnon Loup",
"description": "<p>@Compendium[wfrp4e-middenheim.middenheim-journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"description": "<p>@Compendium[wfrp4e-middenheim.journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"career_careergroup": "Frère loup",
"trappings": [
"arme simple",
@ -106,7 +106,7 @@
{
"id": "Wolf Kin",
"name": "Frère Loup",
"description": "<p>@Compendium[wfrp4e-middenheim.middenheim-journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"description": "<p>@Compendium[wfrp4e-middenheim.journals.GkT1arSV9rYhYvrG]{Frère loup}</p>",
"career_careergroup": "Frère loup",
"trappings": [
"arme simple",

View File

@ -59,7 +59,7 @@
"results": {
"80-83": "Un joueur choisi au hasard parmi tous les joueurs présents sur le terrain (sauf un des PJs ou le joueur en possession de la balle) glisse dans la boue, se tord la cheville et est contraint d'abandonné.",
"84-86": "Un joueur choisi au hasard parmi tous les joueurs présents sur le terrain (sauf un des PJs ou le joueur en possession de la balle) a bu dans une gourde, désignez le joueur et faites lui un test de Résistance à l'alcool <b>difficile (-20)<\/b>. ",
"87-89": "Un joueur choisi au hasard parmi tous les joueurs présents sur le terrain (sauf un des PJs ou le joueur en possession de la balle) a pris un stimulant qui améliore ses performances. Il ressent immédiatement les effets bénifiques pour ensuite souffrir de @Compendium[wfrp4e-core.trappings.jTFOrokjEHbi12rT]{Délice de Ranald}.",
"87-89": "Un joueur choisi au hasard parmi tous les joueurs présents sur le terrain (sauf un des PJs ou le joueur en possession de la balle) a pris un stimulant qui améliore ses performances. Il ressent immédiatement les effets bénifiques pour ensuite souffrir de @Compendium[wfrp4e-core.items.jTFOrokjEHbi12rT]{Délice de Ranald}.",
"90-95": "Les supporters de l'équipe locale commencent à chanter, leur équipe bénéficie de +5 B au prochain tour.",
"96-100": "Les supporters de l'équipe en déplacement donnent de la voie. Leur équipe bénéficie +5 B au prochain tour.",
"1-33": "Rien de particulier ne se passe pour ce tour.",

View File

@ -101,7 +101,7 @@
{
"id": "Katya's Cordial",
"name": "Sirop de Katya",
"description": "<p>Ce mélange diffuse une odeur légèrement sucrée de couleur rose perle au goût épicé. Cette potion augmente le charme de celui qui lingère, avec cependant un effet indésirable. Lorsquelle est sous leffet de la potion, la personne qui la ingérée gagne le Talent @Compendium[wfrp4e-core.talents.6l3jvIAvrKxt0lA9]{Attractive}. Cependant, dès que leffet se dissipe, ce dernier subit une pénalité de -20 à tous les Tests de Sociabilité pendant [[/r 1d10]] jours au cours desquels sa peau et ses yeux dégorgeront des sécrétions jaunâtres à lodeur nauséabonde. Durée : [[/r 1d10]] heures.</p>"
"description": "<p>Ce mélange diffuse une odeur légèrement sucrée de couleur rose perle au goût épicé. Cette potion augmente le charme de celui qui lingère, avec cependant un effet indésirable. Lorsquelle est sous leffet de la potion, la personne qui la ingérée gagne le Talent @Compendium[wfrp4e-core.items.6l3jvIAvrKxt0lA9]{Attractive}. Cependant, dès que leffet se dissipe, ce dernier subit une pénalité de -20 à tous les Tests de Sociabilité pendant [[/r 1d10]] jours au cours desquels sa peau et ses yeux dégorgeront des sécrétions jaunâtres à lodeur nauséabonde. Durée : [[/r 1d10]] heures.</p>"
},
{
"id": "Liquor of Luck",
@ -166,7 +166,7 @@
{
"id": "Tonic of Sight Beyond Sight",
"name": "Tonique de Vue au-delà de la Vue",
"description": "<p>Létiquette de la bouteille contenant ce liquide vert foncé est ornée dun grand globe oculaire rouge. Cette potion porte la promesse daméliorer la vision de celui qui la boit. La boire vous conférera lun des Talents suivants, voire plusieurs (lancer [[/r 1d10]]) : 1-2 : @Compendium[wfrp4e-core.talents.9h82z72XGo9tfgQS]{Acute Sense (Sight)}; 3-4 : @Compendium[wfrp4e-core.talents.Nj3tC8A5fZ3zEdMR]{Holy Visions}; 5-6 : @Compendium[wfrp4e-core.talents.6w30u0VPsAicrqb5]{Magical Sense}; 7-8 : @Compendium[wfrp4e-core.talents.OEjUvJKi0xmBwbS2]{Second Sight}; 9-10 : tous les effets ci-dessus. Durée : [[/r 1d10]] minutes</p>"
"description": "<p>Létiquette de la bouteille contenant ce liquide vert foncé est ornée dun grand globe oculaire rouge. Cette potion porte la promesse daméliorer la vision de celui qui la boit. La boire vous conférera lun des Talents suivants, voire plusieurs (lancer [[/r 1d10]]) : 1-2 : @Compendium[wfrp4e-core.items.9h82z72XGo9tfgQS]{Acute Sense (Sight)}; 3-4 : @Compendium[wfrp4e-core.items.Nj3tC8A5fZ3zEdMR]{Holy Visions}; 5-6 : @Compendium[wfrp4e-core.items.6w30u0VPsAicrqb5]{Magical Sense}; 7-8 : @Compendium[wfrp4e-core.items.OEjUvJKi0xmBwbS2]{Second Sight}; 9-10 : tous les effets ci-dessus. Durée : [[/r 1d10]] minutes</p>"
},
{
"id": "Torn Apart",

View File

@ -48,7 +48,7 @@
{
"id": "Basilisk's Baleful Bile",
"name": "Bile Funeste de Basilic",
"description": "<p>Ce poison est créé en combinant des liquides oculaires et les glandes de poison d'un basilic recemment tué. Cest un poison nauséabond, et quiconque ingère de la nourriture ou une boisson contenant cette bile devra passer un test de <strong> Perception Facile (+40) </strong>. Le succès indique que la souillure est detectée et que quelque chose qui ne va pas. La victime subit des effets digestifs, et gagne l'état Assomé pendant un round, alors que la victime vomit. S'il le poison est ingéré, le mélange inflige 2 états @Condition[Empoisonné]. Il est possible d'y résister avec un Test Difficile (-10) de Résistance</strong>. Si la victime échoue à son Test de Résistance, elle est définitivement changée en pierre.</strong>",
"description": "<p>Ce poison est créé en combinant des liquides oculaires et les glandes de poison d'un basilic recemment tué. Cest un poison nauséabond, et quiconque ingère de la nourriture ou une boisson contenant cette bile devra passer un test de <strong> Perception Facile (+40) </strong>. Le succès indique que la souillure est detectée et que quelque chose qui ne va pas. La victime subit des effets digestifs, et gagne l'état Sonné pendant un round, alors que la victime vomit. S'il le poison est ingéré, le mélange inflige 2 états @Condition[Empoisonné]. Il est possible d'y résister avec un Test Difficile (-10) de Résistance</strong>. Si la victime échoue à son Test de Résistance, elle est définitivement changée en pierre.</strong>",
"sdamage": "undefined "
},
{

View File

@ -0,0 +1,23 @@
{
"label": "Tables (Starter Set)",
"mapping": {
"results": {
"path": "results",
"converter": "resultConverter"
}
},
"entries": {
"3m4LPj58xoNju80B": {
"name": "Blessures Critiques - Tête (Starter Set)"
},
"BlDLji1LeqHOVj8r": {
"name": "Blessures Critiques - Jambe (Starter Set)"
},
"yYfGtudjckO3bubF": {
"name": "Blessures Critiques - Bras (Starter Set)"
},
"yvzv7xxQuxX7N16b": {
"name": "Blessures Critiques - Corps (Starter Set)"
}
}
}

View File

@ -23,7 +23,7 @@
},
"Animal Carcass": {
"name": "Animal Carcass",
"description": "<p>An Animal Carcass inflicts Damage +4 to everyone in the area of Blast 3. Furthermore every target within Blast 20 must pass an <strong>Very Easy (+60) Endurance</strong> Test or develop a @UUID[Compendium.wfrp4e-core.diseases.kKccDTGzWzSXCBOb]{Festering Wound}.</p>"
"description": "<p>An Animal Carcass inflicts Damage +4 to everyone in the area of Blast 3. Furthermore every target within Blast 20 must pass an <strong>Very Easy (+60) Endurance</strong> Test or develop a @UUID[Compendium.wfrp4e-core.items.kKccDTGzWzSXCBOb]{Festering Wound}.</p>"
},
"Apprentice Artillerist": {
"name": "Apprentice Artillerist",
@ -667,7 +667,7 @@
},
"Scrap and Powder": {
"name": "Scrap and Powder",
"description": "<p>Scrap is a catch-all term for old roofing nails, used horseshoe fragments, arrow heads, and other bits of sharp and pointy material scavenged from whatever pile or rust or slag can be found. Attacks made using this shot benefit from the @UUID[Compendium.wfrp4e-core.traits.V0c3qBU1CMm8bmsW]{Infected} Creature Trait</p>"
"description": "<p>Scrap is a catch-all term for old roofing nails, used horseshoe fragments, arrow heads, and other bits of sharp and pointy material scavenged from whatever pile or rust or slag can be found. Attacks made using this shot benefit from the @UUID[Compendium.wfrp4e-core.items.V0c3qBU1CMm8bmsW]{Infected} Creature Trait</p>"
},
"Sealskin": {
"name": "Sealskin",
@ -687,7 +687,7 @@
},
"Shieldmaiden's Devotion": {
"name": "Shieldmaiden's Devotion",
"description": "<p>Your chanted prayers fill the hearts of the faithful with the fearlessness of her bravest Shieldmaidens. All Myrmidians within range gain the @UUID[Compendium.wfrp4e-core.talents.8pVzgPkgWpTJvfhG]{Fearless (Enemy)} Talent. This enemy may either be a particular individual, or a particular species.</p>"
"description": "<p>Your chanted prayers fill the hearts of the faithful with the fearlessness of her bravest Shieldmaidens. All Myrmidians within range gain the @UUID[Compendium.wfrp4e-core.items.8pVzgPkgWpTJvfhG]{Fearless (Enemy)} Talent. This enemy may either be a particular individual, or a particular species.</p>"
},
"Shieldsman": {
"name": "Shieldsman",

View File

@ -0,0 +1,23 @@
{
"label": "Tables (Up In Arms)",
"mapping": {
"results": {
"path": "results",
"converter": "resultConverter"
}
},
"entries": {
"Head Critical Wounds (Up In Arms)": {
"name": "Head Critical Wounds (Up In Arms)"
},
"Leg Critical Wounds (Up In Arms)": {
"name": "Leg Critical Wounds (Up In Arms)"
},
"Arm Critical Wounds (Up In Arms)": {
"name": "Arm Critical Wounds (Up In Arms)"
},
"Body Critical Wounds (Up In Arms)": {
"name": "Body Critical Wounds (Up In Arms)"
}
}
}

File diff suppressed because one or more lines are too long

29
fr.json
View File

@ -1177,7 +1177,7 @@
"WFRP4E.Properties.Penetrating" : "L'arme est extrêmement efficace pour pénétrer les armures. Les PA ne provenant pas de métal sont ignorés, et le premier point de toutes les autres armures est ignoré.",
"WFRP4E.Properties.Pistol" : "Vous pouvez utiliser cette arme pour attaquer en Combat rapproché.",
"WFRP4E.Properties.Precise" : "L'arme trouve facilement sa cible. Gagnez +1DR à tout Test réussi lors d'une attaque avec cette arme.",
"WFRP4E.Properties.Pummel" : "Les armes Assommantes sont particulièrement efficaces pour forcer les ennemis à se soumettre. Si vous touchez la Tête avec une arme Assomante, tentez un Test opposé de Force / Résistance contre la cible frappée. Si vous remportez le Test, votre adversaire gagne un État Assommé.",
"WFRP4E.Properties.Pummel" : "Les armes Assommantes sont particulièrement efficaces pour forcer les ennemis à se soumettre. Si vous touchez la Tête avec une arme Assomante, tentez un Test opposé de Force / Résistance contre la cible frappée. Si vous remportez le Test, votre adversaire gagne un État Sonné.",
"WFRP4E.Properties.Repeater" : "Votre arme contient (Indice) munitions, automatiquement rechargées après chaque coup que vous tirez. Lorsque vous avez utilisé toutes vos munitions, vous devez recharger entièrement l'arme en utilisant les règles normales.",
"WFRP4E.Properties.Shield" : "Si vous utilisez cette arme pour opposer une attaque, vous êtes considéré comme ayant (Indice) PA à tous les endroits de votre corps. Si votre arme possède un Indice de Protection de 2 ou plus, vous pouvez aussi opposer des projectiles tirés dans votre ligne de vue.",
"WFRP4E.Properties.Trapblade" : "Certaines armes sont conçues pour piéger d'autres armes, et parfois même les briser. Si vous obtenez un Critique quand vous défendez contre une attaque provenant d'une arme possédant une lame, vous pouvez choisir de la piéger plutôt que de causer un Coup Critique. Si vous choisissez cela, effectuez un <b>Test opposé de Force</b>, en ajoutant votre DR obtenu au précédent Test de Corps à corps. Si vous l'emportez, votre adversaire laisse tomber la lame qui lui est arrachée. Si vous obtenez un Succès Stupéfiant, vous ne désarmez pas seulement votre adversaire, mais la force de votre manoeuvre brise la lame à moins qu'elle ne possède l'Atout Incassable. Si vous échouez au Test, votre adversaire libère sa lame et peut combattre normalement.",
@ -1303,7 +1303,7 @@
"WFRP4E.Conditions.Fatigued" : "<p>Vous êtes épuisé, ou stressé, mais quoi qu'il en soit, vous avez besoin de repos.</p><p>Vous subissez une pénalité de -10 à tous vos Tests.</p><p>Pour retirer un État <em>Exténué</em>, il faut normalement du repos, un Sort ou un effet divin, mais, dans certaines conditions, par exemple lorsque l'État <em>Exténué</em> est dû à une charge portée trop importante (voir Encombrement, page 293), le fait de faire des modifications (comme porter moins de pièges, par exemple) peut permettre de retirer l'État.</p>",
"WFRP4E.Conditions.Poisoned" : "<p>Vous avez été <em>Empoisonné</em> ou un venin vous a été injecté. La difficulté de tous les Tests effectués pour éliminer le poison est dictée par le poison ou le venin en question.</p><p>À la fin de chaque round, perdez 1 Point de Blessure, en ignorant tous les modificateurs. De plus, vous subissez une pénalité de -10 à tous vos Tests.</p><p>Si vous atteignez 0 Point de Blessure alors que vous êtes <em>Empoisonné</em>, vous ne pouvez soigner aucune Blessure tant qu'il vous reste des États <em>Empoisonné</em>. Si vous tombez <em>@Condition[Inconscient]</em> alors que vous êtes <em>Empoisonné</em>, effectuez un Test de Résistance après un nombre de Rounds équivalent à votre Bonus d'Endurance ou vous mourrez dans d'horribles souffrances. Voir Traumatisme page 172 pour en savoir plus.</p><p>À la fin de chaque Round, vous pouvez effectuer un test de Résistance. Sur un succès, retirez un État <em>Empoisonné</em>, et chaque DR permet d'en retirer un supplémentaire. Un Test de @Compendium[wfrp4e-core.skills.HXZaV1CJhmTvcAz4] permet d'obtenir le même résultat.</p><p>Une fois débarassé de tous les États <em>Empoisonné</em>, gagnez 1 État <em>@Condition[Extenué]{Exténué}</em>.</p>",
"WFRP4E.Conditions.Prone" : "<p>Vous vous retrouvez au sol, sans doute parce que vous n'avez plus de Points de Blessure disponibles, que vous avez chuté ou que vous avez été frappé par quelque chose de très gros.</p><p>Pendant votre tour, votre Mouvement ne peut être utilisé que pour vous relever ou encore ramper de la moitié de votre Mouvement en mètres (Note : s'il ne vous reste plus aucune Blessure, vous ne pouvez que ramper). Vous subissez une pénalité de -20 à tout Test qui implique un déplacement quelconque, et tout adversaire qui tente de vous attaquer en Combat au Corps à corps gagne un bonus de +20 pour vous toucher.</p><p>À l'inverse de la plupart des États, <em>À Terre</em> ne se cumule pas. Vous perdez l'État <em>À Terre</em> lorsque vous vous relevez.</p>",
"WFRP4E.Conditions.Stunned" : "<p>Vous avez reçu un coup sur la tête, ou êtes désorienté ou confus ; vos oreilles bourdonnent et plus rien n'a vraiment de sens.</p><p> Vous êtes incapable d'effectuer votre Action au cours de votre tour et vous ne pouvez vous déplacer que de la moitié de votre Mouvement. Vous pouvez vous défendre lors des Tests opposés - mais pas ceux qui utilisent Langue (Magick). Vous subissez également une pénalité de -10 à tous les Tests, et tout adversaire qui tente de vous frapper en Combat au Corps à corps gagne +1 Avantage avant d'effectuer son attaque.</p><p>À la fin de chaque round, vous pouvez tenter un Test de <strong>Résistance Intermédiaire (+0)</strong>. Sur un succès, retirez 1 État <em>Assommé</em>, et chaque DR obtenu permet de retirer 1 État <em>Assommé</em> supplémentaire.</p><p>Une fois débarassé de tous les États <em>Assommé</em>, gagnez 1 État <em>@Condition[Extenué]{Exténué}</em> si vous n'en possédez pas déjà.</p>",
"WFRP4E.Conditions.Stunned" : "<p>Vous avez reçu un coup sur la tête, ou êtes désorienté ou confus ; vos oreilles bourdonnent et plus rien n'a vraiment de sens.</p><p> Vous êtes incapable d'effectuer votre Action au cours de votre tour et vous ne pouvez vous déplacer que de la moitié de votre Mouvement. Vous pouvez vous défendre lors des Tests opposés - mais pas ceux qui utilisent Langue (Magick). Vous subissez également une pénalité de -10 à tous les Tests, et tout adversaire qui tente de vous frapper en Combat au Corps à corps gagne +1 Avantage avant d'effectuer son attaque.</p><p>À la fin de chaque round, vous pouvez tenter un Test de <strong>Résistance Intermédiaire (+0)</strong>. Sur un succès, retirez 1 État <em>Sonné</em>, et chaque DR obtenu permet de retirer 1 État <em>Sonné</em> supplémentaire.</p><p>Une fois débarassé de tous les États <em>Sonné</em>, gagnez 1 État <em>@Condition[Extenué]{Exténué}</em> si vous n'en possédez pas déjà.</p>",
"WFRP4E.Conditions.Surprised" : "<p>Vous avez été pris au dépourvu et vous n'êtes absolument pas prêt à réagir à ce qui arrive.</p><p>Vous ne pouvez effectuer ni votre Mouvement ni votre Action pendant ce tour et vous ne pouvez pas vous défendre lors de Tests opposés. Tout adversaire qui tente de vous frapper en Combat au Corps à corps gagne +20 à la CC.</p><p>L'État <em>Surpris</em> ne se cumule pas, et donc vous ne pouvez pas en subir plusieurs, même si, techniquement, vous pouvez être surpris plus dune fois dans un même Round.</p><p>À la fin de chaque Round, ou après la première tentative effectuée pour vous toucher, vous perdez l'État <em>Surpris</em>.</p>",
"WFRP4E.Conditions.Unconscious" : "<p>Vous êtes KO, inconscient, ou frappé d'incapacité. Vous ne pouvez absolument rien faire de votre tour et n'avez aucune conscience de ce qui vous entoure. Un attaquant qui vous cible gagne le bénéfice de la règle Je ne faillirai pas ! (voir p. 171) sans avoir à dépenser un Point de Résilience ; ou, si le MJ préfère, une attaque en combat rapproché vou tue automatiquement. Toute attaque à distance est également un succès et occassionne les mêmes Dégâts que si le tireur était à bout portant.</p><p>L'État <em>Inconscient</em> ne se cumule pas.</p><p>Récupérer d'un État <em>Inconscient</em> va bien souvent dépendre des circonstances qui ont causé cette inconscience. Reportez-vous aux Traumatismes à la page 172 pour en savoir plus sur le sujet. Si vous dépensez un Point de Détermination pour vous débarasser d'un État <em>Inconscient</em>, mais que vous êtes toujours sujet aux causes de cette inconscience, vous gagnez un nouvel État <em>Inconscient</em> à la fin du round.</p><p>Lorsque vous vous débarassez de l'État <em>Inconscient</em>, vous gagnez les États <em>@Condition[A Terre]{À Terre}</em> et <em>@Condition[Extenué]{Exténué}</em>.</p>",
"WFRP4E.Conditions.Grappling" : "<p>Si vous commencez votre tour Empoigné, vous pouvez briser l'Empoignade si vous disposez d'un Avantage supérieur à celui de votre adversaire, et vous n'êtes pas considéré comme <em>Engagé</em> pour votre Mouvement ; autrement, vous devez effectuer un Test opposé <strong>de Force</strong> pour votre Action. Sur un succès, vous pouvez choisir une des deux options suivantes :<ul><li>Infliger BF+DR Dégâts en utilisant votre lancer de Force pour déterminer la Localisation affectée. Vous ignorez tous les PA car vous ne faites qu'effectuer des clefs de bras tout en tirant sur les muscles ;</li><li>Soit : 1) Conférer l'État <em>@Condition[Empêtré]</em> à votre adversaire, ou 2) Vous défaire de ce même État et vous débarasser d'un État <em>@Condition[Empêtré]</em> supplémentaire pour chaque DR obtenu.</li></ul></p>",
@ -1319,7 +1319,7 @@
"WFRP4E.ConditionName.Fatigued" : "Extenué",
"WFRP4E.ConditionName.Poisoned" : "Empoisonné",
"WFRP4E.ConditionName.Prone" : "A Terre",
"WFRP4E.ConditionName.Stunned" : "Assommé",
"WFRP4E.ConditionName.Stunned" : "Sonné",
"WFRP4E.ConditionName.Surprised" : "Surpris",
"WFRP4E.ConditionName.Unconscious" : "Inconscient",
"WFRP4E.ConditionName.Grappling" : "Empoigné",
@ -1336,7 +1336,7 @@
"WFRP4E.SymptomDescriptions.Gangrene" : "Votre chair noircit et pourrit, infectée par quelque chose d'horrible. Et cela ne semble pas s'arranger. Effectuez un lancer de pourcentage pour déterminer une <a class ='table-click' data-table='hitloc'><i class='fas fa-list'></i> Localisation</a>. Si vous obtenez Corps, vous avez de la chance, la Gangrène ne s'est pas propagée au cours de l'infection. Si vous obtenez la Tête, c'est votre nez qui est touché. Si vous obtenez Bras, ce sont vos doigts. Si c'est la Jambe, c'est votre pied qui est atteint. Chaque jour, effectuez un <b>Test de Résistance Accessible (+20)</b>. Sur un succès, la Gangrène est contenue. Sur un échec, elle empire. Si vous obtenez plus d'échecs que votre Bonus d'Endurance, la Localisation devient totalement inutilisable. Si cela se produit, utilisez les mêmes règles que pour l'Amputation (voir Blessures Critiques). Tant que vous souffrez de la Gangrène, subissez une pénalité de 10 à tous vos Tests de Sociabilité, et vous subissez le symptôme Blessé. De plus, comme si ce n'était pas suffisant, vous souffrez également du symptôme Toxine tant que le membre affecté ne sera pas amputé. Et cela perdurera même après que vous avez été guéri de la maladie à l'origine de la Gangrène. ",
"WFRP4E.SymptomDescriptions.Lingering" : "Vous avez une infection qui perdure. De ce fait, vous craignez que cela empire... Après que votre maladie est arrivée à la fin de sa Durée, effectuez un Test de Résistance avec la Difficulté indiquée entre parenthèses après le symptôme comme ceci : Persistant (Accessible) ou Persistant (Facile). Sur un Echec Minime (0), rajoutez <a class = 'chat-roll'><i class='fas fa-dice'></i> 1d10</a> jours à la Durée. Sur un Echec (-2), vous subissez une Blessure Purulente. Sur un Echec Stupéfiant (-6), vous développez une Infection du sang.",
"WFRP4E.SymptomDescriptions.Malaise" : "Vous ne vous sentez pas bien du tout. Vous êtes fatigué, ressentez des difficultés à vous concentrer. En fait, vous vous sentez malade. Gagnez un État <a class='condition-chat'><i class='fas fa-user-injured'></i> Extenué</a> dont vous ne pourrez vous défaire qu'une fois votre maladie guérie.",
"WFRP4E.SymptomDescriptions.Nausea" : "Vous vous sentez très malade et vous risquez de vomir si vous vous déplacez trop vite. Chaque fois que vous échouez à un Test qui implique un déplacement physique, votre nausée prend le dessus et vous vomissez. Vous gagnez l'État <a class = 'condition-chat'><i class='fas fa-user-injured'></i> Assommé</a> qui représente les conséquences de ces vomissements répétitifs ou de la déshydratation, en fonction des circonstances.",
"WFRP4E.SymptomDescriptions.Nausea" : "Vous vous sentez très malade et vous risquez de vomir si vous vous déplacez trop vite. Chaque fois que vous échouez à un Test qui implique un déplacement physique, votre nausée prend le dessus et vous vomissez. Vous gagnez l'État <a class = 'condition-chat'><i class='fas fa-user-injured'></i> Sonné</a> qui représente les conséquences de ces vomissements répétitifs ou de la déshydratation, en fonction des circonstances.",
"WFRP4E.SymptomDescriptions.Pox" : "Vous êtes recouvert de pustules, de gonflements, d'éruptions cutanées ou de boutons qui vous démangent, et c'est loin de vous rendre attirant. Les démangeaisons constituent surtout un problème esthétique, et impliquent une pénalité de -10 à tous les Tests de Sociabilité. De plus, n'oubliez pas d'interpréter ces démangeaisons en cours de jeu. Si vous voulez vous retenir un tant soit peu, réussissez un <b>Test de Calme Accessible (+20)</b>. Lorsque les démangeaisons s'arrêtent, effectuez un <b>Test de Calme Accessible (+20)</b>. Sur un échec, intervertissez les deux chiffres du résultat et vous recevez une cicatrice permanente à la Localisation correspondante, montrant ainsi l'endroit où ce démangeaisons n'ont pas été correctement traitées. Si la <a class='table-click' data-table = 'hitloc'><i class='fas fa-list'></i> Localisation</a> est la Tête, perdez définitivement 1 point de Sociabilité.",
"WFRP4E.SymptomDescriptions.Wounded" : "Vous avez une blessure ou une plaie ouverte qui ne guérit pas correctement à cause d'une infection. Pour chaque symptôme Blessé dont vous souffrez, vous ne pouvez pas guérir l'une de vos Blessures, qui reste donc ouverte et vous fait souffrir. Certains écoulements de pus sont même possibles. Chaque jour, réussissez un <b>Test de Résistance Facile (+20)</b> ou subissez une Blessure Purulente si vous n'en avez pas déjà une.",
"WFRP4E.SymptomDescriptions.Delirium" : "Votre sensibilité va et vient, avec des moments de clarté remplacés soudainement par des accès de délire, d'hallucinations et de terreur. Faites un <b>Test de Résistance Intermédiaire (+0)</b> toutes les heures et consultez le <a class='table-click' data-table='delirium'><i class='fas fa-list'></i> Tableau de Corruption Mentale</a>.",
@ -1523,14 +1523,19 @@
"Academics": "Lettrés",
"Academic": "Lettré",
"Burgher": "Citadins",
"Rogues": "Roublards",
"Burghers": "Citadins",
"Burgher": "Citadin",
"Rogues": "Roublards",
"Rogue": "Roublard",
"Riverfolk": "Riverains",
"Peasants": "Ruraux",
"Peasant": "Ruraux",
"Warrior": "Guerriers",
"Ranger": "Itinérants",
"Courtier": "Courtisans",
"Peasant": "Rural",
"Warriors": "Guerriers",
"Warrior": "Guerrier",
"Rangers": "Itinérants",
"Ranger": "Itinérant",
"Courtiers": "Courtisans",
"Courtier": "Courtisan",
"Calvalry": "Cavalerie",
"Flail": "Fléau",
@ -2303,5 +2308,7 @@
"TYPES.Item.weapon":"Arme",
"Badger": "Blaireau",
"Badgers": "Blaireaux"
"Badgers": "Blaireaux",
"Choose one": "A choisir",
"Bestial": "Bestial"
}

View File

@ -8,7 +8,7 @@
}
],
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
"version": "7.0.2",
"version": "7.0.23",
"esmodules": [
"babele-register.js",
"addon-register.js",
@ -30,107 +30,96 @@
"label": "Plats d'Auberges",
"type": "RollTable",
"name": "plats-dauberges",
"path": "packs/plats-dauberges.db",
"path": "packs/plats-dauberges",
"system": "wfrp4e",
"private": false,
"flags": {}
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Dons de Rhya",
"type": "JournalEntry",
"name": "dons-de-rhya",
"path": "packs/dons-de-rhya.db",
"path": "packs/dons-de-rhya",
"system": "wfrp4e",
"private": false,
"flags": {}
},
{
"label": "Sorts FR",
"type": "Item",
"name": "sort-fr",
"path": "packs/sort-fr.db",
"system": "wfrp4e",
"private": false,
"flags": {}
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Aides de Jeu FR",
"type": "JournalEntry",
"name": "aides-de-jeu-fr",
"path": "packs/aides-de-jeu-fr.db",
"path": "packs/aides-de-jeu-fr",
"system": "wfrp4e",
"private": false,
"flags": {}
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Potions : Drogues et Sédatifs",
"type": "Item",
"name": "drogues-and-sedatifs",
"path": "packs/drogues-and-sedatifs.db",
"system": "wfrp4e",
"private": false,
"flags": {}
},
{
"label": "Potions : Pansements et Cataplasmes",
"type": "Item",
"name": "pansements-and-cataplasmes",
"path": "packs/pansements-and-cataplasmes.db",
"system": "wfrp4e",
"private": false,
"flags": {}
},
{
"label": "Potions : Poisons et Toxiques",
"type": "Item",
"name": "poisons-and-toxiques",
"path": "packs/poisons-and-toxiques.db",
"system": "wfrp4e",
"private": false,
"flags": {}
},
{
"label": "Potions : Potions et Décoctions",
"type": "Item",
"name": "potions-and-decoctions",
"path": "packs/potions-and-decoctions.db",
"system": "wfrp4e",
"private": false,
"flags": {}
},
{
"label": "Potions : Antidotes et Remèdes",
"label": "Potions",
"type": "Item",
"name": "antidotes-and-remedes",
"path": "packs/antidotes-and-remedes.db",
"path": "packs/antidotes-and-remedes",
"system": "wfrp4e",
"private": false,
"flags": {}
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Tables des Traductions",
"type": "JournalEntry",
"name": "tables-des-traductions",
"path": "packs/tables-des-traductions.db",
"path": "packs/tables-des-traductions",
"system": "wfrp4e",
"private": false,
"flags": {}
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Apothicarium",
"type": "JournalEntry",
"name": "apothicarium",
"path": "packs/apothicarium.db",
"path": "packs/apothicarium",
"system": "wfrp4e",
"private": false,
"flags": {}
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
}
],
"packFolders": [
{
"name": "Module WFRP4 FR",
"sorting": "m",
"color": "#00435c",
"packs": [
"apothicarium",
"tables-des-traductions",
"antidotes-and-remedes",
"aides-de-jeu-fr",
"dons-de-rhya",
"plats-dauberges"
],
"folders": []
}
],
"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-7.0.2.zip",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-7.0.23.zip",
"id": "wh4-fr-translation",
"compatibility": {
"minimum": "10",
"minimum": "11",
"verified": "11"
},
"relationships": {

View File

@ -176,6 +176,28 @@ export class WH4FRPatchConfig {
game.wfrp4e.config.species["welf"] = "Elfe Sylvain";
}
if (game.wfrp4e.config.charastericticsBonus) {
game.wfrp4e.config.charastericticsBonus =
{
"ws": "Bonus de Capacité de Combat",
"bs": "Bonus de Capacité de Tir",
"s": "Bonus de Force",
"t": "Bonus d'Endurance",
"i": "Bonus d'Initiative",
"ag": "Bonus d'Agilité",
"dex": "Bonus de Dexterité",
"int": "Bonus d'Intelligence",
"wp": "Bonus de Force Mentale",
"fel": "Bonus de Sociabilité"
}
}
if (game.wfrp4e.config.classTrappings) {
for(const c of Object.keys(game.wfrp4e.config.classTrappings)) {
game.wfrp4e.config.classTrappings[game.i18n.localize(c)] = game.wfrp4e.config.classTrappings[c];
}
}
this.patch_species_skills();
this.patch_species_talents();
this.patch_subspecies();
@ -262,7 +284,7 @@ export class WH4FRPatchConfig {
}
}*/
game.wfrp4e.config.statusEffects = [
/*game.wfrp4e.config.statusEffects = [
{
icon: "systems/wfrp4e/icons/conditions/bleeding.png",
id: "bleeding",
@ -474,7 +496,7 @@ export class WH4FRPatchConfig {
}
}
]
]*/
/*game.wfrp4e.config.systemEffects = {
"enc1": {

View File

@ -52,35 +52,59 @@ 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: "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 },
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-zàéè\\-\\(\\)\\s\\/]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-zàéè\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Equipement\\s*:", secondParse: '(?<name>[a-zàéè\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "spell", toFind: "Sorts\\s*\\([a-z\\s]*\\)*:", secondParse: '(?<name>[a-zàéè\\s]*)', index: -1 }
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-zöàéè\\-\\!\\(\\)\\s\\/\']*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-zöàéè\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Equipement\\s*:", secondParse: '(?<name>[a-zöàéè0-9\\s(\\)\\-]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "spell", toFind: "Sorts\\s*\\([a-z\\s]*\\)*:", secondParse: '(?<name>[a-zöàéè\\s]*)', index: -1 },
{ name: "spellpetty", toFind: "Spells\\s*\\(Magie Mineure\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
{ name: "spellarcane", toFind: "Spells\\s*\\(Arcane[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
{ name: "spellarcane", toFind: "Spells\\s*\\(Domaine\\s*(?<lore>[a-z\\s]*)\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 }
];
let sectionDataUS = [
{ name: "trait", toFind: "Traits\\s*:", secondParse: '(?<name>[a-z\\s]*)[\\s\\+]*(?<value>.*|[\\+0-9]+)', index: -1 },
{ name: "skill", toFind: "Skills\\s*:", secondParse: '(?<name>[a-z\\s\\(\\)]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-z\\-\\s\\(\\)\\/]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-z\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Trappings\\s*:", secondParse: '(?<name>[a-z\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "spell", toFind: "Spells\\s*\\([a-z\\s]*\\)*:", secondParse: '(?<name>[a-z\\s]*)', index: -1 }
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-z\\-\\s\\!\\(\\)\\/\']*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-zö\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "trapping", toFind: "Trappings\\s*:", secondParse: '(?<name>[a-zö0-9\\s\\(\\)\\-]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
{ name: "spellpetty", toFind: "Spells\\s*\\(Petty\\s*[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
{ name: "spellarcane", toFind: "Spells\\s*\\(Arcane\\s*[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
{ name: "spelllore", toFind: "Spells\\s*\\(Lore\\s*of\\s*(?<lore>[a-z\\s]*)\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 }
]
let moneyUS = [ {name:" gold crown", key: "gc"}, {name: " gc", key: "gc"},
{name:" silver shilling", key:"ss"}, {name:" ss", key: "ss"}, {name:"/-", key: "ss"}, {name:" brass penn", key: "bp"}, {name:" bp", key: "bp"} ]
let moneyFR = [ {name:" couronnes d", key: "gc"}, {name: " co", key: "gc"},
{name:" pistoles ", key:"ss"}, {name:" pa", key: "ss"}, {name:"/-", key: "ss"}, {name:" sous de cuivre", key: "bp"}, {name:" sc", key: "bp"} ]
let regSep = XRegExp('\\s*,\\s*', 'gi'); // Term separator, with auto trim
let regLine1 = XRegExp('[\\r\\n\\.]', 'gi'); // Term separator, with auto trim
let regName = XRegExp(name_val, 'gi');
// Used to detect/manage the skill groupings in the statblock
const __SkillGroupsUS = ["Melee", "Lore", "Trade"]
const __SkillGroupsFR = ["Corps à corps", "Domaine", "Métier"]
// Used to auto update the system.tests.value field
const __hasTestValue = {
"etiquette": true,
"resistance": true,
"acute sense": true,
"strider": true,
"savant": true,
"craftsman": true
}
/************************************************************************************/
async function __findItem(itemName, itemType, location = null) {
let toSearch = itemName.toLowerCase().trim();
let items = game.items.contents.filter(i => i.type == itemType)
console.log("Searching for", toSearch, itemType)
// Search imported items first
for (let i of items) {
if (i.name.toLowerCase() == itemName.toLowerCase() && i.type == itemType)
if (i.name.toLowerCase() == toSearch.toLowerCase() && i.type == itemType)
return i.toObject();
}
let itemList
@ -88,12 +112,11 @@ async function __findItem(itemName, itemType, location = null) {
// find pack -> search pack -> return entity
if (location) {
let pack = game.packs.find(p => {
location.split(".")[0] == p.metadata.package &&
location.split(".")[1] == p.metadata.name
location.split(".")[0] == p.metadata.package && location.split(".")[1] == p.metadata.name
})
if (pack) {
await pack.getIndex().then(index => itemList = index);
let searchResult = itemList.find(t => (t.translated && t.type == itemType && t.originalName.toLowerCase() == toSearch) || (t.type == itemType && t.name.toLowerCase() == toSearch) );
let searchResult = itemList.find(t => (t.translated && t.type == itemType && (t.originalName.toLowerCase() == toSearch || s.originalName.toLowerCase().split("(")[0].trim() == toSearch)) || (t.type == itemType && (t.name.toLowerCase() == toSearch || t.name.toLowerCase().split("(")[0].trim() == toSearch)));
if (searchResult) {
let item = await pack.getDocument(searchResult._id)
return item.toObject()
@ -104,7 +127,8 @@ async function __findItem(itemName, itemType, location = null) {
// If all else fails, search each pack
for (let p of game.wfrp4e.tags.getPacksWithTag(itemType)) {
await p.getIndex().then(index => itemList = index);
let searchResult = itemList.find(t => (t.translated && t.type == itemType && t.originalName.toLowerCase() == toSearch) || (t.type == itemType && t.name.toLowerCase() == toSearch) );
console.log("Seatch", itemType, toSearch);
let searchResult = itemList.find(t => (t.translated && t.type == itemType && (t.originalName.toLowerCase() == toSearch || s.originalName.toLowerCase().split("(")[0].trim() == toSearch)) || (t.type == itemType && (t.name.toLowerCase() == toSearch || t.name.toLowerCase().split("(")[0].trim() == toSearch)));
if (searchResult) {
let item = await p.getDocument(searchResult._id)
return item.toObject()
@ -120,80 +144,102 @@ async function __findSkill(skillName, value = undefined) {
let skillSplit = XRegExp.exec(skillName, XRegExp(parseStr, 'gi'));
// First try world items
let item
let worldItem = game.items.contents.filter(i => i.type == "skill" && i.name.toLowerCase() == toSearch)[0];
if (worldItem) return worldItem;
let packs = game.wfrp4e.tags.getPacksWithTag("skill");
for (let pack of packs) {
let skillList = await pack.getIndex();
// Search for specific skill (won't find unlisted specializations)
let searchResult = skillList.find(s => (s.type == "skill" && s.translated && s.originalName.toLowerCase() == toSearch) || (s.type == "skill" && s.name.toLowerCase() == toSearch ) );
if (!searchResult) {
let toSearchClean = toSearch.split("(")[0].trim();
searchResult = skillList.find(s => (s.type == "skill" && s.translated && s.originalName.toLowerCase().split("(")[0].trim() == toSearchClean) ||
(s.type == "skill" && s.name.toLowerCase().split("(")[0].trim() == toSearchClean) );
}
if (searchResult) {
let dbSkill;
await pack.getDocument(searchResult._id).then(packSkill => dbSkill = packSkill);
let item = dbSkill.toObject();
//console.log("Skill name1", skillSplit)
if (skillSplit.specialized && ( item.name.includes('()') || item.name.includes('( )' ) ) ) {
let spec = XRegExp.replace(skillSplit.specialized, "(", "");
spec = XRegExp.replace(spec, ")", "");
let skillSplit2 = XRegExp.exec(item.name, XRegExp(parseStr, 'gi'));
item.name = skillSplit2.name + '(' + game.i18n.localize( spec.trim() ) + ')'
//dbSkill.update( { name: } );
if (worldItem) {
item = worldItem.toObject()
} else {
let packs = game.wfrp4e.tags.getPacksWithTag("skill");
for (let pack of packs) {
let skillList = await pack.getIndex();
// Search for specific skill (won't find unlisted specializations)
let searchResult = skillList.find(s => (s.type == "skill" && s.translated && s.originalName.toLowerCase() == toSearch) || (s.type == "skill" && s.name.toLowerCase() == toSearch));
if (!searchResult) {
let toSearchClean = toSearch.split("(")[0].trim();
searchResult = skillList.find(s => (s.type == "skill" && s.translated && s.originalName.toLowerCase().split("(")[0].trim() == toSearchClean) ||
(s.type == "skill" && s.name.toLowerCase().split("(")[0].trim() == toSearchClean));
}
if (searchResult) {
let dbSkill;
await pack.getDocument(searchResult._id).then(packSkill => dbSkill = packSkill);
item = dbSkill.toObject();
}
//game.babele.translate('wfrp4e-core.skills', dbSkill);
return item
}
}
throw "Could not find skill (or specialization of) " + skillName + " in compendum or world"
if (item) {
//console.log("Skill name1", skillSplit)
if (skillSplit.specialized && (item.name.includes('()') || item.name.includes('( )'))) {
let spec = XRegExp.replace(skillSplit.specialized, "(", "");
spec = XRegExp.replace(spec, ")", "");
let skillSplit2 = XRegExp.exec(item.name, XRegExp(parseStr, 'gi'));
item.name = skillSplit2.name + '(' + game.i18n.localize(spec.trim()) + ')'
//dbSkill.update( { name: } );
}
//game.babele.translate('wfrp4e-core.skills', dbSkill);
return item
}
}
/************************************************************************************/
async function __findTalent(talentName) {
let parseStr = '(?<name>[a-z\\s\\/]*)[\\s\\+]*(?<specialized>[a-z\\s\\(\\)]*)';
let parseStr = '(?<name>[a-z\\s\\!\\/\']*)[\\s\\+]*(?<specialized>[a-z\\s\\(\\)\']*)';
let talentSplit = XRegExp.exec(talentName, XRegExp(parseStr, 'gi'));
let toSearch = talentSplit.name.toLowerCase().trim();
//console.log("Talent name", talentName, talentSplit)
//console.log("Talent name", toSearch, talentName, talentSplit)
// First try world items
let item
let worldItem = game.items.contents.filter(i => i.type == "talent" && i.name.toLowerCase() == toSearch)[0];
if (worldItem) return worldItem;
let packs = game.wfrp4e.tags.getPacksWithTag("talent");
for (let pack of packs) {
let talentList = await pack.getIndex();
// Search for specific skill (won't find unlisted specializations)
let searchResult = talentList.find(s => (s.translated && s.originalName.toLowerCase() == toSearch) || (s.name.toLowerCase() == toSearch ) );
if (!searchResult) {
let toSearchClean = toSearch.split("(")[0].trim();
searchResult = talentList.find(s => (s.translated && s.originalName.toLowerCase().split("(")[0].trim() == toSearchClean) ||
(s.name.toLowerCase().split("(")[0].trim() == toSearchClean) );
}
if (searchResult) {
let dbTalent;
//console.log("Talent name1", talentSplit)
await pack.getDocument(searchResult._id).then(packTalent => dbTalent = packTalent);
let item = dbTalent.toObject();
if ( talentSplit.specialized ) {
let spec = XRegExp.replace(talentSplit.specialized, "(", "");
spec = XRegExp.replace(spec, ")", "");
item.name = talentSplit.name + '(' + game.i18n.localize( spec.trim() ) + ')'
//console.log("Talent name2", dbTalent.name, spec, game.i18n.localize( spec.trim()) )
if (worldItem) {
item = worldItem.toObject()
} else {
let packs = game.wfrp4e.tags.getPacksWithTag("talent");
for (let pack of packs) {
let talentList = await pack.getIndex();
// Search for specific talent (won't find unlisted specializations)
let searchResult = talentList.find(s => (s.type == "talent" && s.translated && s.originalName.toLowerCase() == toSearch) || (s.type == "talent" && s.name.toLowerCase() == toSearch));
if (!searchResult) {
let toSearchClean = toSearch.split("(")[0].trim();
searchResult = talentList.find(s => (s.type == "talent" && s.translated && s.originalName.toLowerCase().split("(")[0].trim() == toSearchClean) ||
(s.type == "talent" && s.name.toLowerCase().split("(")[0].trim() == toSearchClean));
}
if (searchResult) {
let dbTalent;
//console.log("Talent name1", talentSplit)
await pack.getDocument(searchResult._id).then(packTalent => dbTalent = packTalent);
item = dbTalent.toObject();
}
return item;
}
}
throw "Could not find talent (or specialization of) " + talentName + " in compendium or world"
if (item) {
if (talentSplit.specialized) {
let spec = XRegExp.replace(talentSplit.specialized, "(", "");
spec = XRegExp.replace(spec, ")", "");
spec = spec.trim()
let addToName = true
//console.log("Talent name2", dbTalent.name, spec, game.i18n.localize( spec.trim()) )
if (toSearch == 'doomed') {
item.system.description.value += `<br><br><em>${spec}</em>`;
addToName = false // Very specific case
}
if (__hasTestValue[toSearch]) {
item.system.tests.value = game.i18n.localize(spec);
}
item.name = talentSplit.name
if (addToName) {
item.name += '(' + game.i18n.localize(spec) + ')'
}
item.system.advances.value = 1 // Set 1 advance
}
// Specific Talent post-processing
return item;
}
}
/************************************************************************************/
function __patchName ( name) {
if (name.toLowerCase == 'magic sense')
function __patchName(name) {
if (name.toLowerCase == 'magic sense')
name = 'Magical Sense'
return name
}
@ -204,33 +250,41 @@ export default async function statParserFR(statString, type = "npc") {
// Patch wront/strange carac value before processing
statString = statString.replace(/ /g, " 0")
let moneys = { gc: 0, ss: 0, bp: 0 }
let statNameReg = us_carac
let sectionData = sectionDataUS
let sectionData = duplicate(sectionDataUS)
let skillGrouping = __SkillGroupsUS
let moneyLang = moneyUS
// Detect French stat block
if (statString.includes('CC') && statString.includes('CT') && statString.includes('FM')) {
//ui.notifications.warn("Le parsing de stablock en Français n'est pas encore prêt")
statNameReg = fr_carac
sectionData = sectionDataFR
sectionData = duplicate(sectionDataFR)
skillGrouping = __SkillGroupsFR
moneyLang = moneyFR
}
let reg1 = XRegExp(statNameReg, 'gi')
let res = reg1.test(statString)
if (res) { //stat block identified go on
let globalItemList = []
// Extract the name
let res1 = XRegExp.exec(statString, reg1)
console.log("REG", res1)
let pnjStr = statString.substring(0, res1.index)
let nameRes = XRegExp.exec(pnjStr, regName)
console.log(nameRes)
//console.log(nameRes)
if (nameRes.tiers && nameRes.tiers.length > 0 && hasProperty(model, "details.status.value")) {
let regTiers = XRegExp("(?<name>[A-Za-z]*)\\s+(?<level>[0-9]*)");
let resTiers = XRegExp.exec(nameRes.tiers, regTiers);
console.log(resTiers);
model.details.status.value = game.i18n.localize(resTiers.name.trim()) + " " + resTiers.level;
}
let baseName = nameRes.name.split("\n")
// Compute the PNJ name
let pnjName = nameRes.name.split("—")[0].split(" ").filter(f => !!f);
let pnjName = baseName[0].split("—")[0].split(" ").filter(f => !!f)
pnjName = pnjName.map(word => {
if (word == "VON")
return word.toLowerCase();
@ -240,7 +294,14 @@ export default async function statParserFR(statString, type = "npc") {
return word;
})
pnjName = pnjName.join(" ")
if (baseName[1]) {
let careerName = baseName[1].split(",")[0]
//console.log("CAREER", careerName)
let career = await __findItem(careerName, "career")
if (career) {
globalItemList.push(career)
}
}
// Get the carac values
let reg2 = XRegExp(carac_val, 'gi')
let resCarac = XRegExp.exec(statString, reg2) // resr contains all carac found
@ -259,20 +320,23 @@ export default async function statParserFR(statString, type = "npc") {
for (let def of sectionData) {
def.regDef = XRegExp(def.toFind, 'gi');
let res = XRegExp.exec(statString, def.regDef);
if (res) def.index = res.index; // Get the index in the string
if (res) {
def.index = res.index // Position of the string in the whole statblock
def.lore = res.lore // Extraction of the lore, when present
} // Get the index in the string
//console.log(" Parsing", def.name, res);
}
// Sort to split position of various substring
sectionData.sort(function (a, b) { return a.index - b.index; });
let globalItemList = [];
// Then loop again and process each item type
for (let i = 0; i < sectionData.length; i++) {
let def = sectionData[i];
if (def.index > -1) {
let maxIndex = statString.length
if (sectionData[i + 1] && sectionData[i + 1].index > -1)
if (sectionData[i + 1] && sectionData[i + 1].index > -1) {
maxIndex = sectionData[i + 1].index
}
def.substring = statString.substring(def.index, maxIndex)
def.substring = XRegExp.replace(def.substring, def.regDef, "")
def.substring = XRegExp.replace(def.substring, regLine1, " ")
@ -280,16 +344,17 @@ export default async function statParserFR(statString, type = "npc") {
// Then create a table of it in termList, with specific sub-parsing rules
let termList = XRegExp.split(def.substring, regSep);
//console.log("Term list identified", termList)
let lastSkillName
for (let name of termList) {
let itemFound, subres, value;
if (def.secondParse) {
subres = XRegExp.exec(name, XRegExp(def.secondParse, 'gi'))
//console.log("Second pars", def, name, subres)
name = subres.name.trim().replace("\n", "").replace("\r", "")
name = subres.name.trim().replace("\n", "").replace("\r", "")
if (subres.value) {
value = XRegExp.replace(subres.value, "(", "")
value = XRegExp.replace(value, ")", "")
value = XRegExp.replace(value, ")", "")
} else {
value = 0
}
@ -301,38 +366,42 @@ export default async function statParserFR(statString, type = "npc") {
}
catch { }
if (itemFound && value && value.length > 0) {
if (name.toLowerCase() == 'weapon' || name.toLowerCase() == "bite" || name.toLowerCase() == "tail" ||
name.toLowerCase() == 'arme' || name.toLowerCase() == "morsure" || name.toLowerCase() == "queue") {
let number = value.match(/\d+/g);
if (number && (name.toLowerCase() == 'ranged' || name.toLowerCase() == 'weapon' || name.toLowerCase() == "bite" || name.toLowerCase() == "tail" ||
name.toLowerCase() == 'arme' || name.toLowerCase() == "morsure" || name.toLowerCase() == "queue")) {
//console.log(itemFound)
itemFound.system.specification.value = Number(value) - Math.floor( Number(model.characteristics.s.initial) / 10)
number = number[0] // Take first number ....
itemFound.system.specification.value = Number(number) - ((name.toLowerCase() == 'ranged') ? 0 : Math.floor(Number(model.characteristics.s.initial) / 10))
} else {
itemFound.system.specification.value = game.i18n.localize(value)
}
//itemFound.name += "(" + value + ")"
}
if (!itemFound)
ui.notifications.error("Trait non trouvé, à ajouter manuellement : " + name, { permanent: true })
} else if (def.name == 'skill') {
try {
itemFound = await __findSkill(name, value);
}
catch { }
let newName = name
if (!itemFound && lastSkillName) {
name = lastSkillName + " (" + name + ")"
itemFound = await __findSkill(name, value);
newName = lastSkillName + " (" + name + ")"
itemFound = await __findSkill(newName, value)
}
if (itemFound && subres && value) {
itemFound.system.advances.value = Number(value) - Number(model.characteristics[itemFound.system.characteristic.value].initial);
}
lastSkillName = undefined
if ( itemFound?.name?.includes('Trade')) { // useful to handle skills grouping
lastSkillName = "Trade"
}
if ( itemFound?.name?.includes('Lore')) {
lastSkillName = "Lore"
}
if (!itemFound)
for (let keySkillGroup of skillGrouping) {
if (newName.includes(keySkillGroup)) { // useful to handle skills grouping
lastSkillName = keySkillGroup
}
}
if (!itemFound) {
ui.notifications.error("Compétence non trouvée, à ajouter manuellement : " + name, { permanent: true })
}
} else if (def.name == 'talent') {
try {
itemFound = await __findTalent(name);
@ -340,35 +409,62 @@ export default async function statParserFR(statString, type = "npc") {
catch { }
if (itemFound && subres && value)
itemFound.system.advances.value = Number(value);
if (!itemFound)
if (!itemFound) {
ui.notifications.error("Talent non trouvé, à ajouter manuellement : " + name, { permanent: true })
} else if (def.name == 'trapping') {
try {
itemFound = await __findItem(name, "trapping");
}
catch { }
} else if (def.name == 'trapping') {
itemFound = await __findItem(name, "trapping");
if (!itemFound) {
itemFound = await __findItem(name, "weapon");
}
if (!itemFound) {
itemFound = await __findItem(name, "armor");
}
if (!itemFound && name) {
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "trapping", system: game.system.model.Item.trapping })
itemFound.system.trappingType.value = "misc"
itemFound = itemFound.toObject()
}
} else if (def.name == 'spell') {
console.log("Found spells section!!!!")
try {
itemFound = await __findItem(name, "spell");
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 })
} 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 })
} else {
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "trapping", system: game.system.model.Item.trapping })
itemFound.system.trappingType.value = "misc"
if (name.toLowerCase().includes("cloth")) {
itemFound.system.trappingType.value = "clothingAccessories"
}
}
catch { }
if (!itemFound && name) {
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "spell", system: game.system.model.Item.spell })
itemFound = itemFound.toObject();
}
itemFound = itemFound.toObject()
}
// Searching money stuff
for (let mondeyDef of moneyLang) {
if (name.toLowerCase().includes(mondeyDef.name)) {
let regMoney = XRegExp("(\\d+)\\s*" + mondeyDef.name.trim(), 'gi')
let moneyParsed = XRegExp.exec(name.toLowerCase(), regMoney)
console.log("Parsing money", name, moneyParsed)
moneys[mondeyDef.key] += (moneyParsed && moneyParsed[1]) ? Number(moneyParsed[1]) : 0
}
}
} else if (def.name.includes('spell')) {
console.log("Found spells section!!!!", name, def, def.lore || "NO LORE")
// Lore management, firs pass
if (def.lore) {
let newName = name + " (" + def.lore + ")"
itemFound = await __findItem(newName, "spell");
//console.log("Trying to find ", newName, itemFound)
}
if (!itemFound) { // If not found with Lore, try without the lore
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 = itemFound.toObject();
}
} else if (def.name == 'mutation') {
try {
itemFound = await __findItem(name, "mutation");
}
catch { }
}
if (itemFound)
globalItemList.push(itemFound);
}
@ -376,14 +472,39 @@ export default async function statParserFR(statString, type = "npc") {
}
let moneyItems = await game.wfrp4e.utility.allMoneyItems() || [];
moneyItems = moneyItems.sort((a, b) => (a.system.coinValue.value > b.system.coinValue.value) ? -1 : 1);
moneyItems.forEach(m => m.system.quantity.value = 0)
for (let m of moneyItems) {
m.system.quantity.value = 0
if (m.system.coinValue.value == 1) {
m.system.quantity.value += moneys.bp
}
if (m.system.coinValue.value == 240) {
m.system.quantity.value += moneys.gc
}
if (m.system.coinValue.value == 12) {
m.system.quantity.value += moneys.ss
}
}
globalItemList = globalItemList.concat(moneyItems);
//console.log("My liste :", globalItemList);
//DEBUG : console.log("My liste :", moneyItems, moneys);
let name = pnjName;
let effects = globalItemList.reduce((total, globItem) => total.concat(globItem.effects), [])
effects = effects.filter(e => !!e)
effects = effects.filter(e => e.transfer)
for (let e of effects) {
for (let c of e.changes) {
// Charac management stuff
if (c.key?.includes("characteristics")) {
let cKey = c.key.split(".")[2]
model.characteristics[cKey].initial -= Number(c.value)
}
// Move management
if (c.key?.includes("move")) {
model.details.move.value -= Number(c.value)
}
}
}
//DEBUG : console.log("EFFECTS", effects)
return { name, type, data: model, items: globalItemList, effects }
}

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000359

View File

View File

@ -0,0 +1,7 @@
2023/11/15-17:42:16.143060 7fedf37fe6c0 Recovering log #357
2023/11/15-17:42:16.175280 7fedf37fe6c0 Delete type=3 #355
2023/11/15-17:42:16.175329 7fedf37fe6c0 Delete type=0 #357
2023/11/15-17:42:45.255642 7feb713c96c0 Level-0 table #362: started
2023/11/15-17:42:45.255700 7feb713c96c0 Level-0 table #362: 0 bytes OK
2023/11/15-17:42:45.262284 7feb713c96c0 Delete type=0 #360
2023/11/15-17:42:45.287250 7feb713c96c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,7 @@
2023/11/15-17:41:29.489267 7fee08df96c0 Recovering log #353
2023/11/15-17:41:29.499370 7fee08df96c0 Delete type=3 #351
2023/11/15-17:41:29.499459 7fee08df96c0 Delete type=0 #353
2023/11/15-17:41:59.426003 7feb713c96c0 Level-0 table #358: started
2023/11/15-17:41:59.426035 7feb713c96c0 Level-0 table #358: 0 bytes OK
2023/11/15-17:41:59.432389 7feb713c96c0 Delete type=0 #356
2023/11/15-17:41:59.446866 7feb713c96c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000360

View File

View File

@ -0,0 +1,7 @@
2023/11/15-17:42:16.177674 7fee095fa6c0 Recovering log #358
2023/11/15-17:42:16.210044 7fee095fa6c0 Delete type=3 #356
2023/11/15-17:42:16.210161 7fee095fa6c0 Delete type=0 #358
2023/11/15-17:42:45.262422 7feb713c96c0 Level-0 table #363: started
2023/11/15-17:42:45.262451 7feb713c96c0 Level-0 table #363: 0 bytes OK
2023/11/15-17:42:45.268977 7feb713c96c0 Delete type=0 #361
2023/11/15-17:42:45.287278 7feb713c96c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,7 @@
2023/11/15-17:41:29.501814 7fee095fa6c0 Recovering log #354
2023/11/15-17:41:29.511651 7fee095fa6c0 Delete type=3 #352
2023/11/15-17:41:29.511705 7fee095fa6c0 Delete type=0 #354
2023/11/15-17:41:59.410822 7feb713c96c0 Level-0 table #359: started
2023/11/15-17:41:59.410872 7feb713c96c0 Level-0 table #359: 0 bytes OK
2023/11/15-17:41:59.417451 7feb713c96c0 Delete type=0 #357
2023/11/15-17:41:59.425867 7feb713c96c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000359

0
packs/apothicarium/LOCK Normal file
View File

7
packs/apothicarium/LOG Normal file
View File

@ -0,0 +1,7 @@
2023/11/15-17:42:16.308041 7fedf37fe6c0 Recovering log #357
2023/11/15-17:42:16.334001 7fedf37fe6c0 Delete type=3 #355
2023/11/15-17:42:16.334121 7fedf37fe6c0 Delete type=0 #357
2023/11/15-17:42:45.287466 7feb713c96c0 Level-0 table #362: started
2023/11/15-17:42:45.287530 7feb713c96c0 Level-0 table #362: 0 bytes OK
2023/11/15-17:42:45.293998 7feb713c96c0 Delete type=0 #360
2023/11/15-17:42:45.294197 7feb713c96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,7 @@
2023/11/15-17:41:29.527190 7fedf3fff6c0 Recovering log #353
2023/11/15-17:41:29.536787 7fedf3fff6c0 Delete type=3 #351
2023/11/15-17:41:29.536837 7fedf3fff6c0 Delete type=0 #353
2023/11/15-17:41:59.440723 7feb713c96c0 Level-0 table #358: started
2023/11/15-17:41:59.440745 7feb713c96c0 Level-0 table #358: 0 bytes OK
2023/11/15-17:41:59.446765 7feb713c96c0 Delete type=0 #356
2023/11/15-17:41:59.446886 7feb713c96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000359

0
packs/dons-de-rhya/LOCK Normal file
View File

7
packs/dons-de-rhya/LOG Normal file
View File

@ -0,0 +1,7 @@
2023/11/15-17:42:16.111319 7fedf3fff6c0 Recovering log #357
2023/11/15-17:42:16.141307 7fedf3fff6c0 Delete type=3 #355
2023/11/15-17:42:16.141358 7fedf3fff6c0 Delete type=0 #357
2023/11/15-17:42:45.269172 7feb713c96c0 Level-0 table #362: started
2023/11/15-17:42:45.269251 7feb713c96c0 Level-0 table #362: 0 bytes OK
2023/11/15-17:42:45.275774 7feb713c96c0 Delete type=0 #360
2023/11/15-17:42:45.287295 7feb713c96c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,7 @@
2023/11/15-17:41:29.475001 7fedf3fff6c0 Recovering log #353
2023/11/15-17:41:29.485837 7fedf3fff6c0 Delete type=3 #351
2023/11/15-17:41:29.485890 7fedf3fff6c0 Delete type=0 #353
2023/11/15-17:41:59.403681 7feb713c96c0 Level-0 table #358: started
2023/11/15-17:41:59.403727 7feb713c96c0 Level-0 table #358: 0 bytes OK
2023/11/15-17:41:59.410630 7feb713c96c0 Delete type=0 #356
2023/11/15-17:41:59.425858 7feb713c96c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.570183 7f5807fff6c0 Recovering log #266
2023/10/01-20:44:40.632484 7f5807fff6c0 Delete type=3 #264
2023/10/01-20:44:40.632822 7f5807fff6c0 Delete type=0 #266
2023/10/01-20:59:02.099129 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.099170 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.106069 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.112689 7f58067fc6c0 Manual compaction at level-0 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.112752 7f58067fc6c0 Manual compaction at level-1 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.727478 7f5807fff6c0 Recovering log #262
2023/10/01-18:43:22.785389 7f5807fff6c0 Delete type=3 #260
2023/10/01-18:43:22.785534 7f5807fff6c0 Delete type=0 #262
2023/10/01-18:47:48.446951 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.447052 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.485936 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.524251 7f58067fc6c0 Manual compaction at level-0 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.524330 7f58067fc6c0 Manual compaction at level-1 from '!items!0LoyZMCXQNdFa2eX' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.636180 7f5a9cdff6c0 Recovering log #266
2023/10/01-20:44:40.697598 7f5a9cdff6c0 Delete type=3 #264
2023/10/01-20:44:40.697748 7f5a9cdff6c0 Delete type=0 #266
2023/10/01-20:59:02.084751 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.084857 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.091434 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.112649 7f58067fc6c0 Manual compaction at level-0 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.112721 7f58067fc6c0 Manual compaction at level-1 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.793152 7f5806ffd6c0 Recovering log #262
2023/10/01-18:43:22.857219 7f5806ffd6c0 Delete type=3 #260
2023/10/01-18:43:22.857359 7f5806ffd6c0 Delete type=0 #262
2023/10/01-18:47:48.340716 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.340770 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.376145 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.376399 7f58067fc6c0 Manual compaction at level-0 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.376460 7f58067fc6c0 Manual compaction at level-1 from '!items!25lWFfePrPzoL9qs' @ 72057594037927935 : 1 .. '!items!t9Z8fy9D9bcgBzj0' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000359

View File

View File

@ -0,0 +1,7 @@
2023/11/15-17:42:16.080813 7fee08df96c0 Recovering log #357
2023/11/15-17:42:16.108691 7fee08df96c0 Delete type=3 #355
2023/11/15-17:42:16.108769 7fee08df96c0 Delete type=0 #357
2023/11/15-17:42:45.247895 7feb713c96c0 Level-0 table #362: started
2023/11/15-17:42:45.247927 7feb713c96c0 Level-0 table #362: 0 bytes OK
2023/11/15-17:42:45.255226 7feb713c96c0 Delete type=0 #360
2023/11/15-17:42:45.255421 7feb713c96c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,7 @@
2023/11/15-17:41:29.460484 7fedf37fe6c0 Recovering log #353
2023/11/15-17:41:29.471536 7fedf37fe6c0 Delete type=3 #351
2023/11/15-17:41:29.471666 7fedf37fe6c0 Delete type=0 #353
2023/11/15-17:41:59.417645 7feb713c96c0 Level-0 table #358: started
2023/11/15-17:41:59.417700 7feb713c96c0 Level-0 table #358: 0 bytes OK
2023/11/15-17:41:59.425759 7feb713c96c0 Delete type=0 #356
2023/11/15-17:41:59.425889 7feb713c96c0 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

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.701549 7f5806ffd6c0 Recovering log #266
2023/10/01-20:44:40.764544 7f5806ffd6c0 Delete type=3 #264
2023/10/01-20:44:40.764684 7f5806ffd6c0 Delete type=0 #266
2023/10/01-20:59:02.106210 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.106249 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.112490 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.112706 7f58067fc6c0 Manual compaction at level-0 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.112767 7f58067fc6c0 Manual compaction at level-1 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.865435 7f58077fe6c0 Recovering log #262
2023/10/01-18:43:22.924289 7f58077fe6c0 Delete type=3 #260
2023/10/01-18:43:22.924448 7f58077fe6c0 Delete type=0 #262
2023/10/01-18:47:48.407565 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.407608 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.446683 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.524233 7f58067fc6c0 Manual compaction at level-0 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.524299 7f58067fc6c0 Manual compaction at level-1 from '!items!7NSF4hTW0QUkYCnZ' @ 72057594037927935 : 1 .. '!items!xobXk8u7SVQ49eP8' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

@ -0,0 +1 @@
MANIFEST-000268

View File

View File

@ -0,0 +1,8 @@
2023/10/01-20:44:40.768234 7f58077fe6c0 Recovering log #266
2023/10/01-20:44:40.821657 7f58077fe6c0 Delete type=3 #264
2023/10/01-20:44:40.821800 7f58077fe6c0 Delete type=0 #266
2023/10/01-20:59:02.112885 7f58067fc6c0 Level-0 table #271: started
2023/10/01-20:59:02.112924 7f58067fc6c0 Level-0 table #271: 0 bytes OK
2023/10/01-20:59:02.119967 7f58067fc6c0 Delete type=0 #269
2023/10/01-20:59:02.147587 7f58067fc6c0 Manual compaction at level-0 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)
2023/10/01-20:59:02.147752 7f58067fc6c0 Manual compaction at level-1 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/10/01-18:43:22.932395 7f5a9cdff6c0 Recovering log #262
2023/10/01-18:43:22.998115 7f5a9cdff6c0 Delete type=3 #260
2023/10/01-18:43:22.998245 7f5a9cdff6c0 Delete type=0 #262
2023/10/01-18:47:48.376668 7f58067fc6c0 Level-0 table #267: started
2023/10/01-18:47:48.376711 7f58067fc6c0 Level-0 table #267: 0 bytes OK
2023/10/01-18:47:48.407379 7f58067fc6c0 Delete type=0 #265
2023/10/01-18:47:48.524212 7f58067fc6c0 Manual compaction at level-0 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)
2023/10/01-18:47:48.524283 7f58067fc6c0 Manual compaction at level-1 from '!items!0iQg3XJmxAAbFief' @ 72057594037927935 : 1 .. '!items!uwcMzO6u0rnhqLdf' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/sort-fr/000005.ldb Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More