From aeb77398799627c086f92a90cdfd7a79dcb6150b Mon Sep 17 00:00:00 2001 From: sladecraven Date: Sun, 23 Jan 2022 09:25:09 +0100 Subject: [PATCH] Add spells and alchemy --- css/bol.css | 1 + lang/en.json | 35 ++++++ lang/fr.json | 35 ++++++ module/actor/actor-sheet.js | 57 ++++++--- module/actor/actor.js | 66 ++++++++++ module/controllers/bol-rolls.js | 99 +++++++++++++-- module/item/item-sheet.js | 24 ++-- module/system/bol-utility.js | 11 ++ module/system/config.js | 15 +++ module/system/helpers.js | 13 +- module/system/templates.js | 4 + packs/careers.db | 6 +- system.json | 6 +- template.json | 7 ++ templates/actor/actor-sheet.hbs | 10 ++ .../actor/parts/tabs/actor-spellalchemy.hbs | 65 ++++++++++ templates/actor/parts/tabs/actor-stats.hbs | 15 +++ templates/chat/rolls/alchemy-roll-card.hbs | 11 ++ templates/chat/rolls/damage-roll-card.hbs | 2 +- templates/chat/rolls/default-roll-card.hbs | 6 + templates/chat/rolls/spell-roll-card.hbs | 4 + templates/dialogs/alchemy-roll-dialog.hbs | 38 ++++++ templates/dialogs/mod-roll-part.hbs | 3 + templates/dialogs/spell-roll-dialog.hbs | 66 ++++++++++ .../properties/feature/career-properties.hbs | 12 ++ .../item/parts/properties/item-properties.hbs | 3 + .../properties/item/alchemy-properties.hbs | 39 ++++++ .../properties/item/spell-properties.hbs | 114 ++++++++++++++---- 28 files changed, 696 insertions(+), 71 deletions(-) create mode 100644 templates/actor/parts/tabs/actor-spellalchemy.hbs create mode 100644 templates/chat/rolls/alchemy-roll-card.hbs create mode 100644 templates/dialogs/alchemy-roll-dialog.hbs create mode 100644 templates/dialogs/spell-roll-dialog.hbs create mode 100644 templates/item/parts/properties/item/alchemy-properties.hbs diff --git a/css/bol.css b/css/bol.css index 740771e..1306fc2 100644 --- a/css/bol.css +++ b/css/bol.css @@ -510,6 +510,7 @@ a:hover { .items-list .item .item-control { color: #4b4a44; } + /* ----------------------------------------- */ /* Premade colors */ /* ----------------------------------------- */ diff --git a/lang/en.json b/lang/en.json index 75fb86a..5d1b316 100644 --- a/lang/en.json +++ b/lang/en.json @@ -22,6 +22,7 @@ "BOL.resources.creation": "Création", "BOL.resources.power": "Pouvoir", "BOL.resources.villainy": "Vilénie", + "BOL.resources.alchemypoints": "Alchemy Points", "BOL.traits.xp": "Expérience", "BOL.ui.tab.stats": "Attributs", @@ -31,6 +32,7 @@ "BOL.ui.tab.equipment": "Equipement", "BOL.ui.tab.description": "Description", "BOL.ui.tab.details": "Details", + "BOL.ui.tab.spellalchemy": "Spells&Alchemy", "BOL.ui.properties": "Propriétés", "BOL.ui.description": "Description", @@ -58,6 +60,7 @@ "BOL.ui.weaponProperties" : "Propiétés offensives", "BOL.ui.protectionProperties" : "Protection", "BOL.ui.magicalProperties" : "Propriétés magiques", + "BOL.ui.alchemyProperties": "Alchemy properties", "BOL.ui.armor" : "Armure", "BOL.ui.reach" : "Allonge", "BOL.ui.weapon" : "Arme", @@ -109,6 +112,27 @@ "BOL.ui.spellkeep": "Maintain", "BOL.ui.concentrate": "Concentrate", "BOL.ui.registerInit": "Register Init.", + "BOL.ui.isSorcerer": "Is Sorcerer ?", + "BOL.ui.isAlchemist": "Is Alchemist ?", + "BOL.ui.isPriest": "Is Priest/Druid ?", + "BOL.ui.circle": "Circle", + "BOL.ui.spells": "Spells", + "BOL.ui.focusSpell": "Cast a spell", + "BOL.ui.sorcererRank" : "Sorcerer Rank", + "BOL.ui.alchemistRank": "Alchemist Rank", + "BOL.ui.mandatoryconditions": "Mandatory conditions", + "BOL.ui.optionnalconditions": "Optionnal conditions", + "BOL.ui.ppcost": "Power Points cost", + "BOL.ui.ppAvailable": "Available Power Points", + "BOL.ui.pccost": "Creation Points cost", + "BOL.ui.pcnow": "Actual Creation Points", + "BOL.ui.alchemyType": "Type", + "BOL.ui.alchemy": "Alchemy", + "BOL.ui.makeAlchemy": "Make Alchemy", + "BOL.ui.alchemyCostTotal": "Alchemy Points Total Cost", + "BOL.ui.alchemyInvest": "Invest Alchemy Points", + "BOL.ui.alchemyCurrent": "Current Alchemy Points in Object", + "BOL.ui.advance": "Status", "BOL.featureCategory.origins": "Origines", "BOL.featureCategory.races": "Races", @@ -131,6 +155,7 @@ "BOL.itemCategory.vehicle": "Monture/Véhicule", "BOL.itemCategory.other": "Autre", "BOL.itemCategory.capacity" : "Capacité", + "BOL.itemCategory.alchemy": "Alchemy", "BOL.combatCategory.protections": "Protections", "BOL.combatCategory.shields": "Boucliers", @@ -154,6 +179,16 @@ "BOL.protectionCategory.helm": "Casque", "BOL.protectionCategory.other": "Autre", + "BOL.spellItem.charm": "Charm", + "BOL.spellItem.circle1": "First Circle", + "BOL.spellItem.circle2": "Second Circle", + "BOL.spellItem.circle3": "Third Circle", + + "BOL.alchemyItem.common": "Common", + "BOL.alchemyItem.scarce": "Scarce", + "BOL.alchemyItem.legend": "Legendary", + "BOL.alchemyItem.mythic": "Mythic", + "BOL.weaponCategory.melee": "Arme de mêlée", "BOL.weaponCategory.ranged": "Arme de tir", "BOL.weaponCategory.other": "Autre", diff --git a/lang/fr.json b/lang/fr.json index 97eb010..161070b 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -22,6 +22,7 @@ "BOL.resources.creation": "Création", "BOL.resources.power": "Pouvoir", "BOL.resources.villainy": "Vilénie", + "BOL.resources.alchemypoints": "Points de Creation", "BOL.traits.xp": "Expérience", "BOL.ui.tab.stats": "Attributs", @@ -31,6 +32,7 @@ "BOL.ui.tab.equipment": "Equipement", "BOL.ui.tab.description": "Description", "BOL.ui.tab.details": "Details", + "BOL.ui.tab.spellalchemy": "Sorts&Alchimie", "BOL.ui.properties": "Propriétés", "BOL.ui.description": "Description", @@ -59,6 +61,7 @@ "BOL.ui.protectionProperties" : "Protection", "BOL.ui.magicalProperties" : "Propriétés magiques", "BOL.ui.capacityProperties" : "Propriétés de capacité", + "BOL.ui.alchemyProperties": "Propriétés des Préparations Alchimiques", "BOL.ui.armor" : "Armure", "BOL.ui.reach" : "Allonge", "BOL.ui.weapon" : "Arme", @@ -110,6 +113,27 @@ "BOL.ui.spellkeep": "Prolongation", "BOL.ui.concentrate": "Concentration", "BOL.ui.registerInit": "Enregistrer comme Init. de combat", + "BOL.ui.isSorcerer": "Carrière de Sorcier ?", + "BOL.ui.isAlchemist": "Carrière d'Alchimiste ?", + "BOL.ui.isPriest": "Carrière de Prêtre/Druide ?", + "BOL.ui.circle": "Cercle", + "BOL.ui.spells": "Sorts", + "BOL.ui.focusSpell": "Lance un sort", + "BOL.ui.sorcererRank" : "Rang du Sorcier", + "BOL.ui.alchemistRank": "Rang de l'Alchimiste", + "BOL.ui.mandatoryconditions": "Conditions obligatoires", + "BOL.ui.optionnalconditions": "Conditions optionnelles", + "BOL.ui.ppcost": "Cout en Points de Pouvoir", + "BOL.ui.ppAvailable": "Points de Pouvoir actuels", + "BOL.ui.pccost": "Coût en Points de Création", + "BOL.ui.pcnow": "Points de Création actuels", + "BOL.ui.alchemyType": "Type", + "BOL.ui.alchemy": "Préparations Alchimiques", + "BOL.ui.makeAlchemy": "Réaliser une Préparation Alchmique", + "BOL.ui.alchemyCostTotal": "Points de Création nécessaires pour la Préparation", + "BOL.ui.alchemyInvest": "Points de Création investis", + "BOL.ui.alchemyCurrent": "Points de Création actuel dans la Préparation", + "BOL.ui.advance": "Avancement", "BOL.featureCategory.origins": "Origines", "BOL.featureCategory.races": "Races", @@ -132,6 +156,7 @@ "BOL.itemCategory.vehicle": "Monture/Véhicule", "BOL.itemCategory.other": "Autre", "BOL.itemCategory.capacity" : "Capacité", + "BOL.itemCategory.alchemy": "Préparation Alchimique", "BOL.combatCategory.protections": "Protections", "BOL.combatCategory.shields": "Boucliers", @@ -155,6 +180,16 @@ "BOL.protectionCategory.helm": "Casque", "BOL.protectionCategory.other": "Autre", + "BOL.spellItem.charm": "Charme", + "BOL.spellItem.circle1": "Premier Cercle", + "BOL.spellItem.circle2": "Second Cercle", + "BOL.spellItem.circle3": "Troisième Cercle", + + "BOL.alchemyItem.common": "Courante", + "BOL.alchemyItem.scarce": "Rare", + "BOL.alchemyItem.legend": "Légendaire", + "BOL.alchemyItem.mythic": "Mythique", + "BOL.weaponCategory.melee": "Arme de mêlée", "BOL.weaponCategory.ranged": "Arme de tir", "BOL.weaponCategory.other": "Autre", diff --git a/module/actor/actor-sheet.js b/module/actor/actor-sheet.js index b062461..da0d17c 100644 --- a/module/actor/actor-sheet.js +++ b/module/actor/actor-sheet.js @@ -38,6 +38,11 @@ export class BoLActorSheet extends ActorSheet { // Equip/Unequip item html.find('.item-equip').click(this._onToggleEquip.bind(this)); + html.find(".inc-dec-btns-alchemy").click((ev) => { + const li = $(ev.currentTarget).parents(".item"); + this.actor.spendAlchemyPoint( li.data("itemId"), 1) + }) + // Incr./Decr. career ranks html.find(".inc-dec-btns").click((ev) => { const li = $(ev.currentTarget).parents(".item"); @@ -65,10 +70,6 @@ export class BoLActorSheet extends ActorSheet { item.update(update); } } - // const input = html.find("#" + type); - // let value = parseInt(input.val(), 10) || 0; - // value += operator === "plus" ? 1 : -1; - // input.val(value > 0 ? value : 0); }); @@ -110,26 +111,36 @@ export class BoLActorSheet extends ActorSheet { const data = super.getData(options); const actorData = duplicate(data.data); let formData = duplicate(data) - formData.config = game.bol.config; - formData.data = actorData.data; - formData.details = this.actor.details; - formData.attributes = this.actor.attributes; - formData.aptitudes = this.actor.aptitudes; - formData.resources = this.actor.getResourcesFromType(); - formData.equipment = this.actor.equipment; - formData.weapons = this.actor.weapons; - formData.protections = this.actor.protections; - formData.containers = this.actor.containers; - formData.treasure = this.actor.treasure; + + formData.config = game.bol.config + formData.data = actorData.data + formData.details = this.actor.details + formData.attributes = this.actor.attributes + formData.aptitudes = this.actor.aptitudes + formData.resources = this.actor.getResourcesFromType() + formData.equipment = this.actor.equipment + formData.weapons = this.actor.weapons + formData.protections = this.actor.protections + formData.spells = this.actor.spells + formData.alchemy = this.actor.alchemy + formData.containers = this.actor.containers + formData.treasure = this.actor.treasure + formData.treasure = this.actor.treasure + formData.treasure = this.actor.alchemyrecipe formData.vehicles = this.actor.vehicles; formData.ammos = this.actor.ammos; formData.misc = this.actor.misc; formData.combat = this.actor.buildCombat(); - formData.features = this.actor.buildFeatures(); - formData.isGM = game.user.isGM; - formData.options= this.options, - formData.owner= this.document.isOwner, - formData.editScore= this.options.editScore, + formData.features = this.actor.buildFeatures() + formData.isGM = game.user.isGM + formData.options= this.options + formData.owner= this.document.isOwner + formData.editScore= this.options.editScore + + formData.isSorcerer = this.actor.isSorcerer() + formData.isAlchemist = this.actor.isAlchemist() + formData.isPriest = this.actor.isPriest() + formData.isGM= game.user.isGM console.log("ACTORDATA", formData); @@ -193,6 +204,12 @@ export class BoLActorSheet extends ActorSheet { case "weapon": BoLRoll.weaponCheck(this.actor, actorData, dataset, event); break; + case "spell": + BoLRoll.spellCheck(this.actor, actorData, dataset, event); + break; + case "alchemy": + BoLRoll.alchemyCheck(this.actor, actorData, dataset, event); + break; case "protection": this.actor.rollProtection(li.data("item-id")) break; diff --git a/module/actor/actor.js b/module/actor/actor.js index 2e4b8e5..8c0828b 100644 --- a/module/actor/actor.js +++ b/module/actor/actor.js @@ -109,6 +109,12 @@ export class BoLActor extends Actor { get protections() { return this.armors.concat(this.helms).concat(this.shields) } + get spells() { + return this.itemData.filter(i => i.type === "item" && i.data.category === "spell"); + } + get alchemy() { + return this.itemData.filter(i => i.type === "item" && i.data.category === "alchemy"); + } get melee() { return this.weapons.filter(i => i.data.properties.melee === true); } @@ -136,6 +142,66 @@ export class BoLActor extends Actor { return this.itemData.filter(i => i.type === "item" && i.data.category === "equipment" && (i.data.subtype === "other" ||i.data.subtype === "container" ||i.data.subtype === "scroll" || i.data.subtype === "jewel")); } + isSorcerer( ) { + if ( this.careers.find( item => item.data.properties.sorcerer == true) ) + return true + return false + } + isAlchemist( ) { + if ( this.careers.find( item => item.data.properties.alchemist == true) ) + return true + return false + } + isPriest( ) { + if ( this.careers.find( item => item.data.properties.priest == true) ) + return true + return false + } + + spendPowerPoint( ppCost ) { + let newPP = this.data.data.resources.power.value - ppCost + newPP = (newPP<0) ? 0 : newPP + this.update( {'data.resources.power.value': newPP}) + } + + resetAlchemyStatus( alchemyId ) { + let alchemy = this.data.items.get( alchemyId) + if (alchemy) { + this.updateEmbeddedDocuments('Item', [{_id: alchemy.id, 'data.properties.pccurrent': 0}] ) + } + } + + async spendAlchemyPoint( alchemyId, pcCost) { + let alchemy = this.data.items.get( alchemyId) + if (alchemy) { + pcCost = Number(pcCost)?? 0 + if ( this.data.data.resources.alchemypoints.value >= pcCost) { + let newPC = this.data.data.resources.alchemypoints.value - pcCost + newPC = (newPC<0) ? 0 : newPC + this.update( {'data.resources.alchemypoints.value': newPC} ) + newPC = alchemy.data.data.properties.pccurrent + pcCost + await this.updateEmbeddedDocuments('Item', [{_id: alchemy.id, 'data.properties.pccurrent': newPC}] ) + } else { + ui.notifications.warn("Plus assez de Points de Création !") + } + } + } + + getAlchemistBonus() { + let sorcerer = this.careers.find( item => item.data.properties.alchemist == true) + if (sorcerer) { + return sorcerer.data.rank + } + return 0; + } + getSorcererBonus() { + let sorcerer = this.careers.find( item => item.data.properties.sorcerer == true) + if (sorcerer) { + return sorcerer.data.rank + } + return 0; + } + heroReroll( ) { if (this.type == 'character') { return this.data.data.resources.hero.value > 0; diff --git a/module/controllers/bol-rolls.js b/module/controllers/bol-rolls.js index 36d6760..a38bc1a 100644 --- a/module/controllers/bol-rolls.js +++ b/module/controllers/bol-rolls.js @@ -63,8 +63,6 @@ export class BoLRoll { } static weaponCheck(actor, actorData, dataset, event) { - // const elt = $(event.currentTarget)[0]; - // let key = elt.attributes["data-rolling"].value; let target = BoLUtility.getTarget() const li = $(event.currentTarget).parents(".item"); const weapon = actor.items.get(li.data("item-id")); @@ -85,13 +83,83 @@ export class BoLRoll { label: (weapon.name) ? weapon.name : game.i18n.localize('BOL.ui.noWeaponName'), description: actor.name + " - " + game.i18n.localize('BOL.ui.weaponAttack'), adv: "2", - } console.debug("WEAPON!", attackDef, weaponData); return this.displayRollDialog(attackDef); } + static alchemyCheck( actor, actorData, dataset, event) { + const li = $(event.currentTarget).parents(".item"); + const alchemy = actor.items.get(li.data("item-id")); + if (!alchemy) { + ui.notifications.warn("Unable to find Alchemy !"); + return; + } + let alchemyData = alchemy.data.data + if (alchemyData.properties.pccurrent < alchemyData.properties.pccost) { + ui.notifications.warn("Pas assez de Points de Cration investis dans la Préparation !") + return + } + + let alchemyDef = { + mode: "alchemy", + actor: actor, + actorData: actorData, + alchemy: alchemy, + attribute: actor.data.data.attributes.mind, + careerBonus: actor.getAlchemistBonus(), + pcCost: alchemyData.properties.pccost, + pcCostCurrent: alchemyData.properties.pccurrent, + mod: alchemyData.properties.difficulty, + label: alchemy.name, + adv: "2", + description: actor.name + " - " + game.i18n.localize('BOL.ui.makeAlchemy'), + } + console.log("ALCHEMY!", alchemyDef); + return this.displayRollDialog(alchemyDef); + } + + + static spellCheck( actor, actorData, dataset, event) { + if (actor.data.data.resources.power.value <= 0) { + ui.notifications.warn("Plus assez de points de Pouvoir !") + return + } + const li = $(event.currentTarget).parents(".item"); + const spell = actor.items.get(li.data("item-id")); + if (!spell) { + ui.notifications.warn("Unable to find spell !"); + return; + } + let spellData = spell.data.data; + let spellDef = { + mode: "spell", + actor: actor, + actorData: actorData, + spell: spell, + attribute: actor.data.data.attributes.mind, + ppCurrent: actor.data.data.resources.power.value, + careerBonus: actor.getSorcererBonus(), + ppCost: spell.data.data.properties.ppcost, + mod: spellData.properties.difficulty, + label: spell.name, + adv: "2", + description: actor.name + " - " + game.i18n.localize('BOL.ui.focusSpell'), + } + console.log("SPELL!", spellDef); + return this.displayRollDialog(spellDef); + } + /* -------------------------------------------- */ + static rollDialogListener(html) { + + html.find('#optcond').change((event) => { // Dynamic change of PP cost of spell + let pp = BoLUtility.computeSpellCost(this.rollData.spell, event.currentTarget.selectedOptions.length) + $('#ppcost').html(pp) + this.rollData.ppCost = pp + }); + } + /* ROLL DIALOGS */ /* -------------------------------------------- */ static async displayRollDialog(rollData, onEnter = "submit") { @@ -101,8 +169,10 @@ export class BoLRoll { rollData.boons = rollData.actorData.features.boons rollData.flaws = rollData.actorData.features.flaws rollData.defence = 0 - rollData.mod = 0 + rollData.careerBonus = rollData.careerBonus?? 0 + rollData.mod = rollData.mod?? 0 rollData.id = randomID(16) + this.rollData = rollData // Weapon mode specific management rollData.weaponModifier = 0 @@ -128,6 +198,7 @@ export class BoLRoll { title: rollData.label, content: rollOptionContent, rollData: rollData, + render: html => this.rollDialogListener(html), buttons: { cancel: { icon: '', @@ -139,6 +210,11 @@ export class BoLRoll { icon: '', label: game.i18n.localize("BOL.ui.submit"), callback: (html) => { + if (rollData.mode == 'spell' && rollData.ppCurrent < rollData.ppCost) { // Check PP available + ui.notifications.warn("Pas assez de Points de Pouvoir !") + return + } + rollData.attrKey = html.find('#attr').val(); rollData.aptKey = html.find('#apt').val(); rollData.adv = $("input[name='adv']:checked").val() || "2"; @@ -156,14 +232,14 @@ export class BoLRoll { } } - const isMalus = rollData.adv.includes('M'); + const isMalus = rollData.adv.includes('M') let dicePool = __adv2dice[rollData.adv] dicePool += (rollData.attackBonusDice) ? 1 : 0 - //// const dicePool = (isMalus) ? 2 - parseInt(rollData.adv) : 2 + parseInt(rollData.adv); + const attrValue = (rollData.attrKey) && eval(`rollData.actor.data.data.attributes.${rollData.attrKey}.value`) || 0; const aptValue = (rollData.aptKey) && eval(`rollData.actor.data.data.aptitudes.${rollData.aptKey}.value`) || 0 - const modifiers = rollData.weaponModifier + parseInt(attrValue) + parseInt(aptValue) + parseInt(rollData.mod) + parseInt(rollData.career) - rollData.defence - shieldMalus; + const modifiers = rollData.careerBonus + rollData.weaponModifier + parseInt(attrValue) + parseInt(aptValue) + parseInt(rollData.mod) + parseInt(rollData.career) - rollData.defence - shieldMalus; const formula = (isMalus) ? dicePool + "d6kl2 + " + modifiers : dicePool + "d6kh2 + " + modifiers; rollData.formula = formula; rollData.modifiers = modifiers @@ -176,6 +252,7 @@ export class BoLRoll { default: onEnter, close: () => { } }, this.options()); + return d.render(true); } } @@ -219,10 +296,14 @@ export class BoLDefaultRoll { if (this.rollData.registerInit) { this.rollData.actor.registerInit(r.total, this.rollData.isCritical); } + if (this.rollData.isSuccess && this.rollData.mode == "spell") { // PP cost management + this.rollData.actor.spendPowerPoint(this.rollData.ppCost) + } + if (this.rollData.mode == "alchemy") { // PP cost management + this.rollData.actor.resetAlchemyStatus(this.rollData.alchemy.id) + } - console.log("ROLL", this.rollData) await this.sendChatMessage() - } async sendChatMessage() { diff --git a/module/item/item-sheet.js b/module/item/item-sheet.js index 899eb82..f223455 100644 --- a/module/item/item-sheet.js +++ b/module/item/item-sheet.js @@ -17,18 +17,7 @@ export class BoLItemSheet extends ItemSheet { }); } - // /** @override */ - // get template() { - // const path = "systems/bol/templates/item"; - // // Return a single sheet for all item types. - // //return `${path}/item-sheet.hbs`; - // // Alternatively, you could use the following return statement to do a - // // unique item sheet by type, like `weapon-sheet.html`. - // return `${path}/item-${this.item.data.type}-sheet.hbs`; - // } - /* -------------------------------------------- */ - /** @override */ getData(options) { const data = super.getData(options); @@ -39,7 +28,18 @@ export class BoLItemSheet extends ItemSheet { data.category = itemData.category; data.itemProperties = this.item.itemProperties; data.isGM = game.user.isGM; - console.debug("ITEMDATA", data); + + // Dynamic spell fix + if (itemData.type == "item" && itemData.data.category == 'spell') { + for (let i=0; i<4; i++) { + itemData.data.properties.mandatoryconditions[i] = itemData.data.properties.mandatoryconditions[i]?? "" + } + for (let i=0; i<8; i++) { + itemData.data.properties.optionnalconditions[i] = itemData.data.properties.optionnalconditions[i]?? "" + } + } + + console.log("ITEMDATA", data); return data; } diff --git a/module/system/bol-utility.js b/module/system/bol-utility.js index 3cef4ad..809c0b1 100644 --- a/module/system/bol-utility.js +++ b/module/system/bol-utility.js @@ -1,5 +1,8 @@ import { BoLDefaultRoll } from "../controllers/bol-rolls.js"; +// Spell circle to min PP cost +const __circle2minpp = { 0: 0, 1: 2,2: 6, 3: 11} + export class BoLUtility { @@ -375,6 +378,14 @@ export class BoLUtility { if (sockmsg.name == "msg_damage_handling") { BoLUtility.processDamageHandling(sockmsg.data.event, sockmsg.data.attackId, sockmsg.data.defenseMode) } + } + + /* -------------------------------------------- */ + static computeSpellCost( spell, nbOptCond= 0) { + let pp = spell.data.data.properties.ppcost + let minpp = __circle2minpp[spell.data.data.properties.circle] + pp = (pp-nbOptCondMendiant (vagabond/clochard)

Les vagabonds errent d’un lieu à l’autre avec pour seul objectif de réussir à survivre. Ils peuvent à l’occasion travailler ici ou là, vendre quelques babioles sorties de leur besace, ou simplement mendier dans les rues quand les temps sont vraiment durs. En dernier recours, certains s’adonnent à de petits larcins pour se remplir le ventre.

Attributs

aucun attribut n’ est plus important que les autres pour un mendiant. Être affligé d’une difformité, d’un handicap, ou d’une maladie repoussante (ou simplement le simuler) peut cependant se révéler utile quand il s’agit de faire appel à la compassion des passants.

À l’aventure

la vie d’un vagabond implique des rencontres en tous genres sur les routes, ce qui peut mener à l’aventure sans même la rechercher.

Combat

en général, un mendiant n’a rien d’un combattant. Cette carrière ne pourra donc se révéler utile dans le cadre d’un combat, sauf quand le personnage fait de son mieux pour ne pas être remarqué.

Idées d’Avantages

amis dans la pègre, discret, doigts de fée, gamin des rues.

Idées de Désavantages

addiction, borgne/ oreille coupée, chétif, gars de la ville, illettré, indigne de confiance, malédiction de Morgazzon, manchot/ unijambiste, maudit, non-combattant, signe distinctif, soiffard, souffreteux.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"4S4xAfMXGnuU0O1a"} {"name":"Mercenaire (brigand/guerrier)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Mercenaire (brigand/guerrier)

Les mercenaires sont des guerriers qui louent leurs services au plus offrant. Certains s’assemblent en troupes sous l’autorité d’un chef respecté, tandis que d’autres voyagent seuls ou en petits groupes à la recherche d’un employeur.

Ces petites bandes se tournent fréquemment vers le brigandage quand elles se retrouvent trop longtemps sans engagement. Toutes les cités de Lémurie ont déjà fait appel à des mercenaires pour mener leurs guerres et la profession a encore de beaux jours devant elle. Rudes guerriers, bons cavaliers pour certains, les mercenaires savent se montrer intimidants, entretenir leurs armes et leur équipement et se débrouiller pour vivre à la dure en pleine nature. En ville, ils fréquentent assidûment tavernes et tripots.

Attributs

pour s’adonner au métier des armes, les mercenaires doivent posséder de bonnes prédispositions en vigueur et en agilité.

À l’aventure

par nature, les mercenaires sont des vagabonds qui parcourent la Lémurie en quête d’un nouvel engagement. Même en temps de paix, ils trouvent à s’employer pour escorter les caravanes marchandes, participer à des expéditions de chasseurs de trésor, ou servir de gardes du corps pour la noblesse.

Combat

les mercenaires sont connus pour se battre d’autant mieux que la paie est bonne, et pour mettre peu de cœur à l’ouvrage (voire tourner casaque) quand ils sont mal payés ou abusés. Au combat, un mercenaire pourra recevoir un bonus de carrière ponctuel si sa paie est particulièrement satisfaisante.

Idées d’Avantages

arme favorite, bagarreur, baudrier de guerre, combat à l’aveugle, cri de guerre, dur à cuire, fêtard, inspirateur, né en selle, récupération rapide, vigilant.

Idées de Désavantages

cupide, fanfaron, impétueux, lubrique.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"4lfxQTvwbylvLKPn"} {"name":"Chasseur (éclaireur/pisteur)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Chasseur (éclaireur/pisteur)

Le chasseur est passé maître dans l’art de pister et de traquer les animaux. Une fois qu’il a localisé sa proie, il utilise des techniques d’approche discrète, la pose de pièges, ou son habileté à l’arc pour l’abattre. Les chasseurs sont parfaitement à leur aise dans la nature sauvage et sont capables d’y survivre sur de longues périodes, pour ne retourner vers les zones civilisées qu’une fois qu’ils ont réuni suffisamment de fourrures et de peaux à vendre, ou quand la compagnie de leurs semblables commence à leur manquer.

Attributs

l’agilité est importante pour un chasseur, tout comme la vigueur et l’esprit, encore qu’à un moindre degré.

À l’aventure

la traque de bêtes féroces est déjà une aventure en soi. Mais les chasseurs connaissent très bien les territoires sur lesquels ils opèrent et il leur arrive de découvrir au gré de leurs pérégrinations d’anciennes pistes abandonnées, de vieilles ruines ou des lieux étranges. Pour cette raison, les chasseurs se voient fréquemment proposer de servir de guide à des groupes d’aventuriers.

Combat

un chasseur pourra recevoir un bonus de carrière ponctuel s’il affronte une créature sauvage qu’il connaît bien. En revanche, cette carrière est rarement utile contre des adversaires humains.

Idées d’Avantages

ami des bêtes, discret, fils des plaines, montagnard, odorat développé, ouïe fine, outillage, pisteur des marais, renard du désert, vigilant, vision nocturne, vue perçante.

Idées de Désavantages

borgne/oreille coupée, manchot/unijambiste, marin d’eau douce, taciturne.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"5xCukhj1IVhfN9HK"} -{"name":"Sorcier (magicien/enchanteur)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Sorcier (magicien/enchanteur)

Les sorciers sont à la fois craints et respectés. Personne ne les fréquente volontiers à moins d’une absolue nécessité car, dans leur grande majorité, ce sont des êtres immoraux et déséquilibrés, quand ils ne sont pas totalement déments et malfaisants. Les sorciers vivent généralement seuls, uniquement entourés de quelques serviteurs ou d’un apprenti. Ils s’adonnent à l’étude de sciences ésotériques comme l’astrologie, l’astronomie et la démonologie, recherchent fiévreusement d’antiques manuscrits interdits renfermant un savoir occulte, quand ils ne concluent pas des pactes avec les démons afin d’apprendre des mots de pouvoir capables de façonner le tissu de la réalité.

Beaucoup sont originaires de Zalut, la cité des magiciens, mais on trouve des sorciers de moindre envergure dans presque toutes les grandes cités de Lémurie (à exception de Tyrus, où ils sont proscrits). Vous trouverez davantage d’informations sur les sorciers au chapitre 6.

Attributs

les sorciers ont besoin d’un esprit fort, à la fois pour mener leurs études et pour être en mesure de lancer des sorts puissants.

À l’aventure

les sorciers ne font pas de bons aventuriers, préférant déléguer ce genre de choses à leurs sbires et à leurs serviteurs. Mais il arrive parfois qu’ils quittent leur antre pour prendre part eux-mêmes à une expédition dont ils espèrent quelque gain mystique d’importance.

Combat

rares sont les circonstances où le fait d’être sorcier offre un avantage durant un combat utilisant des armes ordinaires. Mais cela importe peu, car les sorciers talentueux n’ont pas besoin de savoir manier une épée pour venir à bout d’un adversaire.

Carrière dangereuse

la sorcellerie est un moyen rapide d’obtenir du pouvoir, mais elle a un prix. Pour chaque rang de cette carrière au-delà du premier, vous devez choisir un désavantage supplémentaire (cf. chapitre 5). Cela s’applique également si vous choisissez d’augmenter votre rang de sorcier plus tard dans le jeu, par l’utilisation de points d’expérience.

Idées d’Avantages

bibliothèque savante, érudit, magie des Rois-Sorciers, perspicace, pouvoir du Néant, résistant à la magie, savant.

Idées de Désavantages

addiction, arrogant, distrait, indigne de confiance, inquiétant, malédiction de Morgazzon, mauvaise réputation, non-combattant, obsession, phobie, signe distinctif, souffreteux.

Langues

les sorciers doivent apprendre le démonique s’ils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de l’antique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent d’être apprises séparément.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"6mCGhwDGaRg0qXfQ"} +{"_id":"6mCGhwDGaRg0qXfQ","name":"Sorcier (magicien/enchanteur)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"category":null,"subtype":"career","description":"

Sorcier (magicien/enchanteur)

Les sorciers sont à la fois craints et respectés. Personne ne les fréquente volontiers à moins d’une absolue nécessité car, dans leur grande majorité, ce sont des êtres immoraux et déséquilibrés, quand ils ne sont pas totalement déments et malfaisants. Les sorciers vivent généralement seuls, uniquement entourés de quelques serviteurs ou d’un apprenti. Ils s’adonnent à l’étude de sciences ésotériques comme l’astrologie, l’astronomie et la démonologie, recherchent fiévreusement d’antiques manuscrits interdits renfermant un savoir occulte, quand ils ne concluent pas des pactes avec les démons afin d’apprendre des mots de pouvoir capables de façonner le tissu de la réalité.

Beaucoup sont originaires de Zalut, la cité des magiciens, mais on trouve des sorciers de moindre envergure dans presque toutes les grandes cités de Lémurie (à exception de Tyrus, où ils sont proscrits). Vous trouverez davantage d’informations sur les sorciers au chapitre 6.

Attributs

les sorciers ont besoin d’un esprit fort, à la fois pour mener leurs études et pour être en mesure de lancer des sorts puissants.

À l’aventure

les sorciers ne font pas de bons aventuriers, préférant déléguer ce genre de choses à leurs sbires et à leurs serviteurs. Mais il arrive parfois qu’ils quittent leur antre pour prendre part eux-mêmes à une expédition dont ils espèrent quelque gain mystique d’importance.

Combat

rares sont les circonstances où le fait d’être sorcier offre un avantage durant un combat utilisant des armes ordinaires. Mais cela importe peu, car les sorciers talentueux n’ont pas besoin de savoir manier une épée pour venir à bout d’un adversaire.

Carrière dangereuse

la sorcellerie est un moyen rapide d’obtenir du pouvoir, mais elle a un prix. Pour chaque rang de cette carrière au-delà du premier, vous devez choisir un désavantage supplémentaire (cf. chapitre 5). Cela s’applique également si vous choisissez d’augmenter votre rang de sorcier plus tard dans le jeu, par l’utilisation de points d’expérience.

Idées d’Avantages

bibliothèque savante, érudit, magie des Rois-Sorciers, perspicace, pouvoir du Néant, résistant à la magie, savant.

Idées de Désavantages

addiction, arrogant, distrait, indigne de confiance, inquiétant, malédiction de Morgazzon, mauvaise réputation, non-combattant, obsession, phobie, signe distinctif, souffreteux.

Langues

les sorciers doivent apprendre le démonique s’ils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de l’antique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent d’être apprises séparément.

","properties":{"sorcerer":true,"alchemist":false},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{}} {"name":"Ménestrel (barde/poète)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Ménestrel (barde/poète)

Artistes itinérants, les ménestrels chantent des chansons, jouent de la musique, récitent des poèmes, racontent des fables et des légendes. Ils inventent souvent leurs propres contes ou apprennent des histoires fameuses auxquelles ils ne manquent pas d’apporter leur touche personnelle. Certains ménestrels n’ errent pas de ville en ville pour exercer leur art, mais sont attachés au service de quelque noble et fortuné personnage qui les garde auprès de lui pour le divertir.

Ces artistes sont toujours heureux de jouer pour un large public et de récolter quelques piécettes pour leur effort. Certains ménestrels étendent leurs talents au jonglage et à la prestidigitation, ce qui peut être une bonne couverture pour un personnage qui est aussi voleur. Comme ils voyagent beaucoup et sont aussi doués pour écouter que pour captiver les foules par leurs récits, ils connaissent de nombreuses légendes anciennes et ont une bonne connaissance du monde et des événements qui agitent les cités. Les ménestrels sont souvent de grands séducteurs ; ils ont un don certain pour savoir trouver les mots qui toucheront le cœur des belles.

Attributs

la carrière de ménestrel exige un bon score d’aura, ainsi qu’une bonne dose d’agilité et un esprit aiguisé.

À l’aventure

les ménestrels sont itinérants, ce qui les expose forcément aux dangers de la route. Certains choisissent d’accompagner des soldats et des aventuriers afin de connaître eux-mêmes l’excitation de l’aventure et de créer des récits épiques basés sur ce qu’ils auront vécu.

Combat

la carrière de ménestrel n’ est pas à la base une carrière martiale, et celle-ci n’accordera de bonus au combat que dans de rares situations. Un tour de passe-passe ou une diversion pourra éventuellement permettre à un ménestrel de surprendre son adversaire, ou plus probablement lui offrir une chance de prendre ses jambes à son cou.

Idées d’Avantages

artiste, attirant, beau parleur, érudit, fêtard, inspirateur, maître du déguisement, ouïe fine, outillage (instrument de musique), perspicace.

Idées de Désavantages

arrogant, chétif, lubrique, non-combattant, soiffard.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"ADqjNBg94fcMVAM4"} {"name":"Barbare (berserk/primitif)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Barbare (berserk/primitif)

Ces personnages ne sont pas originaires des grandes cités de Lémurie, mais plutôt des montagnes de l’Axos, des toundras glacées de Valgard, du désert de Beshaar ou d’autres contrées sauvages du continent.

Les barbares sont des êtres farouches et sauvages, comme les terres qui les ont vus naître. Doués d’instincts aussi aiguisés que ceux d’un fauve, ils possèdent un talent inné pour la survie en milieu hostile et de solides connaissances sur la nature. Ce sont généralement de bons cavaliers. Mais les barbares restent surtout célèbres pour la rage indomptable avec laquelle ils combattent et leur faculté innée d’intimider les âmes les mieux trempées.

Attributs

la vie rude des barbares exige robustesse et endurance, aussi une bonne vigueur est essentielle pour un barbare, bien qu’il ne doive pas non plus négliger l’agilité.

Idées de Désavantages

arrogant, gars de la ville, mauvaise réputation, obsession (achever la mission), traqué.

À l’aventure

les barbares sont des aventuriersnés et possèdent les talents et les aptitudes nécessaires pour survivre aux pires situations.

Combat

les barbares se battent généralement de manière brutale, sans le moindre raffinement. Cela pourrait impressionner des citadins inaccoutumés à une telle sauvagerie, et offrir un avantage ponctuel à un barbare dans le cadre d’un combat particulièrement violent et sans pitié.

Idées d’Avantages

arme favorite, baudrier de guerre, colosse, cri de guerre, dur à cuire, fils des plaines, intimidant, montagnard, odorat développé, ouïe fine, peau dure, pisteur des marais, récupération rapide, roi de la jungle, santé de fer, tigre des neiges, vigilant, vue perçante.

Idées de Désavantages

bouseux, crédule, illettré, impétueux, lubrique, marin d’eau douce, méfiance envers la sorcellerie, signe distinctif, taciturne.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"EOT9EdVRzIE1dce8"} {"name":"Marin (matelot/pirate)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Marin (matelot/pirate)

Les marins sont les combattants et les aventuriers des mers. Ils savent manœuvrer une embarcation, s’orienter aux étoiles, ont de bonnes connaissances sur le milieu marin ainsi que sur les ports et les îles côtières.

Les matelots expérimentés sont toujours recherchés, et il est rare qu’un capitaine refuse d’accepter à son bord un matelot prêt à payer son voyage en participant à la manœuvre.

Les pirates sont les brigands des mers. Ils parlent leur propre version du lémurien, qu’on appelle l’argot des mers.

Attributs

les marins ont besoin d’une bonne vigueur et d’une bonne agilité.

À l’aventure

la vie en mer ne manque pas d’aventures. Les monstres marins, les batailles navales, les ports exotiques remplis de gens étranges et les cartes au trésor sont le pain quotidien des loups de mer.

Combat

un marin pourra recevoir un bonus ponctuel lors d’affrontements en mer, et peut-être aussi contre des créatures marines qu’il aurait déjà combattues ou dont il aurait entendu parler.

Idées d’Avantages

amis dans la pègre, athlète, bagarreur, baudrier de guerre, cri de guerre, discret, doigts de fée, fêtard, pied marin, vigilant, vue perçante.

Idées de Désavantages

borgne/oreille coupée, cupide, fanfaron, illettré, impétueux, lubrique, manchot/unijambiste, méfiance envers la sorcellerie, phobie, signe distinctif, soiffard.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"EQlaftJRPzcUThpj"} @@ -12,11 +12,11 @@ {"name":"Scribe (érudit/copiste)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Scribe (érudit/copiste)

Savants et pédagogues, les scribes sont pourvus d’une solide érudition qui couvre une large variété de sujets. Ils sont mathématiciens, cartographes, astronomes, linguistes, historiens et philosophes. Certains se chargent plus spécifiquement de la tâche fastidieuse de copier les manuscrits anciens. Les scribes sont aussi des débatteurs de talent, habitués aux discussions passionnées entre beaux esprits. Il va sans dire que les scribes savent lire et écrire.

Attributs

l’esprit est l’attribut essentiel pour un scribe.

À l’aventure

les scribes font d’ordinaire de piètres aventuriers, mais il peut être très utile pour un groupe d’avoir avec lui un personnage aussi érudit.

Combat

même si les scribes aiment à rappeler que « la plume est plus forte que l’épée », il y a peu de situations où cette carrière pourra être d’une quelconque utilité au combat.

Idées d’Avantages

bibliothèque savante, érudit, savant.

Idées de Désavantages

chétif, foie jaune, gars de la ville, incapable de mentir, non-combattant, obsession.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"M3TiAPAqgwCZf6sA"} {"name":"Voleur (filou/crapule)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Voleur (filou/crapule)

Votre personnage est tombé dans le crime, à moins qu’il n’ait commencé sa vie comme gamin des rues obligé de voler pour survivre. Quoi qu’il en soit, il possède certains talents, que beaucoup jugent peu recommandables. Les voleurs savent grimper aux murs et crocheter les serrures, se faufiler discrètement, faire les poches des passants, monter des arnaques ou tricher aux jeux de hasard. Ils savent aussi se renseigner sur ce qui se passe en ville et appartiennent parfois à une « guilde », une organisation qui réunit les criminels de la cité.

Attributs

les voleurs ont besoin d’une bonne agilité, mais aussi d’un esprit aiguisé.

À l’aventure

les bons voleurs font des recrues de choix pour les aventuriers prévoyant d’explorer des temples ou des tombeaux renfermant des trésors protégés par des pièges et de solides serrures.

Combat

en général, les voleurs cherchent plutôt à éviter le combat. Ils peuvent bénéficier d’un bonus de carrière quand ils cherchent à prendre la poudre d’escampette, surtout face aux gardes de la cité.

Idées d’Avantages

amis dans la pègre, discret, doigts de fée, fêtard, gamin des rues, ouïe fine, outillage (outils de voleur), roi de l’évasion, vigilant, vision nocturne.

Idées de Désavantages

cupide, gars de la ville, illettré, indigne de confiance, mauvaise réputation, poltron, souffreteux, traqué.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"MhLdeAVOXuMZLp0p"} {"name":"Tentatrice (courtisane/serveuse)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Tentatrice (courtisane/serveuse)

Certaines personnes ont élevé la séduction au rang d’art. La tentatrice peut être la maîtresse d’un noble, une prostituée, ou une simple serveuse de taverne (qui, peut-être, fait les poches des clients distraits par ses charmes), mais dans tous les cas elle sait utiliser son pouvoir sur les hommes pour arriver à ses fins. Elle est aussi dangereuse qu’elle est belle, car c’est le genre de femme pour laquelle les hommes se battent et les guerres éclatent. Une tentatrice est passée maîtresse dans l’art de la manipulation et de la séduction.

N.B. Barbarians of Lemuria étant conçu pour évoquer les thèmes et l’ambiance des histoires classiques de Sword & Sorcery, cette carrière est présentée au féminin, mais peut très bien être prise par un personnage masculin, selon les circonstances.

Attributs

l’aura est l’attribut le plus important pour une tentatrice. L’agilité et l’esprit sont également utiles.

À l’aventure

les tentatrices ne sont d’habitude pas très aventureuses (du moins en dehors d’un lit !), et il faudra donc que d’autres carrières viennent expliquer ce choix peu probable d’une vie itinérante à courir le danger.

Combat

cette carrière est rarement utile au combat, encore qu’une tentatrice puisse utiliser son rang dans cette carrière pour distraire des gardes, par exemple.

Idées d’Avantages

amis dans la pègre, amis haut placés, attirant, beau parleur, discret, doigts de fée, fêtard, inspirateur.

Idées de Désavantages

chétif, gars de la ville, impétueux, lent à la détente, lubrique, noncombattant.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"N8xqRgjTn1LPvJKX"} -{"name":"Prêtre (druide/chaman)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Prêtre (druide/chaman)

Au sein des temples que l’on rencontre dans toutes les grandes cités de Lémurie, les prêtres dirigent le culte rendu aux dieux et sont les interprètes de la volonté divine. Ce sont des lettrés instruits en théologie, en savoir antique et en langues anciennes, en astrologie et en astronomie. Leur fonction leur confère un statut particulier au sein de la cité, et ils jouissent d’une forte influence sur les affaires politiques, mais aussi sur l’armée et la population en général.

Les druides rendent un culte aux Seigneurs Sombres et sont moins « fréquentables », notamment du fait qu’ils pratiquent les sacrifices humains.

Vous trouverez davantage d’informations sur les prêtres au chapitre 6.

Attributs

les prêtres ont surtout besoin d’un esprit aiguisé, mais les meilleurs d’entre eux ont également l’aura nécessaire pour attirer les fidèles en nombre.

À l’aventure

certains prêtres mènent une vie particulièrement aventureuse, toujours en quête de savoirs anciens ou de reliques liées à leurs dieux. D’autres préfèrent une vie plus paisible et ne quittent que rarement la sécurité de leur temple.

Combat

une carrière de prêtre n’apporte aucun avantage au combat, si ce n’est éventuellement lors d’un affrontement face à des adversaires superstitieux qui hésiteront à s’en prendre à un serviteur des dieux.

Idées d’Avantages

amis haut placés, beau parleur, érudit, inspirateur, marqué par les dieux, perspicace, résistant à la magie, savant, sentir la magie.

Idées de Désavantages

addiction, arrogant, fanatique, foie jaune, malédiction de Morgazzon, méfiance envers la sorcellerie, non-combattant, obsession.

Langues

les prêtres et les druides doivent apprendre le démonique s’ils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de l’antique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent d’être apprises séparément.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"QwndjjOmDnoHmh6Q"} +{"_id":"QwndjjOmDnoHmh6Q","name":"Prêtre (druide/chaman)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"category":null,"subtype":"career","description":"

Prêtre (druide/chaman)

Au sein des temples que l’on rencontre dans toutes les grandes cités de Lémurie, les prêtres dirigent le culte rendu aux dieux et sont les interprètes de la volonté divine. Ce sont des lettrés instruits en théologie, en savoir antique et en langues anciennes, en astrologie et en astronomie. Leur fonction leur confère un statut particulier au sein de la cité, et ils jouissent d’une forte influence sur les affaires politiques, mais aussi sur l’armée et la population en général.

Les druides rendent un culte aux Seigneurs Sombres et sont moins « fréquentables », notamment du fait qu’ils pratiquent les sacrifices humains.

Vous trouverez davantage d’informations sur les prêtres au chapitre 6.

Attributs

les prêtres ont surtout besoin d’un esprit aiguisé, mais les meilleurs d’entre eux ont également l’aura nécessaire pour attirer les fidèles en nombre.

À l’aventure

certains prêtres mènent une vie particulièrement aventureuse, toujours en quête de savoirs anciens ou de reliques liées à leurs dieux. D’autres préfèrent une vie plus paisible et ne quittent que rarement la sécurité de leur temple.

Combat

une carrière de prêtre n’apporte aucun avantage au combat, si ce n’est éventuellement lors d’un affrontement face à des adversaires superstitieux qui hésiteront à s’en prendre à un serviteur des dieux.

Idées d’Avantages

amis haut placés, beau parleur, érudit, inspirateur, marqué par les dieux, perspicace, résistant à la magie, savant, sentir la magie.

Idées de Désavantages

addiction, arrogant, fanatique, foie jaune, malédiction de Morgazzon, méfiance envers la sorcellerie, non-combattant, obsession.

Langues

les prêtres et les druides doivent apprendre le démonique s’ils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de l’antique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent d’être apprises séparément.

","properties":{"sorcerer":false,"alchemist":false,"priest":true},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{}} {"name":"Bourreau (geôlier/esclavagiste)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Bourreau (geôlier/esclavagiste)

Les bourreaux sont chargés des exécutions publiques décrétées par le tribunal ou les autorités.

Les geôliers s’occupent des prisons où croupissent les pires criminels des cités de Lémurie. Ils exercent leur sinistre activité dans de sordides cachots où ils se chargent d’extirper des informations aux prisonniers récalcitrants et aux ennemis des rois qui les emploient. Passés maîtres dans l’art de l’intimidation et de l’interrogatoire, ils possèdent de bonnes connaissances de base en anatomie et en premiers soins (des savoirs indispensables pour briser un prisonnier sans qu’il meure avant d’avoir parlé).

Les esclavagistes mènent des raids dans des terres lointaines pour capturer ou acheter des « sauvages » qu’ils ramènent dans les grandes cités de Lémurie afin de les revendre comme gladiateurs, travailleurs de force ou serviteurs, ou pour peupler de jeunes esclaves nubiles les harems des riches.

Attributs

les bourreaux ont rarement un score d’aura élevé, tandis que la vigueur reste un attribut indispensable pour accomplir une décapitation dans les règles de l’art ou pour maintenir le calme parmi leurs prisonniers.

À l’aventure

les geôliers quittent rarement leurs cachots humides, mais il peut arriver qu’un bourreau se retrouve frappé d’exil et contraint de mener une vie d’errance et d’aventure. Les esclavagistes sont toujours par monts et par vaux pour les besoins de leur sordide commerce.

Combat

les bourreaux préfèrent les grandes haches ou les épées à deux mains, tandis que certains esclavagistes sont particulièrement habiles avec un fouet. Les bourreaux ne sont pas des combattants très subtils et les guerriers expérimentés se laisseront rarement surprendre par leur style de combat brutal et sans finesse.

Idées d’Avantages

amis dans la pègre, arme favorite, colosse, dur à cuire, intimidant, récupération rapide.

Idées de Désavantages

bigleux, borgne/oreille coupée, cupide, dur d’oreille, fanatique, fanfaron, gars de la ville, illettré, inquiétant, lent à la détente, manchot/unijambiste, pataud, phobie, poltron, repoussant, soiffard.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"RDjPMxVAKkaPhAad"} {"name":"Dresseur (maître des bêtes/montreur d’ours)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Dresseur (maître des bêtes/montreur d’ours)

Les maîtres des bêtes sont demandés dans toute la Lémurie pour leur capacité à s’occuper des animaux, envers lesquels ils manifestent généralement une forme particulière d’empathie. Ils les dressent à être montés, à servir de bêtes de trait ou à combattre, que ce soit sur le champ de bataille ou dans une arène. Les dresseurs sont capables de calmer une créature enragée, de soigner des animaux blessés ou malades, de reconnaître une bête dangereuse et de dire si celle-ci est sur le point d’attaquer. En général, ce sont également des cavaliers émérites et de remarquables conducteurs d’attelage. Certains dresseurs tiennent leurs animaux par la peur et les privations plutôt que d’établir une relation de confiance avec eux.

Attributs

un dresseur doit posséder une forte personnalité et une détermination sans faille, tempérées par un cœur généreux (même si ce n’est pas toujours le cas). L’aura est donc l’attribut le plus important pour un dresseur, suivi de près par l’esprit.

À l’aventure

les dresseurs sont très demandés, que ce soit par des marchands organisant une caravane, par des nobles ou des militaires pour entraîner et soigner leurs montures, par des propriétaires d’arènes, ou par des aventuriers qui s’attendent à croiser d’étranges bêtes sauvages sur leur route.

Combat

un dresseur sait comment se comporter face à un animal et a des chances de connaître ses points faibles. Face à une bête sauvage, cette carrière pourra parfois apporter un avantage ponctuel.

Idées d’Avantages

ami des bêtes, baudrier de guerre, né en selle, odorat développé, ouïe fine, résistant aux poisons, vigilant, vision nocturne, vue perçante.

Idées de Désavantages

bouseux, illettré, impétueux, incapable de mentir.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"TMf6sTn0gz1D8FfB"} {"name":"Soldat (garde/milicien)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Soldat (garde/milicien)

Les soldats sont les combattants professionnels payés pour garder les remparts d’une cité ou constituer les armées des rois. Stoïques, habitués à obéir aux ordres, ce ne sont pas les plus imaginatifs des guerriers. Les soldats, qui peuvent être aussi de bons cavaliers, savent se montrer intimidants et jouissent d’une certaine autorité, surtout quand ils sont officiers. Ils connaissent bien la cité qu’ils servent, ainsi que la rude vie des camps militaires.

Attributs

la vigueur est normalement l’attribut essentiel pour un soldat, mais les archers et les cavaliers auront besoin d’une bonne agilité. Les officiers doivent avoir de l’aura pour diriger leurs hommes et un esprit aiguisé pour établir de solides plans de bataille.

À l’aventure

la plupart des soldats manquent d’inspiration et de fantaisie pour faire de bons aventuriers. En revanche, le temps passé à l’armée permet à un personnage d’affûter ses talents martiaux en attendant de repartir à l’aventure.

Combat

les soldats pourront parfois bénéficier d’un bonus de carrière au combat, notamment s’ils se battent selon une tactique établie, au sein d’une unité bien commandée.

Idées d’Avantages

arme favorite, athlète, bagarreur, dur à cuire, fêtard, inspirateur, né en selle, récupération rapide.

Idées de Désavantages

crédule, dur d’oreille, fanfaron, lubrique, soiffard, taciturne.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"TfK9OTk3FOrlCl0e"} -{"name":"Alchimiste (artificier/inventeur)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Alchimiste (artificier/inventeur)

Les alchimistes sont les scientifiques et les inventeurs de Lémurie. Souvent confondus avec les sorciers par ceux qui ne comprennent rien à leur science, les alchimistes ont une connaissance approfondie des principes de la chimie et de la métallurgie, ainsi que des vertus des plantes et herbes qu’ils cultivent parfois dans leurs propres jardins médicinaux.

Les alchimistes sont ainsi capables de créer des parfums, des potions, des poudres et des poisons, de composer des alliages aux propriétés uniques, de concevoir des instruments et des machines étranges, entre autres inventions étonnantes. Certains alchimistes particulièrement brillants sont même capables d’assembler des morceaux issus de différentes créatures vivantes pour créer d’horribles chimères. Quand ils conçoivent des machines, les alchimistes travaillent souvent en étroite collaboration avec des forgerons. Vous trouverez davantage d’informations sur l’alchimie au chapitre 6.

Attributs

à l’évidence l’esprit est l’attribut essentiel pour un alchimiste, dont la profession exige une grande intelligence et de vastes connaissances, que ce soit pour mener ses propres recherches ou pour déchiffrer les textes et les plans rédigés par de lointains prédécesseurs.

À l’aventure

ce n’ est pas une carrière très courante chez les héros, car elle impose d’austères recherches et beaucoup de patience. Il arrive cependant que des alchimistes audacieux s’aventurent à explorer d’antiques ruines dans l’ espoir d’y découvrir d’anciennes reliques dont la véritable valeur pourrait échapper à des héros moins instruits qu’eux.

Combat

les circonstances où des rangs dans la carrière d’alchimiste pourraient se révéler utiles au combat sont particulièrement rares.

Idées d’Avantages

bibliothèque savante, doigts de fée, érudit, laboratoire fourni, odorat développé, résistant aux poisons, savant.

Idées de Désavantages

chétif, distrait, foie jaune, gars de la ville, non-combattant, obsession (savoir ou artefacts anciens).

Carrière dangereuse

pour chaque rang d’alchimiste au-dessus du rang 2, le personnage doit prendre un désavantage (consultez la liste des avantages et désavantages, page 40).

Langues

les alchimistes doivent apprendre le démonique s’ils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de l’antique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent d’être apprises séparément.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"V8FaY7ampRH8qwK6"} +{"_id":"V8FaY7ampRH8qwK6","name":"Alchimiste (artificier/inventeur)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"category":null,"subtype":"career","description":"

Alchimiste (artificier/inventeur)

Les alchimistes sont les scientifiques et les inventeurs de Lémurie. Souvent confondus avec les sorciers par ceux qui ne comprennent rien à leur science, les alchimistes ont une connaissance approfondie des principes de la chimie et de la métallurgie, ainsi que des vertus des plantes et herbes qu’ils cultivent parfois dans leurs propres jardins médicinaux.

Les alchimistes sont ainsi capables de créer des parfums, des potions, des poudres et des poisons, de composer des alliages aux propriétés uniques, de concevoir des instruments et des machines étranges, entre autres inventions étonnantes. Certains alchimistes particulièrement brillants sont même capables d’assembler des morceaux issus de différentes créatures vivantes pour créer d’horribles chimères. Quand ils conçoivent des machines, les alchimistes travaillent souvent en étroite collaboration avec des forgerons. Vous trouverez davantage d’informations sur l’alchimie au chapitre 6.

Attributs

à l’évidence l’esprit est l’attribut essentiel pour un alchimiste, dont la profession exige une grande intelligence et de vastes connaissances, que ce soit pour mener ses propres recherches ou pour déchiffrer les textes et les plans rédigés par de lointains prédécesseurs.

À l’aventure

ce n’ est pas une carrière très courante chez les héros, car elle impose d’austères recherches et beaucoup de patience. Il arrive cependant que des alchimistes audacieux s’aventurent à explorer d’antiques ruines dans l’ espoir d’y découvrir d’anciennes reliques dont la véritable valeur pourrait échapper à des héros moins instruits qu’eux.

Combat

les circonstances où des rangs dans la carrière d’alchimiste pourraient se révéler utiles au combat sont particulièrement rares.

Idées d’Avantages

bibliothèque savante, doigts de fée, érudit, laboratoire fourni, odorat développé, résistant aux poisons, savant.

Idées de Désavantages

chétif, distrait, foie jaune, gars de la ville, non-combattant, obsession (savoir ou artefacts anciens).

Carrière dangereuse

pour chaque rang d’alchimiste au-dessus du rang 2, le personnage doit prendre un désavantage (consultez la liste des avantages et désavantages, page 40).

Langues

les alchimistes doivent apprendre le démonique s’ils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de l’antique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent d’être apprises séparément.

","properties":{"sorcerer":false,"alchemist":true},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{}} {"name":"Ouvrier (docker, manœuvre)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Ouvrier (docker, manœuvre)

Les ouvriers sont les travailleurs manuels, ceux qui montent les palissades, creusent les fossés, construisent les maisons, édifient les remparts et les temples, chargent et déchargent les chariots et les bateaux. Ils se déplacent souvent au gré des emplois, dont beaucoup sont saisonniers ou temporaires. Les ouvriers sont habitués à travailler dur et à porter de lourdes charges ; ils savent aussi tenir l’alcool et s’y entendent en intimidation. Certaines des tâches qu’effectuent les ouvriers sont parfois confiées à des esclaves.

Attributs

une forte vigueur est utile aux travailleurs de force que sont les ouvriers.

À l’aventure

le labeur des ouvriers est monotone et pas vraiment propice à l’aventure. Un personnage qui possède cette carrière n’a pas dû l’exercer très longtemps.

Combat

les ouvriers ne sont pas vraiment des combattants, même s’ils ont tendance à régler les disputes à coups de poing. Ils peuvent recevoir un bonus lors d’une bagarre, notamment quand il s’agit de saisir ou d’étrangler leur adversaire.

Idées d’Avantages

bagarreur, colosse, dur à cuire, fêtard, intimidant, outillage, résistant aux poisons, vigueur céruléenne.

Idées de Désavantages

dur d’oreille, illettré, impétueux, incapable de mentir, inquiétant, lubrique, pataud, phobie, soiffard, taciturne.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"WOkO7ENBFlPkwuIY"} {"name":"Esclave (serf/serviteur)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Esclave (serf/serviteur)

L’esclavage n’ est pas un choix de carrière évident pour un aventurier, mais il peut contribuer utilement à définir le personnage et offre quelques compétences et talents originaux.

Cette carrière permet à un personnage d’apprendre à ne pas se faire remarquer, à voir et écouter discrètement, à cuisiner, nettoyer, coudre, et à effectuer toutes sortes de travaux ménagers. Certains esclaves (les plus forts ou les fauteurs de trouble) sont parfois vendus aux arènes pour y combattre comme gladiateurs.

Attributs

selon à quoi ils sont employés, les esclaves ont besoin d’une bonne vigueur ou d’une bonne agilité. Les femmes esclaves voient leur situation s’améliorer (ou empirer !) si elles ont un bon score d’aura. Les esclaves trop intelligents sont généralement considérés comme des fauteurs de trouble.

À l’aventure

les esclaves à l’esprit aventureux ne restent pas longtemps sous le joug de leur maître, à moins bien sûr que cela ne serve leurs intérêts. Une vie d’esclave fugitif mène tout naturellement à l’aventure.

Combat

cette carrière n’ est pas d’un grand intérêt au combat. Toutefois des guerriers pourraient négliger de s’occuper d’un esclave, ne le considérant pas comme une menace, ce qui risque d’être une grave erreur.

Idées d’Avantages

colosse, discret, ouïe fine, roi de l’évasion.

Idées de Désavantages

foie jaune, gars de la ville, illettré, inadapté au froid, marin d’eau douce, maudit, muet, non-combattant, phobie, souffreteux, taciturne.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"XcYU4ktflnZcZnlA"} {"name":"Marchand (colporteur/négociant)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"

Marchand (colporteur/négociant)

Les marchands ne sont pas des boutiquiers, mais des négociants qui voyagent au loin, à la recherche de produits nouveaux et exotiques à acheter et à vendre. Les personnages marchands ont donc acquis de nombreux savoirs utiles. Ils maîtrisent l’art de la négociation, savent estimer les marchandises, ont de bonnes connaissances géographiques, et sont bien renseignés sur des villes et des régions lointaines ainsi que sur les institutions qui gouvernent les cités et les guildes. Si vous recherchez un objet rare ou inhabituel, parlez-en d’abord à un marchand !

Attributs

les marchands ont besoin d’un esprit vif et d’un certain degré d’aura pour marchander et faire des affaires.

À l’aventure

une vie itinérante est forcément une vie d’aventure, que le marchand la recherche ou pas. Les marchands sont toujours en quête de nouvelles contrées et de nouveaux marchés, ce qui les entraîne dans de nombreuses aventures.

Combat

la carrière de marchand n’étant pas une carrière martiale, elle ne sera presque jamais utile à un personnage engagé au combat.

Idées d’Avantages

beau parleur, fortuné, perspicace, savant.

Idées de Désavantages

cupide, lent à la détente, non-combattant, obsession.

","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"bbXZ2TJvSYR1Q30m"} diff --git a/system.json b/system.json index 020eced..660661e 100644 --- a/system.json +++ b/system.json @@ -7,8 +7,8 @@ "url": "https://github.com/ZigmundKreud/bol", "license": "LICENSE.txt", "flags": {}, - "version": "0.9.0.3", - "templateVersion": 16, + "version": "0.9.1.0", + "templateVersion": 18, "minimumCoreVersion": "0.8.6", "compatibleCoreVersion": "9", "scripts": [], @@ -121,4 +121,4 @@ "gridUnits": "m", "primaryTokenAttribute": "resources.hp", "secondaryTokenAttribute": "resources.hero" -} \ No newline at end of file +} diff --git a/template.json b/template.json index a26f869..a851258 100644 --- a/template.json +++ b/template.json @@ -117,6 +117,13 @@ "value": 0, "bonus": 0, "max": 0 + }, + "alchemypoints": { + "key": "alchemypoints", + "label": "BOL.resources.alchemypoints", + "value": 0, + "bonus": 0, + "max": 0 } } } diff --git a/templates/actor/actor-sheet.hbs b/templates/actor/actor-sheet.hbs index 9bd8a7a..63cb61c 100644 --- a/templates/actor/actor-sheet.hbs +++ b/templates/actor/actor-sheet.hbs @@ -12,6 +12,9 @@ {{localize "BOL.ui.tab.actions"}} {{localize "BOL.ui.tab.features"}} {{localize "BOL.ui.tab.equipment"}} + {{#if (or isSorcerer isAlchemist)}} + {{localize "BOL.ui.tab.spellalchemy"}} + {{/if}} {{localize "BOL.ui.tab.description"}} {{!-- Sheet Body --}} @@ -26,6 +29,13 @@
{{> "systems/bol/templates/actor/parts/tabs/actor-features.hbs"}}
+ + {{#if (or isSorcerer isAlchemist)}} +
+ {{> "systems/bol/templates/actor/parts/tabs/actor-spellalchemy.hbs"}} +
+ {{/if}} +
{{> "systems/bol/templates/actor/parts/tabs/actor-equipment.hbs"}}
diff --git a/templates/actor/parts/tabs/actor-spellalchemy.hbs b/templates/actor/parts/tabs/actor-spellalchemy.hbs new file mode 100644 index 0000000..16d75fc --- /dev/null +++ b/templates/actor/parts/tabs/actor-spellalchemy.hbs @@ -0,0 +1,65 @@ + +{{#if isSorcerer}} +
    +
  1. +
    {{localize "BOL.ui.spells"}}
    +
    {{localize "BOL.ui.circle"}}
    +
    {{localize "BOL.ui.difficulty"}}
    +
    +
  2. + {{#each spells as |item id|}} +
  3. +

    +
    + {{item.name}} +

    +
    + {{item.data.properties.circle}} +
    +
    + {{item.data.properties.difficulty}} +
    +
    + + +
    +
  4. + {{/each}} +
+{{/if}} + +{{#if isAlchemist}} +
    +
  1. +
    {{localize "BOL.ui.alchemy"}}
    +
    {{localize "BOL.ui.type"}}
    +
    {{localize "BOL.ui.difficulty"}}
    +
    {{localize "BOL.ui.advance"}}
    +
    +
  2. + {{#each alchemy as |item id|}} +
  3. +

    +
    + {{item.name}} +

    +
    + {{localize (concat "BOL.alchemyItem." item.data.properties.alchemytype)}} +
    +
    + {{item.data.properties.difficulty}} +
    +
    + {{item.data.properties.pccurrent}} / {{item.data.properties.pccost}} +
    +
    + +
    +
    + + +
    +
  4. + {{/each}} +
+{{/if}} diff --git a/templates/actor/parts/tabs/actor-stats.hbs b/templates/actor/parts/tabs/actor-stats.hbs index ba97b77..9021767 100644 --- a/templates/actor/parts/tabs/actor-stats.hbs +++ b/templates/actor/parts/tabs/actor-stats.hbs @@ -24,6 +24,8 @@
{{#each resources as |resource id|}} + {{#if (eq resource.key "alchemypoints")}} + {{#if @root.isAlchemist}}

@@ -34,5 +36,18 @@ {{/if}}
+ {{/if}} + {{else}} +
+
+ + {{#if (eq @root.data.type 'player')}} + {{#if (exists bonus)}} + + {{/if}} + {{/if}} + +
+ {{/if}} {{/each}}
diff --git a/templates/chat/rolls/alchemy-roll-card.hbs b/templates/chat/rolls/alchemy-roll-card.hbs new file mode 100644 index 0000000..8d57d3a --- /dev/null +++ b/templates/chat/rolls/alchemy-roll-card.hbs @@ -0,0 +1,11 @@ +

Préparation Alchimique : {{alchemy.name}}

+

Points de Création Investis : {{pcCostCurrent}}

+ +{{#if isSuccess}} +La préparation alchimique a été réalisée avec succès ! +
Créez l'item ou l'effet correspondant dans votre Inventaire. +
L'avancement dans la préparation a été remis à 0. +{{else}} +La préparation alchimique a échouée ! +
L'avancement dans la préparation a été remis à 0. +{{/if}} diff --git a/templates/chat/rolls/damage-roll-card.hbs b/templates/chat/rolls/damage-roll-card.hbs index 66a90a2..4675127 100644 --- a/templates/chat/rolls/damage-roll-card.hbs +++ b/templates/chat/rolls/damage-roll-card.hbs @@ -1,5 +1,5 @@ {{weapon.name}} -

Dommages de {{weapon.name}} : {{damageRoll.total}} +

Dommages de {{weapon.name}} : {{damageRoll.total}}

{{#if target}}
diff --git a/templates/chat/rolls/default-roll-card.hbs b/templates/chat/rolls/default-roll-card.hbs index 388fe2b..2c7f447 100644 --- a/templates/chat/rolls/default-roll-card.hbs +++ b/templates/chat/rolls/default-roll-card.hbs @@ -20,6 +20,12 @@ {{#if (and isSuccess weapon)}} {{> "systems/bol/templates/chat/rolls/attack-damage-card.hbs"}} {{/if}} + {{#if (and isSuccess spell)}} + {{> "systems/bol/templates/chat/rolls/spell-roll-card.hbs"}} + {{/if}} + {{#if alchemy}} + {{> "systems/bol/templates/chat/rolls/alchemy-roll-card.hbs"}} + {{/if}} {{#if reroll}} diff --git a/templates/chat/rolls/spell-roll-card.hbs b/templates/chat/rolls/spell-roll-card.hbs index e69de29..7ad529d 100644 --- a/templates/chat/rolls/spell-roll-card.hbs +++ b/templates/chat/rolls/spell-roll-card.hbs @@ -0,0 +1,4 @@ +

Sort : {{spell.name}}

+

Cout en Points de Pouvoir : {{ppCost}}

+

Points de Pouvoir restants : {{sub ppCurrent ppCost}}

+ diff --git a/templates/dialogs/alchemy-roll-dialog.hbs b/templates/dialogs/alchemy-roll-dialog.hbs new file mode 100644 index 0000000..2667c01 --- /dev/null +++ b/templates/dialogs/alchemy-roll-dialog.hbs @@ -0,0 +1,38 @@ +
+ {{!-- Sheet Header --}} +
+
+
+

{{localize 'BOL.ui.makeAlchemy'}}

+
+
+
+ + {{> "systems/bol/templates/dialogs/attribute-roll-part.hbs"}} + + {{> "systems/bol/templates/dialogs/adv-roll-part.hbs"}} + + {{> "systems/bol/templates/dialogs/mod-roll-part.hbs"}} + +
+
+ +
+
{{careerBonus}}
+
+ +
+
+ +
+
{{pcCost}}
+
+ +
+
+ +
+
{{pcCostCurrent}}
+
+ +
\ No newline at end of file diff --git a/templates/dialogs/mod-roll-part.hbs b/templates/dialogs/mod-roll-part.hbs index 1e70e41..0e3e31a 100644 --- a/templates/dialogs/mod-roll-part.hbs +++ b/templates/dialogs/mod-roll-part.hbs @@ -5,6 +5,7 @@
diff --git a/templates/dialogs/spell-roll-dialog.hbs b/templates/dialogs/spell-roll-dialog.hbs new file mode 100644 index 0000000..4cc2bc6 --- /dev/null +++ b/templates/dialogs/spell-roll-dialog.hbs @@ -0,0 +1,66 @@ +
+ {{!-- Sheet Header --}} +
+
+
+

{{localize 'BOL.ui.focusSpell'}}

+
+
+
+ + {{> "systems/bol/templates/dialogs/attribute-roll-part.hbs"}} + + {{> "systems/bol/templates/dialogs/adv-roll-part.hbs"}} + + {{> "systems/bol/templates/dialogs/mod-roll-part.hbs"}} + +
+
+ +
+
{{careerBonus}}
+
+ +
+
+ +
+
{{ppCost}}
+
+ +
+
+ +
+
{{ppCurrent}}
+
+ +
+
+ +
+
+ {{#each spell.data.data.properties.mandatoryconditions as | cond idx|}} + {{#if (lt idx @root.spell.data.data.properties.nbmandatoryconditions)}} + + {{/if}} + {{/each}} +
+
+ +
+
+ +
+
+ +
+
+ +
\ No newline at end of file diff --git a/templates/item/parts/properties/feature/career-properties.hbs b/templates/item/parts/properties/feature/career-properties.hbs index b7383fa..bac10a3 100644 --- a/templates/item/parts/properties/feature/career-properties.hbs +++ b/templates/item/parts/properties/feature/career-properties.hbs @@ -3,3 +3,15 @@
+
+ + +
+
+ + +
+
+ + +
diff --git a/templates/item/parts/properties/item-properties.hbs b/templates/item/parts/properties/item-properties.hbs index fd69f4c..778d9ab 100644 --- a/templates/item/parts/properties/item-properties.hbs +++ b/templates/item/parts/properties/item-properties.hbs @@ -23,3 +23,6 @@ {{#if (eq data.category "spell")}} {{> "systems/bol/templates/item/parts/properties/item/spell-properties.hbs"}} {{/if}} +{{#if (eq data.category "alchemy")}} + {{> "systems/bol/templates/item/parts/properties/item/alchemy-properties.hbs"}} +{{/if}} diff --git a/templates/item/parts/properties/item/alchemy-properties.hbs b/templates/item/parts/properties/item/alchemy-properties.hbs new file mode 100644 index 0000000..b14c199 --- /dev/null +++ b/templates/item/parts/properties/item/alchemy-properties.hbs @@ -0,0 +1,39 @@ +

{{localize "BOL.ui.alchemyProperties"}}

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ diff --git a/templates/item/parts/properties/item/spell-properties.hbs b/templates/item/parts/properties/item/spell-properties.hbs index eb1d471..b117206 100644 --- a/templates/item/parts/properties/item/spell-properties.hbs +++ b/templates/item/parts/properties/item/spell-properties.hbs @@ -1,27 +1,97 @@

{{localize "BOL.ui.spellProperties"}}

-
-
+ +
+ + +
+ +
- -
-
+ +
-
-
- - -
-
+
+ + +
-
-
- -
+
+ + +
+ +
+ + +
+ + {{#each data.properties.mandatoryconditions as |cond idx|}} + {{#if (lt idx @root.data.properties.nbmandatoryconditions)}} +
+ + +
+ {{/if}} + {{/each}} + +
+ + +
+ + {{#each data.properties.optionnalconditions as |cond idx|}} + {{#if (lt idx @root.data.properties.nboptionnalconditions)}} +
+ + +
+ {{/if}} + {{/each}} + +
- -
-
+ +
+
+ +
+