Compare commits
No commits in common. "main" and "fvtt-wasteland-v11.0.5" have entirely different histories.
main
...
fvtt-waste
12
README.md
12
README.md
@ -1,14 +1,11 @@
|
|||||||
|
# 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 RPG from Titam France).
|
Unofficial system for Wasteland (French version 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).
|
||||||
@ -19,9 +16,8 @@ Les livres du jeu sont nécessaires pour jouer, et sont disponibles ici : http:/
|
|||||||
|
|
||||||
# Credits
|
# Credits
|
||||||
|
|
||||||
Wasteland is a property of Titam France/Sombres Projets.
|
Wasteland, le jeu de rôle de Sword & Sorcery, is a property of Titam France/Sombres Projets.
|
||||||
|
|
||||||
# Developmement
|
# Developmement
|
||||||
|
|
||||||
Code, CSS and automations : LeRatierBretonnien
|
LeRatierBretonnien
|
||||||
Compendiums : Pretre, LeRatierBretonnien
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 40 KiB |
Binary file not shown.
Before Width: | Height: | Size: 40 KiB |
@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
# 11.0.22
|
|
||||||
|
|
||||||
- Version initiale
|
|
||||||
-
|
|
45
lang/fr.json
45
lang/fr.json
@ -1,25 +1,24 @@
|
|||||||
{
|
{
|
||||||
"TYPES": {
|
"ACTOR": {
|
||||||
"Item": {
|
"TypePersonnage": "Personnage",
|
||||||
"arme": "Arme",
|
"TypePNJ": "PNJ"
|
||||||
"competence": "Compétence",
|
},
|
||||||
"protection": "Protection",
|
|
||||||
"monnaie": "Monnaie",
|
"ITEM": {
|
||||||
"equipement": "Equipement",
|
"TypeArme": "Arme",
|
||||||
"capacite": "Capacité",
|
"TypeCompetence": "Compétence",
|
||||||
"origine": "Origine",
|
"TypeProtection": "Protection",
|
||||||
"heritage": "Héritage",
|
"TypeMonnaie": "Monnaie",
|
||||||
"metier": "Métier",
|
"TypeEquipement": "Equipement",
|
||||||
"bouclier": "Bouclier",
|
"TypeCapacite": "Capacité",
|
||||||
"pouvoir": "Pouvoir",
|
"TypeOrigine": "Origine",
|
||||||
"artifex": "Artifex",
|
"TypeHeritage": "Héritage",
|
||||||
"mutation": "Mutation",
|
"TypeMetier": "Métier",
|
||||||
"charme": "Charme",
|
"TypeBouclier": "Bouclier",
|
||||||
"peuple": "Peuple"
|
"TypePouvoir": "Pouvoir",
|
||||||
},
|
"TypeArtifex": "Artifex",
|
||||||
"Actor": {
|
"TypeMutation": "Mutation",
|
||||||
"personnage": "Personnage",
|
"TypeCharme": "Charme",
|
||||||
"pnj": "PNJ"
|
"TypePeuple": "Peuple"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -12,7 +12,7 @@ export class WastelandActorSheet extends ActorSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
return 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 = foundry.utils.duplicate(this.object)
|
const objectData = duplicate(this.object)
|
||||||
let actorData = objectData
|
let actorData = objectData
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
@ -40,32 +40,21 @@ 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: foundry.utils.duplicate(this.actor.getWeapons()),
|
armes: duplicate(this.actor.getWeapons()),
|
||||||
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
protections: duplicate(this.actor.getArmors()),
|
||||||
pouvoirs:foundry.utils.duplicate(this.actor.getPouvoirs()),
|
pouvoirs:duplicate(this.actor.getPouvoirs()),
|
||||||
dons: foundry.utils.duplicate(this.actor.getDons()),
|
origine: duplicate(this.actor.getOrigine() || {}),
|
||||||
hubrises: foundry.utils.duplicate(this.actor.getHubris()),
|
heritage: duplicate(this.actor.getHeritage() || {}),
|
||||||
tours:foundry.utils.duplicate(this.actor.getTours()),
|
metier: duplicate(this.actor.getMetier() || {}),
|
||||||
artifex: foundry.utils.duplicate(this.actor.getArtifex()),
|
|
||||||
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: foundry.utils.duplicate(game.system.wasteland.config),
|
config: duplicate(game.system.wasteland.config),
|
||||||
capacites: foundry.utils.duplicate(this.actor.getCapacites()),
|
equipements: duplicate(this.actor.getEquipments()),
|
||||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
monnaies: duplicate(this.actor.getMonnaies()),
|
||||||
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;
|
||||||
|
|
||||||
@ -124,12 +113,6 @@ export class WastelandActorSheet extends ActorSheet {
|
|||||||
let compId = li.data("item-id")
|
let compId = li.data("item-id")
|
||||||
this.actor.rollCompetence(attrKey, compId)
|
this.actor.rollCompetence(attrKey, compId)
|
||||||
})
|
})
|
||||||
html.find('.roll-charme').click((event) => {
|
|
||||||
const li = $(event.currentTarget).parents(".item")
|
|
||||||
let charmeId = li.data("item-id")
|
|
||||||
this.actor.rollCharme(charmeId)
|
|
||||||
})
|
|
||||||
|
|
||||||
html.find('.roll-pouvoir').click((event) => {
|
html.find('.roll-pouvoir').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let pouvoirId = li.data("item-id")
|
let pouvoirId = li.data("item-id")
|
||||||
|
@ -37,12 +37,11 @@ export class WastelandActor extends Actor {
|
|||||||
return actor;
|
return actor;
|
||||||
}
|
}
|
||||||
|
|
||||||
const skills = await WastelandUtility.loadCompendium("fvtt-wasteland.skills")
|
|
||||||
if (data.type == 'personnage') {
|
if (data.type == 'personnage') {
|
||||||
|
const skills = await WastelandUtility.loadCompendium("fvtt-wasteland.skills")
|
||||||
data.items = skills.map(i => i.toObject())
|
data.items = skills.map(i => i.toObject())
|
||||||
}
|
}
|
||||||
if (data.type == 'creature') {
|
if (data.type == 'pnj') {
|
||||||
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);
|
||||||
@ -50,10 +49,10 @@ export class WastelandActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareArme(arme) {
|
prepareArme(arme) {
|
||||||
arme = foundry.utils.duplicate(arme)
|
arme = 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 = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
|
arme.system.competence = 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
|
||||||
@ -62,7 +61,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 = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
|
arme.system.competence = 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
|
||||||
@ -74,9 +73,9 @@ export class WastelandActor extends Actor {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareBouclier(bouclier) {
|
prepareBouclier(bouclier) {
|
||||||
bouclier = foundry.utils.duplicate(bouclier)
|
bouclier = duplicate(bouclier)
|
||||||
let combat = this.getCombatValues()
|
let combat = this.getCombatValues()
|
||||||
bouclier.system.competence = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
|
bouclier.system.competence = 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
|
||||||
@ -107,46 +106,18 @@ export class WastelandActor extends Actor {
|
|||||||
WastelandUtility.sortArrayObjectsByName(items)
|
WastelandUtility.sortArrayObjectsByName(items)
|
||||||
return items
|
return items
|
||||||
}
|
}
|
||||||
getCharmes() {
|
|
||||||
let items = this.items.filter(item => item.type=="charme" && item.system?.charmetype == "charme") || []
|
|
||||||
WastelandUtility.sortArrayObjectsByName(items)
|
|
||||||
return items
|
|
||||||
}
|
|
||||||
getTours() {
|
|
||||||
let items = this.items.filter(item => item.type=="charme" && item.system?.charmetype == "tour") || []
|
|
||||||
WastelandUtility.sortArrayObjectsByName(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")
|
||||||
}
|
}
|
||||||
@ -160,7 +131,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 = foundry.utils.duplicate(item)
|
item = 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)
|
||||||
@ -222,7 +193,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) * 2) + 5
|
let newPsyche = (this.system.attributs.cla.value + this.system.attributs.tre.value) * this.system.biodata.psychemultiplier + 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 })
|
||||||
}
|
}
|
||||||
@ -236,17 +207,12 @@ export class WastelandActor extends Actor {
|
|||||||
|
|
||||||
super._preUpdate(changed, options, user);
|
super._preUpdate(changed, options, user);
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
|
||||||
incDecSante(value) {
|
|
||||||
let sante = foundry.utils.duplicate(this.system.sante)
|
|
||||||
sante.letaux += value
|
|
||||||
this.update({ 'system.sante': sante })
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
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 = foundry.utils.duplicate(item)
|
item = duplicate(item)
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
@ -301,7 +267,7 @@ export class WastelandActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
subPointsPsyche(value) {
|
subPointsPsyche(value) {
|
||||||
let psyche = foundry.utils.duplicate(this.system.psyche)
|
let psyche = duplicate(this.system.psyche)
|
||||||
psyche.currentmax -= value
|
psyche.currentmax -= value
|
||||||
this.update( {'system.psyche': psyche})
|
this.update( {'system.psyche': psyche})
|
||||||
}
|
}
|
||||||
@ -340,13 +306,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(foundry.utils.duplicate(game.actors.get(id)));
|
subActors.push(duplicate(game.actors.get(id)));
|
||||||
}
|
}
|
||||||
return subActors;
|
return subActors;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addSubActor(subActorId) {
|
async addSubActor(subActorId) {
|
||||||
let subActors = foundry.utils.duplicate(this.system.subactors);
|
let subActors = duplicate(this.system.subactors);
|
||||||
subActors.push(subActorId);
|
subActors.push(subActorId);
|
||||||
await this.update({ 'system.subactors': subActors });
|
await this.update({ 'system.subactors': subActors });
|
||||||
}
|
}
|
||||||
@ -377,7 +343,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 = foundry.utils.duplicate(comp.system.predilections)
|
let pred = 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 }])
|
||||||
}
|
}
|
||||||
@ -400,7 +366,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 = foundry.utils.duplicate(arme)
|
bestArme = duplicate(arme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return bestArme
|
return bestArme
|
||||||
@ -417,66 +383,57 @@ 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 = 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 = foundry.utils.duplicate(this.system.attributs[attrKey])
|
rollData.attr = duplicate(this.system.attributs[attrKey])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (compId) {
|
if (compId) {
|
||||||
rollData.competence = foundry.utils.duplicate(this.items.get(compId) || {})
|
rollData.competence = duplicate(this.items.get(compId) || {})
|
||||||
rollData.actionImg = rollData.competence?.img
|
rollData.actionImg = rollData.competence?.img
|
||||||
}
|
}
|
||||||
if (compName) {
|
if (compName) {
|
||||||
rollData.competence = foundry.utils.duplicate(this.items.find( item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
rollData.competence = 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 launchRoll(rollData) {
|
async rollAttribut(attrKey) {
|
||||||
console.log("RollData", rollData)
|
let rollData = this.getCommonRollData(attrKey)
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
rollCompetence(attrKey, compId) {
|
async rollCompetence(attrKey, compId) {
|
||||||
let rollData = this.getCommonRollData(attrKey, compId)
|
let rollData = this.getCommonRollData(attrKey, compId)
|
||||||
console.log("RollDatra", rollData)
|
console.log("RollDatra", rollData)
|
||||||
this.launchRoll(rollData)
|
let rollDialog = await WastelandRollDialog.create(this, rollData)
|
||||||
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollCharme(charmeId) {
|
async rollPouvoir(pouvoirId) {
|
||||||
let rollData = this.getCommonRollData("cla")
|
let comp = this.items.find(comp => comp.type == "competence" && comp.name.toLowerCase() == "savoir : runes")
|
||||||
rollData.charme = foundry.utils.duplicate(this.items.get(charmeId) || {})
|
if ( !comp) {
|
||||||
rollData.charmeDice = "1d4"
|
ui.notifications.warn("La compétence Savoirs : Runes n'a pas été trouvée, abandon.")
|
||||||
this.launchRoll(rollData)
|
return
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async rollPouvoir(pouvoirId) {
|
|
||||||
let pouvoir = foundry.utils.duplicate(this.items.get(pouvoirId) || {})
|
|
||||||
if (pouvoir?.system) {
|
|
||||||
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
|
|
||||||
}
|
|
||||||
rollData.pouvoir = pouvoir
|
|
||||||
rollData.difficulte = pouvoir.system.seuil
|
|
||||||
this.launchRoll(rollData)
|
|
||||||
}
|
}
|
||||||
}
|
let rollData = this.getCommonRollData("cla", undefined, "Savoir : Runes")
|
||||||
|
rollData.rune = duplicate(this.items.get(runeId) || {})
|
||||||
|
rollData.difficulte = rollData.rune?.system?.seuil || 0
|
||||||
|
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)
|
||||||
@ -488,7 +445,9 @@ 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
|
||||||
this.launchRoll(rollData)
|
console.log("ARME!", rollData)
|
||||||
|
let rollDialog = await WastelandRollDialog.create(this, rollData)
|
||||||
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -500,7 +459,7 @@ export class WastelandActor extends Actor {
|
|||||||
if (arme.type == "bouclier") {
|
if (arme.type == "bouclier") {
|
||||||
arme = this.prepareBouclier(arme)
|
arme = this.prepareBouclier(arme)
|
||||||
}
|
}
|
||||||
let roll = await new Roll(arme.system.totalDegats).roll()
|
let roll = new Roll(arme.system.totalDegats).roll({ async: false })
|
||||||
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,
|
||||||
|
@ -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 = await new Roll("1d10 + "+initBonus).roll()
|
let roll = new Roll("1d10 + "+initBonus).roll({ async: false})
|
||||||
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 } ]);
|
||||||
|
@ -6,52 +6,6 @@ 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: {
|
|
||||||
tour: "Tour",
|
|
||||||
charme: "Charme",
|
|
||||||
},
|
|
||||||
dices: {
|
|
||||||
"1d4": "1d4",
|
|
||||||
"1d6": "1d6",
|
|
||||||
"1d8": "1d8",
|
|
||||||
"1d10": "1d10",
|
|
||||||
"1d12": "1d12",
|
|
||||||
"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)"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -9,7 +9,7 @@ export class WastelandItemSheet extends ItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
return 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 = foundry.utils.duplicate(this.object)
|
const objectData = 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: foundry.utils.duplicate(game.system.wasteland.config),
|
config: 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 = foundry.utils.duplicate(WastelandUtility.data(this.item));
|
let chatData = 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 = foundry.utils.duplicate(this.object.system.predilections)
|
let pred = 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 = foundry.utils.duplicate(this.object.system.predilections)
|
let pred = 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 = foundry.utils.duplicate(this.object.system.predilections)
|
let pred = 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 = foundry.utils.duplicate(this.object.system.predilections)
|
let pred = 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 })
|
||||||
})
|
})
|
||||||
|
@ -16,9 +16,6 @@ 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",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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 { WastelandCreatureSheet } from "./wasteland-creature-sheet.js";
|
//import { WastelandNPCSheet } from "./wasteland-npc-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";
|
||||||
@ -28,7 +28,7 @@ Hooks.once("init", async function () {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// preload handlebars templates
|
// preload handlebars templates
|
||||||
WastelandUtility.preloadHandlebarsTemplates();
|
WastelandUtility.preloadHandlebarsTemplates();
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Set an initiative formula for the system
|
// Set an initiative formula for the system
|
||||||
CONFIG.Combat.initiative = {
|
CONFIG.Combat.initiative = {
|
||||||
@ -54,13 +54,13 @@ 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", WastelandCreatureSheet, { types: ["creature"], makeDefault: false });
|
//Actors.registerSheet("fvtt-wasteland", WastelandNPCSheet, { types: ["npc"], makeDefault: false });
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
Items.unregisterSheet("core", ItemSheet);
|
||||||
Items.registerSheet("fvtt-wasteland", WastelandItemSheet, { makeDefault: true })
|
Items.registerSheet("fvtt-wasteland", WastelandItemSheet, { makeDefault: true })
|
||||||
|
|
||||||
WastelandUtility.init();
|
WastelandUtility.init();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -69,22 +69,36 @@ 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 Wasteland !</strong>
|
<strong>Bienvenue dans les Jeunes Royaumes de 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, 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>
|
<p>Système développé par LeRatierBretonnien, support sur le <a href="https://discord.gg/pPSDNJk">Discord FR de Foundry</a>.</p>
|
||||||
` });
|
` });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async function importDefaultScene() {
|
// Register world usage statistics
|
||||||
let exists = game.scenes.find(j => j.name == "Accueil");
|
function registerUsageCount( registerKey ) {
|
||||||
if (!exists) {
|
if ( game.user.isGM ) {
|
||||||
const scenes = await WastelandUtility.loadCompendium("fvtt-wasteland.scenes")
|
game.settings.register(registerKey, "world-key", {
|
||||||
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
name: "Unique world key",
|
||||||
await game.scenes.documentClass.create(newDocuments);
|
scope: "world",
|
||||||
game.scenes.find(i => i.name == "Accueil").activate();
|
config: false,
|
||||||
|
default: "",
|
||||||
|
type: String
|
||||||
|
});
|
||||||
|
|
||||||
|
let worldKey = game.settings.get(registerKey, "world-key")
|
||||||
|
if ( worldKey == undefined || worldKey == "" ) {
|
||||||
|
worldKey = randomID(32)
|
||||||
|
game.settings.set(registerKey, "world-key", worldKey )
|
||||||
|
}
|
||||||
|
// Simple API counter
|
||||||
|
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}"`
|
||||||
|
//$.ajaxSetup({
|
||||||
|
//headers: { 'Access-Control-Allow-Origin': '*' }
|
||||||
|
//})
|
||||||
|
$.ajax(regURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +108,6 @@ async function importDefaultScene() {
|
|||||||
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 !");
|
||||||
@ -103,24 +116,9 @@ 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 !");
|
registerUsageCount('fvtt-wasteland')
|
||||||
ChatMessage.create({
|
|
||||||
content: "<b>ATTENTION</b> Le token du joueur " + game.user.name + " n'est pas connecté à l'acteur !",
|
|
||||||
user: game.user._id
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -3,51 +3,35 @@ import { WastelandUtility } from "./wasteland-utility.js";
|
|||||||
export class WastelandRollDialog extends Dialog {
|
export class WastelandRollDialog extends Dialog {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, rollData) {
|
static async create(actor, rollData ) {
|
||||||
|
|
||||||
let options = { classes: ["WastelandDialog"], width: 340, height: 'fit-content', 'z-index': 99999 };
|
let options = { classes: ["WastelandDialog"], width: 340, height: 'fit-content', 'z-index': 99999 };
|
||||||
let html = await renderTemplate('systems/fvtt-wasteland/templates/roll-dialog-generic.html', rollData);
|
let html = await renderTemplate('systems/fvtt-wasteland/templates/roll-dialog-generic.html', rollData);
|
||||||
|
|
||||||
return new WastelandRollDialog(actor, rollData, html, options);
|
return new WastelandRollDialog(actor, rollData, html, options );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
constructor(actor, rollData, html, options, close = undefined) {
|
constructor(actor, rollData, html, options, close = undefined) {
|
||||||
let buttons = {
|
|
||||||
rolld10: {
|
|
||||||
icon: '<i class="fas fa-check"></i>',
|
|
||||||
label: "Lancer 1d10",
|
|
||||||
callback: () => { this.roll("1d10") }
|
|
||||||
},
|
|
||||||
rolld20: {
|
|
||||||
icon: '<i class="fas fa-check"></i>',
|
|
||||||
label: "Lancer 1d20",
|
|
||||||
callback: () => { this.roll("1d20") }
|
|
||||||
},
|
|
||||||
cancel: {
|
|
||||||
icon: '<i class="fas fa-times"></i>',
|
|
||||||
label: "Annuler",
|
|
||||||
callback: () => { this.close() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (rollData.charme) {
|
|
||||||
buttons = {
|
|
||||||
roll: {
|
|
||||||
icon: '<i class="fas fa-check"></i>',
|
|
||||||
label: "Lancer",
|
|
||||||
callback: () => { this.roll() }
|
|
||||||
},
|
|
||||||
cancel: {
|
|
||||||
icon: '<i class="fas fa-times"></i>',
|
|
||||||
label: "Annuler",
|
|
||||||
callback: () => { this.close() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let conf = {
|
let conf = {
|
||||||
title: "Test de Capacité",
|
title: "Test de Capacité",
|
||||||
content: html,
|
content: html,
|
||||||
buttons: buttons,
|
buttons: {
|
||||||
|
rolld10: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "Lancer 1d10",
|
||||||
|
callback: () => { this.roll("1d10") }
|
||||||
|
},
|
||||||
|
rolld20: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "Lancer 1d20",
|
||||||
|
callback: () => { this.roll("1d20") }
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
icon: '<i class="fas fa-times"></i>',
|
||||||
|
label: "Annuler",
|
||||||
|
callback: () => { this.close() }
|
||||||
|
} },
|
||||||
close: close
|
close: close
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,9 +42,9 @@ export class WastelandRollDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
roll(dice) {
|
roll ( dice) {
|
||||||
this.rollData.mainDice = dice
|
this.rollData.mainDice = dice
|
||||||
WastelandUtility.rollWasteland(this.rollData)
|
WastelandUtility.rollWasteland( this.rollData )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -72,28 +56,24 @@ export class WastelandRollDialog extends Dialog {
|
|||||||
function onLoad() {
|
function onLoad() {
|
||||||
}
|
}
|
||||||
$(function () { onLoad(); });
|
$(function () { onLoad(); });
|
||||||
|
|
||||||
html.find('#modificateur').change(async (event) => {
|
html.find('#modificateur').change(async (event) => {
|
||||||
this.rollData.modificateur = Number(event.currentTarget.value)
|
this.rollData.modificateur = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#difficulte').change(async (event) => {
|
html.find('#difficulte').change(async (event) => {
|
||||||
this.rollData.difficulte = Number(event.currentTarget.value)
|
this.rollData.difficulte = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#attrKey').change(async (event) => {
|
html.find('#attrKey').change(async (event) => {
|
||||||
this.rollData.attrKey = String(event.currentTarget.value)
|
this.rollData.attrKey = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#runemode').change(async (event) => {
|
html.find('#runemode').change(async (event) => {
|
||||||
this.rollData.runemode = String(event.currentTarget.value)
|
this.rollData.runemode = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#runeame').change(async (event) => {
|
html.find('#runeame').change(async (event) => {
|
||||||
this.rollData.runeame = Number(event.currentTarget.value)
|
this.rollData.runeame = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#doubleD20').change(async (event) => {
|
html.find('#doubleD20').change(async (event) => {
|
||||||
this.rollData.doubleD20 = event.currentTarget.checked
|
this.rollData.doubleD20 = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#charmeDice').change(async (event) => {
|
|
||||||
this.rollData.charmeDice = String(event.currentTarget.value)
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,20 +2,6 @@
|
|||||||
import { WastelandCombat } from "./wasteland-combat.js";
|
import { WastelandCombat } from "./wasteland-combat.js";
|
||||||
import { WastelandCommands } from "./wasteland-commands.js";
|
import { WastelandCommands } from "./wasteland-commands.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
const __contrecouptCharme = {
|
|
||||||
1 : {name: "Effet chromatique", description: "le corps du kobold prend des teintes aussi étranges que voyantes. L'effet s’estompe progressivement et 24 heures plus tard, le kobold retrouve ses couleurs d’origine." },
|
|
||||||
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: "le kobold ne doit plus parler» pendant les prochaines 24 heures. S'il le fait malgré tout, les effets de son tour s’arrêtent." },
|
|
||||||
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 d’un sommeil enchanté dont rien ne pourra le réveiller." },
|
|
||||||
9 : {name: "Somnolence", description: "le kobold devient somnolent. Il n’arrive pas à se concentrer même sur une tâche simple, bäille sans arrêt, traîne les pieds et n’agit plus que de mauvaise grâce. Cela dure jusqu’à ce qu'il ait dormi au moins 12 heures." },
|
|
||||||
11 : {name: "Manie incontrôlable", description: "le kobold est pris d’une 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 l’effet s’inverse 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: "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 (s’il doit en perdre plus qu'il n’en a, il tombe simplement à 0). Ces points perdus pourront cependant être regagnés normalement." },
|
|
||||||
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: "le kobold a une brève vision de pure horreur. Il perd 1420 points de Psyché {s'il doit en perdre plus qu'il n’en a, il tombe à 0)." },
|
|
||||||
19 : {name: "Anémie Kobold", description: "le kobold se met à saigner du nez, des oreilles et même d’autres endroits. Il perd 1420 point(s) de Santé." }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class WastelandUtility {
|
export class WastelandUtility {
|
||||||
|
|
||||||
@ -114,28 +100,6 @@ 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -164,7 +128,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 = foundry.utils.duplicate(actor.getCompetence(rollData.competence._id))
|
rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
|
||||||
await WastelandUtility.rollWasteland(rollData)
|
await WastelandUtility.rollWasteland(rollData)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -174,7 +138,8 @@ 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);
|
||||||
}
|
}
|
||||||
@ -208,6 +173,15 @@ 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 = ""
|
||||||
@ -232,7 +206,7 @@ export class WastelandUtility {
|
|||||||
|
|
||||||
let id = rollData.rollId;
|
let id = rollData.rollId;
|
||||||
let oldRollData = this.rollDataStore[id] || {};
|
let oldRollData = this.rollDataStore[id] || {};
|
||||||
let newRollData = foundry.utils.mergeObject(oldRollData, rollData);
|
let newRollData = mergeObject(oldRollData, rollData);
|
||||||
this.rollDataStore[id] = newRollData;
|
this.rollDataStore[id] = newRollData;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -304,51 +278,26 @@ export class WastelandUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async computeResult(rollData, actor) {
|
static computeResult(rollData) {
|
||||||
if (rollData.charme) {
|
if (rollData.mainDice == "1d20") {
|
||||||
let resultIndex = false
|
let diceValue = rollData.roll.terms[0].results[0].result
|
||||||
let resTab = foundry.utils.duplicate(rollData.charme.system.resultats)
|
diceValue *= (rollData.doubleD20) ? 2 : 1
|
||||||
for(let id in resTab) {
|
//console.log("PAIR/IMP", diceValue)
|
||||||
let res = resTab[id]
|
if (diceValue % 2 == 1) {
|
||||||
if (!resultIndex && rollData.finalResult >= res.value) {
|
//console.log("PAIR/IMP2", diceValue)
|
||||||
resultIndex = id;
|
rollData.finalResult -= rollData.roll.terms[0].results[0].result // Substract value
|
||||||
|
if (diceValue == 1 || diceValue == 11) {
|
||||||
|
rollData.isDramatique = true
|
||||||
|
rollData.isSuccess = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (resultIndex) {
|
}
|
||||||
rollData.charmeDuree = rollData.charme.system.resultats[resultIndex].description
|
|
||||||
}
|
//console.log("Result : ", rollData)
|
||||||
let effectRoll = await new Roll(rollData.charmeDice).roll()
|
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
||||||
if (rollData.charme.system.charmetype == "tour") {
|
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
||||||
rollData.contrecoupResult = effectRoll.total
|
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
||||||
if (rollData.contrecoupResult % 2 == 1) {
|
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
||||||
rollData.contrecoup = __contrecouptCharme[rollData.contrecoupResult]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (rollData.charme.system.charmetype == "charme") {
|
|
||||||
rollData.charmeSante = effectRoll.total
|
|
||||||
actor.incDecSante(rollData.charmeSante)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (rollData.mainDice == "1d20") {
|
|
||||||
let diceValue = rollData.roll.terms[0].results[0].result
|
|
||||||
diceValue *= (rollData.doubleD20) ? 2 : 1
|
|
||||||
//console.log("PAIR/IMP", diceValue)
|
|
||||||
if (diceValue % 2 == 1) {
|
|
||||||
//console.log("PAIR/IMP2", diceValue)
|
|
||||||
rollData.finalResult -= rollData.roll.terms[0].results[0].result // Substract value
|
|
||||||
if (diceValue == 1 || diceValue == 11) {
|
|
||||||
rollData.isDramatique = true
|
|
||||||
rollData.isSuccess = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("Result : ", rollData)
|
|
||||||
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
|
||||||
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
|
||||||
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
|
||||||
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,41 +310,55 @@ 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 = foundry.utils.duplicate(actor.system.attributs[rollData.attrKey])
|
rollData.attr = duplicate(actor.system.attributs[rollData.attrKey])
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rollData.charme) {
|
rollData.diceFormula = rollData.mainDice
|
||||||
rollData.diceFormula = rollData.charmeDice
|
if (rollData.doubleD20) { // Multiply result !
|
||||||
} else {
|
rollData.diceFormula += "*2"
|
||||||
rollData.diceFormula = rollData.mainDice
|
if (!rollData.isReroll) {
|
||||||
if (rollData.doubleD20) { // Multiply result !
|
actor.changeEclat(-1)
|
||||||
rollData.diceFormula += "*2"
|
}
|
||||||
if (!rollData.isReroll) {
|
|
||||||
actor.changeEclat(-1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log("BEFORE COMP", rollData)
|
//console.log("BEFORE COMP", rollData)
|
||||||
if (rollData.competence) {
|
if (rollData.competence) {
|
||||||
rollData.predilections = foundry.utils.duplicate(rollData.competence.system.predilections.filter(pred => !pred.used) || [])
|
rollData.predilections = 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 {
|
||||||
rollData.diceFormula += `+${rollData.attr.value}*2+${rollData.modificateur}`
|
rollData.diceFormula += `+${rollData.attr.value}*2+${rollData.modificateur}`
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rollData.arme && rollData.arme.type == "arme") {
|
if (rollData.arme && rollData.arme.type == "arme") {
|
||||||
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
||||||
}
|
}
|
||||||
|
|
||||||
let myRoll = await new Roll(rollData.diceFormula).roll()
|
if (rollData.rune) {
|
||||||
|
rollData.runeduree = Math.ceil((rollData.runeame + 3) / 3)
|
||||||
|
if (rollData.runemode == "inscrire") {
|
||||||
|
rollData.runeduree *= 2
|
||||||
|
}
|
||||||
|
if (rollData.runemode == "prononcer") {
|
||||||
|
rollData.runeduree = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
||||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
rollData.roll = foundry.utils.duplicate(myRoll)
|
rollData.roll = 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
|
||||||
await this.computeResult(rollData, actor)
|
this.computeResult(rollData)
|
||||||
|
|
||||||
|
if (rollData.rune) {
|
||||||
|
let subAme = rollData.runeame
|
||||||
|
if (rollData.isEchec && !rollData.isDramatique) {
|
||||||
|
subAme = Math.ceil((subAme + 1) / 2)
|
||||||
|
}
|
||||||
|
actor.subPointsAme(rollData.runemode, subAme)
|
||||||
|
}
|
||||||
|
|
||||||
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)
|
||||||
@ -407,13 +370,13 @@ export class WastelandUtility {
|
|||||||
static async bonusRollWasteland(rollData) {
|
static async bonusRollWasteland(rollData) {
|
||||||
rollData.bonusFormula = rollData.addedBonus
|
rollData.bonusFormula = rollData.addedBonus
|
||||||
|
|
||||||
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
let bonusRoll = new Roll(rollData.bonusFormula).roll({ async: false })
|
||||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||||
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
rollData.bonusRoll = duplicate(bonusRoll)
|
||||||
|
|
||||||
rollData.finalResult += rollData.bonusRoll.total
|
rollData.finalResult += rollData.bonusRoll.total
|
||||||
|
|
||||||
await this.computeResult(rollData)
|
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)
|
||||||
@ -443,7 +406,7 @@ export class WastelandUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static blindMessageToGM(chatOptions) {
|
static blindMessageToGM(chatOptions) {
|
||||||
let chatGM = foundry.utils.duplicate(chatOptions);
|
let chatGM = 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);
|
||||||
@ -505,7 +468,7 @@ export class WastelandUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getBasicRollData() {
|
static getBasicRollData() {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
rollId: foundry.utils.randomID(16),
|
rollId: 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(),
|
||||||
|
BIN
packs/armes/000005.ldb
Normal file
BIN
packs/armes/000005.ldb
Normal file
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000171
|
MANIFEST-000010
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/05/23-11:36:26.361119 7f80456006c0 Recovering log #168
|
2023/11/28-21:10:45.936814 7fef577fe6c0 Recovering log #8
|
||||||
2024/05/23-11:36:26.371702 7f80456006c0 Delete type=3 #166
|
2023/11/28-21:10:45.999576 7fef577fe6c0 Delete type=3 #6
|
||||||
2024/05/23-11:36:26.371759 7f80456006c0 Delete type=0 #168
|
2023/11/28-21:10:45.999713 7fef577fe6c0 Delete type=0 #8
|
||||||
2024/05/23-11:38:27.058615 7f803fe006c0 Level-0 table #174: started
|
2023/11/28-21:42:12.890060 7fef56ffd6c0 Level-0 table #13: started
|
||||||
2024/05/23-11:38:27.058646 7f803fe006c0 Level-0 table #174: 0 bytes OK
|
2023/11/28-21:42:12.890138 7fef56ffd6c0 Level-0 table #13: 0 bytes OK
|
||||||
2024/05/23-11:38:27.093797 7f803fe006c0 Delete type=0 #172
|
2023/11/28-21:42:12.896649 7fef56ffd6c0 Delete type=0 #11
|
||||||
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/28-21:42:12.896958 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.127630 7f803fe006c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
|
2023/11/28-21:42:12.896986 7fef56ffd6c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,8 @@
|
|||||||
2024/05/23-11:35:06.400918 7f80456006c0 Recovering log #164
|
2023/11/28-21:00:12.498801 7fef57fff6c0 Recovering log #4
|
||||||
2024/05/23-11:35:06.459624 7f80456006c0 Delete type=3 #162
|
2023/11/28-21:00:12.509763 7fef57fff6c0 Delete type=3 #2
|
||||||
2024/05/23-11:35:06.459697 7f80456006c0 Delete type=0 #164
|
2023/11/28-21:00:12.509888 7fef57fff6c0 Delete type=0 #4
|
||||||
2024/05/23-11:35:52.325511 7f803fe006c0 Level-0 table #169: started
|
2023/11/28-21:10:40.936880 7fef56ffd6c0 Level-0 table #9: started
|
||||||
2024/05/23-11:35:52.328985 7f803fe006c0 Level-0 table #169: 9019 bytes OK
|
2023/11/28-21:10:40.936944 7fef56ffd6c0 Level-0 table #9: 0 bytes OK
|
||||||
2024/05/23-11:35:52.335531 7f803fe006c0 Delete type=0 #167
|
2023/11/28-21:10:40.985508 7fef56ffd6c0 Delete type=0 #7
|
||||||
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/28-21:10:41.022162 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.367167 7f803fe006c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at '!items!wv5EiePmPTpqFutt' @ 158 : 1
|
2023/11/28-21:10:41.022261 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.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)
|
|
||||||
|
BIN
packs/armes/MANIFEST-000010
Normal file
BIN
packs/armes/MANIFEST-000010
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000032
|
|
@ -1,8 +0,0 @@
|
|||||||
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)
|
|
@ -1,15 +0,0 @@
|
|||||||
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.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000044
|
|
@ -1,8 +0,0 @@
|
|||||||
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)
|
|
@ -1,15 +0,0 @@
|
|||||||
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.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000032
|
|
@ -1,8 +0,0 @@
|
|||||||
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)
|
|
@ -1,15 +0,0 @@
|
|||||||
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.
30
packs/dons.db
Normal file
30
packs/dons.db
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{"name":"Protection du Sorcier","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L’Élu est protégé contre les attaques des créatures nées ou invoquées par la sorcellerie (un type d’Élémentaire, les Démons, les Automata…). La protection dont il bénéficie dépend du nombre de points d’Âme sacrifiés.</p>","allegeance":"chaos","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d’Âme pour 1 point de protection. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour 2 points de protection. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un 3 points de protection. Accès réservé 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’Élu a conscience du tissu de la réalité. Il peut percevoir les passages et les portails menant vers d’autres plans dans une zone de 10 mètres par point d’Aspect chaotique grâce à un simple test de Clairvoyance + Perception / 15. S’il ignore l’existence de ce passage et qu’il passe devant, le MJ peut faire un test de Clairvoyance + Perception / 25 pour l’Élu derrière son écran.</p>","allegeance":"chaos","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<p>1 point d’Â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é de l’Élu sont recalculés en ajoutant à [(Puissance + Trempe) x 2]+ 5 le nombre de points d’Âme sacrifiés. Ce Don ne peut être pris qu’une seule fois même si l’Élu conclut plusieurs Pactes.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d’Âme par point de Santé supplémentaire, pour un maximum égal à l’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’Élu récupère deux fois plus vite ses points d’Â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’Â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’Élu gagne un trait du Chaos qu’il tire au hasard dans le tableau de la page 185 avec un d20. Il peut prendre ce Don trois fois. S’il tire un trait qu’il possède déjà, il doit relancer le d20. Ces traits sont permanents et définitifs, à moins que les Seigneurs du Chaos n’en décident autrement, notamment si l’Élu les dissimule trop à leur goût alors qu’il n’y est pas absolument contraint par des impératifs de survie immédiats.</p>","allegeance":"chaos","prerequis":"aucun","sacrifice":"<p>2 points d’Âme par Trait chaotique. L’É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’Élu régénère rapidement. Chaque jour de repos, il regagne un nombre de points de Santé égal à sa Trempe /2 + son Aspect.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>3 point d’Â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’appeler un Élémentaire à son secours une fois par scénario. La Puissance de l’Élémentaire est fi xée lors de l’octroi du Don. La nature de l’Élémentaire correspond à celle du Seigneur Élémentaire avec lequel le Pacte a été passé. Ce Don ne peut être pris qu’une fois par Seigneur Élémentaire vénéré.</p>","allegeance":"elementaires","prerequis":"","sacrifice":"<ul>\n<li>1 point d’Âme pour un Élémentaire mineur disposant de 5 points d’Âme. Accès réservé aux Novices et aux Adeptes.</li>\n<li>3 points d’Âme pour un Élémentaire médian disposant de 10 points d’Âme. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>5 points d’Âme pour un Élémentaire majeur disposant de 15 points d’Âme. Accès réservé 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égâts causés par l’Élu bénéficient d’un bonus pour <em>un type d’armes donné</em>. Le bonus dépend du nombre de points d’Âme sacrifiés.</p>","allegeance":"loi","prerequis":"6 ou plus en Puissance.","sacrifice":"<ul>\n<li>1 point d’Âme pour un bonus de + 1. Accès réservé aux Novices et aux Adeptes.</li>\n<li>3 points d’Âme pour un bonus de + 2. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>5 points d’Âme pour un bonus de + 3. Accès réservé aux Champions.</li>\n</ul>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.bqdkbOf7EsdsCRqu"}},"_id":"K4H2VC0jTCy7pYj7"}
|
||||||
|
{"name":"L’exemple du Juste","type":"don","img":"systems/fvtt-mournblade/assets/icons/don.webp","data":{"description":"<p>L’Élu est un exemple rayonnant pour ses camarades. Une fois par scénario, si l’Élu adresse pendant un tour de jeu une prière à une divinité de la Loi, lui et ses camarades (une dizaine tout au plus) seront bénis et recevront jusqu’à la fin de la scène un bonus à toutes leurs actions.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d’Âme pour un bonus de + 1. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour un bonus de + 2. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un bonus de + 3. Accès réservé aux Champions. </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’Élu peut survivre en se privant d’un élément vital (nourriture, eau, sommeil, mais pas air) pendant un certain temps. La durée de ce pouvoir dépend du nombre de points d’Âme sacrifiés.</p>","allegeance":"tous","prerequis":"6 ou plus en Trempe","sacrifice":"<ul>\n<li>2 points d’Âme pour un jour. Accès réservé aux Novices et aux Adeptes.</li>\n<li>6 points d’Âme pour une semaine. Accès réservé aux Che\u0002valiers et aux Hérauts.</li>\n<li>10 points d’Âme pour un mois. Accès réservé 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’Élu manie un certain type d’armes, il peut ajouter un bonus à son initiative ou bénéficier d’un bonus aux dégâts lors d’un combat, une fois par séance de jeu.</p>","allegeance":"chaos","prerequis":"6 ou plus en Puissance.","sacrifice":"<ul>\n<li>1 point d’Âme pour un bonus de + 1 aux dégâts ou + 5 en initiative. Accès réservé aux Novices et aux Adeptes.</li>\n<li>3 points d’Âme pour un bonus de + 2 aux dégâts ou + 7 en initiative. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>5 points d’Âme pour un bonus de + 3 aux dégâts ou + 10 en initiative. Accès réservé 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’Élu a immédiatement conscience de la présence passée ou actuelle du Chaos (sortilège à l’œuvre, puissant serviteur…). Le personnage est très sensible aux émanations chaotiques, elles lui soulèvent le cœur. La distance de détection peut aug\u0002menter en sacrifiant davantage de points d’Âme</p>","allegeance":"loi","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>1 point d’Âme pour détecter les ennemis dans un rayon de 10 mètres. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour détecter les ennemis dans un rayon de 100 mètres. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour détecter les ennemis dans un rayon de 1000 mètres. Accès réservé 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’Élu a conscience du tissu de la réalité. Il peut sceller, par de longues prières psalmodiées, les passages et les portails donnant sur d’autres plans du Multivers. Cette action lui coûte le sacrifice d’un point d’Éclat. Tant que sa concentration reste tournée vers ce passage, le portail demeure scellé, comme si Donblas lui-même le gardait. Mais dès que le personnage s’endort, la porte, bien que fermée, n’est plus scellée. Certains plans très importants possèdent plusieurs passages menant vers les Jeunes Royaumes.</p>","allegeance":"loi","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<p>5 points d’Â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’un test de Capacité Offensive, l’Élu voit la marge nécessaire à l’obtention d’une réussite héroïque diminuer de 1 (9 ou plus), de 2 (8 ou plus) ou de 3 (7 ou plus). </p>","allegeance":"tous","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>3 points d’Âme pour diminuer la marge de 1 (réussite héroïque sur 9 ou plus). Accès réservé aux Novices et aux Adeptes.</li>\n<li>5 points d’Âme pour diminuer la marge de 2 (réussite héroïque sur 8 ou plus). Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>7 points d’Âme pour diminuer la marge de 3 (réussite héroïque sur 7 ou plus). Accès réservé 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’augmenter une compétence importante pour la voie spirituelle choisie. Le bonus octroyé dépend du nombre de points d’Âme sacrifi és. Ce Don peut être choisi plusieurs fois, mais il ne peut s’appliquer qu’une fois par compétence. </p>","allegeance":"chaos","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<ul>\n<li>1 point d’Âme pour un + 1 à une compétence. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour un + 2 à une compétence. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un + 3 à une compétence. Accès réservé 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’Élu résiste aux effets liés à la fatigue et à la maladie. Le béné\u0002fi ciaire de ce Don a droit à un bonus de + 1 lors de ses tests de Trempe pour résister à la fatigue et à la maladie. Ce bonus peut augmenter en sacrifi ant davantage de points d’Âme.</p>","allegeance":"tous","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d’Âme pour un bonus de + 2. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour un bonus de + 3. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un bonus de + 4. Accès réservé 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’est-à-dire non surnaturel). L’animal apprivoisé est un membre standard de son espèce et obéit à des ordres simples, mais sans jamais aller contre sa nature. Le coût de ce Don dépend de la Puissance de la créature qui est fixée lors de son octroi. Si 1 point d’Âme supplémentaire est investi, la créature peut communiquer télé\u0002pathiquement avec son maître (et uniquement avec lui).</p>","allegeance":"betes","prerequis":"6 ou plus en Présence.","sacrifice":"<ul>\n<li>1 point d’Âme pour une créature d’une Puissance de 0 à 4. Accès réservé aux Novices et aux Adeptes.</li>\n<li>3 points d’Âme pour une créature d’une Puissance de 5 à 7. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>5 points d’Âme pour une créature d’une Puissance de 8 à 10. Accès réservé 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’Élu est protégé contre les attaques des créatures engendrées ou invoquées par la Sorcellerie (les Élémentaires, les Démons, les Automata…). La protection dont il bénéficie dépend du nombre de points d’Âme sacrifiés.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d’Âme pour 1 point de protection. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour 2 points de protection. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un 3 points de protection. Accès réservé 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’Élu peut supporter n’importe quel type de souffrance psy\u0002chique. Il ne subit pas les pénalités dues à l’état Déstabilisé (– 2) et Choqué (– 5). Il est immunisé à la torture mentale.</p>","allegeance":"chaos","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d’Â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’Élu résiste aux effets liés à la fatigue et à la maladie. Le bénéfi ciaire de ce Don a droit à un bonus de + 1 lors de ses tests de Trempe pour résister à la fatigue et à la maladie. Ce bonus peut augmenter en sacrifi ant davantage de points d’Âme.</p>","allegeance":"chaos","prerequis":"6 ou plus en Trempe.","sacrifice":"<ul>\n<li>1 point d’Âme pour un bonus de + 1. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour un bonus de + 2. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un bonus de + 3.Accès réservé 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’augmenter une compétence relative à la voie spirituelle choisie. Le bonus octroyé dépend du nombre de points d’Âme sacrifi és. Ce Don peut être choisi plusieurs fois, mais il ne peut s’appliquer qu’une fois par compétence. </p>","allegeance":"tous","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<ul>\n<li>1 point d’Âme pour un + 1 à une compétence. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour un + 2 à une compétence. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un + 3 à une compétence. Accès réservé 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’augmenter une compétence importante pour la voie spirituelle choisie. Le bonus octroyé dépend du nombre de points d’Âme sacrifiés. Ce Don peut être choisi plusieurs fois mais il ne peut s’appliquer qu’une fois par compétence.</p>","allegeance":"loi","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<ul>\n<li>1 point d’Âme pour un + 1 à une compétence. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour un + 2 à une compétence. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour un + 3 à une compétence. Accès réservé 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é de l’Élu sont recalculés en ajoutant à [(Puissance + Trempe) x 2]+ 5 le nombre de points d’Âme sacrifiés. Ce Don ne peut être pris qu’une seule fois même si l’Élu conclut plusieurs Pactes.</p>","allegeance":"tous","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d’Âme par point de Santé supplé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’Élu peut supporter n’importe quel type de souffrance. Il ne subit pas les pénalités dues à l’état Blessé (-2) et Gravement Blessé (-5). Il est immunisé contre la torture.</p>","allegeance":"loi","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>1 point d’Â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’un combat, l’Élu ne subit plus les effets d’une réussite héroïque contre lui lors des tests de Capacité offensive. Il n’en profite plus non plus. À un haut niveau, il ne peut plus être affecté par les échecs dramatiques.</p>","allegeance":"loi","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>3 points d’Âme pour ne plus être affecté par les réussite héroïques.</li>\n<li>7 points d’Âme pour ne plus être affecté ni par les réus\u0002sites héroïques ni par les échecs dramatiques. Accès réser\u0002vé 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’un des attributs de l’Élu est augmenté, grâce à la bienveil\u0002lance de la divinité. Il ne peut dépasser le maximum imposé par l’espèce. Ce Don peut être choisi plusieurs fois, mais il ne peut s’appliquer qu’une fois par attribut.</p>","allegeance":"tous","prerequis":"6 ou plus dans l’attribut modifié.","sacrifice":"<ul>\n<li>3 points d’Âme pour un bonus de + 1. Accès réservé aux Novices et aux Adeptes.</li>\n<li>6 points d’Âme pour un bonus de + 2. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>9 points d’Âme pour un bonus de + 3. Accès réservé 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’Élu sait où se trouvent des ennemis dont il a conscience et qui cherchent à lui nuire directement dans un rayon de 10 mètres. Attention, cette détection ne fonctionnera pas pour deviner que quelqu’un est simplement hostile à l’Élu ou le hait viscéralement. Il s’agit d’un pouvoir de localisation et de vigilance. La distance de détection peut augmenter en sacrifiant davantage de points d’Âme.</p>","allegeance":"chaos","prerequis":"6 ou plus en Adresse ou Clairvoyance.","sacrifice":"<ul>\n<li>1 point d’Âme pour détecter les ennemis dans un rayon de 10 mètres. Accès réservé aux Novices et aux Adeptes.</li>\n<li>2 points d’Âme pour détecter les ennemis dans un rayon de 100 mètres. Accès réservé aux Chevaliers et aux Hérauts.</li>\n<li>3 points d’Âme pour détecter les ennemis dans un rayon de 1000 mètres. Accès réservé 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’Élu peut supporter n’importe quel type de souffrance. Il ne subit pas les pénalités dues à l’état Blessé (-2) et Gravement Blessé (-5). Il est immunisé à la torture si elle est infl igée à partir d’un des éléments tutélaires du personnage.</p>","allegeance":"elementaires","prerequis":"6 ou plus en Trempe.","sacrifice":"<p>3 points d’Â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énario, l’Élu peut résister à une menace ou agres\u0002sion, physique ou mentale, sans jeter les dés. Il est toutefois néces\u0002saire que l’Élu ait conscience du danger. L’Élu pourra par exemple résister à la terreur provoquée par une créature du Chaos parti\u0002culièrement abominable ou légendaire, mais ne pourra pas éviter d’être assommé par un habile voleur de Bakshaan qu’il n’avait pas vu. Cette résistance peut même être « extraordinaire » si l’Aspect de l’Élu est très haut.</p>\n<p>S’il est un Adepte ou un Novice, l’Élu peut résister à l’ivresse lors d’une nuit de beuverie chez un Prince-Marchand de Bakshaan.</p>\n<p>S’il est un Chevalier ou un Héraut, l’Élu peut résister à un coup surpuissant (celui-ci est annulé) ou à l’apparition gla\u0002çante d’un Démon. S’il est un Champion, il peut par exemple soutenir l’arche d’un temple qui s’écroule pendant quelques précieuses secondes afi n de laisser le temps à ses camarades de se mettre à l’abri (songez à Maciste, à Samson, ou tout simplement à Conan). Bref, n’hésitez pas à faire dans l’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’Â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’Élu reçoit de la divinité qu’il vénère l’équivalent d’une Prédilection dans la Capacité spéciale Œil du sorcier (voir p. 199). Une fois par séance, il peut donc relancer le test de Clairvoyance + Perception.</p>","allegeance":"chaos","prerequis":"6 ou plus en Clairvoyance.","sacrifice":"<p>2 points d’Âme.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.9Xrm1cfrCmkRtOBc"}},"_id":"zzz9JrtWjELdoAfK"}
|
55
packs/equipement.db
Normal file
55
packs/equipement.db
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{"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 d’homme 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 à 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 d’Alchimiste","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Permet de mettre au point les objets les plus complexes (difficulté de 25 et au-delà)</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 d’auberge à 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> (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 d’auberge 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énéralement d’avance…</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 d’attelage","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écessaires pour l’appliquer. Permet de récupérer [[/roll 1D4]] points de Santé après (10 – 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è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>(à inhaler pour se sentir en forme)</p>\n<p>S’inhale le temps d’une action (à inhaler pour se sentir en forme) simple. Permet de récupérer immédiatement [[/roll 1D4]] cases de Santé (dégâts non létaux). À chaque inhalation, lancez un [[/roll 1d20]]. Sur un 1 ou un 11, celui qui vient de priser la poudre s’eff ondre et reste inconscient durant (10 – Trempe) heures.</p>\n<p> </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’à une difficulté 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ère un bonus de + 5 au test de Soins pour arrêter les pertes de points de Santé. Note : tous les poisons n’ont pas d’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 d’auberge 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> (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 d’escalade","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 « Le Combat et la santé » pour connaî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énéralement d’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"}
|
BIN
packs/equipement/000005.ldb
Normal file
BIN
packs/equipement/000005.ldb
Normal file
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000125
|
MANIFEST-000070
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/05/23-11:36:26.390072 7f80474006c0 Recovering log #122
|
2023/11/28-21:10:46.058402 7ff1ed3ff6c0 Recovering log #68
|
||||||
2024/05/23-11:36:26.400169 7f80474006c0 Delete type=3 #120
|
2023/11/28-21:10:46.111323 7ff1ed3ff6c0 Delete type=3 #66
|
||||||
2024/05/23-11:36:26.400273 7f80474006c0 Delete type=0 #122
|
2023/11/28-21:10:46.111419 7ff1ed3ff6c0 Delete type=0 #68
|
||||||
2024/05/23-11:38:27.094008 7f803fe006c0 Level-0 table #128: started
|
2023/11/28-21:42:12.917832 7fef56ffd6c0 Level-0 table #73: started
|
||||||
2024/05/23-11:38:27.094074 7f803fe006c0 Level-0 table #128: 0 bytes OK
|
2023/11/28-21:42:12.917864 7fef56ffd6c0 Level-0 table #73: 0 bytes OK
|
||||||
2024/05/23-11:38:27.127448 7f803fe006c0 Delete type=0 #126
|
2023/11/28-21:42:12.924966 7fef56ffd6c0 Delete type=0 #71
|
||||||
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/28-21:42:12.925268 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.127638 7f803fe006c0 Manual compaction at level-1 from '!folders!JlP90zkPvPcJDq0q' @ 72057594037927935 : 1 .. '!items!zjMDuxKHKJ4vE5UV' @ 0 : 0; will stop at (end)
|
2023/11/28-21:42:12.925315 7fef56ffd6c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,8 @@
|
|||||||
2024/05/23-11:35:06.519383 7f80474006c0 Recovering log #118
|
2023/11/28-21:00:12.528084 7ff1ed3ff6c0 Recovering log #64
|
||||||
2024/05/23-11:35:06.577392 7f80474006c0 Delete type=3 #116
|
2023/11/28-21:00:12.538576 7ff1ed3ff6c0 Delete type=3 #62
|
||||||
2024/05/23-11:35:06.577476 7f80474006c0 Delete type=0 #118
|
2023/11/28-21:00:12.538671 7ff1ed3ff6c0 Delete type=0 #64
|
||||||
2024/05/23-11:35:52.335647 7f803fe006c0 Level-0 table #123: started
|
2023/11/28-21:10:41.022463 7fef56ffd6c0 Level-0 table #69: started
|
||||||
2024/05/23-11:35:52.340197 7f803fe006c0 Level-0 table #123: 12499 bytes OK
|
2023/11/28-21:10:41.022554 7fef56ffd6c0 Level-0 table #69: 0 bytes OK
|
||||||
2024/05/23-11:35:52.346521 7f803fe006c0 Delete type=0 #121
|
2023/11/28-21:10:41.067253 7fef56ffd6c0 Delete type=0 #67
|
||||||
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/28-21:10:41.195905 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.377068 7f803fe006c0 Manual compaction at level-1 from '!folders!JlP90zkPvPcJDq0q' @ 72057594037927935 : 1 .. '!items!zjMDuxKHKJ4vE5UV' @ 0 : 0; will stop at '!items!zjMDuxKHKJ4vE5UV' @ 357 : 1
|
2023/11/28-21:10:41.196008 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.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)
|
|
||||||
|
BIN
packs/equipement/MANIFEST-000070
Normal file
BIN
packs/equipement/MANIFEST-000070
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/heritages/000017.ldb
Normal file
BIN
packs/heritages/000017.ldb
Normal file
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000195
|
MANIFEST-000034
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/05/23-11:36:26.322524 7f80460006c0 Recovering log #192
|
2023/11/28-21:10:45.818129 7ff1ed3ff6c0 Recovering log #32
|
||||||
2024/05/23-11:36:26.332618 7f80460006c0 Delete type=3 #190
|
2023/11/28-21:10:45.876594 7ff1ed3ff6c0 Delete type=3 #30
|
||||||
2024/05/23-11:36:26.332687 7f80460006c0 Delete type=0 #192
|
2023/11/28-21:10:45.876699 7ff1ed3ff6c0 Delete type=0 #32
|
||||||
2024/05/23-11:38:26.870469 7f803fe006c0 Level-0 table #198: started
|
2023/11/28-21:42:12.869213 7fef56ffd6c0 Level-0 table #37: started
|
||||||
2024/05/23-11:38:26.870492 7f803fe006c0 Level-0 table #198: 0 bytes OK
|
2023/11/28-21:42:12.869236 7fef56ffd6c0 Level-0 table #37: 0 bytes OK
|
||||||
2024/05/23-11:38:26.915350 7f803fe006c0 Delete type=0 #196
|
2023/11/28-21:42:12.875326 7fef56ffd6c0 Delete type=0 #35
|
||||||
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/28-21:42:12.896758 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.981444 7f803fe006c0 Manual compaction at level-1 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end)
|
2023/11/28-21:42:12.896965 7fef56ffd6c0 Manual compaction at level-1 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,8 @@
|
|||||||
2024/05/23-11:35:06.205974 7f8046a006c0 Recovering log #188
|
2023/11/28-21:00:12.469089 7ff1ed3ff6c0 Recovering log #28
|
||||||
2024/05/23-11:35:06.271007 7f8046a006c0 Delete type=3 #186
|
2023/11/28-21:00:12.481019 7ff1ed3ff6c0 Delete type=3 #26
|
||||||
2024/05/23-11:35:06.271061 7f8046a006c0 Delete type=0 #188
|
2023/11/28-21:00:12.481137 7ff1ed3ff6c0 Delete type=0 #28
|
||||||
2024/05/23-11:35:52.230900 7f803fe006c0 Level-0 table #193: started
|
2023/11/28-21:10:40.899330 7fef56ffd6c0 Level-0 table #33: started
|
||||||
2024/05/23-11:35:52.234050 7f803fe006c0 Level-0 table #193: 9381 bytes OK
|
2023/11/28-21:10:40.899404 7fef56ffd6c0 Level-0 table #33: 0 bytes OK
|
||||||
2024/05/23-11:35:52.240165 7f803fe006c0 Delete type=0 #191
|
2023/11/28-21:10:40.936638 7fef56ffd6c0 Delete type=0 #31
|
||||||
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/28-21:10:41.022137 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.270981 7f803fe006c0 Manual compaction at level-1 from '!items!276PAK1VR5LK4rbE' @ 72057594037927935 : 1 .. '!items!nYYX7rtSMGFO4xVY' @ 0 : 0; will stop at '!items!nYYX7rtSMGFO4xVY' @ 40 : 1
|
2023/11/28-21:10:41.022238 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.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)
|
|
||||||
|
BIN
packs/heritages/MANIFEST-000034
Normal file
BIN
packs/heritages/MANIFEST-000034
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000032
|
|
@ -1,8 +0,0 @@
|
|||||||
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)
|
|
@ -1,15 +0,0 @@
|
|||||||
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)
|
|
Binary file not shown.
BIN
packs/metiers/000017.ldb
Normal file
BIN
packs/metiers/000017.ldb
Normal file
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000195
|
MANIFEST-000034
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/05/23-11:36:26.335215 7f80474006c0 Recovering log #192
|
2023/11/28-21:10:45.880299 7ff1ecbfe6c0 Recovering log #32
|
||||||
2024/05/23-11:36:26.345427 7f80474006c0 Delete type=3 #190
|
2023/11/28-21:10:45.933133 7ff1ecbfe6c0 Delete type=3 #30
|
||||||
2024/05/23-11:36:26.345523 7f80474006c0 Delete type=0 #192
|
2023/11/28-21:10:45.933349 7ff1ecbfe6c0 Delete type=0 #32
|
||||||
2024/05/23-11:38:26.915537 7f803fe006c0 Level-0 table #198: started
|
2023/11/28-21:42:12.882403 7fef56ffd6c0 Level-0 table #37: started
|
||||||
2024/05/23-11:38:26.915581 7f803fe006c0 Level-0 table #198: 0 bytes OK
|
2023/11/28-21:42:12.882485 7fef56ffd6c0 Level-0 table #37: 0 bytes OK
|
||||||
2024/05/23-11:38:26.944084 7f803fe006c0 Delete type=0 #196
|
2023/11/28-21:42:12.889833 7fef56ffd6c0 Delete type=0 #35
|
||||||
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/28-21:42:12.896948 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.981463 7f803fe006c0 Manual compaction at level-1 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end)
|
2023/11/28-21:42:12.896978 7fef56ffd6c0 Manual compaction at level-1 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,8 @@
|
|||||||
2024/05/23-11:35:06.278280 7f80474006c0 Recovering log #188
|
2023/11/28-21:00:12.484287 7ff1ecbfe6c0 Recovering log #28
|
||||||
2024/05/23-11:35:06.332353 7f80474006c0 Delete type=3 #186
|
2023/11/28-21:00:12.494659 7ff1ecbfe6c0 Delete type=3 #26
|
||||||
2024/05/23-11:35:06.332410 7f80474006c0 Delete type=0 #188
|
2023/11/28-21:00:12.494799 7ff1ecbfe6c0 Delete type=0 #28
|
||||||
2024/05/23-11:35:52.250869 7f803fe006c0 Level-0 table #193: started
|
2023/11/28-21:10:40.986191 7fef56ffd6c0 Level-0 table #33: started
|
||||||
2024/05/23-11:35:52.254343 7f803fe006c0 Level-0 table #193: 36654 bytes OK
|
2023/11/28-21:10:40.986253 7fef56ffd6c0 Level-0 table #33: 0 bytes OK
|
||||||
2024/05/23-11:35:52.260633 7f803fe006c0 Delete type=0 #191
|
2023/11/28-21:10:41.021844 7fef56ffd6c0 Delete type=0 #31
|
||||||
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/28-21:10:41.022187 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.303626 7f803fe006c0 Manual compaction at level-1 from '!items!1zbNJIOmrsThaKFU' @ 72057594037927935 : 1 .. '!items!y0G0VMyygxIj4Y7F' @ 0 : 0; will stop at '!items!y0G0VMyygxIj4Y7F' @ 76 : 1
|
2023/11/28-21:10:41.022284 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.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)
|
|
||||||
|
BIN
packs/metiers/MANIFEST-000034
Normal file
BIN
packs/metiers/MANIFEST-000034
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000032
|
|
@ -1,8 +0,0 @@
|
|||||||
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)
|
|
@ -1,15 +0,0 @@
|
|||||||
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.
BIN
packs/origines/000010.ldb
Normal file
BIN
packs/origines/000010.ldb
Normal file
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000196
|
MANIFEST-000035
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/05/23-11:36:26.309345 7f80456006c0 Recovering log #193
|
2023/11/28-21:10:45.758372 7fef57fff6c0 Recovering log #33
|
||||||
2024/05/23-11:36:26.319454 7f80456006c0 Delete type=3 #191
|
2023/11/28-21:10:45.814699 7fef57fff6c0 Delete type=3 #31
|
||||||
2024/05/23-11:36:26.319584 7f80456006c0 Delete type=0 #193
|
2023/11/28-21:10:45.814832 7fef57fff6c0 Delete type=0 #33
|
||||||
2024/05/23-11:38:26.833035 7f803fe006c0 Level-0 table #199: started
|
2023/11/28-21:42:12.875434 7fef56ffd6c0 Level-0 table #38: started
|
||||||
2024/05/23-11:38:26.833072 7f803fe006c0 Level-0 table #199: 0 bytes OK
|
2023/11/28-21:42:12.875457 7fef56ffd6c0 Level-0 table #38: 0 bytes OK
|
||||||
2024/05/23-11:38:26.870362 7f803fe006c0 Delete type=0 #197
|
2023/11/28-21:42:12.882108 7fef56ffd6c0 Delete type=0 #36
|
||||||
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/28-21:42:12.896938 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.981425 7f803fe006c0 Manual compaction at level-1 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end)
|
2023/11/28-21:42:12.896971 7fef56ffd6c0 Manual compaction at level-1 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,8 @@
|
|||||||
2024/05/23-11:35:06.148229 7f80456006c0 Recovering log #189
|
2023/11/28-21:00:12.454515 7fef577fe6c0 Recovering log #29
|
||||||
2024/05/23-11:35:06.199374 7f80456006c0 Delete type=3 #187
|
2023/11/28-21:00:12.465532 7fef577fe6c0 Delete type=3 #27
|
||||||
2024/05/23-11:35:06.199441 7f80456006c0 Delete type=0 #189
|
2023/11/28-21:00:12.465668 7fef577fe6c0 Delete type=0 #29
|
||||||
2024/05/23-11:35:52.240294 7f803fe006c0 Level-0 table #194: started
|
2023/11/28-21:10:40.857528 7fef56ffd6c0 Level-0 table #34: started
|
||||||
2024/05/23-11:35:52.244436 7f803fe006c0 Level-0 table #194: 32532 bytes OK
|
2023/11/28-21:10:40.857593 7fef56ffd6c0 Level-0 table #34: 0 bytes OK
|
||||||
2024/05/23-11:35:52.250742 7f803fe006c0 Delete type=0 #192
|
2023/11/28-21:10:40.899028 7fef56ffd6c0 Delete type=0 #32
|
||||||
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/28-21:10:41.022100 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.281258 7f803fe006c0 Manual compaction at level-1 from '!items!0xdQs67JPsVrUyvp' @ 72057594037927935 : 1 .. '!items!xox7R7Uuuz0eGL0p' @ 0 : 0; will stop at '!items!xox7R7Uuuz0eGL0p' @ 109 : 1
|
2023/11/28-21:10:41.022211 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.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)
|
|
||||||
|
BIN
packs/origines/MANIFEST-000035
Normal file
BIN
packs/origines/MANIFEST-000035
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000032
|
|
@ -1,8 +0,0 @@
|
|||||||
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)
|
|
@ -1,15 +0,0 @@
|
|||||||
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.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
MANIFEST-000113
|
|
@ -1,8 +0,0 @@
|
|||||||
2024/05/23-11:36:26.295446 7f8046a006c0 Recovering log #110
|
|
||||||
2024/05/23-11:36:26.305790 7f8046a006c0 Delete type=3 #108
|
|
||||||
2024/05/23-11:36:26.305908 7f8046a006c0 Delete type=0 #110
|
|
||||||
2024/05/23-11:38:26.791111 7f803fe006c0 Level-0 table #116: started
|
|
||||||
2024/05/23-11:38:26.791169 7f803fe006c0 Level-0 table #116: 0 bytes OK
|
|
||||||
2024/05/23-11:38:26.832536 7f803fe006c0 Delete type=0 #114
|
|
||||||
2024/05/23-11:38:26.832812 7f803fe006c0 Manual compaction at level-0 from '!folders!1JlatZ9Wfu0qUH6Y' @ 72057594037927935 : 1 .. '!items!zmaCOCCpgO3YtEn6' @ 0 : 0; will stop at (end)
|
|
||||||
2024/05/23-11:38:26.832852 7f803fe006c0 Manual compaction at level-1 from '!folders!1JlatZ9Wfu0qUH6Y' @ 72057594037927935 : 1 .. '!items!zmaCOCCpgO3YtEn6' @ 0 : 0; will stop at (end)
|
|
@ -1,15 +0,0 @@
|
|||||||
2024/05/23-11:35:06.079621 7f80460006c0 Recovering log #106
|
|
||||||
2024/05/23-11:35:06.139251 7f80460006c0 Delete type=3 #104
|
|
||||||
2024/05/23-11:35:06.139321 7f80460006c0 Delete type=0 #106
|
|
||||||
2024/05/23-11:35:52.141545 7f803fe006c0 Level-0 table #111: started
|
|
||||||
2024/05/23-11:35:52.145956 7f803fe006c0 Level-0 table #111: 107383 bytes OK
|
|
||||||
2024/05/23-11:35:52.152106 7f803fe006c0 Delete type=0 #109
|
|
||||||
2024/05/23-11:35:52.186460 7f803fe006c0 Manual compaction at level-0 from '!folders!1JlatZ9Wfu0qUH6Y' @ 72057594037927935 : 1 .. '!items!zmaCOCCpgO3YtEn6' @ 0 : 0; will stop at (end)
|
|
||||||
2024/05/23-11:35:52.186514 7f803fe006c0 Manual compaction at level-1 from '!folders!1JlatZ9Wfu0qUH6Y' @ 72057594037927935 : 1 .. '!items!zmaCOCCpgO3YtEn6' @ 0 : 0; will stop at '!items!zmaCOCCpgO3YtEn6' @ 542 : 1
|
|
||||||
2024/05/23-11:35:52.186524 7f803fe006c0 Compacting 1@1 + 1@2 files
|
|
||||||
2024/05/23-11:35:52.191105 7f803fe006c0 Generated table #112@1: 157 keys, 109300 bytes
|
|
||||||
2024/05/23-11:35:52.191134 7f803fe006c0 Compacted 1@1 + 1@2 files => 109300 bytes
|
|
||||||
2024/05/23-11:35:52.197154 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
|
||||||
2024/05/23-11:35:52.197356 7f803fe006c0 Delete type=2 #103
|
|
||||||
2024/05/23-11:35:52.197666 7f803fe006c0 Delete type=2 #111
|
|
||||||
2024/05/23-11:35:52.230735 7f803fe006c0 Manual compaction at level-1 from '!items!zmaCOCCpgO3YtEn6' @ 542 : 1 .. '!items!zmaCOCCpgO3YtEn6' @ 0 : 0; will stop at (end)
|
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user