forked from public/bol
Add spells and alchemy
This commit is contained in:
parent
5eb059a2fa
commit
aeb7739879
@ -510,6 +510,7 @@ a:hover {
|
||||
.items-list .item .item-control {
|
||||
color: #4b4a44;
|
||||
}
|
||||
|
||||
/* ----------------------------------------- */
|
||||
/* Premade colors */
|
||||
/* ----------------------------------------- */
|
||||
|
35
lang/en.json
35
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",
|
||||
|
35
lang/fr.json
35
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",
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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() {
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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];
|
||||
});
|
||||
|
@ -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",
|
||||
|
@ -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 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.</p><h2>Attributs</h2><p>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.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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é.</p><h2>Idées d’Avantages</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 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.</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 s’adonner au métier des armes, les mercenaires doivent posséder de bonnes prédispositions en vigueur et en agilité.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</h2><p>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.</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 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.</p><h2>Attributs</h2><p>l’agilité est importante pour un chasseur, tout comme la vigueur et l’esprit, encore qu’à un moindre degré.</p><h2>À l’aventure</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 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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</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 d’eau 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 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é.</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 d’informations sur les sorciers au chapitre 6.</p><h2>Attributs</h2><p>les sorciers ont besoin d’un esprit fort, à la fois pour mener leurs études et pour être en mesure de lancer des sorts puissants.</p><h2>À l’aventure</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 qu’ils quittent leur antre pour prendre part eux-mêmes à une expédition dont ils espèrent quelque gain mystique d’importance.</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 n’ont pas besoin de savoir manier une épée pour venir à bout d’un adversaire.</p><h2>Carrière dangereuse</h2><p>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.</p><h2>Idées d’Avantages</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 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.</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 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é.</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 d’informations sur les sorciers au chapitre 6.</p><h2>Attributs</h2><p>les sorciers ont besoin d’un esprit fort, à la fois pour mener leurs études et pour être en mesure de lancer des sorts puissants.</p><h2>À l’aventure</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 qu’ils quittent leur antre pour prendre part eux-mêmes à une expédition dont ils espèrent quelque gain mystique d’importance.</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 n’ont pas besoin de savoir manier une épée pour venir à bout d’un adversaire.</p><h2>Carrière dangereuse</h2><p>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.</p><h2>Idées d’Avantages</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 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.</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 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.</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 d’aura, ainsi qu’une bonne dose d’agilité et un esprit aiguisé.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</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 l’Axos, des toundras glacées de Valgard, du désert de Beshaar ou d’autres 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 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.</p><h2>Attributs</h2><p>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é.</p><h2>Idées de Désavantages</h2><p>arrogant, gars de la ville, mauvaise réputation, obsession (achever la mission), traqué.</p><h2>À l’aventure</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 d’un combat particulièrement violent et sans pitié.</p><h2>Idées d’Avantages</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 d’eau 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, s’orienter 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 qu’un capitaine refuse d’accepter à 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, qu’on appelle l’argot des mers.</p><h2>Attributs</h2><p>les marins ont besoin d’une bonne vigueur et d’une bonne agilité.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</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 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.</p><h2>Attributs</h2><p>l’esprit est l’attribut essentiel pour un scribe.</p><h2>À l’aventure</h2><p>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.</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 d’une quelconque utilité au combat.</p><h2>Idées d’Avantages</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 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é.</p><h2>Attributs</h2><p>les voleurs ont besoin d’une bonne agilité, mais aussi d’un esprit aiguisé.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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é.</p><h2>Idées d’Avantages</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 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.</p><p>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.</p><h2>Attributs</h2><p>l’aura est l’attribut le plus important pour une tentatrice. L’agilité et l’esprit sont également utiles.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</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 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.</p><p>Les druides rendent un culte aux Seigneurs Sombres et sont moins « fréquentables », notamment du fait qu’ils pratiquent les sacrifices humains.</p><p>Vous trouverez davantage d’informations sur les prêtres au chapitre 6.</p><h2>Attributs</h2><p>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.</p><h2>À l’aventure</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. D’autres 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 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.</p><h2>Idées d’Avantages</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 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.</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 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.</p><p>Les druides rendent un culte aux Seigneurs Sombres et sont moins « fréquentables », notamment du fait qu’ils pratiquent les sacrifices humains.</p><p>Vous trouverez davantage d’informations sur les prêtres au chapitre 6.</p><h2>Attributs</h2><p>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.</p><h2>À l’aventure</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. D’autres 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 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.</p><h2>Idées d’Avantages</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 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.</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 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é).</p><p>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.</p><h2>Attributs</h2><p>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.</p><h2>À l’aventure</h2><p>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.</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 d’Avantages</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 d’oreille, 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 d’ours)","type":"feature","img":"/systems/bol/ui/icons/career.webp","data":{"subtype":"career","description":"<h1>Dresseur (maître des bêtes/montreur d’ours)</h1><p>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.</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 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.</p><h2>À l’aventure</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 d’arènes, ou par des aventuriers qui s’attendent à 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 d’Avantages</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 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.</p><h2>Attributs</h2><p>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.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</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 d’oreille, 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 qu’ils 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 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.</p><h2>Attributs</h2><p>à 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.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>les circonstances où des rangs dans la carrière d’alchimiste pourraient se révéler utiles au combat sont particulièrement rares.</p><h2>Idées d’Avantages</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 d’alchimiste 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 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.</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 qu’ils 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 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.</p><h2>Attributs</h2><p>à 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.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>les circonstances où des rangs dans la carrière d’alchimiste pourraient se révéler utiles au combat sont particulièrement rares.</p><h2>Idées d’Avantages</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 d’alchimiste 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 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.</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 l’alcool et s’y entendent en intimidation. Certaines des tâches qu’effectuent 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>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</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 d’oreille, 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>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.</p><p>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.</p><h2>Attributs</h2><p>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.</p><h2>À l’aventure</h2><p>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.</p><h2>Combat</h2><p>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.</p><h2>Idées d’Avantages</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 d’eau 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 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 !</p><h2>Attributs</h2><p>les marchands ont besoin d’un esprit vif et d’un certain degré d’aura pour marchander et faire des affaires.</p><h2>À l’aventure</h2><p>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.</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 d’Avantages</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"}
|
||||
|
@ -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": [],
|
||||
|
@ -117,6 +117,13 @@
|
||||
"value": 0,
|
||||
"bonus": 0,
|
||||
"max": 0
|
||||
},
|
||||
"alchemypoints": {
|
||||
"key": "alchemypoints",
|
||||
"label": "BOL.resources.alchemypoints",
|
||||
"value": 0,
|
||||
"bonus": 0,
|
||||
"max": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
||||
|
65
templates/actor/parts/tabs/actor-spellalchemy.hbs
Normal file
65
templates/actor/parts/tabs/actor-spellalchemy.hbs
Normal 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}}
|
@ -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>
|
||||
|
11
templates/chat/rolls/alchemy-roll-card.hbs
Normal file
11
templates/chat/rolls/alchemy-roll-card.hbs
Normal 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}}
|
@ -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}}">
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
38
templates/dialogs/alchemy-roll-dialog.hbs
Normal file
38
templates/dialogs/alchemy-roll-dialog.hbs
Normal 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>
|
@ -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>
|
||||
|
66
templates/dialogs/spell-roll-dialog.hbs
Normal file
66
templates/dialogs/spell-roll-dialog.hbs
Normal 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>
|
@ -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>
|
||||
|
@ -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}}
|
||||
|
39
templates/item/parts/properties/item/alchemy-properties.hbs
Normal file
39
templates/item/parts/properties/item/alchemy-properties.hbs
Normal 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>
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user