Add spells and alchemy

This commit is contained in:
sladecraven 2022-01-23 09:25:09 +01:00
parent 5eb059a2fa
commit aeb7739879
28 changed files with 696 additions and 71 deletions

View File

@ -510,6 +510,7 @@ a:hover {
.items-list .item .item-control {
color: #4b4a44;
}
/* ----------------------------------------- */
/* Premade colors */
/* ----------------------------------------- */

View File

@ -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",

View File

@ -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",

View File

@ -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;

View File

@ -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;

View File

@ -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: '<i class="fas fa-times"></i>',
@ -139,6 +210,11 @@ export class BoLRoll {
icon: '<i class="fas fa-check"></i>',
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() {

View File

@ -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;
}

View File

@ -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 {
@ -377,6 +380,14 @@ export class BoLUtility {
}
}
/* -------------------------------------------- */
static computeSpellCost( spell, nbOptCond= 0) {
let pp = spell.data.data.properties.ppcost
let minpp = __circle2minpp[spell.data.data.properties.circle]
pp = (pp-nbOptCond<minpp) ? minpp : pp-nbOptCond
return pp
}
/* -------------------------------------------- */
static getDamageFormula(damageString, modifier=0, multiplier = 1) {
if (damageString[0] == 'd') { damageString = "1" + damageString } // Help parsing

View File

@ -27,6 +27,20 @@ BOL.damageMultiplier = {
"4": "x4",
}
BOL.spellType = {
"0": "BOL.spellItem.charm",
"1": "BOL.spellItem.circle1",
"2": "BOL.spellItem.circle2",
"3": "BOL.spellItem.circle3"
}
BOL.alchemyType = {
"common": "BOL.alchemyItem.common",
"scarce": "BOL.alchemyItem.scarce",
"legend": "BOL.alchemyItem.legend",
"mythic": "BOL.alchemyItem.mythic",
}
BOL.equipmentSlots = {
"none" : "BOL.equipmentSlots.none",
"head" : "BOL.equipmentSlots.head",
@ -115,6 +129,7 @@ BOL.itemCategories = {
"equipment" : "BOL.itemCategory.equipment",
"capacity" : "BOL.itemCategory.capacity",
"spell" : "BOL.itemCategory.spell",
"alchemy" : "BOL.itemCategory.alchemy",
"vehicle" : "BOL.itemCategory.vehicle",
"other" : "BOL.itemCategory.other"
}

View File

@ -64,6 +64,13 @@ export const registerHandlebarsHelpers = function () {
return val1 || val2 || val3;
});
Handlebars.registerHelper('for', function(from, to, incr, block) {
var accum = '';
for(var i = from; i < to; i += incr)
accum += block.fn(i);
return accum;
});
Handlebars.registerHelper('not', function (cond) {
return !cond;
});
@ -95,6 +102,10 @@ export const registerHandlebarsHelpers = function () {
return parseInt(a) + parseInt(b);
});
Handlebars.registerHelper('sub', function (a, b) {
return parseInt(a) - parseInt(b);
});
Handlebars.registerHelper('valueAtIndex', function (arr, idx) {
return arr[idx];
});

View File

@ -14,6 +14,7 @@ export const preloadHandlebarsTemplates = async function () {
"systems/bol/templates/actor/parts/tabs/actor-actions.hbs",
"systems/bol/templates/actor/parts/tabs/actor-features.hbs",
"systems/bol/templates/actor/parts/tabs/actor-equipment.hbs",
"systems/bol/templates/actor/parts/tabs/actor-spellalchemy.hbs",
// ITEMS
"systems/bol/templates/item/parts/item-header.hbs",
"systems/bol/templates/item/parts/properties/feature-properties.hbs",
@ -24,6 +25,7 @@ export const preloadHandlebarsTemplates = async function () {
"systems/bol/templates/item/parts/properties/item/protection-properties.hbs",
"systems/bol/templates/item/parts/properties/item/weapon-properties.hbs",
"systems/bol/templates/item/parts/properties/item/spell-properties.hbs",
"systems/bol/templates/item/parts/properties/item/alchemy-properties.hbs",
"systems/bol/templates/item/parts/properties/item/magical-properties.hbs",
"systems/bol/templates/item/parts/properties/feature/career-properties.hbs",
"systems/bol/templates/item/parts/properties/feature/boon-properties.hbs",
@ -33,6 +35,8 @@ export const preloadHandlebarsTemplates = async function () {
// DIALOGS
"systems/bol/templates/chat/rolls/attack-damage-card.hbs",
"systems/bol/templates/chat/rolls/spell-roll-card.hbs",
"systems/bol/templates/chat/rolls/alchemy-roll-card.hbs",
"systems/bol/templates/roll/parts/roll-dialog-modifiers.hbs",
"systems/bol/templates/roll/parts/roll-dialog-attribute.hbs",
"systems/bol/templates/dialogs/aptitude-roll-part.hbs",

View File

@ -1,7 +1,7 @@
{"name":"Mendiant (vagabond/clochard)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"<h1>Mendiant (vagabond/clochard)</h1><p>Les vagabonds errent dun lieu à lautre avec pour seul objectif de réussir à survivre. Ils peuvent à loccasion 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 sadonnent à de petits larcins pour se remplir le ventre.</p><h2>Attributs</h2><p>aucun attribut n est plus important que les autres pour un mendiant. Être affligé dune difformité, dun handicap, ou dune maladie repoussante (ou simplement le simuler) peut cependant se révéler utile quand il sagit de faire appel à la compassion des passants.</p><h2>À laventure</h2><p>la vie dun vagabond implique des rencontres en tous genres sur les routes, ce qui peut mener à laventure sans même la rechercher.</p><h2>Combat</h2><p>en général, un mendiant na rien dun combattant. Cette carrière ne pourra donc se révéler utile dans le cadre dun combat, sauf quand le personnage fait de son mieux pour ne pas être remarqué.</p><h2>Idées dAvantages</h2><p>amis dans la pègre, discret, doigts de fée, gamin des rues.</p><h2>Idées de Désavantages</h2><p>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.</p>","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":"<h1>Mercenaire (brigand/guerrier)</h1><p>Les mercenaires sont des guerriers qui louent leurs services au plus offrant. Certains sassemblent en troupes sous lautorité dun chef respecté, tandis que dautres voyagent seuls ou en petits groupes à la recherche dun employeur.</p><p>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.</p><h2>Attributs</h2><p>pour sadonner au métier des armes, les mercenaires doivent posséder de bonnes prédispositions en vigueur et en agilité.</p><h2>À laventure</h2><p>par nature, les mercenaires sont des vagabonds qui parcourent la Lémurie en quête dun nouvel engagement. Même en temps de paix, ils trouvent à semployer pour escorter les caravanes marchandes, participer à des expéditions de chasseurs de trésor, ou servir de gardes du corps pour la noblesse.</p><h2>Combat</h2><p>les mercenaires sont connus pour se battre dautant mieux que la paie est bonne, et pour mettre peu de cœur à louvrage (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.</p><h2>Idées dAvantages</h2><p>arme favorite, bagarreur, baudrier de guerre, combat à laveugle, cri de guerre, dur à cuire, fêtard, inspirateur, né en selle, récupération rapide, vigilant.</p><h2>Idées de Désavantages</h2><p>cupide, fanfaron, impétueux, lubrique.</p>","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":"<h1>Chasseur (éclaireur/pisteur)</h1><p>Le chasseur est passé maître dans lart de pister et de traquer les animaux. Une fois quil a localisé sa proie, il utilise des techniques dapproche discrète, la pose de pièges, ou son habileté à larc pour labattre. Les chasseurs sont parfaitement à leur aise dans la nature sauvage et sont capables dy survivre sur de longues périodes, pour ne retourner vers les zones civilisées quune fois quils ont réuni suffisamment de fourrures et de peaux à vendre, ou quand la compagnie de leurs semblables commence à leur manquer.</p><h2>Attributs</h2><p>lagilité est importante pour un chasseur, tout comme la vigueur et lesprit, encore quà un moindre degré.</p><h2>À laventure</h2><p>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 danciennes 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 daventuriers.</p><h2>Combat</h2><p>un chasseur pourra recevoir un bonus de carrière ponctuel sil affronte une créature sauvage quil connaît bien. En revanche, cette carrière est rarement utile contre des adversaires humains.</p><h2>Idées dAvantages</h2><p>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.</p><h2>Idées de Désavantages</h2><p>borgne/oreille coupée, manchot/unijambiste, marin deau douce, taciturne.</p>","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":"<h1>Sorcier (magicien/enchanteur)</h1><p>Les sorciers sont à la fois craints et respectés. Personne ne les fréquente volontiers à moins dune 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 dun apprenti. Ils sadonnent à létude de sciences ésotériques comme lastrologie, lastronomie et la démonologie, recherchent fiévreusement dantiques manuscrits interdits renfermant un savoir occulte, quand ils ne concluent pas des pactes avec les démons afin dapprendre des mots de pouvoir capables de façonner le tissu de la réalité.</p><p>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 dinformations sur les sorciers au chapitre 6.</p><h2>Attributs</h2><p>les sorciers ont besoin dun esprit fort, à la fois pour mener leurs études et pour être en mesure de lancer des sorts puissants.</p><h2>À laventure</h2><p>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 quils quittent leur antre pour prendre part eux-mêmes à une expédition dont ils espèrent quelque gain mystique dimportance.</p><h2>Combat</h2><p>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 nont pas besoin de savoir manier une épée pour venir à bout dun adversaire.</p><h2>Carrière dangereuse</h2><p>la sorcellerie est un moyen rapide dobtenir 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 sapplique également si vous choisissez daugmenter votre rang de sorcier plus tard dans le jeu, par lutilisation de points dexpérience.</p><h2>Idées dAvantages</h2><p>bibliothèque savante, érudit, magie des Rois-Sorciers, perspicace, pouvoir du Néant, résistant à la magie, savant.</p><h2>Idées de Désavantages</h2><p>addiction, arrogant, distrait, indigne de confiance, inquiétant, malédiction de Morgazzon, mauvaise réputation, non-combattant, obsession, phobie, signe distinctif, souffreteux.</p><h2>Langues</h2><p>les sorciers doivent apprendre le démonique sils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de lantique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent dêtre apprises séparément.</p>","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":"<h1>Sorcier (magicien/enchanteur)</h1><p>Les sorciers sont à la fois craints et respectés. Personne ne les fréquente volontiers à moins dune 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 dun apprenti. Ils sadonnent à létude de sciences ésotériques comme lastrologie, lastronomie et la démonologie, recherchent fiévreusement dantiques manuscrits interdits renfermant un savoir occulte, quand ils ne concluent pas des pactes avec les démons afin dapprendre des mots de pouvoir capables de façonner le tissu de la réalité.</p><p>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 dinformations sur les sorciers au chapitre 6.</p><h2>Attributs</h2><p>les sorciers ont besoin dun esprit fort, à la fois pour mener leurs études et pour être en mesure de lancer des sorts puissants.</p><h2>À laventure</h2><p>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 quils quittent leur antre pour prendre part eux-mêmes à une expédition dont ils espèrent quelque gain mystique dimportance.</p><h2>Combat</h2><p>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 nont pas besoin de savoir manier une épée pour venir à bout dun adversaire.</p><h2>Carrière dangereuse</h2><p>la sorcellerie est un moyen rapide dobtenir 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 sapplique également si vous choisissez daugmenter votre rang de sorcier plus tard dans le jeu, par lutilisation de points dexpérience.</p><h2>Idées dAvantages</h2><p>bibliothèque savante, érudit, magie des Rois-Sorciers, perspicace, pouvoir du Néant, résistant à la magie, savant.</p><h2>Idées de Désavantages</h2><p>addiction, arrogant, distrait, indigne de confiance, inquiétant, malédiction de Morgazzon, mauvaise réputation, non-combattant, obsession, phobie, signe distinctif, souffreteux.</p><h2>Langues</h2><p>les sorciers doivent apprendre le démonique sils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de lantique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent dêtre apprises séparément.</p>","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":"<h1>Ménestrel (barde/poète)</h1><p>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 dapporter 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.</p><p>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.</p><h2>Attributs</h2><p>la carrière de ménestrel exige un bon score daura, ainsi quune bonne dose dagilité et un esprit aiguisé.</p><h2>À laventure</h2><p>les ménestrels sont itinérants, ce qui les expose forcément aux dangers de la route. Certains choisissent daccompagner des soldats et des aventuriers afin de connaître eux-mêmes lexcitation de laventure et de créer des récits épiques basés sur ce quils auront vécu.</p><h2>Combat</h2><p>la carrière de ménestrel n est pas à la base une carrière martiale, et celle-ci naccordera 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.</p><h2>Idées dAvantages</h2><p>artiste, attirant, beau parleur, érudit, fêtard, inspirateur, maître du déguisement, ouïe fine, outillage (instrument de musique), perspicace.</p><h2>Idées de Désavantages</h2><p>arrogant, chétif, lubrique, non-combattant, soiffard.</p>","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":"<h1>Barbare (berserk/primitif)</h1><p>Ces personnages ne sont pas originaires des grandes cités de Lémurie, mais plutôt des montagnes de lAxos, des toundras glacées de Valgard, du désert de Beshaar ou dautres contrées sauvages du continent.</p><p>Les barbares sont des êtres farouches et sauvages, comme les terres qui les ont vus naître. Doués dinstincts aussi aiguisés que ceux dun 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 dintimider les âmes les mieux trempées.</p><h2>Attributs</h2><p>la vie rude des barbares exige robustesse et endurance, aussi une bonne vigueur est essentielle pour un barbare, bien quil ne doive pas non plus négliger lagilité.</p><h2>Idées de Désavantages</h2><p>arrogant, gars de la ville, mauvaise réputation, obsession (achever la mission), traqué.</p><h2>À laventure</h2><p>les barbares sont des aventuriersnés et possèdent les talents et les aptitudes nécessaires pour survivre aux pires situations.</p><h2>Combat</h2><p>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 dun combat particulièrement violent et sans pitié.</p><h2>Idées dAvantages</h2><p>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.</p><h2>Idées de Désavantages</h2><p>bouseux, crédule, illettré, impétueux, lubrique, marin deau douce, méfiance envers la sorcellerie, signe distinctif, taciturne.</p>","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":"<h1>Marin (matelot/pirate)</h1><p>Les marins sont les combattants et les aventuriers des mers. Ils savent manœuvrer une embarcation, sorienter aux étoiles, ont de bonnes connaissances sur le milieu marin ainsi que sur les ports et les îles côtières.</p><p>Les matelots expérimentés sont toujours recherchés, et il est rare quun capitaine refuse daccepter à son bord un matelot prêt à payer son voyage en participant à la manœuvre.</p><p>Les pirates sont les brigands des mers. Ils parlent leur propre version du lémurien, quon appelle largot des mers.</p><h2>Attributs</h2><p>les marins ont besoin dune bonne vigueur et dune bonne agilité.</p><h2>À laventure</h2><p>la vie en mer ne manque pas daventures. 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.</p><h2>Combat</h2><p>un marin pourra recevoir un bonus ponctuel lors daffrontements en mer, et peut-être aussi contre des créatures marines quil aurait déjà combattues ou dont il aurait entendu parler.</p><h2>Idées dAvantages</h2><p>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.</p><h2>Idées de Désavantages</h2><p>borgne/oreille coupée, cupide, fanfaron, illettré, impétueux, lubrique, manchot/unijambiste, méfiance envers la sorcellerie, phobie, signe distinctif, soiffard.</p>","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":"<h1>Scribe (érudit/copiste)</h1><p>Savants et pédagogues, les scribes sont pourvus dune 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.</p><h2>Attributs</h2><p>lesprit est lattribut essentiel pour un scribe.</p><h2>À laventure</h2><p>les scribes font dordinaire de piètres aventuriers, mais il peut être très utile pour un groupe davoir avec lui un personnage aussi érudit.</p><h2>Combat</h2><p>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 dune quelconque utilité au combat.</p><h2>Idées dAvantages</h2><p>bibliothèque savante, érudit, savant.</p><h2>Idées de Désavantages</h2><p>chétif, foie jaune, gars de la ville, incapable de mentir, non-combattant, obsession.</p>","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":"<h1>Voleur (filou/crapule)</h1><p>Votre personnage est tombé dans le crime, à moins quil nait commencé sa vie comme gamin des rues obligé de voler pour survivre. Quoi quil 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é.</p><h2>Attributs</h2><p>les voleurs ont besoin dune bonne agilité, mais aussi dun esprit aiguisé.</p><h2>À laventure</h2><p>les bons voleurs font des recrues de choix pour les aventuriers prévoyant dexplorer des temples ou des tombeaux renfermant des trésors protégés par des pièges et de solides serrures.</p><h2>Combat</h2><p>en général, les voleurs cherchent plutôt à éviter le combat. Ils peuvent bénéficier dun bonus de carrière quand ils cherchent à prendre la poudre descampette, surtout face aux gardes de la cité.</p><h2>Idées dAvantages</h2><p>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.</p><h2>Idées de Désavantages</h2><p>cupide, gars de la ville, illettré, indigne de confiance, mauvaise réputation, poltron, souffreteux, traqué.</p>","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":"<h1>Tentatrice (courtisane/serveuse)</h1><p>Certaines personnes ont élevé la séduction au rang dart. La tentatrice peut être la maîtresse dun 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 quelle est belle, car cest le genre de femme pour laquelle les hommes se battent et les guerres éclatent. Une tentatrice est passée maîtresse dans lart de la manipulation et de la séduction.</p><p>N.B. Barbarians of Lemuria étant conçu pour évoquer les thèmes et lambiance 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.</p><h2>Attributs</h2><p>laura est lattribut le plus important pour une tentatrice. Lagilité et lesprit sont également utiles.</p><h2>À laventure</h2><p>les tentatrices ne sont dhabitude pas très aventureuses (du moins en dehors dun lit !), et il faudra donc que dautres carrières viennent expliquer ce choix peu probable dune vie itinérante à courir le danger.</p><h2>Combat</h2><p>cette carrière est rarement utile au combat, encore quune tentatrice puisse utiliser son rang dans cette carrière pour distraire des gardes, par exemple.</p><h2>Idées dAvantages</h2><p>amis dans la pègre, amis haut placés, attirant, beau parleur, discret, doigts de fée, fêtard, inspirateur.</p><h2>Idées de Désavantages</h2><p>chétif, gars de la ville, impétueux, lent à la détente, lubrique, noncombattant.</p>","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":"<h1>Prêtre (druide/chaman)</h1><p>Au sein des temples que lon 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 dune forte influence sur les affaires politiques, mais aussi sur larmée et la population en général.</p><p>Les druides rendent un culte aux Seigneurs Sombres et sont moins « fréquentables », notamment du fait quils pratiquent les sacrifices humains.</p><p>Vous trouverez davantage dinformations sur les prêtres au chapitre 6.</p><h2>Attributs</h2><p>les prêtres ont surtout besoin dun esprit aiguisé, mais les meilleurs dentre eux ont également laura nécessaire pour attirer les fidèles en nombre.</p><h2>À laventure</h2><p>certains prêtres mènent une vie particulièrement aventureuse, toujours en quête de savoirs anciens ou de reliques liées à leurs dieux. Dautres préfèrent une vie plus paisible et ne quittent que rarement la sécurité de leur temple.</p><h2>Combat</h2><p>une carrière de prêtre napporte aucun avantage au combat, si ce nest éventuellement lors dun affrontement face à des adversaires superstitieux qui hésiteront à sen prendre à un serviteur des dieux.</p><h2>Idées dAvantages</h2><p>amis haut placés, beau parleur, érudit, inspirateur, marqué par les dieux, perspicace, résistant à la magie, savant, sentir la magie.</p><h2>Idées de Désavantages</h2><p>addiction, arrogant, fanatique, foie jaune, malédiction de Morgazzon, méfiance envers la sorcellerie, non-combattant, obsession.</p><h2>Langues</h2><p>les prêtres et les druides doivent apprendre le démonique sils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de lantique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent dêtre apprises séparément.</p>","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":"<h1>Prêtre (druide/chaman)</h1><p>Au sein des temples que lon 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 dune forte influence sur les affaires politiques, mais aussi sur larmée et la population en général.</p><p>Les druides rendent un culte aux Seigneurs Sombres et sont moins « fréquentables », notamment du fait quils pratiquent les sacrifices humains.</p><p>Vous trouverez davantage dinformations sur les prêtres au chapitre 6.</p><h2>Attributs</h2><p>les prêtres ont surtout besoin dun esprit aiguisé, mais les meilleurs dentre eux ont également laura nécessaire pour attirer les fidèles en nombre.</p><h2>À laventure</h2><p>certains prêtres mènent une vie particulièrement aventureuse, toujours en quête de savoirs anciens ou de reliques liées à leurs dieux. Dautres préfèrent une vie plus paisible et ne quittent que rarement la sécurité de leur temple.</p><h2>Combat</h2><p>une carrière de prêtre napporte aucun avantage au combat, si ce nest éventuellement lors dun affrontement face à des adversaires superstitieux qui hésiteront à sen prendre à un serviteur des dieux.</p><h2>Idées dAvantages</h2><p>amis haut placés, beau parleur, érudit, inspirateur, marqué par les dieux, perspicace, résistant à la magie, savant, sentir la magie.</p><h2>Idées de Désavantages</h2><p>addiction, arrogant, fanatique, foie jaune, malédiction de Morgazzon, méfiance envers la sorcellerie, non-combattant, obsession.</p><h2>Langues</h2><p>les prêtres et les druides doivent apprendre le démonique sils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de lantique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent dêtre apprises séparément.</p>","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":"<h1>Bourreau (geôlier/esclavagiste)</h1><p>Les bourreaux sont chargés des exécutions publiques décrétées par le tribunal ou les autorités.</p><p>Les geôliers soccupent 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 dextirper des informations aux prisonniers récalcitrants et aux ennemis des rois qui les emploient. Passés maîtres dans lart de lintimidation et de linterrogatoire, ils possèdent de bonnes connaissances de base en anatomie et en premiers soins (des savoirs indispensables pour briser un prisonnier sans quil meure avant davoir parlé).</p><p>Les esclavagistes mènent des raids dans des terres lointaines pour capturer ou acheter des « sauvages » quils 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.</p><h2>Attributs</h2><p>les bourreaux ont rarement un score daura élevé, tandis que la vigueur reste un attribut indispensable pour accomplir une décapitation dans les règles de lart ou pour maintenir le calme parmi leurs prisonniers.</p><h2>À laventure</h2><p>les geôliers quittent rarement leurs cachots humides, mais il peut arriver quun bourreau se retrouve frappé dexil et contraint de mener une vie derrance et daventure. Les esclavagistes sont toujours par monts et par vaux pour les besoins de leur sordide commerce.</p><h2>Combat</h2><p>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.</p><h2>Idées dAvantages</h2><p>amis dans la pègre, arme favorite, colosse, dur à cuire, intimidant, récupération rapide.</p><h2>Idées de Désavantages</h2><p>bigleux, borgne/oreille coupée, cupide, dur doreille, fanatique, fanfaron, gars de la ville, illettré, inquiétant, lent à la détente, manchot/unijambiste, pataud, phobie, poltron, repoussant, soiffard.</p>","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"RDjPMxVAKkaPhAad"}
{"name":"Dresseur (maître des bêtes/montreur dours)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"<h1>Dresseur (maître des bêtes/montreur dours)</h1><p>Les maîtres des bêtes sont demandés dans toute la Lémurie pour leur capacité à soccuper des animaux, envers lesquels ils manifestent généralement une forme particulière dempathie. 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 dattaquer. En général, ce sont également des cavaliers émérites et de remarquables conducteurs dattelage. Certains dresseurs tiennent leurs animaux par la peur et les privations plutôt que détablir une relation de confiance avec eux.</p><h2>Attributs</h2><p>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 nest pas toujours le cas). Laura est donc lattribut le plus important pour un dresseur, suivi de près par lesprit.</p><h2>À laventure</h2><p>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 darènes, ou par des aventuriers qui sattendent à croiser détranges bêtes sauvages sur leur route.</p><h2>Combat</h2><p>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.</p><h2>Idées dAvantages</h2><p>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.</p><h2>Idées de Désavantages</h2><p>bouseux, illettré, impétueux, incapable de mentir.</p>","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":"<h1>Soldat (garde/milicien)</h1><p>Les soldats sont les combattants professionnels payés pour garder les remparts dune 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 dune certaine autorité, surtout quand ils sont officiers. Ils connaissent bien la cité quils servent, ainsi que la rude vie des camps militaires.</p><h2>Attributs</h2><p>la vigueur est normalement lattribut essentiel pour un soldat, mais les archers et les cavaliers auront besoin dune bonne agilité. Les officiers doivent avoir de laura pour diriger leurs hommes et un esprit aiguisé pour établir de solides plans de bataille.</p><h2>À laventure</h2><p>la plupart des soldats manquent dinspiration et de fantaisie pour faire de bons aventuriers. En revanche, le temps passé à larmée permet à un personnage daffûter ses talents martiaux en attendant de repartir à laventure.</p><h2>Combat</h2><p>les soldats pourront parfois bénéficier dun bonus de carrière au combat, notamment sils se battent selon une tactique établie, au sein dune unité bien commandée.</p><h2>Idées dAvantages</h2><p>arme favorite, athlète, bagarreur, dur à cuire, fêtard, inspirateur, né en selle, récupération rapide.</p><h2>Idées de Désavantages</h2><p>crédule, dur doreille, fanfaron, lubrique, soiffard, taciturne.</p>","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":"<h1>Alchimiste (artificier/inventeur)</h1><p>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 quils cultivent parfois dans leurs propres jardins médicinaux.</p><p>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 dassembler des morceaux issus de différentes créatures vivantes pour créer dhorribles chimères. Quand ils conçoivent des machines, les alchimistes travaillent souvent en étroite collaboration avec des forgerons. Vous trouverez davantage dinformations sur lalchimie au chapitre 6.</p><h2>Attributs</h2><p>à lévidence lesprit est lattribut 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.</p><h2>À laventure</h2><p>ce n est pas une carrière très courante chez les héros, car elle impose daustères recherches et beaucoup de patience. Il arrive cependant que des alchimistes audacieux saventurent à explorer dantiques ruines dans l espoir dy découvrir danciennes reliques dont la véritable valeur pourrait échapper à des héros moins instruits queux.</p><h2>Combat</h2><p>les circonstances où des rangs dans la carrière dalchimiste pourraient se révéler utiles au combat sont particulièrement rares.</p><h2>Idées dAvantages</h2><p>bibliothèque savante, doigts de fée, érudit, laboratoire fourni, odorat développé, résistant aux poisons, savant.</p><h2>Idées de Désavantages</h2><p>chétif, distrait, foie jaune, gars de la ville, non-combattant, obsession (savoir ou artefacts anciens).</p><h2>Carrière dangereuse</h2><p>pour chaque rang dalchimiste au-dessus du rang 2, le personnage doit prendre un désavantage (consultez la liste des avantages et désavantages, page 40).</p><h2>Langues</h2><p>les alchimistes doivent apprendre le démonique sils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de lantique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent dêtre apprises séparément.</p>","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":"<h1>Alchimiste (artificier/inventeur)</h1><p>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 quils cultivent parfois dans leurs propres jardins médicinaux.</p><p>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 dassembler des morceaux issus de différentes créatures vivantes pour créer dhorribles chimères. Quand ils conçoivent des machines, les alchimistes travaillent souvent en étroite collaboration avec des forgerons. Vous trouverez davantage dinformations sur lalchimie au chapitre 6.</p><h2>Attributs</h2><p>à lévidence lesprit est lattribut 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.</p><h2>À laventure</h2><p>ce n est pas une carrière très courante chez les héros, car elle impose daustères recherches et beaucoup de patience. Il arrive cependant que des alchimistes audacieux saventurent à explorer dantiques ruines dans l espoir dy découvrir danciennes reliques dont la véritable valeur pourrait échapper à des héros moins instruits queux.</p><h2>Combat</h2><p>les circonstances où des rangs dans la carrière dalchimiste pourraient se révéler utiles au combat sont particulièrement rares.</p><h2>Idées dAvantages</h2><p>bibliothèque savante, doigts de fée, érudit, laboratoire fourni, odorat développé, résistant aux poisons, savant.</p><h2>Idées de Désavantages</h2><p>chétif, distrait, foie jaune, gars de la ville, non-combattant, obsession (savoir ou artefacts anciens).</p><h2>Carrière dangereuse</h2><p>pour chaque rang dalchimiste au-dessus du rang 2, le personnage doit prendre un désavantage (consultez la liste des avantages et désavantages, page 40).</p><h2>Langues</h2><p>les alchimistes doivent apprendre le démonique sils veulent pouvoir utiliser les puissantes créations magiques et alchimiques de lantique race des Rois-Sorciers. Ce langage est particulièrement ardu et ses formes orale et écrite exigent dêtre apprises séparément.</p>","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":"<h1>Ouvrier (docker, manœuvre)</h1><p>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 lalcool et sy entendent en intimidation. Certaines des tâches queffectuent les ouvriers sont parfois confiées à des esclaves.</p><h2>Attributs</h2><p>une forte vigueur est utile aux travailleurs de force que sont les ouvriers.</p><h2>À laventure</h2><p>le labeur des ouvriers est monotone et pas vraiment propice à laventure. Un personnage qui possède cette carrière na pas dû lexercer très longtemps.</p><h2>Combat</h2><p>les ouvriers ne sont pas vraiment des combattants, même sils ont tendance à régler les disputes à coups de poing. Ils peuvent recevoir un bonus lors dune bagarre, notamment quand il sagit de saisir ou détrangler leur adversaire.</p><h2>Idées dAvantages</h2><p>bagarreur, colosse, dur à cuire, fêtard, intimidant, outillage, résistant aux poisons, vigueur céruléenne.</p><h2>Idées de Désavantages</h2><p>dur doreille, illettré, impétueux, incapable de mentir, inquiétant, lubrique, pataud, phobie, soiffard, taciturne.</p>","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":"<h1>Esclave (serf/serviteur)</h1><p>Lesclavage 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.</p><p>Cette carrière permet à un personnage dapprendre à 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.</p><h2>Attributs</h2><p>selon à quoi ils sont employés, les esclaves ont besoin dune bonne vigueur ou dune bonne agilité. Les femmes esclaves voient leur situation saméliorer (ou empirer !) si elles ont un bon score daura. Les esclaves trop intelligents sont généralement considérés comme des fauteurs de trouble.</p><h2>À laventure</h2><p>les esclaves à lesprit 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 desclave fugitif mène tout naturellement à laventure.</p><h2>Combat</h2><p>cette carrière n est pas dun grand intérêt au combat. Toutefois des guerriers pourraient négliger de soccuper dun esclave, ne le considérant pas comme une menace, ce qui risque dêtre une grave erreur.</p><h2>Idées dAvantages</h2><p>colosse, discret, ouïe fine, roi de lévasion.</p><h2>Idées de Désavantages</h2><p>foie jaune, gars de la ville, illettré, inadapté au froid, marin deau douce, maudit, muet, non-combattant, phobie, souffreteux, taciturne.</p>","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":"<h1>Marchand (colporteur/négociant)</h1><p>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 lart 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 dabord à un marchand !</p><h2>Attributs</h2><p>les marchands ont besoin dun esprit vif et dun certain degré daura pour marchander et faire des affaires.</p><h2>À laventure</h2><p>une vie itinérante est forcément une vie daventure, 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.</p><h2>Combat</h2><p>la carrière de marchand nétant pas une carrière martiale, elle ne sera presque jamais utile à un personnage engagé au combat.</p><h2>Idées dAvantages</h2><p>beau parleur, fortuné, perspicace, savant.</p><h2>Idées de Désavantages</h2><p>cupide, lent à la détente, non-combattant, obsession.</p>","properties":{}},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"EEnCVoPAR7pMjRym":3},"flags":{},"_id":"bbXZ2TJvSYR1Q30m"}

View File

@ -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": [],

View File

@ -117,6 +117,13 @@
"value": 0,
"bonus": 0,
"max": 0
},
"alchemypoints": {
"key": "alchemypoints",
"label": "BOL.resources.alchemypoints",
"value": 0,
"bonus": 0,
"max": 0
}
}
}

View File

@ -12,6 +12,9 @@
<a class="item" data-tab="actions">{{localize "BOL.ui.tab.actions"}}</a>
<a class="item" data-tab="features">{{localize "BOL.ui.tab.features"}}</a>
<a class="item" data-tab="equipment">{{localize "BOL.ui.tab.equipment"}}</a>
{{#if (or isSorcerer isAlchemist)}}
<a class="item" data-tab="spellalchemy">{{localize "BOL.ui.tab.spellalchemy"}}</a>
{{/if}}
<a class="item" data-tab="description">{{localize "BOL.ui.tab.description"}}</a>
</nav>
{{!-- Sheet Body --}}
@ -26,6 +29,13 @@
<div class="tab features" data-group="primary" data-tab="features">
{{> "systems/bol/templates/actor/parts/tabs/actor-features.hbs"}}
</div>
{{#if (or isSorcerer isAlchemist)}}
<div class="tab features" data-group="primary" data-tab="spellalchemy">
{{> "systems/bol/templates/actor/parts/tabs/actor-spellalchemy.hbs"}}
</div>
{{/if}}
<div class="tab equipment" data-group="primary" data-tab="equipment">
{{> "systems/bol/templates/actor/parts/tabs/actor-equipment.hbs"}}
</div>

View File

@ -0,0 +1,65 @@
<!--SORTS-->
{{#if isSorcerer}}
<ol class="items-list">
<li class="item flexrow item-header">
<div class="item-name flex4 left">{{localize "BOL.ui.spells"}}</div>
<div class="item-field flex2 center">{{localize "BOL.ui.circle"}}</div>
<div class="item-field flex1 center">{{localize "BOL.ui.difficulty"}}</div>
<div class="item-field flex1 right"></div>
</li>
{{#each spells as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<h4 class="item-name flex4 left">
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}"/></div>
<a class="rollable" data-roll-type="spell">{{item.name}}</a>
</h4>
<div class="item-field flex1 center">
<span class="item-field">{{item.data.properties.circle}}</span>
</div>
<div class="item-field flex1 center">
<span class="item-field">{{item.data.properties.difficulty}}</span>
</div>
<div class="item-field flex1 right">
<a class="item-control item-edit" title="{{localize "BOL.ui.edit"}}"><i class="fas fa-square"></i></a>
<a class="item-control item-delete" title="{{localize "BOL.ui.delete"}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ol>
{{/if}}
{{#if isAlchemist}}
<ol class="items-list">
<li class="item flexrow item-header">
<div class="item-name flex4 left">{{localize "BOL.ui.alchemy"}}</div>
<div class="item-field flex2 center">{{localize "BOL.ui.type"}}</div>
<div class="item-field flex1 center">{{localize "BOL.ui.difficulty"}}</div>
<div class="item-field flex1 center">{{localize "BOL.ui.advance"}}</div>
<div class="item-field flex1 right"></div>
</li>
{{#each alchemy as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<h4 class="item-name flex4 left">
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}"/></div>
<a class="rollable" data-roll-type="alchemy">{{item.name}}</a>
</h4>
<div class="item-field flex1 center">
<span class="item-field">{{localize (concat "BOL.alchemyItem." item.data.properties.alchemytype)}}</span>
</div>
<div class="item-field flex1 center">
<span class="item-field">{{item.data.properties.difficulty}}</span>
</div>
<div class="item-field flex1 center">
<span class="item-field">{{item.data.properties.pccurrent}} / {{item.data.properties.pccost}}</span>
</div>
<div class="item-field flex1 center">
<a class="inc-dec-btns-alchemy"><i class="fas fa-plus-square"></i></a>
</div>
<div class="item-field flex1 right">
<a class="item-control item-edit" title="{{localize "BOL.ui.edit"}}"><i class="fas fa-square"></i></a>
<a class="item-control item-delete" title="{{localize "BOL.ui.delete"}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ol>
{{/if}}

View File

@ -24,6 +24,8 @@
<hr/>
<div class="resources flexrow">
{{#each resources as |resource id|}}
{{#if (eq resource.key "alchemypoints")}}
{{#if @root.isAlchemist}}
<div class="resource stat flex1 flex-group-center">
<label class="stat-label">{{localize label}}</label><br/>
<input class="stat-value" type="text" name="data.resources.{{key}}.value" value="{{numberFormat value decimals=0 sign=false}}" data-dtype="Number"/>
@ -34,5 +36,18 @@
{{/if}}
<input class="stat-max" type="text" name="data.resources.{{key}}.max" value="{{numberFormat max decimals=0 sign=false}}" data-dtype="Number"/>
</div>
{{/if}}
{{else}}
<div class="resource stat flex1 flex-group-center">
<label class="stat-label">{{localize label}}</label><br/>
<input class="stat-value" type="text" name="data.resources.{{key}}.value" value="{{numberFormat value decimals=0 sign=false}}" data-dtype="Number"/>
{{#if (eq @root.data.type 'player')}}
{{#if (exists bonus)}}
<span class="flexrow"><label class="stat-max">Bonus:</label><input class="stat-max" type="text" name="data.resources.{{key}}.bonus" value="{{numberFormat bonus decimals=0 sign=false}}" data-dtype="Number"/></span>
{{/if}}
{{/if}}
<input class="stat-max" type="text" name="data.resources.{{key}}.max" value="{{numberFormat max decimals=0 sign=false}}" data-dtype="Number"/>
</div>
{{/if}}
{{/each}}
</div>

View File

@ -0,0 +1,11 @@
<h4><strong>Préparation Alchimique : {{alchemy.name}}</strong></h4>
<h4><strong>Points de Création Investis : {{pcCostCurrent}}</strong></h4>
{{#if isSuccess}}
La préparation alchimique a été réalisée avec succès !
<br>Créez l'item ou l'effet correspondant dans votre Inventaire.
<br>L'avancement dans la préparation a été remis à 0.
{{else}}
La préparation alchimique a échouée !
<br>L'avancement dans la préparation a été remis à 0.
{{/if}}

View File

@ -1,5 +1,5 @@
<img class="chat-icon" src="{{weapon.img}}" alt="{{weapon.name}}"/>
<h3><strong>Dommages de {{weapon.name}} : {{damageRoll.total}}</strong>
<h3><strong>Dommages de {{weapon.name}} : {{damageRoll.total}}</strong></h3>
{{#if target}}
<div id="{{applyId}}">

View File

@ -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}}
<button class="chat-button button hero-reroll" data-roll-id=="{{rollId}}" data-actor-id="{{actor.id}}">Relancer (1 P. Heroisme)</button>

View File

@ -0,0 +1,4 @@
<h4><strong>Sort : {{spell.name}}</strong></h4>
<h4><strong>Cout en Points de Pouvoir : {{ppCost}}</strong></h4>
<h4><strong>Points de Pouvoir restants : {{sub ppCurrent ppCost}}</strong></h4>

View File

@ -0,0 +1,38 @@
<form class="{{cssClass}}" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="row flexrow table-header">
<div class="flex1 center">
<h3>{{localize 'BOL.ui.makeAlchemy'}}</h3>
</div>
</div>
</header>
{{> "systems/bol/templates/dialogs/attribute-roll-part.hbs"}}
{{> "systems/bol/templates/dialogs/adv-roll-part.hbs"}}
{{> "systems/bol/templates/dialogs/mod-roll-part.hbs"}}
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.alchemistRank'}}</label>
</div>
<div class="flex1 center cell">{{careerBonus}}</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.alchemyCostTotal'}}</label>
</div>
<div class="flex1 center cell" id="pccost">{{pcCost}}</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.alchemyCurrent'}}</label>
</div>
<div class="flex1 center cell" id="pccostcurrent">{{pcCostCurrent}}</div>
</div>
</form>

View File

@ -5,6 +5,7 @@
<div class="flex1 center cell">
<select name="mod" id="mod" value="{{mod}}">
{{#select mod}}
<option value="4">Inmanquable (+4)</option>
<option value="2">Trés Facile (+2)</option>
<option value="1">Facile (+1)</option>
<option value="0">Moyenne (0)</option>
@ -13,6 +14,8 @@
<option value="-4">Très Difficile (-4)</option>
<option value="-6">Impossible (-6)</option>
<option value="-8">Héroïque (-8)</option>
<option value="-10">Mythique (-10)</option>
<option value="-12">Divine (-12)</option>
{{/select}}
</select>
</div>

View File

@ -0,0 +1,66 @@
<form class="{{cssClass}}" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="row flexrow table-header">
<div class="flex1 center">
<h3>{{localize 'BOL.ui.focusSpell'}}</h3>
</div>
</div>
</header>
{{> "systems/bol/templates/dialogs/attribute-roll-part.hbs"}}
{{> "systems/bol/templates/dialogs/adv-roll-part.hbs"}}
{{> "systems/bol/templates/dialogs/mod-roll-part.hbs"}}
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.sorcererRank'}}</label>
</div>
<div class="flex1 center cell">{{careerBonus}}</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.ppcost'}}</label>
</div>
<div class="flex1 center cell" id="ppcost">{{ppCost}}</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.ppAvailable'}}</label>
</div>
<div class="flex1 center cell">{{ppCurrent}}</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.mandatoryconditions'}}</label>
</div>
<div class="flex1 center cell">
{{#each spell.data.data.properties.mandatoryconditions as | cond idx|}}
{{#if (lt idx @root.spell.data.data.properties.nbmandatoryconditions)}}
<label for="mod">{{cond}}</label>
{{/if}}
{{/each}}
</div>
</div>
<div class="flexrow" style="margin-bottom: 1px;">
<div class="flex1 center bg-darkred">
<label for="mod">{{localize 'BOL.ui.optionnalconditions'}}</label>
</div>
<div class="flex1 center cell">
<select class="flex1" name="optcond" id="optcond" data-type="String" multiple>
{{#each spell.data.data.properties.optionnalconditions as | cond idx|}}
{{#if (lt idx @root.spell.data.data.properties.nboptionnalconditions)}}
<option value="{{idx}}">{{cond}}</option>
{{/if}}
{{/each}}
</select>
</div>
</div>
</form>

View File

@ -3,3 +3,15 @@
<label class="property-label">{{localize "BOL.ui.rank"}}</label>
<input type="text" name="data.rank" value="{{data.rank}}" data-dtype="Number"/>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.isSorcerer"}}</label>
<input class="field-value" type="checkbox" name="data.properties.sorcerer" {{checked data.properties.sorcerer}}>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.isAlchemist"}}</label>
<input class="field-value" type="checkbox" name="data.properties.alchemist" {{checked data.properties.alchemist}}>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.isPriest"}}</label>
<input class="field-value" type="checkbox" name="data.properties.priest" {{checked data.properties.priest}}>
</div>

View File

@ -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}}

View File

@ -0,0 +1,39 @@
<h3 class="form-header">{{localize "BOL.ui.alchemyProperties"}}</h3>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.alchemyType"}}</label>
<select class="field-value" name="data.properties.alchemytype" data-dtype="String">
{{#select data.properties.alchemytype}}
{{#each config.alchemyType as |value id|}}
<option value="{{id}}">{{localize value}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.difficulty"}}</label>
<select name="data.properties.difficulty" value="{{data.properties.difficulty}}">
{{#select data.properties.difficulty}}
<option value="2">Trés Facile (+2)</option>
<option value="1">Facile (+1)</option>
<option value="0">Moyenne (0)</option>
<option value="-1">Ardue (-1)</option>
<option value="-2">Difficile (-2)</option>
<option value="-4">Très Difficile (-4)</option>
<option value="-6">Impossible (-6)</option>
<option value="-8">Héroïque (-8)</option>
{{/select}}
</select>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.pccost"}}</label>
<input class="field-value" type="text" name="data.properties.pccost" value="{{data.properties.pccost}}" data-dtype="Number"/>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.pcnow"}}</label>
<input class="field-value" type="text" name="data.properties.pccurrent" value="{{data.properties.pccurrent}}" data-dtype="Number"/>
</div>

View File

@ -1,19 +1,89 @@
<h3 class="form-header">{{localize "BOL.ui.spellProperties"}}</h3>
<div class="form-group">
<div class="form-fields center">
<label class="property-label">{{localize "BOL.ui.difficulty"}}</label>
<input class="field-value" type="text" name="data.properties.difficulty" value="{{data.properties.difficulty}}" data-dtype="Number"/>
</div>
</div>
<div class="form-group">
<div class="form-fields center">
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.circle"}}</label>
<select class="field-value" name="data.properties.circle" data-dtype="Number">
{{#select data.properties.circle}}
{{#each config.spellType as |value id|}}
<option value="{{id}}">{{localize value}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.difficulty"}}</label>
<select name="data.properties.difficulty" value="{{data.properties.difficulty}}">
{{#select data.properties.difficulty}}
<option value="2">Trés Facile (+2)</option>
<option value="1">Facile (+1)</option>
<option value="0">Moyenne (0)</option>
<option value="-1">Ardue (-1)</option>
<option value="-2">Difficile (-2)</option>
<option value="-4">Très Difficile (-4)</option>
<option value="-6">Impossible (-6)</option>
<option value="-8">Héroïque (-8)</option>
{{/select}}
</select>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.ppcost"}}</label>
<input class="field-value" type="text" name="data.properties.ppcost" value="{{data.properties.ppcost}}" data-dtype="Number"/>
</div>
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.duration"}}</label>
<input class="field-value" type="text" name="data.properties.duration" value="{{data.properties.duration}}" data-dtype="String"/>
</div>
</div>
<div class="form-group">
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.mandatoryconditions"}}</label>
<select class="field-value" name="data.properties.nbmandatoryconditions" data-dtype="Number">
{{#select data.properties.nbmandatoryconditions}}
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
{{/select}}
</select>
</div>
{{#each data.properties.mandatoryconditions as |cond idx|}}
{{#if (lt idx @root.data.properties.nbmandatoryconditions)}}
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.mandatoryconditions"}} {{add idx 1}}</label>
<input class="field-value" type="text" name="data.properties.mandatoryconditions.{{idx}}" value="{{cond}}" data-dtype="String"/>
</div>
{{/if}}
{{/each}}
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.optionnalconditions"}}</label>
<select class="field-value" name="data.properties.nboptionnalconditions" data-dtype="Number">
{{#select data.properties.nboptionnalconditions}}
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
{{/select}}
</select>
</div>
{{#each data.properties.optionnalconditions as |cond idx|}}
{{#if (lt idx @root.data.properties.nboptionnalconditions)}}
<div class="property flexrow">
<label class="property-label">{{localize "BOL.ui.optionnalconditions"}} {{add idx 1}}</label>
<input class="field-value" type="text" name="data.properties.optionnalconditions.{{idx}}" value="{{cond}}" data-dtype="String"/>
</div>
{{/if}}
{{/each}}
<div class="property flexrow">
<div class="form-fields center">
<label class="checkbox">
<input class="field-value" type="checkbox" name="data.properties.spellkeep" {{checked data.properties.spellkeep}}> {{localize "BOL.ui.spellkeep"}}
@ -24,4 +94,4 @@
<input class="field-value" type="checkbox" name="data.properties.concentrate" {{checked data.properties.concentrate}}> {{localize "BOL.ui.concentrate"}}
</label>
</div>
</div>
</div>