Compare commits
30 Commits
fvtt-mourn
...
f487908ecd
Author | SHA1 | Date | |
---|---|---|---|
f487908ecd | |||
e9dc31ada1 | |||
e504427dbb | |||
6aa63f9a98 | |||
861aa19637 | |||
ddb3f9dee1 | |||
da074d6ea1 | |||
1c0c722bd0 | |||
fef42b7093 | |||
a63ec19362 | |||
a26af23c9c | |||
983bc6a2ed | |||
da6d6584c4 | |||
f08ec8eaff | |||
c34bfbf229 | |||
e7de42cf16 | |||
0f2348fec6 | |||
98ccd8fde1 | |||
fcec785f00 | |||
734945d68e | |||
33916c9ec2 | |||
dda8fee616 | |||
1730a8d390 | |||
4a0a57870c | |||
8d43ae6b6e | |||
3f91a161ab | |||
1e72eaec04 | |||
09cdd1923a | |||
fce03107b5 | |||
43183d60ea |
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.history/
|
23
README.md
@ -1,4 +1,23 @@
|
|||||||
# fvtt-mournblade
|
# Système Foundry pour Mournblade (French RPG, Titam France/Sombres Projets)
|
||||||
|
|
||||||
FoundryVTT system for Mournblade from Sombres Projets
|
## EN
|
||||||
|
|
||||||
|
Unofficial system for Mournblade (French version from Titam France).
|
||||||
|
|
||||||
|
Books are mandatory to play and are available at : http://www.titam-france.fr
|
||||||
|
|
||||||
|
## FR
|
||||||
|
|
||||||
|
Système non-officiel pour le JDR Mournblade (Titam France).
|
||||||
|
|
||||||
|
Ce système a été autorisé par Le Département des Sombres Projets, merci à eux !
|
||||||
|
|
||||||
|
Les livres du jeu sont nécessaires pour jouer, et sont disponibles ici : http://www.titam-france.fr
|
||||||
|
|
||||||
|
# Credits
|
||||||
|
|
||||||
|
Mournblade, le jeu de rôle de Sword & Sorcery, is a property of Titam France/Sombres Projets.
|
||||||
|
|
||||||
|
# Developmement
|
||||||
|
|
||||||
|
LeRatierBretonnien
|
||||||
|
BIN
assets/tokens/token_chaos.webp
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
assets/tokens/token_chaos2.webp
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
assets/tokens/token_chaos3.webp
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
assets/tokens/token_loi.webp
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
assets/tokens/token_loi2.webp
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
assets/tokens/token_loi3.webp
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
assets/tokens/token_loi4.webp
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
assets/ui/fond_mournblade.webp
Normal file
After Width: | Height: | Size: 236 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 11 KiB |
27
lang/fr.json
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"ACTOR": {
|
||||||
|
"TypePersonnage": "Personnage",
|
||||||
|
"TypePNJ": "PNJ"
|
||||||
|
},
|
||||||
|
|
||||||
|
"ITEM": {
|
||||||
|
"TypeArme": "Arme",
|
||||||
|
"TypeCompetence": "Compétence",
|
||||||
|
"TypeProtection": "Protection",
|
||||||
|
"TypePacte": "Pacte",
|
||||||
|
"TypeTraitchaotique": "Trait Chaotique",
|
||||||
|
"TypeMonnaie": "Monnaie",
|
||||||
|
"TypeDon": "Don",
|
||||||
|
"TypeTendance": "Tendance",
|
||||||
|
"TypeRune": "Rune",
|
||||||
|
"TypeEquipement": "Equipement",
|
||||||
|
"TypeCapacite": "Capacité",
|
||||||
|
"TypeOrigine": "Origine",
|
||||||
|
"TypeHeritage": "Héritage",
|
||||||
|
"TypeMetier": "Métier",
|
||||||
|
"TypeRuneeffect": "Effet de Rune",
|
||||||
|
"TypeBouclier": "Bouclier"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -25,9 +25,8 @@ export class MournbladeActorSheet extends ActorSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = MournbladeUtility.data(this.object);
|
const objectData = duplicate(this.object)
|
||||||
|
let actorData = objectData
|
||||||
let actorData = duplicate(MournbladeUtility.templateData(this.object))
|
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
@ -37,7 +36,7 @@ export class MournbladeActorSheet extends ActorSheet {
|
|||||||
name: objectData.name,
|
name: objectData.name,
|
||||||
editable: this.isEditable,
|
editable: this.isEditable,
|
||||||
cssClass: this.isEditable ? "editable" : "locked",
|
cssClass: this.isEditable ? "editable" : "locked",
|
||||||
data: actorData,
|
data: actorData.system,
|
||||||
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(),
|
||||||
@ -45,13 +44,18 @@ export class MournbladeActorSheet extends ActorSheet {
|
|||||||
protections: duplicate(this.actor.getArmors()),
|
protections: duplicate(this.actor.getArmors()),
|
||||||
dons: duplicate(this.actor.getDons()),
|
dons: duplicate(this.actor.getDons()),
|
||||||
alignement: this.actor.getAlignement(),
|
alignement: this.actor.getAlignement(),
|
||||||
|
aspect: this.actor.getAspect(),
|
||||||
|
marge: this.actor.getMarge(),
|
||||||
tendances:duplicate(this.actor.getTendances()),
|
tendances:duplicate(this.actor.getTendances()),
|
||||||
runes:duplicate(this.actor.getRunes()),
|
runes:duplicate(this.actor.getRunes()),
|
||||||
|
traitsChaotiques:duplicate(this.actor.getTraitsChaotiques()),
|
||||||
origine: duplicate(this.actor.getOrigine() || {}),
|
origine: duplicate(this.actor.getOrigine() || {}),
|
||||||
heritage: duplicate(this.actor.getHeritage() || {}),
|
heritage: duplicate(this.actor.getHeritage() || {}),
|
||||||
metier: duplicate(this.actor.getMetier() || {}),
|
metier: duplicate(this.actor.getMetier() || {}),
|
||||||
combat: this.actor.getCombatValues(),
|
combat: this.actor.getCombatValues(),
|
||||||
equipements: duplicate(this.actor.getEquipments()),
|
equipements: duplicate(this.actor.getEquipments()),
|
||||||
|
monnaies: duplicate(this.actor.getMonnaies()),
|
||||||
|
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
editScore: this.options.editScore,
|
editScore: this.options.editScore,
|
||||||
@ -93,7 +97,7 @@ export class MournbladeActorSheet extends ActorSheet {
|
|||||||
let value = ev.currentTarget.value
|
let value = ev.currentTarget.value
|
||||||
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.quantity-minus').click(event => {
|
html.find('.quantity-minus').click(event => {
|
||||||
const li = $(event.currentTarget).parents(".item");
|
const li = $(event.currentTarget).parents(".item");
|
||||||
this.actor.incDecQuantity( li.data("item-id"), -1 );
|
this.actor.incDecQuantity( li.data("item-id"), -1 );
|
||||||
@ -114,6 +118,11 @@ export class MournbladeActorSheet 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-rune').click((event) => {
|
||||||
|
const li = $(event.currentTarget).parents(".item")
|
||||||
|
let runeId = li.data("item-id")
|
||||||
|
this.actor.rollRune(runeId)
|
||||||
|
})
|
||||||
html.find('.roll-arme-offensif').click((event) => {
|
html.find('.roll-arme-offensif').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let armeId = li.data("item-id")
|
let armeId = li.data("item-id")
|
||||||
@ -124,7 +133,16 @@ export class MournbladeActorSheet extends ActorSheet {
|
|||||||
let armeId = li.data("item-id")
|
let armeId = li.data("item-id")
|
||||||
this.actor.rollArmeDegats(armeId)
|
this.actor.rollArmeDegats(armeId)
|
||||||
})
|
})
|
||||||
|
html.find('.quantity-modify').click(event => {
|
||||||
|
const li = $(event.currentTarget).parents(".item")
|
||||||
|
const value = Number($(event.currentTarget).data("quantite-value"))
|
||||||
|
this.actor.incDecQuantity( li.data("item-id"), value );
|
||||||
|
})
|
||||||
|
html.find('.item-add').click((event) => {
|
||||||
|
const itemType = $(event.currentTarget).data("type")
|
||||||
|
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
html.find('.lock-unlock-sheet').click((event) => {
|
html.find('.lock-unlock-sheet').click((event) => {
|
||||||
this.options.editScore = !this.options.editScore;
|
this.options.editScore = !this.options.editScore;
|
||||||
|
@ -51,128 +51,151 @@ export class MournbladeActor extends Actor {
|
|||||||
prepareArme(arme) {
|
prepareArme(arme) {
|
||||||
arme = duplicate(arme)
|
arme = duplicate(arme)
|
||||||
let combat = this.getCombatValues()
|
let combat = this.getCombatValues()
|
||||||
if (arme.data.typearme == "contact" || arme.data.typearme == "contactjet") {
|
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
|
||||||
arme.data.competence = duplicate(this.data.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.data.attrKey = "pui"
|
arme.system.attrKey = "pui"
|
||||||
arme.data.totalDegats = arme.data.degats + "+" + combat.bonusDegatsTotal
|
arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal
|
||||||
arme.data.totalOffensif = this.data.data.attributs.pui.value + arme.data.competence.data.niveau + arme.data.bonusmaniementoff
|
arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
|
||||||
if (arme.data.isdefense) {
|
if (arme.system.isdefense) {
|
||||||
arme.data.totalDefensif = combat.defenseTotal + arme.data.competence.data.niveau + arme.data.bonusmaniementdef
|
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.bonusmaniementdef
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (arme.data.typearme == "jet" || arme.data.typearme == "tir") {
|
if (arme.system.typearme == "jet" || arme.system.typearme == "tir") {
|
||||||
arme.data.competence = duplicate(this.data.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.data.attrKey = "adr"
|
arme.system.attrKey = "adr"
|
||||||
arme.data.totalOffensif = this.data.data.attributs.adr.value + arme.data.competence.data.niveau + arme.data.bonusmaniementoff
|
arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
|
||||||
arme.data.totalDegats = arme.data.degats
|
arme.system.totalDegats = arme.system.degats
|
||||||
if (arme.data.isdefense) {
|
if (arme.system.isdefense) {
|
||||||
arme.data.totalDefensif = combat.defenseTotal + arme.data.competence.data.niveau + arme.data.bonusmaniementdef
|
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.bonusmaniementdef
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return arme
|
return arme
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
prepareBouclier(bouclier) {
|
||||||
|
bouclier = duplicate(bouclier)
|
||||||
|
let combat = this.getCombatValues()
|
||||||
|
bouclier.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
|
||||||
|
bouclier.system.attrKey = "pui"
|
||||||
|
bouclier.system.totalDegats = bouclier.system.degats + "+" + combat.bonusDegatsTotal
|
||||||
|
bouclier.system.totalOffensif = this.system.attributs.pui.value + bouclier.system.competence.system.niveau
|
||||||
|
bouclier.system.isdefense = true
|
||||||
|
bouclier.system.bonusmaniementoff = 0
|
||||||
|
bouclier.system.totalDefensif = combat.defenseTotal + bouclier.system.competence.system.niveau + bouclier.system.bonusdefense
|
||||||
|
return bouclier
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getWeapons() {
|
getWeapons() {
|
||||||
let armes = []
|
let armes = []
|
||||||
for (let arme of this.data.items) {
|
for (let arme of this.items) {
|
||||||
if (arme.type == "arme") {
|
if (arme.type == "arme") {
|
||||||
armes.push(this.prepareArme(arme))
|
armes.push(this.prepareArme(arme))
|
||||||
}
|
}
|
||||||
|
if (arme.type == "bouclier") {
|
||||||
|
armes.push(this.prepareBouclier(arme))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
MournbladeUtility.sortArrayObjectsByName(armes)
|
||||||
return armes
|
return armes
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getDons() {
|
getItemSorted( types) {
|
||||||
return this.data.items.filter(item => item.type == "don")
|
let items = this.items.filter(item => types.includes(item.type )) || []
|
||||||
|
MournbladeUtility.sortArrayObjectsByName(items)
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
getDons() {
|
||||||
|
return this.getItemSorted(["don"])
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
|
||||||
getTendances() {
|
getTendances() {
|
||||||
return this.data.items.filter(item => item.type == "tendance")
|
return this.getItemSorted(["tendance"])
|
||||||
}
|
}
|
||||||
getRunes() {
|
getRunes() {
|
||||||
return this.data.items.filter(item => item.type == "rune")
|
return this.getItemSorted(["rune"])
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
|
||||||
getEquipments() {
|
getEquipments() {
|
||||||
return this.data.items.filter(item => item.type == "equipement")
|
return this.getItemSorted(["equipement"])
|
||||||
|
}
|
||||||
|
getTraitsChaotiques() {
|
||||||
|
return this.getItemSorted(["traitchaotique"])
|
||||||
|
}
|
||||||
|
getMonnaies() {
|
||||||
|
return this.getItemSorted(["monnaie"])
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
|
||||||
getArmors() {
|
getArmors() {
|
||||||
return this.data.items.filter(item => item.type == "protection")
|
return this.getItemSorted(["protection"])
|
||||||
}
|
}
|
||||||
getOrigine() {
|
getOrigine() {
|
||||||
return this.data.items.find(item => item.type == "origine")
|
return this.items.find(item => item.type == "origine")
|
||||||
}
|
}
|
||||||
getMetier() {
|
getMetier() {
|
||||||
return this.data.items.find(item => item.type == "metier")
|
return this.items.find(item => item.type == "metier")
|
||||||
}
|
}
|
||||||
getHeritage() {
|
getHeritage() {
|
||||||
return this.data.items.find(item => item.type == "heritage")
|
return this.items.find(item => item.type == "heritage")
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getSkills() {
|
getSkills() {
|
||||||
let comp = []
|
let comp = []
|
||||||
for (let item of this.data.items) {
|
for (let item of this.items) {
|
||||||
item = duplicate(item)
|
item = duplicate(item)
|
||||||
if (item.type == "competence") {
|
if (item.type == "competence") {
|
||||||
item.data.attribut1total = item.data.niveau + (this.data.data.attributs[item.data.attribut1]?.value || 0)
|
item.system.attribut1total = item.system.niveau + (this.system.attributs[item.system.attribut1]?.value || 0)
|
||||||
item.data.attribut2total = item.data.niveau + (this.data.data.attributs[item.data.attribut2]?.value || 0)
|
item.system.attribut2total = item.system.niveau + (this.system.attributs[item.system.attribut2]?.value || 0)
|
||||||
item.data.attribut3total = item.data.niveau + (this.data.data.attributs[item.data.attribut3]?.value || 0)
|
item.system.attribut3total = item.system.niveau + (this.system.attributs[item.system.attribut3]?.value || 0)
|
||||||
if (item.data.niveau == 0) {
|
if (item.system.niveau == 0) {
|
||||||
item.data.attribut1total -= 3
|
item.system.attribut1total -= 3
|
||||||
item.data.attribut2total -= 3
|
item.system.attribut2total -= 3
|
||||||
item.data.attribut3total -= 3
|
item.system.attribut3total -= 3
|
||||||
}
|
}
|
||||||
item.data.attribut1label = this.data.data.attributs[item.data.attribut1]?.label || ""
|
item.system.attribut1label = this.system.attributs[item.system.attribut1]?.label || ""
|
||||||
item.data.attribut2label = this.data.data.attributs[item.data.attribut2]?.label || ""
|
item.system.attribut2label = this.system.attributs[item.system.attribut2]?.label || ""
|
||||||
item.data.attribut3label = this.data.data.attributs[item.data.attribut3]?.label || ""
|
item.system.attribut3label = this.system.attributs[item.system.attribut3]?.label || ""
|
||||||
comp.push(item)
|
comp.push(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return comp.sort(function (a, b) {
|
MournbladeUtility.sortArrayObjectsByName(comp)
|
||||||
let fa = a.name.toLowerCase(),
|
return comp
|
||||||
fb = b.name.toLowerCase();
|
|
||||||
if (fa < fb) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (fa > fb) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
getAspect() {
|
||||||
|
return (this.system.balance.loi > this.system.balance.chaos) ? this.system.balance.loi : this.system.balance.chaos
|
||||||
|
}
|
||||||
|
getMarge() {
|
||||||
|
return Math.abs( this.system.balance.loi - this.system.balance.chaos)
|
||||||
|
}
|
||||||
getAlignement() {
|
getAlignement() {
|
||||||
return (this.data.data.balance.loi > this.data.data.balance.chaos) ? "loyal" : "chaotique"
|
return (this.system.balance.loi > this.system.balance.chaos) ? "loyal" : "chaotique"
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getDefenseBase() {
|
getDefenseBase() {
|
||||||
return this.data.data.attributs.tre.value + 5
|
return this.system.attributs.tre.value + 5
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getVitesseBase() {
|
getVitesseBase() {
|
||||||
return 5 + __vitesseBonus[this.data.data.attributs.adr.value]
|
return 5 + __vitesseBonus[this.system.attributs.adr.value]
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCombatValues() {
|
getCombatValues() {
|
||||||
let combat = {
|
let combat = {
|
||||||
initBase: this.data.data.attributs.adr.value,
|
initBase: this.system.attributs.adr.value,
|
||||||
initTotal: this.data.data.attributs.adr.value + this.data.data.combat.initbonus,
|
initTotal: this.system.attributs.adr.value + this.system.combat.initbonus,
|
||||||
bonusDegats: this.getBonusDegats(),
|
bonusDegats: this.getBonusDegats(),
|
||||||
bonusDegatsTotal: this.getBonusDegats() + this.data.data.combat.bonusdegats,
|
bonusDegatsTotal: this.getBonusDegats() + this.system.combat.bonusdegats,
|
||||||
vitesseBase: this.getVitesseBase(),
|
vitesseBase: this.getVitesseBase(),
|
||||||
vitesseTotal: this.getVitesseBase() + this.data.data.combat.vitessebonus,
|
vitesseTotal: this.getVitesseBase() + this.system.combat.vitessebonus,
|
||||||
defenseBase: this.getDefenseBase(),
|
defenseBase: this.getDefenseBase(),
|
||||||
defenseTotal: this.getDefenseBase() + this.data.data.combat.defensebonus
|
defenseTotal: this.getDefenseBase() + this.system.combat.defensebonus
|
||||||
}
|
}
|
||||||
return combat
|
return combat
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareBaseData() {
|
prepareBaseData() {
|
||||||
}
|
}
|
||||||
@ -186,13 +209,13 @@ export class MournbladeActor extends Actor {
|
|||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
|
|
||||||
if (this.type == 'personnage') {
|
if (this.type == 'personnage') {
|
||||||
let newSante = this.data.data.sante.bonus + (this.data.data.attributs.pui.value + this.data.data.attributs.tre.value) * 2 + 5
|
let newSante = this.system.sante.bonus + (this.system.attributs.pui.value + this.system.attributs.tre.value) * 2 + 5
|
||||||
if (this.data.data.sante.base != newSante) {
|
if (this.system.sante.base != newSante) {
|
||||||
this.update({ 'data.sante.base': newSante })
|
this.update({ 'system.sante.base': newSante })
|
||||||
}
|
}
|
||||||
let newAme = (this.data.data.attributs.cla.value + this.data.data.attributs.tre.value) * this.data.data.biodata.amemultiplier + 5
|
let newAme = (this.system.attributs.cla.value + this.system.attributs.tre.value) * this.system.biodata.amemultiplier + 5
|
||||||
if (this.data.data.ame.base != newAme) {
|
if (this.system.ame.fullmax != newAme) {
|
||||||
this.update({ 'data.ame.base': newAme })
|
this.update({ 'system.ame.fullmax': newAme })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +230,7 @@ export class MournbladeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getItemById(id) {
|
getItemById(id) {
|
||||||
let item = this.data.items.find(item => item.id == id);
|
let item = this.items.find(item => item.id == id);
|
||||||
if (item) {
|
if (item) {
|
||||||
item = duplicate(item)
|
item = duplicate(item)
|
||||||
}
|
}
|
||||||
@ -216,16 +239,16 @@ export class MournbladeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async equipItem(itemId) {
|
async equipItem(itemId) {
|
||||||
let item = this.data.items.find(item => item.id == itemId);
|
let item = this.items.find(item => item.id == itemId)
|
||||||
if (item && item.data.data) {
|
if (item && item.system) {
|
||||||
let update = { _id: item.id, "data.equipped": !item.data.data.equipped };
|
let update = { _id: item.id, "system.equipped": !item.system.equipped }
|
||||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
editItemField(itemId, itemType, itemField, dataType, value) {
|
editItemField(itemId, itemType, itemField, dataType, value) {
|
||||||
let item = this.data.items.find(item => item.id == itemId)
|
let item = this.items.find(item => item.id == itemId)
|
||||||
if (item) {
|
if (item) {
|
||||||
console.log("Item ", item, itemField, dataType, value)
|
console.log("Item ", item, itemField, dataType, value)
|
||||||
if (dataType.toLowerCase() == "number") {
|
if (dataType.toLowerCase() == "number") {
|
||||||
@ -233,38 +256,48 @@ export class MournbladeActor extends Actor {
|
|||||||
} else {
|
} else {
|
||||||
value = String(value)
|
value = String(value)
|
||||||
}
|
}
|
||||||
let update = { _id: item.id, [`data.${itemField}`]: value };
|
let update = { _id: item.id, [`system.${itemField}`]: value };
|
||||||
this.updateEmbeddedDocuments("Item", [update])
|
this.updateEmbeddedDocuments("Item", [update])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getBonneAventure() {
|
getBonneAventure() {
|
||||||
return this.data.data.bonneaventure.actuelle
|
return this.system.bonneaventure.actuelle
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
changeBonneAventure(value) {
|
changeBonneAventure(value) {
|
||||||
let newBA = this.data.data.bonneaventure.actuelle
|
let newBA = this.system.bonneaventure.actuelle
|
||||||
newBA += value
|
newBA += value
|
||||||
this.update({ 'data.bonneaventure.actuelle': newBA })
|
this.update({ 'system.bonneaventure.actuelle': newBA })
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getEclat() {
|
getEclat() {
|
||||||
return this.data.data.eclat.value
|
return this.system.eclat.value
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
changeEclat(value) {
|
changeEclat(value) {
|
||||||
let newE = this.data.data.eclat.value
|
let newE = this.system.eclat.value
|
||||||
newE += value
|
newE += value
|
||||||
this.update({ 'data.eclat.value': newE })
|
this.update({ 'system.eclat.value': newE })
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
canEclatDoubleD20() {
|
canEclatDoubleD20() {
|
||||||
return (this.getAlignement() == "loyal" && this.data.data.eclat.value > 0)
|
return (this.getAlignement() == "loyal" && this.system.eclat.value > 0)
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
subPointsAme(runeMode, value) {
|
||||||
|
let ame = duplicate(this.system.ame)
|
||||||
|
if(runeMode == "prononcer") {
|
||||||
|
ame.value -= value
|
||||||
|
} else {
|
||||||
|
ame.currentmax -= value
|
||||||
|
}
|
||||||
|
this.update( {'system.ame': ame})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -280,19 +313,19 @@ export class MournbladeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getAttribute(attrKey) {
|
getAttribute(attrKey) {
|
||||||
return this.data.data.attributes[attrKey]
|
return this.system.attributes[attrKey]
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getBonusDegats() {
|
getBonusDegats() {
|
||||||
return __degatsBonus[this.data.data.attributs.pui.value]
|
return __degatsBonus[this.system.attributs.pui.value]
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async equipGear(equipmentId) {
|
async equipGear(equipmentId) {
|
||||||
let item = this.data.items.find(item => item.id == equipmentId);
|
let item = this.items.find(item => item.id == equipmentId);
|
||||||
if (item && item.data.data) {
|
if (item && item.system.data) {
|
||||||
let update = { _id: item.id, "data.equipped": !item.data.data.equipped };
|
let update = { _id: item.id, "system.equipped": !item.system.equipped };
|
||||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -300,56 +333,80 @@ export class MournbladeActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getSubActors() {
|
getSubActors() {
|
||||||
let subActors = [];
|
let subActors = [];
|
||||||
for (let id of this.data.data.subactors) {
|
for (let id of this.system.subactors) {
|
||||||
subActors.push(duplicate(game.actors.get(id)));
|
subActors.push(duplicate(game.actors.get(id)));
|
||||||
}
|
}
|
||||||
return subActors;
|
return subActors;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addSubActor(subActorId) {
|
async addSubActor(subActorId) {
|
||||||
let subActors = duplicate(this.data.data.subactors);
|
let subActors = duplicate(this.system.subactors);
|
||||||
subActors.push(subActorId);
|
subActors.push(subActorId);
|
||||||
await this.update({ 'data.subactors': subActors });
|
await this.update({ 'system.subactors': subActors });
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async delSubActor(subActorId) {
|
async delSubActor(subActorId) {
|
||||||
let newArray = [];
|
let newArray = [];
|
||||||
for (let id of this.data.data.subactors) {
|
for (let id of this.system.subactors) {
|
||||||
if (id != subActorId) {
|
if (id != subActorId) {
|
||||||
newArray.push(id);
|
newArray.push(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await this.update({ 'data.subactors': newArray });
|
await this.update({ 'system.subactors': newArray });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async incDecQuantity(objetId, incDec = 0) {
|
async incDecQuantity(objetId, incDec = 0) {
|
||||||
let objetQ = this.data.items.get(objetId)
|
let objetQ = this.items.get(objetId)
|
||||||
if (objetQ) {
|
if (objetQ) {
|
||||||
let newQ = objetQ.data.data.quantity + incDec;
|
let newQ = objetQ.system.quantite + incDec;
|
||||||
const updated = await this.updateEmbeddedDocuments('Item', [{ _id: objetQ.id, 'data.quantity': newQ }]); // pdates one EmbeddedEntity
|
const updated = await this.updateEmbeddedDocuments('Item', [{ _id: objetQ.id, 'system.quantite': newQ }]); // pdates one EmbeddedEntity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCompetence(compId) {
|
getCompetence(compId) {
|
||||||
return this.data.items.get(compId)
|
return this.items.get(compId)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async setPredilectionUsed(compId, predIdx) {
|
async setPredilectionUsed(compId, predIdx) {
|
||||||
let comp = this.data.items.get(compId)
|
let comp = this.items.get(compId)
|
||||||
let pred = duplicate(comp.data.data.predilections)
|
let pred = duplicate(comp.system.predilections)
|
||||||
pred[predIdx].used = true
|
pred[predIdx].used = true
|
||||||
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'data.predilections': pred }])
|
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCommonRollData(attrKey = undefined, compId = undefined) {
|
getInitiativeScore( ) {
|
||||||
|
return Number(this.system.attributs.adr.value) + Number(this.system.combat.initbonus)
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getBestDefenseValue() {
|
||||||
|
let defenseList = this.items.filter(item => (item.type =="arme" || item.type == "bouclier") && item.system.equipped)
|
||||||
|
let maxDef = 0
|
||||||
|
let bestArme
|
||||||
|
for(let arme of defenseList) {
|
||||||
|
if (arme.type == "arme" && arme.system.isdefense) {
|
||||||
|
arme = this.prepareArme(arme)
|
||||||
|
}
|
||||||
|
if (arme.type == "bouclier" ) {
|
||||||
|
arme = this.prepareBouclier(arme)
|
||||||
|
}
|
||||||
|
if ( arme.system.totalDefensif > maxDef) {
|
||||||
|
maxDef = arme.system.totalDefensif
|
||||||
|
bestArme = duplicate(arme)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bestArme
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getCommonRollData(attrKey = undefined, compId = undefined, compName = undefined) {
|
||||||
let rollData = MournbladeUtility.getBasicRollData()
|
let rollData = MournbladeUtility.getBasicRollData()
|
||||||
rollData.alias = this.name
|
rollData.alias = this.name
|
||||||
rollData.actorImg = this.img
|
rollData.actorImg = this.img
|
||||||
rollData.actorId = this.id
|
rollData.actorId = this.id
|
||||||
|
rollData.tokenId = this.token?.id
|
||||||
rollData.img = this.img
|
rollData.img = this.img
|
||||||
rollData.canEclatDoubleD20 = this.canEclatDoubleD20()
|
rollData.canEclatDoubleD20 = this.canEclatDoubleD20()
|
||||||
rollData.doubleD20 = false
|
rollData.doubleD20 = false
|
||||||
@ -358,13 +415,17 @@ export class MournbladeActor extends Actor {
|
|||||||
if (attrKey) {
|
if (attrKey) {
|
||||||
rollData.attrKey = attrKey
|
rollData.attrKey = attrKey
|
||||||
if (attrKey != "tochoose") {
|
if (attrKey != "tochoose") {
|
||||||
rollData.actionImg = "systems/fvtt-mournblade/assets/icons/" + this.data.data.attributs[attrKey].labelnorm + ".webp"
|
rollData.actionImg = "systems/fvtt-mournblade/assets/icons/" + this.system.attributs[attrKey].labelnorm + ".webp"
|
||||||
rollData.attr = duplicate(this.data.data.attributs[attrKey])
|
rollData.attr = duplicate(this.system.attributs[attrKey])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (compId) {
|
if (compId) {
|
||||||
rollData.competence = duplicate(this.data.items.get(compId) || {})
|
rollData.competence = duplicate(this.items.get(compId) || {})
|
||||||
rollData.actionImg = rollData.competence.img
|
rollData.actionImg = rollData.competence?.img
|
||||||
|
}
|
||||||
|
if (compName) {
|
||||||
|
rollData.competence = duplicate(this.items.find( item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||||
|
rollData.actionImg = rollData.competence?.img
|
||||||
}
|
}
|
||||||
return rollData
|
return rollData
|
||||||
}
|
}
|
||||||
@ -372,7 +433,6 @@ export class MournbladeActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollAttribut(attrKey) {
|
async rollAttribut(attrKey) {
|
||||||
let rollData = this.getCommonRollData(attrKey)
|
let rollData = this.getCommonRollData(attrKey)
|
||||||
console.log("RollDatra", rollData)
|
|
||||||
let rollDialog = await MournbladeRollDialog.create(this, rollData)
|
let rollDialog = await MournbladeRollDialog.create(this, rollData)
|
||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
@ -385,11 +445,33 @@ export class MournbladeActor extends Actor {
|
|||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollRune(runeId) {
|
||||||
|
let comp = this.items.find(comp => comp.type == "competence" && comp.name.toLowerCase() == "savoir : runes")
|
||||||
|
if ( !comp) {
|
||||||
|
ui.notifications.warn("La compétence Savoirs : Runes n'a pas été trouvée, abandon.")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
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 MournbladeRollDialog.create(this, rollData)
|
||||||
|
rollDialog.render(true)
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollArmeOffensif(armeId) {
|
async rollArmeOffensif(armeId) {
|
||||||
let arme = this.data.items.get(armeId)
|
let arme = this.items.get(armeId)
|
||||||
arme = this.prepareArme(arme)
|
if (arme.type == "arme") {
|
||||||
let rollData = this.getCommonRollData(arme.data.attrKey, arme.data.competence._id)
|
arme = this.prepareArme(arme)
|
||||||
|
}
|
||||||
|
if (arme.type == "bouclier") {
|
||||||
|
arme = this.prepareBouclier(arme)
|
||||||
|
}
|
||||||
|
let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id)
|
||||||
rollData.arme = arme
|
rollData.arme = arme
|
||||||
console.log("ARME!", rollData)
|
console.log("ARME!", rollData)
|
||||||
let rollDialog = await MournbladeRollDialog.create(this, rollData)
|
let rollDialog = await MournbladeRollDialog.create(this, rollData)
|
||||||
@ -398,9 +480,14 @@ export class MournbladeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollArmeDegats(armeId) {
|
async rollArmeDegats(armeId) {
|
||||||
let arme = this.data.items.get(armeId)
|
let arme = this.items.get(armeId)
|
||||||
arme = this.prepareArme(arme)
|
if (arme.type == "arme") {
|
||||||
let roll = new Roll(arme.data.totalDegats).roll({ async: false })
|
arme = this.prepareArme(arme)
|
||||||
|
}
|
||||||
|
if (arme.type == "bouclier") {
|
||||||
|
arme = this.prepareBouclier(arme)
|
||||||
|
}
|
||||||
|
let roll = new Roll(arme.system.totalDegats).roll({ async: false })
|
||||||
await MournbladeUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
|
await MournbladeUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
|
||||||
let rollData = {
|
let rollData = {
|
||||||
arme: arme,
|
arme: arme,
|
||||||
|
@ -9,8 +9,11 @@ export class MournbladeCombat extends Combat {
|
|||||||
for (let cId = 0; cId < ids.length; cId++) {
|
for (let cId = 0; cId < ids.length; cId++) {
|
||||||
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( this.id, id ) : -1;
|
let initBonus = c.actor ? c.actor.getInitiativeScore() : 0
|
||||||
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: initBonus } ]);
|
let roll = new Roll("1d10 + "+initBonus).roll({ async: false})
|
||||||
|
await MournbladeUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"))
|
||||||
|
//console.log("Init bonus", initBonus, roll.total)
|
||||||
|
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: roll.total } ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
@ -48,9 +48,8 @@ export class MournbladeItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = MournbladeUtility.data(this.object);
|
const objectData = duplicate(this.object)
|
||||||
|
let itemData = objectData
|
||||||
let itemData = foundry.utils.deepClone(MournbladeUtility.templateData(this.object));
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
id: this.id,
|
id: this.id,
|
||||||
@ -60,15 +59,19 @@ export class MournbladeItemSheet extends ItemSheet {
|
|||||||
editable: this.isEditable,
|
editable: this.isEditable,
|
||||||
cssClass: this.isEditable ? "editable" : "locked",
|
cssClass: this.isEditable ? "editable" : "locked",
|
||||||
attributs: MournbladeUtility.getAttributs(),
|
attributs: MournbladeUtility.getAttributs(),
|
||||||
data: itemData,
|
data: itemData.system,
|
||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
|
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
|
||||||
mr: (this.object.type == 'specialisation'),
|
mr: (this.object.type == 'specialisation'),
|
||||||
isGM: game.user.isGM
|
isGM: game.user.isGM
|
||||||
}
|
}
|
||||||
|
|
||||||
this.options.editable = !(this.object.data.origin == "embeddedItem");
|
if ( objectData.type == "don") {
|
||||||
|
formData.sacrifice = await TextEditor.enrichHTML(this.object.system.sacrifice, {async: true})
|
||||||
|
}
|
||||||
|
//this.options.editable = !(this.object.origin == "embeddedItem");
|
||||||
console.log("ITEM DATA", formData, this);
|
console.log("ITEM DATA", formData, this);
|
||||||
return formData;
|
return formData;
|
||||||
}
|
}
|
||||||
@ -130,26 +133,26 @@ export class MournbladeItemSheet extends ItemSheet {
|
|||||||
html.find('.edit-prediction').change(ev => {
|
html.find('.edit-prediction').change(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||||
let index = li.data("prediction-index")
|
let index = li.data("prediction-index")
|
||||||
let pred = duplicate(this.object.data.data.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 = duplicate(this.object.data.data.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 = duplicate(this.object.data.data.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 = duplicate(this.object.data.data.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 })
|
||||||
})
|
})
|
||||||
|
@ -67,9 +67,38 @@ function welcomeMessage() {
|
|||||||
whisper: [game.user.id],
|
whisper: [game.user.id],
|
||||||
content: `<div id="welcome-message-Mournblade"><span class="rdd-roll-part">
|
content: `<div id="welcome-message-Mournblade"><span class="rdd-roll-part">
|
||||||
<strong>Bienvenue dans les Jeunes Royaumes de Mournblade !</strong>
|
<strong>Bienvenue dans les Jeunes Royaumes de Mournblade !</strong>
|
||||||
|
<p>Les livres de Mournblade sont nécessaires pour jouer : https://www.titam-france.fr</p>
|
||||||
|
<p>Mournblade est jeu de rôle publié par Titam France/Sombres projets, tout les droits leur appartiennent.</p>
|
||||||
|
<p>Système développé par LeRatierBretonnien, support sur le <a href="https://discord.gg/pPSDNJk">Discord FR de Foundry</a>.</p>
|
||||||
` });
|
` });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
// Register world usage statistics
|
||||||
|
function registerUsageCount( registerKey ) {
|
||||||
|
if ( game.user.isGM ) {
|
||||||
|
game.settings.register(registerKey, "world-key", {
|
||||||
|
name: "Unique world key",
|
||||||
|
scope: "world",
|
||||||
|
config: false,
|
||||||
|
default: "",
|
||||||
|
type: String
|
||||||
|
});
|
||||||
|
|
||||||
|
let worldKey = game.settings.get(registerKey, "world-key")
|
||||||
|
if ( worldKey == undefined || worldKey == "" ) {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Foundry VTT Initialization */
|
/* Foundry VTT Initialization */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -85,12 +114,7 @@ Hooks.once("ready", function () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// CSS patch for v9
|
registerUsageCount('fvtt-mournblade')
|
||||||
if (game.version) {
|
|
||||||
let sidebar = document.getElementById("sidebar");
|
|
||||||
sidebar.style.width = "min-content";
|
|
||||||
}
|
|
||||||
|
|
||||||
welcomeMessage();
|
welcomeMessage();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ export class MournbladeRollDialog extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, rollData ) {
|
static async create(actor, rollData ) {
|
||||||
|
|
||||||
let options = { classes: ["MournbladeDialog"], width: 320, height: 380, 'z-index': 99999 };
|
let options = { classes: ["MournbladeDialog"], width: 340, height: 'fit-content', 'z-index': 99999 };
|
||||||
let html = await renderTemplate('systems/fvtt-mournblade/templates/roll-dialog-generic.html', rollData);
|
let html = await renderTemplate('systems/fvtt-mournblade/templates/roll-dialog-generic.html', rollData);
|
||||||
|
|
||||||
return new MournbladeRollDialog(actor, rollData, html, options );
|
return new MournbladeRollDialog(actor, rollData, html, options );
|
||||||
@ -66,6 +66,12 @@ export class MournbladeRollDialog extends Dialog {
|
|||||||
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) => {
|
||||||
|
this.rollData.runemode = String(event.currentTarget.value)
|
||||||
|
})
|
||||||
|
html.find('#runeame').change(async (event) => {
|
||||||
|
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
|
||||||
})
|
})
|
||||||
|
@ -46,6 +46,17 @@ export class MournbladeUtility {
|
|||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static getActorFromRollData(rollData) {
|
||||||
|
let actor = game.actors.get(rollData.actorId)
|
||||||
|
if (rollData.tokenId) {
|
||||||
|
let token = canvas.tokens.placeables.find(t => t.id == rollData.tokenId)
|
||||||
|
if (token) {
|
||||||
|
actor = token.actor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return actor
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getModificateurOptions() {
|
static getModificateurOptions() {
|
||||||
@ -56,6 +67,22 @@ export class MournbladeUtility {
|
|||||||
return opt.concat("\n")
|
return opt.concat("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static sortArrayObjectsByName(myArray) {
|
||||||
|
myArray.sort((a, b) => {
|
||||||
|
return a.name.localeCompare(b.name);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static getPointAmeOptions() {
|
||||||
|
let opt = []
|
||||||
|
for (let i = 1; i <= 20; i++) {
|
||||||
|
opt.push(`<option value="${i}">${i}</option>`)
|
||||||
|
}
|
||||||
|
return opt.concat("\n")
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getAttributs() {
|
static getAttributs() {
|
||||||
return { adr: "Adresse", pui: "Puissance", cla: "Clairvoyance", pre: "Présence", tre: "Trempe" }
|
return { adr: "Adresse", pui: "Puissance", cla: "Clairvoyance", pre: "Présence", tre: "Trempe" }
|
||||||
@ -95,15 +122,15 @@ export class MournbladeUtility {
|
|||||||
static async chatListeners(html) {
|
static async chatListeners(html) {
|
||||||
|
|
||||||
html.on("click", '.predilection-reroll', async event => {
|
html.on("click", '.predilection-reroll', async event => {
|
||||||
let predIdx = $(event.currentTarget).data("predilection-index")
|
let predIdx = $(event.currentTarget).data("predilection-index")
|
||||||
let messageId = MournbladeUtility.findChatMessageId(event.currentTarget)
|
let messageId = MournbladeUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
await actor.setPredilectionUsed( rollData.competence._id, predIdx)
|
await actor.setPredilectionUsed(rollData.competence._id, predIdx)
|
||||||
rollData.competence = duplicate( actor.getCompetence(rollData.competence._id) )
|
rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
|
||||||
MournbladeUtility.rollMournblade(rollData)
|
await MournbladeUtility.rollMournblade(rollData)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -146,19 +173,6 @@ export class MournbladeUtility {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static templateData(it) {
|
|
||||||
return MournbladeUtility.data(it)?.data ?? {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static data(it) {
|
|
||||||
if (it instanceof Actor || it instanceof Item || it instanceof Combatant) {
|
|
||||||
return it.data;
|
|
||||||
}
|
|
||||||
return it;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static createDirectOptionList(min, max) {
|
static createDirectOptionList(min, max) {
|
||||||
let options = {};
|
let options = {};
|
||||||
@ -187,11 +201,6 @@ export class MournbladeUtility {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static getDefenseState(actorId) {
|
|
||||||
return this.defenderStore[actorId];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static updateRollData(rollData) {
|
static updateRollData(rollData) {
|
||||||
|
|
||||||
@ -215,7 +224,6 @@ export class MournbladeUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onSocketMesssage(msg) {
|
static onSocketMesssage(msg) {
|
||||||
//console.log("SOCKET MESSAGE", msg.name, game.user.character.id, msg.data.defenderId);
|
|
||||||
if (msg.name == "msg_update_defense_state") {
|
if (msg.name == "msg_update_defense_state") {
|
||||||
this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
|
this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
|
||||||
}
|
}
|
||||||
@ -285,50 +293,72 @@ export class MournbladeUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//console.log("Result : ", rollData)
|
||||||
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
||||||
rollData.isSuccess = (rollData.roll.finalResult >= rollData.difficulte)
|
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
||||||
rollData.isHeroique = ((rollData.roll.finalResult - rollData.difficulte) >= 10)
|
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
||||||
rollData.isDramatique = ((rollData.roll.finalResult - rollData.difficulte) <= -10)
|
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async rollMournblade(rollData) {
|
static async rollMournblade(rollData) {
|
||||||
|
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
if (rollData.attrKey == "tochoose") { // No attr selected, force address
|
if (rollData.attrKey == "tochoose") { // No attr selected, force address
|
||||||
rollData.attrKey = "adr"
|
rollData.attrKey = "adr"
|
||||||
}
|
}
|
||||||
if ( !rollData.attr) {
|
if (!rollData.attr) {
|
||||||
rollData.actionImg = "systems/fvtt-mournblade/assets/icons/" + actor.data.data.attributs[rollData.attrKey].labelnorm + ".webp"
|
rollData.actionImg = "systems/fvtt-mournblade/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
|
||||||
rollData.attr = duplicate(actor.data.data.attributs[rollData.attrKey])
|
rollData.attr = duplicate(actor.system.attributs[rollData.attrKey])
|
||||||
}
|
}
|
||||||
|
|
||||||
rollData.diceFormula = rollData.mainDice
|
rollData.diceFormula = rollData.mainDice
|
||||||
if ( rollData.doubleD20) { // Multiply result !
|
if (rollData.doubleD20) { // Multiply result !
|
||||||
rollData.diceFormula += "*2"
|
rollData.diceFormula += "*2"
|
||||||
if (!rollData.isReroll) {
|
if (!rollData.isReroll) {
|
||||||
actor.changeEclat(-1)
|
actor.changeEclat(-1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//console.log("BEFORE COMP", rollData)
|
||||||
if (rollData.competence) {
|
if (rollData.competence) {
|
||||||
rollData.predilections = duplicate( rollData.competence.data.predilections.filter( pred => !pred.used) || [] )
|
rollData.predilections = duplicate(rollData.competence.system.predilections.filter(pred => !pred.used) || [])
|
||||||
let compmod = (rollData.competence.data.niveau == 0) ? -3 : 0
|
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
|
||||||
rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.data.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.diceFormula += `+${rollData.arme.data.bonusmaniementoff}`
|
if (rollData.arme && rollData.arme.type == "arme") {
|
||||||
|
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 })
|
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 = myRoll
|
rollData.roll = duplicate(myRoll)
|
||||||
|
rollData.diceResult = myRoll.terms[0].results[0].result
|
||||||
console.log(">>>> ", myRoll)
|
console.log(">>>> ", myRoll)
|
||||||
|
|
||||||
rollData.finalResult = myRoll.total
|
rollData.finalResult = myRoll.total
|
||||||
this.computeResult( rollData)
|
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-mournblade/templates/chat-generic-result.html`, rollData)
|
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-generic-result.html`, rollData)
|
||||||
@ -339,14 +369,14 @@ export class MournbladeUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async bonusRollMournblade(rollData) {
|
static async bonusRollMournblade(rollData) {
|
||||||
rollData.bonusFormula = rollData.addedBonus
|
rollData.bonusFormula = rollData.addedBonus
|
||||||
|
|
||||||
let bonusRoll = new Roll(rollData.bonusFormula).roll({async: false})
|
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 = bonusRoll
|
rollData.bonusRoll = duplicate(bonusRoll)
|
||||||
|
|
||||||
rollData.finalResult += rollData.bonusRoll.total
|
rollData.finalResult += rollData.bonusRoll.total
|
||||||
|
|
||||||
this.computeResult( rollData)
|
this.computeResult(rollData)
|
||||||
|
|
||||||
this.createChatWithRollMode(rollData.alias, {
|
this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-generic-result.html`, rollData)
|
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-generic-result.html`, rollData)
|
||||||
@ -358,6 +388,7 @@ export class MournbladeUtility {
|
|||||||
static getUsers(filter) {
|
static getUsers(filter) {
|
||||||
return game.users.filter(filter).map(user => user.data._id);
|
return game.users.filter(filter).map(user => user.data._id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getWhisperRecipients(rollMode, name) {
|
static getWhisperRecipients(rollMode, name) {
|
||||||
switch (rollMode) {
|
switch (rollMode) {
|
||||||
@ -440,6 +471,7 @@ export class MournbladeUtility {
|
|||||||
rollId: 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(),
|
||||||
difficulte: 0,
|
difficulte: 0,
|
||||||
modificateur: 0,
|
modificateur: 0,
|
||||||
}
|
}
|
||||||
@ -449,15 +481,16 @@ export class MournbladeUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static updateWithTarget(rollData) {
|
static updateWithTarget(rollData) {
|
||||||
let objectDefender
|
let target = MournbladeUtility.getTarget()
|
||||||
let target = MournbladeUtility.getTarget();
|
|
||||||
if (target) {
|
if (target) {
|
||||||
let defenderActor = game.actors.get(target.data.actorId)
|
rollData.defenderTokenId = target.id
|
||||||
objectDefender = MournbladeUtility.data(defenderActor)
|
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||||
objectDefender = mergeObject(objectDefender, target.data.actorData)
|
rollData.armeDefense = defender.getBestDefenseValue()
|
||||||
rollData.defender = objectDefender
|
if (rollData.armeDefense) {
|
||||||
rollData.attackerId = this.id
|
rollData.difficulte = rollData.armeDefense.system.totalDefensif
|
||||||
rollData.defenderId = objectDefender._id
|
} else {
|
||||||
|
ui.notifications.warn("Aucune arme de défense équipée, difficulté manuelle à positionner.")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -472,82 +505,82 @@ export class MournbladeUtility {
|
|||||||
let msg = game.messages.get(msgId)
|
let msg = game.messages.get(msgId)
|
||||||
if (msg) {
|
if (msg) {
|
||||||
let rollData = msg.getFlag("world", "mournblade-roll")
|
let rollData = msg.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
actor.changeBonneAventure( changed )
|
actor.changeBonneAventure(changed)
|
||||||
rollData.isReroll = true
|
rollData.isReroll = true
|
||||||
rollData.textBonus = "Bonus de Points d'Aventure"
|
rollData.textBonus = "Bonus de Points d'Aventure"
|
||||||
if (addedBonus == "reroll") {
|
if (addedBonus == "reroll") {
|
||||||
MournbladeUtility.rollMournblade(rollData)
|
MournbladeUtility.rollMournblade(rollData)
|
||||||
} else {
|
} else {
|
||||||
rollData.addedBonus = addedBonus
|
rollData.addedBonus = addedBonus
|
||||||
MournbladeUtility.bonusRollMournblade(rollData)
|
MournbladeUtility.bonusRollMournblade(rollData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static applyEclatRoll(li, changed, addedBonus) {
|
static applyEclatRoll(li, changed, addedBonus) {
|
||||||
let msgId = li.data("message-id")
|
let msgId = li.data("message-id")
|
||||||
let msg = game.messages.get(msgId)
|
let msg = game.messages.get(msgId)
|
||||||
if (msg) {
|
if (msg) {
|
||||||
let rollData = msg.getFlag("world", "mournblade-roll")
|
let rollData = msg.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
actor.changeEclat( changed )
|
actor.changeEclat(changed)
|
||||||
rollData.isReroll = true
|
rollData.isReroll = true
|
||||||
rollData.textBonus = "Bonus d'Eclat"
|
rollData.textBonus = "Bonus d'Eclat"
|
||||||
rollData.addedBonus = addedBonus
|
rollData.addedBonus = addedBonus
|
||||||
MournbladeUtility.bonusRollMournblade(rollData)
|
MournbladeUtility.bonusRollMournblade(rollData)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static chatRollMenu(html, options) {
|
static chatRollMenu(html, options) {
|
||||||
let canApply = li => canvas.tokens.controlled.length && li.find(".mournblade-roll").length
|
let canApply = li => canvas.tokens.controlled.length && li.find(".mournblade-roll").length
|
||||||
let canApplyBALoyal = function (li) {
|
let canApplyBALoyal = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get(li.attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
return ( !rollData.isReroll && actor.getBonneAventure() > 0 && actor.getAlignement() == "loyal")
|
return (!rollData.isReroll && actor.getBonneAventure() > 0 && actor.getAlignement() == "loyal")
|
||||||
}
|
}
|
||||||
let canApplyPELoyal = function (li) {
|
let canApplyPELoyal = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get(li.attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
return ( !rollData.isReroll && actor.getEclat() > 0 && actor.getAlignement() == "loyal")
|
return (!rollData.isReroll && actor.getEclat() > 0 && actor.getAlignement() == "loyal")
|
||||||
}
|
}
|
||||||
let canApplyBAChaotique = function (li) {
|
let canApplyBAChaotique = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get(li.attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
return ( !rollData.isReroll && actor.getBonneAventure() > 0 && actor.getAlignement() == "chaotique")
|
return (!rollData.isReroll && actor.getBonneAventure() > 0 && actor.getAlignement() == "chaotique")
|
||||||
}
|
}
|
||||||
let canApplyBAChaotique3 = function (li) {
|
let canApplyBAChaotique3 = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get(li.attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
return ( !rollData.isReroll && actor.getBonneAventure() > 2 && actor.getAlignement() == "chaotique")
|
return (!rollData.isReroll && actor.getBonneAventure() > 2 && actor.getAlignement() == "chaotique")
|
||||||
}
|
}
|
||||||
let canApplyPEChaotique = function (li) {
|
let canApplyPEChaotique = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get(li.attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
return ( !rollData.isReroll && actor.getEclat() > 0 && actor.getAlignement() == "chaotique")
|
return (!rollData.isReroll && actor.getEclat() > 0 && actor.getAlignement() == "chaotique")
|
||||||
}
|
}
|
||||||
let hasPredilection = function (li) {
|
let hasPredilection = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get(li.attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
if ( rollData.competence) {
|
if (rollData.competence) {
|
||||||
let nbPred = rollData.competence.data.predilections.filter( pred => !pred.used).length
|
let nbPred = rollData.competence.data.predilections.filter(pred => !pred.used).length
|
||||||
return ( !rollData.isReroll && rollData.competence && nbPred > 0 )
|
return (!rollData.isReroll && rollData.competence && nbPred > 0)
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let canCompetenceDouble = function (li) {
|
let canCompetenceDouble = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get(li.attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "mournblade-roll")
|
let rollData = message.getFlag("world", "mournblade-roll")
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = MournbladeUtility.getActorFromRollData(rollData)
|
||||||
if ( rollData.competence) {
|
if (rollData.competence) {
|
||||||
return rollData.competence.data.doublebonus
|
return rollData.competence.data.doublebonus
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
@ -1,42 +1,46 @@
|
|||||||
{"name":"Fouet","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d4 + 1","deuxmains":false,"courte":3,"moyenne":0,"longue":0,"tr":0,"rarete":4,"prix":40},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Qb1h25U88mTM4h72"}},"_id":"0swiE8k5zfUIqmXu"}
|
{"name":"Fouet","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.Qb1h25U88mTM4h72"}},"_id":"0swiE8k5zfUIqmXu","system":{"description":"","typearme":"contactjet","isdefense":false,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d4 + 1","nonletaux":true,"deuxmains":false,"courte":3,"moyenne":0,"longue":0,"tr":0,"rarete":4,"prix":40,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964292,"modifiedTime":1664573659387,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"2BSVJXr0FGZZJ9fh","name":"Hache des mers","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.mGYFgteaWBDo10Xb"}}}
|
{"_id":"2BSVJXr0FGZZJ9fh","name":"Hache des mers","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.mGYFgteaWBDo10Xb"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964293,"modifiedTime":1664573659388,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"2qezkR1BdC0DcRIl","name":"Fléau d’armes","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D10+1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.PHQabMgfk1GNOjKo"}}}
|
{"name":"Ecu d'acier","type":"bouclier","img":"systems/fvtt-mournblade/assets/icons/protection.webp","system":{"description":"","bonusdefense":3,"degats":"1d8","nonletaux":"false","rarete":9,"prix":10,"equipped":false,"isdefense":null},"effects":[],"ownership":{"default":0,"1Hr6ON03ooIXzvIm":3},"flags":{"core":{"sourceId":"Item.Gn52Vfp6Vg4cnpd0"}},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572521380,"modifiedTime":1664573706183,"lastModifiedBy":"1Hr6ON03ooIXzvIm"},"folder":null,"sort":0,"_id":"2PmIgKP4wZLHGp0s"}
|
||||||
{"name":"Arbalète","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"2d6","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":3,"rarete":10,"prix":500},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.WYp8ojQN8HYJwUJc"}},"_id":"2zIdrBK88iuMbOF0"}
|
{"_id":"2qezkR1BdC0DcRIl","name":"Fléau d’armes","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.PHQabMgfk1GNOjKo"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D10+1","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":70,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964293,"modifiedTime":1664573659387,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"3Iv1oLpZcPEJVaI4","name":"Cimeterre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":1,"degats":"1d10","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.RYxEg0gJfAlIZ4mw"}}}
|
{"name":"Arbalète","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.WYp8ojQN8HYJwUJc"}},"_id":"2zIdrBK88iuMbOF0","system":{"description":"","typearme":"tir","isdefense":null,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"2d6","nonletaux":null,"deuxmains":"","courte":25,"moyenne":50,"longue":75,"tr":3,"rarete":10,"prix":500,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964293,"modifiedTime":1664573659385,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Fronde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D4","deuxmains":false,"courte":10,"moyenne":25,"longue":50,"tr":1,"rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TgVuNnytO9k2K0Xe"}},"_id":"4To8rLxv4efsoZK0"}
|
{"_id":"3Iv1oLpZcPEJVaI4","name":"Cimeterre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.RYxEg0gJfAlIZ4mw"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":1,"degats":"1d10","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":100,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Pierre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D4","deuxmains":false,"courte":3,"moyenne":6,"longue":15,"tr":1,"rarete":0,"prix":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.3YS9IfQddECnoagK"}},"_id":"4yKlK8MeSj5Zk8lM"}
|
{"name":"Fronde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.TgVuNnytO9k2K0Xe"}},"_id":"4To8rLxv4efsoZK0","system":{"description":"","typearme":"tir","isdefense":false,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D4","nonletaux":false,"deuxmains":false,"courte":10,"moyenne":25,"longue":50,"tr":1,"rarete":2,"prix":1,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659388,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"6e1JHoD1Jrz020R7","name":"Grand marteau","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"2D6+2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.vjic4cPkJ0iMCIt5"}}}
|
{"name":"Pierre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.3YS9IfQddECnoagK"}},"_id":"4yKlK8MeSj5Zk8lM","system":{"description":"","typearme":"contactjet","isdefense":false,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D4","nonletaux":true,"deuxmains":false,"courte":3,"moyenne":6,"longue":15,"tr":1,"rarete":0,"prix":0,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659390,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Arc de cavalerie","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d6","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":7,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5EWrgNQjJMx1t2v1"}},"_id":"88UuW1bdpFuCmkqb"}
|
{"_id":"6e1JHoD1Jrz020R7","name":"Grand marteau","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.vjic4cPkJ0iMCIt5"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"2D6+2","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":120,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659388,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"9Eo9mRbPPZHN98Cr","name":"Épée de maître","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d8+ 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.kX3MbDFu9uYZVNf2"}}}
|
{"name":"Arc de cavalerie","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.5EWrgNQjJMx1t2v1"}},"_id":"88UuW1bdpFuCmkqb","system":{"description":"","typearme":"tir","isdefense":null,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d6","nonletaux":null,"deuxmains":null,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":7,"prix":100,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659385,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"9xPd4ITtyk3nmMoN","name":"Lance ilmioréenne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>La lance ilmioréenne est un solide bâton de combat surmonté d’une pointe sur lequel est fi xé quasi perpendiculairement un fer de hache plat et étroit. Un contrepoids fi xé à l’autre extrémité sert à équilibrer l’arme qui peut être maniée à la fois comme une lance et comme une hache à deux mains, ce qui permet de maintenir ses ennemis à distance ou de leur porter des coups dévastateurs. Ces lances furent inventées à l’époque de la tribu d’Ilm, quand les lances et épées étaient déclarées illégales par les gouverneurs melnibonéens de la région. Certaines écoles militaires ilmioréennes enseignent toujours le Style Imar, qui mêle en une seule et même technique le combat à deux mains à la lance et le combat au bâton.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":2,"degats":"1d8 + 2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.8ApbiVgkx79OHVp2"}}}
|
{"_id":"9Eo9mRbPPZHN98Cr","name":"Épée de maître","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.kX3MbDFu9uYZVNf2"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d8+ 2","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":120,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"CeC5lAKs7NdPF05l","name":"Masse lourde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d10 + 1","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":80},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.DPfXgFj3gpjJ3nbR"}}}
|
{"_id":"9xPd4ITtyk3nmMoN","name":"Lance ilmioréenne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.8ApbiVgkx79OHVp2"}},"system":{"description":"<p>La lance ilmioréenne est un solide bâton de combat surmonté d’une pointe sur lequel est fi xé quasi perpendiculairement un fer de hache plat et étroit. Un contrepoids fi xé à l’autre extrémité sert à équilibrer l’arme qui peut être maniée à la fois comme une lance et comme une hache à deux mains, ce qui permet de maintenir ses ennemis à distance ou de leur porter des coups dévastateurs. Ces lances furent inventées à l’époque de la tribu d’Ilm, quand les lances et épées étaient déclarées illégales par les gouverneurs melnibonéens de la région. Certaines écoles militaires ilmioréennes enseignent toujours le Style Imar, qui mêle en une seule et même technique le combat à deux mains à la lance et le combat au bâton.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":2,"degats":"1d8 + 2","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":100,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"CqP80SQFQOefpGgd","name":"Gourdin","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1D6","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.CBIfq9eRd2RmoI4H"}}}
|
{"_id":"CeC5lAKs7NdPF05l","name":"Masse lourde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.DPfXgFj3gpjJ3nbR"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d10 + 1","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":80,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"CupT9m8L909l4Fo5","name":"Rapière","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":3,"bonusmaniementdef":1,"degats":"1d8+ 1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.XIStcClTnmLoSwyR"}}}
|
{"_id":"CqP80SQFQOefpGgd","name":"Gourdin","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.CBIfq9eRd2RmoI4H"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1D6","nonletaux":true,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":5,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964294,"modifiedTime":1664573659388,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Hachette / Hache de lancer","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d4 + 1","deuxmains":false,"courte":5,"moyenne":10,"longue":15,"tr":1,"rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5NHbRanxXA5vUE3B"}},"_id":"DzkeP7jbruqW4nQH"}
|
{"_id":"CupT9m8L909l4Fo5","name":"Rapière","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.XIStcClTnmLoSwyR"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":3,"bonusmaniementdef":1,"degats":"1d8+ 1","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":150,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964295,"modifiedTime":1664573659390,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"FDeRBkxXwoZIuL9B","name":"Lance légère","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d8","deuxmains":false,"courte":10,"moyenne":25,"longue":50,"tr":1,"rarete":5,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.LIVeq22E9EanRS9L"}}}
|
{"name":"Hachette / Hache de lancer","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.5NHbRanxXA5vUE3B"}},"_id":"DzkeP7jbruqW4nQH","system":{"description":"","typearme":"contactjet","isdefense":false,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d4 + 1","nonletaux":false,"deuxmains":false,"courte":5,"moyenne":10,"longue":15,"tr":1,"rarete":5,"prix":50,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964295,"modifiedTime":1664573659388,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Arc de chasse","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 - 1","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TrYZ9BxYukS1mbBX"}},"_id":"Hrm08cpgAMMV6Jpq"}
|
{"_id":"FDeRBkxXwoZIuL9B","name":"Lance légère","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.LIVeq22E9EanRS9L"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d8","nonletaux":false,"deuxmains":false,"courte":10,"moyenne":25,"longue":50,"tr":1,"rarete":5,"prix":5,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964295,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"Iw3j4oC6H8HJ9MFQ","name":"Coup de pied / poing / tête","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d4","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.nBPKHsYIM0HgMcBy"}}}
|
{"name":"Arc de chasse","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.TrYZ9BxYukS1mbBX"}},"_id":"Hrm08cpgAMMV6Jpq","system":{"description":"","typearme":"tir","isdefense":false,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 - 1","nonletaux":false,"deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":8,"prix":250,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964295,"modifiedTime":1664573659385,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"KY22L6Lx5WxgvyGD","name":"Lance lourde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"1d10","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Kcl07bs7TOcne37W"}}}
|
{"_id":"Iw3j4oC6H8HJ9MFQ","name":"Coup de pied / poing / tête","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.nBPKHsYIM0HgMcBy"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d4","nonletaux":true,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":0,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964295,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Arc du Désert des Larmes","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Cet arc composite fait de bois, d’andouillers de cerf et/ou d’os est un arc court et très recourbé utilisé par les barbares du Désert des Larmes pour la chasse. On peut également trouver ce type d’arcs à Pikarayd et au Dorel.</p>","typearme":"tir","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 1","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.QmYjdRCAk3MnxKJg"}},"_id":"MDpFpqmXpIX5VV80"}
|
{"_id":"KY22L6Lx5WxgvyGD","name":"Lance lourde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.Kcl07bs7TOcne37W"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"1d10","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":50,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964295,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"MP49mYF7FVuW9ALB","name":"Hache de bataille dite lormyrienne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Cette double hache parfaitement équilibrée et proportionnée est l’arme favorite des chevaliers lormyriens. Il s’agit de l’arme idéale pour trancher, découper les lances ennemies et fendre les crânes.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6 + 2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Lpa6kesbzgKVtogn"}}}
|
{"name":"Arc du Désert des Larmes","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.QmYjdRCAk3MnxKJg"}},"_id":"MDpFpqmXpIX5VV80","system":{"description":"<p>Cet arc composite fait de bois, d’andouillers de cerf et/ou d’os est un arc court et très recourbé utilisé par les barbares du Désert des Larmes pour la chasse. On peut également trouver ce type d’arcs à Pikarayd et au Dorel.</p>","typearme":"tir","isdefense":null,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 1","nonletaux":null,"deuxmains":null,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":8,"prix":250,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964296,"modifiedTime":1664573659385,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"N5BbO2lGwzQnpvH0","name":"Couteau / Dague","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","isdefense":true,"bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d4","deuxmains":false,"courte":3,"moyenne":6,"longue":15,"tr":1,"rarete":1,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5a9GKIvNgbbXBq3s"}}}
|
{"_id":"MP49mYF7FVuW9ALB","name":"Hache de bataille dite lormyrienne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.Lpa6kesbzgKVtogn"}},"system":{"description":"<p>Cette double hache parfaitement équilibrée et proportionnée est l’arme favorite des chevaliers lormyriens. Il s’agit de l’arme idéale pour trancher, découper les lances ennemies et fendre les crânes.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6 + 2","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":250,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964296,"modifiedTime":1664573659388,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"QwrZbFeJUQv2OBqI","name":"Pique filkharienne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Cette longue pique à grande lame de près de trois mètres de long est l’arme de prédilection des piquiers de l’armée de Filkhar. Très effi cace pour lutter contre des cavaliers ou des ennemis en train de charger, elle l’est beaucoup moins en combat rapproché.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d8 + 2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.dF9LxfA1crZBmT92"}}}
|
{"_id":"N5BbO2lGwzQnpvH0","name":"Couteau / Dague","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.5a9GKIvNgbbXBq3s"}},"system":{"description":"","typearme":"contactjet","isdefense":true,"bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d4","nonletaux":false,"deuxmains":false,"courte":3,"moyenne":6,"longue":15,"tr":1,"rarete":1,"prix":10,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964297,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"SzgkzHvzma8NiMd5","name":"Masse légère","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.xrWRNZBrEzkUQzRG"}}}
|
{"_id":"QwrZbFeJUQv2OBqI","name":"Pique filkharienne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.dF9LxfA1crZBmT92"}},"system":{"description":"<p>Cette longue pique à grande lame de près de trois mètres de long est l’arme de prédilection des piquiers de l’armée de Filkhar. Très effi cace pour lutter contre des cavaliers ou des ennemis en train de charger, elle l’est beaucoup moins en combat rapproché.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d8 + 2","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":150,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964297,"modifiedTime":1664573659390,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"U8CoqFhGuT3ZHeq1","name":"Sabre d’abordage","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d8","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.aNUqO9OZT0GBszvv"}}}
|
{"_id":"SzgkzHvzma8NiMd5","name":"Masse légère","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.xrWRNZBrEzkUQzRG"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 2","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":5,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964297,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Javelot","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"jet","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d6","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":5,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Zwiz9E3TbeUP8qHH"}},"_id":"aELvOR7A9DIJKgBk"}
|
{"_id":"U8CoqFhGuT3ZHeq1","name":"Sabre d’abordage","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.aNUqO9OZT0GBszvv"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d8","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":50,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964297,"modifiedTime":1664573659390,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"aJBVfqQ3JQNyVL7c","name":"Fourche / Faux de paysan","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D6","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":1,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.K5Ayim6mPKZoCSCc"}}}
|
{"name":"Javelot","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.Zwiz9E3TbeUP8qHH"}},"_id":"aELvOR7A9DIJKgBk","system":{"description":"","typearme":"jet","isdefense":false,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d6","nonletaux":false,"deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":5,"prix":30,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964297,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"c6l49ZmEBjUxfI3W","name":"Arme improvisée","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d6","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.E7gcmnNQK2t5OQjv"}}}
|
{"_id":"aJBVfqQ3JQNyVL7c","name":"Fourche / Faux de paysan","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.K5Ayim6mPKZoCSCc"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D6","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":1,"prix":10,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964298,"modifiedTime":1664573659387,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Arc de guerre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d10 + 1","deuxmains":false,"courte":30,"moyenne":50,"longue":100,"tr":1,"rarete":6,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Tq6lUFPTkBN5cBwn"}},"_id":"cKf5z3fajUnxJh0r"}
|
{"name":"Pavois","type":"bouclier","img":"systems/fvtt-mournblade/assets/icons/protection.webp","system":{"description":"<p>Le Pavois se plante dans le sol au début du combat et ne peut plus être déplacé jusqu'à son issue.</p>","bonusdefense":3,"degats":"0","nonletaux":"false","rarete":7,"prix":5,"equipped":false,"isdefense":"false"},"effects":[],"ownership":{"default":0,"1Hr6ON03ooIXzvIm":3},"flags":{"core":{"sourceId":"Item.E3A8EnGzQctvYndd"}},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572521380,"modifiedTime":1664573708981,"lastModifiedBy":"1Hr6ON03ooIXzvIm"},"folder":null,"sort":0,"_id":"b2VNhFBgbvlzaMw8"}
|
||||||
{"_id":"fLHX6ut131CQI630","name":"Main gauche","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":3,"degats":"1d4 + 1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.BBii0qi1unvSRNO4"}}}
|
{"name":"Bouclier d'Infanterie","type":"bouclier","img":"systems/fvtt-mournblade/assets/icons/protection.webp","system":{"description":"","bonusdefense":2,"degats":"1d6","nonletaux":"false","rarete":5,"prix":2,"equipped":false},"effects":[],"ownership":{"default":0,"1Hr6ON03ooIXzvIm":3},"flags":{"core":{"sourceId":"Item.jeMLhLTJhTU6TJ58"}},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572521380,"modifiedTime":1664573703190,"lastModifiedBy":"1Hr6ON03ooIXzvIm"},"folder":null,"sort":0,"_id":"bqDEyPj9OlGnEJsr"}
|
||||||
{"_id":"freCCeiYGfWmUAQU","name":"Marteau de guerre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d8 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":6,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.6n2uSdYfRAsSqQnA"}}}
|
{"_id":"c6l49ZmEBjUxfI3W","name":"Arme improvisée","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.E7gcmnNQK2t5OQjv"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d6","nonletaux":true,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":0,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964298,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"j5659PJlrHz56V1k","name":"Sabre de Pan Tang","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Ce long sabre effi lé sert aux Cavaliers démoniaques de Pan Tang pour couper les têtes depuis le dos de leurs monstrueuses montures reptiliennes à six pattes.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d10 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.l3ffzso7GyHMKguD"}}}
|
{"name":"Arc de guerre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.Tq6lUFPTkBN5cBwn"}},"_id":"cKf5z3fajUnxJh0r","system":{"description":"","typearme":"tir","isdefense":false,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d10 + 1","nonletaux":false,"deuxmains":false,"courte":30,"moyenne":50,"longue":100,"tr":1,"rarete":6,"prix":70,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964298,"modifiedTime":1664573659385,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"lYtm5MwP96numskx","name":"Hallebarde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":2,"degats":"2d6","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.ZTdyIoMzE9kqm4e6"}}}
|
{"name":"Targe","type":"bouclier","img":"systems/fvtt-mournblade/assets/icons/protection.webp","system":{"description":"","bonusdefense":1,"degats":"1d4","nonletaux":"false","rarete":4,"prix":2,"equipped":false},"effects":[],"ownership":{"default":0,"1Hr6ON03ooIXzvIm":3},"flags":{"core":{"sourceId":"Item.9rJkBsRltxH08QT8"}},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572521380,"modifiedTime":1664573712553,"lastModifiedBy":"1Hr6ON03ooIXzvIm"},"folder":null,"sort":0,"_id":"cZorS8WAKNS0dN0T"}
|
||||||
{"_id":"mQGT0vmDjoTZCW5u","name":"Lance melnibonéenne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>La lance melnibonéenne, faite pour le combat à cheval ou à dos de dragon, ressemble à une lance ordinaire. Son fer est cependant plus fi n et plus étroit. Avant la chute d’Imrryr, il est quasi impossible de se procurer de telles armes sur les marchés des Jeunes Royaumes. Elles peuvent être maniées à une main comme lors des joutes à cheval ou à deux mains au cœur des mêlées.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"2d6+ 4","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":10,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.KAl5qXHeYDoYRU6G"}}}
|
{"_id":"fLHX6ut131CQI630","name":"Main gauche","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.BBii0qi1unvSRNO4"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":3,"degats":"1d4 + 1","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":10,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964298,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"name":"Arc en os","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Arc composite recourbé fait de bois, d’os et d’acier, l’arc en os melnibonéen est une arme extraordinairement puissante entre les mains d’un guerrier melnibonéen ou d’un archer esclave du Glorieux Empire. On peut se le procurer dans les Jeunes Royaumes après la chute d’Imrryr.</p>","typearme":"tir","bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d8 + 1","deuxmains":false,"courte":30,"moyenne":60,"longue":125,"tr":2,"rarete":10,"prix":500},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Dy9dzVhXbNAVm3zn"}},"_id":"nzve5qucVN6FC5wn"}
|
{"_id":"freCCeiYGfWmUAQU","name":"Marteau de guerre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.6n2uSdYfRAsSqQnA"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d8 + 2","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":6,"prix":70,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964298,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"sHj90bPcMaDlOw51","name":"Bâton ferré ou lesté","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"1D8","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.zoBHSbvJPnjbtPh6"}}}
|
{"_id":"j5659PJlrHz56V1k","name":"Sabre de Pan Tang","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.l3ffzso7GyHMKguD"}},"system":{"description":"<p>Ce long sabre effi lé sert aux Cavaliers démoniaques de Pan Tang pour couper les têtes depuis le dos de leurs monstrueuses montures reptiliennes à six pattes.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d10 + 2","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":120,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964299,"modifiedTime":1664573659390,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"sju2r73hUHyGbHYg","name":"Épée courte / Glaive","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1D6+1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":4,"prix":40},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Mxv5gMHRvRrsuhPA"}}}
|
{"_id":"lYtm5MwP96numskx","name":"Hallebarde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.ZTdyIoMzE9kqm4e6"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":0,"bonusmaniementdef":2,"degats":"2d6","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964299,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"t2uQcWe7kirUOp3D","name":"Faucheur","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d4 + 1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.OlmzE29fh9DFd8TF"}}}
|
{"_id":"mQGT0vmDjoTZCW5u","name":"Lance melnibonéenne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.KAl5qXHeYDoYRU6G"}},"system":{"description":"<p>La lance melnibonéenne, faite pour le combat à cheval ou à dos de dragon, ressemble à une lance ordinaire. Son fer est cependant plus fi n et plus étroit. Avant la chute d’Imrryr, il est quasi impossible de se procurer de telles armes sur les marchés des Jeunes Royaumes. Elles peuvent être maniées à une main comme lors des joutes à cheval ou à deux mains au cœur des mêlées.</p>","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"2d6+ 4","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":10,"prix":70,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964299,"modifiedTime":1664573659389,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"uatjBTFCE5ZCqhAd","name":"Fléau lourd","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d10+ 3","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.vDDw0qqM1Kg7Pu6T"}}}
|
{"name":"Arc en os","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.Dy9dzVhXbNAVm3zn"}},"_id":"nzve5qucVN6FC5wn","system":{"description":"<p>Arc composite recourbé fait de bois, d’os et d’acier, l’arc en os melnibonéen est une arme extraordinairement puissante entre les mains d’un guerrier melnibonéen ou d’un archer esclave du Glorieux Empire. On peut se le procurer dans les Jeunes Royaumes après la chute d’Imrryr.</p>","typearme":"tir","isdefense":false,"bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d8 + 1","nonletaux":false,"deuxmains":false,"courte":30,"moyenne":60,"longue":125,"tr":2,"rarete":10,"prix":500,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964299,"modifiedTime":1664573659385,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"v7ymzlEALvsk0poA","name":"Hache","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":2,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.2MwgptY2kE4tgYBe"}}}
|
{"_id":"sHj90bPcMaDlOw51","name":"Bâton ferré ou lesté","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.zoBHSbvJPnjbtPh6"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"1D8","nonletaux":true,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":1,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964299,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"wWk0Wfer06Ttmouv","name":"Épée large","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d6+ 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.iuAizxCvnUxmsjrn"}}}
|
{"_id":"sju2r73hUHyGbHYg","name":"Épée courte / Glaive","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.Mxv5gMHRvRrsuhPA"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1D6+1","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":4,"prix":40,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964300,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
{"_id":"wv5EiePmPTpqFutt","name":"Épée longue","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6 + 1","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.yiYtZ0sCUpMihvzz"}}}
|
{"_id":"t2uQcWe7kirUOp3D","name":"Faucheur","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.OlmzE29fh9DFd8TF"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d4 + 1","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":100,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964300,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
|
{"_id":"uatjBTFCE5ZCqhAd","name":"Fléau lourd","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.vDDw0qqM1Kg7Pu6T"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d10+ 3","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964300,"modifiedTime":1664573659387,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
|
{"_id":"v7ymzlEALvsk0poA","name":"Hache","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.2MwgptY2kE4tgYBe"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 2","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":2,"prix":30,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964300,"modifiedTime":1664573659388,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
|
{"_id":"wWk0Wfer06Ttmouv","name":"Épée large","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.iuAizxCvnUxmsjrn"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d6+ 2","nonletaux":false,"deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":70,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964300,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
|
{"_id":"wv5EiePmPTpqFutt","name":"Épée longue","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.yiYtZ0sCUpMihvzz"}},"system":{"description":"","typearme":"contact","isdefense":true,"bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6 + 1","nonletaux":false,"deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":250,"equipped":false},"ownership":{"default":0,"RiMAsQHaUMojde7N":3},"_stats":{"systemId":"fvtt-mournblade","systemVersion":"10.0.9","coreVersion":"10.286","createdTime":1664572964301,"modifiedTime":1664573659386,"lastModifiedBy":"1Hr6ON03ooIXzvIm"}}
|
||||||
|
BIN
packs/armes/000005.ldb
Normal file
0
packs/armes/000016.log
Normal file
1
packs/armes/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/armes/LOCK
Normal file
8
packs/armes/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.879816 7f3323fff6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.890587 7f3323fff6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.890683 7f3323fff6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.534936 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.535009 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.541696 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.548995 7f33223ff6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.555645 7f33223ff6c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
|
8
packs/armes/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.580403 7f3323fff6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.635099 7f3323fff6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.635255 7f3323fff6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.368329 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.368364 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.374930 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.386871 7f33223ff6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.393727 7f33223ff6c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
|
BIN
packs/armes/MANIFEST-000014
Normal file
BIN
packs/dons/000005.ldb
Normal file
0
packs/dons/000016.log
Normal file
1
packs/dons/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/dons/LOCK
Normal file
8
packs/dons/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.922363 7f3322ffd6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.933242 7f3322ffd6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.933334 7f3322ffd6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.541869 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.541915 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.548800 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.555609 7f33223ff6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.555674 7f33223ff6c0 Manual compaction at level-1 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
|
8
packs/dons/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.751995 7f33237fe6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.802361 7f33237fe6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.802459 7f33237fe6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.401535 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.401586 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.408618 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.416737 7f33223ff6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.416779 7f33223ff6c0 Manual compaction at level-1 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
|
BIN
packs/dons/MANIFEST-000014
Normal file
BIN
packs/equipement/000005.ldb
Normal file
0
packs/equipement/000016.log
Normal file
1
packs/equipement/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/equipement/LOCK
Normal file
8
packs/equipement/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.907560 7f33237fe6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.919038 7f33237fe6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.919177 7f33237fe6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.527537 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.527579 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.534748 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.548969 7f33223ff6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.555629 7f33223ff6c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
|
8
packs/equipement/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.694845 7f3322ffd6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.749080 7f3322ffd6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.749173 7f3322ffd6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.393743 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.393776 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.401345 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.416703 7f33223ff6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.416767 7f33223ff6c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
|
BIN
packs/equipement/MANIFEST-000014
Normal file
BIN
packs/heritages/000005.ldb
Normal file
0
packs/heritages/000016.log
Normal file
1
packs/heritages/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/heritages/LOCK
Normal file
8
packs/heritages/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.951754 7f35b8bfa6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.963535 7f35b8bfa6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.964185 7f35b8bfa6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.555768 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.555799 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.562320 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.583577 7f33223ff6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.583652 7f33223ff6c0 Manual compaction at level-1 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
|
8
packs/heritages/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.858392 7f3323fff6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.908553 7f3323fff6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.908991 7f3323fff6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.431375 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.431443 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.438078 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.445311 7f33223ff6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.445367 7f33223ff6c0 Manual compaction at level-1 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
|
BIN
packs/heritages/MANIFEST-000014
Normal file
BIN
packs/metiers/000005.ldb
Normal file
0
packs/metiers/000016.log
Normal file
1
packs/metiers/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/metiers/LOCK
Normal file
8
packs/metiers/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.970720 7f33237fe6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.981711 7f33237fe6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.981816 7f33237fe6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.562486 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.562523 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.569457 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.583598 7f33223ff6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.583681 7f33223ff6c0 Manual compaction at level-1 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
|
8
packs/metiers/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.912064 7f35b8bfa6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.963227 7f35b8bfa6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.963379 7f35b8bfa6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.416916 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.416965 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.424040 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.445274 7f33223ff6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.445341 7f33223ff6c0 Manual compaction at level-1 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
|
BIN
packs/metiers/MANIFEST-000014
Normal file
BIN
packs/origines/000005.ldb
Normal file
0
packs/origines/000016.log
Normal file
1
packs/origines/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/origines/LOCK
Normal file
8
packs/origines/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.936602 7f3323fff6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.948721 7f3323fff6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.948846 7f3323fff6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.549013 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.549045 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.555450 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.555659 7f33223ff6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.555725 7f33223ff6c0 Manual compaction at level-1 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
|
8
packs/origines/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.805812 7f3322ffd6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.854930 7f3322ffd6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.855021 7f3322ffd6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.408791 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.408828 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.416539 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.416752 7f33223ff6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.416795 7f33223ff6c0 Manual compaction at level-1 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
|
BIN
packs/origines/MANIFEST-000014
Normal file
@ -1,11 +1,7 @@
|
|||||||
{"name":"Cuirasse, armure de demi-plaques","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":4,"degats":"","rarete":8,"prix":200},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.FvufSkzJOSftZhYt"}},"_id":"2hD1DQVeCIQIXFU7"}
|
{"name":"Cuirasse, armure de demi-plaques","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":4,"degats":"","rarete":8,"prix":200},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.FvufSkzJOSftZhYt"}},"_id":"2hD1DQVeCIQIXFU7"}
|
||||||
{"name":"Pavois","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Le pavois se plante dans le sol au début du combat et ne peut normalement plus être déplacé jusqu’à son issue.</p>","typeprotection":"armure","protection":3,"degats":"","rarete":7,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.y1kNQJYRCEol83IA"}},"_id":"2uqB1doLYK4S2EN2"}
|
|
||||||
{"name":"Armure de plaques melnibonéenne","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Cette armure ornée et fi nement gravée est ajustée aux mensurations de celui qui la porte. On ne peut en trouver en dehors d’Imrryr avant sa chute. L’armure couvre tout le corps des pieds à la tête. Le casque est toujours surmonté d’une sculpture en forme de dragon ou de serpent de mer. Des motifs complexes et imbriqués recouvrent la surface de tous les éléments de l’armure. Après la chute d’Imrryr, quelques pièces d’armure melnibonéennes apparaissent de temps en temps sur les marchés mais les armures entières restent rarissimes. Si elle a été spécialement conçue pour son porteur, une armure de plaques melnibonéenne n’impose pas de pénalité d’encombrement à ce dernier.</p>","typeprotection":"armure","protection":6,"degats":"","rarete":10,"prix":1000},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.09OukepQ8Oep0642"}},"_id":"FFX0dFDZoVXFzyXk"}
|
{"name":"Armure de plaques melnibonéenne","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Cette armure ornée et fi nement gravée est ajustée aux mensurations de celui qui la porte. On ne peut en trouver en dehors d’Imrryr avant sa chute. L’armure couvre tout le corps des pieds à la tête. Le casque est toujours surmonté d’une sculpture en forme de dragon ou de serpent de mer. Des motifs complexes et imbriqués recouvrent la surface de tous les éléments de l’armure. Après la chute d’Imrryr, quelques pièces d’armure melnibonéennes apparaissent de temps en temps sur les marchés mais les armures entières restent rarissimes. Si elle a été spécialement conçue pour son porteur, une armure de plaques melnibonéenne n’impose pas de pénalité d’encombrement à ce dernier.</p>","typeprotection":"armure","protection":6,"degats":"","rarete":10,"prix":1000},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.09OukepQ8Oep0642"}},"_id":"FFX0dFDZoVXFzyXk"}
|
||||||
{"name":"Bouclier d’infanterie","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":2,"degats":"1D6","rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Xn1tVJgKinG0hc10"}},"_id":"I2X36O7hkpigZmJo"}
|
|
||||||
{"name":"Tenues rembourrées, cuir souple, fourrures","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":1,"degats":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5dV4DORRrNdAd2Z5"}},"_id":"SqyKvR1GJMJvgHCJ"}
|
{"name":"Tenues rembourrées, cuir souple, fourrures","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":1,"degats":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5dV4DORRrNdAd2Z5"}},"_id":"SqyKvR1GJMJvgHCJ"}
|
||||||
{"name":"Targe","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":1,"degats":"1D4","rarete":4,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.dyTeMFfvg5mAKT2n"}},"_id":"WH1m35jgm7ilTTuG"}
|
|
||||||
{"name":"Armure du Désert des Larmes","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Les barbares et les nomades du Désert des Larmes ont créé des armures de bois protégeant l’abdomen, la poitrine et les bras. Ces armures sont faites à partir du bois de l’arbre Fal, originaire de plateaux pluvieux situés au-delà du désert. Les barbares décorent souvent leurs armures de symboles tribaux et en protègent la surface avec de la laque. Conçue en bois, cette armure a la particularité de pouvoir flotter quoiqu’un séjour prolongé dans l’eau risque de la détériorer très rapidement. Elle n’en reste pas moins une protection très recherchée par ceux qui ont à s’aventurer sur les flots.</p>","typeprotection":"armure","protection":2,"degats":"","rarete":8,"prix":200},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.b1JGc5OlrIzlQbTO"}},"_id":"ZzzXZUn5PU1lnP0X"}
|
{"name":"Armure du Désert des Larmes","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Les barbares et les nomades du Désert des Larmes ont créé des armures de bois protégeant l’abdomen, la poitrine et les bras. Ces armures sont faites à partir du bois de l’arbre Fal, originaire de plateaux pluvieux situés au-delà du désert. Les barbares décorent souvent leurs armures de symboles tribaux et en protègent la surface avec de la laque. Conçue en bois, cette armure a la particularité de pouvoir flotter quoiqu’un séjour prolongé dans l’eau risque de la détériorer très rapidement. Elle n’en reste pas moins une protection très recherchée par ceux qui ont à s’aventurer sur les flots.</p>","typeprotection":"armure","protection":2,"degats":"","rarete":8,"prix":200},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.b1JGc5OlrIzlQbTO"}},"_id":"ZzzXZUn5PU1lnP0X"}
|
||||||
{"name":"Cuir bouilli, cuir clouté","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":2,"degats":"","rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.T9RAyLXDPSHlvoDR"}},"_id":"kis2lI7oEtdWzJbQ"}
|
{"name":"Cuir bouilli, cuir clouté","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":2,"degats":"","rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.T9RAyLXDPSHlvoDR"}},"_id":"kis2lI7oEtdWzJbQ"}
|
||||||
{"name":"Armure de plates, harnois","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":5,"degats":"","rarete":10,"prix":500},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.7JErvrlTYaFbCvoR"}},"_id":"so7x8hK8qEc5QqnQ"}
|
{"name":"Armure de plates, harnois","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":5,"degats":"","rarete":10,"prix":500},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.7JErvrlTYaFbCvoR"}},"_id":"so7x8hK8qEc5QqnQ"}
|
||||||
{"name":"Broigne, cotte de maille","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":3,"degats":"","rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.th6blCtgBmsWSYdY"}},"_id":"veoS6Gtzj6Dq087V"}
|
{"name":"Broigne, cotte de maille","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":3,"degats":"","rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.th6blCtgBmsWSYdY"}},"_id":"veoS6Gtzj6Dq087V"}
|
||||||
{"name":"Écu d’acier","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":3,"degats":"1D8","rarete":9,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TAA8qb6POO0HyhU5"}},"_id":"zqKOtmrDNrDYBu2z"}
|
|
||||||
|
BIN
packs/protection/000005.ldb
Normal file
0
packs/protection/000016.log
Normal file
1
packs/protection/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/protection/LOCK
Normal file
8
packs/protection/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.893322 7f35b8bfa6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.904529 7f35b8bfa6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.904658 7f35b8bfa6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.509351 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.509416 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.516961 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.517201 7f33223ff6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.517244 7f33223ff6c0 Manual compaction at level-1 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
|
8
packs/protection/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.639391 7f35b8bfa6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.691389 7f35b8bfa6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.691500 7f35b8bfa6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.386932 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.386986 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.393562 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.401503 7f33223ff6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.416722 7f33223ff6c0 Manual compaction at level-1 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
|
BIN
packs/protection/MANIFEST-000014
Normal file
45
packs/runes.db
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{"name":"Garde","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Garde dissipe les effets des Runes employées contre le sorcier, <strong>même celles qu’il ne connaît pas.</strong> Chaque point d’Âme utilisé annule un point d’effet magique de la Rune contrée. La Rune de Garde ne bloque pas l’effet d’une Rune que le sorcier active sur lui-même.</p>","formule":"Kest’","seuil":20,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.1qARybMHY7tyvRCN"}},"_id":"1JqWbEkHUoKXbsgn"}
|
||||||
|
{"name":"Vérité","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Vérité oblige sa cible à répondre avec une totale sin\u0002cérité à une question. Pour chaque tranche de 3 points d’Âme, le sorcier peut poser une question fermée, c’est-à-dire une question dont la réponse est obligatoirement oui ou non. Un test en oppo\u0002sition Clairvoyance + Trempe / Clairvoyance + Savoir : Runes du sorcier peut être tenté, mais seule une réussite héroïque permet de mentir avec succès. Une réussite simple permet simplement de ne pas répondre à la question posée. La Rune de Vérité est usuellement activée en prononçant son nom bien qu’elle puisse également être intégrée par un enchantement dans une potion que l’on donne à boire. La victime est consciente qu’une force magique la pousse à révéler ses secrets.</p>","formule":"Léth’ Hé’ Yyr","seuil":10,"prononcee":"effet normal","tracee":"tracée sur un onguent ou, par exemple, dans les remous d’une potion bouillonnante, elle confère son pouvoir à la potion qui peut ensuite être donnée à boire. Elle a pour particularité de retirer la saveur de tout aliment avec lequel elle est mélangée."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.wqTA4HN4c0mW0ctT"}},"_id":"1gjuH4gFroHLx4yX"}
|
||||||
|
{"name":"Passage","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune du Passage contre les effets de la Rune de Barrage et de la Rune d’Emprisonnement. Elle permet également d’ou\u0002vrir n’importe quel mécanisme de fermeture (comme un cade\u0002nas ou un verrou) même si ce mécanisme n’est pas apparent (comme un verrou posé de l’autre côté d’une porte). Comptez 1 point pour une simple serrure, 10 points pour un pont\u0002levis. Pour activer cette Rune, le sorcier peut prononcer son nom ou l’inscrire sur l’objet selon ce qui est le plus approprié.</p>","formule":"Ne’Hel Fikhorn","seuil":15,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.n2tV6CX4qcHdxCQf"}},"_id":"4mgRvTPQR2JP6VAE"}
|
||||||
|
{"name":"Emprisonnement","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune d’Emprisonnement ne peut pas être activée en pro\u0002nonçant son nom : elle doit être inscrite. La Rune est la plu\u0002part du temps utilisée pour définir une zone dans laquelle il est possible d’entrer mais non de sortir tant que son pouvoir dure. La Rune d’Emprisonnement est très similaire à la Rune de Barrage ; reportez-vous à cette Rune. Le sorcier doit tou\u0002jours définir précisément la zone sous l’emprise de l’effet. Quiconque est emprisonné par la Rune ne souffre d’aucune affliction, sauf celles éventuellement causées par l’environne\u0002ment. Il ne subit aucun dommage s’il tente de sortir de la zone d’Emprisonnement. La victime sait qu’elle est prisonnière et se doute qu’elle est sans doute victime de Sorcellerie, mais elle ne peut sortir de la zone dans laquelle elle est retenue. Il n’y a pas de barrière invisible qui s’élève ou de mains de pierre qui lui saisissent les pieds. Elle ne peut simplement plus sortir de cette zone, comme si une part de son esprit s’y refusait, même si un compagnon tente de la porter ou de l’en faire sortir de force. Et il y a de fortes chances que ledit compagnon ne puisse plus en sortir non plus. </p>","formule":"Ân’Tan mahau","seuil":15,"prononcee":"sans effet","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.eAcWKxN0AAyCTSUp"}},"_id":"5JgGBHAz9aZQTGIR"}
|
||||||
|
{"name":"Bêtes","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Chaque bête – insecte, poisson, reptile, mammifère ou oiseau – possède sa propre Rune. Il faut dépenser 1 point d’Âme pour les activer. Les Runes des Bêtes ne font rien de plus qu’indi\u0002quer la nature de la bête. Quand une autre Rune est assemblée avec Rune des Bêtes, leurs pouvoirs n’affectent que la créature associée à la Rune. Ainsi, combiner la Rune de Garde avec la Rune de l’Insecte permet de tenir les insectes, et seulement les insectes, à distance.</p>","formule":"Galab","seuil":5,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.56G3xBhwVK9k3jVA"}},"_id":"87qaL20n9DqU6b9B"}
|
||||||
|
{"name":"Miroir","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune du Miroir renvoie toute attaque physique portée sur le sorcier vers l’attaquant. L’attaquant s’attaque en réalité lui\u0002-même. Le nombre total d’attaques contrées dépend du nombre de points d’Âme utilisés pour activer la Rune. Chaque attaque entame la réserve de la Rune de 3 points d’Âme. Lorsque cette réserve est vide, la Rune est épuisée et cesse de faire effet.</p>\n<p>Pour que l’effet se produise, il faut que le magicien sache qu’il fait l’objet d’une attaque.</p>","formule":"Aé’Kholôn","seuil":15,"prononcee":"effet normal","tracee":"effet normal mais la Rune doit être tracée sur un bouclier, une armure ou un corps."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.UR8FXYlqxp5Vi3jr"}},"_id":"8dSf90NE4cpByZxu"}
|
||||||
|
{"name":"Air","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de l’Air permet au sorcier de contrôler l’air, de l’ani\u0002mer et dans une certaine mesure d’en créer quand il fait défaut, comme lorsque le sorcier se trouve sous l’eau. Le contrôle de l’air permet d’influencer la force et la direction du vent. Le sor\u0002cier peut également, grâce à la force de l’air, soulever à distance des objets et leur faire effectuer des mouvements simples. Un point d’Âme permet de réaliser l’un des effets suivants :</p>\n<ul>\n<li>augmenter ou diminuer la vitesse du vent de 15 mètres par seconde ;</li>\n<li>dissiper un gaz empoisonné ou nauséabond contenu dans un verre (1 point) dans une jarre (2 points), dans une petite pièce (5 points), dans une salle (8 points), etc. ;</li>\n<li>soulever et déplacer à toute petite vitesse un objet de 500 grammes environ.</li>\n</ul>\n<p>La connaissance de la Rune de l’Air est nécessaire pour invo\u0002quer et contrôler un Élémentaire d’Air</p>","formule":"Aïlé","seuil":10,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.v6eXdl7ZxbB1qC6s"}},"_id":"AUAoyxiocnxSPxyq"}
|
||||||
|
{"name":"Hybride","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune fut découverte au temps des Guerres Dharzi, mais fut peu employée par les Dharzi qui préféraient user de sa Rune jumelle : Chimère.</p>\n<p>La Rune peut être employée sur des cadavres ou des corps bien vivants, ou un immonde mélange des deux.</p>\n<p>La Rune Hybride permet de fusionner deux ou plusieurs corps humains (ou humanoïdes) afin de créer un nouvel homme ou une nouvelle femme. Le nombre de points d’Âme utili\u0002sés pour l’activer doit être égal au nombre total de points de Trempe combinés de l’ensemble des créatures affectées. Le sorcier peut interchanger les parties du corps comme il le sou\u0002haite. Il est possible à un être vivant ciblé par cette Rune d’y résister en réussissant un test en opposition de Clairvoyance + Trempe / Clairvoyance + Savoir : Runes du sorcier. Quand la Rune est désactivée, la créature hybride se disloque et ses parties vivantes subissent [[/roll 1d10 + 3]] points de dégâts létaux.</p>","formule":"An’An’","seuil":25,"prononcee":"effet normal","tracee":"si la Rune est tracée, les conséquences de l’échec dramatique du Sort ne peuvent être que la perte des points d’Âme."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.JUczeoZCX72Y2eil"}},"_id":"AYeUGdCvSSwdKEky"}
|
||||||
|
{"name":"Homme","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>En tant que telle, la Rune de l’Homme est une indication de genre. Quand elle est combinée avec une autre Rune, elle restreint les effets de cette Rune aux seuls êtres masculins. Il faut dépenser 1 point d’Âme pour l’activer.</p>","formule":"An’ Haer","seuil":5,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.YQYed3IAkTFmF1Mj"}},"_id":"Asg637gk3ciMb8nG"}
|
||||||
|
{"name":"Vision","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Pour activer la Rune de Vision, le sorcier peut prononcer son nom ou l’inscrire.</p>","formule":"Katz’ Hyyr","seuil":10,"prononcee":"quand il prononce le nom de cette Rune, la compétence Perception du sorcier est augmentée de 1 point pour 2 points d’Âme dépensés, uniquement dans le cas de tests de perception visuelle.","tracee":"si la Rune est inscrite sur un objet, un mur ou un arbre, le sorcier peut voir comme s’il se trouvait là où elle est tracée, aussi longtemps que la Rune est maintenue (coût : 5 points d’Âme)."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.6JaFdIj3DloGOs7Z"}},"_id":"Dx1aqAbGPjlYcGKm"}
|
||||||
|
{"name":"Chimère","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune fut découverte au temps des Guerres Dharzi. Elle permet de fusionner deux ou plusieurs créatures ensemble pour en créer une nouvelle. Le nombre de points d’Âme utilisés pour l’activer doit être égal au nombre total de points de Puis\u0002sance combinés de l’ensemble des créatures affectées. Le sorcier peut décider de quel attribut et de quelle partie du corps de chaque créature dispose la chimère ainsi constituée. Cette Rune doit être assemblée avec les Runes des Bêtes appropriées pour chaque type de créature touché. Quand la Rune est désactivée, la chimère se disloque en un répugnant amas de chairs mortes.</p>","formule":"An’ Galab","seuil":20,"prononcee":"effet normal","tracee":"si la Rune est tracée, les conséquences de l’échec dramatique du Sort ne peuvent être que la perte des points d’Âme."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.I9hHQiphvR5K0Rlh"}},"_id":"EEjjKvuPrVGuF5kp"}
|
||||||
|
{"name":"Parfum","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Pour activer la Rune du Parfum, le sorcier peut prononcer son nom ou l’inscrire. Il convient de noter que la Rune du Parfum ne supprime pas les effets du poison ou de la maladie ; elle ne fait qu’en masquer l’odeur ou le goût. </p>","formule":"O’ Khaïm","seuil":10,"prononcee":"quand le sorcier prononce le nom de la Rune, sa compétence Perception est augmentée de 1 point pour 2 points d’Âme dépensés, uniquement dans le cas de tests de perception olfactive ou gustative.","tracee":"si la Rune est inscrite sur un objet approprié (comme un bol, une assiette ou un gobelet), son contenu, quel qu’il soit et quel que soit son état, devient pour celui qui l’ingère incroyablement savoureux."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.YAFRcdM6nAIiQTRD"}},"_id":"FEMjhQ3csQXkVvIn"}
|
||||||
|
{"name":"Chaos","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune du Chaos est une étoile composée de huit flèches provenant toutes d’un même point central. Il faut dépenser 1 point d’Âme pour l’activer. Elle n’a en fait aucun pouvoir intrinsèque. Elle sert simplement à marquer l’influence du Chaos sur un endroit ou l’allégeance d’un sorcier. Assemblée avec une autre Rune, elle focalise l’effet de celle-ci sur qui\u0002conque est affi lié d’une manière ou d’une autre au Chaos. <strong>La connaissance de la Rune du Chaos est nécessaire pour pou\u0002voir invoquer et contrôler des Démons.</strong></p>","formule":"Fa’Hi ou Ka’He","seuil":10,"prononcee":"effet normal","tracee":"si la Rune du Chaos est tracée sur une arme, l’arme bénéfi cie d’un bonus de + 1 aux dégâts (par tranche de 5 points d’Âmes investis) lorsqu’elle frappe un Automaton ou un être ayant conclu un Pacte avec la Loi."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.YDQgSU1dJZWqtb9G"}},"_id":"GYNL8PAjFzH6HBfh"}
|
||||||
|
{"name":"Amélioration","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Chaque Rune d’Amélioration augmente un unique attribut d’un point pour cinq points d’Âme dépensés. L’amélioration de la Clairvoyance ou de la Trempe par ce biais n’a aucun effet sur le nombre de points d’Âme. Le sorcier doit connaître la Rune correspondant à l’attribut qu’il souhaite améliorer. Tous les attributs secondaires, à l’exception de l’Âme, sont recal\u0002culés en fonction de l’amélioration pendant toute la durée d’activité de la Rune. Les cinq Runes d’Amélioration sont : la Rune d’Adresse, la Rune de Clairvoyance, la Rune de Pré\u0002sence, la Rune de Puissance et la Rune de Trempe.</p>\n<p>Cette Rune ne peut qu’être tracée sur le corps de la cible.</p>","formule":"Ach S’erem","seuil":10,"prononcee":"sans effet","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.mAvirNh3g3q4t2fe"}},"_id":"Hqi40av8JOGqNQ1S"}
|
||||||
|
{"name":"Influence","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Le sorcier peut infl uencer la cible qu’il touche de manière à obtenir ses faveurs. Par tranche de 3 points d’Âme dépensés, il obtient un bonus de + 1 à tous ses tests de Persuasion ou de Coercition. La cible peut y résister en réussissant un test en opposition Clairvoyance + Trempe / Clairvoyance + Savoir : Runes du sorcier.</p>","formule":"Akh’A’Haïme","seuil":15,"prononcee":"effet normal","tracee":"les conséquences de l’échec dramatique du Sort ne peuvent être que la perte de points d’Âme."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.fxq2glX79V7Wv0xY"}},"_id":"KGK11U6UJbtv4CHH"}
|
||||||
|
{"name":"Silence","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Pour activer la Rune de Silence, le sorcier peut murmurer son nom ou l’inscrire. La Rune de Silence ne rend pas invisible : elle est inutile lorsqu’il s’agit de ne pas être vu.</p>","formule":"Hess ’lan","seuil":10,"prononcee":"si le sorcier murmure le nom de la Rune, sa compétence Discrétion augmente d’un point pour 2 points d’Âme dépensés.","tracee":"si la Rune est inscrite sur un objet, tous les sons dans un rayon de 1 mètre par point d’Âme dépensé sont étouffés, ce qui a également pour effet d’augmenter la discré\u0002tion du porteur de l’objet et de ceux qui l’entourent. Il faut alors dépenser 3 points d’Âme pour 1 point supplémentaire en Discrétion."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.y9tz2MnBJSn34tcL"}},"_id":"LF2NIr48WTpGJF2a"}
|
||||||
|
{"name":"Sommeil","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Sommeil plonge la cible dans un sommeil répa\u0002rateur et sans rêve. Pour l’activer, il faut dépenser un nombre de points d’Âme égal au niveau de Trempe de la cible. Il est impossible de réveiller le dormeur tant que l’effet de la Rune est actif. Si la cible de la Rune n’est pas consentante, elle peut y résister en réussissant un test en opposition de Clairvoyance + Trempe / Clairvoyance + Savoir : Runes du sorcier. Pour activer la Rune de Sommeil, le sorcier peut prononcer son nom ou l’inscrire. La Rune de Sommeil protège également le dormeur contre toute attaque des Voleurs de Rêves (qui seront traités dans un supplément à venir).</p>","formule":"Syk’Myyr","seuil":15,"prononcee":"si le sorcier prononce le nom de la Rune, il doit également toucher la cible pour que la Rune fasse effet.","tracee":"si la Rune est inscrite, l’objet qui la porte doit être en contact avec la cible."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.L1SaKkFkFF7Of8j6"}},"_id":"N8c4UlQacW1nBeVx"}
|
||||||
|
{"name":"Lien de l’âme","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune autorise le sorcier à transférer temporairement son âme, ou celle d’une personne consentante qu’il touche, hors de son corps vers un autre réceptacle. Le nombre de points d’Âme utilisés pour l’activer doit être égal au niveau de Clair\u0002voyance de la cible. Un être affecté par cet effet ne souffre pas du transfert et n’est pas repérable par l’Œil du Sorcier. Une âme introduite dans le corps d’une autre créature continue à vivre si son corps originel vient à mourir. Elle peut à nouveau changer de corps si la Rune est une nouvelle fois activée. Si l’âme est introduite dans un objet et que son corps originel est tué, l’âme reste liée à l’objet jusqu’à ce que quelqu’un la délivre ou que la Rune soit désactivée. Dans ce second cas, l’âme captive meurt sur-le-champ.</p>","formule":"Kh’Ân’Tan mahau","seuil":30,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Y6H0d6itYEKRSk29"}},"_id":"Q7ErQMozGsQRjakA"}
|
||||||
|
{"name":"Froid","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune du Froid rend le sorcier, ou l’objet sur lequel elle est inscrite, froid au toucher. Un seul point d’Âme investi rend la cible aussi froide qu’une source d’eau fraîche (ou qu’un cadavre). Les points supplémentaires dépensés causent des dégâts létaux dus au froid à quiconque touche la cible : les dégâts sont de 1 point pour 2 points d’Âme dépensés. Les dégâts continuent à chaque tour de jeu tant que la victime est en contact avec la cible du sort. Pour geler de l’eau ou de la nourriture, le sorcier doit prononcer le nom de la Rune, dépenser 2 points d’Âme et toucher l’objet ou le liquide qu’il souhaite geler. Il peut geler pour 1 point d’Âme 1 litre de liquide, pour 2 points l’auge des chevaux dans une écurie, pour 5 points un agneau, 8 points une mare ou un puits, 50 points un petit lac, etc. </p>","formule":"Kalda","seuil":10,"prononcee":"effet normal","tracee":"si la Rune est tracée, elle ne cause pas de dom\u0002mage au support sur lequel elle est inscrite"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.4NDeb8AQrKteJacI"}},"_id":"SF4NMsUpaoOYBWUJ"}
|
||||||
|
{"name":"Domination","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune permet d’obtenir une obéissance totale de l’être sur lequel elle est activée. Le nombre de points d’Âme uti\u0002lisés pour la Rune doit être égal à la Trempe de la cible. Si la Rune est utilisée contre un être pensant, celui-ci peut y résister en réussissant un test d’opposition Clairvoyance + Trempe / Clairvoyance + Savoir : Runes du sorcier. Il lui est possible de refaire ce test chaque fois qu’il reçoit un ordre mettant sa vie en péril direct (par exemple, l’ordre de se jeter dans le vide).</p>","formule":"Saë Tar","seuil":20,"prononcee":"effet normal","tracee":"si la Rune est tracée sur le corps de la victime, effet normal."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.0KyAUGiKJlSADYBD"}},"_id":"XDpno2OGwpRx082M"}
|
||||||
|
{"name":"Vitesse","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette augmente d’1 niveau la Vitesse de la cible par point d’Âme dépensé. Elle octroie également un bonus de + 1 point d’initiative pour 2 points d’Âme dépensés.</p>","formule":"Aé’Ké’Léon","seuil":10,"prononcee":"effet normal","tracee":"la Rune doit être tracée sur la cible."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.xfEG6nj0R2eblfYM"}},"_id":"XkaQxMd65Pt5Le5A"}
|
||||||
|
{"name":"Feu","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune du Feu permet au sorcier de contrôler, mais pas de créer, le feu. La Rune peut être utilisée pour éteindre des flammes ou pour contrôler leur direction.</p>\n<p>Un point d’Âme permet d’éteindre une flamme, 2 points le petit feu d’un bivouac, 5 points un grand feu de joie, 8 points un feu qui embrase une chambre, 50 points un feu de forêt, etc. La connaissance de la Rune du Feu est nécessaire pour invo\u0002quer et contrôler un Élémentaire de Feu.</p>","formule":"At’ra","seuil":10,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.1dkIsj4ZTIi8e4Zj"}},"_id":"XvFeI7mbRNcu1Ara"}
|
||||||
|
{"name":"Animation des morts","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune très dangereuse permet de restituer aux morts un semblant de vie. Pour réanimer un mort, le sorcier doit dépen\u0002ser autant de points d’Âme que le corps avait de Puissance. Lorsqu’un mort est ramené dans le monde des vivants, le sor\u0002cier doit accomplir un test de Capacité de Présence + Coer\u0002cition / 15. En cas d’échec, la créature devient incontrôlable. En cas de réussite, elle obéira à des ordres simples.</p>\n<p>Les créatures ainsi réanimées utilisent les attributs – à l’excep\u0002tion de la Clairvoyance et des points d’Âme – et compétences physiques qu’elles possédaient de leur vivant. Si elles tombent à 0 point de Santé, elles sont détruites. Le corps reste dans l’état dans lequel il a été trouvé. Si le corps n’a plus de forme, s’il est à l’état de poussière ou de squelette épars, la Rune d’Animation ne fonctionne pas. Un squelette intact, portant encore ses armes et son armure, pourra être réanimé, mais deux fémurs, quelques côtes et un crâne ne serviront à rien. </p>","formule":"Li’Nokhaïm","seuil":25,"prononcee":"effet normal","tracee":"si la Rune est tracée, les conséquences de l’échec dramatique du Sort ne peuvent être que la perte des points d’Âme."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.lGm46q8kB1hZ3JFL"}},"_id":"aSlGu6bN9EBWr66s"}
|
||||||
|
{"name":"Santé","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Santé peut être inscrite ou prononcée. Elle est la composition de base des Sortilèges et des potions de soin. Elle possède les effets suivants :</p>\n<ul>\n<li>elle soigne les blessures et referme les plaies à raison de 1 point de dégât létal pour 2 points d’Âme dépensés ;</li>\n<li>elle soigne une maladie d’une Virulence égale au nombre de points d’Âme investis multiplié par deux, à condition que le sorcier ait pu identifier la maladie. Le patient recouvre norma\u0002lement ses points de Santé.</li>\n</ul>","formule":"Oû Kheïa","seuil":15,"prononcee":"si la Rune est prononcée, elle doit l’être à nouveau chaque jour jusqu’à la guérison complète du malade.","tracee":"si la Rune est inscrite, elle doit l’être sur tout le corps, et le malade doit la garder tout au long du processus."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.9skcG3NV0xqxZjMk"}},"_id":"df0XfMeNhaP6RPQ8"}
|
||||||
|
{"name":"Barrage, Interdiction ou Excommunication","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Les créatures prises dans l’aire d’effet de la Rune peuvent s’en échapper mais elles ne peuvent pas y retourner tant que l’effet n’est pas dissipé. Toute tentative pour abattre les murs, bri\u0002ser les fenêtres ou creuser un tunnel dans la zone d’effet de la Rune est vouée à l’échec. Le seul moyen de contrer l’effet d’une Rune de Barrage est d’utiliser une Rune de Passage, pour laquelle le sorcier doit dépenser au moins autant de points d’Âme que le pouvoir de la Rune.</p>","formule":"Na’Khal’Rlye Na","seuil":10,"prononcee":"effet normal","tracee":"si la Rune est tracée, les conséquences de l’échec dramatique du Sort ne peuvent être que la perte des points d’Âme."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.UD13BGbUPdOJsBBL"}},"_id":"elc9fGa5mmssw8GT"}
|
||||||
|
{"name":"Toucher","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Caresse permet de toucher virtuellement un objet ou un être vivant sans être en contact avec lui. Les sorciers ont l’habitude de prononcer son nom plutôt que de l’inscrire. Pour chaque point d’Âme investi, le sorcier peut toucher et ressentir le contact d’un objet distant de 10 mètres. Il convient de noter que la Rune de Caresse ne permet en aucune façon de faire bouger l’objet. Si la cible est un être vivant, elle peut faire un test d’opposition de Clairvoyance + Trempe / Clairvoyance + Savoir : Runes du sorcier. Si le test est réussi, la cible est consciente de l’effet de la Rune comme si les mains du sorcier étaient réellement en contact avec elle, bien que l’origine de la sensation puisse ne pas être visible. Cette Rune est surtout utile en combinaison avec d’autres Runes, afin d’appliquer leur effet sur une cible hors de portée de la main du sorcier.</p>","formule":"Bliss’ Bissa’ët","seuil":10,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.nIz4B2jKV0Eo32ta"}},"_id":"f3HcCBLRhM5qC1pN"}
|
||||||
|
{"name":"Lumière","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune crée de la lumière autour du sorcier, s’il prononce son nom, ou de l’objet, si la Rune est inscrite. La zone est considérée comme éclairée. Il convient de noter que seule la zone indiquée est éclairée, tout ce qui se trouve en dehors de l’aire d’effet reste dans l’ombre. La Rune de la Lumière crée de la lumière, pas une fl amme, dans une zone allant de la taille d’une main pour 1 point d’Âme dépensé, à une maison pour 10 points d’Âme, et ainsi de suite.</p>","formule":"K’hos","seuil":10,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.gT44LzC7XJKlIwOh"}},"_id":"hDfxyYJvN5jOt3b9"}
|
||||||
|
{"name":"Transfert","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette puissante Rune est toujours créée en deux parties. Elle per\u0002met le transfert d’un objet entre ces deux parties. On peut inscrire la première moitié dans un lieu, sur un objet ou un être vivant, en dépensant un seul point d’Âme pour s’assurer de la durée de l’effet. L’effet de la Rune est déclenché quand la deuxième moitié est ins\u0002crite ou que son nom est prononcé. Le sorcier peut alors transférer la cible de la deuxième moitié vers la première ou vice-versa. Si l’une des deux moitiés est liée à un lieu, l’autre moitié, être vivant ou objet, est alors immédiatement transférée vers ce lieu. Le sorcier peut ainsi déplacer un point de Puissance par point d’Âme dépensé dans la seconde partie de la Rune. Si la cible du Transfert n’est pas consentante, elle peut y résister en réussissant un test en opposition de Clairvoyance + Trempe / Clairvoyance + Savoir : Runes du sorcier. La portée du Transfert est illimitée, que ce soit dans notre monde ou dans l’ensemble des plans d’existence.</p>\n<p>Une fois que les deux moitiés de la Rune sont réunies, le pou\u0002voir de la Rune de Transfert se dissipe.</p>","formule":"Laef’ Eren","seuil":25,"prononcee":"sans effet","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.WgQ2pbdqhjswvtuS"}},"_id":"hG2yf6gcEgl54gvt"}
|
||||||
|
{"name":"Alarme","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Quand elle est inscrite sur une personne ou un objet, le sorcier est immédiatement informé de ses déplacements et de tout contact extérieur. La Rune d’Alarme ne peut pas être activée verbalement. Sa portée est de 1 kilomètre par point d’Âme investi.</p>","formule":"Haer’ Gan","seuil":10,"prononcee":"sans effet","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.YSyh6AX3tHrDWfja"}},"_id":"iiltK3LhCxfXwGbB"}
|
||||||
|
{"name":"Ténèbres","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune crée un manteau de ténèbres. Au sein de la zone affectée, les sources de lumière n’apportent aucun éclairage et nul ne peut voir quoi que ce soit, pas même le sorcier. Les autres sens, comme le sonar d’une chauve-souris, fonc\u0002tionnent normalement. L’Œil n’est pas affecté par le pouvoir de la Rune. Celle-ci affecte une zone de la taille d’une main pour 1 point d’Âme dépensé, d’une maison pour 10 points d’Âme, et ainsi de suite. </p>","formule":"Mel’Koô’Ros","seuil":10,"prononcee":"le manteau de ténèbres se tisse autour du sorcier.","tracee":"le manteau de ténèbres se tisse autour de l’objet sur lequel la Rune est inscrite."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.a7MD1ZIKAYMJ8uvZ"}},"_id":"jr7YHR7SJp9fWTk7"}
|
||||||
|
{"name":"Végétaux","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Chaque végétal – arbre, buisson, fleur ou mousse – possède sa propre Rune. Il faut dépenser 1 point d’Âme pour l’ac\u0002tiver. Les Runes des Végétaux ne font ne font rien de plus qu’indiquer la nature du végétal. Quand une autre Rune est assemblée avec l’une des Runes des Végétaux, ses pouvoirs n’affectent que le végétal associé.</p>","formule":"Dhen Drôn","seuil":5,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.n32BpC0hhiEQeQNp"}},"_id":"jymqWk93AuF9piFA"}
|
||||||
|
{"name":"Loi","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de la Loi est une simple fl èche tournée vers le haut. Elle n’a en fait aucun pouvoir intrinsèque. Il faut dépenser 1 point d’Âme pour l’activer. Elle sert juste à marquer l’influence de la Loi sur un endroit ou à indiquer l’allégeance de l’ecclésiaste por\u0002tant ce symbole. Quand elle est assemblée avec une autre Rune, elle focalise l’effet de celle-ci sur les êtres affi liés d’une manière ou d’une autre à la Loi. <strong>La connaissance de la Rune de la Loi est nécessaire pour invoquer et contrôler des créations de la Loi.</strong></p>","formule":"Aerk’Hyn","seuil":10,"prononcee":"effet normal","tracee":"si la Rune de la Loi est tracée sur une arme, l’arme bénéfi cie d’un bonus de + 1 aux dégâts (par tranche de 5 points d’Âmes investis) lorsqu’elle frappe un Démon ou un être ayant conclu un Pacte avec le Chaos."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.uDEeZsq3sUvVEFOl"}},"_id":"kWwx24Zw4tmkrTrq"}
|
||||||
|
{"name":"Purification","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Purification possède plusieurs pouvoirs. Elle peut en premier lieu stériliser un liquide ou de la nourriture pour 1 point d’Âme. Elle est également capable de réduire de 5 points la Virulence d’un poison (y compris un poison magique) pour chaque point d’Âme investi. Enfin, chaque point d’Âme investi offre 1 point supplémentaire sur les tests de résistance à la maladie.</p>","formule":"Anak’h Sis","seuil":10,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.gKWHe4cgM72aGjfv"}},"_id":"mP50AhMJJbjT3sWG"}
|
||||||
|
{"name":"Dégradation","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Chaque Rune de Dégradation abaisse un seul attribut de 1 point pour 5 points d’Âme dépensés. La dégradation de la Clairvoyance ou de la Trempe par ce biais n’a aucun effet sur le nombre de points d’Âme. Le sorcier doit connaître la Rune correspondant à l’attribut qu’il souhaite détériorer. Tous les attributs secondaires, à l’exception de l’Âme, sont recalculés en fonction de la dégradation pendant toute la durée d’acti\u0002vité de la Rune. Les cinq Runes de Dégradation sont : la Rune de Maladresse, la Rune d’Imbécilité, la Rune d’Insignifiance, la Rune de Faiblesse et la Rune de Couardise.</p>","formule":"Kha Nekhaim Assat","seuil":25,"prononcee":"effet normal","tracee":"si la Rune est tracée sur le corps de la victime, effet normal."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.vOdAOu2d81xY9cnm"}},"_id":"mcdSaXloOXRB6S31"}
|
||||||
|
{"name":"Eau","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de l’Eau permet au sorcier de contrôler l’eau mais pas de la créer. La Rune peut être utilisée pour mettre en mouvement une masse liquide inerte ou pour contrôler la direction d’un torrent ou de vagues.</p>\n<p>L’efficacité de la Rune varie en fonction du nombre de points d’Âmes dépensés. Elle permet de manipuler une masse de liquide égale à :</p>\n<ul>\n<li>un verre (1 point) ;</li>\n<li>une bouteille (2 points) ;</li>\n<li>un tonneau (4 points) ;</li>\n<li>une cuve (10 points) ;</li>\n<li>une fontaine ou un puits (20 points) ;</li>\n<li>un petit étang, un ruisseau ou une vague (40 points) ;</li>\n<li>un lac, un torrent ou une lame de pleine mer (50 points) ;</li>\n<li>un grand lac, une rivière ou un petit raz de marée (200 points).</li>\n</ul>\n<p>La connaissance de la Rune de l’Eau est nécessaire pour invo\u0002quer et contrôler un Élémentaire d’Eau.</p>","formule":"Néh’Khan","seuil":10,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.ILxlXoCYq4Db8wOr"}},"_id":"nGgoDFnZPS6uYGcD"}
|
||||||
|
{"name":"Protection","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La surface protégée par la Rune semble durcir légèrement et pourtant conserve sa souplesse initiale. Frappée, la surface protégée produit un son plus mat ou assourdi que la normale. Sur une armure, des reflets étranges apparaissent parfois, comme si elle luisait d’une lueur irréelle. Le sorcier ajoute des points de Protection temporaire à sa cible : 1 point pour 1 point d’Âme investi dans la Rune, 2 pour 2 points d’Âme, 3 pour 6 points d’Âme et 4 pour 11 points. Ces points se cumulent avec la Protection existante.</p>\n<p>La Rune peut être activée en prononçant son nom ou en l’inscrivant.</p>","formule":"Kha’ Maé ’Mellôn","seuil":15,"prononcee":"effet normal","tracee":"effet normal mais la Rune doit être tracée sur un bouclier, une armure ou un corps."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.kSaiqifyg6eq02vj"}},"_id":"nymd8UI4AWnE74fk"}
|
||||||
|
{"name":"Écoute","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Pour activer la Rune d’Écoute, le sorcier peut prononcer son nom ou l’inscrire. </p>","formule":"Hénak","seuil":10,"prononcee":"quand il prononce le nom de la Rune, la compétence Perception du sorcier est augmentée de 1 point pour 2 points d’Âme dépensés. Cette augmentation n’est effective que dans le cas de tests de perception auditive.","tracee":"si la Rune est inscrite sur un objet, sur un mur, ou un arbre, le sorcier peut entendre comme s’il se trouvait près du lieu où elle est tracée aussi longtemps que la Rune est maintenue."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.6RJicyLNG50WfnJ7"}},"_id":"olzDZforp9LsxUEJ"}
|
||||||
|
{"name":"Contre-Sort","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p><strong>Seuil de difficulté :</strong> égal à celui de la Rune à contrer, ou de la Rune la plus puissante dans le cas d’un Sortilège à contrer.</p>\n<p>La Rune de Contre-Sort affaiblit ou annihile le pouvoir des autres Runes. Quand elle draine le pouvoir d’une Rune, elle absorbe autant de points d’effet que le nombre de points attri\u0002bués à sa création. Si ce nombre de points dépasse celui de la Rune vampirisée, cette dernière est détruite. Le sorcier ne peut pas contrer une Rune qu’il ne maîtrise pas. Pour absorber une Rune, la Rune de Contre-Sort doit être inscrite ou prononcée à une distance maximum de l’endroit où se manifeste la Rune contrée d’un mètre par point d’Âme dépensé.</p>\n<p>NB : pour contrer un Sortilège à l’effet indésirable, il suffit parfois de contrer une seule de ses Runes, les autres se mani\u0002festent normalement.</p>","formule":"Thâ Ereb","seuil":0,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.45YcQxfXYYzSaZ15"}},"_id":"q3ypyD55RBR220l7"}
|
||||||
|
{"name":"Terre","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>En utilisant la Rune de la Terre, le sorcier peut affecter une brouette de terre ou de pierre pour chaque point d’Âme dépensé. Considérez qu’à 10 points d’Âme, un muret est affecté, et qu’à 100 points, le sorcier peut manipuler un bout de rempart.</p>\n<p>Un point d’Âme permet de réaliser l’un des effets suivants :</p>\n<ul>\n<li>déplacer un mètre cube de terre ou de pierre à la vitesse d’un homme qui marche pour chaque point d’Âme dépensé ;</li>\n<li>ramollir ou fissurer une pierre, en infl igeant 2 points de dégâts par point d’Âme utilisé (rappel : une pierre mince possède une résistance de 15, une pierre épaisse de 20) ;</li>\n<li>renforcer ou solidifier de la terre ou de la pierre. Chaque point d’Âme dépensé augmente de 2 points le facteur de résistance de la pierre ou de la masse de terre ciblée.</li>\n</ul>\n<p>Pour l’utiliser, le sorcier peut prononcer son nom ou l’inscrire, selon les circonstances ou son humeur. La connaissance de la Rune de la Terre est nécessaire pour invoquer et contrôler un Élémentaire de Terre.</p>","formule":"Tul’Rah’","seuil":10,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.YSbkTWYOCH5chkpv"}},"_id":"q6spSOEdcr1hsoF2"}
|
||||||
|
{"name":"Contact","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Tant que la Rune de Contact est maintenue, elle permet de créer un lien mental avec une personne à longue distance. La Rune doit être inscrite sur un objet ou un vêtement porté par la personne que le sorcier souhaite contacter. Pour chaque tranche de 3 points d’Âme dépensés, le contact inclut un nou\u0002veau canal : la vision, les paroles, le goût, les sensations tactiles ou encore les émotions. Il est possible d’inclure une personne supplémentaire dans le lien mental par la dépense d’un point supplémentaire par cible. La portée de la Rune de Contact est illimitée, que ce soit dans les Jeunes Royaumes ou dans l’ensemble des plans d’existence.</p>","formule":"Elam Ans’Ha","seuil":15,"prononcee":"sans effet","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.wmQ1EbWCuIwwY85F"}},"_id":"rVmgDzp6LcXEILvS"}
|
||||||
|
{"name":"Incandescence","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune d’Incandescence rend le sorcier ou l’objet sur lequel elle est inscrite chaud au toucher. Un seul point d’Âme investi rend la cible agréablement chaude (comme si elle était enve\u0002loppée dans une couverture au coin du feu) et elle ne subit aucun désagrément dû à un environnement froid tant que la Rune est active. Les points supplémentaires dépensés causent des dégâts létaux dus à la chaleur à quiconque touche la cible : les dégâts sont de 1 point pour 2 points d’Âme dépensés. Les dégâts continuent à chaque tour de jeu tant que la victime est en contact avec la cible du sort. </p>","formule":"Néhan Hira","seuil":10,"prononcee":"effet normal","tracee":"si la Rune est tracée, elle ne cause pas de dom\u0002mage au support sur lequel elle est inscrite."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Swlx5c5xQ0PmOT9M"}},"_id":"tpXavlZ4WBurbY8X"}
|
||||||
|
{"name":"Secret des morts","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Secret des morts redonne temporairement vie à un mort, permettant au sorcier de lui poser des questions durant une courte période. Tous les sorciers savent que les morts ne peuvent pas répondre directement aux questions. Ils peuvent répondre par un poème, par une sorte de prophétie ou, plus sim\u0002plement, de manière alambiquée. Le mort est cependant tenu de dire la vérité ou, du moins, ce qu’il croit sincèrement être vrai. Le mort se remémore ses souvenirs sur une période précédant sa mort qui dépend du nombre de points d’Âme investis : 1 jour pour 1 point d’Âme, 2 jours pour 3 points d’Âme, 3 jours pour 6 points d’Âme et jusqu’à 4 jours pour 11 points d’Âme. La magie nécessaire pour rappeler l’âme de la créature d’au-delà du Multivers est telle que la Rune ne dure qu’une minute. La Rune ne ramène pas le mort définitivement et il ne peut pas mouvoir son corps. Il peut seulement répondre aux questions. En fonction de sa personnalité et de son existence dans l’au-delà, la fiabilité de ses réponses peut être très variable.</p>\n<p>Si le mort avait conclu un Pacte avec une puissance, l’utilisation de la Rune de Secret des morts attire immanquablement la colère du Seigneur concerné. Lui seul dispose légitimement du droit de vie et de mort sur ses serviteurs. Le MJ décide de la forme que prend sa vengeance contre le sorcier : il peut s’agir de la mise en échec de ses projet de manière vicieuse, systématique et particulièrement efficace ou d’une malchance subtile mais insidieuse.</p>","formule":"Nad’Melnë","seuil":30,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.uqwvF7B9Lk0EkNf6"}},"_id":"uIg9xU0wI5jRLyED"}
|
||||||
|
{"name":"Confusion","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>Cette Rune suscite la confusion et le trouble. Il convient de noter que la Rune de Confusion ne rend pas invisible ; elle altère simplement les perceptions du spectateur, en masquant la véritable nature du sujet. L’Œil peut percer le voile d’une Rune de Confusion (Clairvoyance + Perception / Seuil de difficulté de la Rune). Ceux qui ne pratiquent pas la Sorcelle\u0002rie doivent obtenir une réussite héroïque à un test de Percep\u0002tion pour comprendre que quelque chose ne va pas, mais ils ne pourront pas, même dans ce cas, percevoir la réalité telle qu’elle est.</p>","formule":"Aës Thir’ N’Hab","seuil":15,"prononcee":"quand le sorcier prononce le nom de la Rune, il brouille la vue et les souvenirs des gens qui le ren\u0002contrent. Il devient impossible de se souvenir avec précision des actions, du visage, des mots du sorcier ou encore de ses vêtements. Chaque point utilisé pour activer la Rune permet de rendre indistinct l’un de ces éléments.","tracee":"quand la Rune est inscrite sur un objet, son apparence est modifi ée de la même manière (coût : 2 points d’Âme)."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.CFlDvIIQBP1hAtWG"}},"_id":"vI9EoswpPCJoUV1L"}
|
||||||
|
{"name":"Femme","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>En tant que telle, la Rune de la Femme est une indication de genre. Quand elle est combinée avec une autre Rune, elle res\u0002treint les effets de cette Rune aux seuls êtres féminins. Il faut dépenser 1 point d’Âme pour l’activer.</p>","formule":"No’Hos","seuil":5,"prononcee":"effet normal","tracee":"effet normal"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.DwfdRyBDNi7A7bQe"}},"_id":"vV6BZHznNdJ0f4IR"}
|
||||||
|
{"name":"Dissolution","type":"rune","img":"systems/fvtt-mournblade/assets/icons/rune.webp","data":{"description":"<p>La Rune de Dissolution dissout, ou désintègre, une substance particulière. Cette Rune doit être assemblée avec une autre pour affecter le matériau ciblé. Par exemple, pour désintégrer une pierre de fondation, le magicien doit assembler une Rune de Dissolution avec une Rune de Terre. L’aire d’effet de la Rune varie en fonction du nombre de points d’Âmes dépen\u0002sés. Elle peut désintégrer un objet ou une surface :</p>\n<ul>\n<li>de la taille d’un poing (1 point) ;</li>\n<li>de la taille d’un bras (2 points) ;</li>\n<li>de la taille d’un loup (4 points) ;</li>\n<li>de la taille d’un homme (10 points) ;</li>\n<li>de la taille d’un arbre ordinaire (20 points) ;</li>\n<li>de la taille d’une pièce (40 points) ;</li>\n<li>de la taille d’une maison (50 points) ;</li>\n<li>de la taille d’un navire (200 points).</li>\n</ul>\n<p>Si la Rune est utilisée contre un être vivant, celui-ci peut y résis\u0002ter en réussissant un test de Clairvoyance + Trempe / Clair\u0002voyance + Savoir : Runes du sorcier. Quand la Rune est utilisée contre un être vivant, chaque point d’Âme utilisé inflige un point de dommage létal mais la Rune doit être assemblée avec la Rune appropriée en fonction de l’adversaire (Rune de l’Homme, Rune de la Femme, Runes des Végétaux, Runes des Bêtes).</p>","formule":"Kha Aërgôn","seuil":15,"prononcee":"effet normal","tracee":"si la Rune est tracée, les conséquences de l’échec dramatique du Sort ne peuvent être que la perte des points d’Âme."},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.XBMARAPavdX7yq1c"}},"_id":"xnCf2xIPzdsUoBTy"}
|
BIN
packs/runes/000005.ldb
Normal file
0
packs/runes/000016.log
Normal file
1
packs/runes/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/runes/LOCK
Normal file
8
packs/runes/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:45.016188 7f35b8bfa6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:45.028467 7f35b8bfa6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:45.028598 7f35b8bfa6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.583825 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.583863 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.591144 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.598388 7f33223ff6c0 Manual compaction at level-0 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.598452 7f33223ff6c0 Manual compaction at level-1 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
|
8
packs/runes/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:06.072103 7f3323fff6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:06.135204 7f3323fff6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:06.135349 7f3323fff6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.445521 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.445555 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.453598 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.461415 7f33223ff6c0 Manual compaction at level-0 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.461494 7f33223ff6c0 Manual compaction at level-1 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
|
BIN
packs/runes/MANIFEST-000014
Normal file
BIN
packs/skills/000005.ldb
Normal file
0
packs/skills/000016.log
Normal file
1
packs/skills/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/skills/LOCK
Normal file
8
packs/skills/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.865290 7f3322ffd6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.876647 7f3322ffd6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.876743 7f3322ffd6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.490933 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.490979 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.498758 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.517170 7f33223ff6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.527510 7f33223ff6c0 Manual compaction at level-1 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
|
8
packs/skills/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.522800 7f33237fe6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:05.576713 7f33237fe6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:05.576894 7f33237fe6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.360607 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.360665 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.368046 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.375090 7f33223ff6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.386907 7f33223ff6c0 Manual compaction at level-1 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
|
BIN
packs/skills/MANIFEST-000014
Normal file
BIN
packs/tables/000005.ldb
Normal file
0
packs/tables/000016.log
Normal file
1
packs/tables/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/tables/LOCK
Normal file
8
packs/tables/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:45.032291 7f33237fe6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:45.043647 7f33237fe6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:45.043790 7f33237fe6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.591612 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.591671 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.598156 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.598427 7f33223ff6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.598479 7f33223ff6c0 Manual compaction at level-1 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
|
8
packs/tables/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:06.139613 7f35b8bfa6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:06.235086 7f35b8bfa6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:06.235238 7f35b8bfa6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.453793 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.454273 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.461277 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.461479 7f33223ff6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.461521 7f33223ff6c0 Manual compaction at level-1 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
|
BIN
packs/tables/MANIFEST-000014
Normal file
BIN
packs/tendances/000005.ldb
Normal file
0
packs/tendances/000016.log
Normal file
1
packs/tendances/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000014
|
0
packs/tendances/LOCK
Normal file
8
packs/tendances/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-22:15:44.985004 7f3322ffd6c0 Recovering log #12
|
||||||
|
2023/12/19-22:15:44.996556 7f3322ffd6c0 Delete type=3 #10
|
||||||
|
2023/12/19-22:15:44.996666 7f3322ffd6c0 Delete type=0 #12
|
||||||
|
2023/12/19-22:15:56.569866 7f33223ff6c0 Level-0 table #17: started
|
||||||
|
2023/12/19-22:15:56.569902 7f33223ff6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2023/12/19-22:15:56.576414 7f33223ff6c0 Delete type=0 #15
|
||||||
|
2023/12/19-22:15:56.583619 7f33223ff6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-22:15:56.583665 7f33223ff6c0 Manual compaction at level-1 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
|
8
packs/tendances/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2023/12/19-21:45:05.967132 7f33237fe6c0 Recovering log #8
|
||||||
|
2023/12/19-21:45:06.023933 7f33237fe6c0 Delete type=3 #6
|
||||||
|
2023/12/19-21:45:06.024035 7f33237fe6c0 Delete type=0 #8
|
||||||
|
2023/12/19-21:45:32.424193 7f33223ff6c0 Level-0 table #13: started
|
||||||
|
2023/12/19-21:45:32.424227 7f33223ff6c0 Level-0 table #13: 0 bytes OK
|
||||||
|
2023/12/19-21:45:32.431033 7f33223ff6c0 Delete type=0 #11
|
||||||
|
2023/12/19-21:45:32.445293 7f33223ff6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
|
||||||
|
2023/12/19-21:45:32.445354 7f33223ff6c0 Manual compaction at level-1 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
|