Merge branch 'v1.4-signes-alcooliques' into 'v1.4'

Consommation d'alcool, signes draconiques, petits fixes

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!241
This commit is contained in:
Leratier Bretonnien 2021-05-18 18:03:20 +00:00
commit d9618c6bbf
21 changed files with 255 additions and 221 deletions

View File

@ -27,8 +27,9 @@ import { EffetsDraconiques } from "./tmr/effets-draconiques.js";
import { Draconique } from "./tmr/draconique.js";
import { RdDCarac } from "./rdd-carac.js";
import { Monnaie } from "./item-monnaie.js";
import { DialogConsommer } from "./dialog-consommer.js";
import { DialogConsommer } from "./dialog-item-consommer.js";
import { DialogFabriquerPotion } from "./dialog-fabriquer-potion.js";
import { RollDataAjustements } from "./rolldata-ajustements.js";
/* -------------------------------------------- */
@ -1592,21 +1593,33 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async jetDeMoral(situation, messageReussi = undefined, messageManque = undefined) {
let jetMoral = await RdDDice.roll("1d20", { showDice: true });
let moralActuel = Misc.toInt(Misc.templateData(this).compteurs.moral.value);
const difficulte = 10 + moralActuel;
const succes = jetMoral.total <= difficulte;
let jetMoral = await this._jetMoral(situation)
let ajustementMoral = this._calculAjustementMoral(succes, moralActuel, situation);
let defaultMessage = `Vous ${ajustementMoral > 0 ? "gagnez du moral" : ajustementMoral < 0 ? "perdez du moral" : "gardez votre moral"}.`;
let finMessage = succes ? (messageReussi != undefined ? messageReussi : defaultMessage) : (messageManque != undefined ? messageManque : defaultMessage);
let message = `Jet de moral ${succes ? "réussi" : "manqué"} en situation ${situation} (${jetMoral.total}/${difficulte}). <br/>${finMessage}`;
let defaultMessage = `Vous ${jetMoral.ajustement > 0 ? "gagnez du moral" : jetMoral.ajustement < 0 ? "perdez du moral" : "gardez votre moral"}.`;
let finMessage = jetMoral.succes ? (messageReussi != undefined ? messageReussi : defaultMessage) : (messageManque != undefined ? messageManque : defaultMessage);
let message = `Jet de moral ${jetMoral.succes ? "réussi" : "manqué"} en situation ${situation} (${jetMoral.jet}/${jetMoral.difficulte}). <br/>${finMessage}`;
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: message
});
await this.moralIncDec(ajustementMoral);
return ajustementMoral;
return jetMoral.ajustement;
}
async _jetMoral(situation) {
const moralActuel = Misc.toInt(Misc.templateData(this).compteurs.moral.value);
const jet = await RdDDice.rollTotal("1d20", { showDice: true });
const difficulte = 10 + moralActuel;
const succes = jet <= difficulte;
const jetMoral = {
actuel: moralActuel,
jet: jet,
situation: situation,
difficulte: difficulte,
succes: succes,
ajustement: this._calculAjustementMoral(succes, moralActuel, situation)
};
await this.moralIncDec(jetMoral.ajustement);
return jetMoral;
}
/* -------------------------------------------- */
@ -1652,11 +1665,11 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
async jetEthylisme(forceAlcool = 0) {
async jetEthylisme() {
const actorData = Misc.data(this);
let rollData = {
vie: actorData.data.sante.vie.max,
forceAlcool: forceAlcool,
forceAlcool: 0,
etat: this.getEtatGeneral({ ethylisme: true }),
diffNbDoses: -Number(actorData.data.compteurs.ethylisme.nb_doses || 0),
finalLevel: 0,
@ -1664,77 +1677,7 @@ export class RdDActor extends Actor {
ajustementsForce: CONFIG.RDD.difficultesLibres,
}
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-ethylisme.html', rollData);
new RdDRollDialogEthylisme(html, rollData, this, r => this.performEthylisme(r)).render(true);
}
/* -------------------------------------------- */
async performEthylisme(rollData) {
const actorData = Misc.data(this);
let ethylisme = duplicate(actorData.data.compteurs.ethylisme);
// Jet d'ethylisme
let rollEthylisme = await RdDResolutionTable.roll(rollData.vie, rollData.finalLevel);
let jetVieView = {
ethylismeEtape: 'Vie',
vie: rollData.vie,
forceAlcool: rollData.forceAlcool,
finalLevel: rollData.finalLevel,
jetVieSuccess: rollEthylisme.isSuccess,
jetVieText: RdDResolutionTable.explain(rollEthylisme),
};
if (rollEthylisme.isSuccess) {
ethylisme.nb_doses++;
jetVieView.doses = ethylisme.nb_doses;
} else {
ethylisme.value = Math.max(ethylisme.value - 1, -7);
ethylisme.nb_doses = 0;
jetVieView.doses = ethylisme.nb_doses;
jetVieView.ajustementEthylique = ethylisme.value;
jetVieView.nomEthylisme = RdDUtility.getNomEthylisme(ethylisme.value);
}
RdDResolutionTable.displayRollData(jetVieView, this, 'chat-resultat-ethylisme.html');
if (rollEthylisme.isEchec) {
let enduranceLostRoll = await RdDDice.roll("1d6");
// enduranceLostRoll.showDice = true;
RdDDice.show(enduranceLostRoll);
let enduranceLost = enduranceLostRoll.total;
let perteEndurance = await this.santeIncDec("endurance", -enduranceLost, { ethylisme: true });
let jetEnduranceView = {
ethylismeEtape: 'Endurance',
enduranceLost: perteEndurance.perte,
perteVie: perteEndurance.perteVie,
};
RdDResolutionTable.displayRollData(jetEnduranceView, this, 'chat-resultat-ethylisme.html');
if (!ethylisme.jet_moral) {
let messageReussi = "L'alcool vous met en joie. Vous gagnez un point de moral";
let messageManque = "";
if (ethylisme.value == -1) {
messageManque = "Vous avez l'alcool triste. Vous perdez un point de moral.";
}
let adjust = await this.jetDeMoral('heureuse', messageReussi, messageManque);
if (adjust == 1) {
ethylisme.jet_moral = true;
} else if (ethylisme.value == -1) {
ethylisme.jet_moral = true;
await this.moralIncDec(-1);
}
}
// Qui a bu boira (p 164)
let rollVolonte = await RdDResolutionTable.roll(actorData.data.carac.volonte.value,
Math.min(ethylisme.value, 0) + actorData.data.compteurs.moral.value);
let jetVolonteView = {
ethylismeEtape: 'Volonte',
jetVolonteSuccess: rollVolonte.isSuccess,
jetVolonteText: RdDResolutionTable.explain(rollVolonte),
};
RdDResolutionTable.displayRollData(jetVolonteView, this, 'chat-resultat-ethylisme.html');
}
await this.update({ 'data.compteurs.ethylisme': ethylisme });
new RdDRollDialogEthylisme(html, rollData, this, r => this.saouler(r.forceAlcool)).render(true);
}
/* -------------------------------------------- */
@ -1806,33 +1749,84 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async boire(item, doses, options = { diminuerQuantite: true }) {
if (!item.getActionPrincipale()) return;
const tplData = Misc.templateData(item);
const desaltere = tplData.desaltere;
const itemData = Misc.data(item);
const desaltere = itemData.data.desaltere;
if (desaltere > 0) {
await this.updateCompteurValue('eau', Misc.keepDecimals(Misc.templateData(this).compteurs.eau.value + desaltere * doses, 2));
}
if (item.isAlcool()) {
for (let i = 0; i < doses; i++) {
await this.saouler(tplData.force);
await this.saouler(itemData.data.force, item);
}
}
await item.diminuerQuantite(doses, options);
}
/* -------------------------------------------- */
async saouler(forceAlcool) {
const actorTplData = Misc.templateData(this);
const etatGeneral = this.getEtatGeneral({ ethylisme: true });
const nbDoses = -Number(actorTplData.compteurs.ethylisme.nb_doses || 0);
let rollData = {
vieValue: actorTplData.sante.vie.value,
async saouler(forceAlcool, alcool = undefined) {
const actorData = Misc.data(this);
let ethylisme = duplicate(actorData.data.compteurs.ethylisme);
const etat = this.getEtatGeneral({ ethylisme: true });
const nbDoses = Number(actorData.data.compteurs.ethylisme.nb_doses || 0);
const ethylismeData = {
alias: actorData.name,
actor: actorData,
vie: actorData.data.sante.vie.max,
alcool: Misc.data(alcool),
jetVie: {
forceAlcool: forceAlcool,
etat: etatGeneral,
diffNbDoses: nbDoses,
finalLevel: nbDoses + forceAlcool + etatGeneral,
diffConditions: 0,
};
await this.performEthylisme(rollData);
nbDoses: nbDoses,
selectedCarac: actorData.data.carac.constitution,
carac: actorData.data.carac,
caracValue: actorData.data.sante.vie.max,
finalLevel: etat + forceAlcool - nbDoses,
showDice: true
},
}
await RdDResolutionTable.rollData(ethylismeData.jetVie);
RollDataAjustements.calcul(ethylismeData.jetVie, this);
if (ethylismeData.jetVie.rolled.isSuccess) {
ethylisme.nb_doses++;
} else {
ethylisme.value = Math.max(ethylisme.value - 1, -7);
ethylisme.nb_doses = 0;
let perte = await RdDDice.rollTotal("1d6", {showDice:true});
ethylismeData.perteEndurance = await this.santeIncDec("endurance", -perte, { ethylisme: true });
if (!ethylisme.jet_moral) {
ethylismeData.jetMoral = await this._jetMoral('heureuse');
if (ethylismeData.jetMoral.ajustement == 1) {
ethylismeData.moralAlcool ='heureux';
ethylisme.jet_moral = true;
} else if (ethylisme.value == -1) {
ethylismeData.jetMoral.ajustement = -1;
ethylismeData.moralAlcool ='triste';
ethylisme.jet_moral = true;
await this.moralIncDec(-1);
}
}
if (ethylisme.value<0) {
// Qui a bu boira (p 164)
ethylismeData.jetVolonte = {
selectedCarac: actorData.data.carac.volonte,
caracValue: actorData.data.carac.volonte.value,
ethylisme: ethylisme.value,
finalLevel: ethylisme.value + actorData.data.compteurs.moral.value,
showDice: true
}
await RdDResolutionTable.rollData(ethylismeData.jetVolonte);
RollDataAjustements.calcul(ethylismeData.jetVolonte, this);
}
}
ethylismeData.ajustementEthylique = ethylisme.value;
ethylismeData.nomEthylisme = RdDUtility.getNomEthylisme(ethylisme.value);
ethylismeData.doses = ethylisme.nb_doses;
await this.update({ 'data.compteurs.ethylisme': ethylisme });
await RdDResolutionTable.displayRollData(ethylismeData, this, 'chat-resultat-ethylisme.html');
}
/* -------------------------------------------- */
@ -2557,16 +2551,17 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async rollMeditation(id) {
let meditation = Misc.data(this.getMeditation(id));
const meditation = duplicate(Misc.data(this.getMeditation(id)));
const competence = duplicate(Misc.data(this.getCompetence(meditation.data.competence)));
competence.data.defaut_carac = "intellect"; // Meditation = toujours avec intellect
let meditationData = {
competence: duplicate(Misc.data(this.getCompetence(meditation.data.competence))),
meditation: duplicate(meditation),
competence: competence,
meditation: meditation,
conditionMeditation: { isHeure: false, isVeture: false, isComportement: false, isPurification: false },
diffConditions: 0,
use: { libre: false, conditions: true, },
carac: { "intellect": Misc.templateData(this).carac.intellect }
};
meditationData.competence.data.defaut_carac = "intellect"; // Meditation = tjs avec intellect
const dialog = await RdDRoll.create(this, meditationData,
{

View File

@ -8,7 +8,7 @@ import { TMRType, TMRUtility } from "./tmr-utility.js";
export class DialogCreateSigneDraconique extends Dialog {
static async createSigneForActors() {
const signe = await RdDItemSigneDraconique.randomSigneDraconique();
const signe = await RdDItemSigneDraconique.randomSigneDraconique({ephemere: true});
let dialogData = {
signe: signe,
tmrs: TMRUtility.listSelectedTMR(signe.data.typesTMR ?? []),
@ -76,7 +76,7 @@ export class DialogCreateSigneDraconique extends Dialog {
html.find(".signe-xp-sort").change((event) => this.onValeurXpSort(event));
}
async setSigneAleatoire() {
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique();
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique({ephemere: true});
$("[name='signe.name']").val(newSigne.name);
$("[name='signe.data.valeur.norm']").val(newSigne.data.valeur.norm);

View File

@ -4,12 +4,12 @@ export class DialogConsommer extends Dialog {
static async create(actor, item, template = undefined, options = {}) {
const consommerData = DialogConsommer.prepareData(actor, item, options);
const html = await renderTemplate(template ?? `systems/foundryvtt-reve-de-dragon/templates/consommer/dialog-${Misc.data(item).type}.html`, consommerData);
const html = await renderTemplate(template ?? `systems/foundryvtt-reve-de-dragon/templates/dialog-item-consommer.html`, consommerData);
return new DialogConsommer(actor, item, consommerData, html, options)
}
constructor(actor, item, consommerData, html, options = {}) {
mergeObject(options, { classes: ["dialogconsommer"], width: 600, height: 500, 'z-index': 99999 }, { overwrite: false })
mergeObject(options, { classes: ["dialogconsommer"], width: 350, height: 450, 'z-index': 99999 }, { overwrite: false })
let conf = {
title: consommerData.title,

View File

@ -67,15 +67,6 @@ export class RdDSigneDraconiqueItemSheet extends ItemSheet {
async setSigneAleatoire() {
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique();
// $("[name='signe.name']").val(newSigne.name);
// $("[name='signe.data.valeur.norm']").val(newSigne.data.valeur.norm);
// $("[name='signe.data.valeur.sign']").val(newSigne.data.valeur.sign);
// $("[name='signe.data.valeur.part']").val(newSigne.data.valeur.part);
// $("[name='signe.data.difficulte']").val(newSigne.data.difficulte);
// $("[name='signe.data.duree']").val(newSigne.data.duree);
// $("[name='signe.data.ephemere']").prop("checked", newSigne.data.ephemere);
// $(".select-tmr").val(newSigne.data.typesTMR);
// this.setEphemere(newSigne.data.ephemere);
this.object.update(newSigne);
}

View File

@ -1,7 +1,8 @@
import { defaultItemImg } from "./item.js";
import { Misc } from "./misc.js";
import { RdDDice } from "./rdd-dice.js";
import { RdDRollTables } from "./rdd-rolltables.js";
import { TMRType } from "./tmr-utility.js";
import { TMRType, TMRUtility } from "./tmr-utility.js";
const tableSignesIndicatifs = [
{ rarete: "Très facile", difficulte: 0, xp: 6, nbCases: 14 },
@ -11,6 +12,7 @@ const tableSignesIndicatifs = [
{ rarete: "Ardu", difficulte: -8, xp: 30, nbCases: 1 }
]
export class RdDItemSigneDraconique {
static prepareSigneDraconiqueMeditation(meditation, rolled) {
@ -21,11 +23,11 @@ export class RdDItemSigneDraconique {
type: "signedraconique",
img: meditation.img,
data: {
"typesTMR": [Misc.upperFirst(meditation.data.tmr)],
"difficulte": RdDItemSigneDraconique.getDiffSigneMeditation(rolled.code),
"ephemere": true,
"duree": "1 round",
"valeur": { "norm": 3, "sign": 5, "part": 10 }
typesTMR: [TMRUtility.typeTmrName(meditation.data.tmr)],
difficulte: RdDItemSigneDraconique.getDiffSigneMeditation(rolled.code),
ephemere: true,
duree: "1 round",
valeur: { "norm": 3, "sign": 5, "part": 10 }
}
};
}
@ -68,15 +70,15 @@ export class RdDItemSigneDraconique {
}
}
static async randomSigneDraconique() {
static async randomSigneDraconique(options = { ephemere: undefined }) {
let modele = await RdDDice.rollOneOf(tableSignesIndicatifs);
return {
name: await RdDItemSigneDraconique.randomSigneDescription(),
type: "signedraconique",
img: 'systems/foundryvtt-reve-de-dragon/icons/tmr/signe_draconique.webp',
img: defaultItemImg.signedraconique,
data: {
typesTMR: await RdDItemSigneDraconique.randomTmrs(modele.nbCases),
ephemere: true,
ephemere: options?.ephemere == undefined ? RdDDice.rollTotal("1d2") == 2 : options.ephemere,
duree: "1 round",
difficulte: modele.difficulte,
valeur: { norm: modele.xp, sign: modele.xp, part: Math.floor(modele.xp * 1.5) },
@ -85,7 +87,8 @@ export class RdDItemSigneDraconique {
}
static async randomTmrs(nbTmr = undefined) {
let tmrs = Object.values(TMRType).map(value => Misc.upperFirst(value.name));
let tmrs = Object.values(TMRType)
.map(value => TMRUtility.typeTmrName(value.name));
let keep = nbTmr ?? (await RdDDice.rollTotal("1d" + TMRType.length) + 1);
for (let i = tmrs.length; i > keep; i--) {
tmrs.splice(await RdDDice.rollTotal("1d" + i), 1);

View File

@ -7,9 +7,45 @@ const typesObjetsEquipement = ["objet", "arme", "armure", "conteneur", "herbe",
const typesObjetsOeuvres = ["oeuvre", "recettecuisine", "musique", "chant", "danse", "jeu"];
const encBrin = 0.00005;// un brin = 1 décigramme = 1/10g = 1/10000kg = 1/20000 enc
export const defaultItemImg = {
competence: "systems/foundryvtt-reve-de-dragon/icons/competence_defaut.webp",
compcreature: "systems/foundryvtt-reve-de-dragon/icons/competence_defaut.webp",
arme: "systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_gnome.webp",
armure: "systems/foundryvtt-reve-de-dragon/icons/armes_armures/armure_plaques.webp",
conteneur: "systems/foundryvtt-reve-de-dragon/icons/objets/sac_a_dos.webp",
sort: "systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp",
herbe: "systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.png",
ingredient: "systems/foundryvtt-reve-de-dragon/icons/objets/sable_poudre.webp",
livre: "systems/foundryvtt-reve-de-dragon/icons/objets/livre.webp",
potion: "systems/foundryvtt-reve-de-dragon/icons/objets/liqueur_de_bagdol.webp",
queue: "systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp",
ombre: "systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp",
souffle: "systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp",
tete: "systems/foundryvtt-reve-de-dragon/icons/tete_dragon.webp",
meditation: "systems/foundryvtt-reve-de-dragon/icons/meditations_ecrits/meditation_alchimie.webp",
recettealchimique: "systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.webp",
chant: "systems/foundryvtt-reve-de-dragon/icons/arts/chant_0.webp",
danse: "systems/foundryvtt-reve-de-dragon/icons/arts/danse_0.webp",
jeu: "systems/foundryvtt-reve-de-dragon/icons/arts/jeux_petasse.webp",
recettecuisine: "systems/foundryvtt-reve-de-dragon/icons/arts/recette_cuisine_1.webp",
musique: "systems/foundryvtt-reve-de-dragon/icons/arts/chant_0.webp",
maladie: "systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp",
poison: "systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp",
oeuvre: "systems/foundryvtt-reve-de-dragon/icons/competence_comedie.webp",
nourritureboisson: "systems/foundryvtt-reve-de-dragon/icons/objets/provision_crue.webp",
signedraconique: "systems/foundryvtt-reve-de-dragon/icons/tmr/signe_draconique.webp",
}
/* -------------------------------------------- */
export class RdDItem extends Item {
constructor(data) {
if (!data.img) {
data.img = defaultItemImg[data.type];
}
super(data);
}
static getTypeObjetsEquipement() {
return typesObjetsEquipement;
}

View File

@ -52,10 +52,12 @@ export class RdDCarac {
return selectedCarac?.label?.toLowerCase()?.match(/r(e|ê)ve(( |-)actuel)?/);
}
static isIgnoreEtatGeneral(selectedCarac, competence) {
static isIgnoreEtatGeneral(rollData) {
const selectedCarac = rollData.selectedCarac;
return !selectedCarac ||
rollData.ethylisme ||
RdDCarac.isChance(selectedCarac) ||
(RdDCarac.isReve(selectedCarac) && !competence);
(RdDCarac.isReve(selectedCarac) && !rollData.competence);
}

View File

@ -498,7 +498,10 @@ export class RdDCombat {
ui.notifications.error("Le joueur " + game.user.name + " n'est connecté à aucun personnage. Impossible de continuer.");
return;
}
if ((game.user.isGM && !defenderToken.actor.hasPlayerOwner) || (defenderToken.actor.hasPlayerOwner && (game.user.character._id == defenderToken.actor.data._id))) {
const isDefenderConnectedPlayer = defenderToken.actor.hasPlayerOwner; // TODO: tester si le joueur est pas connecté
if (isDefenderConnectedPlayer
? game.user.character?._id == defenderToken.actor.data._id // TODO: vérifier le cas d'un joueur qui est owner de plusieurs personnages
: game.user.isGM) {
const rddCombat = RdDCombat.createForAttackerAndDefender(msg.attackerId, msg.defenderTokenId);
if (rddCombat) {
const defenderRoll = msg.defenderRoll;

View File

@ -1,4 +1,3 @@
import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { Misc } from "./misc.js";
/**
@ -52,10 +51,8 @@ export class RdDRollDialogEthylisme extends Dialog {
}
async updateRollResult() {
this.rollData.finalLevel = Number(this.rollData.etat) + Number(this.rollData.forceAlcool) + this.rollData.diffNbDoses;
// Mise à jour valeurs
$("#roll-param").text(this.rollData.vie + " / " + Misc.toSignedString(this.rollData.finalLevel));
$("#roll-param").text(this.rollData.vie + " / " + Misc.toSignedString(Number(this.rollData.etat) + Number(this.rollData.forceAlcool) + this.rollData.diffNbDoses));
$(".table-resolution").remove();
}

View File

@ -218,6 +218,7 @@ export class RdDUtility {
Handlebars.registerHelper('buildConteneur', (objet) => { return RdDUtility.buildConteneur(objet); });
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', coord => TMRUtility.typeTmrName(coord));
Handlebars.registerHelper('equals', (a, b) => a == b);
return loadTemplates(templatePaths);

View File

@ -5,6 +5,7 @@ import { RdDItemSort } from "./item-sort.js";
import { Misc } from "./misc.js";
import { RdDBonus } from "./rdd-bonus.js";
import { RdDCarac } from "./rdd-carac.js";
import { RdDUtility } from "./rdd-utility.js";
import { ReglesOptionelles } from "./regles-optionelles.js";
/**
@ -50,9 +51,9 @@ export const referenceAjustements = {
getValue: (rollData, actor) => RdDBonus.find(rollData.surpriseDefenseur).attaque,
},
etat: {
isUsed: (rollData, actor) => !RdDCarac.isIgnoreEtatGeneral(rollData.selectedCarac, rollData.competence),
isUsed: (rollData, actor) => !RdDCarac.isIgnoreEtatGeneral(rollData),
getLabel: (rollData, actor) => 'Etat général',
getValue: (rollData, actor) => actor.getEtatGeneral()
getValue: (rollData, actor) => actor.getEtatGeneral({ ethylisme: rollData.forceAlcool != undefined })
},
malusArmure: {
isVisible: (rollData, actor) => RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac),
@ -120,6 +121,24 @@ export const referenceAjustements = {
isUsed: (rollData, actor) => rollData.tmr && rollData.rencontre?.name,
getLabel: (rollData, actor) => rollData.rencontre?.name,
getValue: (rollData, actor) => - (rollData.rencontre?.force ?? 0)
},
ethylismeAlcool: {
isVisible: (rollData, actor) => rollData.nbDoses != undefined,
isUsed: (rollData, actor) => rollData.nbDoses != undefined,
getLabel: (rollData, actor) => "Doses déjà bues: ",
getValue: (rollData, actor) => - rollData.nbDoses,
},
ethylismeDoses: {
isVisible: (rollData, actor) => rollData.nbDoses != undefined,
isUsed: (rollData, actor) => rollData.nbDoses != undefined,
getLabel: (rollData, actor) => "Force de l'alcool: ",
getValue: (rollData, actor) => rollData.forceAlcool,
},
ethylisme:{
isVisible: (rollData, actor) => rollData.ethylisme != undefined,
isUsed: (rollData, actor) => rollData.ethylisme != undefined,
getLabel: (rollData, actor) => "Ethylisme - " + RdDUtility.getNomEthylisme(rollData.ethylisme),
getValue: (rollData, actor) => rollData.ethylisme,
}
}

View File

@ -347,6 +347,9 @@ export class TMRUtility {
return Grammar.articleDetermine(tmr.type) + ' ' + tmr.label;
}
static typeTmrName(type){
return Misc.upperFirst(TMRType[Grammar.toLowerCaseNoAccent(type)].name);
}
static listSelectedTMR(typesTMR) {
return Object.values(TMRType).map(value => Misc.upperFirst(value.name))
.sort()

View File

@ -71,7 +71,7 @@
{"_id":"OXFFRZOqlhZDJas3","name":"Béret de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/beret_velours.webp","data":{"description":"","quantite":1,"encombrement":0.05,"equipe":false,"resistance":0,"qualite":0,"cout":3},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.OXFFRZOqlhZDJas3"}}}
{"_id":"OYWzXiQUFsjU5AF2","name":"Perles de Bjwal","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/perles_bjwal.webp","data":{"description":"<p>Petits granul&eacute;s translucides.</p>","quantite":1,"encombrement":0.1,"rarete":"","categorie":"Alchimie","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"cout":1,"soinherbe":"","soinherbebonus":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.OYWzXiQUFsjU5AF2"}}}
{"_id":"P0yc6QfgKVmM0fpu","name":"Ecuelle de grès","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecuelle_gres.webp","data":{"description":"","quantite":1,"encombrement":0.1,"equipe":false,"resistance":0,"qualite":0,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.P0yc6QfgKVmM0fpu"}}}
{"name":"Provisions non-cuites","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/provision_crue.webp","data":{"description":"","sust":1,"boisson":false,"desaltere":0,"alcoolise":false,"force":0,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.01},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{"core":{"sourceId":"Item.2P30CKBRVIPiTf3Z"}},"_id":"PAqV7Fj8AFEpfEpy"}
{"_id":"PAqV7Fj8AFEpfEpy","name":"Provisions non-cuites","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/provision_crue.webp","data":{"description":"","sust":1,"boisson":false,"desaltere":0,"alcoolise":false,"force":0,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.01},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{"core":{"sourceId":"Item.2P30CKBRVIPiTf3Z"}}}
{"_id":"PH2J4zR0hwXSg0vc","name":"Charbon de bois 1 kg","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/charbon.webp","data":{"description":"","quantite":1,"encombrement":0.04,"equipe":false,"resistance":0,"qualite":0,"cout":0.06},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PH2J4zR0hwXSg0vc"}}}
{"_id":"PSc92VlQCdNnbPlg","name":"Lance courte","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/lance.webp","data":{"categorie_parade":"lances","description":"","quantite":1,"encombrement":2,"equipe":false,"dommages":"2","penetration":0,"force":"8","resistance":5,"competence":"Lance","cout":3,"portee_courte":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"portee_moyenne":0,"portee_extreme":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"lance"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PSc92VlQCdNnbPlg"}}}
{"_id":"PaJoTirnA6h4F3pH","name":"Hameçon","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/hame%C3%A7on.webp","data":{"description":"","quantite":1,"encombrement":0.01,"equipe":false,"resistance":0,"qualite":0,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PaJoTirnA6h4F3pH"}}}
@ -112,14 +112,14 @@
{"_id":"XlKp5BvZX8A03fUg","name":"Sac à dos de cuir","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sac_a_dos.webp","data":{"description":"","capacite":25,"encombrement":0.4,"equipe":false,"qualite":0,"contenu":[],"cout":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XlKp5BvZX8A03fUg"}}}
{"_id":"XoslLyWIJYY2RGzz","name":"Fiole de verre (20 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fiole_verre.webp","data":{"description":"","capacite":0.1,"encombrement":0.06,"equipe":false,"qualite":0,"contenu":[],"cout":0.2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XoslLyWIJYY2RGzz"}}}
{"_id":"XwuLVGasPJXzvC09","name":"Encre 20 cl","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/encre_20cl.webp","data":{"description":"","quantite":1,"encombrement":0.1,"equipe":false,"resistance":0,"qualite":0,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XwuLVGasPJXzvC09"}}}
{"_id":"YHPrUuGGGTGZMNAg","name":"Bière","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_biere.webp","data":{"description":"<p>1 mesure (20cl) de bi&egrave;re.</p>","quantite":1,"encombrement":0.1,"equipe":false,"qualite":0,"cout":0.01,"sust":0,"boisson":true,"desaltere":0.8,"alcoolise":true,"force":1,"exotisme":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.u7lMLkVlFCXBj8Bc"}}}
{"_id":"YHPrUuGGGTGZMNAg","name":"Bière","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_biere.webp","data":{"description":"<p>1 mesure (20cl) de bi&egrave;re.</p>","sust":0,"boisson":true,"desaltere":0.8,"alcoolise":true,"force":-1,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.01,"equipe":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.u7lMLkVlFCXBj8Bc"}}}
{"_id":"YNHDt4EerstJvx5l","name":"Le Principe Drachromatique","type":"livre","img":"systems/foundryvtt-reve-de-dragon/icons/competence_oniros.png","data":{"description":"<p>Cet ouvrage de profonde &eacute;rudition sur l&rsquo;origine des couleurs et leur signification onirique est fonci&egrave;rement incompr&eacute;hensible, &agrave; moins de poss&eacute;der un minimum de +4 en voie d&rsquo;Oniros. Il permet d&rsquo;envisager la synth&egrave;se des sorts d&rsquo;<em>Invuln&eacute;rabilit&eacute; Chromatique</em> et de <em>Transmutation Chromatique</em>. Sans son assimilation pr&eacute;alable, la synth&egrave;se de ces sorts est totalement inenvisageable. Sa difficult&eacute; de lecture est de -4, son assimilation requiert 26 points de t&acirc;che, p&eacute;riodicit&eacute; 1 heure.</p>","competence":"","auteur":"Anonyme","quantite":1,"difficulte":-4,"points_de_tache":26,"encombrement":0,"xp":"","niveau_minimum":0,"niveau_maximum":0,"cout":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.YNHDt4EerstJvx5l"}}}
{"_id":"YNbbSGLnexiXNyXU","name":"Manteau de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/manteau_laine.webp","data":{"description":"","quantite":1,"encombrement":0.8,"equipe":false,"resistance":0,"qualite":0,"cout":0.6},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.YNbbSGLnexiXNyXU"}}}
{"_id":"Yh7VGX3BikmIjVQH","name":"Gourdin","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/gourdin.webp","data":{"categorie_parade":"","description":"","quantite":1,"encombrement":1,"equipe":false,"dommages":"1","penetration":0,"force":"7","resistance":8,"competence":"Masse à 1 main","cout":0,"portee_courte":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"portee_moyenne":0,"portee_extreme":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"gourdin"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Yh7VGX3BikmIjVQH"}}}
{"_id":"Yyn39VDRnO6oA3Uq","name":"Echecs draconics en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/echecs.webp","data":{"description":"","quantite":1,"encombrement":0.5,"equipe":false,"resistance":0,"qualite":0,"cout":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Yyn39VDRnO6oA3Uq"}}}
{"_id":"Z0ij7qpoYeWMVocP","name":"Ceinturon de cuir","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ceinturon.webp","data":{"description":"","capacite":6,"encombrement":0.1,"equipe":false,"qualite":0,"contenu":[],"cout":0.5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Z0ij7qpoYeWMVocP"}}}
{"_id":"ZLda3pfrbiKucSea","name":"Cornebouffe","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cornebouffe.webp","data":{"description":"<p><span class=\"fontstyle0\">La cornebouffe est une pr&eacute;paration &agrave; base de gibier, &eacute;labor&eacute;e dans les for&ecirc;ts proches de la mer par des chasseurs sp&eacute;cialis&eacute;s : les </span><span class=\"fontstyle2\">cornebouffiers</span><span class=\"fontstyle0\">. Achemin&eacute;e vers les ports, principaux consommateurs, elle constitue l&rsquo;aliment de base de la plupart des marins.</span></p>\n<p><span class=\"fontstyle0\">Certains voyageurs qui l&rsquo;ont exp&eacute;riment&eacute;e et en ont accept&eacute; l&rsquo;exotisme, en&nbsp; transportent parfois en cas de disette. Pratiquement, il s&rsquo;agit de gibier&nbsp; r&eacute;f&eacute;rentiellement cornu (bramart, cornicochon, mercureuil), que l&rsquo;on cuit et recuit dans de l&rsquo;eau de mer avec des herbes, jusqu&rsquo;&agrave; obtenir une p&acirc;te, sorte de mastic, que l&rsquo;on fa&ccedil;onne en forme de galettes, puis que l&rsquo;on laisse longuement s&eacute;cher au soleil. On aboutit au final &agrave; des sortes de petites briques plates, de la taille d&rsquo;une demi-main, de couleur vert-de-gris, et &agrave; peu pr&egrave;s aussi dures que les briques v&eacute;ritables. La meilleure fa&ccedil;on de consommer ces galettes est de les r&eacute;hydrater avec de l&rsquo;eau chaude, c&rsquo;est la fa&ccedil;on dite </span><span class=\"fontstyle2\">soup&eacute;e </span><span class=\"fontstyle0\">: on obtient une sorte de soupe ou de bouillie gluante. L&rsquo;autre fa&ccedil;on, dite s&egrave;che, consiste &agrave; les grignoter telles quelles comme des biscuits, mais il est imp&eacute;ratif de boire beaucoup par dessus, sous peine d&rsquo;une soif torride accompagn&eacute;e de maux d&rsquo;estomac.</span></p>\n<p><span class=\"fontstyle0\">L&eacute;g&egrave;re, peu encombrante, et surtout nourrissante, une galette de cornebouffe suffit pour un repas. Quant au go&ucirc;t, eh bien... ceux qui disent que, tant qu&rsquo;&agrave; y aller, autant manger directement des crottes de chien &agrave; la croque-au-sel, ne sont probablement que des enfants g&acirc;t&eacute;s et difficiles.</span></p>\n<p><span class=\"fontstyle0\">Aliment de longue conservation (pratiquement inalt&eacute;rable), la cornebouffe poss&egrave;de un des meilleurs rapports sustentation/encombrement.</span></p>","quantite":1,"encombrement":0.1,"equipe":false,"resistance":0,"qualite":0,"cout":0.02,"sust":3,"boisson":false,"desaltere":0,"alcoolise":false,"force":0,"exotisme":-2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{"core":{"sourceId":"Item.NuwD0kiJyoqevKib"}}}
{"name":"Hydromel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_biere.webp","data":{"description":"","sust":0,"boisson":true,"desaltere":0.6,"alcoolise":true,"force":4,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.04},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{},"_id":"ZaAKf4n8mtevbMM0"}
{"_id":"ZLda3pfrbiKucSea","name":"Cornebouffe","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cornebouffe.webp","data":{"description":"<p><span class=\"fontstyle0\">La cornebouffe est une pr&eacute;paration &agrave; base de gibier, &eacute;labor&eacute;e dans les for&ecirc;ts proches de la mer par des chasseurs sp&eacute;cialis&eacute;s : les </span><span class=\"fontstyle2\">cornebouffiers</span><span class=\"fontstyle0\">. Achemin&eacute;e vers les ports, principaux consommateurs, elle constitue l&rsquo;aliment de base de la plupart des marins.</span></p>\n<p><span class=\"fontstyle0\">Certains voyageurs qui l&rsquo;ont exp&eacute;riment&eacute;e et en ont accept&eacute; l&rsquo;exotisme, en&nbsp; transportent parfois en cas de disette. Pratiquement, il s&rsquo;agit de gibier&nbsp; r&eacute;f&eacute;rentiellement cornu (bramart, cornicochon, mercureuil), que l&rsquo;on cuit et recuit dans de l&rsquo;eau de mer avec des herbes, jusqu&rsquo;&agrave; obtenir une p&acirc;te, sorte de mastic, que l&rsquo;on fa&ccedil;onne en forme de galettes, puis que l&rsquo;on laisse longuement s&eacute;cher au soleil. On aboutit au final &agrave; des sortes de petites briques plates, de la taille d&rsquo;une demi-main, de couleur vert-de-gris, et &agrave; peu pr&egrave;s aussi dures que les briques v&eacute;ritables. La meilleure fa&ccedil;on de consommer ces galettes est de les r&eacute;hydrater avec de l&rsquo;eau chaude, c&rsquo;est la fa&ccedil;on dite </span><span class=\"fontstyle2\">soup&eacute;e </span><span class=\"fontstyle0\">: on obtient une sorte de soupe ou de bouillie gluante. L&rsquo;autre fa&ccedil;on, dite s&egrave;che, consiste &agrave; les grignoter telles quelles comme des biscuits, mais il est imp&eacute;ratif de boire beaucoup par dessus, sous peine d&rsquo;une soif torride accompagn&eacute;e de maux d&rsquo;estomac.</span></p>\n<p><span class=\"fontstyle0\">L&eacute;g&egrave;re, peu encombrante, et surtout nourrissante, une galette de cornebouffe suffit pour un repas. Quant au go&ucirc;t, eh bien... ceux qui disent que, tant qu&rsquo;&agrave; y aller, autant manger directement des crottes de chien &agrave; la croque-au-sel, ne sont probablement que des enfants g&acirc;t&eacute;s et difficiles.</span></p>\n<p><span class=\"fontstyle0\">Aliment de longue conservation (pratiquement inalt&eacute;rable), la cornebouffe poss&egrave;de un des meilleurs rapports sustentation/encombrement.</span></p>","sust":3,"boisson":false,"desaltere":0,"alcoolise":false,"force":0,"qualite":0,"exotisme":-2,"encombrement":0.1,"quantite":1,"cout":0.02,"equipe":false,"resistance":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{"core":{"sourceId":"Item.NuwD0kiJyoqevKib"}}}
{"_id":"ZaAKf4n8mtevbMM0","name":"Hydromel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_biere.webp","data":{"description":"","sust":0,"boisson":true,"desaltere":0.6,"alcoolise":true,"force":-4,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.04},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{}}
{"_id":"a3Wj2WNKFrzqRGVG","name":"Chemise de soie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_soie.webp","data":{"description":"","quantite":1,"encombrement":0,"equipe":false,"resistance":0,"qualite":0,"cout":6},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.a3Wj2WNKFrzqRGVG"}}}
{"_id":"b0f08L5CDeFIMluC","name":"Cuir Souple","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_souple.webp","data":{"description":"<p>Même épaisseur que nos modernes blousons de cuir. Pourpoint ou cotte de cuir souple + culottes de cuir souple + bottes de cuir souple.</p>\n<p>&nbsp;</p>","quantite":1,"encombrement":0,"equipe":false,"protection":2,"deterioration":0,"malus":0,"cout":6},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.b0f08L5CDeFIMluC"}}}
{"_id":"bA0JDA7awoWhu0vO","name":"Teinture d'Erozonne","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/teinture_erozonne.webp","data":{"description":"<p>Fluide.&nbsp;</p>\n<p>Liquide ros&acirc;tre.</p>","quantite":1,"encombrement":0.1,"rarete":"","categorie":"Alchimie","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"cout":2,"soinherbe":"","soinherbebonus":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bA0JDA7awoWhu0vO"}}}
@ -135,8 +135,8 @@
{"_id":"fAzYb7kkW6QxG6i6","name":"Graisse à Bottes 500g","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/graisse_a_cuir.webp","data":{"description":"","quantite":1,"encombrement":0.2,"equipe":false,"resistance":0,"qualite":0,"cout":0.3},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.fAzYb7kkW6QxG6i6"}}}
{"_id":"fDwsTMuug0Z5BdaA","name":"Cuir / Metal","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_metal.webp","data":{"description":"<p>Cuir épais clouté, ou petites plaquettes, écailles ou anneaux de fer cousus sur le cuir. Pectoral ou cotte de cuir/métal + jupon ou cuissards de cuir / métal sur culottes de cuir souple + bottes de cuir / métal + casque de métal.</p>\n<p>&nbsp;</p>","quantite":1,"encombrement":4,"equipe":false,"protection":"4","deterioration":0,"malus":-2,"cout":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.fDwsTMuug0Z5BdaA"}}}
{"_id":"fLKFTvLWoj7juxQE","name":"Flèche, carreau","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp","data":{"description":"","quantite":1,"encombrement":0.1,"equipe":false,"resistance":0,"qualite":0,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.fLKFTvLWoj7juxQE"}}}
{"name":"Brandevin","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_sang.webp","data":{"description":"<p>Dose de 10cl de Brandevin</p>","sust":0,"boisson":true,"desaltere":0.2,"alcoolise":true,"force":5,"qualite":0,"exotisme":0,"encombrement":0.05,"quantite":1,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{},"_id":"fOfVLKBacNEsDBn1"}
{"_id":"gYFprGGUUVG1Apcf","name":"Carquois","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/carquois.webp","data":{"description":"","capacite":2,"encombrement":0.1,"equipe":false,"qualite":0,"contenu":[],"cout":0.5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.gYFprGGUUVG1Apcf"}}}
{"_id":"fOfVLKBacNEsDBn1","name":"Brandevin","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_sang.webp","data":{"description":"<p>Dose de 10cl de Brandevin</p>","sust":0,"boisson":true,"desaltere":0.2,"alcoolise":true,"force":-5,"qualite":0,"exotisme":0,"encombrement":0.05,"quantite":1,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{}}
{"_id":"gYFprGGUUVG1Apcf","name":"Carquois","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/carquois.webp","data":{"description":"","capacite":2,"encombrement":0.1,"equipe":false,"qualite":0,"contenu":[],"cout":0.5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.zYI8mDiysWtmsSyy"}}}
{"_id":"gfU7oZL1JYqF3lAW","name":"Robe de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_lin.webp","data":{"description":"","quantite":1,"encombrement":0.1,"equipe":false,"resistance":0,"qualite":0,"cout":0.6},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.gfU7oZL1JYqF3lAW"}}}
{"_id":"gmBC6SO3F5d64Vpl","name":"Miroir en cuivre poli 20 cm","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/miroir.webp","data":{"description":"","quantite":1,"encombrement":0.2,"equipe":false,"resistance":0,"qualite":0,"cout":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.gmBC6SO3F5d64Vpl"}}}
{"_id":"godMVR796aSUVjLu","name":"Fléau léger","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/fleau_leger.webp","data":{"categorie_parade":"","description":"","quantite":1,"encombrement":2,"equipe":false,"dommages":"3","penetration":0,"force":"12","resistance":10,"competence":"Fléau","cout":12,"portee_courte":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"portee_moyenne":0,"portee_extreme":0,"rapide":false,"deuxmains":false,"unemain":true,"initpremierround":"fleau"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.godMVR796aSUVjLu"}}}
@ -148,13 +148,13 @@
{"_id":"iCvphbPdxUcfqetd","name":"Aumônière","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/aumoniere.webp","data":{"description":"<p>Comme une bourse, mais sous forme d'une coque en cuir rigide.</p>","capacite":0.25,"encombrement":0,"equipe":false,"qualite":0,"contenu":[],"cout":0.2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iCvphbPdxUcfqetd"}}}
{"_id":"iGHudg5kBOfYWgwV","name":"Arc","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/arc.webp","data":{"categorie_parade":"","description":"<p>Nie jusqu'&agrave; 2 points d'armure.</p>\n<p>Rechargement 1/2 round (s'il tire en d&eacute;but de round, il pourra recharger durant le reste du round pour tirer de nouveau au d&eacute;but du round suivant).</p>","quantite":1,"encombrement":1,"equipe":false,"dommages":"2","penetration":2,"force":"0","resistance":0,"competence":"Arc","cout":10,"portee_courte":10,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"portee_moyenne":20,"portee_extreme":50,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iGHudg5kBOfYWgwV"}}}
{"_id":"iq8ZZgphxOUgC1bi","name":"Flûte traversière de roseau","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flute_traversiere.webp","data":{"description":"","quantite":1,"encombrement":0.08,"equipe":false,"resistance":0,"qualite":0,"cout":0.12},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iq8ZZgphxOUgC1bi"}}}
{"_id":"iss7ARW8oRoe1umi","name":"Eau","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_eau.webp","data":{"description":"<p><span style=\"color: #191813; font-family: CaslonAntique; font-size: 16px; letter-spacing: 1px; text-align: justify; background-color: #f5f5f0;\">1 mesure (20cl) d'eau.</span></p>","quantite":1,"encombrement":0.1,"equipe":false,"qualite":0,"cout":0,"sust":0,"boisson":true,"desaltere":1,"alcoolise":false,"force":0,"exotisme":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.DAFP7z5gzl1O3rCV"}}}
{"_id":"iss7ARW8oRoe1umi","name":"Eau","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_eau.webp","data":{"description":"<p><span style=\"color: #191813; font-family: CaslonAntique; font-size: 16px; letter-spacing: 1px; text-align: justify; background-color: #f5f5f0;\">1 mesure (20cl) d'eau.</span></p>","sust":0,"boisson":true,"desaltere":1,"alcoolise":false,"force":0,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0,"equipe":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.DAFP7z5gzl1O3rCV"}}}
{"_id":"iuSOVPBsK8Zg6hoY","name":"1 m² de bâche","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bache.webp","data":{"description":null,"quantite":1,"encombrement":0.5,"equipe":false,"resistance":0,"qualite":0,"cout":0.2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iuSOVPBsK8Zg6hoY"}}}
{"_id":"j9WpAl1SwHEovg3b","name":"Tresse de crin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tresse.webp","data":{"description":"","quantite":1,"encombrement":0.02,"equipe":false,"resistance":0,"qualite":0,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.j9WpAl1SwHEovg3b"}}}
{"_id":"jHxnzdBSVzr7Z7wH","name":"Robe de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_velours.webp","data":{"description":"","quantite":1,"encombrement":0.3,"equipe":false,"resistance":0,"qualite":0,"cout":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jHxnzdBSVzr7Z7wH"}}}
{"_id":"jKWA5NjsjH0kIZzK","name":"Chaudron de fer (5 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chaudron.webp","data":{"description":"","capacite":2.5,"encombrement":1,"equipe":false,"qualite":0,"contenu":[],"cout":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jKWA5NjsjH0kIZzK"}}}
{"_id":"jZMfiBnBXwW91drM","name":"Sablier 15 minutes","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sablier.webp","data":{"description":"","quantite":1,"encombrement":0.1,"equipe":false,"resistance":0,"qualite":0,"cout":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jZMfiBnBXwW91drM"}}}
{"_id":"jchAu828fr8TLtwi","name":"Lait","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_lait.webp","data":{"description":"","quantite":1,"encombrement":0.1,"equipe":false,"qualite":0,"cout":0.01,"sust":0.2,"boisson":true,"desaltere":1,"alcoolise":false,"force":0,"exotisme":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.6i90SWaq5Me0us8X"}}}
{"_id":"jchAu828fr8TLtwi","name":"Lait","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_lait.webp","data":{"description":"","sust":0.2,"boisson":true,"desaltere":1,"alcoolise":false,"force":0,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.01,"equipe":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.6i90SWaq5Me0us8X"}}}
{"_id":"jyBy6mDAGvJb9k0l","name":"1 m2 de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_lin.webp","data":{"description":"","quantite":1,"encombrement":0,"equipe":false,"resistance":0,"qualite":0,"cout":0.15},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jyBy6mDAGvJb9k0l"}}}
{"_id":"kFUh4027jnAdqbyK","name":"Gelée royale","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gelee_royale.webp","data":{"description":"<p>Cr&egrave;me sirupeuse.</p>","quantite":1,"encombrement":0.1,"rarete":"","categorie":"Alchimie","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"cout":0.2,"soinherbe":"","soinherbebonus":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.kFUh4027jnAdqbyK"}}}
{"_id":"keLCmhsbxHK39UIy","name":"Mirobolant","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/mirobolant.webp","data":{"description":"<p>Fluide.</p>\n<p>Liquide rouge&acirc;tre clair et sans d&eacute;pot.</p>","quantite":1,"encombrement":0.1,"rarete":"","categorie":"Alchimie","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"cout":2,"soinherbe":"","soinherbebonus":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.keLCmhsbxHK39UIy"}}}
@ -176,7 +176,7 @@
{"_id":"orpj8CumQ39xMOHy","name":"Brosse à cheveux","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/Brosse.webp","data":{"description":"","quantite":1,"encombrement":0.06,"equipe":false,"resistance":0,"qualite":0,"cout":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.orpj8CumQ39xMOHy"}}}
{"_id":"oyAyc3tp1JrIFfos","name":"L'Oniricon","type":"livre","img":"systems/foundryvtt-reve-de-dragon/icons/icone_parchement_vierge.svg","data":{"description":"<p>Cet ab&eacute;c&eacute;daire draconic permet de gagner jusqu&rsquo;&agrave; 80 points d&rsquo;exp&eacute;rience en voie d&rsquo;Oniros, jusqu&rsquo;&agrave; concurrence du niveau +1. C&rsquo;est un livre pour d&eacute;butants, inutile aux haut-r&ecirc;vants confirm&eacute;s. Sa difficult&eacute; de lecture est de -2, son assimilation requiert 20 points de t&acirc;che, p&eacute;riodicit&eacute; une heure. Le gain final est de 4d10+40 points d&rsquo;exp&eacute;rience en voie d&rsquo;Oniros.</p>","competence":"","auteur":"anonyme","quantite":1,"difficulte":-2,"points_de_tache":0,"encombrement":0,"xp":"4d10+40","niveau_minimum":0,"niveau_maximum":0,"cout":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.oyAyc3tp1JrIFfos"}}}
{"_id":"phfgVizT4ekUwqFq","name":"Selle et harnais","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/selle.webp","data":{"description":"","capacite":25,"encombrement":4,"equipe":false,"qualite":0,"contenu":[],"cout":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.phfgVizT4ekUwqFq"}}}
{"name":"Miel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gelee_royale.webp","data":{"description":"","sust":2,"boisson":false,"desaltere":0,"alcoolise":false,"force":0,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{"core":{"sourceId":"Item.0UhqiYISVSiztBfv"}},"_id":"q5zaNnlmNZZChi31"}
{"_id":"q5zaNnlmNZZChi31","name":"Miel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gelee_royale.webp","data":{"description":"","sust":2,"boisson":false,"desaltere":0,"alcoolise":false,"force":0,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{"core":{"sourceId":"Item.0UhqiYISVSiztBfv"}}}
{"_id":"qCLTOjlIOvlj0uo7","name":"Chaperon de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chaperon_laine.webp","data":{"description":"","quantite":1,"encombrement":0.1,"equipe":false,"resistance":0,"qualite":0,"cout":0.2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qCLTOjlIOvlj0uo7"}}}
{"_id":"qWhl9EfdnJx4KFTZ","name":"Bas de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_laine.webp","data":{"description":"","quantite":1,"encombrement":0,"equipe":false,"resistance":0,"qualite":0,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qWhl9EfdnJx4KFTZ"}}}
{"_id":"sSgPT3aKDOZ25svO","name":"Porte plume en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/porte_plume2.webp","data":{"description":"","quantite":1,"encombrement":0.02,"equipe":false,"resistance":0,"qualite":0,"cout":0.05},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sSgPT3aKDOZ25svO"}}}
@ -188,7 +188,7 @@
{"_id":"szOThadvQvFcS79R","name":"Cuir Epais","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_epais.webp","data":{"description":"<p>Cuir très épais comme le cuir de botte. Pectoral de cuir épais + jupon de bandes ou de tresses de cuir ou cuissards de cuir épais sur culottes de cuir souple + bottes dures + casque de cuir.</p>\n<p>&nbsp;</p>","quantite":1,"encombrement":2,"equipe":false,"protection":3,"deterioration":0,"malus":-1,"cout":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.szOThadvQvFcS79R"}}}
{"_id":"tBFt4h3jqINsOxLI","name":"Outre (2 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/outre.webp","data":{"description":"","capacite":1,"encombrement":0.08,"equipe":false,"qualite":0,"contenu":[],"cout":0.2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tBFt4h3jqINsOxLI"}}}
{"_id":"tMWzePiuMtiCQnAU","name":"Marteau","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/marteau.webp","data":{"categorie_parade":"","description":"","quantite":1,"encombrement":0.3,"equipe":false,"dommages":"2","penetration":0,"force":"7","resistance":8,"competence":"Masse à 1 main","cout":1,"portee_courte":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"portee_moyenne":0,"portee_extreme":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"masse"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tMWzePiuMtiCQnAU"}}}
{"_id":"tY3shj5FA8nwMgxX","name":"Vin","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_vin.webp","data":{"description":"","sust":0,"boisson":true,"desaltere":0.6,"alcoolise":true,"force":2,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.01,"equipe":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.QNNWTG5yqQKmcpJ7"}}}
{"_id":"tY3shj5FA8nwMgxX","name":"Vin","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_vin.webp","data":{"description":"","sust":0,"boisson":true,"desaltere":0.6,"alcoolise":true,"force":-2,"qualite":0,"exotisme":0,"encombrement":0.1,"quantite":1,"cout":0.01,"equipe":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Item.QNNWTG5yqQKmcpJ7"}}}
{"_id":"tZWQCuRr1ic3S0pL","name":"Souliers","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/souliers.webp","data":{"description":"","quantite":1,"encombrement":0.2,"equipe":false,"resistance":0,"qualite":0,"cout":0.8},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tZWQCuRr1ic3S0pL"}}}
{"name":"Repas moyen à l'auberge","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/provision_cuite.webp","data":{"description":"","sust":3,"boisson":false,"desaltere":0,"alcoolise":false,"force":0,"qualite":3,"exotisme":0,"encombrement":0.3,"quantite":1,"cout":0.1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"wYnBx3HmLfGzsj7P":3},"flags":{},"_id":"tn1kvxEVoLyYODyg"}
{"_id":"tswamwK2oKNARhjA","name":"Verre grossissant","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/verre_grossissant.webp","data":{"description":"","quantite":1,"encombrement":0.02,"equipe":false,"resistance":0,"qualite":0,"cout":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"rYShh2P1DNavdoBD":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tswamwK2oKNARhjA"}}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -146,15 +146,6 @@
"path": "./packs/rappel-des-regles.db",
"entity": "JournalEntry",
"tags" : [ "journal", "règles" ]
},
{
"name": "materiel-de-base",
"label": "Matériel de base",
"system": "foundryvtt-reve-de-dragon",
"module": "foundryvtt-reve-de-dragon",
"path": "./packs/materiel-de-base.db",
"entity": "JournalEntry",
"tags" : [ "journal", "matériel" ]
},
{
"name": "queues-de-dragon",

View File

@ -147,32 +147,23 @@
{{#if options.isGM}}
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
{{/if}}
<ul class="item-list alterne-list">
<li class="competence-header flexrow">
<span class="competence-title competence-label">Nom</span>
<span class="competence-title competence-label">Q.</span>
<span class="competence-title competence-value">Enc.</span>
<span class="competence-title competence-value">Equiper</span>
<span class="competence-title competence-value">Editer/Suppr.</span>
<img class="sheet-competence-img" src="{{img}}" title="Equipement"/>
<span class="competence-title flex-grow">Nom</span>
<span class="competence-title">Q.</span>
<span class="competence-title">Enc.</span>
<span class="competence-title flex-grow">Equiper/Editer/Suppr.</span>
</li>
{{#each data.objets as |item id|}}
{{#each objets as |item id|}}
{{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}}
<li class="item flexrow list-item" data-item-id="{{item._id}}">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
<span class="item-name">{{item.name}}</span>
<span class="item-quantite">{{item.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
<div class="item-controls">
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
</div>
</li>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html" item=item }}
{{/if}}
{{/unless}}
{{/each}}
{{#each data.conteneurs as |conteneur id|}}
{{#each conteneurs as |conteneur id|}}
{{buildConteneur this}}
{{/each}}
</ul>

View File

@ -1,39 +1,41 @@
{{#if (equals ethylismeEtape 'Vie')}}
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp" alt="Ethylisme" />
<h4>
{{alias}} bois un verre d'alcool de force {{forceAlcool}}
{{alias}} boit un verre d'alcool de force {{jetVie.forceAlcool}}
{{#if alcool}}
<br>{{alcool.name}}
{{/if}}
</h4>
<hr/>
<div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html" jetVie}}
<hr>
<span>
{{{jetVieText}}}
<br/>
{{#if jetVieSuccess}}
{{#if jetVie.rolled.isSuccess}}
Vous avez réussi votre jet d'éthylisme, vous avez consommé {{doses}} doses sans effet.
{{else}}
Vous avez échoué à votre jet d'éthylisme, vous êtes maintenant {{nomEthylisme}} ({{ajustementEthylique}}).
{{/if}}
</span>
</div>
{{/if}}
{{#if (equals ethylismeEtape 'Endurance')}}
<div>
{{#if jetVie.rolled.isEchec}}
<br>
<span>
Vous perdez {{enduranceLost}} points d'endurance.
{{#if perteVie}}<br/>Vous tombez inconscient et perdez un point de vie{{/if}}
Vous perdez {{perteEndurance.perte}} points d'endurance. {{#if perteEndurance.perteVie}}<br/>Vous tombez inconscient et perdez un point de vie.{{/if}}
{{#if jetMoral}}
<br/>Jet de moral {{#if jetMoral.succes}}réussi{{else}}manqué{{/if}} en situation heureuse ({{jetMoral.jet}}/{{jetMoral.difficulte}}).
{{#if (gt jetMoral.ajustement 0)}}L'alcool vous met en joie. Vous gagnez un point de moral.
{{else if (lt jetMoral.ajustement 0)}}Vous avez l'alcool triste. Vous perdez un point de moral.
{{else}}Vous gardez le moral.{{/if}}
{{/if}}
</span>
</div>
{{/if}}
{{#if (equals ethylismeEtape 'Volonte')}}
<div>
{{#if jetVolonte}}
<hr>
<h4>Qui a bu boira</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html" jetVolonte}}
<hr>
<span>
Qui a bu boira :
{{{jetVolonteText}}}
<br/>
{{#if jetVolonteSuccess}}
Vous êtes libre de continuer à boire ou pas.
{{#if jetVolonte.rolled.isSuccess}}
Vous êtes libre de vous arrêter de boire.
{{else}}
Vous avez une envie irrépressible de reprendre un verre.
{{/if}}
</span>
</div>
{{/if}}
{{/if}}

View File

@ -6,7 +6,7 @@
<hr>
<div>
{{#if rolled.isSuccess}}
Vous apercevez un signe draconique éphémère, qu'il faut aller lire en <strong>{{meditation.data.tmr}}</strong>.
Vous apercevez un signe draconique éphémère, qu'il faut aller lire en <strong>{{typeTmr-name meditation.data.tmr}}</strong>.
{{else}}
Votre méditation ne porte pas ses fruits, vous ne voyez aucun signe Draconique.
{{/if}}

View File

@ -1,7 +1,8 @@
<form class="rdddialog">
<img class="chat-icon" src="{{item.img}}" title="{{item.name}}" alt="{{item.name}}" />
<h4>{{item.name}}</h4>
<div class="flexrow">
<label class="flex-grow">Quantité de {{item.name}} à {{#if item.data.boisson}}boire{{else}}manger{{/if}}</label>
<label class="flex-grow">Quantité à {{#if item.data.boisson}}boire{{else}}manger{{/if}}</label>
<input class="attribute-value consommer-doses flex-shrink" type="number" name="doses" value="{{choix.doses}}"
min="0" max="{{item.data.quantite}}" data-dtype="Number" />
</div>
@ -26,11 +27,10 @@
{{#if (lt item.data.exotisme 0)}}
<p>
Pour surmonter l'exotisme, vous devez effectuer un jet de Volonté/Cuisine à {{numberFormat item.data.exotisme decimals=0 sign=true}}.
</p>
<p>
<label>En cas d'échec, voulez-vous vous forcer à manger (et subir un jet de moral en situation
malheureuse)?</label>
<input class="attribute-value se-forcer" type="checkbox" name="se-forcer" {{#if choix.seForcer}}checked{{/if}} />
<br/>
<input class="attribute-value se-forcer" type="checkbox" name="se-forcer" {{#if choix.seForcer}}checked{{/if}}>
<label for="se-forcer">En cas d'échec, voulez-vous vous forcer à manger (et subir un jet de moral en situation malheureuse)?</label>
</input>
</p>
{{/if}}

View File

@ -7,7 +7,7 @@
<label><strong>{{meditation.data.theme}}</strong></label>
<hr>
<label>Support: <strong>{{upperFirst meditation.data.support}}</strong></label>
<label>Case TMR: <strong>{{upperFirst meditation.data.tmr}}</strong></label>
<label>Case TMR: <strong>{{typeTmr-name meditation.data.tmr}}</strong></label>
<label>Durée: 60 minutes</label>
<hr>
<label>Intellect / {{competence.name}}: