Compare commits
48 Commits
foundryvtt
...
foundryvtt
Author | SHA1 | Date | |
---|---|---|---|
9ba6bde6e0 | |||
1ff7be02d4 | |||
bd113b6ef3 | |||
db1bf4e23a | |||
4cf52343c6 | |||
83822ade7f | |||
e79474ab8d | |||
8d5fb68182 | |||
54612628b8 | |||
3f861ed86c | |||
a15260bff7 | |||
541e2836ca | |||
73133b0abf | |||
7ceaa73233 | |||
a888502952 | |||
a1f1861172 | |||
0335ffb354 | |||
303cdece36 | |||
71b45c0cad | |||
1408122c59 | |||
7305a9c370 | |||
e427e3702b | |||
8c7848bf2b | |||
e5ba63b8e0 | |||
16f97040d3 | |||
a9aa0edad8 | |||
0f0c482187 | |||
644e8b8146 | |||
044dcde7bf | |||
fb6ef1b0b3 | |||
2eee4d5da1 | |||
6149261726 | |||
4a1295de15 | |||
095a3a0929 | |||
b3703c62d3 | |||
b5f77c27c6 | |||
6eaf2bb030 | |||
2ae5349f15 | |||
0650e39019 | |||
959e0e0555 | |||
27788a3f15 | |||
037ba87761 | |||
e2178329f7 | |||
83da960d30 | |||
4f22403c5f | |||
6e9df6e59a | |||
43d78c5c68 | |||
6918eaeb1b |
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,6 +1,2 @@
|
|||||||
.history/
|
.history/
|
||||||
.vscode/
|
.vscode/
|
||||||
/packs/*/
|
|
||||||
/packs/*/CURRENT
|
|
||||||
/packs/*/LOG
|
|
||||||
/packs/*/LOCK
|
|
||||||
|
@ -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
|
* compendium/talents -> LeRatier/Dr.Droide/Moilu/Gharazel
|
||||||
* various modules and fixes -> Ashburry77
|
* various modules and fixes -> Ashburry77
|
||||||
* various modules and fixes -> Bimkiz
|
* various modules and fixes -> Bimkiz
|
||||||
|
* contributions au code et améliorations -> Pallando
|
||||||
|
|
||||||
## Feedback
|
## Feedback
|
||||||
|
|
||||||
|
@ -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 {
|
try {
|
||||||
|
|
||||||
formula = formula.toLowerCase();
|
formula = formula.toLowerCase();
|
||||||
@ -85,10 +85,10 @@ Hooks.once('init', () => {
|
|||||||
catch (e) {
|
catch (e) {
|
||||||
throw ui.notifications.error("Error: could not parse spell damage. See console for details")
|
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
|
let formula = formulaOverride || this[type]?.value
|
||||||
if (Number.isNumeric(formula))
|
if (Number.isNumeric(formula))
|
||||||
return formula
|
return formula
|
||||||
@ -134,7 +134,7 @@ Hooks.once('init', () => {
|
|||||||
|
|
||||||
//console.log("calculateSpellAttributes -> " + formula );
|
//console.log("calculateSpellAttributes -> " + formula );
|
||||||
return formula.capitalize();
|
return formula.capitalize();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
// Converters area
|
// Converters area
|
||||||
@ -149,39 +149,43 @@ Hooks.once('init', () => {
|
|||||||
Babele.get().registerConverters({
|
Babele.get().registerConverters({
|
||||||
|
|
||||||
"career_skills": (skills_list) => {
|
"career_skills": (skills_list) => {
|
||||||
let compendiumName = 'wfrp4e-core.skills' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill")
|
||||||
if (game.system.version.match("7.")) {
|
//DEBUG: console.log( "Thru here ...", compendium, skills_list);
|
||||||
compendiumName = 'wfrp4e-core.items'
|
|
||||||
}
|
|
||||||
//console.log( "Thru here ...", compendium, skills_list);
|
|
||||||
if (skills_list) {
|
if (skills_list) {
|
||||||
let i;
|
let i;
|
||||||
let len = skills_list.length;
|
let len = skills_list.length;
|
||||||
let re = /(.*)\((.*)\)/i;
|
let re = /(.*)\((.*)\)/i;
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
skills_list[i] = skills_list[i].trim();
|
skills_list[i] = skills_list[i].trim();
|
||||||
let transl = game.babele.translate(compendiumName, { name: skills_list[i] }, true).name;
|
for (let compData of validCompendiums) {
|
||||||
if (!transl) transl = skills_list[i]
|
let translItem = game.babele.translate(compData.metadata.id, { name: skills_list[i], type: "skill" }, true)
|
||||||
//console.log("List ...", skills_list[i]);
|
let transl = translItem?.name || undefined
|
||||||
if (transl == skills_list[i]) {
|
if (!transl) transl = skills_list[i]
|
||||||
let res = re.exec(skills_list[i]);
|
//console.log("List ...", skills_list[i], compData.metadata.id, translItem);
|
||||||
if (res) {
|
if (transl == skills_list[i]) {
|
||||||
//console.log("Matched/split:", res[1], res[2]);
|
let res = re.exec(skills_list[i]);
|
||||||
let subword = game.i18n.localize(res[2].trim());
|
if (res) {
|
||||||
let s1 = res[1].trim() + " ()";
|
//console.log("Matched/split:", res[1], res[2]);
|
||||||
let translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
|
let subword = game.i18n.localize(res[2].trim());
|
||||||
if (translw != s1) {
|
let s1 = res[1].trim() + " ()";
|
||||||
let res2 = re.exec(translw);
|
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
|
||||||
transl = res2[1] + "(" + subword + ")";
|
let translw = translItem?.name || undefined
|
||||||
} else {
|
if (translw && translw != s1) {
|
||||||
s1 = res[1].trim() + " ( )";
|
let res2 = re.exec(translw);
|
||||||
translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
|
transl = res2[1] + "(" + subword + ")";
|
||||||
let res2 = re.exec(translw);
|
} else {
|
||||||
transl = res2[1] + "(" + subword + ")";
|
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;
|
return skills_list;
|
||||||
@ -198,13 +202,13 @@ Hooks.once('init', () => {
|
|||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
// Auto patch
|
// 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.")) {
|
if (game.system.version.match("7.")) {
|
||||||
results[0].text = "wfrp4e-core.journals"
|
results[0].text = "wfrp4e-core.journals"
|
||||||
} else {
|
} else {
|
||||||
results[0].text = "wfrp4e-core.journal-entries"
|
results[0].text = "wfrp4e-core.journal-entries"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (results[0].text.includes("wfrp4e-core.journal")) {
|
if (results[0].text.includes("wfrp4e-core.journal")) {
|
||||||
for (let data of results) {
|
for (let data of results) {
|
||||||
let career = data.text.match(/{(.*)}/)
|
let career = data.text.match(/{(.*)}/)
|
||||||
@ -234,39 +238,34 @@ Hooks.once('init', () => {
|
|||||||
},
|
},
|
||||||
|
|
||||||
"career_talents": (talents_list) => {
|
"career_talents": (talents_list) => {
|
||||||
let compendiumName = 'wfrp4e-core.talents' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("talent")
|
||||||
if (game.system.version.match("7.")) {
|
|
||||||
compendiumName = 'wfrp4e-core.items'
|
|
||||||
}
|
|
||||||
let i;
|
let i;
|
||||||
if (talents_list) {
|
if (talents_list) {
|
||||||
let len = talents_list.length;
|
let len = talents_list.length;
|
||||||
let re = /(.*)\((.*)\)/i;
|
let re = /(.*)\((.*)\)/i;
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
let transl = game.babele.translate(compendiumName, { name: talents_list[i] }, true).name;
|
for (let compData of validCompendiums) {
|
||||||
if (!transl) transl = talents_list[i]
|
//console.log("TALENT - Parsing : ", talents_list)
|
||||||
if (transl == talents_list[i]) {
|
let translItem = game.babele.translate(compData.metadata.id, { name: talents_list[i], type: "talent" }, true);
|
||||||
let res = re.exec(talents_list[i]);
|
let transl = translItem?.name || undefined
|
||||||
if (res) {
|
if (!transl) transl = talents_list[i]
|
||||||
//console.log("Matched/split:", res[1], res[2]);
|
if (transl == talents_list[i]) {
|
||||||
let subword = game.i18n.localize(res[2].trim());
|
let res = re.exec(talents_list[i]);
|
||||||
let s1 = res[1].trim(); // No () in talents table
|
if (res) {
|
||||||
let translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
|
let subword = game.i18n.localize(res[2].trim());
|
||||||
if (translw != s1) {
|
let s1 = res[1].trim(); // No () in talents table
|
||||||
transl = translw + " (" + subword + ")";
|
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "talent" }, true)
|
||||||
} else {
|
let translw = translItem?.name || undefined
|
||||||
s1 = res[1].trim() + " ( )";
|
//console.log("Ssearch talent name:", compData.metadata.id, s1, translw);
|
||||||
translw = game.babele.translate(compendiumName, { name: s1 }, true).name;
|
if (translw && translw != s1) {
|
||||||
let res2 = re.exec(translw);
|
transl = translw + " (" + subword + ")";
|
||||||
if (res2) {
|
}
|
||||||
transl = res2[1] + " (" + subword + ")";
|
|
||||||
} else {
|
|
||||||
transl = translw
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
talents_list[i] = transl;
|
||||||
|
if (translItem?.system)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
talents_list[i] = transl;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return talents_list;
|
return talents_list;
|
||||||
@ -289,6 +288,7 @@ Hooks.once('init', () => {
|
|||||||
console.log("No beast traits found here ...")
|
console.log("No beast traits found here ...")
|
||||||
return beast_traits
|
return beast_traits
|
||||||
}
|
}
|
||||||
|
//console.log("TRANS:", beast_traits)
|
||||||
for (let trait_en of beast_traits) {
|
for (let trait_en of beast_traits) {
|
||||||
let special = "";
|
let special = "";
|
||||||
let nbt = "";
|
let nbt = "";
|
||||||
@ -312,25 +312,19 @@ Hooks.once('init', () => {
|
|||||||
name_en = res[1]; // Get the root traits name
|
name_en = res[1]; // Get the root traits name
|
||||||
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
|
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
|
||||||
}
|
}
|
||||||
let compendiumName = 'wfrp4e-core.traits' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("trait")
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumName = 'wfrp4e-core.items'
|
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
|
||||||
}
|
if (trait_fr?.system) {
|
||||||
let trait_fr = game.babele.translate(compendiumName, { name: name_en }, true);
|
trait_fr.name = trait_fr.name || trait_en.name
|
||||||
//console.log(">>>>> Trait ?", name_en, nbt, trait_fr, trait_fr.name, special);
|
trait_en.name = nbt + 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)
|
|
||||||
trait_en.system.description.value = trait_fr.system.description.value;
|
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
|
||||||
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);
|
||||||
//console.log("Translating : ", trait_en.system.specification.value);
|
trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim());
|
||||||
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") {
|
} else if (trait_en.type == "skill") {
|
||||||
if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside
|
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
|
name_en = res[1].trim(); // Get the root skill name
|
||||||
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
|
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
|
||||||
}
|
}
|
||||||
let compendiumSkills = 'wfrp4e-core.skills' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill")
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumSkills = 'wfrp4e-core.items'
|
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
|
||||||
}
|
if (trait_fr?.system) {
|
||||||
let trait_fr = game.babele.translate(compendiumSkills, { name: name_en }, true);
|
//console.log(">>>>> Skill ?", name_en, special, trait_fr.name, trait_fr);
|
||||||
//console.log(">>>>> Skill ?", name_en, special, trait_fr.name, trait_fr);
|
trait_fr.name = trait_fr.name || name_en
|
||||||
trait_fr.name = trait_fr.name || name_en
|
trait_en.name = trait_fr.name + special;
|
||||||
if (trait_fr.name != name_en) { // Translation OK
|
|
||||||
trait_en.name = trait_fr.name + special;
|
|
||||||
if (trait_fr.system) {
|
|
||||||
trait_en.system.description.value = trait_fr.system.description.value;
|
trait_en.system.description.value = trait_fr.system.description.value;
|
||||||
|
break; // Translation has been found, skip other compendiums
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (trait_en.type == "prayer") {
|
} else if (trait_en.type == "prayer") {
|
||||||
let compendiumPrayers = 'wfrp4e-core.prayers' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("prayer")
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumPrayers = 'wfrp4e-core.items'
|
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
|
||||||
}
|
if (trait_fr?.system) {
|
||||||
let trait_fr = game.babele.translate(compendiumPrayers, { name: name_en }, true);
|
//DEBUG : console.log(">>>>> Prayer ?", name_en, special, trait_fr.name );
|
||||||
//console.log(">>>>> Prayer ?", name_en, special, trait_fr.name );
|
trait_fr.name = trait_fr.name || name_en
|
||||||
trait_fr.name = trait_fr.name || name_en
|
trait_en.name = trait_fr.name + special;
|
||||||
trait_en.name = trait_fr.name + special;
|
if (trait_fr.system?.description?.value) {
|
||||||
if (trait_fr.system?.description?.value)
|
trait_en.system.description.value = trait_fr.system.description.value;
|
||||||
trait_en.system.description.value = trait_fr.system.description.value;
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (trait_en.type == "spell") {
|
} else if (trait_en.type == "spell") {
|
||||||
let compendiumSpells = 'wfrp4e-core.spells' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("spell")
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumSpells = 'wfrp4e-core.items'
|
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
|
||||||
}
|
if (trait_fr?.system) {
|
||||||
let trait_fr = game.babele.translate(compendiumSpells, { name: name_en }, true)
|
trait_fr.name = trait_fr.name || name_en
|
||||||
if (trait_fr.name == name_en) { // If no translation, test eisspells
|
//DEBUG : console.log(">>>>> Spell ?", name_en, special, trait_fr.name );
|
||||||
trait_fr = game.babele.translate('wfrp4e-eis.eisspells', { name: name_en }, true);
|
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
|
} else if (trait_en.type == "talent") {
|
||||||
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") {
|
|
||||||
if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside
|
if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside
|
||||||
let re = /(.*) +\((.*)\)/i;
|
let re = /(.*) +\((.*)\)/i;
|
||||||
let res = re.exec(name_en);
|
let res = re.exec(name_en);
|
||||||
name_en = res[1].trim(); // Get the root talent name, no parenthesis this time...
|
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
|
special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword
|
||||||
}
|
}
|
||||||
let compendiumTalents = 'wfrp4e-core.talents' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("talent")
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumTalents = 'wfrp4e-core.items'
|
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
|
||||||
}
|
if (trait_fr?.system) {
|
||||||
let trait_fr = game.babele.translate(compendiumTalents, { name: name_en }, true)
|
trait_fr.name = trait_fr.name || name_en // Security since babele v10
|
||||||
trait_fr.name = trait_fr.name || name_en // Security since babele v10
|
//console.log(">>>>> Talent ?", trait_fr, name_en, special, trait_fr.name);
|
||||||
//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!
|
||||||
if (trait_fr.name != "Sprinter" && trait_fr.name == name_en) { // If no translation, test ugtalents
|
trait_en.name = trait_fr.name.trim() + special
|
||||||
trait_fr = game.babele.translate('wfrp4e-unofficial-grimoire.ug-careerstalentstraits', { name: name_en }, true);
|
if (trait_fr.system?.description?.value) { // Why ???
|
||||||
trait_fr.name = trait_fr.name || name_en // Security since babele v10
|
trait_en.system.description.value = trait_fr.system.description.value;
|
||||||
}
|
}
|
||||||
if (trait_fr.name && (trait_fr.name == "Sprinter" || trait_fr.name != name_en)) { // Talent translated!
|
}
|
||||||
trait_en.name = trait_fr.name.trim() + special
|
break;
|
||||||
if (trait_fr.system) { // Why ???
|
|
||||||
trait_en.system.description.value = trait_fr.system.description.value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (trait_en.type == "career") {
|
} else if (trait_en.type == "career") {
|
||||||
let compendiumCareers = 'wfrp4e-core.careers' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("career")
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumCareers = 'wfrp4e-core.items'
|
let career_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true);
|
||||||
}
|
if (career_fr?.system) {
|
||||||
let career_fr = game.babele.translate(compendiumCareers, trait_en, true);
|
trait_en.name = career_fr.name || trait_en.name
|
||||||
career_fr.name = career_fr.name || trait_en.name
|
// DEBG: console.log(">>>>> Career ?", career_fr.name );
|
||||||
//console.log(">>>>> Career ?", career_fr.name );
|
trait_en.system = duplicate(career_fr.system);
|
||||||
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") {
|
} 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
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag(["trapping"], ["weapon", "armour", "container", "money"])
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumTrappings = 'wfrp4e-core.items'
|
let trapping_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true);
|
||||||
}
|
if (trapping_fr?.system) {
|
||||||
let trapping_fr = game.babele.translate(compendiumTrappings, trait_en, true);
|
//console.log(">>>>> Trapping ?", name_en, trapping_fr.name);
|
||||||
//console.log(">>>>> Trapping ?", name_en, trapping_fr.name);
|
trait_en.name = trapping_fr.name || trait_en.name
|
||||||
trapping_fr.name = trapping_fr.name || trait_en.name
|
if (trapping_fr.system?.description?.value) {
|
||||||
if (trapping_fr.system) {
|
trait_en.system.description.value = trapping_fr.system.description.value
|
||||||
trait_en.system.description = trapping_fr.system.description;
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -478,18 +468,13 @@ Hooks.once('init', () => {
|
|||||||
}
|
}
|
||||||
//console.log("Carre groupe : ", value )
|
//console.log("Carre groupe : ", value )
|
||||||
// Per default
|
// Per default
|
||||||
let compendiumCareers = 'wfrp4e-core.careers' // Per default
|
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("career")
|
||||||
if (game.system.version.match("7.")) {
|
for (let compData of validCompendiums) {
|
||||||
compendiumCareers = 'wfrp4e-core.items'
|
let newName = game.babele.translate(compData.metadata.id, { name: value }).name
|
||||||
}
|
|
||||||
let compendium = game.packs.find(p => p.collection === compendiumCareers);
|
|
||||||
if (compendium) {
|
|
||||||
let newName = game.babele.translate(compendiumCareers, { name: value }).name
|
|
||||||
if (!newName) newName = value
|
if (!newName) newName = value
|
||||||
return newName
|
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
|
return value
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -559,6 +544,7 @@ Hooks.once('init', () => {
|
|||||||
var translw = value;
|
var translw = value;
|
||||||
var re = /(.*) Bonus (\w*)/i;
|
var re = /(.*) Bonus (\w*)/i;
|
||||||
var res = re.exec(value);
|
var res = re.exec(value);
|
||||||
|
console.log("RES1:", res);
|
||||||
var unit = "";
|
var unit = "";
|
||||||
if (res) { // Test "<charac> Bonus <unit>" pattern
|
if (res) { // Test "<charac> Bonus <unit>" pattern
|
||||||
if (res[1]) { // We have char name, then convert it
|
if (res[1]) { // We have char name, then convert it
|
||||||
@ -585,7 +571,12 @@ Hooks.once('init', () => {
|
|||||||
if (unit == "days") unit = "jours";
|
if (unit == "days") unit = "jours";
|
||||||
if (unit == "yard") unit = "mètre";
|
if (unit == "yard") unit = "mètre";
|
||||||
if (unit == "yards") unit = "mètres";
|
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;
|
return translw;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -619,7 +610,7 @@ function registerUsageCount(registerKey) {
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
Hooks.once('ready', () => {
|
Hooks.once('ready', () => {
|
||||||
|
|
||||||
registerUsageCount("wh4-fr-translation")
|
registerUsageCount("wh4-fr-translation")
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Karak Mountain Strider",
|
"id": "Karak Mountain Strider",
|
||||||
"name": "Arpenteur des karak",
|
"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",
|
"career_careergroup": "Patrouilleur des karak",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"4 apprentis Coureurs des forts",
|
"4 apprentis Coureurs des forts",
|
||||||
@ -52,7 +52,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Field Warden Captain",
|
"id": "Field Warden Captain",
|
||||||
"name": "Capitaine Gardechamps",
|
"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",
|
"career_careergroup": "Gardechamps",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"garnison de Sergent Gardechamps",
|
"garnison de Sergent Gardechamps",
|
||||||
@ -72,7 +72,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Badger Rider",
|
"id": "Badger Rider",
|
||||||
"name": "Chevaucheur de blaireau",
|
"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",
|
"career_careergroup": "Chevaucheur de blaireau",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"fontes de selle",
|
"fontes de selle",
|
||||||
@ -83,7 +83,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Hold Runner",
|
"id": "Hold Runner",
|
||||||
"name": "Coureur des forts",
|
"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",
|
"career_careergroup": "Patrouilleur des karak",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"sac à dos",
|
"sac à dos",
|
||||||
@ -95,7 +95,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Forest's Wrath",
|
"id": "Forest's Wrath",
|
||||||
"name": "Courrouxde de la forêt",
|
"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",
|
"career_careergroup": "Rôdeur fantôme",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"trophée d'un ennemi légendaire",
|
"trophée d'un ennemi légendaire",
|
||||||
@ -111,7 +111,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Windwraith",
|
"id": "Windwraith",
|
||||||
"name": "Esprit du vent",
|
"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",
|
"career_careergroup": "Rôdeur fantôme",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"arc elfique et armure de cuir avec au moins 1 Atout chacun",
|
"arc elfique et armure de cuir avec au moins 1 Atout chacun",
|
||||||
@ -131,7 +131,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Forest Ranger",
|
"id": "Forest Ranger",
|
||||||
"name": "Garde forestier",
|
"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",
|
"career_careergroup": "Rôdeur fantôme",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"sac à dos",
|
"sac à dos",
|
||||||
@ -143,7 +143,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Novice Warden",
|
"id": "Novice Warden",
|
||||||
"name": "Garde novice",
|
"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",
|
"career_careergroup": "Gardechamps",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"sac à dos",
|
"sac à dos",
|
||||||
@ -156,7 +156,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Field Warden",
|
"id": "Field Warden",
|
||||||
"name": "Gardechamps",
|
"name": "Gardechamps",
|
||||||
"description": "<p>@Compendium[wfrp4e-archives1.archives1-journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
|
"description": "<p>@Compendium[wfrp4e-archives1.journals.vnLLLPnNYS97hJVe]{Gardechamps}</p>",
|
||||||
"career_careergroup": "Gardechamps",
|
"career_careergroup": "Gardechamps",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"veste en cuir",
|
"veste en cuir",
|
||||||
@ -167,7 +167,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Karak Pathkeeper",
|
"id": "Karak Pathkeeper",
|
||||||
"name": "Gardien des routes des karak",
|
"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",
|
"career_careergroup": "Patrouilleur des karak",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"outils (Maçonnerie)"
|
"outils (Maçonnerie)"
|
||||||
@ -206,7 +206,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Badger Master",
|
"id": "Badger Master",
|
||||||
"name": "Maître blaireau",
|
"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",
|
"career_careergroup": "Chevaucheur de blaireau",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"gros blaireau apprivoisé (blaireau-poney tacheté du Moot)",
|
"gros blaireau apprivoisé (blaireau-poney tacheté du Moot)",
|
||||||
@ -223,7 +223,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Karak Ranger",
|
"id": "Karak Ranger",
|
||||||
"name": "Patrouilleur des karak",
|
"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",
|
"career_careergroup": "Patrouilleur des karak",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"arme à poudre noire avec munitions",
|
"arme à poudre noire avec munitions",
|
||||||
@ -248,7 +248,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Ghost Strider",
|
"id": "Ghost Strider",
|
||||||
"name": "Rôdeur fantôme",
|
"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",
|
"career_careergroup": "Rôdeur fantôme",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"arc elfique et 10 flèches fabriquées par le Personnage",
|
"arc elfique et 10 flèches fabriquées par le Personnage",
|
||||||
@ -264,7 +264,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Badger Sergeant",
|
"id": "Badger Sergeant",
|
||||||
"name": "Sergent blaireau",
|
"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",
|
"career_careergroup": "Chevaucheur de blaireau",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"caparaçon pour blaireau (2 PA sur la tête et le torse)",
|
"caparaçon pour blaireau (2 PA sur la tête et le torse)",
|
||||||
@ -274,7 +274,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Field Warden Sergeant",
|
"id": "Field Warden Sergeant",
|
||||||
"name": "Sergent Gardechamps",
|
"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",
|
"career_careergroup": "Gardechamps",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"chemise de mailles de bonne qualité",
|
"chemise de mailles de bonne qualité",
|
||||||
@ -284,7 +284,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Badger Botherer",
|
"id": "Badger Botherer",
|
||||||
"name": "Taquineur de blaireau",
|
"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",
|
"career_careergroup": "Chevaucheur de blaireau",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"sac à dos",
|
"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
@ -104,11 +104,11 @@
|
|||||||
"name": "Ivre-mort",
|
"name": "Ivre-mort",
|
||||||
"description": "Si vous échouez à un nombre de Tests de Résistance à l'Alcool égal à votre Bonus d’Endurance, vous êtes Ivre. Faites un lancer sur le tableau suivant pour en connaître les conséquences:",
|
"description": "Si vous échouez à un nombre de Tests de Résistance à l'Alcool égal à votre Bonus d’Endurance, vous êtes Ivre. Faites un lancer sur le tableau suivant pour en connaître les conséquences:",
|
||||||
"results": {
|
"results": {
|
||||||
"1-2": "<b>« Bravoure du Marienburgher ! »</b>: Gagnez un bonus de +20 à votre Compétence @Compendium[wfrp4e-core.skills.pxNjTxsp1Kp0SmQe].",
|
"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.psychologies.klCJX0mNpXYH5AIx]{Préjugés} et toutes vos @Compendium[wfrp4e-core.psychologies.Q2MCUrG2HppMcvN0]{Animosités} existantes.",
|
"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).",
|
"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 !)}.",
|
"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 s’est 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é]."
|
"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 s’est 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é]."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1019,7 +1019,7 @@
|
|||||||
"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.",
|
"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.",
|
"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",
|
"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.",
|
"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[Assommé] (voir p 167)."
|
"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)."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -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>",
|
"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": [],
|
"effects": [],
|
||||||
"id": "Jewellry",
|
"id": "Jewellery",
|
||||||
"name": "Bijoux"
|
"name": "Bijoux"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -138,7 +138,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Bestial Rage",
|
"id": "Bestial Rage",
|
||||||
"name": "Rage Bestiale",
|
"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",
|
"id": "Blood Drain",
|
||||||
@ -213,7 +213,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Climb",
|
"id": "Climb",
|
||||||
"name": "Escalade",
|
"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",
|
"id": "Closed Rowlock",
|
||||||
@ -238,7 +238,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Eyes of the Beast",
|
"id": "Eyes of the Beast",
|
||||||
"name": "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",
|
"id": "Favoured of Tzeentch",
|
||||||
@ -333,7 +333,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Invisible",
|
"id": "Invisible",
|
||||||
"name": "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",
|
"id": "Juck",
|
||||||
@ -384,7 +384,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Potion of Flight",
|
"id": "Potion of Flight",
|
||||||
"name": "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’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’s Toughness bonus.</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Racing Hull",
|
"id": "Racing Hull",
|
||||||
@ -459,7 +459,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Ring of Protection against Undead",
|
"id": "Ring of Protection against Undead",
|
||||||
"name": "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",
|
"id": "Ring of Protection from Fire",
|
||||||
@ -484,7 +484,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Sign of the Beast",
|
"id": "Sign of the Beast",
|
||||||
"name": "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",
|
"id": "Slave to Chaos",
|
||||||
@ -579,7 +579,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Transformation of the Beast",
|
"id": "Transformation of the Beast",
|
||||||
"name": "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",
|
"id": "Tremor",
|
||||||
|
@ -150,7 +150,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Bestial Rage",
|
"id": "Bestial Rage",
|
||||||
"name": "Rage Bestiale",
|
"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",
|
"id": "Blood Drain",
|
||||||
@ -225,7 +225,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Climb",
|
"id": "Climb",
|
||||||
"name": "Escalade",
|
"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",
|
"id": "Closed Rowlock",
|
||||||
@ -250,7 +250,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Eyes of the Beast",
|
"id": "Eyes of the Beast",
|
||||||
"name": "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",
|
"id": "Favoured of Tzeentch",
|
||||||
@ -345,7 +345,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Invisible",
|
"id": "Invisible",
|
||||||
"name": "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",
|
"id": "Juck",
|
||||||
@ -396,7 +396,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Potion of Flight",
|
"id": "Potion of Flight",
|
||||||
"name": "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’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’s Toughness bonus.</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Racing Hull",
|
"id": "Racing Hull",
|
||||||
@ -471,7 +471,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Ring of Protection against Undead",
|
"id": "Ring of Protection against Undead",
|
||||||
"name": "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",
|
"id": "Ring of Protection from Fire",
|
||||||
@ -496,7 +496,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Sign of the Beast",
|
"id": "Sign of the Beast",
|
||||||
"name": "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",
|
"id": "Slave to Chaos",
|
||||||
@ -591,7 +591,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Transformation of the Beast",
|
"id": "Transformation of the Beast",
|
||||||
"name": "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",
|
"id": "Tremor",
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Waterborne Diseases",
|
"id": "Waterborne Diseases",
|
||||||
"name": "Maladies Fluviales",
|
"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",
|
"id": "Wind Table",
|
||||||
|
@ -78,7 +78,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Fleshthief",
|
"id": "Fleshthief",
|
||||||
"name": "Voleur de chair",
|
"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\"> </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\"> </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\"> </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\"> </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",
|
"id": "Mark of Tzeentch",
|
||||||
@ -128,7 +128,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Tzeentch's Fire",
|
"id": "Tzeentch's Fire",
|
||||||
"name": "Feu de Tzeentch",
|
"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",
|
"id": "Dog",
|
||||||
|
@ -14,12 +14,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Acid Blood",
|
"id": "Acid Blood",
|
||||||
"name": "Sang acide",
|
"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",
|
"id": "Aethyric Leak",
|
||||||
"name": "Fuite Aethérique",
|
"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",
|
"id": "Animalistic Legs",
|
||||||
@ -29,22 +29,22 @@
|
|||||||
{
|
{
|
||||||
"id": "Animalistic Psyche",
|
"id": "Animalistic Psyche",
|
||||||
"name": "Esprit Animal",
|
"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",
|
"id": "Beacon of Corruption",
|
||||||
"name": "Balise de 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",
|
"id": "Beaked Face",
|
||||||
"name": "Bec au visage",
|
"name": "Bec au visage",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pLW9SVX0TVTYPiPv]{Morsure} +3; cette mutation ne peut pas être cachée</p>"
|
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pLW9SVX0TVTYPiPv]{Morsure} +3; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Bear Head",
|
"id": "Bear Head",
|
||||||
"name": "Tête d'Ours",
|
"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",
|
"id": "Beast Head",
|
||||||
@ -59,42 +59,42 @@
|
|||||||
{
|
{
|
||||||
"id": "Beyond Pain",
|
"id": "Beyond Pain",
|
||||||
"name": "Au delà de la souffrance",
|
"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",
|
"id": "Big Ears",
|
||||||
"name": "Grandes Oreilles",
|
"name": "Grandes Oreilles",
|
||||||
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.talents.9h82z72XGo9tfgQS]{Sens auguisé} (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é} (Ouïe); cette mutation ne peut-être cachée qu'avec des vêtements</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Bird's Feet",
|
"id": "Bird's Feet",
|
||||||
"name": "Pieds d'Oiseaux",
|
"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",
|
"id": "Blank Face",
|
||||||
"name": "Visage Vide",
|
"name": "Visage Vide",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur} 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} 2; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Blasphemous Soul",
|
"id": "Blasphemous Soul",
|
||||||
"name": "Ame blasphématoire",
|
"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",
|
"id": "Blasted Mind",
|
||||||
"name": "Esprit dévasté",
|
"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> 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> 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",
|
"id": "Boar Head",
|
||||||
"name": "Tête de Sanglier",
|
"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",
|
"id": "Breathe Fire",
|
||||||
"name": "Souffe Enflammé",
|
"name": "Souffe Enflammé",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.uqGxFOEqeurwkAO3]{Souffle} 5 (Feu)</p>"
|
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.uqGxFOEqeurwkAO3]{Souffle} 5 (Feu)</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Bulging Eyes",
|
"id": "Bulging Eyes",
|
||||||
@ -104,7 +104,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Bull Head",
|
"id": "Bull Head",
|
||||||
"name": "Tête de Taureau",
|
"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",
|
"id": "Burning Skin",
|
||||||
@ -119,12 +119,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Claws",
|
"id": "Claws",
|
||||||
"name": "Griffes",
|
"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",
|
"id": "Cloud of Flies",
|
||||||
"name": "Nuage de Mouches",
|
"name": "Nuage de Mouches",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant} ; cette mutation ne peut pas être cachée</p>"
|
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant} ; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Corpulent",
|
"id": "Corpulent",
|
||||||
@ -134,12 +134,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Crested Head",
|
"id": "Crested Head",
|
||||||
"name": "Crête de Coq",
|
"name": "Crête de Coq",
|
||||||
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.talents.6l3jvIAvrKxt0lA9]{Attirant} 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} lorsque vous interagissez avec des Muntants ou des Hommes-Bêtes; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Deafening Cry",
|
"id": "Deafening Cry",
|
||||||
"name": "Cri Assourdissant",
|
"name": "Cri Assourdissant",
|
||||||
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant} </p>"
|
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant} </p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Distended Digits",
|
"id": "Distended Digits",
|
||||||
@ -149,12 +149,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Dog Head",
|
"id": "Dog Head",
|
||||||
"name": "Tête de Chien",
|
"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",
|
"id": "Eagle Head",
|
||||||
"name": "Tête d'Aigle",
|
"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",
|
"id": "Elastic Arms",
|
||||||
@ -194,17 +194,17 @@
|
|||||||
{
|
{
|
||||||
"id": "Fitful Hatred",
|
"id": "Fitful Hatred",
|
||||||
"name": "Haine Changeante",
|
"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",
|
"id": "Fleshy Tentacle",
|
||||||
"name": "Tentacule de Chair",
|
"name": "Tentacule de Chair",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.4xF7M6ylIiGntekh]{# Tentacules} ; 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} ; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Foul Odour",
|
"id": "Foul Odour",
|
||||||
"name": "Odeur Nauséabonde",
|
"name": "Odeur Nauséabonde",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant} </p>"
|
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant} </p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Furred Skin",
|
"id": "Furred Skin",
|
||||||
@ -214,7 +214,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Giant Spider Head",
|
"id": "Giant Spider Head",
|
||||||
"name": "Tête d'Araignée Géante",
|
"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",
|
"id": "Gills",
|
||||||
@ -234,17 +234,17 @@
|
|||||||
{
|
{
|
||||||
"id": "Goat Head",
|
"id": "Goat Head",
|
||||||
"name": "Tête de Chèvre",
|
"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",
|
"id": "Headless",
|
||||||
"name": "Sans-tête",
|
"name": "Sans-tête",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur} 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} 2; les coups à la tête sont considérés comme ratés; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Hopper",
|
"id": "Hopper",
|
||||||
"name": "Sauteur",
|
"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} ; 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} ; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Hounds of Despair",
|
"id": "Hounds of Despair",
|
||||||
@ -254,7 +254,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Hurried Masochism",
|
"id": "Hurried Masochism",
|
||||||
"name": "Masochisme Urgent",
|
"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",
|
"id": "Inhuman Beauty",
|
||||||
@ -294,12 +294,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Mindless Wandering",
|
"id": "Mindless Wandering",
|
||||||
"name": "Errance Sans Esprit",
|
"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",
|
"id": "Monstrous Paranoia",
|
||||||
"name": "Paranoïa Monstrueuse",
|
"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",
|
"id": "Multiple Arms",
|
||||||
@ -329,37 +329,37 @@
|
|||||||
{
|
{
|
||||||
"id": "Pin Head",
|
"id": "Pin Head",
|
||||||
"name": "Tête d'épingle",
|
"name": "Tête d'épingle",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.9GNpAqgsKzxZKJpp]{Stupide} ; cette mutation ne peut pas être cachée</p>"
|
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.9GNpAqgsKzxZKJpp]{Stupide} ; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Pointed Head",
|
"id": "Pointed Head",
|
||||||
"name": "Tête Pointue",
|
"name": "Tête Pointue",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.9GNpAqgsKzxZKJpp]{Stupide} ; 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} ; vous ne pouvez pas porter de casque; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Rat Head",
|
"id": "Rat Head",
|
||||||
"name": "Tête de Rat",
|
"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",
|
"id": "Ravenous Hunger",
|
||||||
"name": "Faim Vorace",
|
"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",
|
"id": "Rearranged Face",
|
||||||
"name": "Visage Arrangé",
|
"name": "Visage Arrangé",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur} 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} 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",
|
"id": "Rotting Flesh",
|
||||||
"name": "Chaire Pourrie",
|
"name": "Chaire Pourrie",
|
||||||
"description": "<p>Gagnez les Traits de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur} 2, et @Compendium[wfrp4e.traits.V0c3qBU1CMm8bmsW]{Infecté} </p>"
|
"description": "<p>Gagnez les Traits de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur} 2, et @Compendium[wfrp4e.traits.V0c3qBU1CMm8bmsW]{Infecté} </p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Shifting Colours",
|
"id": "Shifting Colours",
|
||||||
"name": "Couleurs Changeantes",
|
"name": "Couleurs Changeantes",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.MVI0lXcg6vvtooAF]{Perturbant} ; cette mutation ne peut pas être cachée</p>"
|
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant} ; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Short Legs",
|
"id": "Short Legs",
|
||||||
@ -369,27 +369,27 @@
|
|||||||
{
|
{
|
||||||
"id": "Skull Face",
|
"id": "Skull Face",
|
||||||
"name": "Face de Crâne",
|
"name": "Face de Crâne",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur} 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} 2; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Snake Head",
|
"id": "Snake Head",
|
||||||
"name": "Tête de Serpent",
|
"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",
|
"id": "Spiked Skin",
|
||||||
"name": "Peau Cloutée",
|
"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} +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} +4) lors des Charges; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Suckered Hands and Feet",
|
"id": "Suckered Hands and Feet",
|
||||||
"name": "Mains et Pieds Ventouses",
|
"name": "Mains et Pieds Ventouses",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.KII1gWnxIZ8HzmU5]{Grimpant} ; 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} ; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Terrible Phobia",
|
"id": "Terrible Phobia",
|
||||||
"name": "Phobie Terrible",
|
"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",
|
"id": "Thorny Scales",
|
||||||
@ -399,7 +399,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Three Eyes",
|
"id": "Three Eyes",
|
||||||
"name": "Troisième Oeil",
|
"name": "Troisième Oeil",
|
||||||
"description": "<p>Gagnez le Talent @Compendium[wfrp4e-core.talents.9h82z72XGo9tfgQS]{Sens aiguisé} (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é} (Vue); cette mutation ne peut-être cachée qu'avec des vêtements</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Thrill Seeker",
|
"id": "Thrill Seeker",
|
||||||
@ -409,12 +409,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Transparent Skin",
|
"id": "Transparent Skin",
|
||||||
"name": "Peau Transparente",
|
"name": "Peau Transparente",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur} 2; cette mutation ne peut pas être cachée</p>"
|
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.items.pTorrE0l3VybAbtn]{Peur} 2; cette mutation ne peut pas être cachée</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Two Heads",
|
"id": "Two Heads",
|
||||||
"name": "Bicéphale",
|
"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",
|
"id": "Uneven Horns",
|
||||||
@ -429,12 +429,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Warp Frenzy",
|
"id": "Warp Frenzy",
|
||||||
"name": "Frénésie Mutagène",
|
"name": "Frénésie Mutagène",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.yRhhOlt18COq4e1q]{Frénésie} ; 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} ; Quand vous entrez en Frénésie, gagnez temporairement une autre mutation physique</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Webbed Feet",
|
"id": "Webbed Feet",
|
||||||
"name": "Pieds Palmés",
|
"name": "Pieds Palmés",
|
||||||
"description": "<p>Gagnez le Trait de Créature @Compendium[wfrp4e-core.traits.sJ3yX1kvzu2hgNq5]{Amphibie} ; 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} ; cette mutation ne peut-être cachée qu'avec des vêtements</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Weeping Pus",
|
"id": "Weeping Pus",
|
||||||
@ -449,12 +449,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Wings",
|
"id": "Wings",
|
||||||
"name": "Ailes",
|
"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",
|
"id": "Wolf Head",
|
||||||
"name": "Tête de Loup",
|
"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>"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -23,13 +23,13 @@
|
|||||||
{
|
{
|
||||||
"id": "Demonic Mien (Undivided)",
|
"id": "Demonic Mien (Undivided)",
|
||||||
"name": "Allure Démoniaque (Indivisible)",
|
"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 l’autel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects d’un 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 l’autel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects d’un 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": []
|
"effets": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Demonic Mien (Tzeentch)",
|
"id": "Demonic Mien (Tzeentch)",
|
||||||
"name": "Allure Démoniaque (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 l’autel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects d’un 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 l’autel de la volonté de votre dieu. Votre corps est déformé, prenant les aspects d’un 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": []
|
"effets": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -47,7 +47,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Tzeentch's Golden Aura",
|
"id": "Tzeentch's Golden Aura",
|
||||||
"name": "Aura Dorée de Tzeentch",
|
"name": "Aura Dorée de Tzeentch",
|
||||||
"description": "<p><span class=\"fontstyle0\">Ce Sort est l’un des plus simples et des plus pratiques dans l’arsenal d’un sorcier de Tzeentch. Un tourbillon de feu jaune est invoqué à partir de l’Aethyr 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 l’un des plus simples et des plus pratiques dans l’arsenal d’un sorcier de Tzeentch. Un tourbillon de feu jaune est invoqué à partir de l’Aethyr 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": []
|
"effets": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -125,7 +125,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Bolt of Change",
|
"id": "Bolt of Change",
|
||||||
"name": "Éclair du changement",
|
"name": "Éclair du changement",
|
||||||
"description": "<p><span class=\"fontstyle0\">Un éclair pulsant d’une 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 d’une 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": [
|
"effets": [
|
||||||
{
|
{
|
||||||
"_id": "35UAihuCR5o2saMI",
|
"_id": "35UAihuCR5o2saMI",
|
||||||
@ -142,7 +142,7 @@
|
|||||||
"wfrp4e": {
|
"wfrp4e": {
|
||||||
"effectTrigger": "oneTime",
|
"effectTrigger": "oneTime",
|
||||||
"effectApplication": "apply",
|
"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
|
"preventDuplicateEffects": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,30 +105,30 @@
|
|||||||
"id": "Demonic Mien - Nurgle",
|
"id": "Demonic Mien - Nurgle",
|
||||||
"name": "Trait Démonique - Nurgle",
|
"name": "Trait Démonique - Nurgle",
|
||||||
"results": {
|
"results": {
|
||||||
"1-1": "@Compendium[wfrp4e.traits.a8MC97PLzl10WocT]{Grand}",
|
"1-1": "@Compendium[wfrp4e-core.items.a8MC97PLzl10WocT]{Grand}",
|
||||||
"2-2": "@Compendium[wfrp4e.traits.uqGxFOEqeurwkAO3]{Souffle +7 (Corrosion & Poison)}",
|
"2-2": "@Compendium[wfrp4e-core.items.uqGxFOEqeurwkAO3]{Souffle +7 (Corrosion & Poison)}",
|
||||||
"3-3": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque 7}",
|
"3-3": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque 7}",
|
||||||
"4-4": "@Compendium[wfrp4e.traits.PaW8i6JOxWyzAZCz]{Maladie (Nurgle's Rot)}",
|
"4-4": "@Compendium[wfrp4e-core.items.PaW8i6JOxWyzAZCz]{Maladie (Nurgle's Rot)}",
|
||||||
"5-5": "@Compendium[wfrp4e.traits.MVI0lXcg6vvtooAF]{Perturbant (Puanteur)}",
|
"5-5": "@Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant (Puanteur)}",
|
||||||
"6-6": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
|
"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>",
|
"8-8": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>",
|
||||||
"9-9": "@Compendium[wfrp4e.traits.SfUUdOGjdYpr3KSR]{Régénération}",
|
"9-9": "@Compendium[wfrp4e-core.items.SfUUdOGjdYpr3KSR]{Régénération}",
|
||||||
"10-10": "@Compendium[wfrp4e.traits.JzeN9MZ0xUDvpE2l]{Vomissement}"
|
"10-10": "@Compendium[wfrp4e-core.items.JzeN9MZ0xUDvpE2l]{Vomissement}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Demonic Mien - Slaanesh",
|
"id": "Demonic Mien - Slaanesh",
|
||||||
"name": "Trait Démonique - Slaanesh",
|
"name": "Trait Démonique - Slaanesh",
|
||||||
"results": {
|
"results": {
|
||||||
"1-1": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque (6)}",
|
"1-1": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque (6)}",
|
||||||
"2-2": "@Compendium[wfrp4e.traits.MVI0lXcg6vvtooAF]{Perturbant}",
|
"2-2": "@Compendium[wfrp4e-core.items.MVI0lXcg6vvtooAF]{Perturbant}",
|
||||||
"4-4": "@Compendium[wfrp4e.traits.yRhhOlt18COq4e1q]{Frénésie}",
|
"4-4": "@Compendium[wfrp4e-core.items.yRhhOlt18COq4e1q]{Frénésie}",
|
||||||
"5-5": "@Compendium[wfrp4e.traits.IAWyzDfC286a9MPz]{Immunité Psychologique}",
|
"5-5": "@Compendium[wfrp4e-core.items.IAWyzDfC286a9MPz]{Immunité Psychologique}",
|
||||||
"7-7": "@Compendium[wfrp4e.traits.wMwSRDmgiF2IdCJr]{Insensible à la douleur}",
|
"7-7": "@Compendium[wfrp4e-core.items.wMwSRDmgiF2IdCJr]{Insensible à la douleur}",
|
||||||
"8-8": "@Compendium[wfrp4e.traits.0eEJ280MIC0IbEop]{Regard pétrifiant}",
|
"8-8": "@Compendium[wfrp4e-core.items.0eEJ280MIC0IbEop]{Regard pétrifiant}",
|
||||||
"9-9": "@Compendium[wfrp4e.traits.xg6z63j6BH5AaqLL]{Langue préhensile (6 mètres) +6}",
|
"9-9": "@Compendium[wfrp4e-core.items.xg6z63j6BH5AaqLL]{Langue préhensile (6 mètres) +6}",
|
||||||
"10-10": "@Compendium[wfrp4e.traits.gFkRm9wS65qe18Xv]{Venin}",
|
"10-10": "@Compendium[wfrp4e-core.items.gFkRm9wS65qe18Xv]{Venin}",
|
||||||
"3-3": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
|
"3-3": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
|
||||||
"6-6": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>"
|
"6-6": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>"
|
||||||
}
|
}
|
||||||
@ -139,27 +139,27 @@
|
|||||||
"results": {
|
"results": {
|
||||||
"4-4": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
|
"4-4": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
|
||||||
"8-9": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>",
|
"8-9": "<a class = 'table-click' data-table='expandedmutatephys'>Mutation<\/a>",
|
||||||
"1-1": "@Compendium[wfrp4e.traits.uqGxFOEqeurwkAO3]{Souffle +9 (Feu)}",
|
"1-1": "@Compendium[wfrp4e-core.items.uqGxFOEqeurwkAO3]{Souffle +9 (Feu)}",
|
||||||
"2-2": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque (9)}",
|
"2-2": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque (9)}",
|
||||||
"3-3": "@Compendium[wfrp4e.traits.tNWrJUOArwfWXsPw]{Ethéré}",
|
"3-3": "@Compendium[wfrp4e-core.items.tNWrJUOArwfWXsPw]{Ethéré}",
|
||||||
"5-5": "@Compendium[wfrp4e.traits.EO05HX7jql0g605A]{Vol (9)}",
|
"5-5": "@Compendium[wfrp4e-core.items.EO05HX7jql0g605A]{Vol (9)}",
|
||||||
"6-6": "@Compendium[wfrp4e.traits.mDgEMOoJpi8DkRYb]{Magique}",
|
"6-6": "@Compendium[wfrp4e-core.items.mDgEMOoJpi8DkRYb]{Magique}",
|
||||||
"7-7": "@Compendium[wfrp4e.traits.yrkI7ATjqLPDTFmZ]{Résistance à la Magie}}",
|
"7-7": "@Compendium[wfrp4e-core.items.yrkI7ATjqLPDTFmZ]{Résistance à la Magie}}",
|
||||||
"10-10": "@Compendium[wfrp4e.traits.vY0CHKsJRV3gYBj3]{Lanceur de Sorts (Au choix)}"
|
"10-10": "@Compendium[wfrp4e-core.items.vY0CHKsJRV3gYBj3]{Lanceur de Sorts (Au choix)}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Demonic Mien - Undivided",
|
"id": "Demonic Mien - Undivided",
|
||||||
"name": "Trait Démonique - Commun",
|
"name": "Trait Démonique - Commun",
|
||||||
"results": {
|
"results": {
|
||||||
"8-8": "@Compendium[wfrp4e.traits.BqPZn6q3VHn9HUrW]{Cornes +10}",
|
"8-8": "@Compendium[wfrp4e-core.items.BqPZn6q3VHn9HUrW]{Cornes +10}",
|
||||||
"10-10": "@Compendium[wfrp4e.traits.UnJ25lL8aUzem5JO]{Attaque Caudale (+10)}",
|
"10-10": "@Compendium[wfrp4e-core.items.UnJ25lL8aUzem5JO]{Attaque Caudale (+10)}",
|
||||||
"5-5": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
|
"5-5": "@Compendium[wfrp4e-core.traits.pTorrE0l3VybAbtn]{Peur (3)}",
|
||||||
"9-9": "@Compendium[wfrp4e.traits.mDgEMOoJpi8DkRYb]{Magique}",
|
"9-9": "@Compendium[wfrp4e-core.items.mDgEMOoJpi8DkRYb]{Magique}",
|
||||||
"1-2": "@Compendium[wfrp4e.traits.v3uzEthcq0JRar0J]{Démoniaque (8)}",
|
"1-2": "@Compendium[wfrp4e-core.items.v3uzEthcq0JRar0J]{Démoniaque (8)}",
|
||||||
"3-3": "@Compendium[wfrp4e.traits.9NROryHer1uXAKwY]{Elite}",
|
"3-3": "@Compendium[wfrp4e-core.items.9NROryHer1uXAKwY]{Elite}",
|
||||||
"4-4": "@Compendium[wfrp4e.traits.9MjH4xyVrd3Inzak]Rapide}",
|
"4-4": "@Compendium[wfrp4e-core.items.9MjH4xyVrd3Inzak]Rapide}",
|
||||||
"6-6": "@Compendium[wfrp4e.traits.EO05HX7jql0g605A]{Vol (8)}"
|
"6-6": "@Compendium[wfrp4e-core.items.EO05HX7jql0g605A]{Vol (8)}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Boots of Gucci",
|
"id": "Boots of Gucci",
|
||||||
"name": "Bottes de Gucci",
|
"name": "Bottes de Gucci",
|
||||||
"description": "<p>En activant les bottes à l'aide de la phrase ‘La grâce va au-delà du style’, 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 ‘La grâce va au-delà du style’, 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",
|
"id": "Magical Dagger",
|
||||||
@ -50,12 +50,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Child of Ulric",
|
"id": "Child of Ulric",
|
||||||
"name": "Enfant d'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",
|
"id": "Sword of Fear",
|
||||||
"name": "Épée de la peur",
|
"name": "Épée de la peur",
|
||||||
"description": "<p>Le porteur de l'épée peut invoquer son pouvoir en prononçant les mots ‘Rend-toi ou meurs!’, 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 ‘Rend-toi ou meurs!’, 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",
|
"id": "Gromril Helm",
|
||||||
@ -65,12 +65,12 @@
|
|||||||
{
|
{
|
||||||
"id": "Bless With Filth",
|
"id": "Bless With Filth",
|
||||||
"name": "Infecte bénédiction",
|
"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",
|
"id": "Survivor",
|
||||||
"name": "Survivant",
|
"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",
|
"career_careergroup": "Frère loup",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"arme simple",
|
"arme simple",
|
||||||
@ -85,7 +85,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Wolf Brother",
|
"id": "Wolf Brother",
|
||||||
"name": "Grand Loup",
|
"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",
|
"career_careergroup": "Frère loup",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"arme simple",
|
"arme simple",
|
||||||
@ -96,7 +96,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Wolf Club",
|
"id": "Wolf Club",
|
||||||
"name": "Compagnon Loup",
|
"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",
|
"career_careergroup": "Frère loup",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"arme simple",
|
"arme simple",
|
||||||
@ -106,7 +106,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Wolf Kin",
|
"id": "Wolf Kin",
|
||||||
"name": "Frère Loup",
|
"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",
|
"career_careergroup": "Frère loup",
|
||||||
"trappings": [
|
"trappings": [
|
||||||
"arme simple",
|
"arme simple",
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
"results": {
|
"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é.",
|
"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>. ",
|
"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.",
|
"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.",
|
"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.",
|
"1-33": "Rien de particulier ne se passe pour ce tour.",
|
||||||
|
@ -101,7 +101,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Katya's Cordial",
|
"id": "Katya's Cordial",
|
||||||
"name": "Sirop de Katya",
|
"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 l’ingère, avec cependant un effet indésirable. Lorsqu’elle est sous l’effet de la potion, la personne qui l’a ingérée gagne le Talent @Compendium[wfrp4e-core.talents.6l3jvIAvrKxt0lA9]{Attractive}. Cependant, dès que l’effet 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 à l’odeur 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 l’ingère, avec cependant un effet indésirable. Lorsqu’elle est sous l’effet de la potion, la personne qui l’a ingérée gagne le Talent @Compendium[wfrp4e-core.items.6l3jvIAvrKxt0lA9]{Attractive}. Cependant, dès que l’effet 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 à l’odeur nauséabonde. Durée : [[/r 1d10]] heures.</p>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Liquor of Luck",
|
"id": "Liquor of Luck",
|
||||||
@ -166,7 +166,7 @@
|
|||||||
{
|
{
|
||||||
"id": "Tonic of Sight Beyond Sight",
|
"id": "Tonic of Sight Beyond Sight",
|
||||||
"name": "Tonique de Vue au-delà de la Vue",
|
"name": "Tonique de Vue au-delà de la Vue",
|
||||||
"description": "<p>L’étiquette de la bouteille contenant ce liquide vert foncé est ornée d’un grand globe oculaire rouge. Cette potion porte la promesse d’améliorer la vision de celui qui la boit. La boire vous conférera l’un 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 d’un grand globe oculaire rouge. Cette potion porte la promesse d’améliorer la vision de celui qui la boit. La boire vous conférera l’un 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",
|
"id": "Torn Apart",
|
||||||
|
23
compendium/wfrp4e-starter-set.tables.json
Normal file
23
compendium/wfrp4e-starter-set.tables.json
Normal 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)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -23,7 +23,7 @@
|
|||||||
},
|
},
|
||||||
"Animal Carcass": {
|
"Animal Carcass": {
|
||||||
"name": "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": {
|
"Apprentice Artillerist": {
|
||||||
"name": "Apprentice Artillerist",
|
"name": "Apprentice Artillerist",
|
||||||
@ -667,7 +667,7 @@
|
|||||||
},
|
},
|
||||||
"Scrap and Powder": {
|
"Scrap and Powder": {
|
||||||
"name": "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": {
|
"Sealskin": {
|
||||||
"name": "Sealskin",
|
"name": "Sealskin",
|
||||||
@ -687,7 +687,7 @@
|
|||||||
},
|
},
|
||||||
"Shieldmaiden's Devotion": {
|
"Shieldmaiden's Devotion": {
|
||||||
"name": "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": {
|
"Shieldsman": {
|
||||||
"name": "Shieldsman",
|
"name": "Shieldsman",
|
||||||
|
23
compendium/wfrp4e-up-in-arms.tables.json
Normal file
23
compendium/wfrp4e-up-in-arms.tables.json
Normal 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)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1791
compendium/wfrp4e-wom.items.json
Normal file
1791
compendium/wfrp4e-wom.items.json
Normal file
File diff suppressed because one or more lines are too long
21
fr.json
21
fr.json
@ -1523,14 +1523,19 @@
|
|||||||
|
|
||||||
"Academics": "Lettrés",
|
"Academics": "Lettrés",
|
||||||
"Academic": "Lettré",
|
"Academic": "Lettré",
|
||||||
"Burgher": "Citadins",
|
"Burghers": "Citadins",
|
||||||
"Rogues": "Roublards",
|
"Burgher": "Citadin",
|
||||||
|
"Rogues": "Roublards",
|
||||||
|
"Rogue": "Roublard",
|
||||||
"Riverfolk": "Riverains",
|
"Riverfolk": "Riverains",
|
||||||
"Peasants": "Ruraux",
|
"Peasants": "Ruraux",
|
||||||
"Peasant": "Ruraux",
|
"Peasant": "Rural",
|
||||||
"Warrior": "Guerriers",
|
"Warriors": "Guerriers",
|
||||||
"Ranger": "Itinérants",
|
"Warrior": "Guerrier",
|
||||||
"Courtier": "Courtisans",
|
"Rangers": "Itinérants",
|
||||||
|
"Ranger": "Itinérant",
|
||||||
|
"Courtiers": "Courtisans",
|
||||||
|
"Courtier": "Courtisan",
|
||||||
|
|
||||||
"Calvalry": "Cavalerie",
|
"Calvalry": "Cavalerie",
|
||||||
"Flail": "Fléau",
|
"Flail": "Fléau",
|
||||||
@ -2303,5 +2308,7 @@
|
|||||||
"TYPES.Item.weapon":"Arme",
|
"TYPES.Item.weapon":"Arme",
|
||||||
|
|
||||||
"Badger": "Blaireau",
|
"Badger": "Blaireau",
|
||||||
"Badgers": "Blaireaux"
|
"Badgers": "Blaireaux",
|
||||||
|
"Choose one": "A choisir",
|
||||||
|
"Bestial": "Bestial"
|
||||||
}
|
}
|
||||||
|
123
module.json
123
module.json
@ -8,7 +8,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
||||||
"version": "7.0.2",
|
"version": "7.0.21",
|
||||||
"esmodules": [
|
"esmodules": [
|
||||||
"babele-register.js",
|
"babele-register.js",
|
||||||
"addon-register.js",
|
"addon-register.js",
|
||||||
@ -30,107 +30,96 @@
|
|||||||
"label": "Plats d'Auberges",
|
"label": "Plats d'Auberges",
|
||||||
"type": "RollTable",
|
"type": "RollTable",
|
||||||
"name": "plats-dauberges",
|
"name": "plats-dauberges",
|
||||||
"path": "packs/plats-dauberges.db",
|
"path": "packs/plats-dauberges",
|
||||||
"system": "wfrp4e",
|
"system": "wfrp4e",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Dons de Rhya",
|
"label": "Dons de Rhya",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
"name": "dons-de-rhya",
|
"name": "dons-de-rhya",
|
||||||
"path": "packs/dons-de-rhya.db",
|
"path": "packs/dons-de-rhya",
|
||||||
"system": "wfrp4e",
|
"system": "wfrp4e",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
},
|
"PLAYER": "OBSERVER",
|
||||||
{
|
"ASSISTANT": "OWNER"
|
||||||
"label": "Sorts FR",
|
}
|
||||||
"type": "Item",
|
|
||||||
"name": "sort-fr",
|
|
||||||
"path": "packs/sort-fr.db",
|
|
||||||
"system": "wfrp4e",
|
|
||||||
"private": false,
|
|
||||||
"flags": {}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Aides de Jeu FR",
|
"label": "Aides de Jeu FR",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
"name": "aides-de-jeu-fr",
|
"name": "aides-de-jeu-fr",
|
||||||
"path": "packs/aides-de-jeu-fr.db",
|
"path": "packs/aides-de-jeu-fr",
|
||||||
"system": "wfrp4e",
|
"system": "wfrp4e",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Potions : Drogues et Sédatifs",
|
"label": "Potions",
|
||||||
"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",
|
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"name": "antidotes-and-remedes",
|
"name": "antidotes-and-remedes",
|
||||||
"path": "packs/antidotes-and-remedes.db",
|
"path": "packs/antidotes-and-remedes",
|
||||||
"system": "wfrp4e",
|
"system": "wfrp4e",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Tables des Traductions",
|
"label": "Tables des Traductions",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
"name": "tables-des-traductions",
|
"name": "tables-des-traductions",
|
||||||
"path": "packs/tables-des-traductions.db",
|
"path": "packs/tables-des-traductions",
|
||||||
"system": "wfrp4e",
|
"system": "wfrp4e",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Apothicarium",
|
"label": "Apothicarium",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
"name": "apothicarium",
|
"name": "apothicarium",
|
||||||
"path": "packs/apothicarium.db",
|
"path": "packs/apothicarium",
|
||||||
"system": "wfrp4e",
|
"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",
|
"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.21.zip",
|
||||||
"id": "wh4-fr-translation",
|
"id": "wh4-fr-translation",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "10",
|
"minimum": "11",
|
||||||
"verified": "11"
|
"verified": "11"
|
||||||
},
|
},
|
||||||
"relationships": {
|
"relationships": {
|
||||||
|
@ -176,6 +176,28 @@ export class WH4FRPatchConfig {
|
|||||||
game.wfrp4e.config.species["welf"] = "Elfe Sylvain";
|
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_skills();
|
||||||
this.patch_species_talents();
|
this.patch_species_talents();
|
||||||
this.patch_subspecies();
|
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",
|
icon: "systems/wfrp4e/icons/conditions/bleeding.png",
|
||||||
id: "bleeding",
|
id: "bleeding",
|
||||||
@ -474,7 +496,7 @@ export class WH4FRPatchConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
]
|
]*/
|
||||||
|
|
||||||
/*game.wfrp4e.config.systemEffects = {
|
/*game.wfrp4e.config.systemEffects = {
|
||||||
"enc1": {
|
"enc1": {
|
||||||
|
@ -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 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 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 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 = [
|
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: "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: "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: "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: "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: "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 = [
|
let sectionDataUS = [
|
||||||
{ 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: "Skills\\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: "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: "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: "trapping", toFind: "Trappings\\s*:", secondParse: '(?<name>[a-zö0-9\\s\\(\\)\\-]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||||
{ name: "spell", toFind: "Spells\\s*\\([a-z\\s]*\\)*:", secondParse: '(?<name>[a-z\\s]*)', 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 regSep = XRegExp('\\s*,\\s*', 'gi'); // Term separator, with auto trim
|
||||||
let regLine1 = XRegExp('[\\r\\n\\.]', 'gi'); // Term separator, with auto trim
|
let regLine1 = XRegExp('[\\r\\n\\.]', 'gi'); // Term separator, with auto trim
|
||||||
let regName = XRegExp(name_val, 'gi');
|
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) {
|
async function __findItem(itemName, itemType, location = null) {
|
||||||
let toSearch = itemName.toLowerCase().trim();
|
let toSearch = itemName.toLowerCase().trim();
|
||||||
let items = game.items.contents.filter(i => i.type == itemType)
|
let items = game.items.contents.filter(i => i.type == itemType)
|
||||||
|
|
||||||
|
console.log("Searching for", toSearch, itemType)
|
||||||
|
|
||||||
// Search imported items first
|
// Search imported items first
|
||||||
for (let i of items) {
|
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();
|
return i.toObject();
|
||||||
}
|
}
|
||||||
let itemList
|
let itemList
|
||||||
@ -88,12 +112,11 @@ async function __findItem(itemName, itemType, location = null) {
|
|||||||
// find pack -> search pack -> return entity
|
// find pack -> search pack -> return entity
|
||||||
if (location) {
|
if (location) {
|
||||||
let pack = game.packs.find(p => {
|
let pack = game.packs.find(p => {
|
||||||
location.split(".")[0] == p.metadata.package &&
|
location.split(".")[0] == p.metadata.package && location.split(".")[1] == p.metadata.name
|
||||||
location.split(".")[1] == p.metadata.name
|
|
||||||
})
|
})
|
||||||
if (pack) {
|
if (pack) {
|
||||||
await pack.getIndex().then(index => itemList = index);
|
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) {
|
if (searchResult) {
|
||||||
let item = await pack.getDocument(searchResult._id)
|
let item = await pack.getDocument(searchResult._id)
|
||||||
return item.toObject()
|
return item.toObject()
|
||||||
@ -104,7 +127,8 @@ async function __findItem(itemName, itemType, location = null) {
|
|||||||
// If all else fails, search each pack
|
// If all else fails, search each pack
|
||||||
for (let p of game.wfrp4e.tags.getPacksWithTag(itemType)) {
|
for (let p of game.wfrp4e.tags.getPacksWithTag(itemType)) {
|
||||||
await p.getIndex().then(index => itemList = index);
|
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) {
|
if (searchResult) {
|
||||||
let item = await p.getDocument(searchResult._id)
|
let item = await p.getDocument(searchResult._id)
|
||||||
return item.toObject()
|
return item.toObject()
|
||||||
@ -120,80 +144,102 @@ async function __findSkill(skillName, value = undefined) {
|
|||||||
let skillSplit = XRegExp.exec(skillName, XRegExp(parseStr, 'gi'));
|
let skillSplit = XRegExp.exec(skillName, XRegExp(parseStr, 'gi'));
|
||||||
|
|
||||||
// First try world items
|
// First try world items
|
||||||
|
let item
|
||||||
let worldItem = game.items.contents.filter(i => i.type == "skill" && i.name.toLowerCase() == toSearch)[0];
|
let worldItem = game.items.contents.filter(i => i.type == "skill" && i.name.toLowerCase() == toSearch)[0];
|
||||||
if (worldItem) return worldItem;
|
if (worldItem) {
|
||||||
|
item = worldItem.toObject()
|
||||||
let packs = game.wfrp4e.tags.getPacksWithTag("skill");
|
} else {
|
||||||
for (let pack of packs) {
|
let packs = game.wfrp4e.tags.getPacksWithTag("skill");
|
||||||
let skillList = await pack.getIndex();
|
for (let pack of packs) {
|
||||||
// Search for specific skill (won't find unlisted specializations)
|
let skillList = await pack.getIndex();
|
||||||
let searchResult = skillList.find(s => (s.type == "skill" && s.translated && s.originalName.toLowerCase() == toSearch) || (s.type == "skill" && s.name.toLowerCase() == toSearch ) );
|
// Search for specific skill (won't find unlisted specializations)
|
||||||
if (!searchResult) {
|
let searchResult = skillList.find(s => (s.type == "skill" && s.translated && s.originalName.toLowerCase() == toSearch) || (s.type == "skill" && s.name.toLowerCase() == toSearch));
|
||||||
let toSearchClean = toSearch.split("(")[0].trim();
|
if (!searchResult) {
|
||||||
searchResult = skillList.find(s => (s.type == "skill" && s.translated && s.originalName.toLowerCase().split("(")[0].trim() == toSearchClean) ||
|
let toSearchClean = toSearch.split("(")[0].trim();
|
||||||
(s.type == "skill" && s.name.toLowerCase().split("(")[0].trim() == toSearchClean) );
|
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;
|
if (searchResult) {
|
||||||
await pack.getDocument(searchResult._id).then(packSkill => dbSkill = packSkill);
|
let dbSkill;
|
||||||
let item = dbSkill.toObject();
|
await pack.getDocument(searchResult._id).then(packSkill => dbSkill = packSkill);
|
||||||
//console.log("Skill name1", skillSplit)
|
item = dbSkill.toObject();
|
||||||
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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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) {
|
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 talentSplit = XRegExp.exec(talentName, XRegExp(parseStr, 'gi'));
|
||||||
let toSearch = talentSplit.name.toLowerCase().trim();
|
let toSearch = talentSplit.name.toLowerCase().trim();
|
||||||
|
|
||||||
//console.log("Talent name", talentName, talentSplit)
|
//console.log("Talent name", toSearch, talentName, talentSplit)
|
||||||
|
|
||||||
// First try world items
|
// First try world items
|
||||||
|
let item
|
||||||
let worldItem = game.items.contents.filter(i => i.type == "talent" && i.name.toLowerCase() == toSearch)[0];
|
let worldItem = game.items.contents.filter(i => i.type == "talent" && i.name.toLowerCase() == toSearch)[0];
|
||||||
if (worldItem) return worldItem;
|
if (worldItem) {
|
||||||
|
item = worldItem.toObject()
|
||||||
let packs = game.wfrp4e.tags.getPacksWithTag("talent");
|
} else {
|
||||||
for (let pack of packs) {
|
let packs = game.wfrp4e.tags.getPacksWithTag("talent");
|
||||||
let talentList = await pack.getIndex();
|
for (let pack of packs) {
|
||||||
// Search for specific skill (won't find unlisted specializations)
|
let talentList = await pack.getIndex();
|
||||||
let searchResult = talentList.find(s => (s.translated && s.originalName.toLowerCase() == toSearch) || (s.name.toLowerCase() == toSearch ) );
|
// Search for specific talent (won't find unlisted specializations)
|
||||||
if (!searchResult) {
|
let searchResult = talentList.find(s => (s.type == "talent" && s.translated && s.originalName.toLowerCase() == toSearch) || (s.type == "talent" && s.name.toLowerCase() == toSearch));
|
||||||
let toSearchClean = toSearch.split("(")[0].trim();
|
if (!searchResult) {
|
||||||
searchResult = talentList.find(s => (s.translated && s.originalName.toLowerCase().split("(")[0].trim() == toSearchClean) ||
|
let toSearchClean = toSearch.split("(")[0].trim();
|
||||||
(s.name.toLowerCase().split("(")[0].trim() == toSearchClean) );
|
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;
|
if (searchResult) {
|
||||||
//console.log("Talent name1", talentSplit)
|
let dbTalent;
|
||||||
await pack.getDocument(searchResult._id).then(packTalent => dbTalent = packTalent);
|
//console.log("Talent name1", talentSplit)
|
||||||
let item = dbTalent.toObject();
|
await pack.getDocument(searchResult._id).then(packTalent => dbTalent = packTalent);
|
||||||
if ( talentSplit.specialized ) {
|
item = dbTalent.toObject();
|
||||||
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()) )
|
|
||||||
}
|
}
|
||||||
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) {
|
function __patchName(name) {
|
||||||
if (name.toLowerCase == 'magic sense')
|
if (name.toLowerCase == 'magic sense')
|
||||||
name = 'Magical Sense'
|
name = 'Magical Sense'
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
@ -204,33 +250,41 @@ export default async function statParserFR(statString, type = "npc") {
|
|||||||
|
|
||||||
// Patch wront/strange carac value before processing
|
// Patch wront/strange carac value before processing
|
||||||
statString = statString.replace(/ –/g, " 0")
|
statString = statString.replace(/ –/g, " 0")
|
||||||
|
let moneys = { gc: 0, ss: 0, bp: 0 }
|
||||||
|
|
||||||
let statNameReg = us_carac
|
let statNameReg = us_carac
|
||||||
let sectionData = sectionDataUS
|
let sectionData = duplicate(sectionDataUS)
|
||||||
|
let skillGrouping = __SkillGroupsUS
|
||||||
|
let moneyLang = moneyUS
|
||||||
// Detect French stat block
|
// Detect French stat block
|
||||||
if (statString.includes('CC') && statString.includes('CT') && statString.includes('FM')) {
|
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")
|
//ui.notifications.warn("Le parsing de stablock en Français n'est pas encore prêt")
|
||||||
statNameReg = fr_carac
|
statNameReg = fr_carac
|
||||||
sectionData = sectionDataFR
|
sectionData = duplicate(sectionDataFR)
|
||||||
|
skillGrouping = __SkillGroupsFR
|
||||||
|
moneyLang = moneyFR
|
||||||
}
|
}
|
||||||
|
|
||||||
let reg1 = XRegExp(statNameReg, 'gi')
|
let reg1 = XRegExp(statNameReg, 'gi')
|
||||||
let res = reg1.test(statString)
|
let res = reg1.test(statString)
|
||||||
if (res) { //stat block identified go on
|
if (res) { //stat block identified go on
|
||||||
|
let globalItemList = []
|
||||||
|
|
||||||
// Extract the name
|
// Extract the name
|
||||||
let res1 = XRegExp.exec(statString, reg1)
|
let res1 = XRegExp.exec(statString, reg1)
|
||||||
console.log("REG", res1)
|
console.log("REG", res1)
|
||||||
let pnjStr = statString.substring(0, res1.index)
|
let pnjStr = statString.substring(0, res1.index)
|
||||||
let nameRes = XRegExp.exec(pnjStr, regName)
|
let nameRes = XRegExp.exec(pnjStr, regName)
|
||||||
console.log(nameRes)
|
//console.log(nameRes)
|
||||||
if (nameRes.tiers && nameRes.tiers.length > 0 && hasProperty(model, "details.status.value")) {
|
if (nameRes.tiers && nameRes.tiers.length > 0 && hasProperty(model, "details.status.value")) {
|
||||||
let regTiers = XRegExp("(?<name>[A-Za-z]*)\\s+(?<level>[0-9]*)");
|
let regTiers = XRegExp("(?<name>[A-Za-z]*)\\s+(?<level>[0-9]*)");
|
||||||
let resTiers = XRegExp.exec(nameRes.tiers, regTiers);
|
let resTiers = XRegExp.exec(nameRes.tiers, regTiers);
|
||||||
console.log(resTiers);
|
console.log(resTiers);
|
||||||
model.details.status.value = game.i18n.localize(resTiers.name.trim()) + " " + resTiers.level;
|
model.details.status.value = game.i18n.localize(resTiers.name.trim()) + " " + resTiers.level;
|
||||||
}
|
}
|
||||||
|
let baseName = nameRes.name.split("\n")
|
||||||
// Compute the PNJ name
|
// 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 => {
|
pnjName = pnjName.map(word => {
|
||||||
if (word == "VON")
|
if (word == "VON")
|
||||||
return word.toLowerCase();
|
return word.toLowerCase();
|
||||||
@ -240,7 +294,14 @@ export default async function statParserFR(statString, type = "npc") {
|
|||||||
return word;
|
return word;
|
||||||
})
|
})
|
||||||
pnjName = pnjName.join(" ")
|
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
|
// Get the carac values
|
||||||
let reg2 = XRegExp(carac_val, 'gi')
|
let reg2 = XRegExp(carac_val, 'gi')
|
||||||
let resCarac = XRegExp.exec(statString, reg2) // resr contains all carac found
|
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) {
|
for (let def of sectionData) {
|
||||||
def.regDef = XRegExp(def.toFind, 'gi');
|
def.regDef = XRegExp(def.toFind, 'gi');
|
||||||
let res = XRegExp.exec(statString, def.regDef);
|
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);
|
//console.log(" Parsing", def.name, res);
|
||||||
}
|
}
|
||||||
// Sort to split position of various substring
|
// Sort to split position of various substring
|
||||||
sectionData.sort(function (a, b) { return a.index - b.index; });
|
sectionData.sort(function (a, b) { return a.index - b.index; });
|
||||||
|
|
||||||
let globalItemList = [];
|
|
||||||
// Then loop again and process each item type
|
// Then loop again and process each item type
|
||||||
for (let i = 0; i < sectionData.length; i++) {
|
for (let i = 0; i < sectionData.length; i++) {
|
||||||
let def = sectionData[i];
|
let def = sectionData[i];
|
||||||
if (def.index > -1) {
|
if (def.index > -1) {
|
||||||
let maxIndex = statString.length
|
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
|
maxIndex = sectionData[i + 1].index
|
||||||
|
}
|
||||||
def.substring = statString.substring(def.index, maxIndex)
|
def.substring = statString.substring(def.index, maxIndex)
|
||||||
def.substring = XRegExp.replace(def.substring, def.regDef, "")
|
def.substring = XRegExp.replace(def.substring, def.regDef, "")
|
||||||
def.substring = XRegExp.replace(def.substring, regLine1, " ")
|
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
|
// Then create a table of it in termList, with specific sub-parsing rules
|
||||||
let termList = XRegExp.split(def.substring, regSep);
|
let termList = XRegExp.split(def.substring, regSep);
|
||||||
|
//console.log("Term list identified", termList)
|
||||||
let lastSkillName
|
let lastSkillName
|
||||||
for (let name of termList) {
|
for (let name of termList) {
|
||||||
let itemFound, subres, value;
|
let itemFound, subres, value;
|
||||||
if (def.secondParse) {
|
if (def.secondParse) {
|
||||||
subres = XRegExp.exec(name, XRegExp(def.secondParse, 'gi'))
|
subres = XRegExp.exec(name, XRegExp(def.secondParse, 'gi'))
|
||||||
//console.log("Second pars", def, name, subres)
|
//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) {
|
if (subres.value) {
|
||||||
value = XRegExp.replace(subres.value, "(", "")
|
value = XRegExp.replace(subres.value, "(", "")
|
||||||
value = XRegExp.replace(value, ")", "")
|
value = XRegExp.replace(value, ")", "")
|
||||||
} else {
|
} else {
|
||||||
value = 0
|
value = 0
|
||||||
}
|
}
|
||||||
@ -301,38 +366,42 @@ export default async function statParserFR(statString, type = "npc") {
|
|||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
if (itemFound && value && value.length > 0) {
|
if (itemFound && value && value.length > 0) {
|
||||||
if (name.toLowerCase() == 'weapon' || name.toLowerCase() == "bite" || name.toLowerCase() == "tail" ||
|
let number = value.match(/\d+/g);
|
||||||
name.toLowerCase() == 'arme' || name.toLowerCase() == "morsure" || name.toLowerCase() == "queue") {
|
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)
|
//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 {
|
} else {
|
||||||
itemFound.system.specification.value = game.i18n.localize(value)
|
itemFound.system.specification.value = game.i18n.localize(value)
|
||||||
}
|
}
|
||||||
|
//itemFound.name += "(" + value + ")"
|
||||||
}
|
}
|
||||||
if (!itemFound)
|
if (!itemFound)
|
||||||
ui.notifications.error("Trait non trouvé, à ajouter manuellement : " + name, { permanent: true })
|
ui.notifications.error("Trait non trouvé, à ajouter manuellement : " + name, { permanent: true })
|
||||||
|
|
||||||
} else if (def.name == 'skill') {
|
} else if (def.name == 'skill') {
|
||||||
try {
|
try {
|
||||||
itemFound = await __findSkill(name, value);
|
itemFound = await __findSkill(name, value);
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
let newName = name
|
||||||
if (!itemFound && lastSkillName) {
|
if (!itemFound && lastSkillName) {
|
||||||
name = lastSkillName + " (" + name + ")"
|
newName = lastSkillName + " (" + name + ")"
|
||||||
itemFound = await __findSkill(name, value);
|
itemFound = await __findSkill(newName, value)
|
||||||
}
|
}
|
||||||
if (itemFound && subres && value) {
|
if (itemFound && subres && value) {
|
||||||
itemFound.system.advances.value = Number(value) - Number(model.characteristics[itemFound.system.characteristic.value].initial);
|
itemFound.system.advances.value = Number(value) - Number(model.characteristics[itemFound.system.characteristic.value].initial);
|
||||||
}
|
}
|
||||||
lastSkillName = undefined
|
lastSkillName = undefined
|
||||||
if ( itemFound?.name?.includes('Trade')) { // useful to handle skills grouping
|
for (let keySkillGroup of skillGrouping) {
|
||||||
lastSkillName = "Trade"
|
if (newName.includes(keySkillGroup)) { // useful to handle skills grouping
|
||||||
}
|
lastSkillName = keySkillGroup
|
||||||
if ( itemFound?.name?.includes('Lore')) {
|
}
|
||||||
lastSkillName = "Lore"
|
}
|
||||||
}
|
if (!itemFound) {
|
||||||
if (!itemFound)
|
|
||||||
ui.notifications.error("Compétence non trouvée, à ajouter manuellement : " + name, { permanent: true })
|
ui.notifications.error("Compétence non trouvée, à ajouter manuellement : " + name, { permanent: true })
|
||||||
|
}
|
||||||
} else if (def.name == 'talent') {
|
} else if (def.name == 'talent') {
|
||||||
try {
|
try {
|
||||||
itemFound = await __findTalent(name);
|
itemFound = await __findTalent(name);
|
||||||
@ -340,35 +409,62 @@ export default async function statParserFR(statString, type = "npc") {
|
|||||||
catch { }
|
catch { }
|
||||||
if (itemFound && subres && value)
|
if (itemFound && subres && value)
|
||||||
itemFound.system.advances.value = Number(value);
|
itemFound.system.advances.value = Number(value);
|
||||||
if (!itemFound)
|
if (!itemFound) {
|
||||||
ui.notifications.error("Talent non trouvé, à ajouter manuellement : " + name, { permanent: true })
|
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) {
|
if (!itemFound && name) {
|
||||||
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "trapping", system: game.system.model.Item.trapping })
|
if (name.toLowerCase().includes("armor") || name.toLowerCase().includes("armure") || name.toLowerCase().includes("armour")) {
|
||||||
itemFound.system.trappingType.value = "misc"
|
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "armour", system: game.system.model.Item.armor })
|
||||||
itemFound = itemFound.toObject()
|
} 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 if (def.name == 'spell') {
|
} else {
|
||||||
console.log("Found spells section!!!!")
|
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "trapping", system: game.system.model.Item.trapping })
|
||||||
try {
|
itemFound.system.trappingType.value = "misc"
|
||||||
itemFound = await __findItem(name, "spell");
|
if (name.toLowerCase().includes("cloth")) {
|
||||||
|
itemFound.system.trappingType.value = "clothingAccessories"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
itemFound = itemFound.toObject()
|
||||||
if (!itemFound && name) {
|
}
|
||||||
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "spell", system: game.system.model.Item.spell })
|
// Searching money stuff
|
||||||
itemFound = itemFound.toObject();
|
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') {
|
} else if (def.name == 'mutation') {
|
||||||
try {
|
try {
|
||||||
itemFound = await __findItem(name, "mutation");
|
itemFound = await __findItem(name, "mutation");
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemFound)
|
if (itemFound)
|
||||||
globalItemList.push(itemFound);
|
globalItemList.push(itemFound);
|
||||||
}
|
}
|
||||||
@ -376,14 +472,39 @@ export default async function statParserFR(statString, type = "npc") {
|
|||||||
}
|
}
|
||||||
let moneyItems = await game.wfrp4e.utility.allMoneyItems() || [];
|
let moneyItems = await game.wfrp4e.utility.allMoneyItems() || [];
|
||||||
moneyItems = moneyItems.sort((a, b) => (a.system.coinValue.value > b.system.coinValue.value) ? -1 : 1);
|
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);
|
globalItemList = globalItemList.concat(moneyItems);
|
||||||
//console.log("My liste :", globalItemList);
|
//DEBUG : console.log("My liste :", moneyItems, moneys);
|
||||||
let name = pnjName;
|
let name = pnjName;
|
||||||
|
|
||||||
let effects = globalItemList.reduce((total, globItem) => total.concat(globItem.effects), [])
|
let effects = globalItemList.reduce((total, globItem) => total.concat(globItem.effects), [])
|
||||||
effects = effects.filter(e => !!e)
|
effects = effects.filter(e => !!e)
|
||||||
effects = effects.filter(e => e.transfer)
|
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 }
|
return { name, type, data: model, items: globalItemList, effects }
|
||||||
}
|
}
|
||||||
|
0
packs/aides-de-jeu-fr/000344.log
Normal file
0
packs/aides-de-jeu-fr/000344.log
Normal file
BIN
packs/aides-de-jeu-fr/000346.ldb
Normal file
BIN
packs/aides-de-jeu-fr/000346.ldb
Normal file
Binary file not shown.
1
packs/aides-de-jeu-fr/CURRENT
Normal file
1
packs/aides-de-jeu-fr/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000342
|
0
packs/aides-de-jeu-fr/LOCK
Normal file
0
packs/aides-de-jeu-fr/LOCK
Normal file
11
packs/aides-de-jeu-fr/LOG
Normal file
11
packs/aides-de-jeu-fr/LOG
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
2023/11/12-16:28:45.276682 7f4c327fc6c0 Delete type=3 #1
|
||||||
|
2023/11/12-16:30:07.848922 7f4c30ff96c0 Level-0 table #345: started
|
||||||
|
2023/11/12-16:30:07.848963 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||||
|
2023/11/12-16:30:07.855601 7f4c30ff96c0 Delete type=0 #343
|
||||||
|
2023/11/12-16:30:07.882513 7f4c30ff96c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at '!journal!suuYN87Al1ZZWtQQ' @ 5 : 1
|
||||||
|
2023/11/12-16:30:07.882529 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||||
|
2023/11/12-16:30:07.887126 7f4c30ff96c0 Generated table #346@0: 5 keys, 49338 bytes
|
||||||
|
2023/11/12-16:30:07.887163 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 49338 bytes
|
||||||
|
2023/11/12-16:30:07.894400 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
|
2023/11/12-16:30:07.894598 7f4c30ff96c0 Delete type=2 #5
|
||||||
|
2023/11/12-16:30:07.919620 7f4c30ff96c0 Manual compaction at level-0 from '!journal!suuYN87Al1ZZWtQQ' @ 5 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)
|
4
packs/aides-de-jeu-fr/LOG.old
Normal file
4
packs/aides-de-jeu-fr/LOG.old
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
2023/11/12-16:28:45.253740 7f4c32ffd6c0 Log #340: 0 ops saved to Table #341 OK
|
||||||
|
2023/11/12-16:28:45.253935 7f4c32ffd6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/aides-de-jeu-fr/000340.log: OK
|
||||||
|
2023/11/12-16:28:45.255237 7f4c32ffd6c0 Table #5: 5 entries OK
|
||||||
|
2023/11/12-16:28:45.259457 7f4c32ffd6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/aides-de-jeu-fr; recovered 1 files; 49338 bytes. Some data may have been lost. ****
|
BIN
packs/aides-de-jeu-fr/MANIFEST-000342
Normal file
BIN
packs/aides-de-jeu-fr/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/aides-de-jeu-fr/lost/000340.log
Normal file
0
packs/aides-de-jeu-fr/lost/000340.log
Normal file
0
packs/antidotes-and-remedes/000345.log
Normal file
0
packs/antidotes-and-remedes/000345.log
Normal file
BIN
packs/antidotes-and-remedes/000347.ldb
Normal file
BIN
packs/antidotes-and-remedes/000347.ldb
Normal file
Binary file not shown.
1
packs/antidotes-and-remedes/CURRENT
Normal file
1
packs/antidotes-and-remedes/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000343
|
0
packs/antidotes-and-remedes/LOCK
Normal file
0
packs/antidotes-and-remedes/LOCK
Normal file
11
packs/antidotes-and-remedes/LOG
Normal file
11
packs/antidotes-and-remedes/LOG
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
2023/11/12-16:28:45.304949 7f4c31ffb6c0 Delete type=3 #1
|
||||||
|
2023/11/12-16:30:07.855778 7f4c30ff96c0 Level-0 table #346: started
|
||||||
|
2023/11/12-16:30:07.855832 7f4c30ff96c0 Level-0 table #346: 0 bytes OK
|
||||||
|
2023/11/12-16:30:07.862356 7f4c30ff96c0 Delete type=0 #344
|
||||||
|
2023/11/12-16:30:07.894853 7f4c30ff96c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at '!items!ylFhk7mGZOnAJTUT' @ 103 : 1
|
||||||
|
2023/11/12-16:30:07.894875 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||||
|
2023/11/12-16:30:07.900627 7f4c30ff96c0 Generated table #347@0: 89 keys, 96484 bytes
|
||||||
|
2023/11/12-16:30:07.900658 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 96484 bytes
|
||||||
|
2023/11/12-16:30:07.906863 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
|
2023/11/12-16:30:07.907101 7f4c30ff96c0 Delete type=2 #272
|
||||||
|
2023/11/12-16:30:07.919636 7f4c30ff96c0 Manual compaction at level-0 from '!items!ylFhk7mGZOnAJTUT' @ 103 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
4
packs/antidotes-and-remedes/LOG.old
Normal file
4
packs/antidotes-and-remedes/LOG.old
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
2023/11/12-16:28:45.280834 7f4c327fc6c0 Log #341: 0 ops saved to Table #342 OK
|
||||||
|
2023/11/12-16:28:45.281059 7f4c327fc6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/antidotes-and-remedes/000341.log: OK
|
||||||
|
2023/11/12-16:28:45.282622 7f4c327fc6c0 Table #272: 89 entries OK
|
||||||
|
2023/11/12-16:28:45.286508 7f4c327fc6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/antidotes-and-remedes; recovered 1 files; 96484 bytes. Some data may have been lost. ****
|
BIN
packs/antidotes-and-remedes/MANIFEST-000343
Normal file
BIN
packs/antidotes-and-remedes/MANIFEST-000343
Normal file
Binary file not shown.
0
packs/antidotes-and-remedes/lost/000341.log
Normal file
0
packs/antidotes-and-remedes/lost/000341.log
Normal file
0
packs/apothicarium/000344.log
Normal file
0
packs/apothicarium/000344.log
Normal file
BIN
packs/apothicarium/000346.ldb
Normal file
BIN
packs/apothicarium/000346.ldb
Normal file
Binary file not shown.
1
packs/apothicarium/CURRENT
Normal file
1
packs/apothicarium/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000342
|
0
packs/apothicarium/LOCK
Normal file
0
packs/apothicarium/LOCK
Normal file
11
packs/apothicarium/LOG
Normal file
11
packs/apothicarium/LOG
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
2023/11/12-16:28:45.354171 7f4c32ffd6c0 Delete type=3 #1
|
||||||
|
2023/11/12-16:30:07.919758 7f4c30ff96c0 Level-0 table #345: started
|
||||||
|
2023/11/12-16:30:07.919806 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||||
|
2023/11/12-16:30:07.926377 7f4c30ff96c0 Delete type=0 #343
|
||||||
|
2023/11/12-16:30:07.926603 7f4c30ff96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at '!journal!cZtNgayIw2QFhC9u' @ 1 : 1
|
||||||
|
2023/11/12-16:30:07.926620 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||||
|
2023/11/12-16:30:07.931147 7f4c30ff96c0 Generated table #346@0: 1 keys, 18667 bytes
|
||||||
|
2023/11/12-16:30:07.931182 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 18667 bytes
|
||||||
|
2023/11/12-16:30:07.937420 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
|
2023/11/12-16:30:07.937601 7f4c30ff96c0 Delete type=2 #5
|
||||||
|
2023/11/12-16:30:07.937809 7f4c30ff96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 1 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)
|
4
packs/apothicarium/LOG.old
Normal file
4
packs/apothicarium/LOG.old
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
2023/11/12-16:28:45.334424 7f4c317fa6c0 Log #340: 0 ops saved to Table #341 OK
|
||||||
|
2023/11/12-16:28:45.334594 7f4c317fa6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/apothicarium/000340.log: OK
|
||||||
|
2023/11/12-16:28:45.335422 7f4c317fa6c0 Table #5: 1 entries OK
|
||||||
|
2023/11/12-16:28:45.338815 7f4c317fa6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/apothicarium; recovered 1 files; 18667 bytes. Some data may have been lost. ****
|
BIN
packs/apothicarium/MANIFEST-000342
Normal file
BIN
packs/apothicarium/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/apothicarium/lost/000340.log
Normal file
0
packs/apothicarium/lost/000340.log
Normal file
0
packs/dons-de-rhya/000344.log
Normal file
0
packs/dons-de-rhya/000344.log
Normal file
BIN
packs/dons-de-rhya/000346.ldb
Normal file
BIN
packs/dons-de-rhya/000346.ldb
Normal file
Binary file not shown.
1
packs/dons-de-rhya/CURRENT
Normal file
1
packs/dons-de-rhya/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000342
|
0
packs/dons-de-rhya/LOCK
Normal file
0
packs/dons-de-rhya/LOCK
Normal file
11
packs/dons-de-rhya/LOG
Normal file
11
packs/dons-de-rhya/LOG
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
2023/11/12-16:28:45.249196 7f4c32ffd6c0 Delete type=3 #1
|
||||||
|
2023/11/12-16:30:07.842308 7f4c30ff96c0 Level-0 table #345: started
|
||||||
|
2023/11/12-16:30:07.842386 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||||
|
2023/11/12-16:30:07.848757 7f4c30ff96c0 Delete type=0 #343
|
||||||
|
2023/11/12-16:30:07.869748 7f4c30ff96c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at '!journal!yzw9I0r3hCK7PJnz' @ 23 : 1
|
||||||
|
2023/11/12-16:30:07.870212 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||||
|
2023/11/12-16:30:07.875695 7f4c30ff96c0 Generated table #346@0: 23 keys, 53814 bytes
|
||||||
|
2023/11/12-16:30:07.875744 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 53814 bytes
|
||||||
|
2023/11/12-16:30:07.882149 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
|
2023/11/12-16:30:07.882321 7f4c30ff96c0 Delete type=2 #5
|
||||||
|
2023/11/12-16:30:07.919602 7f4c30ff96c0 Manual compaction at level-0 from '!journal!yzw9I0r3hCK7PJnz' @ 23 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)
|
4
packs/dons-de-rhya/LOG.old
Normal file
4
packs/dons-de-rhya/LOG.old
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
2023/11/12-16:28:45.216086 7f4c317fa6c0 Log #340: 0 ops saved to Table #341 OK
|
||||||
|
2023/11/12-16:28:45.216263 7f4c317fa6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/dons-de-rhya/000340.log: OK
|
||||||
|
2023/11/12-16:28:45.217493 7f4c317fa6c0 Table #5: 23 entries OK
|
||||||
|
2023/11/12-16:28:45.221094 7f4c317fa6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/dons-de-rhya; recovered 1 files; 53814 bytes. Some data may have been lost. ****
|
BIN
packs/dons-de-rhya/MANIFEST-000342
Normal file
BIN
packs/dons-de-rhya/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/dons-de-rhya/lost/000340.log
Normal file
0
packs/dons-de-rhya/lost/000340.log
Normal file
BIN
packs/drogues-and-sedatifs/000005.ldb
Normal file
BIN
packs/drogues-and-sedatifs/000005.ldb
Normal file
Binary file not shown.
0
packs/drogues-and-sedatifs/000270.log
Normal file
0
packs/drogues-and-sedatifs/000270.log
Normal file
1
packs/drogues-and-sedatifs/CURRENT
Normal file
1
packs/drogues-and-sedatifs/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000268
|
0
packs/drogues-and-sedatifs/LOCK
Normal file
0
packs/drogues-and-sedatifs/LOCK
Normal file
8
packs/drogues-and-sedatifs/LOG
Normal file
8
packs/drogues-and-sedatifs/LOG
Normal 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)
|
8
packs/drogues-and-sedatifs/LOG.old
Normal file
8
packs/drogues-and-sedatifs/LOG.old
Normal 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)
|
BIN
packs/drogues-and-sedatifs/MANIFEST-000268
Normal file
BIN
packs/drogues-and-sedatifs/MANIFEST-000268
Normal file
Binary file not shown.
BIN
packs/pansements-and-cataplasmes/000005.ldb
Normal file
BIN
packs/pansements-and-cataplasmes/000005.ldb
Normal file
Binary file not shown.
0
packs/pansements-and-cataplasmes/000270.log
Normal file
0
packs/pansements-and-cataplasmes/000270.log
Normal file
1
packs/pansements-and-cataplasmes/CURRENT
Normal file
1
packs/pansements-and-cataplasmes/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000268
|
0
packs/pansements-and-cataplasmes/LOCK
Normal file
0
packs/pansements-and-cataplasmes/LOCK
Normal file
8
packs/pansements-and-cataplasmes/LOG
Normal file
8
packs/pansements-and-cataplasmes/LOG
Normal 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)
|
8
packs/pansements-and-cataplasmes/LOG.old
Normal file
8
packs/pansements-and-cataplasmes/LOG.old
Normal 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)
|
BIN
packs/pansements-and-cataplasmes/MANIFEST-000268
Normal file
BIN
packs/pansements-and-cataplasmes/MANIFEST-000268
Normal file
Binary file not shown.
0
packs/plats-dauberges/000344.log
Normal file
0
packs/plats-dauberges/000344.log
Normal file
BIN
packs/plats-dauberges/000346.ldb
Normal file
BIN
packs/plats-dauberges/000346.ldb
Normal file
Binary file not shown.
1
packs/plats-dauberges/CURRENT
Normal file
1
packs/plats-dauberges/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000342
|
0
packs/plats-dauberges/LOCK
Normal file
0
packs/plats-dauberges/LOCK
Normal file
11
packs/plats-dauberges/LOG
Normal file
11
packs/plats-dauberges/LOG
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
2023/11/12-16:28:45.211861 7f4c317fa6c0 Delete type=3 #1
|
||||||
|
2023/11/12-16:30:07.824306 7f4c30ff96c0 Level-0 table #345: started
|
||||||
|
2023/11/12-16:30:07.824373 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||||
|
2023/11/12-16:30:07.830848 7f4c30ff96c0 Delete type=0 #343
|
||||||
|
2023/11/12-16:30:07.831080 7f4c30ff96c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 227 : 1
|
||||||
|
2023/11/12-16:30:07.831097 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||||
|
2023/11/12-16:30:07.835289 7f4c30ff96c0 Generated table #346@0: 234 keys, 19449 bytes
|
||||||
|
2023/11/12-16:30:07.835330 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 19449 bytes
|
||||||
|
2023/11/12-16:30:07.841639 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||||
|
2023/11/12-16:30:07.841825 7f4c30ff96c0 Delete type=2 #5
|
||||||
|
2023/11/12-16:30:07.842195 7f4c30ff96c0 Manual compaction at level-0 from '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 227 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
4
packs/plats-dauberges/LOG.old
Normal file
4
packs/plats-dauberges/LOG.old
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
2023/11/12-16:28:45.038839 7f4c31ffb6c0 Log #340: 0 ops saved to Table #341 OK
|
||||||
|
2023/11/12-16:28:45.039026 7f4c31ffb6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/plats-dauberges/000340.log: OK
|
||||||
|
2023/11/12-16:28:45.039821 7f4c31ffb6c0 Table #5: 234 entries OK
|
||||||
|
2023/11/12-16:28:45.045897 7f4c31ffb6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/plats-dauberges; recovered 1 files; 19449 bytes. Some data may have been lost. ****
|
BIN
packs/plats-dauberges/MANIFEST-000342
Normal file
BIN
packs/plats-dauberges/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/plats-dauberges/lost/000340.log
Normal file
0
packs/plats-dauberges/lost/000340.log
Normal file
BIN
packs/poisons-and-toxiques/000005.ldb
Normal file
BIN
packs/poisons-and-toxiques/000005.ldb
Normal file
Binary file not shown.
0
packs/poisons-and-toxiques/000270.log
Normal file
0
packs/poisons-and-toxiques/000270.log
Normal file
1
packs/poisons-and-toxiques/CURRENT
Normal file
1
packs/poisons-and-toxiques/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000268
|
0
packs/poisons-and-toxiques/LOCK
Normal file
0
packs/poisons-and-toxiques/LOCK
Normal file
8
packs/poisons-and-toxiques/LOG
Normal file
8
packs/poisons-and-toxiques/LOG
Normal 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)
|
8
packs/poisons-and-toxiques/LOG.old
Normal file
8
packs/poisons-and-toxiques/LOG.old
Normal 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)
|
BIN
packs/poisons-and-toxiques/MANIFEST-000268
Normal file
BIN
packs/poisons-and-toxiques/MANIFEST-000268
Normal file
Binary file not shown.
BIN
packs/potions-and-decoctions/000005.ldb
Normal file
BIN
packs/potions-and-decoctions/000005.ldb
Normal file
Binary file not shown.
0
packs/potions-and-decoctions/000270.log
Normal file
0
packs/potions-and-decoctions/000270.log
Normal file
1
packs/potions-and-decoctions/CURRENT
Normal file
1
packs/potions-and-decoctions/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000268
|
0
packs/potions-and-decoctions/LOCK
Normal file
0
packs/potions-and-decoctions/LOCK
Normal file
8
packs/potions-and-decoctions/LOG
Normal file
8
packs/potions-and-decoctions/LOG
Normal 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)
|
8
packs/potions-and-decoctions/LOG.old
Normal file
8
packs/potions-and-decoctions/LOG.old
Normal 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)
|
BIN
packs/potions-and-decoctions/MANIFEST-000268
Normal file
BIN
packs/potions-and-decoctions/MANIFEST-000268
Normal file
Binary file not shown.
BIN
packs/sort-fr/000005.ldb
Normal file
BIN
packs/sort-fr/000005.ldb
Normal file
Binary file not shown.
0
packs/sort-fr/000274.log
Normal file
0
packs/sort-fr/000274.log
Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user