Compare commits

..

17 Commits

169 changed files with 1654 additions and 834 deletions

View File

@ -1,11 +1,14 @@
# Système Foundry pour Wasteland (French RPG, Titam France/Sombres Projets)
Système Foundry pour Wasteland (French RPG, Titam France/Sombres Projets)
## EN ## EN
Unofficial system for Wasteland (French version from Titam France). Unofficial system for Wasteland (French RPG from Titam France).
Books are mandatory to play and are available at : http://www.titam-france.fr Books are mandatory to play and are available at : http://www.titam-france.fr
`![alt text](https://www.lahiette.com/leratierbretonnien/wp-content/uploads/2024/01/screenshot-wasteland-01.webp "Wasteland")`
## FR ## FR
Système non-officiel pour le JDR Wasteland (Titam France). Système non-officiel pour le JDR Wasteland (Titam France).
@ -16,8 +19,9 @@ Les livres du jeu sont nécessaires pour jouer, et sont disponibles ici : http:/
# Credits # Credits
Wasteland, le jeu de rôle de Sword & Sorcery, is a property of Titam France/Sombres Projets. Wasteland is a property of Titam France/Sombres Projets.
# Developmement # Developmement
LeRatierBretonnien Code, CSS and automations : LeRatierBretonnien
Compendiums : Pretre, LeRatierBretonnien

BIN
assets/icons/don.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
assets/icons/hubris.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

5
changelog.md Normal file
View File

@ -0,0 +1,5 @@
# 11.0.22
- Version initiale
-

View File

@ -1,24 +1,25 @@
{ {
"ACTOR": { "TYPES": {
"TypePersonnage": "Personnage", "Item": {
"TypePNJ": "PNJ" "arme": "Arme",
"competence": "Compétence",
"protection": "Protection",
"monnaie": "Monnaie",
"equipement": "Equipement",
"capacite": "Capacité",
"origine": "Origine",
"heritage": "Héritage",
"metier": "Métier",
"bouclier": "Bouclier",
"pouvoir": "Pouvoir",
"artifex": "Artifex",
"mutation": "Mutation",
"charme": "Charme",
"peuple": "Peuple"
}, },
"Actor": {
"ITEM": { "personnage": "Personnage",
"TypeArme": "Arme", "pnj": "PNJ"
"TypeCompetence": "Compétence", }
"TypeProtection": "Protection",
"TypeMonnaie": "Monnaie",
"TypeEquipement": "Equipement",
"TypeCapacite": "Capacité",
"TypeOrigine": "Origine",
"TypeHeritage": "Héritage",
"TypeMetier": "Métier",
"TypeBouclier": "Bouclier",
"TypePouvoir": "Pouvoir",
"TypeArtifex": "Artifex",
"TypeMutation": "Mutation",
"TypeCharme": "Charme",
"TypePeuple": "Peuple"
} }
} }

View File

@ -12,7 +12,7 @@ export class WastelandActorSheet extends ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["fvtt-wasteland", "sheet", "actor"], classes: ["fvtt-wasteland", "sheet", "actor"],
template: "systems/fvtt-wasteland/templates/actor-sheet.html", template: "systems/fvtt-wasteland/templates/actor-sheet.html",
width: 640, width: 640,
@ -25,7 +25,7 @@ export class WastelandActorSheet extends ActorSheet {
/* -------------------------------------------- */ /* -------------------------------------------- */
async getData() { async getData() {
const objectData = duplicate(this.object) const objectData = foundry.utils.duplicate(this.object)
let actorData = objectData let actorData = objectData
let formData = { let formData = {
@ -40,23 +40,32 @@ export class WastelandActorSheet extends ActorSheet {
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)), effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited, limited: this.object.limited,
skills: this.actor.getSkills(), skills: this.actor.getSkills(),
armes: duplicate(this.actor.getWeapons()), armes: foundry.utils.duplicate(this.actor.getWeapons()),
protections: duplicate(this.actor.getArmors()), protections: foundry.utils.duplicate(this.actor.getArmors()),
pouvoirs:duplicate(this.actor.getPouvoirs()), pouvoirs:foundry.utils.duplicate(this.actor.getPouvoirs()),
tours:duplicate(this.actor.getTours()), dons: foundry.utils.duplicate(this.actor.getDons()),
charmes:duplicate(this.actor.getCharmes()), hubrises: foundry.utils.duplicate(this.actor.getHubris()),
origine: duplicate(this.actor.getOrigine() || {}), tours:foundry.utils.duplicate(this.actor.getTours()),
heritage: duplicate(this.actor.getHeritage() || {}), artifex: foundry.utils.duplicate(this.actor.getArtifex()),
metier: duplicate(this.actor.getMetier() || {}), charmes:foundry.utils.duplicate(this.actor.getCharmes()),
peuple: foundry.utils.duplicate(this.actor.getPeuple() || {}),
origine: foundry.utils.duplicate(this.actor.getOrigine() || {}),
heritage: foundry.utils.duplicate(this.actor.getHeritage() || {}),
metier: foundry.utils.duplicate(this.actor.getMetier() || {}),
combat: this.actor.getCombatValues(), combat: this.actor.getCombatValues(),
config: duplicate(game.system.wasteland.config), config: foundry.utils.duplicate(game.system.wasteland.config),
equipements: duplicate(this.actor.getEquipments()), capacites: foundry.utils.duplicate(this.actor.getCapacites()),
monnaies: duplicate(this.actor.getMonnaies()), equipements: foundry.utils.duplicate(this.actor.getEquipments()),
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
mutations: foundry.utils.duplicate(this.actor.getMutations()),
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}), description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
comportement: await TextEditor.enrichHTML(this.object.system.biodata.comportement, {async: true}),
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
options: this.options, options: this.options,
owner: this.document.isOwner, owner: this.document.isOwner,
editScore: this.options.editScore, editScore: this.options.editScore,
isGM: game.user.isGM isGM: game.user.isGM,
config: game.system.wasteland.config
} }
this.formData = formData; this.formData = formData;

View File

@ -37,11 +37,12 @@ export class WastelandActor extends Actor {
return actor; return actor;
} }
if (data.type == 'personnage') {
const skills = await WastelandUtility.loadCompendium("fvtt-wasteland.skills") const skills = await WastelandUtility.loadCompendium("fvtt-wasteland.skills")
if (data.type == 'personnage') {
data.items = skills.map(i => i.toObject()) data.items = skills.map(i => i.toObject())
} }
if (data.type == 'pnj') { if (data.type == 'creature') {
data.items = skills.filter(i=>i.name.toLowerCase().includes("mêlée")).map(i => i.toObject())
} }
return super.create(data, options); return super.create(data, options);
@ -49,10 +50,10 @@ export class WastelandActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
prepareArme(arme) { prepareArme(arme) {
arme = duplicate(arme) arme = foundry.utils.duplicate(arme)
let combat = this.getCombatValues() let combat = this.getCombatValues()
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") { if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée")) arme.system.competence = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
arme.system.attrKey = "pui" arme.system.attrKey = "pui"
arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal
arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
@ -61,7 +62,7 @@ export class WastelandActor extends Actor {
} }
} }
if (arme.system.typearme == "jet" || arme.system.typearme == "tir") { if (arme.system.typearme == "jet" || arme.system.typearme == "tir") {
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance")) arme.system.competence = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
arme.system.attrKey = "adr" arme.system.attrKey = "adr"
arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
arme.system.totalDegats = arme.system.degats arme.system.totalDegats = arme.system.degats
@ -73,9 +74,9 @@ export class WastelandActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
prepareBouclier(bouclier) { prepareBouclier(bouclier) {
bouclier = duplicate(bouclier) bouclier = foundry.utils.duplicate(bouclier)
let combat = this.getCombatValues() let combat = this.getCombatValues()
bouclier.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée")) bouclier.system.competence = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
bouclier.system.attrKey = "pui" bouclier.system.attrKey = "pui"
bouclier.system.totalDegats = bouclier.system.degats + "+" + combat.bonusDegatsTotal bouclier.system.totalDegats = bouclier.system.degats + "+" + combat.bonusDegatsTotal
bouclier.system.totalOffensif = this.system.attributs.pui.value + bouclier.system.competence.system.niveau bouclier.system.totalOffensif = this.system.attributs.pui.value + bouclier.system.competence.system.niveau
@ -116,18 +117,36 @@ export class WastelandActor extends Actor {
WastelandUtility.sortArrayObjectsByName(items) WastelandUtility.sortArrayObjectsByName(items)
return items return items
} }
getArtifex() {
return this.getItemSorted(["artifex"])
}
getCapacites() {
return this.getItemSorted(["capacite"])
}
getPouvoirs() { getPouvoirs() {
return this.getItemSorted(["pouvoir"]) return this.getItemSorted(["pouvoir"])
} }
getDons() {
return this.getItemSorted(["don"])
}
getHubris() {
return this.getItemSorted(["hubris"])
}
getEquipments() { getEquipments() {
return this.getItemSorted(["equipement"]) return this.getItemSorted(["equipement"])
} }
getMonnaies() { getMonnaies() {
return this.getItemSorted(["monnaie"]) return this.getItemSorted(["monnaie"])
} }
getMutations() {
return this.getItemSorted(["mutation"])
}
getArmors() { getArmors() {
return this.getItemSorted(["protection"]) return this.getItemSorted(["protection"])
} }
getPeuple() {
return this.items.find(item => item.type == "peuple")
}
getOrigine() { getOrigine() {
return this.items.find(item => item.type == "origine") return this.items.find(item => item.type == "origine")
} }
@ -141,7 +160,7 @@ export class WastelandActor extends Actor {
getSkills() { getSkills() {
let comp = [] let comp = []
for (let item of this.items) { for (let item of this.items) {
item = duplicate(item) item = foundry.utils.duplicate(item)
if (item.type == "competence") { if (item.type == "competence") {
item.system.attribut1total = item.system.niveau + (this.system.attributs[item.system.attribut1]?.value || 0) item.system.attribut1total = item.system.niveau + (this.system.attributs[item.system.attribut1]?.value || 0)
item.system.attribut2total = item.system.niveau + (this.system.attributs[item.system.attribut2]?.value || 0) item.system.attribut2total = item.system.niveau + (this.system.attributs[item.system.attribut2]?.value || 0)
@ -203,7 +222,7 @@ export class WastelandActor extends Actor {
if (this.system.sante.base != newSante) { if (this.system.sante.base != newSante) {
this.update({ 'system.sante.base': newSante }) this.update({ 'system.sante.base': newSante })
} }
let newPsyche = (this.system.attributs.cla.value + this.system.attributs.tre.value) * this.system.biodata.psychemultiplier + 5 let newPsyche = ((this.system.attributs.cla.value + this.system.attributs.tre.value) * 2) + 5
if (this.system.psyche.fullmax != newPsyche) { if (this.system.psyche.fullmax != newPsyche) {
this.update({ 'system.psyche.fullmax': newPsyche }) this.update({ 'system.psyche.fullmax': newPsyche })
} }
@ -219,7 +238,7 @@ export class WastelandActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
incDecSante(value) { incDecSante(value) {
let sante = duplicate(this.system.sante) let sante = foundry.utils.duplicate(this.system.sante)
sante.letaux += value sante.letaux += value
this.update({ 'system.sante': sante }) this.update({ 'system.sante': sante })
} }
@ -227,7 +246,7 @@ export class WastelandActor extends Actor {
getItemById(id) { getItemById(id) {
let item = this.items.find(item => item.id == id); let item = this.items.find(item => item.id == id);
if (item) { if (item) {
item = duplicate(item) item = foundry.utils.duplicate(item)
} }
return item; return item;
} }
@ -282,7 +301,7 @@ export class WastelandActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
subPointsPsyche(value) { subPointsPsyche(value) {
let psyche = duplicate(this.system.psyche) let psyche = foundry.utils.duplicate(this.system.psyche)
psyche.currentmax -= value psyche.currentmax -= value
this.update( {'system.psyche': psyche}) this.update( {'system.psyche': psyche})
} }
@ -321,13 +340,13 @@ export class WastelandActor extends Actor {
getSubActors() { getSubActors() {
let subActors = []; let subActors = [];
for (let id of this.system.subactors) { for (let id of this.system.subactors) {
subActors.push(duplicate(game.actors.get(id))); subActors.push(foundry.utils.duplicate(game.actors.get(id)));
} }
return subActors; return subActors;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async addSubActor(subActorId) { async addSubActor(subActorId) {
let subActors = duplicate(this.system.subactors); let subActors = foundry.utils.duplicate(this.system.subactors);
subActors.push(subActorId); subActors.push(subActorId);
await this.update({ 'system.subactors': subActors }); await this.update({ 'system.subactors': subActors });
} }
@ -358,7 +377,7 @@ export class WastelandActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async setPredilectionUsed(compId, predIdx) { async setPredilectionUsed(compId, predIdx) {
let comp = this.items.get(compId) let comp = this.items.get(compId)
let pred = duplicate(comp.system.predilections) let pred = foundry.utils.duplicate(comp.system.predilections)
pred[predIdx].used = true pred[predIdx].used = true
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }]) await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }])
} }
@ -381,7 +400,7 @@ export class WastelandActor extends Actor {
} }
if ( arme.system.totalDefensif > maxDef) { if ( arme.system.totalDefensif > maxDef) {
maxDef = arme.system.totalDefensif maxDef = arme.system.totalDefensif
bestArme = duplicate(arme) bestArme = foundry.utils.duplicate(arme)
} }
} }
return bestArme return bestArme
@ -398,68 +417,66 @@ export class WastelandActor extends Actor {
rollData.canEclatDoubleD20 = true // Always true in Wastelan rollData.canEclatDoubleD20 = true // Always true in Wastelan
rollData.doubleD20 = false rollData.doubleD20 = false
rollData.attributs = WastelandUtility.getAttributs() rollData.attributs = WastelandUtility.getAttributs()
rollData.config = duplicate(game.system.wasteland.config) rollData.config = foundry.utils.duplicate(game.system.wasteland.config)
if (attrKey) { if (attrKey) {
rollData.attrKey = attrKey rollData.attrKey = attrKey
if (attrKey != "tochoose") { if (attrKey != "tochoose") {
rollData.actionImg = "systems/fvtt-wasteland/assets/icons/" + this.system.attributs[attrKey].labelnorm + ".webp" rollData.actionImg = "systems/fvtt-wasteland/assets/icons/" + this.system.attributs[attrKey].labelnorm + ".webp"
rollData.attr = duplicate(this.system.attributs[attrKey]) rollData.attr = foundry.utils.duplicate(this.system.attributs[attrKey])
} }
} }
if (compId) { if (compId) {
rollData.competence = duplicate(this.items.get(compId) || {}) rollData.competence = foundry.utils.duplicate(this.items.get(compId) || {})
rollData.actionImg = rollData.competence?.img rollData.actionImg = rollData.competence?.img
} }
if (compName) { if (compName) {
rollData.competence = duplicate(this.items.find( item => item.name.toLowerCase() == compName.toLowerCase()) || {}) rollData.competence = foundry.utils.duplicate(this.items.find( item => item.name.toLowerCase() == compName.toLowerCase()) || {})
rollData.actionImg = rollData.competence?.img rollData.actionImg = rollData.competence?.img
} }
return rollData return rollData
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollAttribut(attrKey) { async launchRoll(rollData) {
let rollData = this.getCommonRollData(attrKey) console.log("RollData", rollData)
let rollDialog = await WastelandRollDialog.create(this, rollData) let rollDialog = await WastelandRollDialog.create(this, rollData)
rollDialog.render(true) rollDialog.render(true)
} }
/* -------------------------------------------- */
rollAttribut(attrKey) {
let rollData = this.getCommonRollData(attrKey)
this.launchRoll(rollData)
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollCompetence(attrKey, compId) { rollCompetence(attrKey, compId) {
let rollData = this.getCommonRollData(attrKey, compId) let rollData = this.getCommonRollData(attrKey, compId)
console.log("RollDatra", rollData) console.log("RollDatra", rollData)
let rollDialog = await WastelandRollDialog.create(this, rollData) this.launchRoll(rollData)
rollDialog.render(true)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollCharme(charmeId) { async rollCharme(charmeId) {
let rollData = this.getCommonRollData("cla") let rollData = this.getCommonRollData("cla")
rollData.charme = duplicate(this.items.get(charmeId) || {}) rollData.charme = foundry.utils.duplicate(this.items.get(charmeId) || {})
rollData.charmeDice = "1d4" rollData.charmeDice = "1d4"
console.log("RollDatra", rollData) this.launchRoll(rollData)
let rollDialog = await WastelandRollDialog.create(this, rollData)
rollDialog.render(true)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollPouvoir(pouvoirId) { async rollPouvoir(pouvoirId) {
let comp = this.items.find(comp => comp.type == "competence" && comp.name.toLowerCase() == "savoir : runes") let pouvoir = foundry.utils.duplicate(this.items.get(pouvoirId) || {})
if ( !comp) { if (pouvoir?.system) {
ui.notifications.warn("La compétence Savoirs : Runes n'a pas été trouvée, abandon.") let rollData = this.getCommonRollData(pouvoir.system.attribut, undefined, pouvoir.system.competence)
if (!rollData.competence) {
ui.notifications.error("Le pouvoir " + pouvoir.name + " n'a pas de compétence associée. Editez le pouvoir avec la compétence associée.")
return return
} }
let rollData = this.getCommonRollData("cla", undefined, "Savoir : Runes") rollData.pouvoir = pouvoir
rollData.rune = duplicate(this.items.get(runeId) || {}) rollData.difficulte = pouvoir.system.seuil
rollData.difficulte = rollData.rune?.system?.seuil || 0 this.launchRoll(rollData)
rollData.runemode = "prononcer" }
rollData.runeame = 1
console.log("runeData", rollData)
let rollDialog = await WastelandRollDialog.create(this, rollData)
rollDialog.render(true)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollArmeOffensif(armeId) { async rollArmeOffensif(armeId) {
let arme = this.items.get(armeId) let arme = this.items.get(armeId)
@ -471,9 +488,7 @@ export class WastelandActor extends Actor {
} }
let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id) let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id)
rollData.arme = arme rollData.arme = arme
console.log("ARME!", rollData) this.launchRoll(rollData)
let rollDialog = await WastelandRollDialog.create(this, rollData)
rollDialog.render(true)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -485,7 +500,7 @@ export class WastelandActor extends Actor {
if (arme.type == "bouclier") { if (arme.type == "bouclier") {
arme = this.prepareBouclier(arme) arme = this.prepareBouclier(arme)
} }
let roll = new Roll(arme.system.totalDegats).roll({ async: false }) let roll = await new Roll(arme.system.totalDegats).roll()
await WastelandUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode")); await WastelandUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
let rollData = { let rollData = {
arme: arme, arme: arme,

View File

@ -10,7 +10,7 @@ export class WastelandCombat extends Combat {
const c = this.combatants.get(ids[cId]); const c = this.combatants.get(ids[cId]);
let id = c._id || c.id; let id = c._id || c.id;
let initBonus = c.actor ? c.actor.getInitiativeScore() : 0 let initBonus = c.actor ? c.actor.getInitiativeScore() : 0
let roll = new Roll("1d10 + "+initBonus).roll({ async: false}) let roll = await new Roll("1d10 + "+initBonus).roll()
await WastelandUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode")) await WastelandUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"))
//console.log("Init bonus", initBonus, roll.total) //console.log("Init bonus", initBonus, roll.total)
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: roll.total } ]); await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: roll.total } ]);

View File

@ -6,7 +6,17 @@ export const WASTELAND_CONFIG = {
"echo": "Chemin des Échos", "echo": "Chemin des Échos",
"reflet": "Chemin des Reflets", "reflet": "Chemin des Reflets",
"ame": "Chemin des Âmes", "ame": "Chemin des Âmes",
"mort": "Chemin des Morts" "mort": "Chemin des Morts",
"vie": "Chemin de Vie",
"guerre": "Chemin des guerres",
"horizon": "Chemin vers l'horizon",
"voleurinvisible": "Chemin du Voleur invisible",
"nuit": "Chemin des Nuits",
"oiseaux": "Chemin des Oiseaux"
},
hubrisType: {
"mental": "Mental",
"physique": "Physique",
}, },
charmetype: { charmetype: {
tour: "Tour", tour: "Tour",
@ -20,4 +30,28 @@ export const WASTELAND_CONFIG = {
"1d12": "1d12", "1d12": "1d12",
"1d20": "1d20", "1d20": "1d20",
}, },
artifexType: {
"vapeur": "Vapeur",
"mecanique": "Mécanique",
"chimie": "Chimie",
"electricite": "Électricité",
"chimerie": "Chimérie",
},
typeArmeOptions: {
contact: "Arme de contact",
contactjet: "Arme de contact et de Jet",
jet: "Arme de Jet",
tir: "Arme de Tir",
special: "Spécial (capacité/don)"
},
difficulteOptions: {
"0": "Aucune/Inconnue",
"5": "Facile (5)",
"10": "Moyenne (10)",
"15": "Ardue (15)",
"20": "Hasardeuse (20)",
"25": "Insensée (25)",
"30": "Pure Folie (30)"
}
} }

View File

@ -0,0 +1,26 @@
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
import { WastelandUtility } from "./wasteland-utility.js";
import { WastelandActorSheet } from "./wasteland-actor-sheet.js";
/* -------------------------------------------- */
export class WastelandCreatureSheet extends WastelandActorSheet {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["fvtt-wasteland", "sheet", "creature"],
template: "systems/fvtt-wasteland/templates/creature-sheet.html",
width: 640,
height: 720,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: false
});
}
}

View File

@ -9,7 +9,7 @@ export class WastelandItemSheet extends ItemSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["fvtt-wasteland", "sheet", "item"], classes: ["fvtt-wasteland", "sheet", "item"],
template: "systems/fvtt-wasteland/templates/item-sheet.html", template: "systems/fvtt-wasteland/templates/item-sheet.html",
dragDrop: [{ dragSelector: null, dropSelector: null }], dragDrop: [{ dragSelector: null, dropSelector: null }],
@ -48,7 +48,7 @@ export class WastelandItemSheet extends ItemSheet {
/* -------------------------------------------- */ /* -------------------------------------------- */
async getData() { async getData() {
const objectData = duplicate(this.object) const objectData = foundry.utils.duplicate(this.object)
let itemData = objectData let itemData = objectData
let formData = { let formData = {
title: this.title, title: this.title,
@ -59,7 +59,7 @@ export class WastelandItemSheet extends ItemSheet {
editable: this.isEditable, editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked", cssClass: this.isEditable ? "editable" : "locked",
attributs: WastelandUtility.getAttributs(), attributs: WastelandUtility.getAttributs(),
config: duplicate(game.system.wasteland.config), config: foundry.utils.duplicate(game.system.wasteland.config),
data: itemData.system, data: itemData.system,
system: itemData.system, system: itemData.system,
limited: this.object.limited, limited: this.object.limited,
@ -87,7 +87,7 @@ export class WastelandItemSheet extends ItemSheet {
/* -------------------------------------------- */ /* -------------------------------------------- */
postItem() { postItem() {
let chatData = duplicate(WastelandUtility.data(this.item)); let chatData = foundry.utils.duplicate(WastelandUtility.data(this.item));
if (this.actor) { if (this.actor) {
chatData.actor = { id: this.actor.id }; chatData.actor = { id: this.actor.id };
} }
@ -130,26 +130,26 @@ export class WastelandItemSheet extends ItemSheet {
html.find('.edit-prediction').change(ev => { html.find('.edit-prediction').change(ev => {
const li = $(ev.currentTarget).parents(".prediction-item") const li = $(ev.currentTarget).parents(".prediction-item")
let index = li.data("prediction-index") let index = li.data("prediction-index")
let pred = duplicate(this.object.system.predilections) let pred = foundry.utils.duplicate(this.object.system.predilections)
pred[index].name = ev.currentTarget.value pred[index].name = ev.currentTarget.value
this.object.update( { 'data.predilections': pred }) this.object.update( { 'data.predilections': pred })
}) })
html.find('.delete-prediction').click(ev => { html.find('.delete-prediction').click(ev => {
const li = $(ev.currentTarget).parents(".prediction-item") const li = $(ev.currentTarget).parents(".prediction-item")
let index = li.data("prediction-index") let index = li.data("prediction-index")
let pred = duplicate(this.object.system.predilections) let pred = foundry.utils.duplicate(this.object.system.predilections)
pred.splice(index,1) pred.splice(index,1)
this.object.update( { 'data.predilections': pred }) this.object.update( { 'data.predilections': pred })
}) })
html.find('.use-prediction').change(ev => { html.find('.use-prediction').change(ev => {
const li = $(ev.currentTarget).parents(".prediction-item") const li = $(ev.currentTarget).parents(".prediction-item")
let index = li.data("prediction-index") let index = li.data("prediction-index")
let pred = duplicate(this.object.system.predilections) let pred = foundry.utils.duplicate(this.object.system.predilections)
pred[index].used = ev.currentTarget.checked pred[index].used = ev.currentTarget.checked
this.object.update( { 'data.predilections': pred }) this.object.update( { 'data.predilections': pred })
}) })
html.find('#add-predilection').click(ev => { html.find('#add-predilection').click(ev => {
let pred = duplicate(this.object.system.predilections) let pred = foundry.utils.duplicate(this.object.system.predilections)
pred.push( { name: "Nouvelle prédilection", used: false }) pred.push( { name: "Nouvelle prédilection", used: false })
this.object.update( { 'data.predilections': pred }) this.object.update( { 'data.predilections': pred })
}) })

View File

@ -16,6 +16,9 @@ export const defaultItemImg = {
artifex: "systems/fvtt-wasteland/assets/icons/artifact.webp", artifex: "systems/fvtt-wasteland/assets/icons/artifact.webp",
heritage: "systems/fvtt-wasteland/assets/icons/legacy.webp", heritage: "systems/fvtt-wasteland/assets/icons/legacy.webp",
charme: "systems/fvtt-wasteland/assets/icons/charm.webp", charme: "systems/fvtt-wasteland/assets/icons/charm.webp",
peuple: "systems/fvtt-wasteland/assets/icons/people.webp",
don: "systems/fvtt-wasteland/assets/icons/don.webp",
hubris: "systems/fvtt-wasteland/assets/icons/hubris.webp",
} }
/** /**

View File

@ -11,7 +11,7 @@
import { WastelandActor } from "./wasteland-actor.js"; import { WastelandActor } from "./wasteland-actor.js";
import { WastelandItemSheet } from "./wasteland-item-sheet.js"; import { WastelandItemSheet } from "./wasteland-item-sheet.js";
import { WastelandActorSheet } from "./wasteland-actor-sheet.js"; import { WastelandActorSheet } from "./wasteland-actor-sheet.js";
//import { WastelandNPCSheet } from "./wasteland-npc-sheet.js"; import { WastelandCreatureSheet } from "./wasteland-creature-sheet.js";
import { WastelandUtility } from "./wasteland-utility.js"; import { WastelandUtility } from "./wasteland-utility.js";
import { WastelandCombat } from "./wasteland-combat.js"; import { WastelandCombat } from "./wasteland-combat.js";
import { WastelandItem } from "./wasteland-item.js"; import { WastelandItem } from "./wasteland-item.js";
@ -54,7 +54,7 @@ Hooks.once("init", async function () {
// Register sheet application classes // Register sheet application classes
Actors.unregisterSheet("core", ActorSheet); Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("fvtt-wasteland", WastelandActorSheet, { types: ["personnage"], makeDefault: true }) Actors.registerSheet("fvtt-wasteland", WastelandActorSheet, { types: ["personnage"], makeDefault: true })
//Actors.registerSheet("fvtt-wasteland", WastelandNPCSheet, { types: ["npc"], makeDefault: false }); Actors.registerSheet("fvtt-wasteland", WastelandCreatureSheet, { types: ["creature"], makeDefault: false });
Items.unregisterSheet("core", ItemSheet); Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-wasteland", WastelandItemSheet, { makeDefault: true }) Items.registerSheet("fvtt-wasteland", WastelandItemSheet, { makeDefault: true })
@ -69,36 +69,22 @@ function welcomeMessage() {
user: game.user.id, user: game.user.id,
whisper: [game.user.id], whisper: [game.user.id],
content: `<div id="welcome-message-Wasteland"><span class="rdd-roll-part"> content: `<div id="welcome-message-Wasteland"><span class="rdd-roll-part">
<strong>Bienvenue dans les Jeunes Royaumes de Wasteland !</strong> <strong>Bienvenue dans les Wasteland !</strong>
<p>Les livres de Wasteland sont nécessaires pour jouer : https://www.titam-france.fr</p> <p>Les livres de Wasteland sont nécessaires pour jouer : https://www.titam-france.fr</p>
<p>Wasteland est jeu de rôle publié par Titam France/Sombres projets, tout les droits leur appartiennent.</p> <p>Wasteland est jeu de rôle publié par Titam France/Sombres projets, tout les droits leur appartiennent.</p>
<p>Système développé par LeRatierBretonnien, support sur le <a href="https://discord.gg/pPSDNJk">Discord FR de Foundry</a>.</p> <p>Système développé par LeRatierBretonnien, avec le support de Prêtre. Plus d'infos et aides sur le <a href="https://discord.gg/pPSDNJk">Discord FR de Foundry</a>.</p>
` }); ` });
} }
/* -------------------------------------------- */
// Register world usage statistics
function registerUsageCount( registerKey ) {
if ( game.user.isGM ) {
game.settings.register(registerKey, "world-key", {
name: "Unique world key",
scope: "world",
config: false,
default: "",
type: String
});
let worldKey = game.settings.get(registerKey, "world-key") /* -------------------------------------------- */
if ( worldKey == undefined || worldKey == "" ) { async function importDefaultScene() {
worldKey = randomID(32) let exists = game.scenes.find(j => j.name == "Accueil");
game.settings.set(registerKey, "world-key", worldKey ) if (!exists) {
} const scenes = await WastelandUtility.loadCompendium("fvtt-wasteland.scenes")
// Simple API counter let newDocuments = scenes.filter(i => i.name == "Accueil");
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"` await game.scenes.documentClass.create(newDocuments);
//$.ajaxSetup({ game.scenes.find(i => i.name == "Accueil").activate();
//headers: { 'Access-Control-Allow-Origin': '*' }
//})
$.ajax(regURL)
} }
} }
@ -108,6 +94,7 @@ function registerUsageCount( registerKey ) {
Hooks.once("ready", function () { Hooks.once("ready", function () {
WastelandUtility.ready(); WastelandUtility.ready();
// User warning // User warning
if (!game.user.isGM && game.user.character == undefined) { if (!game.user.isGM && game.user.character == undefined) {
ui.notifications.info("Attention ! Aucun personnage n'est relié au joueur !"); ui.notifications.info("Attention ! Aucun personnage n'est relié au joueur !");
@ -116,9 +103,24 @@ Hooks.once("ready", function () {
user: game.user._id user: game.user._id
}); });
} }
if (!game.user.isGM && game.user.character && !game.user.character.prototypeToken.actorLink) {
ui.notifications.info("Le token de du joueur n'est pas connecté à l'acteur !");
ChatMessage.create({
content: "<b>ATTENTION</b> Le token du joueur " + game.user.name + " n'est pas connecté à l'acteur !",
user: game.user._id
});
}
registerUsageCount('fvtt-wasteland') import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{
console.log("ClassCounter loaded", moduleCounter)
moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=>
console.log("No stats available, giving up.")
)
welcomeMessage(); welcomeMessage();
importDefaultScene();
}); });
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -4,16 +4,16 @@ import { WastelandCommands } from "./wasteland-commands.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
const __contrecouptCharme = { const __contrecouptCharme = {
1 : {name: "Effet chromatique", description: "" }, 1 : {name: "Effet chromatique", description: "le corps du kobold prend des teintes aussi étranges que voyantes. L'effet sestompe progressivement et 24 heures plus tard, le kobold retrouve ses couleurs dorigine." },
3 : {name: "Enivrement Kobold", description: "" }, 3 : {name: "Enivrement Kobold", description: "très excité par son premier tour, le kobold doit immédiatement faire un autre tour, pour lequel il emploiera un dé plus gros." },
5 : {name: "Mutisme superstitieux", description: "" }, 5 : {name: "Mutisme superstitieux", description: "le kobold ne doit plus parler» pendant les prochaines 24 heures. S'il le fait malgré tout, les effets de son tour sarrêtent." },
7 : {name: "Agité!", description: "" }, 7 : {name: "Agité!", description: "le kobold ne tient plus en place. Il ne peut se reposer pendant les prochaines 12 heures. Dès. que 12 heures se sont écoulées, il s'effondre comme une masse et dort 12 heures d'affilée dun sommeil enchanté dont rien ne pourra le réveiller." },
9 : {name: "Somnolence", description: "" }, 9 : {name: "Somnolence", description: "le kobold devient somnolent. Il narrive pas à se concentrer même sur une tâche simple, bäille sans arrêt, traîne les pieds et nagit plus que de mauvaise grâce. Cela dure jusquà ce qu'il ait dormi au moins 12 heures." },
11 : {name: "Manie incontrôlable", description: "" }, 11 : {name: "Manie incontrôlable", description: "le kobold est pris dune manie incontrôlable. Dès qu'il voit un chapeau rouge, il doit suivre son porteur. Il ne mangera que si son voisin de gauche mange aussi, etc. Cela dure pendant une jour- née puis leffet sinverse pendant une heure : il ne suivra jamais un chapeau rouge, ne mangera jamais si son voi- sin de gauche mange, etc. Le contrecoup prend alors fin." },
13 : {name: "Malédiction des Ternes", description: "" }, 13 : {name: "Malédiction des Ternes", description: "le kobold perd cette qualité mystérieuse qui fait que les kobolds sont des kobolds et devient tout. Terne. Il perd 1d20 point(s) de Bonne Aventure (sil doit en perdre plus qu'il nen a, il tombe simplement à 0). Ces points perdus pourront cependant être regagnés normalement." },
15 : {name: "La petite Mort", description: "" }, 15 : {name: "La petite Mort", description: "le kobold s'endort pour 1420 heures. Rien ni personne ne pourra le tirer de ce sommeil enchanté avant que ce contrecoup ne prenne fin." },
17 : {name: "Angoisse cauchemardesque", description: "" }, 17 : {name: "Angoisse cauchemardesque", description: "le kobold a une brève vision de pure horreur. Il perd 1420 points de Psyché {s'il doit en perdre plus qu'il nen a, il tombe à 0)." },
19 : {name: "Anémie Kobold", description: "" } 19 : {name: "Anémie Kobold", description: "le kobold se met à saigner du nez, des oreilles et même dautres endroits. Il perd 1420 point(s) de Santé." }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -114,6 +114,28 @@ export class WastelandUtility {
static async ready() { static async ready() {
const skills = await WastelandUtility.loadCompendium("fvtt-wasteland.skills") const skills = await WastelandUtility.loadCompendium("fvtt-wasteland.skills")
this.skills = skills.map(i => i.toObject()) this.skills = skills.map(i => i.toObject())
game.system.wasteland.config.listeNiveauSkill = WastelandUtility.createDirectOptionList(0, 10)
game.system.wasteland.config.listeNiveauCreature = WastelandUtility.createDirectOptionList(0, 35)
game.system.wasteland.config.modificateurOptions = WastelandUtility.createArrayOptionList(-15, 15)
game.system.wasteland.config.pointsAmeOptions = WastelandUtility.createDirectOptionList(0, 20)
}
/* -------------------------------------------- */
static createDirectOptionList(min, max) {
let options = {};
for (let i = min; i <= max; i++) {
options[`${i}`] = `${i}`;
}
return options;
}
static createArrayOptionList(min, max) {
let options = [];
for (let i = min; i <= max; i++) {
options.push({key:`${i}`, label:`${i}`});
}
return options;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -142,7 +164,7 @@ export class WastelandUtility {
let rollData = message.getFlag("world", "wasteland-roll") let rollData = message.getFlag("world", "wasteland-roll")
let actor = WastelandUtility.getActorFromRollData(rollData) let actor = WastelandUtility.getActorFromRollData(rollData)
await actor.setPredilectionUsed(rollData.competence._id, predIdx) await actor.setPredilectionUsed(rollData.competence._id, predIdx)
rollData.competence = duplicate(actor.getCompetence(rollData.competence._id)) rollData.competence = foundry.utils.duplicate(actor.getCompetence(rollData.competence._id))
await WastelandUtility.rollWasteland(rollData) await WastelandUtility.rollWasteland(rollData)
}) })
} }
@ -152,8 +174,7 @@ export class WastelandUtility {
const templatePaths = [ const templatePaths = [
'systems/fvtt-wasteland/templates/editor-notes-gm.html', 'systems/fvtt-wasteland/templates/editor-notes-gm.html',
'systems/fvtt-wasteland/templates/partial-item-description.html', 'systems/fvtt-wasteland/templates/partial-item-description.html'
'systems/fvtt-wasteland/templates/partial-list-niveau.html'
] ]
return loadTemplates(templatePaths); return loadTemplates(templatePaths);
} }
@ -187,15 +208,6 @@ export class WastelandUtility {
return undefined; return undefined;
} }
/* -------------------------------------------- */
static createDirectOptionList(min, max) {
let options = {};
for (let i = min; i <= max; i++) {
options[`${i}`] = `${i}`;
}
return options;
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static buildListOptions(min, max) { static buildListOptions(min, max) {
let options = "" let options = ""
@ -220,7 +232,7 @@ export class WastelandUtility {
let id = rollData.rollId; let id = rollData.rollId;
let oldRollData = this.rollDataStore[id] || {}; let oldRollData = this.rollDataStore[id] || {};
let newRollData = mergeObject(oldRollData, rollData); let newRollData = foundry.utils.mergeObject(oldRollData, rollData);
this.rollDataStore[id] = newRollData; this.rollDataStore[id] = newRollData;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -292,10 +304,10 @@ export class WastelandUtility {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static computeResult(rollData, actor) { static async computeResult(rollData, actor) {
if (rollData.charme) { if (rollData.charme) {
let resultIndex = false let resultIndex = false
let resTab = duplicate(rollData.charme.system.resultats) let resTab = foundry.utils.duplicate(rollData.charme.system.resultats)
for(let id in resTab) { for(let id in resTab) {
let res = resTab[id] let res = resTab[id]
if (!resultIndex && rollData.finalResult >= res.value) { if (!resultIndex && rollData.finalResult >= res.value) {
@ -305,7 +317,7 @@ export class WastelandUtility {
if (resultIndex) { if (resultIndex) {
rollData.charmeDuree = rollData.charme.system.resultats[resultIndex].description rollData.charmeDuree = rollData.charme.system.resultats[resultIndex].description
} }
let effectRoll = new Roll(rollData.charmeDice).roll({ async: false }) let effectRoll = await new Roll(rollData.charmeDice).roll()
if (rollData.charme.system.charmetype == "tour") { if (rollData.charme.system.charmetype == "tour") {
rollData.contrecoupResult = effectRoll.total rollData.contrecoupResult = effectRoll.total
if (rollData.contrecoupResult % 2 == 1) { if (rollData.contrecoupResult % 2 == 1) {
@ -349,7 +361,7 @@ export class WastelandUtility {
} }
if (!rollData.attr) { if (!rollData.attr) {
rollData.actionImg = "systems/fvtt-wasteland/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp" rollData.actionImg = "systems/fvtt-wasteland/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
rollData.attr = duplicate(actor.system.attributs[rollData.attrKey]) rollData.attr = foundry.utils.duplicate(actor.system.attributs[rollData.attrKey])
} }
if (rollData.charme) { if (rollData.charme) {
@ -366,7 +378,7 @@ export class WastelandUtility {
//console.log("BEFORE COMP", rollData) //console.log("BEFORE COMP", rollData)
if (rollData.competence) { if (rollData.competence) {
rollData.predilections = duplicate(rollData.competence.system.predilections.filter(pred => !pred.used) || []) rollData.predilections = foundry.utils.duplicate(rollData.competence.system.predilections.filter(pred => !pred.used) || [])
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0 let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.system.niveau}+${rollData.modificateur}+${compmod}` rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.system.niveau}+${rollData.modificateur}+${compmod}`
} else { } else {
@ -376,14 +388,14 @@ export class WastelandUtility {
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}` rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
} }
let myRoll = new Roll(rollData.diceFormula).roll({ async: false }) let myRoll = await new Roll(rollData.diceFormula).roll()
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = duplicate(myRoll) rollData.roll = foundry.utils.duplicate(myRoll)
rollData.diceResult = myRoll.terms[0].results[0].result rollData.diceResult = myRoll.terms[0].results[0].result
console.log(">>>> ", myRoll) console.log(">>>> ", myRoll)
rollData.finalResult = myRoll.total rollData.finalResult = myRoll.total
this.computeResult(rollData, actor) await this.computeResult(rollData, actor)
this.createChatWithRollMode(rollData.alias, { this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-wasteland/templates/chat-generic-result.html`, rollData) content: await renderTemplate(`systems/fvtt-wasteland/templates/chat-generic-result.html`, rollData)
@ -395,13 +407,13 @@ export class WastelandUtility {
static async bonusRollWasteland(rollData) { static async bonusRollWasteland(rollData) {
rollData.bonusFormula = rollData.addedBonus rollData.bonusFormula = rollData.addedBonus
let bonusRoll = new Roll(rollData.bonusFormula).roll({ async: false }) let bonusRoll = await new Roll(rollData.bonusFormula).roll()
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode")); await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
rollData.bonusRoll = duplicate(bonusRoll) rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
rollData.finalResult += rollData.bonusRoll.total rollData.finalResult += rollData.bonusRoll.total
this.computeResult(rollData) await this.computeResult(rollData)
this.createChatWithRollMode(rollData.alias, { this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-wasteland/templates/chat-generic-result.html`, rollData) content: await renderTemplate(`systems/fvtt-wasteland/templates/chat-generic-result.html`, rollData)
@ -431,7 +443,7 @@ export class WastelandUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static blindMessageToGM(chatOptions) { static blindMessageToGM(chatOptions) {
let chatGM = duplicate(chatOptions); let chatGM = foundry.utils.duplicate(chatOptions);
chatGM.whisper = this.getUsers(user => user.isGM); chatGM.whisper = this.getUsers(user => user.isGM);
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content; chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
console.log("blindMessageToGM", chatGM); console.log("blindMessageToGM", chatGM);
@ -493,7 +505,7 @@ export class WastelandUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static getBasicRollData() { static getBasicRollData() {
let rollData = { let rollData = {
rollId: randomID(16), rollId: foundry.utils.randomID(16),
rollMode: game.settings.get("core", "rollMode"), rollMode: game.settings.get("core", "rollMode"),
modificateursOptions: this.getModificateurOptions(), modificateursOptions: this.getModificateurOptions(),
pointAmeOptions: this.getPointAmeOptions(), pointAmeOptions: this.getPointAmeOptions(),

Binary file not shown.

BIN
packs/armes/000170.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000038 MANIFEST-000171

View File

@ -1,8 +1,8 @@
2023/11/29-22:11:25.434763 7fef57fff6c0 Recovering log #36 2024/05/23-11:36:26.361119 7f80456006c0 Recovering log #168
2023/11/29-22:11:25.445038 7fef57fff6c0 Delete type=3 #34 2024/05/23-11:36:26.371702 7f80456006c0 Delete type=3 #166
2023/11/29-22:11:25.445125 7fef57fff6c0 Delete type=0 #36 2024/05/23-11:36:26.371759 7f80456006c0 Delete type=0 #168
2023/11/29-22:14:16.953175 7fef56ffd6c0 Level-0 table #41: started 2024/05/23-11:38:27.058615 7f803fe006c0 Level-0 table #174: started
2023/11/29-22:14:16.953201 7fef56ffd6c0 Level-0 table #41: 0 bytes OK 2024/05/23-11:38:27.058646 7f803fe006c0 Level-0 table #174: 0 bytes OK
2023/11/29-22:14:16.991886 7fef56ffd6c0 Delete type=0 #39 2024/05/23-11:38:27.093797 7f803fe006c0 Delete type=0 #172
2023/11/29-22:14:17.106517 7fef56ffd6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) 2024/05/23-11:38:27.127595 7f803fe006c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/11/29-22:14:17.106560 7fef56ffd6c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) 2024/05/23-11:38:27.127630 7f803fe006c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2023/11/29-20:50:20.610722 7ff1ecbfe6c0 Recovering log #32 2024/05/23-11:35:06.400918 7f80456006c0 Recovering log #164
2023/11/29-20:50:20.620538 7ff1ecbfe6c0 Delete type=3 #30 2024/05/23-11:35:06.459624 7f80456006c0 Delete type=3 #162
2023/11/29-20:50:20.620594 7ff1ecbfe6c0 Delete type=0 #32 2024/05/23-11:35:06.459697 7f80456006c0 Delete type=0 #164
2023/11/29-22:03:29.595804 7fef56ffd6c0 Level-0 table #37: started 2024/05/23-11:35:52.325511 7f803fe006c0 Level-0 table #169: started
2023/11/29-22:03:29.595831 7fef56ffd6c0 Level-0 table #37: 0 bytes OK 2024/05/23-11:35:52.328985 7f803fe006c0 Level-0 table #169: 9019 bytes OK
2023/11/29-22:03:29.601970 7fef56ffd6c0 Delete type=0 #35 2024/05/23-11:35:52.335531 7f803fe006c0 Delete type=0 #167
2023/11/29-22:03:29.602116 7fef56ffd6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.356802 7f803fe006c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/11/29-22:03:29.602150 7fef56ffd6c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.367167 7f803fe006c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at '!items!wv5EiePmPTpqFutt' @ 158 : 1
2024/05/23-11:35:52.367178 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.370637 7f803fe006c0 Generated table #170@1: 40 keys, 9019 bytes
2024/05/23-11:35:52.370658 7f803fe006c0 Compacted 1@1 + 1@2 files => 9019 bytes
2024/05/23-11:35:52.376833 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.376889 7f803fe006c0 Delete type=2 #161
2024/05/23-11:35:52.376979 7f803fe006c0 Delete type=2 #169
2024/05/23-11:35:52.397741 7f803fe006c0 Manual compaction at level-1 from '!items!wv5EiePmPTpqFutt' @ 158 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/armes/MANIFEST-000171 Normal file

Binary file not shown.

BIN
packs/artifex/000031.ldb Normal file

Binary file not shown.

1
packs/artifex/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000032

8
packs/artifex/LOG Normal file
View File

@ -0,0 +1,8 @@
2024/05/23-11:36:26.402766 7f8046a006c0 Recovering log #29
2024/05/23-11:36:26.414036 7f8046a006c0 Delete type=3 #27
2024/05/23-11:36:26.414100 7f8046a006c0 Delete type=0 #29
2024/05/23-11:38:26.981582 7f803fe006c0 Level-0 table #35: started
2024/05/23-11:38:26.981632 7f803fe006c0 Level-0 table #35: 0 bytes OK
2024/05/23-11:38:27.023703 7f803fe006c0 Delete type=0 #33
2024/05/23-11:38:27.127575 7f803fe006c0 Manual compaction at level-0 from '!items!PqP7BWEkK7aK65yH' @ 72057594037927935 : 1 .. '!items!irEA0eyE731viEYl' @ 0 : 0; will stop at (end)
2024/05/23-11:38:27.127615 7f803fe006c0 Manual compaction at level-1 from '!items!PqP7BWEkK7aK65yH' @ 72057594037927935 : 1 .. '!items!irEA0eyE731viEYl' @ 0 : 0; will stop at (end)

15
packs/artifex/LOG.old Normal file
View File

@ -0,0 +1,15 @@
2024/05/23-11:35:06.584295 7f80460006c0 Recovering log #25
2024/05/23-11:35:06.677479 7f80460006c0 Delete type=3 #23
2024/05/23-11:35:06.677553 7f80460006c0 Delete type=0 #25
2024/05/23-11:35:52.346618 7f803fe006c0 Level-0 table #30: started
2024/05/23-11:35:52.349648 7f803fe006c0 Level-0 table #30: 1316 bytes OK
2024/05/23-11:35:52.356522 7f803fe006c0 Delete type=0 #28
2024/05/23-11:35:52.356854 7f803fe006c0 Manual compaction at level-0 from '!items!PqP7BWEkK7aK65yH' @ 72057594037927935 : 1 .. '!items!irEA0eyE731viEYl' @ 0 : 0; will stop at (end)
2024/05/23-11:35:52.386880 7f803fe006c0 Manual compaction at level-1 from '!items!PqP7BWEkK7aK65yH' @ 72057594037927935 : 1 .. '!items!irEA0eyE731viEYl' @ 0 : 0; will stop at '!items!irEA0eyE731viEYl' @ 6 : 1
2024/05/23-11:35:52.386890 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.391029 7f803fe006c0 Generated table #31@1: 2 keys, 1316 bytes
2024/05/23-11:35:52.391071 7f803fe006c0 Compacted 1@1 + 1@2 files => 1316 bytes
2024/05/23-11:35:52.397189 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.397318 7f803fe006c0 Delete type=2 #22
2024/05/23-11:35:52.397533 7f803fe006c0 Delete type=2 #30
2024/05/23-11:35:52.397799 7f803fe006c0 Manual compaction at level-1 from '!items!irEA0eyE731viEYl' @ 6 : 1 .. '!items!irEA0eyE731viEYl' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/bestiaire/000043.ldb Normal file

Binary file not shown.

1
packs/bestiaire/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000044

8
packs/bestiaire/LOG Normal file
View File

@ -0,0 +1,8 @@
2024/05/23-11:36:26.253738 7f80456006c0 Recovering log #41
2024/05/23-11:36:26.264899 7f80456006c0 Delete type=3 #39
2024/05/23-11:36:26.264953 7f80456006c0 Delete type=0 #41
2024/05/23-11:38:26.682932 7f803fe006c0 Level-0 table #47: started
2024/05/23-11:38:26.682974 7f803fe006c0 Level-0 table #47: 0 bytes OK
2024/05/23-11:38:26.717379 7f803fe006c0 Delete type=0 #45
2024/05/23-11:38:26.832745 7f803fe006c0 Manual compaction at level-0 from '!actors!S7FhBajQ5KKhIpj6' @ 72057594037927935 : 1 .. '!folders!BHMWTRHF2lNlAK8u' @ 0 : 0; will stop at (end)
2024/05/23-11:38:26.832821 7f803fe006c0 Manual compaction at level-1 from '!actors!S7FhBajQ5KKhIpj6' @ 72057594037927935 : 1 .. '!folders!BHMWTRHF2lNlAK8u' @ 0 : 0; will stop at (end)

15
packs/bestiaire/LOG.old Normal file
View File

@ -0,0 +1,15 @@
2024/05/23-11:35:05.880008 7f80474006c0 Recovering log #37
2024/05/23-11:35:05.932900 7f80474006c0 Delete type=3 #35
2024/05/23-11:35:05.933004 7f80474006c0 Delete type=0 #37
2024/05/23-11:35:52.164884 7f803fe006c0 Level-0 table #42: started
2024/05/23-11:35:52.168554 7f803fe006c0 Level-0 table #42: 44719 bytes OK
2024/05/23-11:35:52.174606 7f803fe006c0 Delete type=0 #40
2024/05/23-11:35:52.186487 7f803fe006c0 Manual compaction at level-0 from '!actors!S7FhBajQ5KKhIpj6' @ 72057594037927935 : 1 .. '!folders!BHMWTRHF2lNlAK8u' @ 0 : 0; will stop at (end)
2024/05/23-11:35:52.210133 7f803fe006c0 Manual compaction at level-1 from '!actors!S7FhBajQ5KKhIpj6' @ 72057594037927935 : 1 .. '!folders!BHMWTRHF2lNlAK8u' @ 0 : 0; will stop at '!actors.items!zYffQLFKlxJ5Li83.vNpsdvHgD5qBYYPt' @ 154 : 1
2024/05/23-11:35:52.210149 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.213977 7f803fe006c0 Generated table #43@1: 54 keys, 44868 bytes
2024/05/23-11:35:52.214008 7f803fe006c0 Compacted 1@1 + 1@2 files => 44868 bytes
2024/05/23-11:35:52.220101 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.220270 7f803fe006c0 Delete type=2 #34
2024/05/23-11:35:52.220430 7f803fe006c0 Delete type=2 #42
2024/05/23-11:35:52.230758 7f803fe006c0 Manual compaction at level-1 from '!actors.items!zYffQLFKlxJ5Li83.vNpsdvHgD5qBYYPt' @ 154 : 1 .. '!folders!BHMWTRHF2lNlAK8u' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000032

8
packs/capacreature/LOG Normal file
View File

@ -0,0 +1,8 @@
2024/05/23-11:36:26.416647 7f80456006c0 Recovering log #29
2024/05/23-11:36:26.426755 7f80456006c0 Delete type=3 #27
2024/05/23-11:36:26.426807 7f80456006c0 Delete type=0 #29
2024/05/23-11:38:27.127735 7f803fe006c0 Level-0 table #35: started
2024/05/23-11:38:27.127767 7f803fe006c0 Level-0 table #35: 0 bytes OK
2024/05/23-11:38:27.156818 7f803fe006c0 Delete type=0 #33
2024/05/23-11:38:27.283239 7f803fe006c0 Manual compaction at level-0 from '!items!JzGNaagJD2jLi9tH' @ 72057594037927935 : 1 .. '!items!LaiHuZ30K4iJr6ce' @ 0 : 0; will stop at (end)
2024/05/23-11:38:27.283288 7f803fe006c0 Manual compaction at level-1 from '!items!JzGNaagJD2jLi9tH' @ 72057594037927935 : 1 .. '!items!LaiHuZ30K4iJr6ce' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,15 @@
2024/05/23-11:35:06.681079 7f80456006c0 Recovering log #25
2024/05/23-11:35:06.733585 7f80456006c0 Delete type=3 #23
2024/05/23-11:35:06.733676 7f80456006c0 Delete type=0 #25
2024/05/23-11:35:52.408695 7f803fe006c0 Level-0 table #30: started
2024/05/23-11:35:52.412094 7f803fe006c0 Level-0 table #30: 891 bytes OK
2024/05/23-11:35:52.418332 7f803fe006c0 Delete type=0 #28
2024/05/23-11:35:52.438798 7f803fe006c0 Manual compaction at level-0 from '!items!JzGNaagJD2jLi9tH' @ 72057594037927935 : 1 .. '!items!LaiHuZ30K4iJr6ce' @ 0 : 0; will stop at (end)
2024/05/23-11:35:52.448865 7f803fe006c0 Manual compaction at level-1 from '!items!JzGNaagJD2jLi9tH' @ 72057594037927935 : 1 .. '!items!LaiHuZ30K4iJr6ce' @ 0 : 0; will stop at '!items!LaiHuZ30K4iJr6ce' @ 6 : 1
2024/05/23-11:35:52.448875 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.451938 7f803fe006c0 Generated table #31@1: 2 keys, 891 bytes
2024/05/23-11:35:52.451952 7f803fe006c0 Compacted 1@1 + 1@2 files => 891 bytes
2024/05/23-11:35:52.459187 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.459337 7f803fe006c0 Delete type=2 #22
2024/05/23-11:35:52.459554 7f803fe006c0 Delete type=2 #30
2024/05/23-11:35:52.479901 7f803fe006c0 Manual compaction at level-1 from '!items!LaiHuZ30K4iJr6ce' @ 6 : 1 .. '!items!LaiHuZ30K4iJr6ce' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -1,30 +0,0 @@
{"name":"Protection du Sorcier","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu est prot&eacute;g&eacute; contre les attaques des cr&eacute;atures n&eacute;es ou invoqu&eacute;es par la sorcellerie (un type d&rsquo;&Eacute;l&eacute;mentaire, les D&eacute;mons, les Automata&hellip;). La protection dont il b&eacute;n&eacute;ficie d&eacute;pend du nombre de points d&rsquo;&Acirc;me sacrifi&eacute;s.</p>","allegeance":"chaos","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour 1 point de protection. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour 2 points de protection. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un 3 points de protection. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.WUPne9oDFTcdLtW9"}},"_id":"5dGXNiL3WN4cAk7X"}
{"name":"Conscience extraplanaire","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu a conscience du tissu de la r&eacute;alit&eacute;. Il peut percevoir les passages et les portails menant vers d&rsquo;autres plans dans une zone de 10 m&egrave;tres par point d&rsquo;Aspect chaotique gr&acirc;ce &agrave; un simple test de Clairvoyance + Perception / 15. S&rsquo;il ignore l&rsquo;existence de ce passage et qu&rsquo;il passe devant, le MJ peut faire un test de Clairvoyance + Perception / 25 pour l&rsquo;&Eacute;lu derri&egrave;re son &eacute;cran.</p>","allegeance":"chaos","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<p>1 point d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.1nIGWsNtx1NKxjPn"}},"_id":"5v0Y35LzqfAd0KnX"}
{"name":"Santé renforcée (Loi)","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Les points de Sant&eacute; de l&rsquo;&Eacute;lu sont recalcul&eacute;s en ajoutant &agrave; [(Puissance + Trempe) x 2]+ 5 le nombre de points d&rsquo;&Acirc;me sacrifi&eacute;s. Ce Don ne peut &ecirc;tre pris qu&rsquo;une seule fois m&ecirc;me si l&rsquo;&Eacute;lu conclut plusieurs Pactes.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d&rsquo;&Acirc;me par point de Sant&eacute; suppl&eacute;mentaire, pour un maximum &eacute;gal &agrave; l&rsquo;Aspect du personnage.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.4ow7N6kdAWXbTApf"}},"_id":"6IS4zstVwJxG2lwy"}
{"name":"Repos de lÂme","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu r&eacute;cup&egrave;re deux fois plus vite ses points d&rsquo;&Acirc;me, soit 2 par heure et 4 en cas de repos.</p>","allegeance":"chaos","prerequis":"6 ou plus en Présence.","sacrifice":"<p>3 points d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.KXciI0xwd6gSOLcZ"}},"_id":"8WLUjxBJtd33mZFp"}
{"name":"Trait chaotique","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu gagne un trait du Chaos qu&rsquo;il tire au hasard dans le tableau de la page 185 avec un d20. Il peut prendre ce Don trois fois. S&rsquo;il tire un trait qu&rsquo;il poss&egrave;de d&eacute;j&agrave;, il doit relancer le d20. Ces traits sont permanents et d&eacute;finitifs, &agrave; moins que les Seigneurs du Chaos n&rsquo;en d&eacute;cident autrement, notamment si l&rsquo;&Eacute;lu les dissimule trop &agrave; leur go&ucirc;t alors qu&rsquo;il n&rsquo;y est pas absolument contraint par des imp&eacute;ratifs de survie imm&eacute;diats.</p>","allegeance":"chaos","prerequis":"aucun","sacrifice":"<p>2 points d&rsquo;&Acirc;me par Trait chaotique. L&rsquo;&Eacute;lu ne peut en avoir plus que sa Marge.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.BKzeOjGA13wQgO0S"}},"_id":"BuZM5BnSaPIGEiEq"}
{"name":"Guérison","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu r&eacute;g&eacute;n&egrave;re rapidement. Chaque jour de repos, il regagne un nombre de points de Sant&eacute; &eacute;gal &agrave; sa Trempe /2 + son Aspect.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>3 point d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.yvY0G3PffZWEl92R"}},"_id":"Eme2iVAF670LCeIH"}
{"name":"Aide Élémentaire","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Ce Don permet d&rsquo;appeler un &Eacute;l&eacute;mentaire &agrave; son secours une fois par sc&eacute;nario. La Puissance de l&rsquo;&Eacute;l&eacute;mentaire est fi x&eacute;e lors de l&rsquo;octroi du Don. La nature de l&rsquo;&Eacute;l&eacute;mentaire correspond &agrave; celle du Seigneur &Eacute;l&eacute;mentaire avec lequel le Pacte a &eacute;t&eacute; pass&eacute;. Ce Don ne peut &ecirc;tre pris qu&rsquo;une fois par Seigneur &Eacute;l&eacute;mentaire v&eacute;n&eacute;r&eacute;.</p>","allegeance":"elementaires","prerequis":"","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un &Eacute;l&eacute;mentaire mineur disposant de 5 points d&rsquo;&Acirc;me. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>3 points d&rsquo;&Acirc;me pour un &Eacute;l&eacute;mentaire m&eacute;dian disposant de 10 points d&rsquo;&Acirc;me. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>5 points d&rsquo;&Acirc;me pour un &Eacute;l&eacute;mentaire majeur disposant de 15 points d&rsquo;&Acirc;me. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Wo42z8L33wLerUM8"}},"_id":"JAkSopwrh4QmKrPY"}
{"name":"Augmentation du modificateur de dégâts","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Les d&eacute;g&acirc;ts caus&eacute;s par l&rsquo;&Eacute;lu b&eacute;n&eacute;ficient d&rsquo;un bonus pour <em>un type d&rsquo;armes donn&eacute;</em>. Le bonus d&eacute;pend du nombre de points d&rsquo;&Acirc;me sacrifi&eacute;s.</p>","allegeance":"loi","prerequis":"6 ou plus en Puissance.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un bonus de + 1. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>3 points d&rsquo;&Acirc;me pour un bonus de + 2. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>5 points d&rsquo;&Acirc;me pour un bonus de + 3. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.bqdkbOf7EsdsCRqu"}},"_id":"K4H2VC0jTCy7pYj7"}
{"name":"Lexemple du Juste","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu est un exemple rayonnant pour ses camarades. Une fois par sc&eacute;nario, si l&rsquo;&Eacute;lu adresse pendant un tour de jeu une pri&egrave;re &agrave; une divinit&eacute; de la Loi, lui et ses camarades (une dizaine tout au plus) seront b&eacute;nis et recevront jusqu&rsquo;&agrave; la fin de la sc&egrave;ne un bonus &agrave; toutes leurs actions.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un bonus de + 1. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour un bonus de + 2. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un bonus de + 3. Acc&egrave;s r&eacute;serv&eacute; aux Champions.&nbsp;</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.C5ofSFNXoXZFo8ak"}},"_id":"KlfScJjqvlPtkcdZ"}
{"name":"Abstinence","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu peut survivre en se privant d&rsquo;un &eacute;l&eacute;ment vital (nourriture, eau, sommeil, mais pas air) pendant un certain temps. La dur&eacute;e de ce pouvoir d&eacute;pend du nombre de points d&rsquo;&Acirc;me sacrifi&eacute;s.</p>","allegeance":"tous","prerequis":"6 ou plus en Trempe","sacrifice":"<ul>\n<li>2 points d&rsquo;&Acirc;me pour un jour. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>6 points d&rsquo;&Acirc;me pour une semaine. Acc&egrave;s r&eacute;serv&eacute; aux Che\u0002valiers et aux H&eacute;rauts.</li>\n<li>10 points d&rsquo;&Acirc;me pour un mois. Acc&egrave;s r&eacute;serv&eacute; aux Cham\u0002pions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Q4Sy7vOGgU7Zgi9p"}},"_id":"OJKMNtFsuVgkV3gh"}
{"name":"Rupture Chaotique","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Lorsque l&rsquo;&Eacute;lu manie un certain type d&rsquo;armes, il peut ajouter un bonus &agrave; son initiative ou b&eacute;n&eacute;ficier d&rsquo;un bonus aux d&eacute;g&acirc;ts lors d&rsquo;un combat, une fois par s&eacute;ance de jeu.</p>","allegeance":"chaos","prerequis":"6 ou plus en Puissance.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un bonus de + 1 aux d&eacute;g&acirc;ts ou + 5 en initiative. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>3 points d&rsquo;&Acirc;me pour un bonus de + 2 aux d&eacute;g&acirc;ts ou + 7 en initiative. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>5 points d&rsquo;&Acirc;me pour un bonus de + 3 aux d&eacute;g&acirc;ts ou + 10 en initiative. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.gMI6F4qY5Fi6okZ7"}},"_id":"Q1xDyjQy59lr5wAG"}
{"name":"Sens du Pur","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu a imm&eacute;diatement conscience de la pr&eacute;sence pass&eacute;e ou actuelle du Chaos (sortil&egrave;ge &agrave; l&rsquo;&oelig;uvre, puissant serviteur&hellip;). Le personnage est tr&egrave;s sensible aux &eacute;manations chaotiques, elles lui soul&egrave;vent le c&oelig;ur. La distance de d&eacute;tection peut aug\u0002menter en sacrifiant davantage de points d&rsquo;&Acirc;me</p>","allegeance":"loi","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour d&eacute;tecter les ennemis dans un rayon de 10 m&egrave;tres. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour d&eacute;tecter les ennemis dans un rayon de 100 m&egrave;tres. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour d&eacute;tecter les ennemis dans un rayon de 1000 m&egrave;tres. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.tp2435vHrj63GeAK"}},"_id":"RYgdBIikcBfN8xAp"}
{"name":"Gardien des Millions de Sphères","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu a conscience du tissu de la r&eacute;alit&eacute;. Il peut sceller, par de longues pri&egrave;res psalmodi&eacute;es, les passages et les portails donnant sur d&rsquo;autres plans du Multivers. Cette action lui co&ucirc;te le sacrifice d&rsquo;un point d&rsquo;&Eacute;clat. Tant que sa concentration reste tourn&eacute;e vers ce passage, le portail demeure scell&eacute;, comme si Donblas lui-m&ecirc;me le gardait. Mais d&egrave;s que le personnage s&rsquo;endort, la porte, bien que ferm&eacute;e, n&rsquo;est plus scell&eacute;e. Certains plans tr&egrave;s importants poss&egrave;dent plusieurs passages menant vers les Jeunes Royaumes.</p>","allegeance":"loi","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<p>5 points d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.tm1fjaETqhMAldqJ"}},"_id":"TKCaHLHccYw7JvFy"}
{"name":"Vivacité","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Lors d&rsquo;un test de Capacit&eacute; Offensive, l&rsquo;&Eacute;lu voit la marge n&eacute;cessaire &agrave; l&rsquo;obtention d&rsquo;une r&eacute;ussite h&eacute;ro&iuml;que diminuer de 1 (9 ou plus), de 2 (8 ou plus) ou de 3 (7 ou plus).&nbsp;</p>","allegeance":"tous","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>3 points d&rsquo;&Acirc;me pour diminuer la marge de 1 (r&eacute;ussite h&eacute;ro&iuml;que sur 9 ou plus). Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>5 points d&rsquo;&Acirc;me pour diminuer la marge de 2 (r&eacute;ussite h&eacute;ro&iuml;que sur 8 ou plus). Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>7 points d&rsquo;&Acirc;me pour diminuer la marge de 3 (r&eacute;ussite h&eacute;ro&iuml;que sur 7 ou plus). Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.GlhqSASDW0XdR243"}},"_id":"XaJAo8otOXmgtjzA"}
{"name":"Augmentation de compétence (Chaos)","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Ce Don permet d&rsquo;augmenter une comp&eacute;tence importante pour la voie spirituelle choisie. Le bonus octroy&eacute; d&eacute;pend du nombre de points d&rsquo;&Acirc;me sacrifi &eacute;s. Ce Don peut &ecirc;tre choisi plusieurs fois, mais il ne peut s&rsquo;appliquer qu&rsquo;une fois par comp&eacute;tence.&nbsp;</p>","allegeance":"chaos","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un + 1 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour un + 2 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un + 3 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.75OYBq5iGgdXVQcA"}},"_id":"aP4vSk6WOL4wXyyb"}
{"name":"Dur à cuire","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu r&eacute;siste aux effets li&eacute;s &agrave; la fatigue et &agrave; la maladie. Le b&eacute;n&eacute;\u0002fi ciaire de ce Don a droit &agrave; un bonus de + 1 lors de ses tests de Trempe pour r&eacute;sister &agrave; la fatigue et &agrave; la maladie. Ce bonus peut augmenter en sacrifi ant davantage de points d&rsquo;&Acirc;me.</p>","allegeance":"tous","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un bonus de + 2. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour un bonus de + 3. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un bonus de + 4. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.jNeLj9DyylUj7LAl"}},"_id":"gK3glTgKTKRw9ref"}
{"name":"Animal apprivoisé","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Le croyant se voit confier un animal normal (c&rsquo;est-&agrave;-dire non surnaturel). L&rsquo;animal apprivois&eacute; est un membre standard de son esp&egrave;ce et ob&eacute;it &agrave; des ordres simples, mais sans jamais aller contre sa nature. Le co&ucirc;t de ce Don d&eacute;pend de la Puissance de la cr&eacute;ature qui est fix&eacute;e lors de son octroi. Si 1 point d&rsquo;&Acirc;me suppl&eacute;mentaire est investi, la cr&eacute;ature peut communiquer t&eacute;l&eacute;\u0002pathiquement avec son ma&icirc;tre (et uniquement avec lui).</p>","allegeance":"betes","prerequis":"6 ou plus en Présence.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour une cr&eacute;ature d&rsquo;une Puissance de 0 &agrave; 4. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>3 points d&rsquo;&Acirc;me pour une cr&eacute;ature d&rsquo;une Puissance de 5 &agrave; 7. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>5 points d&rsquo;&Acirc;me pour une cr&eacute;ature d&rsquo;une Puissance de 8 &agrave; 10. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.qDUei4wRjpRYi9Ps"}},"_id":"gN7DtvMJPASpPpQl"}
{"name":"Protection du Mage","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu est prot&eacute;g&eacute; contre les attaques des cr&eacute;atures engendr&eacute;es ou invoqu&eacute;es par la Sorcellerie (les &Eacute;l&eacute;mentaires, les D&eacute;mons, les Automata&hellip;). La protection dont il b&eacute;n&eacute;ficie d&eacute;pend du nombre de points d&rsquo;&Acirc;me sacrifi&eacute;s.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour 1 point de protection. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour 2 points de protection. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un 3 points de protection. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.NVIG52HOiWGm6JcW"}},"_id":"j7iTQOFdiJUviTC9"}
{"name":"Sang-Froid","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu peut supporter n&rsquo;importe quel type de souffrance psy\u0002chique. Il ne subit pas les p&eacute;nalit&eacute;s dues &agrave; l&rsquo;&eacute;tat D&eacute;stabilis&eacute; (&ndash; 2) et Choqu&eacute; (&ndash; 5). Il est immunis&eacute; &agrave; la torture mentale.</p>","allegeance":"chaos","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.KvdQLDhSpfAd2Iig"}},"_id":"lWXxInM05EiBu6uX"}
{"name":"Dur à cuire (Chaos)","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu r&eacute;siste aux effets li&eacute;s &agrave; la fatigue et &agrave; la maladie. Le b&eacute;n&eacute;fi ciaire de ce Don a droit &agrave; un bonus de + 1 lors de ses tests de Trempe pour r&eacute;sister &agrave; la fatigue et &agrave; la maladie. Ce bonus peut augmenter en sacrifi ant davantage de points d&rsquo;&Acirc;me.</p>","allegeance":"chaos","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un bonus de + 1. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour un bonus de + 2. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un bonus de + 3.Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.E0kyJQ5gqCEcm0Aj"}},"_id":"oAKqbsLVd8cX4tjN"}
{"name":"Augmentation de compétence","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Ce Don permet d&rsquo;augmenter une comp&eacute;tence relative &agrave; la voie spirituelle choisie. Le bonus octroy&eacute; d&eacute;pend du nombre de points d&rsquo;&Acirc;me sacrifi &eacute;s. Ce Don peut &ecirc;tre choisi plusieurs fois, mais il ne peut s&rsquo;appliquer qu&rsquo;une fois par comp&eacute;tence.&nbsp;</p>","allegeance":"tous","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un + 1 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour un + 2 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un + 3 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.djDFklKJaW1oVTds"}},"_id":"pPNKneH7scfaEmGq"}
{"name":"Augmentation de compétence (Loi)","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Ce Don permet d&rsquo;augmenter une comp&eacute;tence importante pour la voie spirituelle choisie. Le bonus octroy&eacute; d&eacute;pend du nombre de points d&rsquo;&Acirc;me sacrifi&eacute;s. Ce Don peut &ecirc;tre choisi plusieurs fois mais il ne peut s&rsquo;appliquer qu&rsquo;une fois par comp&eacute;tence.</p>","allegeance":"loi","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour un + 1 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour un + 2 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour un + 3 &agrave; une comp&eacute;tence. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.gNL9lD7hofK32H7D"}},"_id":"qhOE8OTe5hNNgDtt"}
{"name":"Santé renforcée","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Les points de Sant&eacute; de l&rsquo;&Eacute;lu sont recalcul&eacute;s en ajoutant &agrave; [(Puissance + Trempe) x 2]+ 5 le nombre de points d&rsquo;&Acirc;me sacrifi&eacute;s. Ce Don ne peut &ecirc;tre pris qu&rsquo;une seule fois m&ecirc;me si l&rsquo;&Eacute;lu conclut plusieurs Pactes.</p>","allegeance":"tous","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d&rsquo;&Acirc;me par point de Sant&eacute; suppl&eacute;mentaire.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.dJnYsDcETkidd2s5"}},"_id":"sLgGn6zhkDdbpQlH"}
{"name":"Rectitude","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu peut supporter n&rsquo;importe quel type de souffrance. Il ne subit pas les p&eacute;nalit&eacute;s dues &agrave; l&rsquo;&eacute;tat Bless&eacute; (-2) et Gravement Bless&eacute; (-5). Il est immunis&eacute; contre la torture.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.HpoTP9idEKi1NQGL"}},"_id":"t7Ez0rzqYOf48GfY"}
{"name":"La voie du milieu","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Lors d&rsquo;un combat, l&rsquo;&Eacute;lu ne subit plus les effets d&rsquo;une r&eacute;ussite h&eacute;ro&iuml;que contre lui lors des tests de Capacit&eacute; offensive. Il n&rsquo;en profite plus non plus. &Agrave; un haut niveau, il ne peut plus &ecirc;tre affect&eacute; par les &eacute;checs dramatiques.</p>","allegeance":"loi","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>3 points d&rsquo;&Acirc;me pour ne plus &ecirc;tre affect&eacute; par les r&eacute;ussite h&eacute;ro&iuml;ques.</li>\n<li>7 points d&rsquo;&Acirc;me pour ne plus &ecirc;tre affect&eacute; ni par les r&eacute;us\u0002sites h&eacute;ro&iuml;ques ni par les &eacute;checs dramatiques. Acc&egrave;s r&eacute;ser\u0002v&eacute; aux Champions</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.rOXDZ2020snvhtR2"}},"_id":"taXCPXiPEuOIKaUO"}
{"name":"Perfection","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;un des attributs de l&rsquo;&Eacute;lu est augment&eacute;, gr&acirc;ce &agrave; la bienveil\u0002lance de la divinit&eacute;. Il ne peut d&eacute;passer le maximum impos&eacute; par l&rsquo;esp&egrave;ce. Ce Don peut &ecirc;tre choisi plusieurs fois, mais il ne peut s&rsquo;appliquer qu&rsquo;une fois par attribut.</p>","allegeance":"tous","prerequis":"6 ou plus dans lattribut modifié.","sacrifice":"<ul>\n<li>3 points d&rsquo;&Acirc;me pour un bonus de + 1. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>6 points d&rsquo;&Acirc;me pour un bonus de + 2. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>9 points d&rsquo;&Acirc;me pour un bonus de + 3. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.nSlFw6q7TCqxZ6tH"}},"_id":"vZBNRTeGGU5hsXtT"}
{"name":"Sixième sens","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu sait o&ugrave; se trouvent des ennemis dont il a conscience et qui cherchent &agrave; lui nuire directement dans un rayon de 10 m&egrave;tres. Attention, cette d&eacute;tection ne fonctionnera pas pour deviner que quelqu&rsquo;un est simplement hostile &agrave; l&rsquo;&Eacute;lu ou le hait visc&eacute;ralement. Il s&rsquo;agit d&rsquo;un pouvoir de localisation et de vigilance. La distance de d&eacute;tection peut augmenter en sacrifiant davantage de points d&rsquo;&Acirc;me.</p>","allegeance":"chaos","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>1 point d&rsquo;&Acirc;me pour d&eacute;tecter les ennemis dans un rayon de 10 m&egrave;tres. Acc&egrave;s r&eacute;serv&eacute; aux Novices et aux Adeptes.</li>\n<li>2 points d&rsquo;&Acirc;me pour d&eacute;tecter les ennemis dans un rayon de 100 m&egrave;tres. Acc&egrave;s r&eacute;serv&eacute; aux Chevaliers et aux H&eacute;rauts.</li>\n<li>3 points d&rsquo;&Acirc;me pour d&eacute;tecter les ennemis dans un rayon de 1000 m&egrave;tres. Acc&egrave;s r&eacute;serv&eacute; aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.6CIPAVjSVsOqZBYc"}},"_id":"wsbGuOoFjHO6aQEm"}
{"name":"Endurance","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu peut supporter n&rsquo;importe quel type de souffrance. Il ne subit pas les p&eacute;nalit&eacute;s dues &agrave; l&rsquo;&eacute;tat Bless&eacute; (-2) et Gravement Bless&eacute; (-5). Il est immunis&eacute; &agrave; la torture si elle est infl ig&eacute;e &agrave; partir d&rsquo;un des &eacute;l&eacute;ments tut&eacute;laires du personnage.</p>","allegeance":"elementaires","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>3 points d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.on94N7pylXJ8gtdF"}},"_id":"yJ6K9dYrdNxr5uWj"}
{"name":"Le pilier de la Loi","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>Une fois par sc&eacute;nario, l&rsquo;&Eacute;lu peut r&eacute;sister &agrave; une menace ou agres\u0002sion, physique ou mentale, sans jeter les d&eacute;s. Il est toutefois n&eacute;ces\u0002saire que l&rsquo;&Eacute;lu ait conscience du danger. L&rsquo;&Eacute;lu pourra par exemple r&eacute;sister &agrave; la terreur provoqu&eacute;e par une cr&eacute;ature du Chaos parti\u0002culi&egrave;rement abominable ou l&eacute;gendaire, mais ne pourra pas &eacute;viter d&rsquo;&ecirc;tre assomm&eacute; par un habile voleur de Bakshaan qu&rsquo;il n&rsquo;avait pas vu. Cette r&eacute;sistance peut m&ecirc;me &ecirc;tre &laquo; extraordinaire &raquo; si l&rsquo;Aspect de l&rsquo;&Eacute;lu est tr&egrave;s haut.</p>\n<p>S&rsquo;il est un Adepte ou un Novice, l&rsquo;&Eacute;lu peut r&eacute;sister &agrave; l&rsquo;ivresse lors d&rsquo;une nuit de beuverie chez un Prince-Marchand de Bakshaan.</p>\n<p>S&rsquo;il est un Chevalier ou un H&eacute;raut, l&rsquo;&Eacute;lu peut r&eacute;sister &agrave; un coup surpuissant (celui-ci est annul&eacute;) ou &agrave; l&rsquo;apparition gla\u0002&ccedil;ante d&rsquo;un D&eacute;mon. S&rsquo;il est un Champion, il peut par exemple soutenir l&rsquo;arche d&rsquo;un temple qui s&rsquo;&eacute;croule pendant quelques pr&eacute;cieuses secondes afi n de laisser le temps &agrave; ses camarades de se mettre &agrave; l&rsquo;abri (songez &agrave; Maciste, &agrave; Samson, ou tout simplement &agrave; Conan). Bref, n&rsquo;h&eacute;sitez pas &agrave; faire dans l&rsquo;extraordinaire, mais ne bas\u0002culez pas dans le grosbillisme sans limite (ou alors ne nous le dites pas). Il revient au MJ de doser avec justesse ce Don.</p>","allegeance":"loi","prerequis":"7 ou plus en Trempe","sacrifice":"<p>3 points d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.yZ84qzrGeIDfZXr1"}},"_id":"zef3VQat06Ronc5W"}
{"name":"Œil exercé","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L&rsquo;&Eacute;lu re&ccedil;oit de la divinit&eacute; qu&rsquo;il v&eacute;n&egrave;re l&rsquo;&eacute;quivalent d&rsquo;une Pr&eacute;dilection dans la Capacit&eacute; sp&eacute;ciale &OElig;il du sorcier (voir p. 199). Une fois par s&eacute;ance, il peut donc relancer le test de Clairvoyance + Perception.</p>","allegeance":"chaos","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<p>2 points d&rsquo;&Acirc;me.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.9Xrm1cfrCmkRtOBc"}},"_id":"zzz9JrtWjELdoAfK"}

View File

@ -1,55 +0,0 @@
{"name":"Chapeau fatigué","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.D26fUtZxrzcTR07B"}},"_id":"1cZd2hlTV9tykDED"}
{"name":"Bœuf","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.whAhz9pO1NUt8Pjm"}},"_id":"3pvWKiyXhc9mmg70"}
{"name":"Manteau","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.FZztAyGbF2cL9wyc"}},"_id":"40P9lOUYI16gEGZS"}
{"name":"Poney","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.VKZrNcrCm9Ju7ayv"}},"_id":"7MdI99vLmaytPNKE"}
{"name":"Tenue complète dhomme fortuné","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(pantalons de coton, chemise de drap fi n, pourpoint de velours, chapeau, bottes montantes ou chaussures &agrave; boucles)</p>","rarete":7,"prix":6},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.dw6wLsNmwmEW79ei"}},"_id":"82fzHPjxUkGMCVUX"}
{"name":"Laboratoire dAlchimiste","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Permet de mettre au point les objets les plus complexes (difficult&eacute; de 25 et au-del&agrave;)</p>","rarete":10,"prix":2000},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.eq0FJtwQd2jHbdvv"}},"_id":"8GK1Hn6le3JlsT6T"}
{"name":"Vieille carne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Modificateur de Monte -2</p>","rarete":2,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.iikcWs26aEjtXDKo"}},"_id":"8NPElVs0cYrGbmXO"}
{"name":"Nuit dauberge à létable","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.uo464pRDCNIPsUvW"}},"_id":"9dEaZklkBs1GgdD7"}
{"name":"Coursier","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Modificateur de Monte +2</p>","rarete":7,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.t4PPYVE2B6B9tUy1"}},"_id":"AZDTSEUo52dnf37U"}
{"name":"Papier, plume et encre","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":6,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.545S2qajtz6DSzzq"}},"_id":"Bg8jNqGusEdHxV00"}
{"name":"Chariot couvert ou bâché","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.GRhCO7lW7NaHThqU"}},"_id":"FlK49ZIVnceUTy1P"}
{"name":"Tenue complète bourgeoise","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>&nbsp;(chausses, chemise, pourpoint, chapeau, bottes)</p>","rarete":6,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.XZSiLPhbhlj1Wil1"}},"_id":"HdlqqXJ393Pf3GxA"}
{"name":"Nuit dauberge dans une chambre particulière","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.xtlOL4VOsTDvyUvR"}},"_id":"LnKDtuhsacvcet7B"}
{"name":"Louer une petite maison de ville pour un mois","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Se paie g&eacute;n&eacute;ralement d&rsquo;avance&hellip;</p>","rarete":0,"prix":40},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Tfu7ywqXoXzXgP6H"}},"_id":"NZ28hyteLgOxlXC7"}
{"name":"Repas de fête","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.gTCljExvFFpG7K1s"}},"_id":"OyRix5REF10GPbSp"}
{"name":"Cheval dattelage","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":4,"prix":80},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.KDfgGmQ4tUj765MN"}},"_id":"QHPoow1iDYEdExgs"}
{"name":"Repas chaud","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.ErKXhChAfgugKU1a"}},"_id":"QojR7XS4mGjbMq5w"}
{"name":"Charrette","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.4HRLU67Ipd1PFqUV"}},"_id":"RXMBJNKXfy3S3yck"}
{"name":"Onguent de soin","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>10 tours de jeu sont n&eacute;cessaires pour l&rsquo;appliquer. Permet de r&eacute;cup&eacute;rer [[/roll 1D4]] points de Sant&eacute; apr&egrave;s (10 &ndash; Trempe) heures</p>","rarete":5,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.RdqMNJzemUcCYO1H"}},"_id":"RyNJqjQvDbMixok0"}
{"name":"Barge","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":300},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.l7tiShWweGQ8fzDp"}},"_id":"TyeTRm4FxLeRNDTU"}
{"name":"Pommade à frotter pour faire circuler le sang","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Prot&egrave;ge des effets du froid (+ 5 aux tests de Trempe)</p>","rarete":4,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.BbzFc96y1QHi0Old"}},"_id":"VPkZxH3bkTR8WqXQ"}
{"name":"Cape","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.HZkgEeG4apx4I4Tn"}},"_id":"WL0809BYVR9JxaMM"}
{"name":"Poudre blanche","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(&agrave; inhaler pour se sentir en forme)</p>\n<p>S&rsquo;inhale le temps d&rsquo;une action (&agrave; inhaler pour se sentir en forme) simple. Permet de r&eacute;cup&eacute;rer imm&eacute;diatement [[/roll 1D4]] cases de Sant&eacute; (d&eacute;g&acirc;ts non l&eacute;taux). &Agrave; chaque inhalation, lancez un [[/roll 1d20]]. Sur un 1 ou un 11, celui qui vient de priser la poudre s&rsquo;eff ondre et reste inconscient durant (10 &ndash; Trempe) heures.</p>\n<p>&nbsp;</p>","rarete":7,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.axOu6tHgHC7kYnG3"}},"_id":"WntSrr0j00DLntZV"}
{"name":"Lanterne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.OKydo5obAtmOVNup"}},"_id":"Wo0tplt93X9wemlV"}
{"name":"Chien dressé","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5jFTzXfwTgkVvjv7"}},"_id":"Wus5fIYO731eLG0i"}
{"name":"Pain de route (rations pour une semaine)","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.18Hb7BDncVyHgyeM"}},"_id":"X4nIqFrjWy0hCVbZ"}
{"name":"Matériel de survie","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(sac, gourde, couverture, tente)</p>","rarete":2,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.wv6tWbuJjnZ7jiXH"}},"_id":"e8ZbG2WQCzJTRzBK"}
{"name":"Herbes à infuser contre les fièvres légères","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.iL0fjlODZ4JnNpwN"}},"_id":"eH4V6AlAZNEuwlrw"}
{"name":"Barque à rames, canoë","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":60},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.HKxNf2i5EEu5wAN5"}},"_id":"eXP5rck0IJK4Az8c"}
{"name":"Petit atelier et son outillage","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Permet de fabriquer les objets les plus simples (jusqu&rsquo;&agrave; une difficult&eacute; de 20)</p>","rarete":8,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TD0bN2tEIG8VqnbD"}},"_id":"fc2fReiW3mV6jekF"}
{"name":"Antipoison","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Conf&egrave;re un bonus de + 5 au test de Soins pour arr&ecirc;ter les pertes de points de Sant&eacute;. Note : tous les poisons n&rsquo;ont pas d&rsquo;antipoison connu.</p>","rarete":7,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.7NDLIEeS4WVyXDqo"}},"_id":"fkleifA7qbOzRZCy"}
{"name":"Fonderie","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":10,"prix":10000},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Y14CMXm2avlCnqPC"}},"_id":"frS3jj7bs0l9zMGi"}
{"name":"Roulotte","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.X5GxbvOMqQ8aHh49"}},"_id":"g5rDtYzyQ4IxUWXu"}
{"name":"Forge","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":4,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.cma6u26NRsZL1awt"}},"_id":"gJStREuVAaaBuwXR"}
{"name":"Miroir et peigne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.IzlENy0Oxg82cke0"}},"_id":"hRlPFzsoUjbu3Noj"}
{"name":"Tenue complète citadine","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(chausses et chemise de coton, chapeau, chaussures)</p>","rarete":3,"prix":7},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.1ldZnq4lDPHOeVba"}},"_id":"hTLeVLn5yUd2etoS"}
{"name":"Nuit dauberge dans la salle commune","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":3},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.D7HcsRBK8uH6NBi4"}},"_id":"hc4w2PBpYLMQKsXS"}
{"name":"Matériel de cuisine","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.lJafSILU0LtNMONn"}},"_id":"i8BBr1WjfphuLTLI"}
{"name":"Chapeau à la mode","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":6,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.lmlWH96vjfTMN2OO"}},"_id":"kkNZoJdG86Dqci2b"}
{"name":"Herbes à mâcher les lendemains de beuverie","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.STMfa8tVupqJPllD"}},"_id":"muCWd5AKL21AbTg8"}
{"name":"Tenue complète paysanne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(chausses et chemise de jute, grand foulard, sandales)</p>","rarete":0,"prix":4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.4WIrBhrpn4AlSnh3"}},"_id":"nJKLD6BqEHbBHmOY"}
{"name":"Selle et fontes","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.J1HAwhIBjgkBZ3FH"}},"_id":"oIZv9KxLVQUOfi5d"}
{"name":"Destrier","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":8,"prix":800},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.MF74kXfkiwLOwWNS"}},"_id":"oIob9qCttaQw7Aea"}
{"name":"Vêtements rapiécés, nippes","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.rPYf2u8b3qizxxFk"}},"_id":"sLZgByw2rA2PvQms"}
{"name":"Petit voilier","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":6,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.tuAI18GrGFkqVHpQ"}},"_id":"tAFXmBLUXcSUKZRL"}
{"name":"Matériel hivernal","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(piolets, raquettes, manteau et graisses)</p>","rarete":4,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.LpdplcMj4j7dWnZU"}},"_id":"tRSk0np2smLpdixK"}
{"name":"Herbes parfumées contre les mauvaises odeurs","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.y6G9LprDaOAoVn9v"}},"_id":"tXYzLGS6SFolD8k4"}
{"name":"Barque de pêcheur avec voile","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.ZXEq8059S3YlFhN0"}},"_id":"vUFnyal2islmmpZF"}
{"name":"Torche","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>&nbsp;(lot de 3)</p>","rarete":1,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.aVBCMdM69vwfrSMW"}},"_id":"vahvt9QGYjnRlY4p"}
{"name":"Verre de vin ou de bière","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5yA9UC3kExUx6CqN"}},"_id":"vmSrygoMxy6G87EO"}
{"name":"Matériel descalade","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(marteau, cordes, pitons)</p>","rarete":3,"prix":8},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TXj9b73MGGI6L9Av"}},"_id":"vtpjGFTYO7fiKXwE"}
{"name":"Longue-vue","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.n1UQvGJ8Zq6dGuEY"}},"_id":"wHU6MvZuBMmN9xfG"}
{"name":"Dose de poison violent","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Voir le chapitre &laquo; Le Combat et la sant&eacute; &raquo; pour conna&icirc;tre les eff ets des principaux poisons</p>","rarete":6,"prix":3},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.EuGLW5D5SIP58uaa"}},"_id":"wQ8cgwazhlIF6WG7"}
{"name":"Louer une grange pour un mois","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Se paie g&eacute;n&eacute;ralement d&rsquo;avance...</p>","rarete":0,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.8utWpkdD1FvHSYfv"}},"_id":"xy356PaIZisHJdUR"}
{"name":"Grande écharpe","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.j5Hei6F2XN5nrh7t"}},"_id":"y47dBO3Mf5Pn7tOd"}

Binary file not shown.

BIN
packs/equipement/000124.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000098 MANIFEST-000125

View File

@ -1,8 +1,8 @@
2023/11/29-22:11:25.461453 7ff1ecbfe6c0 Recovering log #96 2024/05/23-11:36:26.390072 7f80474006c0 Recovering log #122
2023/11/29-22:11:25.472590 7ff1ecbfe6c0 Delete type=3 #94 2024/05/23-11:36:26.400169 7f80474006c0 Delete type=3 #120
2023/11/29-22:11:25.472658 7ff1ecbfe6c0 Delete type=0 #96 2024/05/23-11:36:26.400273 7f80474006c0 Delete type=0 #122
2023/11/29-22:14:17.029859 7fef56ffd6c0 Level-0 table #101: started 2024/05/23-11:38:27.094008 7f803fe006c0 Level-0 table #128: started
2023/11/29-22:14:17.029891 7fef56ffd6c0 Level-0 table #101: 0 bytes OK 2024/05/23-11:38:27.094074 7f803fe006c0 Level-0 table #128: 0 bytes OK
2023/11/29-22:14:17.067628 7fef56ffd6c0 Delete type=0 #99 2024/05/23-11:38:27.127448 7f803fe006c0 Delete type=0 #126
2023/11/29-22:14:17.106540 7fef56ffd6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) 2024/05/23-11:38:27.127606 7f803fe006c0 Manual compaction at level-0 from '!folders!JlP90zkPvPcJDq0q' @ 72057594037927935 : 1 .. '!items!zjMDuxKHKJ4vE5UV' @ 0 : 0; will stop at (end)
2023/11/29-22:14:17.106574 7fef56ffd6c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) 2024/05/23-11:38:27.127638 7f803fe006c0 Manual compaction at level-1 from '!folders!JlP90zkPvPcJDq0q' @ 72057594037927935 : 1 .. '!items!zjMDuxKHKJ4vE5UV' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2023/11/29-20:50:20.635956 7ff1ed3ff6c0 Recovering log #92 2024/05/23-11:35:06.519383 7f80474006c0 Recovering log #118
2023/11/29-20:50:20.646539 7ff1ed3ff6c0 Delete type=3 #90 2024/05/23-11:35:06.577392 7f80474006c0 Delete type=3 #116
2023/11/29-20:50:20.646595 7ff1ed3ff6c0 Delete type=0 #92 2024/05/23-11:35:06.577476 7f80474006c0 Delete type=0 #118
2023/11/29-22:03:29.622718 7fef56ffd6c0 Level-0 table #97: started 2024/05/23-11:35:52.335647 7f803fe006c0 Level-0 table #123: started
2023/11/29-22:03:29.622756 7fef56ffd6c0 Level-0 table #97: 0 bytes OK 2024/05/23-11:35:52.340197 7f803fe006c0 Level-0 table #123: 12499 bytes OK
2023/11/29-22:03:29.630708 7fef56ffd6c0 Delete type=0 #95 2024/05/23-11:35:52.346521 7f803fe006c0 Delete type=0 #121
2023/11/29-22:03:29.630884 7fef56ffd6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.356830 7f803fe006c0 Manual compaction at level-0 from '!folders!JlP90zkPvPcJDq0q' @ 72057594037927935 : 1 .. '!items!zjMDuxKHKJ4vE5UV' @ 0 : 0; will stop at (end)
2023/11/29-22:03:29.630919 7fef56ffd6c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.377068 7f803fe006c0 Manual compaction at level-1 from '!folders!JlP90zkPvPcJDq0q' @ 72057594037927935 : 1 .. '!items!zjMDuxKHKJ4vE5UV' @ 0 : 0; will stop at '!items!zjMDuxKHKJ4vE5UV' @ 357 : 1
2024/05/23-11:35:52.377077 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.380413 7f803fe006c0 Generated table #124@1: 70 keys, 13583 bytes
2024/05/23-11:35:52.380434 7f803fe006c0 Compacted 1@1 + 1@2 files => 13583 bytes
2024/05/23-11:35:52.386645 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.386706 7f803fe006c0 Delete type=2 #115
2024/05/23-11:35:52.386806 7f803fe006c0 Delete type=2 #123
2024/05/23-11:35:52.397769 7f803fe006c0 Manual compaction at level-1 from '!items!zjMDuxKHKJ4vE5UV' @ 357 : 1 .. '!items!zjMDuxKHKJ4vE5UV' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/heritages/000194.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000062 MANIFEST-000195

View File

@ -1,8 +1,8 @@
2023/11/29-22:11:25.395108 7fef577fe6c0 Recovering log #60 2024/05/23-11:36:26.322524 7f80460006c0 Recovering log #192
2023/11/29-22:11:25.405396 7fef577fe6c0 Delete type=3 #58 2024/05/23-11:36:26.332618 7f80460006c0 Delete type=3 #190
2023/11/29-22:11:25.405484 7fef577fe6c0 Delete type=0 #60 2024/05/23-11:36:26.332687 7f80460006c0 Delete type=0 #192
2023/11/29-22:14:16.809567 7fef56ffd6c0 Level-0 table #65: started 2024/05/23-11:38:26.870469 7f803fe006c0 Level-0 table #198: started
2023/11/29-22:14:16.809597 7fef56ffd6c0 Level-0 table #65: 0 bytes OK 2024/05/23-11:38:26.870492 7f803fe006c0 Level-0 table #198: 0 bytes OK
2023/11/29-22:14:16.843768 7fef56ffd6c0 Delete type=0 #63 2024/05/23-11:38:26.915350 7f803fe006c0 Delete type=0 #196
2023/11/29-22:14:16.952987 7fef56ffd6c0 Manual compaction at level-0 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end) 2024/05/23-11:38:26.981362 7f803fe006c0 Manual compaction at level-0 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end)
2023/11/29-22:14:16.953032 7fef56ffd6c0 Manual compaction at level-1 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end) 2024/05/23-11:38:26.981444 7f803fe006c0 Manual compaction at level-1 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2023/11/29-20:50:20.569702 7fef577fe6c0 Recovering log #56 2024/05/23-11:35:06.205974 7f8046a006c0 Recovering log #188
2023/11/29-20:50:20.579868 7fef577fe6c0 Delete type=3 #54 2024/05/23-11:35:06.271007 7f8046a006c0 Delete type=3 #186
2023/11/29-20:50:20.579933 7fef577fe6c0 Delete type=0 #56 2024/05/23-11:35:06.271061 7f8046a006c0 Delete type=0 #188
2023/11/29-22:03:29.569369 7fef56ffd6c0 Level-0 table #61: started 2024/05/23-11:35:52.230900 7f803fe006c0 Level-0 table #193: started
2023/11/29-22:03:29.569409 7fef56ffd6c0 Level-0 table #61: 0 bytes OK 2024/05/23-11:35:52.234050 7f803fe006c0 Level-0 table #193: 9381 bytes OK
2023/11/29-22:03:29.577270 7fef56ffd6c0 Delete type=0 #59 2024/05/23-11:35:52.240165 7f803fe006c0 Delete type=0 #191
2023/11/29-22:03:29.595791 7fef56ffd6c0 Manual compaction at level-0 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.270922 7f803fe006c0 Manual compaction at level-0 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end)
2023/11/29-22:03:29.602105 7fef56ffd6c0 Manual compaction at level-1 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.270981 7f803fe006c0 Manual compaction at level-1 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at '!items!nYYX7rtSMGFO4xVY' @ 40 : 1
2024/05/23-11:35:52.270989 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.274464 7f803fe006c0 Generated table #194@1: 10 keys, 9381 bytes
2024/05/23-11:35:52.274500 7f803fe006c0 Compacted 1@1 + 1@2 files => 9381 bytes
2024/05/23-11:35:52.280886 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.281019 7f803fe006c0 Delete type=2 #185
2024/05/23-11:35:52.281168 7f803fe006c0 Delete type=2 #193
2024/05/23-11:35:52.314050 7f803fe006c0 Manual compaction at level-1 from '!items!nYYX7rtSMGFO4xVY' @ 40 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/heros/000031.ldb Normal file

Binary file not shown.

1
packs/heros/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000032

8
packs/heros/LOG Normal file
View File

@ -0,0 +1,8 @@
2024/05/23-11:36:26.267731 7f80460006c0 Recovering log #29
2024/05/23-11:36:26.278255 7f80460006c0 Delete type=3 #27
2024/05/23-11:36:26.278434 7f80460006c0 Delete type=0 #29
2024/05/23-11:38:26.717554 7f803fe006c0 Level-0 table #35: started
2024/05/23-11:38:26.717597 7f803fe006c0 Level-0 table #35: 0 bytes OK
2024/05/23-11:38:26.753723 7f803fe006c0 Delete type=0 #33
2024/05/23-11:38:26.832776 7f803fe006c0 Manual compaction at level-0 from '!actors!2UqntsuFwDpHOKJ6' @ 72057594037927935 : 1 .. '!actors.items!hJb4itLSBq7V4ite.yaFBnMJeBvED0JeP' @ 0 : 0; will stop at (end)
2024/05/23-11:38:26.832830 7f803fe006c0 Manual compaction at level-1 from '!actors!2UqntsuFwDpHOKJ6' @ 72057594037927935 : 1 .. '!actors.items!hJb4itLSBq7V4ite.yaFBnMJeBvED0JeP' @ 0 : 0; will stop at (end)

15
packs/heros/LOG.old Normal file
View File

@ -0,0 +1,15 @@
2024/05/23-11:35:05.941241 7f80456006c0 Recovering log #25
2024/05/23-11:35:05.993757 7f80456006c0 Delete type=3 #23
2024/05/23-11:35:05.993818 7f80456006c0 Delete type=0 #25
2024/05/23-11:35:52.152396 7f803fe006c0 Level-0 table #30: started
2024/05/23-11:35:52.158444 7f803fe006c0 Level-0 table #30: 216163 bytes OK
2024/05/23-11:35:52.164693 7f803fe006c0 Delete type=0 #28
2024/05/23-11:35:52.186477 7f803fe006c0 Manual compaction at level-0 from '!actors!2UqntsuFwDpHOKJ6' @ 72057594037927935 : 1 .. '!actors.items!hJb4itLSBq7V4ite.yaFBnMJeBvED0JeP' @ 0 : 0; will stop at (end)
2024/05/23-11:35:52.197755 7f803fe006c0 Manual compaction at level-1 from '!actors!2UqntsuFwDpHOKJ6' @ 72057594037927935 : 1 .. '!actors.items!hJb4itLSBq7V4ite.yaFBnMJeBvED0JeP' @ 0 : 0; will stop at '!actors.items!hJb4itLSBq7V4ite.yaFBnMJeBvED0JeP' @ 775 : 1
2024/05/23-11:35:52.197768 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.203516 7f803fe006c0 Generated table #31@1: 261 keys, 216163 bytes
2024/05/23-11:35:52.203556 7f803fe006c0 Compacted 1@1 + 1@2 files => 216163 bytes
2024/05/23-11:35:52.209578 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.209730 7f803fe006c0 Delete type=2 #22
2024/05/23-11:35:52.209958 7f803fe006c0 Delete type=2 #30
2024/05/23-11:35:52.230747 7f803fe006c0 Manual compaction at level-1 from '!actors.items!hJb4itLSBq7V4ite.yaFBnMJeBvED0JeP' @ 775 : 1 .. '!actors.items!hJb4itLSBq7V4ite.yaFBnMJeBvED0JeP' @ 0 : 0; will stop at (end)

BIN
packs/heros/MANIFEST-000032 Normal file

Binary file not shown.

Binary file not shown.

BIN
packs/metiers/000194.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000062 MANIFEST-000195

View File

@ -1,8 +1,8 @@
2023/11/29-22:11:25.407678 7ff1ecbfe6c0 Recovering log #60 2024/05/23-11:36:26.335215 7f80474006c0 Recovering log #192
2023/11/29-22:11:25.418261 7ff1ecbfe6c0 Delete type=3 #58 2024/05/23-11:36:26.345427 7f80474006c0 Delete type=3 #190
2023/11/29-22:11:25.418378 7ff1ecbfe6c0 Delete type=0 #60 2024/05/23-11:36:26.345523 7f80474006c0 Delete type=0 #192
2023/11/29-22:14:16.923054 7fef56ffd6c0 Level-0 table #65: started 2024/05/23-11:38:26.915537 7f803fe006c0 Level-0 table #198: started
2023/11/29-22:14:16.923087 7fef56ffd6c0 Level-0 table #65: 0 bytes OK 2024/05/23-11:38:26.915581 7f803fe006c0 Level-0 table #198: 0 bytes OK
2023/11/29-22:14:16.952832 7fef56ffd6c0 Delete type=0 #63 2024/05/23-11:38:26.944084 7f803fe006c0 Delete type=0 #196
2023/11/29-22:14:16.953024 7fef56ffd6c0 Manual compaction at level-0 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end) 2024/05/23-11:38:26.981384 7f803fe006c0 Manual compaction at level-0 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end)
2023/11/29-22:14:16.953057 7fef56ffd6c0 Manual compaction at level-1 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end) 2024/05/23-11:38:26.981463 7f803fe006c0 Manual compaction at level-1 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2023/11/29-20:50:20.582005 7ff1ed3ff6c0 Recovering log #56 2024/05/23-11:35:06.278280 7f80474006c0 Recovering log #188
2023/11/29-20:50:20.593394 7ff1ed3ff6c0 Delete type=3 #54 2024/05/23-11:35:06.332353 7f80474006c0 Delete type=3 #186
2023/11/29-20:50:20.593446 7ff1ed3ff6c0 Delete type=0 #56 2024/05/23-11:35:06.332410 7f80474006c0 Delete type=0 #188
2023/11/29-22:03:29.577397 7fef56ffd6c0 Level-0 table #61: started 2024/05/23-11:35:52.250869 7f803fe006c0 Level-0 table #193: started
2023/11/29-22:03:29.577421 7fef56ffd6c0 Level-0 table #61: 0 bytes OK 2024/05/23-11:35:52.254343 7f803fe006c0 Level-0 table #193: 36654 bytes OK
2023/11/29-22:03:29.583760 7fef56ffd6c0 Delete type=0 #59 2024/05/23-11:35:52.260633 7f803fe006c0 Delete type=0 #191
2023/11/29-22:03:29.602081 7fef56ffd6c0 Manual compaction at level-0 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.270953 7f803fe006c0 Manual compaction at level-0 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end)
2023/11/29-22:03:29.602123 7fef56ffd6c0 Manual compaction at level-1 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.303626 7f803fe006c0 Manual compaction at level-1 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at '!items!y0G0VMyygxIj4Y7F' @ 76 : 1
2024/05/23-11:35:52.303648 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.307460 7f803fe006c0 Generated table #194@1: 19 keys, 36654 bytes
2024/05/23-11:35:52.307509 7f803fe006c0 Compacted 1@1 + 1@2 files => 36654 bytes
2024/05/23-11:35:52.313555 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.313756 7f803fe006c0 Delete type=2 #185
2024/05/23-11:35:52.313942 7f803fe006c0 Delete type=2 #193
2024/05/23-11:35:52.314103 7f803fe006c0 Manual compaction at level-1 from '!items!y0G0VMyygxIj4Y7F' @ 76 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/mutations/000031.ldb Normal file

Binary file not shown.

View File

1
packs/mutations/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000032

0
packs/mutations/LOCK Normal file
View File

8
packs/mutations/LOG Normal file
View File

@ -0,0 +1,8 @@
2024/05/23-11:36:26.429066 7f80460006c0 Recovering log #29
2024/05/23-11:36:26.438996 7f80460006c0 Delete type=3 #27
2024/05/23-11:36:26.439054 7f80460006c0 Delete type=0 #29
2024/05/23-11:38:27.243155 7f803fe006c0 Level-0 table #35: started
2024/05/23-11:38:27.243202 7f803fe006c0 Level-0 table #35: 0 bytes OK
2024/05/23-11:38:27.283099 7f803fe006c0 Delete type=0 #33
2024/05/23-11:38:27.283279 7f803fe006c0 Manual compaction at level-0 from '!items!Vnpf6cKVHyd3ugnY' @ 72057594037927935 : 1 .. '!items!Vnpf6cKVHyd3ugnY' @ 0 : 0; will stop at (end)
2024/05/23-11:38:27.283310 7f803fe006c0 Manual compaction at level-1 from '!items!Vnpf6cKVHyd3ugnY' @ 72057594037927935 : 1 .. '!items!Vnpf6cKVHyd3ugnY' @ 0 : 0; will stop at (end)

15
packs/mutations/LOG.old Normal file
View File

@ -0,0 +1,15 @@
2024/05/23-11:35:06.736762 7f8046a006c0 Recovering log #25
2024/05/23-11:35:06.788893 7f8046a006c0 Delete type=3 #23
2024/05/23-11:35:06.788978 7f8046a006c0 Delete type=0 #25
2024/05/23-11:35:52.397933 7f803fe006c0 Level-0 table #30: started
2024/05/23-11:35:52.401383 7f803fe006c0 Level-0 table #30: 582 bytes OK
2024/05/23-11:35:52.408461 7f803fe006c0 Delete type=0 #28
2024/05/23-11:35:52.438777 7f803fe006c0 Manual compaction at level-0 from '!items!Vnpf6cKVHyd3ugnY' @ 72057594037927935 : 1 .. '!items!Vnpf6cKVHyd3ugnY' @ 0 : 0; will stop at (end)
2024/05/23-11:35:52.438859 7f803fe006c0 Manual compaction at level-1 from '!items!Vnpf6cKVHyd3ugnY' @ 72057594037927935 : 1 .. '!items!Vnpf6cKVHyd3ugnY' @ 0 : 0; will stop at '!items!Vnpf6cKVHyd3ugnY' @ 3 : 1
2024/05/23-11:35:52.438874 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.442540 7f803fe006c0 Generated table #31@1: 1 keys, 582 bytes
2024/05/23-11:35:52.442555 7f803fe006c0 Compacted 1@1 + 1@2 files => 582 bytes
2024/05/23-11:35:52.448654 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.448721 7f803fe006c0 Delete type=2 #22
2024/05/23-11:35:52.448803 7f803fe006c0 Delete type=2 #30
2024/05/23-11:35:52.479889 7f803fe006c0 Manual compaction at level-1 from '!items!Vnpf6cKVHyd3ugnY' @ 3 : 1 .. '!items!Vnpf6cKVHyd3ugnY' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/origines/000195.ldb Normal file

Binary file not shown.

View File

View File

@ -1 +1 @@
MANIFEST-000063 MANIFEST-000196

View File

@ -1,8 +1,8 @@
2023/11/29-22:11:25.381917 7fef57fff6c0 Recovering log #61 2024/05/23-11:36:26.309345 7f80456006c0 Recovering log #193
2023/11/29-22:11:25.392824 7fef57fff6c0 Delete type=3 #59 2024/05/23-11:36:26.319454 7f80456006c0 Delete type=3 #191
2023/11/29-22:11:25.392930 7fef57fff6c0 Delete type=0 #61 2024/05/23-11:36:26.319584 7f80456006c0 Delete type=0 #193
2023/11/29-22:14:16.844154 7fef56ffd6c0 Level-0 table #66: started 2024/05/23-11:38:26.833035 7f803fe006c0 Level-0 table #199: started
2023/11/29-22:14:16.844182 7fef56ffd6c0 Level-0 table #66: 0 bytes OK 2024/05/23-11:38:26.833072 7f803fe006c0 Level-0 table #199: 0 bytes OK
2023/11/29-22:14:16.881638 7fef56ffd6c0 Delete type=0 #64 2024/05/23-11:38:26.870362 7f803fe006c0 Delete type=0 #197
2023/11/29-22:14:16.953004 7fef56ffd6c0 Manual compaction at level-0 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end) 2024/05/23-11:38:26.981334 7f803fe006c0 Manual compaction at level-0 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end)
2023/11/29-22:14:16.953040 7fef56ffd6c0 Manual compaction at level-1 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end) 2024/05/23-11:38:26.981425 7f803fe006c0 Manual compaction at level-1 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,15 @@
2023/11/29-20:50:20.557438 7ff1ecbfe6c0 Recovering log #57 2024/05/23-11:35:06.148229 7f80456006c0 Recovering log #189
2023/11/29-20:50:20.567859 7ff1ecbfe6c0 Delete type=3 #55 2024/05/23-11:35:06.199374 7f80456006c0 Delete type=3 #187
2023/11/29-20:50:20.567928 7ff1ecbfe6c0 Delete type=0 #57 2024/05/23-11:35:06.199441 7f80456006c0 Delete type=0 #189
2023/11/29-22:03:29.552686 7fef56ffd6c0 Level-0 table #62: started 2024/05/23-11:35:52.240294 7f803fe006c0 Level-0 table #194: started
2023/11/29-22:03:29.552886 7fef56ffd6c0 Level-0 table #62: 0 bytes OK 2024/05/23-11:35:52.244436 7f803fe006c0 Level-0 table #194: 32532 bytes OK
2023/11/29-22:03:29.559417 7fef56ffd6c0 Delete type=0 #60 2024/05/23-11:35:52.250742 7f803fe006c0 Delete type=0 #192
2023/11/29-22:03:29.559640 7fef56ffd6c0 Manual compaction at level-0 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.270939 7f803fe006c0 Manual compaction at level-0 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end)
2023/11/29-22:03:29.569352 7fef56ffd6c0 Manual compaction at level-1 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end) 2024/05/23-11:35:52.281258 7f803fe006c0 Manual compaction at level-1 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at '!items!xox7R7Uuuz0eGL0p' @ 109 : 1
2024/05/23-11:35:52.281270 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.285296 7f803fe006c0 Generated table #195@1: 23 keys, 32532 bytes
2024/05/23-11:35:52.285328 7f803fe006c0 Compacted 1@1 + 1@2 files => 32532 bytes
2024/05/23-11:35:52.291433 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.291544 7f803fe006c0 Delete type=2 #186
2024/05/23-11:35:52.291679 7f803fe006c0 Delete type=2 #194
2024/05/23-11:35:52.314072 7f803fe006c0 Manual compaction at level-1 from '!items!xox7R7Uuuz0eGL0p' @ 109 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/peuples/000031.ldb Normal file

Binary file not shown.

0
packs/peuples/000034.log Normal file
View File

1
packs/peuples/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000032

0
packs/peuples/LOCK Normal file
View File

8
packs/peuples/LOG Normal file
View File

@ -0,0 +1,8 @@
2024/05/23-11:36:26.441282 7f80474006c0 Recovering log #29
2024/05/23-11:36:26.452393 7f80474006c0 Delete type=3 #27
2024/05/23-11:36:26.452506 7f80474006c0 Delete type=0 #29
2024/05/23-11:38:27.198934 7f803fe006c0 Level-0 table #35: started
2024/05/23-11:38:27.198962 7f803fe006c0 Level-0 table #35: 0 bytes OK
2024/05/23-11:38:27.242954 7f803fe006c0 Delete type=0 #33
2024/05/23-11:38:27.283268 7f803fe006c0 Manual compaction at level-0 from '!items!5onfuCZmzugZ3PMs' @ 72057594037927935 : 1 .. '!items!qAmsD4MHgywYj6XV' @ 0 : 0; will stop at (end)
2024/05/23-11:38:27.283302 7f803fe006c0 Manual compaction at level-1 from '!items!5onfuCZmzugZ3PMs' @ 72057594037927935 : 1 .. '!items!qAmsD4MHgywYj6XV' @ 0 : 0; will stop at (end)

15
packs/peuples/LOG.old Normal file
View File

@ -0,0 +1,15 @@
2024/05/23-11:35:06.791733 7f80474006c0 Recovering log #25
2024/05/23-11:35:06.845539 7f80474006c0 Delete type=3 #23
2024/05/23-11:35:06.845613 7f80474006c0 Delete type=0 #25
2024/05/23-11:35:52.418615 7f803fe006c0 Level-0 table #30: started
2024/05/23-11:35:52.422508 7f803fe006c0 Level-0 table #30: 5215 bytes OK
2024/05/23-11:35:52.428577 7f803fe006c0 Delete type=0 #28
2024/05/23-11:35:52.438818 7f803fe006c0 Manual compaction at level-0 from '!items!5onfuCZmzugZ3PMs' @ 72057594037927935 : 1 .. '!items!qAmsD4MHgywYj6XV' @ 0 : 0; will stop at (end)
2024/05/23-11:35:52.459722 7f803fe006c0 Manual compaction at level-1 from '!items!5onfuCZmzugZ3PMs' @ 72057594037927935 : 1 .. '!items!qAmsD4MHgywYj6XV' @ 0 : 0; will stop at '!items!qAmsD4MHgywYj6XV' @ 12 : 1
2024/05/23-11:35:52.459744 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:35:52.463213 7f803fe006c0 Generated table #31@1: 4 keys, 5215 bytes
2024/05/23-11:35:52.463233 7f803fe006c0 Compacted 1@1 + 1@2 files => 5215 bytes
2024/05/23-11:35:52.469233 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:35:52.469300 7f803fe006c0 Delete type=2 #22
2024/05/23-11:35:52.469386 7f803fe006c0 Delete type=2 #30
2024/05/23-11:35:52.479911 7f803fe006c0 Manual compaction at level-1 from '!items!qAmsD4MHgywYj6XV' @ 12 : 1 .. '!items!qAmsD4MHgywYj6XV' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/pouvoirs/000112.ldb Normal file

Binary file not shown.

View File

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