Sante et autrs

This commit is contained in:
sladecraven 2022-06-06 22:33:46 +02:00
parent d7387ac062
commit f23bdca66d
12 changed files with 423 additions and 137 deletions

View File

@ -40,11 +40,16 @@ export class MournbladeActorSheet extends ActorSheet {
data: actorData,
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited,
skills: duplicate(this.actor.getSkills()),
skills: this.actor.getSkills(),
armes: duplicate(this.actor.getWeapons()),
protections: duplicate(this.actor.getArmors()),
dons: duplicate(this.actor.getDons()),
alignement: this.actor.getAlignement(),
tendances:duplicate(this.actor.getTendances()),
runes:duplicate(this.actor.getRunes()),
origine: duplicate(this.actor.getOrigine() || {}),
heritage: duplicate(this.actor.getHeritage() || {}),
metier: duplicate(this.actor.getMetier() || {}),
combat: this.actor.getCombatValues(),
equipements: duplicate(this.actor.getEquipments()),
options: this.options,

View File

@ -39,7 +39,7 @@ export class MournbladeActor extends Actor {
if (data.type == 'personnage') {
const skills = await MournbladeUtility.loadCompendium("fvtt-mournblade.skills")
data.items = skills.map(i => i.toObject())
data.items = skills.map(i => i.toObject())
}
if (data.type == 'pnj') {
}
@ -48,20 +48,20 @@ export class MournbladeActor extends Actor {
}
/* -------------------------------------------- */
prepareArme( arme){
arme = duplicate(arme)
prepareArme(arme) {
arme = duplicate(arme)
let combat = this.getCombatValues()
if (arme.data.typearme == "contact" || arme.data.typearme == "contactjet") {
arme.data.competence = duplicate(this.data.items.find( item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
arme.data.competence = duplicate(this.data.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
arme.data.attrKey = "pui"
arme.data.totalDegats = arme.data.degats + "+" + combat.bonusDegatsTotal
arme.data.totalOffensif = this.data.data.attributs.pui.value + arme.data.competence.data.niveau + arme.data.bonusmaniementoff
if (arme.data.isdefense) {
arme.data.totalDefensif = combat.defenseTotal + arme.data.competence.data.niveau + arme.data.bonusmaniementdef
arme.data.totalDefensif = combat.defenseTotal + arme.data.competence.data.niveau + arme.data.bonusmaniementdef
}
}
if (arme.data.typearme == "jet" || arme.data.typearme == "tir") {
arme.data.competence = duplicate(this.data.items.find( item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
arme.data.competence = duplicate(this.data.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
arme.data.attrKey = "adr"
arme.data.totalOffensif = this.data.data.attributs.adr.value + arme.data.competence.data.niveau + arme.data.bonusmaniementoff
arme.data.totalDegats = arme.data.degats
@ -75,9 +75,9 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
getWeapons() {
let armes = []
for (let arme of this.data.items ) {
for (let arme of this.data.items) {
if (arme.type == "arme") {
armes.push(this.prepareArme( arme) )
armes.push(this.prepareArme(arme))
}
}
return armes
@ -88,6 +88,13 @@ export class MournbladeActor extends Actor {
return this.data.items.filter(item => item.type == "don")
}
/* -------------------------------------------- */
getTendances() {
return this.data.items.filter(item => item.type == "tendance")
}
getRunes() {
return this.data.items.filter(item => item.type == "rune")
}
/* -------------------------------------------- */
getEquipments() {
return this.data.items.filter(item => item.type == "equipement")
}
@ -95,6 +102,15 @@ export class MournbladeActor extends Actor {
getArmors() {
return this.data.items.filter(item => item.type == "protection")
}
getOrigine() {
return this.data.items.find(item => item.type == "origine")
}
getMetier() {
return this.data.items.find(item => item.type == "metier")
}
getHeritage() {
return this.data.items.find(item => item.type == "heritage")
}
/* -------------------------------------------- */
getSkills() {
let comp = []
@ -115,7 +131,17 @@ export class MournbladeActor extends Actor {
comp.push(item)
}
}
return comp
return comp.sort(function (a, b) {
let fa = a.name.toLowerCase(),
fb = b.name.toLowerCase();
if (fa < fb) {
return -1;
}
if (fa > fb) {
return 1;
}
return 0;
})
}
/* -------------------------------------------- */
@ -125,12 +151,12 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
getDefenseBase() {
return this.data.data.attributs.tre.value + 5
return this.data.data.attributs.tre.value + 5
}
/* -------------------------------------------- */
getVitesseBase() {
return __vitesseBonus[this.data.data.attributs.adr.value]
return 5 + __vitesseBonus[this.data.data.attributs.adr.value]
}
/* -------------------------------------------- */
@ -160,13 +186,13 @@ export class MournbladeActor extends Actor {
prepareDerivedData() {
if (this.type == 'personnage') {
let newSante = (this.data.data.attributs.pui.value + this.data.data.attributs.tre.value)*2 + 5
if (this.data.data.sante.base!=newSante ) {
this.update( {'data.sante.base': newSante} )
let newSante = this.data.data.sante.bonus + (this.data.data.attributs.pui.value + this.data.data.attributs.tre.value) * 2 + 5
if (this.data.data.sante.base != newSante) {
this.update({ 'data.sante.base': newSante })
}
let newAme = (this.data.data.attributs.cla.value + this.data.data.attributs.tre.value)*2 + 5
if (this.data.data.ame.base!=newAme ) {
this.update( {'data.ame.base': newAme} )
let newAme = (this.data.data.attributs.cla.value + this.data.data.attributs.tre.value) * this.data.data.biodata.amemultiplier + 5
if (this.data.data.ame.base != newAme) {
this.update({ 'data.ame.base': newAme })
}
}
@ -261,7 +287,7 @@ export class MournbladeActor extends Actor {
getBonusDegats() {
return __degatsBonus[this.data.data.attributs.pui.value]
}
/* -------------------------------------------- */
async equipGear(equipmentId) {
let item = this.data.items.find(item => item.id == equipmentId);
@ -306,16 +332,16 @@ export class MournbladeActor extends Actor {
}
/* -------------------------------------------- */
getCompetence( compId ) {
getCompetence(compId) {
return this.data.items.get(compId)
}
/* -------------------------------------------- */
async setPredilectionUsed( compId, predIdx) {
async setPredilectionUsed(compId, predIdx) {
let comp = this.data.items.get(compId)
let pred = duplicate(comp.data.data.predilections)
pred[predIdx].used = true
await this.updateEmbeddedDocuments('Item', [ {_id: compId, 'data.predilections': pred}])
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'data.predilections': pred }])
}
/* -------------------------------------------- */
@ -362,7 +388,7 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
async rollArmeOffensif(armeId) {
let arme = this.data.items.get(armeId)
arme = this.prepareArme( arme )
arme = this.prepareArme(arme)
let rollData = this.getCommonRollData(arme.data.attrKey, arme.data.competence._id)
rollData.arme = arme
console.log("ARME!", rollData)
@ -373,16 +399,16 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
async rollArmeDegats(armeId) {
let arme = this.data.items.get(armeId)
arme = this.prepareArme( arme )
let roll = new Roll(arme.data.totalDegats).roll( {async:false})
arme = this.prepareArme(arme)
let roll = new Roll(arme.data.totalDegats).roll({ async: false })
await MournbladeUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
let rollData = {
arme:arme,
arme: arme,
finalResult: roll.total,
alias : this.name,
actorImg : this.img,
actorId : this.id,
actionImg : arme.img,
alias: this.name,
actorImg: this.img,
actorId: this.id,
actionImg: arme.img,
}
MournbladeUtility.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-degats-result.html`, rollData)

View File

@ -5,7 +5,7 @@ export class MournbladeRollDialog extends Dialog {
/* -------------------------------------------- */
static async create(actor, rollData ) {
let options = { classes: ["MournbladeDialog"], width: 620, height: 380, 'z-index': 99999 };
let options = { classes: ["MournbladeDialog"], width: 320, height: 380, 'z-index': 99999 };
let html = await renderTemplate('systems/fvtt-mournblade/templates/roll-dialog-generic.html', rollData);
return new MournbladeRollDialog(actor, rollData, html, options );

View File

@ -543,7 +543,15 @@ export class MournbladeUtility {
}
return false
}
let canCompetenceDouble = function (li) {
let message = game.messages.get(li.attr("data-message-id"))
let rollData = message.getFlag("world", "mournblade-roll")
let actor = game.actors.get(rollData.actorId)
if ( rollData.competence) {
return rollData.competence.data.doublebonus
}
return false
}
options.push(
{
name: "Ajouer +3 (1 point de Bonne Aventure)",
@ -552,6 +560,14 @@ export class MournbladeUtility {
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+3")
}
)
options.push(
{
name: "Ajouer +6 (1 point de Bonne Aventure)",
icon: "<i class='fas fa-user-plus'></i>",
condition: canApply && canApplyBALoyal && canCompetenceDouble,
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+6")
}
)
options.push(
{
name: "Ajouer +1d6 (1 point de Bonne Aventure)",
@ -560,6 +576,14 @@ export class MournbladeUtility {
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+1d6")
}
)
options.push(
{
name: "Ajouer +2d6 (1 point de Bonne Aventure)",
icon: "<i class='fas fa-user-plus'></i>",
condition: canApply && canApplyBAChaotique && canCompetenceDouble,
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+2d6")
}
)
options.push(
{
name: "Relancer le dé (3 points de Bonne Aventure)",
@ -576,6 +600,14 @@ export class MournbladeUtility {
callback: li => MournbladeUtility.applyEclatRoll(li, -1, "+10")
}
)
options.push(
{
name: "Ajouter +20 (1 Point d'Eclat)",
icon: "<i class='fas fa-user-plus'></i>",
condition: canApply && canApplyPELoyal && canCompetenceDouble,
callback: li => MournbladeUtility.applyEclatRoll(li, -1, "+20")
}
)
return options
}

View File

@ -1,11 +1,11 @@
{"name":"Armure de plaques melnibonéenne","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Cette armure orn&eacute;e et fi nement grav&eacute;e est ajust&eacute;e aux mensurations de celui qui la porte. On ne peut en trouver en dehors d&rsquo;Imrryr avant sa chute. L&rsquo;armure couvre tout le corps des pieds &agrave; la t&ecirc;te. Le casque est toujours surmont&eacute; d&rsquo;une sculpture en forme de dragon ou de serpent de mer. Des motifs complexes et imbriqu&eacute;s recouvrent la surface de tous les &eacute;l&eacute;ments de l&rsquo;armure. Apr&egrave;s la chute d&rsquo;Imrryr, quelques pi&egrave;ces d&rsquo;armure melnibon&eacute;ennes apparaissent de temps en temps sur les march&eacute;s mais les armures enti&egrave;res restent rarissimes. Si elle a &eacute;t&eacute; sp&eacute;cialement con&ccedil;ue pour son porteur, une armure de plaques melnibon&eacute;enne n&rsquo;impose pas de p&eacute;nalit&eacute; d&rsquo;encombrement &agrave; 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 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 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&eacute;sert des Larmes ont cr&eacute;&eacute; des armures de bois prot&eacute;geant l&rsquo;abdomen, la poitrine et les bras. Ces armures sont faites &agrave; partir du bois de l&rsquo;arbre Fal, originaire de plateaux pluvieux situ&eacute;s au-del&agrave; du d&eacute;sert. Les barbares d&eacute;corent souvent leurs armures de symboles tribaux et en prot&egrave;gent la surface avec de la laque. Con&ccedil;ue en bois, cette armure a la particularit&eacute; de pouvoir flotter quoiqu&rsquo;un s&eacute;jour prolong&eacute; dans l&rsquo;eau risque de la d&eacute;t&eacute;riorer tr&egrave;s rapidement. Elle n&rsquo;en reste pas moins une protection tr&egrave;s recherch&eacute;e par ceux qui ont &agrave; s&rsquo;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":"Bouclier dinfanterie","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":"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":"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":"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":"Écu dacier","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"}
{"name":"Pavois","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Le pavois se plante dans le sol au d&eacute;but du combat et ne peut normalement plus &ecirc;tre d&eacute;plac&eacute; jusqu&rsquo;&agrave; 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":"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 de plaques melnibonéenne","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Cette armure orn&eacute;e et fi nement grav&eacute;e est ajust&eacute;e aux mensurations de celui qui la porte. On ne peut en trouver en dehors d&rsquo;Imrryr avant sa chute. L&rsquo;armure couvre tout le corps des pieds &agrave; la t&ecirc;te. Le casque est toujours surmont&eacute; d&rsquo;une sculpture en forme de dragon ou de serpent de mer. Des motifs complexes et imbriqu&eacute;s recouvrent la surface de tous les &eacute;l&eacute;ments de l&rsquo;armure. Apr&egrave;s la chute d&rsquo;Imrryr, quelques pi&egrave;ces d&rsquo;armure melnibon&eacute;ennes apparaissent de temps en temps sur les march&eacute;s mais les armures enti&egrave;res restent rarissimes. Si elle a &eacute;t&eacute; sp&eacute;cialement con&ccedil;ue pour son porteur, une armure de plaques melnibon&eacute;enne n&rsquo;impose pas de p&eacute;nalit&eacute; d&rsquo;encombrement &agrave; 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 dinfanterie","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":"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&eacute;sert des Larmes ont cr&eacute;&eacute; des armures de bois prot&eacute;geant l&rsquo;abdomen, la poitrine et les bras. Ces armures sont faites &agrave; partir du bois de l&rsquo;arbre Fal, originaire de plateaux pluvieux situ&eacute;s au-del&agrave; du d&eacute;sert. Les barbares d&eacute;corent souvent leurs armures de symboles tribaux et en prot&egrave;gent la surface avec de la laque. Con&ccedil;ue en bois, cette armure a la particularit&eacute; de pouvoir flotter quoiqu&rsquo;un s&eacute;jour prolong&eacute; dans l&rsquo;eau risque de la d&eacute;t&eacute;riorer tr&egrave;s rapidement. Elle n&rsquo;en reste pas moins une protection tr&egrave;s recherch&eacute;e par ceux qui ont &agrave; s&rsquo;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":"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":"Écu dacier","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"}

View File

@ -58,7 +58,7 @@
font-family: "Charlemagne";
font-size: 0.8rem;
} /* For nav and title */
.window-app input, .foundryvtt-vadentis .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
.window-app input, .fvtt-mournblade .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
font-size: 0.8rem;
}
@ -394,7 +394,7 @@ table {border: 1px solid #7a7971;}
/* Sheet */
.window-app.sheet .window-content .sheet-header{
/*background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
background: url("../assets/ui/pc_sheet_bg.webp")
background: url("../assets/ui/pc_sheet_bg.webp") repeat left top;
/*color: rgba(168, 139, 139, 0.5);*/
}
@ -1225,6 +1225,14 @@ ul, li {
border: 2px ridge #846109;
}
.label-name {
padding-top: 7px;
padding-left: 4px;
margin-left: 4px;
min-width: 5rem;
max-width: 5rem;
}
/*************************************************************/
.competence-name {
padding-top: 7px;

View File

@ -72,6 +72,56 @@
"tags": [
"don"
]
},
{
"type": "Item",
"label": "Origines",
"name": "origines",
"path": "./packs/origines.db",
"system": "fvtt-mournblade",
"tags": [
"originess"
]
},
{
"type": "Item",
"label": "Héritages",
"name": "heritages",
"path": "./packs/heritages.db",
"system": "fvtt-mournblade",
"tags": [
"héritage"
]
},
{
"type": "Item",
"label": "Métiers",
"name": "metiers",
"path": "./packs/metiers.db",
"system": "fvtt-mournblade",
"tags": [
"metier"
]
},
{
"type": "Item",
"label": "Tendances",
"name": "tendances",
"path": "./packs/tendances.db",
"system": "fvtt-mournblade",
"tags": [
"tendance"
]
},
{
"type": "Item",
"label": "Traits chaotiques",
"name": "traits-chaotiques",
"path": "./packs/traits-chaotiques.db",
"system": "fvtt-mournblade",
"tags": [
"traits chaotiques"
]
}
],
"primaryTokenAttribute": "secondary.health",
@ -80,9 +130,9 @@
"styles": [
"styles/simple.css"
],
"templateVersion": 14,
"templateVersion": 16,
"title": "Mournblade",
"url": "",
"version": "0.0.16",
"version": "0.0.20",
"background": "./images/ui/mournblade_welcome.webp"
}

View File

@ -1,6 +1,9 @@
{
"Actor": {
"types": ["personnage", "pnj"],
"types": [
"personnage",
"pnj"
],
"templates": {
"biodata": {
"biodata": {
@ -13,6 +16,7 @@
"sexe": "",
"yeux": "",
"description": "",
"amemultiplier": 2,
"notes": "",
"gmnotes": ""
}
@ -20,31 +24,31 @@
"core": {
"subactors": [],
"attributs": {
"adr":{
"adr": {
"label": "Adresse",
"labelnorm": "adresse",
"abbrev": "adr",
"value": 1
},
"pui":{
"pui": {
"label": "Puissance",
"labelnorm": "puissance",
"abbrev": "pui",
"value": 1
},
"cla":{
"cla": {
"label": "Clairvoyance",
"labelnorm": "clairvoyance",
"abbrev": "cla",
"value": 1
},
"pre":{
"pre": {
"label": "Présence",
"labelnorm": "presence",
"abbrev": "pre",
"value": 0
},
"tre":{
"tre": {
"label": "Trempe",
"labelnorm": "trempe",
"abbrev": "tre",
@ -61,13 +65,14 @@
"eclat": {
"value": 0
},
"sante": {
"sante": {
"base": 0,
"bonus": 0,
"nonletaux": 0,
"letaux": 0,
"sequelles": ""
},
"ame": {
"ame": {
"base": 0,
"value": 0,
"traumatismes": ""
@ -93,11 +98,16 @@
}
},
"personnage": {
"templates": [ "biodata", "core" ]
"templates": [
"biodata",
"core"
]
},
"pnj": {
"templates": [ "npccore" ]
}
"templates": [
"npccore"
]
}
},
"Item": {
"templates": {
@ -105,23 +115,48 @@
"description": ""
}
},
"types": [ "arme", "competence", "protection", "pacte", "traitchaotique", "monnaie", "don", "tendance", "rune", "equipement", "capacite", "origine", "heritage", "metier"],
"types": [
"arme",
"competence",
"protection",
"pacte",
"traitchaotique",
"monnaie",
"don",
"tendance",
"rune",
"equipement",
"capacite",
"origine",
"heritage",
"metier"
],
"origine": {
"templates": [ "base" ]
"templates": [
"base"
]
},
"heritage": {
"templates": [ "base" ]
"templates": [
"base"
]
},
"metier": {
"templates": [ "base" ]
"templates": [
"base"
]
},
"capacite":{
"templates": [ "base" ]
"capacite": {
"templates": [
"base"
]
},
"equipement": {
"rarete": 0,
"prix": 0,
"templates": [ "base" ]
"templates": [
"base"
]
},
"arme": {
"typearme": "",
@ -130,21 +165,26 @@
"bonusmaniementdef": 0,
"degats": "",
"deuxmains": false,
"courte": 0,
"courte": 0,
"moyenne": 0,
"longue": 0,
"tr": 0,
"rarete": 0,
"prix": 0,
"templates": [ "base" ]
"templates": [
"base"
]
},
"competence": {
"niveau": 0,
"attribut1": "",
"attribut2": "",
"attribut3": "",
"doublebonus": false,
"predilections": [],
"templates": [ "base" ]
"templates": [
"base"
]
},
"protection": {
"typeprotection": "",
@ -152,34 +192,48 @@
"degats": "",
"rarete": 0,
"prix": 0,
"templates": [ "base" ]
"templates": [
"base"
]
},
"pacte": {
"allegeance": "",
"templates": [ "base" ]
"templates": [
"base"
]
},
"traitchaotique": {
"templates": [ "base" ]
"templates": [
"base"
]
},
"monnaie": {
"templates": [ "base" ]
"templates": [
"base"
]
},
"don": {
"allegeance": "",
"prerequis": "",
"sacrifice": "",
"templates": [ "base" ]
"templates": [
"base"
]
},
"tendance": {
"allegeance": "",
"templates": [ "base" ]
"templates": [
"base"
]
},
"rune": {
"formule": "",
"seuil": 0,
"prononcee": "",
"tracee": "",
"templates": [ "base" ]
"templates": [
"base"
]
}
}
}
}

View File

@ -88,66 +88,65 @@
<h4 class="item-name-label competence-name">Santé</h4>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="competence-name">Base</label>
<input type="text" class="input-numeric-short" name="data.sante.base"
value="{{data.sante.base}}" data-dtype="Number" />
<label class="label-name">Bonus</label>
<input type="text" class="input-numeric-short" name="data.sante.bonus" value="{{data.sante.bonus}}"
data-dtype="Number" />
<label class="label-name">Total</label>
<label class="label-name">{{data.sante.base}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">Non létaux</label>
<label class="label-name">Non létaux</label>
<input type="text" class="input-numeric-short" name="data.sante.nonletaux"
value="{{data.sante.nonletaux}}" data-dtype="Number" />
</li>
<li class="item flexrow">
<label class="competence-name">Létaux</label>
<input type="text" class="input-numeric-short" name="data.sante.letaux"
value="{{data.sante.letaux}}" data-dtype="Number" />
<label class="label-name">Létaux</label>
<input type="text" class="input-numeric-short" name="data.sante.letaux" value="{{data.sante.letaux}}"
data-dtype="Number" />
</li>
</ul>
<h4 class="item-name-label competence-name">Ame</h4>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="competence-name">Base</label>
<input type="text" class="input-numeric-short" name="data.ame.base"
value="{{data.ame.base}}" data-dtype="Number" />
</li>
<li class="item flexrow">
<label class="competence-name">Courante</label>
<input type="text" class="input-numeric-short" name="data.ame.value"
value="{{data.ame.value}}" data-dtype="Number" />
</li>
<label class="label-name">Base</label>
<input type="text" class="input-numeric-short" name="data.ame.base" value="{{data.ame.base}}"
data-dtype="Number" />
<label class="label-name">Courante</label>
<input type="text" class="input-numeric-short" name="data.ame.value" value="{{data.ame.value}}"
data-dtype="Number" />
</li>
</ul>
<h4 class="item-name-label competence-name">Combat</h4>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="competence-name">Initiative</label>
<label class="competence-name">{{combat.initBase}}</label>
<input type="text" class="input-numeric-short" name="data.combat.initbonus" value="{{data.combat.initbonus}}" data-dtype="Number" />
<label class="competence-name">{{combat.initTotal}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">B. Dégats</label>
<label class="competence-name">+{{combat.bonusDegats}}</label>
<input type="text" class="input-numeric-short"
name="data.combat.bonusdegats" value="{{data.combat.bonusdegats}}" data-dtype="Number" />
<label class="competence-name">+{{combat.bonusDegatsTotal}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">Vitesse</label>
<label class="competence-name">{{combat.vitesseBase}}</label>
<input type="text" class="input-numeric-short"
name="data.combat.vitessebonus" value="{{data.combat.vitessebonus}}" data-dtype="Number" />
<label class="competence-name">{{combat.vitesseTotal}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">Défense</label>
<label class="competence-name">{{combat.defenseBase}}</label>
<input type="text" class="input-numeric-short"
name="data.combat.defensebonus" value="{{data.combat.defensebonus}}" data-dtype="Number" />
<label class="competence-name">{{combat.defenseTotal}}</label>
</li>
</ul>
<li class="item flexrow">
<label class="competence-name">Initiative</label>
<label class="competence-name">{{combat.initBase}}</label>
<input type="text" class="input-numeric-short" name="data.combat.initbonus"
value="{{data.combat.initbonus}}" data-dtype="Number" />
<label class="competence-name">{{combat.initTotal}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">B. Dégats</label>
<label class="competence-name">+{{combat.bonusDegats}}</label>
<input type="text" class="input-numeric-short" name="data.combat.bonusdegats"
value="{{data.combat.bonusdegats}}" data-dtype="Number" />
<label class="competence-name">+{{combat.bonusDegatsTotal}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">Vitesse</label>
<label class="competence-name">{{combat.vitesseBase}}</label>
<input type="text" class="input-numeric-short" name="data.combat.vitessebonus"
value="{{data.combat.vitessebonus}}" data-dtype="Number" />
<label class="competence-name">{{combat.vitesseTotal}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">Défense</label>
<label class="competence-name">{{combat.defenseBase}}</label>
<input type="text" class="input-numeric-short" name="data.combat.defensebonus"
value="{{data.combat.defensebonus}}" data-dtype="Number" />
<label class="competence-name">{{combat.defenseTotal}}</label>
</li>
</ul>
</div>
</div>
@ -218,7 +217,7 @@
{{!-- Dons/Pactes Tab --}}
<div class="tab dons" data-group="primary" data-tab="dons">
<div class="flexrow">
<div class="flexcol">
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
@ -248,6 +247,67 @@
</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">Runes</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Haut parler</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Difficulté</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each runes as |rune key|}}
<li class="item flexrow " data-item-id="{{rune._id}}" data-item-type="rune">
<img class="item-name-img" src="{{rune.img}}" />
<span class="item-name-label competence-name">{{rune.name}}</span>
<span class="item-field-label-short">{{rune.data.formule}}</span>
<span class="item-field-label-short">{{rune.data.seuil}}</span>
<div class="item-filler">&nbsp;</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">Tendances</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Allégeance</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each tendances as |tendance key|}}
<li class="item flexrow " data-item-id="{{tendance._id}}" data-item-type="tendance">
<img class="item-name-img" src="{{tendance.img}}" />
<span class="item-name-label competence-name">{{tendance.name}}</span>
<span class="item-field-label-short">{{tendance.data.allegeance}}</span>
<div class="item-filler">&nbsp;</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>
</div>
@ -311,6 +371,9 @@
<span class="item-name-label-header">
<h3><label class="items-title-text">Protections</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Protection</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
@ -321,6 +384,9 @@
<li class="item flexrow " data-item-id="{{protection._id}}" data-item-type="protection">
<img class="item-name-img" src="{{protection.img}}" />
<span class="item-name-label competence-name">{{protection.name}}</span>
<span class="item-field-label-short arme-defensif"><label
class="arme-defensif">{{protection.data.protection}}</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
@ -367,6 +433,44 @@
<div class="grid grid-3col">
<div>
<ul class="item-list alternate-list">
<li class="item flexrow" data-item-id="{{origine._id}}">
<label class="generic-label">Origine : </label>
<label class="generic-label">{{origine.name}}</label>
<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>
<li class="item flexrow" data-item-id="{{heritage._id}}">
<label class="generic-label">Héritage : </label>
<label class="generic-label">{{heritage.name}}</label>
<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>
<li class="item flexrow" data-item-id="{{metier._id}}">
<label class="generic-label">Métier : </label>
<label class="generic-label">{{metier.name}}</label>
<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>
<li class="flexrow item">
<label class="generic-label">Multiplicateur d'âme</label>
<input type="text" class="" name="data.biodata.amemultiplier" value="{{data.biodata.amemultiplier}}"
data-dtype="Number" />
</li>
</ul>
</div>
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Sexe</label>
<input type="text" class="" name="data.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Age</label>
<input type="text" class="" name="data.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
@ -381,19 +485,7 @@
</li>
</ul>
</div>
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Poids</label>
<input type="text" class="" name="data.biodata.weight" value="{{data.biodata.weight}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Sexe</label>
<input type="text" class="" name="data.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
</li>
</ul>
</div>
<div>
<li class="item flexrow">
<label class="generic-label">Yeux</label>
@ -404,9 +496,20 @@
<input type="text" class="" name="data.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Poids</label>
<input type="text" class="" name="data.biodata.weight" value="{{data.biodata.weight}}"
data-dtype="String" />
</li>
</div>
</div>
<span>
<h3>Description</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</div>
</div>

View File

@ -50,8 +50,12 @@
{{/select}}
</select>
</span>
<span class="flexrow">
<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}}/>
</span>
<span class="flexrow">
<h3>Prédilections</h3>
</span>

View File

@ -14,9 +14,11 @@
<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 data.allegeance}}
<option value="tous">Tous</option>
<option value="chaos">Chaos</option>
<option value="loi">Loi</option>
<option value="betes">Seigneurs de Bêtes</option>
<option value="betes">Seigneurs des Bêtes</option>
<option value="elementaires">Seigneurs Elementaires</option>
{{/select}}
</select>
</span>

View File

@ -14,9 +14,11 @@
<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 data.allegeance}}
<option value="tous">Tous</option>
<option value="chaos">Chaos</option>
<option value="loi">Loi</option>
<option value="betes">Seigneurs de Bêtes</option>
<option value="betes">Seigneurs des Bêtes</option>
<option value="elementaires">Seigneurs Elementaires</option>
{{/select}}
</select>
</span>