diff --git a/modules/mournblade-actor-sheet.js b/modules/mournblade-actor-sheet.js index 82ce5dc..3345c97 100644 --- a/modules/mournblade-actor-sheet.js +++ b/modules/mournblade-actor-sheet.js @@ -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, diff --git a/modules/mournblade-actor.js b/modules/mournblade-actor.js index 0066869..8401a24 100644 --- a/modules/mournblade-actor.js +++ b/modules/mournblade-actor.js @@ -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) diff --git a/modules/mournblade-roll-dialog.js b/modules/mournblade-roll-dialog.js index da4f9e0..1264a20 100644 --- a/modules/mournblade-roll-dialog.js +++ b/modules/mournblade-roll-dialog.js @@ -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 ); diff --git a/modules/mournblade-utility.js b/modules/mournblade-utility.js index 3c53ef4..a010606 100644 --- a/modules/mournblade-utility.js +++ b/modules/mournblade-utility.js @@ -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: "", + 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: "", + 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: "", + condition: canApply && canApplyPELoyal && canCompetenceDouble, + callback: li => MournbladeUtility.applyEclatRoll(li, -1, "+20") + } + ) return options } diff --git a/packs/protection.db b/packs/protection.db index b61c968..a73d2c5 100644 --- a/packs/protection.db +++ b/packs/protection.db @@ -1,11 +1,11 @@ -{"name":"Armure de plaques melnibonéenne","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"
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.
","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":"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.
","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 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":"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 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"} {"name":"Pavois","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"Le pavois se plante dans le sol au début du combat et ne peut normalement plus être déplacé jusqu’à son issue.
","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":"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.
","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":"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":"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.
","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 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"} diff --git a/styles/simple.css b/styles/simple.css index e540a0d..bb686f8 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -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; diff --git a/system.json b/system.json index 6afd6c2..a7d5c29 100644 --- a/system.json +++ b/system.json @@ -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" } \ No newline at end of file diff --git a/template.json b/template.json index d4a1e46..481fc06 100644 --- a/template.json +++ b/template.json @@ -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" + ] } } -} +} \ No newline at end of file diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 65dcc03..81ed77a 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -88,66 +88,65 @@