Compare commits
22 Commits
fvtt-mourn
...
fvtt-mourn
Author | SHA1 | Date | |
---|---|---|---|
e504427dbb | |||
6aa63f9a98 | |||
861aa19637 | |||
ddb3f9dee1 | |||
da074d6ea1 | |||
1c0c722bd0 | |||
fef42b7093 | |||
a63ec19362 | |||
a26af23c9c | |||
983bc6a2ed | |||
da6d6584c4 | |||
f08ec8eaff | |||
c34bfbf229 | |||
e7de42cf16 | |||
0f2348fec6 | |||
98ccd8fde1 | |||
fcec785f00 | |||
734945d68e | |||
33916c9ec2 | |||
dda8fee616 | |||
1730a8d390 | |||
4a0a57870c |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.history/
|
23
README.md
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
|
||||||
|
27
lang/fr.json
Normal file
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 );
|
||||||
@ -129,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.fullmax != newAme) {
|
if (this.system.ame.fullmax != newAme) {
|
||||||
this.update({ 'data.ame.fullmax': 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,48 +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) {
|
subPointsAme(runeMode, value) {
|
||||||
let ame = duplicate(this.data.data.ame)
|
let ame = duplicate(this.system.ame)
|
||||||
if(runeMode == "prononcer") {
|
if(runeMode == "prononcer") {
|
||||||
ame.value -= value
|
ame.value -= value
|
||||||
} else {
|
} else {
|
||||||
ame.currentmax -= value
|
ame.currentmax -= value
|
||||||
}
|
}
|
||||||
this.update( {'data.ame': ame})
|
this.update( {'system.ame': ame})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -290,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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -310,48 +333,71 @@ 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 }])
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -360,6 +406,7 @@ export class MournbladeActor extends Actor {
|
|||||||
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
|
||||||
@ -368,16 +415,16 @@ 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) {
|
if (compName) {
|
||||||
rollData.competence = duplicate(this.data.items.find( item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
rollData.competence = duplicate(this.items.find( item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||||
rollData.actionImg = rollData.competence?.img
|
rollData.actionImg = rollData.competence?.img
|
||||||
}
|
}
|
||||||
return rollData
|
return rollData
|
||||||
@ -386,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)
|
||||||
}
|
}
|
||||||
@ -401,9 +447,14 @@ export class MournbladeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollRune(runeId) {
|
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")
|
let rollData = this.getCommonRollData("cla", undefined, "Savoir : Runes")
|
||||||
rollData.rune = duplicate(this.data.items.get(runeId) || {})
|
rollData.rune = duplicate(this.items.get(runeId) || {})
|
||||||
rollData.difficulte = rollData.rune?.data?.seuil || 0
|
rollData.difficulte = rollData.rune?.system?.seuil || 0
|
||||||
rollData.runemode = "prononcer"
|
rollData.runemode = "prononcer"
|
||||||
rollData.runeame = 1
|
rollData.runeame = 1
|
||||||
console.log("runeData", rollData)
|
console.log("runeData", rollData)
|
||||||
@ -413,9 +464,14 @@ export class MournbladeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
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)
|
||||||
@ -424,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 */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -90,7 +119,7 @@ Hooks.once("ready", function () {
|
|||||||
let sidebar = document.getElementById("sidebar");
|
let sidebar = document.getElementById("sidebar");
|
||||||
sidebar.style.width = "min-content";
|
sidebar.style.width = "min-content";
|
||||||
}
|
}
|
||||||
|
registerUsageCount('fvtt-mournblade')
|
||||||
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: 340, height: 420, '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 );
|
||||||
|
@ -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,13 @@ 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() {
|
static getPointAmeOptions() {
|
||||||
let opt = []
|
let opt = []
|
||||||
@ -64,7 +82,7 @@ export class MournbladeUtility {
|
|||||||
}
|
}
|
||||||
return opt.concat("\n")
|
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" }
|
||||||
@ -104,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)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -155,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 = {};
|
||||||
@ -196,11 +201,6 @@ export class MournbladeUtility {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static getDefenseState(actorId) {
|
|
||||||
return this.defenderStore[actorId];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static updateRollData(rollData) {
|
static updateRollData(rollData) {
|
||||||
|
|
||||||
@ -224,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);
|
||||||
}
|
}
|
||||||
@ -294,63 +293,69 @@ 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) {
|
if (rollData.arme && rollData.arme.type == "arme") {
|
||||||
rollData.diceFormula += `+${rollData.arme.data.bonusmaniementoff}`
|
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
||||||
}
|
}
|
||||||
|
|
||||||
if(rollData.rune) {
|
if (rollData.rune) {
|
||||||
rollData.runeduree = Math.ceil((rollData.runeame+3) / 3)
|
rollData.runeduree = Math.ceil((rollData.runeame + 3) / 3)
|
||||||
if ( rollData.runemode == "inscrire") {
|
if (rollData.runemode == "inscrire") {
|
||||||
rollData.runeduree *= 2
|
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 ) {
|
if (rollData.rune) {
|
||||||
let subAme = rollData.runeame
|
let subAme = rollData.runeame
|
||||||
if ( rollData.isEchec && !rollData.isDramatique) {
|
if (rollData.isEchec && !rollData.isDramatique) {
|
||||||
subAme = Math.ceil((subAme+1) / 2)
|
subAme = Math.ceil((subAme + 1) / 2)
|
||||||
}
|
}
|
||||||
actor.subPointsAme(rollData.runemode, subAme)
|
actor.subPointsAme(rollData.runemode, subAme)
|
||||||
}
|
}
|
||||||
@ -364,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)
|
||||||
@ -383,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) {
|
||||||
@ -475,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.")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,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"}}
|
||||||
|
@ -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"}
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
:root {
|
:root {
|
||||||
/* =================== 1. ACTOR SHEET FONT STYLES =========== */
|
/* =================== 1. ACTOR SHEET FONT STYLES =========== */
|
||||||
--window-header-font-family: Charlemagne;
|
--window-header-font-family: Charlemagne;
|
||||||
--window-header-title-font-size: 1.3rem;
|
--window-header-title-font-size: 1.1rem;
|
||||||
--window-header-title-font-weight: normal;
|
--window-header-title-font-weight: normal;
|
||||||
--window-header-title-color: #f5f5f5;
|
--window-header-title-color: #f5f5f5;
|
||||||
|
|
||||||
@ -44,15 +44,16 @@
|
|||||||
/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/
|
/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/
|
||||||
/* Global styles & Font */
|
/* Global styles & Font */
|
||||||
.window-app {
|
.window-app {
|
||||||
|
font-family: Charlemagne;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-size: 16px;
|
font-size: 12px;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fonts */
|
/* Fonts */
|
||||||
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
|
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
|
||||||
font-family: "Charlemagne";
|
font-family: "Charlemagne";
|
||||||
font-size: 1.0rem;
|
font-size: 0.8rem;
|
||||||
} /* For title, sidebar character and scene */
|
} /* For title, sidebar character and scene */
|
||||||
.sheet nav.sheet-tabs {
|
.sheet nav.sheet-tabs {
|
||||||
font-family: "Charlemagne";
|
font-family: "Charlemagne";
|
||||||
@ -1366,6 +1367,6 @@ ul, li {
|
|||||||
flex-shrink: 7;
|
flex-shrink: 7;
|
||||||
}
|
}
|
||||||
.item-controls-fixed {
|
.item-controls-fixed {
|
||||||
min-width:2rem;
|
min-width:3.2rem;
|
||||||
max-width: 2rem;
|
max-width: 3.2rem;
|
||||||
}
|
}
|
126
system.json
126
system.json
@ -1,146 +1,131 @@
|
|||||||
{
|
{
|
||||||
"author": "Uberwald/LeRatierBretonnien",
|
"id": "fvtt-mournblade",
|
||||||
"compatibleCoreVersion": "9",
|
|
||||||
"description": "Mournblade RPG for FoundryVTT",
|
"description": "Mournblade RPG for FoundryVTT",
|
||||||
|
"version": "11.0.0",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Uberwald/LeRatierBretonnien",
|
||||||
|
"flags": {}
|
||||||
|
}
|
||||||
|
],
|
||||||
"esmodules": [
|
"esmodules": [
|
||||||
"modules/mournblade-main.js"
|
"modules/mournblade-main.js"
|
||||||
],
|
],
|
||||||
"gridDistance": 5,
|
|
||||||
"gridUnits": "m",
|
|
||||||
"languages": [
|
"languages": [
|
||||||
{
|
{
|
||||||
"lang": "en",
|
"lang": "fr",
|
||||||
"name": "English",
|
"name": "French",
|
||||||
"path": "lang/en.json"
|
"path": "lang/fr.json",
|
||||||
|
"flags": {}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"library": false,
|
"gridDistance": 5,
|
||||||
|
"gridUnits": "m",
|
||||||
"license": "LICENSE.txt",
|
"license": "LICENSE.txt",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-mournblade/raw/branch/main/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/fvtt-mournblade/raw/branch/v10/system.json",
|
||||||
"download": "https://www.uberwald.me/gitea/public/fvtt-mournblade/archive/fvtt-mournblade-0.0.27.zip",
|
"download": "https://www.uberwald.me/gitea/public/fvtt-mournblade/archive/fvtt-mournblade-11.0.0.zip",
|
||||||
"manifestPlusVersion": "1.0.0",
|
|
||||||
"media": [],
|
|
||||||
"minimumCoreVersion": "0.8.0",
|
|
||||||
"name": "fvtt-mournblade",
|
|
||||||
"packs": [
|
"packs": [
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Compétences",
|
"label": "Compétences",
|
||||||
"name": "skills",
|
"name": "skills",
|
||||||
"path": "./packs/skills.db",
|
"path": "packs/skills.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"skill", "competence"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Armes",
|
"label": "Armes & Boucliers",
|
||||||
"name": "armes",
|
"name": "armes",
|
||||||
"path": "./packs/armes.db",
|
"path": "packs/armes.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"arme"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Protections",
|
"label": "Protections",
|
||||||
"name": "protection",
|
"name": "protection",
|
||||||
"path": "./packs/protection.db",
|
"path": "packs/protection.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"armor", "shield"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Equipement",
|
"label": "Equipement",
|
||||||
"name": "equipement",
|
"name": "equipement",
|
||||||
"path": "./packs/equipement.db",
|
"path": "packs/equipement.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"equipement"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Dons",
|
"label": "Dons",
|
||||||
|
"type": "Item",
|
||||||
"name": "dons",
|
"name": "dons",
|
||||||
"path": "./packs/dons.db",
|
"path": "packs/dons.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"don"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Origines",
|
"label": "Origines",
|
||||||
"name": "origines",
|
"name": "origines",
|
||||||
"path": "./packs/origines.db",
|
"path": "packs/origines.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"originess"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Héritages",
|
"label": "Héritages",
|
||||||
"name": "heritages",
|
"name": "heritages",
|
||||||
"path": "./packs/heritages.db",
|
"path": "packs/heritages.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"héritage"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Métiers",
|
"label": "Métiers",
|
||||||
"name": "metiers",
|
"name": "metiers",
|
||||||
"path": "./packs/metiers.db",
|
"path": "packs/metiers.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"metier"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Tendances",
|
"label": "Tendances",
|
||||||
"name": "tendances",
|
"name": "tendances",
|
||||||
"path": "./packs/tendances.db",
|
"path": "packs/tendances.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"tendance"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Traits chaotiques",
|
"label": "Traits chaotiques",
|
||||||
"name": "traits-chaotiques",
|
"name": "traits-chaotiques",
|
||||||
"path": "./packs/traits-chaotiques.db",
|
"path": "packs/traits-chaotiques.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"ownership": {
|
||||||
"traits chaotiques"
|
"PLAYER": "NONE"
|
||||||
]
|
},
|
||||||
|
"flags": {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Runes",
|
"label": "Runes",
|
||||||
"name": "runes",
|
"name": "runes",
|
||||||
"path": "./packs/runes.db",
|
"path": "packs/runes.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"flags": {}
|
||||||
"runes"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "RollTable",
|
"type": "RollTable",
|
||||||
"label": "Tables",
|
"label": "Tables",
|
||||||
"name": "tables",
|
"name": "tables",
|
||||||
"path": "./packs/tables.db",
|
"path": "packs/tables.db",
|
||||||
"system": "fvtt-mournblade",
|
"system": "fvtt-mournblade",
|
||||||
"tags": [
|
"ownership": {
|
||||||
"tables"
|
"PLAYER": "NONE"
|
||||||
]
|
},
|
||||||
|
"flags": {}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"primaryTokenAttribute": "secondary.health",
|
"primaryTokenAttribute": "secondary.health",
|
||||||
@ -149,9 +134,12 @@
|
|||||||
"styles": [
|
"styles": [
|
||||||
"styles/simple.css"
|
"styles/simple.css"
|
||||||
],
|
],
|
||||||
"templateVersion": 18,
|
|
||||||
"title": "Mournblade",
|
"title": "Mournblade",
|
||||||
"url": "",
|
"url": "https://www.uberwald.me/gitea/public/fvtt-mournblade",
|
||||||
"version": "0.0.27",
|
"background": "systems/fvtt-mournblade/assets/ui/fond_mournblade.webp",
|
||||||
"background": "./assets/ui/fond_mournblade.webp"
|
"compatibility": {
|
||||||
}
|
"minimum": "10",
|
||||||
|
"maximum": "11",
|
||||||
|
"verified": "11"
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,7 @@
|
|||||||
{
|
{
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"types": [
|
"types": [
|
||||||
"personnage",
|
"personnage"
|
||||||
"pnj"
|
|
||||||
],
|
],
|
||||||
"templates": {
|
"templates": {
|
||||||
"biodata": {
|
"biodata": {
|
||||||
@ -131,7 +130,8 @@
|
|||||||
"origine",
|
"origine",
|
||||||
"heritage",
|
"heritage",
|
||||||
"metier",
|
"metier",
|
||||||
"runeeffect"
|
"runeeffect",
|
||||||
|
"bouclier"
|
||||||
],
|
],
|
||||||
"runeeffect": {
|
"runeeffect": {
|
||||||
"rune": "",
|
"rune": "",
|
||||||
@ -175,6 +175,7 @@
|
|||||||
"bonusmaniementoff": 0,
|
"bonusmaniementoff": 0,
|
||||||
"bonusmaniementdef": 0,
|
"bonusmaniementdef": 0,
|
||||||
"degats": "",
|
"degats": "",
|
||||||
|
"nonletaux": false,
|
||||||
"deuxmains": false,
|
"deuxmains": false,
|
||||||
"courte": 0,
|
"courte": 0,
|
||||||
"moyenne": 0,
|
"moyenne": 0,
|
||||||
@ -182,6 +183,7 @@
|
|||||||
"tr": 0,
|
"tr": 0,
|
||||||
"rarete": 0,
|
"rarete": 0,
|
||||||
"prix": 0,
|
"prix": 0,
|
||||||
|
"equipped": false,
|
||||||
"templates": [
|
"templates": [
|
||||||
"base"
|
"base"
|
||||||
]
|
]
|
||||||
@ -203,6 +205,18 @@
|
|||||||
"degats": "",
|
"degats": "",
|
||||||
"rarete": 0,
|
"rarete": 0,
|
||||||
"prix": 0,
|
"prix": 0,
|
||||||
|
"equipped": false,
|
||||||
|
"templates": [
|
||||||
|
"base"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"bouclier": {
|
||||||
|
"bonusdefense": 0,
|
||||||
|
"degats": "",
|
||||||
|
"nonletaux": false,
|
||||||
|
"rarete": 0,
|
||||||
|
"prix": 0,
|
||||||
|
"equipped": false,
|
||||||
"templates": [
|
"templates": [
|
||||||
"base"
|
"base"
|
||||||
]
|
]
|
||||||
@ -219,6 +233,8 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"monnaie": {
|
"monnaie": {
|
||||||
|
"quantite": 0,
|
||||||
|
"unite": "",
|
||||||
"templates": [
|
"templates": [
|
||||||
"base"
|
"base"
|
||||||
]
|
]
|
||||||
|
@ -8,41 +8,62 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="flexrow">
|
|
||||||
<h4 class="item-name-label competence-name item-field-label-short">{{upperFirst alignement}}</h4>
|
|
||||||
<label class="item-name-label competence-name item-field-label-short">Loi</label>
|
|
||||||
<select class="status-small-label color-class-common item-field-label-short" type="text"
|
|
||||||
name="data.balance.loi" value="{{data.balance.loi}}" data-dtype="Number">
|
|
||||||
{{#select data.balance.loi}}
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
<label class="item-name-label competence-name item-field-label-short">Chaos</label>
|
|
||||||
<select class="status-small-label color-class-common item-field-label-short" type="text"
|
|
||||||
name="data.balance.chaos" value="{{data.balance.chaos}}" data-dtype="Number">
|
|
||||||
{{#select data.balance.chaos}}
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="flexrow">
|
|
||||||
<h4 class="item-name-label competence-name">Bonne Aventure</h4>
|
|
||||||
<label class="item-name-label competence-name item-field-label-short">Base</label>
|
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
|
||||||
name="data.bonneaventure.base" value="{{data.bonneaventure.base}}" data-dtype="Number" />
|
|
||||||
<label class="item-name-label competence-name item-field-label-short">Actuelle</label>
|
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
|
||||||
name="data.bonneaventure.actuelle" value="{{data.bonneaventure.actuelle}}" data-dtype="Number" />
|
|
||||||
</div>
|
|
||||||
<div class="flexrow">
|
|
||||||
<h4 class="item-name-label competence-name item-field-label-short">Eclat</h4>
|
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
|
||||||
name="data.eclat.value" value="{{data.eclat.value}}" data-dtype="Number" />
|
|
||||||
|
|
||||||
<h4 class="item-name-label competence-name item-field-label-medium">Expérience</h4>
|
<ul class="item-list alternate-list">
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
<li class="item flexrow ">
|
||||||
name="data.experience.value" value="{{data.experience.value}}" data-dtype="Number" />
|
<label class="item-name-label competence-name item-field-label-short"><strong>Loi</strong></label>
|
||||||
|
|
||||||
|
<label class="item-name-label competence-name item-field-label-short">Niveau</label><input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
|
name="system.balance.loi" value="{{data.balance.loi}}" data-dtype="Number" />
|
||||||
|
|
||||||
|
<label class="item-name-label competence-name item-field-label-short">Points</label>
|
||||||
|
<select class="status-small-label color-class-common item-field-label-short" type="text"
|
||||||
|
name="system.balance.pointsloi" value="{{data.balance.pointsloi}}" data-dtype="Number">
|
||||||
|
{{#select data.balance.pointsloi}}
|
||||||
|
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<label class="item-name-label competence-name item-field-label-medium">Aspect {{aspect}}</label>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="item flexrow ">
|
||||||
|
<label class="item-name-label competence-name item-field-label-short"><strong>Chaos</strong></label>
|
||||||
|
|
||||||
|
<label class="item-name-label competence-name item-field-label-short">Niveau</label><input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
|
name="system.balance.chaos" value="{{data.balance.chaos}}" data-dtype="Number" />
|
||||||
|
|
||||||
|
<label class="item-name-label competence-name item-field-label-short">Points</label><select class="status-small-label color-class-common item-field-label-short" type="text"
|
||||||
|
name="system.balance.pointschaos" value="{{data.balance.pointschaos}}" data-dtype="Number">
|
||||||
|
{{#select data.balance.pointschaos}}
|
||||||
|
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
<label class="item-name-label competence-name item-field-label-medium">Marge {{marge}}</label>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="item flexrow ">
|
||||||
|
<h4 class="item-name-label competence-name">Bonne Aventure</h4>
|
||||||
|
<label class="item-name-label competence-name item-field-label-short">Base</label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
|
name="system.bonneaventure.base" value="{{data.bonneaventure.base}}" data-dtype="Number" />
|
||||||
|
<label class="item-name-label competence-name item-field-label-short">Actuelle</label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
|
name="system.bonneaventure.actuelle" value="{{data.bonneaventure.actuelle}}" data-dtype="Number" />
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="item flexrow ">
|
||||||
|
<h4 class="item-name-label competence-name">Alignement {{alignement}}</h4>
|
||||||
|
<h4 class="item-name-label competence-name item-field-label-short">Eclat</h4>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
|
name="system.eclat.value" value="{{data.eclat.value}}" data-dtype="Number" />
|
||||||
|
|
||||||
|
<h4 class="item-name-label competence-name item-field-label-medium">Expérience</h4>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
|
name="system.experience.value" value="{{data.experience.value}}" data-dtype="Number" />
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -74,7 +95,7 @@
|
|||||||
<span class="item-name-label competence-name item-field-label-medium"><a
|
<span class="item-name-label competence-name item-field-label-medium"><a
|
||||||
class="roll-attribut">{{attr.label}}</a></span>
|
class="roll-attribut">{{attr.label}}</a></span>
|
||||||
<select class="status-small-label color-class-common item-field-label-short" type="text"
|
<select class="status-small-label color-class-common item-field-label-short" type="text"
|
||||||
name="data.attributs.{{key}}.value" value="{{attr.value}}" data-dtype="Number">
|
name="system.attributs.{{key}}.value" value="{{attr.value}}" data-dtype="Number">
|
||||||
{{#select attr.value}}
|
{{#select attr.value}}
|
||||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||||
{{/select}}
|
{{/select}}
|
||||||
@ -89,17 +110,17 @@
|
|||||||
<ul class="item-list alternate-list">
|
<ul class="item-list alternate-list">
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="label-name">Bonus</label>
|
<label class="label-name">Bonus</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.sante.bonus" value="{{data.sante.bonus}}"
|
<input type="text" class="input-numeric-short" name="system.sante.bonus" value="{{data.sante.bonus}}"
|
||||||
data-dtype="Number" />
|
data-dtype="Number" />
|
||||||
<label class="label-name">Total</label>
|
<label class="label-name">Total</label>
|
||||||
<label class="label-name">{{data.sante.base}}</label>
|
<label class="label-name">{{data.sante.base}}</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="label-name">Non létaux</label>
|
<label class="label-name">Non létaux</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.sante.nonletaux"
|
<input type="text" class="input-numeric-short" name="system.sante.nonletaux"
|
||||||
value="{{data.sante.nonletaux}}" data-dtype="Number" />
|
value="{{data.sante.nonletaux}}" data-dtype="Number" />
|
||||||
<label class="label-name">Létaux</label>
|
<label class="label-name">Létaux</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.sante.letaux" value="{{data.sante.letaux}}"
|
<input type="text" class="input-numeric-short" name="system.sante.letaux" value="{{data.sante.letaux}}"
|
||||||
data-dtype="Number" />
|
data-dtype="Number" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -108,13 +129,13 @@
|
|||||||
<ul class="item-list alternate-list">
|
<ul class="item-list alternate-list">
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="label-name">Max</label>
|
<label class="label-name">Max</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.ame.fullmax" value="{{data.ame.fullmax}}"
|
<input type="text" class="input-numeric-short" name="system.ame.fullmax" value="{{data.ame.fullmax}}"
|
||||||
data-dtype="Number" />
|
data-dtype="Number" />
|
||||||
<label class="label-name">Max Actuel</label>
|
<label class="label-name">Max Actuel</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.ame.currentmax" value="{{data.ame.currentmax}}"
|
<input type="text" class="input-numeric-short" name="system.ame.currentmax" value="{{data.ame.currentmax}}"
|
||||||
data-dtype="Number" />
|
data-dtype="Number" />
|
||||||
<label class="label-name">Courante</label>
|
<label class="label-name">Courante</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.ame.value" value="{{data.ame.value}}"
|
<input type="text" class="input-numeric-short" name="system.ame.value" value="{{data.ame.value}}"
|
||||||
data-dtype="Number" />
|
data-dtype="Number" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -124,28 +145,28 @@
|
|||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="competence-name">Initiative</label>
|
<label class="competence-name">Initiative</label>
|
||||||
<label class="competence-name">{{combat.initBase}}</label>
|
<label class="competence-name">{{combat.initBase}}</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.combat.initbonus"
|
<input type="text" class="input-numeric-short" name="system.combat.initbonus"
|
||||||
value="{{data.combat.initbonus}}" data-dtype="Number" />
|
value="{{data.combat.initbonus}}" data-dtype="Number" />
|
||||||
<label class="competence-name">{{combat.initTotal}}</label>
|
<label class="competence-name">{{combat.initTotal}}</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="competence-name">B. Dégats</label>
|
<label class="competence-name">B. Dégats</label>
|
||||||
<label class="competence-name">+{{combat.bonusDegats}}</label>
|
<label class="competence-name">+{{combat.bonusDegats}}</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.combat.bonusdegats"
|
<input type="text" class="input-numeric-short" name="system.combat.bonusdegats"
|
||||||
value="{{data.combat.bonusdegats}}" data-dtype="Number" />
|
value="{{data.combat.bonusdegats}}" data-dtype="Number" />
|
||||||
<label class="competence-name">+{{combat.bonusDegatsTotal}}</label>
|
<label class="competence-name">+{{combat.bonusDegatsTotal}}</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="competence-name">Vitesse</label>
|
<label class="competence-name">Vitesse</label>
|
||||||
<label class="competence-name">{{combat.vitesseBase}}</label>
|
<label class="competence-name">{{combat.vitesseBase}}</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.combat.vitessebonus"
|
<input type="text" class="input-numeric-short" name="system.combat.vitessebonus"
|
||||||
value="{{data.combat.vitessebonus}}" data-dtype="Number" />
|
value="{{data.combat.vitessebonus}}" data-dtype="Number" />
|
||||||
<label class="competence-name">{{combat.vitesseTotal}}</label>
|
<label class="competence-name">{{combat.vitesseTotal}}</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="competence-name">Défense</label>
|
<label class="competence-name">Défense</label>
|
||||||
<label class="competence-name">{{combat.defenseBase}}</label>
|
<label class="competence-name">{{combat.defenseBase}}</label>
|
||||||
<input type="text" class="input-numeric-short" name="data.combat.defensebonus"
|
<input type="text" class="input-numeric-short" name="system.combat.defensebonus"
|
||||||
value="{{data.combat.defensebonus}}" data-dtype="Number" />
|
value="{{data.combat.defensebonus}}" data-dtype="Number" />
|
||||||
<label class="competence-name">{{combat.defenseTotal}}</label>
|
<label class="competence-name">{{combat.defenseTotal}}</label>
|
||||||
</li>
|
</li>
|
||||||
@ -178,28 +199,28 @@
|
|||||||
<span class="item-name-label competence-name"><a class="roll-competence"
|
<span class="item-name-label competence-name"><a class="roll-competence"
|
||||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||||
<select class="status-small-label color-class-common edit-item-data competence-niveau" type="text"
|
<select class="status-small-label color-class-common edit-item-data competence-niveau" type="text"
|
||||||
data-item-field="niveau" value="{{skill.data.niveau}}" data-dtype="Number">
|
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
||||||
{{#select skill.data.niveau}}
|
{{#select skill.system.niveau}}
|
||||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||||
{{/select}}
|
{{/select}}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
{{#if (ne skill.data.attribut1 "none")}}
|
{{#if (ne skill.system.attribut1 "none")}}
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.data.attribut1}}">{{upper
|
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.system.attribut1}}">{{upper
|
||||||
skill.data.attribut1}} : {{skill.data.attribut1total}}</button>
|
skill.system.attribut1}} : {{skill.system.attribut1total}}</button>
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (ne skill.data.attribut2 "none")}}
|
{{#if (ne skill.system.attribut2 "none")}}
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.data.attribut2}}">{{upper
|
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.system.attribut2}}">{{upper
|
||||||
skill.data.attribut2}} : {{skill.data.attribut2total}}</button>
|
skill.system.attribut2}} : {{skill.system.attribut2total}}</button>
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (ne skill.data.attribut3 "none")}}
|
{{#if (ne skill.system.attribut3 "none")}}
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.data.attribut3}}">{{upper
|
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.system.attribut3}}">{{upper
|
||||||
skill.data.attribut3}} : {{skill.data.attribut3total}}</button>
|
skill.system.attribut3}} : {{skill.system.attribut3total}}</button>
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
@ -239,7 +260,7 @@
|
|||||||
<li class="item flexrow " data-item-id="{{don._id}}" data-item-type="don">
|
<li class="item flexrow " data-item-id="{{don._id}}" data-item-type="don">
|
||||||
<img class="item-name-img" src="{{don.img}}" />
|
<img class="item-name-img" src="{{don.img}}" />
|
||||||
<span class="item-name-label competence-name">{{don.name}}</span>
|
<span class="item-name-label competence-name">{{don.name}}</span>
|
||||||
<span class="item-field-label-short">{{don.data.allegeance}}</span>
|
<span class="item-field-label-short">{{don.system.allegeance}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
@ -256,7 +277,7 @@
|
|||||||
<span class="item-name-label-header">
|
<span class="item-name-label-header">
|
||||||
<h3><label class="items-title-text">Runes</label></h3>
|
<h3><label class="items-title-text">Runes</label></h3>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-long">
|
||||||
<label class="short-label">Haut parler</label>
|
<label class="short-label">Haut parler</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
@ -270,8 +291,8 @@
|
|||||||
<li class="item flexrow " data-item-id="{{rune._id}}" data-item-type="rune">
|
<li class="item flexrow " data-item-id="{{rune._id}}" data-item-type="rune">
|
||||||
<img class="item-name-img" src="{{rune.img}}" />
|
<img class="item-name-img" src="{{rune.img}}" />
|
||||||
<span class="item-name-label competence-name"><a class="roll-rune">{{rune.name}}</a></span>
|
<span class="item-name-label competence-name"><a class="roll-rune">{{rune.name}}</a></span>
|
||||||
<span class="item-field-label-short">{{rune.data.formule}}</span>
|
<span class="item-field-label-long">{{rune.system.formule}}</span>
|
||||||
<span class="item-field-label-short">{{rune.data.seuil}}</span>
|
<span class="item-field-label-short">{{rune.system.seuil}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
@ -300,7 +321,31 @@
|
|||||||
<li class="item flexrow " data-item-id="{{tendance._id}}" data-item-type="tendance">
|
<li class="item flexrow " data-item-id="{{tendance._id}}" data-item-type="tendance">
|
||||||
<img class="item-name-img" src="{{tendance.img}}" />
|
<img class="item-name-img" src="{{tendance.img}}" />
|
||||||
<span class="item-name-label competence-name">{{tendance.name}}</span>
|
<span class="item-name-label competence-name">{{tendance.name}}</span>
|
||||||
<span class="item-field-label-short">{{tendance.data.allegeance}}</span>
|
<span class="item-field-label-short">{{tendance.system.allegeance}}</span>
|
||||||
|
<div class="item-filler"> </div>
|
||||||
|
<div class="item-controls item-controls-fixed">
|
||||||
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sheet-box color-bg-archetype">
|
||||||
|
<ul class="item-list alternate-list">
|
||||||
|
<li class="item flexrow list-item items-title-bg">
|
||||||
|
<span class="item-name-label-header">
|
||||||
|
<h3><label class="items-title-text">Traits Chaotiques</label></h3>
|
||||||
|
</span>
|
||||||
|
<div class="item-filler"> </div>
|
||||||
|
<div class="item-controls item-controls-fixed">
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{#each traitsChaotiques as |trait key|}}
|
||||||
|
<li class="item flexrow " data-item-id="{{trait._id}}" data-item-type="traitchaotique">
|
||||||
|
<img class="item-name-img" src="{{trait.img}}" />
|
||||||
|
<span class="item-name-label competence-name">{{trait.name}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
@ -321,6 +366,43 @@
|
|||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
|
|
||||||
|
<div class="sheet-box color-bg-archetype">
|
||||||
|
<ul class="item-list alternate-list">
|
||||||
|
<li class="item flexrow list-item items-title-bg">
|
||||||
|
<span class="item-name-label-header">
|
||||||
|
<h3><label class="items-title-text">Richesses et Argent</label></h3>
|
||||||
|
</span>
|
||||||
|
<span class="item-field-label-medium">
|
||||||
|
<label class="short-label">Quantité</label>
|
||||||
|
</span>
|
||||||
|
<span class="item-field-label-medium">
|
||||||
|
<label class="short-label">Unité</label>
|
||||||
|
</span>
|
||||||
|
<div class="item-filler"> </div>
|
||||||
|
<div class="item-controls item-controls-fixed">
|
||||||
|
<a class="item-control item-add" data-type="monnaie" title="Ajouter une monnaie"><i
|
||||||
|
class="fas fa-plus"></i></a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{#each monnaies as |monnaie key|}}
|
||||||
|
<li class="item flexrow " data-item-id="{{monnaie._id}}" data-item-type="monnaie">
|
||||||
|
<img class="item-name-img" src="{{monnaie.img}}" />
|
||||||
|
<span class="item-name-label competence-name">{{monnaie.name}}</span>
|
||||||
|
<span class="item-name-label competence-name item-field-label-medium">{{monnaie.system.quantite}}
|
||||||
|
<a class="quantity-modify plus-minus-button" data-quantite-value="-1">-</a>
|
||||||
|
<a class="quantity-modify plus-minus-button" data-quantite-value="+1">+</a>
|
||||||
|
</span>
|
||||||
|
<span class="item-name-label competence-name item-field-label-medium">{{monnaie.system.unite}}</span>
|
||||||
|
<div class="item-filler"> </div>
|
||||||
|
<div class="item-controls item-controls-fixed">
|
||||||
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="sheet-box color-bg-archetype">
|
<div class="sheet-box color-bg-archetype">
|
||||||
<ul class="item-list alternate-list">
|
<ul class="item-list alternate-list">
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
@ -346,20 +428,33 @@
|
|||||||
<li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
|
<li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
|
||||||
<img class="item-name-img" src="{{arme.img}}" />
|
<img class="item-name-img" src="{{arme.img}}" />
|
||||||
<span class="item-name-label competence-name">{{arme.name}}</span>
|
<span class="item-name-label competence-name">{{arme.name}}</span>
|
||||||
|
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
<button class="roll-arme-offensif button-sheet-roll">{{arme.data.totalOffensif}}</button>
|
{{#if arme.system.equipped}}
|
||||||
|
<button class="roll-arme-offensif button-sheet-roll" >{{arme.system.totalOffensif}}</button>
|
||||||
|
{{else}}
|
||||||
|
<button disabled class="roll-arme-offensif button-sheet-roll" >{{arme.system.totalOffensif}}</button>
|
||||||
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
{{#if arme.data.isdefense}}
|
|
||||||
<span class="item-field-label-short arme-defensif"><label
|
{{#if arme.system.isdefense}}
|
||||||
class="arme-defensif">{{arme.data.totalDefensif}}</label></span>
|
<span class="item-field-label-short arme-defensif"><label class="arme-defensif">{{arme.system.totalDefensif}}</label></span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="item-field-label-short arme-defensif"><label class="arme-defensif">-</label></span>
|
<span class="item-field-label-short arme-defensif"><label class="arme-defensif">-</label></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="item-field-label-short">
|
|
||||||
<button class="roll-arme-degats button-sheet-roll">{{arme.data.totalDegats}}</button>
|
<span class="item-field-label-short">
|
||||||
</span>
|
{{#if arme.system.equipped}}
|
||||||
<div class="item-filler"> </div>
|
<button class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
|
||||||
|
{{else}}
|
||||||
|
<button disabled class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
|
<a class="item-control item-equip" title="Worn">{{#if arme.system.equipped}}<i
|
||||||
|
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
@ -379,7 +474,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
|
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
|
||||||
class="fas fa-plus"></i></a>
|
class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@ -388,7 +483,7 @@
|
|||||||
<img class="item-name-img" src="{{protection.img}}" />
|
<img class="item-name-img" src="{{protection.img}}" />
|
||||||
<span class="item-name-label competence-name">{{protection.name}}</span>
|
<span class="item-name-label competence-name">{{protection.name}}</span>
|
||||||
<span class="item-field-label-short arme-defensif"><label
|
<span class="item-field-label-short arme-defensif"><label
|
||||||
class="arme-defensif">{{protection.data.protection}}</label>
|
class="arme-defensif">{{protection.system.protection}}</label>
|
||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
@ -408,7 +503,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
|
<a class="item-control item-add" data-type="equipement" title="Ajouter un équipement"><i
|
||||||
class="fas fa-plus"></i></a>
|
class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@ -462,7 +557,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Multiplicateur d'âme</label>
|
<label class="generic-label">Multiplicateur d'âme</label>
|
||||||
<input type="text" class="" name="data.biodata.amemultiplier" value="{{data.biodata.amemultiplier}}"
|
<input type="text" class="" name="system.biodata.amemultiplier" value="{{data.biodata.amemultiplier}}"
|
||||||
data-dtype="Number" />
|
data-dtype="Number" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -472,19 +567,19 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Sexe</label>
|
<label class="generic-label">Sexe</label>
|
||||||
<input type="text" class="" name="data.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
|
<input type="text" class="" name="system.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Age</label>
|
<label class="generic-label">Age</label>
|
||||||
<input type="text" class="" name="data.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
|
<input type="text" class="" name="system.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Taille</label>
|
<label class="generic-label">Taille</label>
|
||||||
<input type="text" class="" name="data.biodata.size" value="{{data.biodata.size}}" data-dtype="String" />
|
<input type="text" class="" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Cheveux</label>
|
<label class="generic-label">Cheveux</label>
|
||||||
<input type="text" class="" name="data.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
|
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -492,16 +587,16 @@
|
|||||||
<div>
|
<div>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Yeux</label>
|
<label class="generic-label">Yeux</label>
|
||||||
<input type="text" class="" name="data.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
|
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Main préférée</label>
|
<label class="generic-label">Main préférée</label>
|
||||||
<input type="text" class="" name="data.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
|
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Poids</label>
|
<label class="generic-label">Poids</label>
|
||||||
<input type="text" class="" name="data.biodata.weight" value="{{data.biodata.weight}}"
|
<input type="text" class="" name="system.biodata.weight" value="{{data.biodata.weight}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
</div>
|
</div>
|
||||||
@ -511,7 +606,7 @@
|
|||||||
<h3>Description</h3>
|
<h3>Description</h3>
|
||||||
</span>
|
</span>
|
||||||
<div class="medium-editor item-text-long-line">
|
<div class="medium-editor item-text-long-line">
|
||||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Arme : {{arme.name}} (+{{arme.data.totalDegats}})</li>
|
<li>Arme : {{arme.name}} (+{{arme.system.totalDegats}})</li>
|
||||||
<li>Dégats : {{finalResult}}</li>
|
<li>Dégats : {{finalResult}} {{#if arme.system.nonletaux}}(Non létaux){{else}}(Létaux){{/if}}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -36,10 +36,17 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if arme}}
|
{{#if arme}}
|
||||||
<li>Arme : {{arme.name}} (+{{arme.data.bonusmaniementoff}})</li>
|
<li>Arme : {{arme.name}} (+{{arme.system.bonusmaniementoff}})</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<li>Formule : {{diceFormula}}</li>
|
<li>Formule : {{diceFormula}}</li>
|
||||||
|
<li>Dé : {{diceResult}}</li>
|
||||||
|
|
||||||
|
{{#if difficulte}}
|
||||||
|
<li>Difficulté : {{difficulte}}</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<li></li>
|
||||||
<li>Total : {{finalResult}}</li>
|
<li>Total : {{finalResult}}</li>
|
||||||
|
|
||||||
{{#if difficulte}}
|
{{#if difficulte}}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{{#if data.isGM}}
|
{{#if data.isGM}}
|
||||||
<h3>GM Notes : </h3>
|
<h3>GM Notes : </h3>
|
||||||
<div class="form-group editor">
|
<div class="form-group editor">
|
||||||
{{editor content=data.gmnotes target="data.gmnotes" button=true owner=owner editable=editable}}
|
{{editor data.biodata.gmnotes target="system.biodata.gmnotes" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Type d'arme : </label>
|
<label class="generic-label">Type d'arme : </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.typearme" value="{{data.typearme}}" data-dtype="string" >
|
<select class="status-small-label color-class-common" type="text" name="system.typearme" value="{{data.typearme}}" data-dtype="string" >
|
||||||
{{#select data.typearme}}
|
{{#select data.typearme}}
|
||||||
<option value="contact">Arme de contact</option>
|
<option value="contact">Arme de contact</option>
|
||||||
<option value="contactjet">Arme de contact et de Jet</option>
|
<option value="contactjet">Arme de contact et de Jet</option>
|
||||||
@ -23,49 +23,57 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Bonus de maniement (offensif) : </label>
|
<label class="generic-label">Bonus de maniement (offensif) : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.bonusmaniementoff" value="{{data.bonusmaniementoff}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.bonusmaniementoff" value="{{data.bonusmaniementoff}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Défensive ? </label>
|
<label class="generic-label">Défensive ? </label>
|
||||||
<input class="" type="checkbox" name="data.isdefense" value="{{data.isdefense}}" {{checked data.isdefense}}/>
|
<input type="checkbox" name="system.isdefense" {{checked data.isdefense}}/>
|
||||||
</span>
|
</span>
|
||||||
{{#if data.isdefense}}
|
{{#if data.isdefense}}
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Bonus de maniement (défensif) : </label>
|
<label class="generic-label">Bonus de maniement (défensif) : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.bonusmaniementdef" value="{{data.bonusmaniementdef}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.bonusmaniementdef" value="{{data.bonusmaniementdef}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Dégâts : </label>
|
<label class="generic-label">Dégâts : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.degats" value="{{data.degats}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.degats" value="{{data.degats}}" data-dtype="String" />
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Dégâts non létaux ? </label>
|
||||||
|
<input type="checkbox" name="system.nonletaux" {{checked data.nonletaux}}/>
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Equipé ? </label>
|
||||||
|
<input type="checkbox" name="system.equipped" {{checked data.equipped}}/>
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">A deux mains ? </label>
|
<label class="generic-label">A deux mains ? </label>
|
||||||
<input class="" type="checkbox" name="data.deuxmains" value="{{data.deuxmains}}" {{checked data.deuxmains}}/>
|
<input type="checkbox" name="system.deuxmains" {{checked data.deuxmains}}/>
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Portée courte </label>
|
<label class="generic-label">Portée courte </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.courte" value="{{data.courte}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.courte" value="{{data.courte}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Portée moyenne </label>
|
<label class="generic-label">Portée moyenne </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.moyenne" value="{{data.moyenne}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.moyenne" value="{{data.moyenne}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Portée longue </label>
|
<label class="generic-label">Portée longue </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.longue" value="{{data.longue}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.longue" value="{{data.longue}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Temps de rechargement </label>
|
<label class="generic-label">Temps de rechargement </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.tr" value="{{data.tr}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.tr" value="{{data.tr}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Rareté </label>
|
<label class="generic-label">Rareté </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.rarete" value="{{data.rarete}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.rarete" value="{{data.rarete}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Prix </label>
|
<label class="generic-label">Prix </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.prix" value="{{data.prix}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.prix" value="{{data.prix}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
43
templates/item-bouclier-sheet.html
Normal file
43
templates/item-bouclier-sheet.html
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
<header class="sheet-header">
|
||||||
|
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||||
|
<div class="header-fields">
|
||||||
|
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
|
||||||
|
<div class="flexcol">
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Bonus de défense : </label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.bonusdefense" value="{{data.bonusdefense}}" data-dtype="Number" />
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Degats : </label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.degats" value="{{data.degats}}" data-dtype="String" />
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Dégâts non létaux ? </label>
|
||||||
|
<input type="checkbox" name="system.nonletaux" {{checked data.nonletaux}}/>
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Equipé ? </label>
|
||||||
|
<input type="checkbox" name="system.equipped" {{checked data.equipped}}/>
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Rareté </label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.rarete" value="{{data.rarete}}" data-dtype="Number" />
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Prix </label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.prix" value="{{data.prix}}" data-dtype="Number" />
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</form>
|
@ -17,7 +17,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Attribut 1 : </label>
|
<label class="generic-label">Attribut 1 : </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.attribut1"
|
<select class="status-small-label color-class-common" type="text" name="system.attribut1"
|
||||||
value="{{data.attribut1}}" data-dtype="string">
|
value="{{data.attribut1}}" data-dtype="string">
|
||||||
{{#select data.attribut1}}
|
{{#select data.attribut1}}
|
||||||
{{#each attributs as |attrLabel attrKey|}}
|
{{#each attributs as |attrLabel attrKey|}}
|
||||||
@ -28,7 +28,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Attribut 2 : </label>
|
<label class="generic-label">Attribut 2 : </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.attribut2"
|
<select class="status-small-label color-class-common" type="text" name="system.attribut2"
|
||||||
value="{{data.attribut2}}" data-dtype="string">
|
value="{{data.attribut2}}" data-dtype="string">
|
||||||
<option value="none">Aucun</option>
|
<option value="none">Aucun</option>
|
||||||
{{#select data.attribut2}}
|
{{#select data.attribut2}}
|
||||||
@ -40,7 +40,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Attribut 3 : </label>
|
<label class="generic-label">Attribut 3 : </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.attribut3"
|
<select class="status-small-label color-class-common" type="text" name="system.attribut3"
|
||||||
value="{{data.attribut3}}" data-dtype="string">
|
value="{{data.attribut3}}" data-dtype="string">
|
||||||
<option value="none">Aucun</option>
|
<option value="none">Aucun</option>
|
||||||
{{#select data.attribut3}}
|
{{#select data.attribut3}}
|
||||||
@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Les bonus de Bonne Aventure et d'Eclat peuvent être doublés (cf. Métier) ? </label>
|
<label class="generic-label">Les bonus de Bonne Aventure et d'Eclat peuvent être doublés (cf. Métier) ? </label>
|
||||||
<input class="" type="checkbox" name="data.doublebonus" value="{{data.doublebonus}}" {{checked data.doublebonus}}/>
|
<input class="" type="checkbox" name="system.doublebonus" {{checked data.doublebonus}}/>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
@ -63,8 +63,8 @@
|
|||||||
{{#each data.predilections as |predilection key|}}
|
{{#each data.predilections as |predilection key|}}
|
||||||
<li class="prediction-item item flexrow" data-prediction-index="{{key}}">
|
<li class="prediction-item item flexrow" data-prediction-index="{{key}}">
|
||||||
<input type="text" class="padd-right color-class-common edit-prediction"
|
<input type="text" class="padd-right color-class-common edit-prediction"
|
||||||
name="data.predilections[{{key}}]" value="{{predilection.name}}" data-dtype="String" />
|
name="system.predilections[{{key}}]" value="{{predilection.name}}" data-dtype="String" />
|
||||||
<input class="use-prediction" type="checkbox" name="predilection.used" value="{{predilection.used}}" {{checked predilection.used}} />
|
<label class="generic-label">Utilisée ? <input class="use-prediction" type="checkbox" name="predilection.used" {{checked predilection.used}} /></label>
|
||||||
<a class="item-control delete-prediction" title="Supprimer une predilection"><i class="fas fa-trash"></i></a>
|
<a class="item-control delete-prediction" title="Supprimer une predilection"><i class="fas fa-trash"></i></a>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Allégeance : </label>
|
<label class="generic-label">Allégeance : </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.allegeance" value="{{data.allegeance}}" data-dtype="string" >
|
<select class="status-small-label color-class-common" type="text" name="system.allegeance" value="{{data.allegeance}}" data-dtype="string" >
|
||||||
{{#select data.allegeance}}
|
{{#select data.allegeance}}
|
||||||
<option value="tous">Tous</option>
|
<option value="tous">Tous</option>
|
||||||
<option value="chaos">Chaos</option>
|
<option value="chaos">Chaos</option>
|
||||||
@ -24,7 +24,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Prérequis : </label>
|
<label class="generic-label">Prérequis : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.prerequis" value="{{data.prerequis}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.prerequis" value="{{data.prerequis}}" data-dtype="String" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span>
|
<span>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
</span>
|
</span>
|
||||||
|
|
||||||
<div class="small-editor item-text-long-line">
|
<div class="small-editor item-text-long-line">
|
||||||
{{editor content=data.sacrifice target="data.sacrifice" button=true owner=owner editable=editable}}
|
{{editor sacrifice target="system.sacrifice" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Rareté </label>
|
<label class="generic-label">Rareté </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.rarete" value="{{data.rarete}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.rarete" value="{{data.rarete}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Prix </label>
|
<label class="generic-label">Prix </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.prix" value="{{data.prix}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.prix" value="{{data.prix}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
@ -10,8 +10,18 @@
|
|||||||
<section class="sheet-body">
|
<section class="sheet-body">
|
||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
<div class="flexcol">
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Quantité : </label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.quantite" value="{{data.quantite}}" data-dtype="Number" />
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
<label class="generic-label">Unité/Monnaie : </label>
|
||||||
|
<input type="text" class="padd-right color-class-common" name="system.unite" value="{{data.unite}}" data-dtype="String" />
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Allégeance : </label>
|
<label class="generic-label">Allégeance : </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.allegeance" value="{{data.allegeance}}" data-dtype="string" >
|
<select class="status-small-label color-class-common" type="text" name="system.allegeance" value="{{data.allegeance}}" data-dtype="string" >
|
||||||
{{#select data.allegeance}}
|
{{#select data.allegeance}}
|
||||||
<option value="tous">Tous</option>
|
<option value="tous">Tous</option>
|
||||||
<option value="chaos">Chaos</option>
|
<option value="chaos">Chaos</option>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Compétence : </label>
|
<label class="generic-label">Compétence : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.competence" value="{{data.competence}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.competence" value="{{data.competence}}" data-dtype="String" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
@ -10,30 +10,21 @@
|
|||||||
<section class="sheet-body">
|
<section class="sheet-body">
|
||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
|
||||||
<label class="generic-label">Type de protection : </label>
|
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.typeprotection" value="{{data.typeprotection}}" data-dtype="string" >
|
|
||||||
{{#select data.typearme}}
|
|
||||||
<option value="armure">Armure</option>
|
|
||||||
<option value="bouclier">Bouclier</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
</span>
|
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Protection : </label>
|
<label class="generic-label">Protection : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.protection" value="{{data.protection}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.protection" value="{{data.protection}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Degats : </label>
|
<label class="generic-label">Equipé ? </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.degats" value="{{data.degats}}" data-dtype="String" />
|
<input type="checkbox" name="system.equipped" {{checked data.equipped}}/>
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Rareté </label>
|
<label class="generic-label">Rareté </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.rarete" value="{{data.rarete}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.rarete" value="{{data.rarete}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Prix </label>
|
<label class="generic-label">Prix </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.prix" value="{{data.prix}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.prix" value="{{data.prix}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
@ -12,23 +12,23 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Haut-Parler : </label>
|
<label class="generic-label">Haut-Parler : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.formule" value="{{data.formule}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.formule" value="{{data.formule}}" data-dtype="String" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Seuil de difficulté : </label>
|
<label class="generic-label">Seuil de difficulté : </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.seuil" value="{{data.seuil}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.seuil" value="{{data.seuil}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Rune prononcée : </label>
|
<label class="generic-label">Rune prononcée : </label>
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.prononcee" value="{{data.prononcee}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.prononcee" value="{{data.prononcee}}" data-dtype="String" />
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Rune tracée : </label>
|
<label class="generic-label">Rune tracée : </label>
|
||||||
</span>
|
</span>
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.tracee" value="{{data.tracee}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.tracee" value="{{data.tracee}}" data-dtype="String" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||||
|
@ -11,12 +11,12 @@
|
|||||||
|
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Rune </label>
|
<label class="generic-label">Rune </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.rune" value="{{data.rune}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.rune" value="{{data.rune}}" data-dtype="String" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Mode </label>
|
<label class="generic-label">Mode </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.mode"
|
<select class="status-small-label color-class-common" type="text" name="system.mode"
|
||||||
value="{{data.mode}}" data-dtype="string">
|
value="{{data.mode}}" data-dtype="string">
|
||||||
{{@select data.mode}}
|
{{@select data.mode}}
|
||||||
<option value="prononcee">Prononcée</option>
|
<option value="prononcee">Prononcée</option>
|
||||||
@ -27,12 +27,12 @@
|
|||||||
|
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Points d'âme </label>
|
<label class="generic-label">Points d'âme </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.pointame" value="{{data.pointame}}" data-dtype="Number" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.pointame" value="{{data.pointame}}" data-dtype="Number" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Durée </label>
|
<label class="generic-label">Durée </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.duree" value="{{data.duree}}" data-dtype="String" />
|
<input type="text" class="padd-right status-small-label color-class-common" name="system.duree" value="{{data.duree}}" data-dtype="String" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span class="flexrow">
|
<span class="flexrow">
|
||||||
<label class="generic-label">Allégeance : </label>
|
<label class="generic-label">Allégeance : </label>
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.allegeance" value="{{data.allegeance}}" data-dtype="string" >
|
<select class="status-small-label color-class-common" type="text" name="system.allegeance" value="{{data.allegeance}}" data-dtype="string" >
|
||||||
{{#select data.allegeance}}
|
{{#select data.allegeance}}
|
||||||
<option value="tous">Tous</option>
|
<option value="tous">Tous</option>
|
||||||
<option value="chaos">Chaos</option>
|
<option value="chaos">Chaos</option>
|
||||||
|
@ -7,41 +7,15 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<span class="item-field-label-long"><label>
|
<span class="item-field-label-long"><label>
|
||||||
{{equip.data.quantity}}
|
{{equip.system.quantity}}
|
||||||
(<a class="quantity-minus plus-minus-button"> -</a>/<a class="quantity-plus plus-minus-button">+</a>)
|
(<a class="quantity-minus plus-minus-button"> -</a>/<a class="quantity-plus plus-minus-button">+</a>)
|
||||||
</label>
|
</label>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="item-field-label-medium">
|
|
||||||
{{#if (count equip.data.effects)}}
|
|
||||||
{{#if equip.data.activated}}
|
|
||||||
<a class="equip-deactivate">Deactivate</a>
|
|
||||||
{{else}}
|
|
||||||
<a class="equip-activate">Activate</a>
|
|
||||||
{{/if}}
|
|
||||||
{{else}}
|
|
||||||
-
|
|
||||||
{{/if}}
|
|
||||||
</span>
|
|
||||||
<span class="item-field-label-short">
|
|
||||||
{{#if equip.data.iscontainer}}
|
|
||||||
{{equip.data.contentsEnc}}
|
|
||||||
{{else}}
|
|
||||||
{{mul equip.data.weight equip.data.quantity}}
|
|
||||||
{{/if}}
|
|
||||||
</span>
|
|
||||||
<span class="item-field-label-medium">
|
|
||||||
{{#if equip.data.idrDice}}
|
|
||||||
<a class="roll-idr" data-dice-value="{{equip.data.idrDice}}">{{equip.data.idrDice}}</a>
|
|
||||||
{{else}}
|
|
||||||
-
|
|
||||||
{{/if}}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
{{#if (eq level 1)}}
|
{{#if (eq level 1)}}
|
||||||
<a class="item-control item-equip" title="Worn">{{#if equip.data.equipped}}<i
|
<a class="item-control item-equip" title="Worn">{{#if equip.system.equipped}}<i
|
||||||
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
<li class="item flexrow list-item color-class-{{lower stat.abbrev}} item-stat-roll" data-attr-key="{{key}}">
|
|
||||||
<span class="stat-icon">
|
|
||||||
<img class="stat-icon" src="systems/fvtt-pegasus-rpg/images/icons/{{stat.abbrev}}.webp">
|
|
||||||
</span>
|
|
||||||
<span class="stat-label stat-margin" name="{{key}}">
|
|
||||||
<h4 class="stat-text-white stat-margin"><a class="roll-stat stat-margin" data-stat-key="{{key}}">{{stat.abbrev}}</a></h4>
|
|
||||||
</span>
|
|
||||||
<select class="status-small-label color-class-common" type="text" name="data.statistics.{{key}}.value" value="{{stat.value}}"
|
|
||||||
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
|
|
||||||
{{#select stat.value}}
|
|
||||||
{{{@root.optionsDiceList}}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="data.statistics.{{key}}.mod" value="{{stat.mod}}"
|
|
||||||
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}} />
|
|
||||||
</li>
|
|
@ -1,70 +0,0 @@
|
|||||||
<ul class="status-block">
|
|
||||||
<li class="item flexrow">
|
|
||||||
<span class="stat-label status-small-label status-col-name"><label class="status-small-label"><strong>Status</strong></label></span>
|
|
||||||
<span class="status-header-label status-small-label no-grow"><label class="status-small-label">Cur</label></span>
|
|
||||||
<span class="status-header-label status-small-label no-grow"><label class="status-small-label">Mod</label></span>
|
|
||||||
<span class="status-header-label status-small-label no-grow"><label class="status-small-label">Max</label></span>
|
|
||||||
</li>
|
|
||||||
{{#each data.secondary as |stat2 key|}}
|
|
||||||
<li class="item flexrow " data-attr-key="{{key}}">
|
|
||||||
<span class="stat-label flexrow status-col-name" name="{{key}}">
|
|
||||||
<label class="status-small-label"><strong>{{stat2.label}}</strong><br>
|
|
||||||
{{#if (eq key "health")}}
|
|
||||||
(KOV -{{stat2.max}})
|
|
||||||
{{/if}}
|
|
||||||
{{#if (eq key "delirium")}}
|
|
||||||
(MV -{{stat2.max}})
|
|
||||||
{{/if}}
|
|
||||||
</label>
|
|
||||||
</span>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.secondary.{{key}}.value" value="{{stat2.value}}" data-dtype="Number"/>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.secondary.{{key}}.bonus" value="{{stat2.bonus}}" data-dtype="Number"/>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.secondary.{{key}}.max" value="{{stat2.max}}" data-dtype="Number"/>
|
|
||||||
</li>
|
|
||||||
{{/each}}
|
|
||||||
<li class="item flexrow " data-key="nrg">
|
|
||||||
<span class="stat-label flexrow status-col-name" name="nrg">
|
|
||||||
<label class="status-small-label"><strong>{{data.nrg.label}}</strong></label>
|
|
||||||
</span>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.value" value="{{data.nrg.value}}" data-dtype="Number"/>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.mod" value="{{data.nrg.mod}}" data-dtype="Number"/>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.max" value="{{data.nrg.max}}" data-dtype="Number"/>
|
|
||||||
<span class="small-label status-small-label"> /{{data.nrg.absolutemax}}</span>
|
|
||||||
</li>
|
|
||||||
<li class="item flexrow " data-key="nrg">
|
|
||||||
<span class="stat-label flexrow status-col-name" name="activated-nrg">
|
|
||||||
<label class="status-small-label"><strong>Activated NRG</strong><br>
|
|
||||||
</span>
|
|
||||||
<span class="stat-label flexrow status-col-name" name="activated-nrg">
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.activated" value="{{data.nrg.activated}}" data-dtype="Number"/>
|
|
||||||
</span>
|
|
||||||
<!--<span class="stat-label flexrow status-col-name" name="momentum">
|
|
||||||
<label class="status-small-label flexrow"><strong>
|
|
||||||
<a class="stat-icon lock-unlock-sheet">{{#if editScore}}Lock{{else}}Unlock{{/if}}</a>
|
|
||||||
</strong></label>-->
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li class="item flexrow " data-key="momentum">
|
|
||||||
<span class="stat-label flexrow status-col-name" name="momentum">
|
|
||||||
<label class="status-small-label"><strong>Momentum</strong></label>
|
|
||||||
</span>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.momentum.value" value="{{data.momentum.value}}" data-dtype="Number"/>
|
|
||||||
<input type="text" class="padd-right status-small-label no-grow" name="data.momentum.max" value="{{data.momentum.max}}" data-dtype="Number"/>
|
|
||||||
<span>
|
|
||||||
<a class="momentum-plus plus-minus-button">+</a>
|
|
||||||
<a class="momentum-minus plus-minus-button">-</a>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<!--<li class="item flexrow list-item" data-key="lock-unlock">
|
|
||||||
<span class="stat-label flexrow status-col-name" name="momentum">
|
|
||||||
<a class="stat-icon lock-unlock-sheet"><img class="small-button-container"
|
|
||||||
src="systems/fvtt-pegasus-rpg/images/icons/{{#if editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
|
|
||||||
></a>
|
|
||||||
</span>-->
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- <span class="small-label padd-right packed-left">Act</span>
|
|
||||||
<input type="text" class="padd-right" name="data.nrg.activated" value="{{data.nrg.activated}}" data-dtype="Number"/>
|
|
||||||
-->
|
|
@ -2,5 +2,5 @@
|
|||||||
<h3>Description</h3>
|
<h3>Description</h3>
|
||||||
</span>
|
</span>
|
||||||
<div class="medium-editor item-text-long-line">
|
<div class="medium-editor item-text-long-line">
|
||||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
{{editor description target="system.description" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
<img class="chat-img" src="{{img}}" title="{{name}}" />
|
<img class="chat-img" src="{{img}}" title="{{name}}" />
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<h4><b>Description : </b></h4>
|
<h4><b>Description : </b></h4>
|
||||||
<p class="card-content">{{{data.description}}}</p>
|
<p class="card-content">{{{system.description}}}</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -27,14 +27,14 @@
|
|||||||
{{#if competence}}
|
{{#if competence}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{competence.name}}</span>
|
<span class="roll-dialog-label">{{competence.name}}</span>
|
||||||
<span class="small-label">{{competence.data.niveau}}</span>
|
<span class="small-label">{{competence.system.niveau}}</span>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if rune}}
|
{{#if rune}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{rune.name}}</span>
|
<span class="roll-dialog-label">{{rune.name}}</span>
|
||||||
<span class="small-label">{{rune.data.formule}}</span>
|
<span class="small-label">{{rune.system.formule}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Lancement</span>
|
<span class="roll-dialog-label">Lancement</span>
|
||||||
@ -68,21 +68,28 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if armeDefense}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Difficulté : </span>
|
<span class="roll-dialog-label">Défense adversaire : </span>
|
||||||
<select class="roll-dialog-label" id="difficulte" type="text" name="difficulte" value="{{difficulte}}"
|
<span class="roll-dialog-label"><strong>{{difficulte}}</strong> </span>
|
||||||
data-dtype="Number">
|
|
||||||
{{#select difficulte}}
|
|
||||||
<option value="0">Aucune/Inconnue</option>
|
|
||||||
<option value="5">Facile (5)</option>
|
|
||||||
<option value="10">Moyenne (10)</option>
|
|
||||||
<option value="15">Ardue (15)</option>
|
|
||||||
<option value="20">Hasardeuse (20)</option>
|
|
||||||
<option value="25">Insensée (25)</option>
|
|
||||||
<option value="30">Pure Folie (30)</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">Difficulté : </span>
|
||||||
|
<select class="roll-dialog-label" id="difficulte" type="text" name="difficulte" value="{{difficulte}}"
|
||||||
|
data-dtype="Number">
|
||||||
|
{{#select difficulte}}
|
||||||
|
<option value="0">Aucune/Inconnue</option>
|
||||||
|
<option value="5">Facile (5)</option>
|
||||||
|
<option value="10">Moyenne (10)</option>
|
||||||
|
<option value="15">Ardue (15)</option>
|
||||||
|
<option value="20">Hasardeuse (20)</option>
|
||||||
|
<option value="25">Insensée (25)</option>
|
||||||
|
<option value="30">Pure Folie (30)</option>
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if canEclatDoubleD20}}
|
{{#if canEclatDoubleD20}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
|
Reference in New Issue
Block a user