Compare commits

...

47 Commits

Author SHA1 Message Date
07e203513a Merge pull request '10.5.0' (#604) from VincentVk/foundryvtt-reve-de-dragon:v10 into v10
Reviewed-on: public/foundryvtt-reve-de-dragon#604
2023-01-08 09:49:45 +01:00
31960ce940 La périodicité est migrée 2023-01-08 01:03:03 +01:00
19118911b9 Version 10.5.0 2023-01-08 00:58:44 +01:00
652ae4cf51 Fix: enlever le bloc noir en pause 2023-01-08 00:57:50 +01:00
cf340f73f1 Migration maladies et poisons
Séparation de l'incubation / la périodicité
2023-01-08 00:57:05 +01:00
3782ed9055 Gestion d'update de timestamp 2023-01-07 23:58:33 +01:00
c3076fdbfc Gestion de la périodicité/temporalité 2023-01-07 23:28:30 +01:00
739fcbdf09 Calendrier/timestamp, suite
Correction autour des éditeurs/affichages
Migration de la date du monde dans les settings
2023-01-07 20:06:21 +01:00
19b3adc222 Cleanup logs 2023-01-07 20:06:21 +01:00
388629d36e Fix: édition des compétences de créatures 2023-01-07 20:06:21 +01:00
912b1d3df3 Gestion d'items temporels
- Séparation des timestamp / calendrier

Les poisons/maladies/souffles/queues/rencontres/signes peuvent
être temporaires.

- Ajout de champs pour stocker les timestamps de début et fin
- définition de la durée (selon les items)
- extraction des classes spécialisées des items
- initialisation des dates de début/fin des effets temporaires à
  l'ajout d'un item temporel
- préparation de la suppression automatique
- Fix de mauvaise présentations sur les dialog d'astrologie
  et d'édition du calendrier
2023-01-07 02:22:44 +01:00
11e4ad09d3 Ignore jsconfig.json and modules 2023-01-05 22:23:47 +01:00
8844f76b65 Les joueurs ne peuvent plus créer de signes
Les commandes /signe+ / /signe
2023-01-05 20:56:42 +01:00
ec24126e75 Cleanup: Suppression listes inutiles 2023-01-05 20:31:29 +01:00
b3c6845e68 Fix: la maladie bloque le calendrier
Le postItem d'une maladie bloquait le raffraîchissement du calendrier
2023-01-05 20:31:29 +01:00
cf8df182ba Merge pull request 'v10.4.9' (#603) from VincentVk/foundryvtt-reve-de-dragon:v10 into v10
Reviewed-on: public/foundryvtt-reve-de-dragon#603
2023-01-05 16:11:17 +01:00
Vincent Vandemeulebrouck
30cc8419c5 Version 10.4.9 2023-01-05 14:44:38 +01:00
Vincent Vandemeulebrouck
5ab6c5989e Fix: name unique pour tabulations 2023-01-05 14:36:01 +01:00
Vincent Vandemeulebrouck
46df3d9f11 Fix: regression sur les ventes 2023-01-05 14:32:35 +01:00
6a6759087c Merge commerces fixes 2023-01-04 21:17:50 +01:00
a7ce1db7c5 Merge pull request 'Corrections mineurs commerces et ventes' (#602) from VincentVk/foundryvtt-reve-de-dragon:v10 into v10
Reviewed-on: public/foundryvtt-reve-de-dragon#602
2023-01-04 21:17:10 +01:00
a0efefad3f Suppression template inutile
Les herbes de soins sont mieux gérées
2023-01-04 00:25:23 +01:00
8e0825b6b9 Fix: vente depuis un commerce
La quantité proposée est limitée à la quantité disponible
ou illimité si le commerce est illimité
2023-01-03 23:46:08 +01:00
39d14c8496 Fix: boutons des commerces
- pas de vente des "étagères"

Les contenants groupes dans les commerces ne sont plus
montrables/vendables. Le MJ peut les éditer (pour changer le nom
et l'image, principalement), et c'est tout.

- le MJ peut acheter un objet de quantité 0 dans une boutique illimitée

le bouton n'était pas affiché...
2023-01-03 23:02:07 +01:00
89442ea6c6 Merge permissions fix 2023-01-03 16:12:23 +01:00
a66fe122c4 Merge pull request 'Le GR a toujours le droit de voir les acteurs' (#601) from VincentVk/foundryvtt-reve-de-dragon:v10 into v10
Reviewed-on: public/foundryvtt-reve-de-dragon#601
2023-01-03 16:11:34 +01:00
Vincent Vandemeulebrouck
2e0abaa284 Les services sont inquantifiables
Ne pas décrémenter leur quantité, et leur quantite disponible est
undefined (ie: infinie)
2023-01-03 13:38:04 +01:00
Vincent Vandemeulebrouck
5bddc548de Le GR a toujours le droit de voir
Change-Id: I3b58fddc3ce6765e6dcf59dc20d81cdadf381761
2023-01-03 13:26:44 +01:00
4acd0879b0 Merge pull request 'Les auberges sont des commerces' (#600) from VincentVk/foundryvtt-reve-de-dragon:v10 into v10
Reviewed-on: public/foundryvtt-reve-de-dragon#600
2023-01-03 10:43:25 +01:00
060943ee53 Version 10.4.6 2023-01-03 02:20:28 +01:00
80be0490eb Permettre d'éditer les conteneurs de regroupement 2023-01-03 02:20:16 +01:00
ceacee8e6c Les commerces peuvent appliquer un pourcentage 2023-01-03 02:08:27 +01:00
d5453c9b04 Ajout d'images de services 2023-01-03 01:37:07 +01:00
7ca3306c6f Fix: cacher quantite illimite dans les contenants 2023-01-03 01:19:38 +01:00
aa5d175027 Formatage de prix 2023-01-03 01:03:05 +01:00
d4ddc4e940 Services pour Commerces
Les services sont modifiés pour correspondre aux nouveaux commerces
2023-01-03 01:02:47 +01:00
87f12019ac Cleanup partials 2023-01-03 00:32:00 +01:00
128d7adf89 Migration des services en commerces 2023-01-03 00:32:00 +01:00
ee42bdcf83 Ajout d'un Actor commerce 2023-01-03 00:32:00 +01:00
5972db035d Permettre un arbre d'inventaire alternatif 2023-01-02 01:41:56 +01:00
92388df5c7 déplacement gestion equipement
Déplacement de la gestion d'équipement dans base-actor
2023-01-02 01:41:56 +01:00
274009d3fa Suppression de vente depuis un "service" 2023-01-02 01:40:48 +01:00
d7e5a09540 Permettre de regrouper des herbes
L'environnement est un tableau, dur à comparer
2023-01-02 01:40:14 +01:00
7f5b2e0abf Cleanup 2023-01-02 01:40:14 +01:00
fbd3aa7121 Extraction des settings dans une méthode dédiée 2023-01-02 01:40:14 +01:00
2ca601b5f8 onDrop depuis compendium async
Permettre de retrouver l'Item du compendium pour tester si un acteur
peut le recevoir
2023-01-02 01:40:13 +01:00
Vincent Vandemeulebrouck
d77ecee9bd Fix: exaltation/dissolution 2022-12-31 18:57:59 +01:00
90 changed files with 2369 additions and 1847 deletions

4
.gitignore vendored
View File

@@ -3,3 +3,7 @@
todo.md
/.vscode
/ignored/
/node_modules/
/jsconfig.json
/package.json
/package-lock.json

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
icons/services/biere.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
icons/services/lit.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
icons/services/repas.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
icons/services/verre.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
icons/services/vin.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -3,6 +3,7 @@
"TypePersonnage": "Personnage",
"TypeCreature": "Créature",
"TypeEntite": "Entité de cauchemar",
"TypeCommerce": "Commerce",
"TypeVehicule": "Véhicule"
},
"ITEM": {
@@ -27,7 +28,7 @@
"TypeArmure": "Armure",
"TypeConteneur": "Conteneur",
"TypeNourritureboisson": "Nourriture & boisson",
"TypeService": "Services/Boutique",
"TypeService": "Service",
"TypeChant": "Chant",
"TypeDanse": "Danse",
"TypeMusique": "Musique",

View File

@@ -3,20 +3,20 @@ import { RdDActorSheet } from "./actor-sheet.js";
export class RdDActorEntiteSheet extends RdDActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["rdd", "sheet", "actor"],
template: "systems/foundryvtt-reve-de-dragon/templates/actor-entite-sheet.html",
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["rdd", "sheet", "actor"],
template: "systems/foundryvtt-reve-de-dragon/templates/actor-entite-sheet.html",
width: 640,
height: 720,
tabs: [{navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac"}],
dragDrop: [{dragSelector: ".item-list .item", dropSelector: undefined}]
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }]
});
}
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
activateListeners(html) {
super.activateListeners(html);
// Everything below here is only needed if the sheet is editable
@@ -24,17 +24,17 @@ export class RdDActorEntiteSheet extends RdDActorSheet {
// On competence change
this.html.find('.creature-carac').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence( compName, "carac_value", parseInt(event.target.value) );
} );
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "carac_value", parseInt(event.target.value));
});
this.html.find('.creature-niveau').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence( compName, "niveau", parseInt(event.target.value) );
} );
this.html.find('.creature-dommages').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence( compName, "dommages", parseInt(event.target.value) );
} );
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "niveau", parseInt(event.target.value));
});
this.html.find('.creature-dommages').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.value));
});
}
}

View File

@@ -10,7 +10,6 @@ import { DialogSplitItem } from "./dialog-split-item.js";
import { ReglesOptionelles } from "./settings/regles-optionelles.js";
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
import { STATUSES } from "./settings/status-effects.js";
import { Monnaie } from "./item-monnaie.js";
import { MAINS_DIRECTRICES } from "./actor.js";
import { RdDBaseActorSheet } from "./actor/base-actor-sheet.js";
import { RdDItem } from "./item.js";
@@ -46,10 +45,8 @@ export class RdDActorSheet extends RdDBaseActorSheet {
effects: this.actor.effects.map(e => foundry.utils.deepClone(e)),
limited: this.actor.limited,
owner: this.actor.isOwner,
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
biographie: await TextEditor.enrichHTML(this.object.system.biographie, { async: true }),
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
notesmj: await TextEditor.enrichHTML(this.object.system.notesmj, { async: true }),
biographie: await TextEditor.enrichHTML(this.actor.system.biographie, { async: true }),
notes: await TextEditor.enrichHTML(this.actor.system.notes, { async: true }),
});
mergeObject(formData.calc, {
surenc: this.actor.computeMalusSurEncombrement(),

View File

@@ -13,30 +13,28 @@ import { RdDItemSort } from "./item-sort.js";
import { Grammar } from "./grammar.js";
import { RdDEncaisser } from "./rdd-roll-encaisser.js";
import { RdDCombat } from "./rdd-combat.js";
import { RdDAudio } from "./rdd-audio.js";
import { RdDItemCompetence } from "./item-competence.js";
import { RdDItemArme } from "./item-arme.js";
import { RdDAlchimie } from "./rdd-alchimie.js";
import { STATUSES, StatusEffects } from "./settings/status-effects.js";
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
import { RdDItemSigneDraconique } from "./item-signedraconique.js";
import { RdDItemSigneDraconique } from "./item/item-signedraconique.js";
import { ReglesOptionelles } from "./settings/regles-optionelles.js";
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-item-consommer.js";
import { DialogFabriquerPotion } from "./dialog-fabriquer-potion.js";
import { RollDataAjustements } from "./rolldata-ajustements.js";
import { RdDItem } from "./item.js";
import { RdDPossession } from "./rdd-possession.js";
import { ENTITE_BLURETTE, ENTITE_INCARNE, ENTITE_NONINCARNE, HIDE_DICE, SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
import { ENTITE_BLURETTE, ENTITE_INCARNE, ENTITE_NONINCARNE, SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
import { RdDConfirm } from "./rdd-confirm.js";
import { DialogValidationEncaissement } from "./dialog-validation-encaissement.js";
import { RdDRencontre } from "./item-rencontre.js";
import { RdDRencontre } from "./item/item-rencontre.js";
import { Targets } from "./targets.js";
import { DialogRepos } from "./dialog-repos.js";
import { RdDBaseActor } from "./actor/base-actor.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
const POSSESSION_SANS_DRACONIC = {
img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp',
@@ -77,12 +75,12 @@ export class RdDActor extends RdDBaseActor {
/* -------------------------------------------- */
_prepareCreatureData(actorData) {
this.computeEncombrementTotalEtMalusArmure();
this.computeEncTotal();
}
/* -------------------------------------------- */
_prepareVehiculeData(actorData) {
this.computeEncombrementTotalEtMalusArmure();
this.computeEncTotal();
}
/* -------------------------------------------- */
@@ -94,7 +92,8 @@ export class RdDActor extends RdDBaseActor {
RdDCarac.computeCarac(actorData.system)
this.computeIsHautRevant();
await this.cleanupConteneurs();
await this.computeEncombrementTotalEtMalusArmure();
await this.computeEncTotal();
await this.computeMalusArmure();
}
/* -------------------------------------------- */
@@ -234,10 +233,6 @@ export class RdDActor extends RdDBaseActor {
}
/* -------------------------------------------- */
getMonnaie(id) {
return this.findItemLike(id, 'monnaie');
}
getTache(id) {
return this.findItemLike(id, 'tache');
}
@@ -852,17 +847,21 @@ export class RdDActor extends RdDBaseActor {
}
/* -------------------------------------------- */
async updateCreatureCompetence(idOrName, fieldName, compValue) {
async updateCreatureCompetence(idOrName, fieldName, value) {
let competence = this.getCompetence(idOrName);
if (competence) {
const update = { _id: competence.id }
if (fieldName == "niveau")
update['system.niveau'] = compValue;
else if (fieldName == "dommages")
update['system.dommages'] = compValue;
else
update['system.carac_value'] = compValue;
await this.updateEmbeddedDocuments('Item', [update]); // updates one EmbeddedEntity
function getPath(fieldName) {
switch (fieldName) {
case "niveau": return 'system.niveau';
case "dommages": return 'system.dommages';
case "carac_value": return 'system.carac_value';
}
return undefined
}
const path = getPath(fieldName);
if (path){
await this.updateEmbeddedDocuments('Item', [{ _id: competence.id, [path]: value }]); // updates one EmbeddedEntity
}
}
}
@@ -939,7 +938,7 @@ export class RdDActor extends RdDBaseActor {
let expLog = duplicate(this.system.experiencelog);
expLog.push({
mode: Misc.upperFirst(modeXP), valeur: valeurXP, raison: Misc.upperFirst(raisonXP),
daterdd: game.system.rdd.calendrier.getDateFromIndex(),
daterdd: game.system.rdd.calendrier.dateCourante(),
datereel: `${d.getDate()}/${d.getMonth() + 1}/${d.getFullYear()}`
});
await this.update({ [`system.experiencelog`]: expLog });
@@ -993,237 +992,7 @@ export class RdDActor extends RdDBaseActor {
await this.update({ [`system.attributs.${fieldName}.value`]: fieldValue });
}
/* -------------------------------------------- */
_isConteneurContenu(item, conteneur) {
if (item?.isConteneur()) { // Si c'est un conteneur, il faut vérifier qu'on ne le déplace pas vers un sous-conteneur lui appartenant
for (let id of item.system.contenu) {
let subObjet = this.getItem(id);
if (subObjet?.id == conteneur.id) {
return true; // Loop detected !
}
if (subObjet?.isConteneur()) {
return this._isConteneurContenu(subObjet, conteneur);
}
}
}
return false;
}
/* -------------------------------------------- */
getRecursiveEnc(objet) {
if (!objet) {
return 0;
}
const tplData = objet.system;
if (objet.type != 'conteneur') {
return Number(tplData.encombrement) * Number(tplData.quantite);
}
const encContenus = tplData.contenu.map(idContenu => this.getRecursiveEnc(this.getItem(idContenu)));
return encContenus.reduce(Misc.sum(), 0)
+ Number(tplData.encombrement) /* TODO? Number(tplData.quantite) -- on pourrait avoir plusieurs conteneurs...*/
}
/* -------------------------------------------- */
buildSubConteneurObjetList(conteneurId, deleteList) {
let conteneur = this.getItem(conteneurId);
if (conteneur?.type == 'conteneur') { // Si c'est un conteneur
for (let subId of conteneur.system.contenu) {
let subObj = this.getItem(subId);
if (subObj) {
if (subObj.type == 'conteneur') {
this.buildSubConteneurObjetList(subId, deleteList);
}
deleteList.push({ id: subId, conteneurId: conteneurId });
}
}
}
}
/* -------------------------------------------- */
async deleteAllConteneur(itemId, options) {
let list = [];
list.push({ id: itemId, conteneurId: undefined }); // Init list
this.buildSubConteneurObjetList(itemId, list);
await this.deleteEmbeddedDocuments('Item', list.map(it => it.id), options);
}
/* -------------------------------------------- */
/** Supprime un item d'un conteneur, sur la base
* de leurs ID */
async enleverDeConteneur(item, conteneur, onEnleverDeConteneur) {
if (conteneur?.isConteneur()) {
item.estContenu = false;
await this.updateEmbeddedDocuments('Item', [{
_id: conteneur.id,
'system.contenu': conteneur.system.contenu.filter(id => id != item.id)
}]);
onEnleverDeConteneur();
}
}
/* -------------------------------------------- */
/** Ajoute un item dans un conteneur, sur la base
* de leurs ID */
async ajouterDansConteneur(item, conteneur, onAjouterDansConteneur) {
if (!conteneur) {
// TODO: afficher
item.estContenu = false;
}
else if (conteneur.isConteneur()) {
item.estContenu = true;
await this.updateEmbeddedDocuments('Item', [{
_id: conteneur.id,
'system.contenu': [...conteneur.system.contenu, item.id]
}]);
onAjouterDansConteneur(item.id, conteneur.id);
}
}
/* -------------------------------------------- */
/** Fonction de remise à plat de l'équipement (ie vide les champs 'contenu') */
async nettoyerConteneurs() {
RdDConfirm.confirmer({
settingConfirmer: "confirmation-vider",
content: `<p>Etes vous certain de vouloir vider tous les conteneurs ?</p>`,
title: 'Vider les conteneurs',
buttonLabel: 'Vider',
onAction: async () => {
const corrections = [];
for (let item of this.items) {
if (item.estContenu) {
item.estContenu = undefined;
}
if (item.type == 'conteneur' && item.system.contenu.length > 0) {
corrections.push({ _id: item.id, 'system.contenu': [] });
}
}
if (corrections.length > 0) {
await this.updateEmbeddedDocuments('Item', corrections);
}
}
});
}
async processDropItem(params) {
const targetActorId = this.id;
const sourceActorId = params.sourceActorId;
const itemId = params.itemId;
const destId = params.destId;
const srcId = params.srcId;
if (sourceActorId && sourceActorId != targetActorId) {
console.log("Moving objects", sourceActorId, targetActorId, itemId);
this.moveItemsBetweenActors(itemId, sourceActorId);
return false;
}
let result = true;
const item = this.getItem(itemId);
if (item?.isInventaire() && sourceActorId == targetActorId) {
// rangement
if (srcId != destId && itemId != destId) { // déplacement de l'objet
const src = this.getItem(srcId);
const dest = this.getItem(destId);
const cible = this.getContenantOrParent(dest);
const [empilable, message] = item.isInventaireEmpilable(dest);
if (empilable) {
await dest.empiler(item)
result = false;
}
// changer de conteneur
else if (!cible || this.conteneurPeutContenir(cible, item)) {
await this.enleverDeConteneur(item, src, params.onEnleverConteneur);
await this.ajouterDansConteneur(item, cible, params.onAjouterDansConteneur);
if (message && !dest.isConteneur()) {
ui.notifications.info(cible
? `${message}<br>${item.name} a été déplacé dans: ${cible.name}`
: `${message}<br>${item.name} a été sorti du conteneur`);
}
}
}
}
await this.computeEncombrementTotalEtMalusArmure();
return result;
}
getContenantOrParent(dest) {
if (!dest || dest.isConteneur()) {
return dest;
}
return this.getContenant(dest);
}
getContenant(item) {
return this.itemTypes['conteneur'].find(it => it.system.contenu.includes(item.id));
}
/* -------------------------------------------- */
conteneurPeutContenir(dest, item) {
if (!dest) {
return true;
}
if (!dest.isConteneur()) {
return false;
}
const destData = dest
if (this._isConteneurContenu(item, dest)) {
ui.notifications.warn(`Impossible de déplacer un conteneur parent (${item.name}) dans un de ses contenus ${destData.name} !`);
return false; // Loop detected !
}
// Calculer le total actuel des contenus
let encContenu = this.getRecursiveEnc(dest) - Number(destData.system.encombrement);
let newEnc = this.getRecursiveEnc(item); // Calculer le total actuel du nouvel objet
// Teste si le conteneur de destination a suffisament de capacité pour recevoir le nouvel objet
if (Number(destData.system.capacite) < encContenu + newEnc) {
ui.notifications.warn(
`Le conteneur ${dest.name} a une capacité de ${destData.system.capacite}, et contient déjà ${encContenu}.
Impossible d'y ranger: ${item.name} d'encombrement ${newEnc}!`);
return false;
}
return true;
}
/* -------------------------------------------- */
async moveItemsBetweenActors(itemId, sourceActorId) {
let itemsList = []
let sourceActor = game.actors.get(sourceActorId);
itemsList.push({ id: itemId, conteneurId: undefined }); // Init list
sourceActor.buildSubConteneurObjetList(itemId, itemsList); // Get itemId list
const itemsDataToCreate = itemsList.map(it => sourceActor.getItem(it.id))
.map(it => duplicate(it))
.map(it => { it.system.contenu = []; return it; });
let newItems = await this.createEmbeddedDocuments('Item', itemsDataToCreate);
let itemMap = this._buildMapOldNewId(itemsList, newItems);
for (let item of itemsList) { // Second boucle pour traiter la remise en conteneurs
// gestion conteneur/contenu
if (item.conteneurId) { // l'Objet était dans un conteneur
let newConteneurId = itemMap[item.conteneurId]; // Get conteneur
let newConteneur = this.getItem(newConteneurId);
let newItemId = itemMap[item.id]; // Get newItem
console.log('New conteneur filling!', newConteneur, newItemId, item);
let contenu = duplicate(newConteneur.system.contenu);
contenu.push(newItemId);
await this.updateEmbeddedDocuments('Item', [{ _id: newConteneurId, 'system.contenu': contenu }]);
}
}
for (let item of itemsList) {
await sourceActor.deleteEmbeddedDocuments('Item', [item.id]);
}
}
_buildMapOldNewId(itemsList, newItems) {
let itemMap = {};
for (let i = 0; i < itemsList.length; i++) {
itemMap[itemsList[i].id] = newItems[i].id; // Pour garder le lien ancien / nouveau
}
return itemMap;
}
isSurenc() {
return this.isPersonnage() ? (this.computeMalusSurEncombrement() < 0) : false
@@ -1268,16 +1037,6 @@ export class RdDActor extends RdDBaseActor {
return this.listItems(type).find(it => Grammar.toLowerCaseNoAccent(it.name) == name);
}
/* -------------------------------------------- */
async computeEncombrementTotalEtMalusArmure() {
if (!this.pack) {
await this.computeMalusArmure();
this.encTotal = this.items.map(it => it.getEncTotal()).reduce(Misc.sum(), 0);
return this.encTotal;
}
return 0;
}
/* -------------------------------------------- */
async computeMalusArmure() {
if (this.isPersonnage()) {
@@ -1291,15 +1050,6 @@ export class RdDActor extends RdDBaseActor {
}
}
/* -------------------------------------------- */
computePrixTotalEquipement() {
const valeur = this.items.filter(it => it.isInventaire())
.filter(it => !it.isMonnaie())
.map(it => it.valeurTotale())
.reduce(Misc.sum(), 0);
return valeur;
}
/* -------------------------------------------- */
computeResumeBlessure(blessures = undefined) {
blessures = blessures ?? this.system.blessures;
@@ -1332,7 +1082,7 @@ export class RdDActor extends RdDBaseActor {
}
}
recompute(){
recompute() {
this.computeEtatGeneral();
}
@@ -2982,10 +2732,10 @@ export class RdDActor extends RdDBaseActor {
/* -------------------------------------------- */
getHeureNaissance() {
if (this.isCreatureEntite()) {
return 0;
if (this.isPersonnage()) {
return this.system.heure;
}
return this.system.heure;
return 0;
}
/* -------------------------------------------- */
@@ -3073,10 +2823,16 @@ export class RdDActor extends RdDBaseActor {
/* -------------------------------------------- */
async ajouteNombreAstral(callData) {
const indexDate = Number.parseInt(callData.date);
// Ajout du nombre astral
const item = {
name: "Nombre Astral", type: "nombreastral", system:
{ value: callData.nbAstral, istrue: callData.isvalid, jourindex: Number(callData.date), jourlabel: game.system.rdd.calendrier.getDateFromIndex(Number(callData.date)) }
{
value: callData.nbAstral,
istrue: callData.isvalid,
jourindex: indexDate,
jourlabel: RdDTimestamp.formatIndexDate(indexDate)
}
};
await this.createEmbeddedDocuments("Item", [item]);
// Affichage Dialog
@@ -3085,7 +2841,7 @@ export class RdDActor extends RdDBaseActor {
async supprimerAnciensNombresAstraux() {
const toDelete = this.listItems('nombreastral')
.filter(it => it.system.jourindex < game.system.rdd.calendrier.getCurrentDayIndex())
.filter(it => game.system.rdd.calendrier.isAfterIndexDate(it.system.jourindex))
.map(it => it._id);
await this.deleteEmbeddedDocuments("Item", toDelete);
}
@@ -3282,7 +3038,7 @@ export class RdDActor extends RdDBaseActor {
if (item && ['arme', 'armure'].includes(item.type)) {
const isEquipe = !item.system.equipe;
await this.updateEmbeddedDocuments('Item', [{ _id: item.id, "system.equipe": isEquipe }]);
this.computeEncombrementTotalEtMalusArmure(); // Mise à jour encombrement
this.computeEncTotal(); // Mise à jour encombrement
if (isEquipe)
this.verifierForceMin(item);
}
@@ -3575,190 +3331,6 @@ export class RdDActor extends RdDBaseActor {
return;
}
/* -------------------------------------------- */
async payerSols(depense) {
depense = Number(depense);
if (depense == 0) {
return;
}
let fortune = super.getFortune();
console.log("payer", game.user.character, depense, fortune);
let msg = "";
if (fortune >= depense) {
await Monnaie.optimiserFortune(this, fortune - depense);
msg = `Vous avez payé <strong>${depense} Sols</strong>, qui ont été soustraits de votre argent.`;
RdDAudio.PlayContextAudio("argent"); // Petit son
} else {
msg = "Vous n'avez pas assez d'argent pour payer cette somme !";
}
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: msg
};
ChatMessage.create(message);
}
async depenserSols(sols) {
let reste = super.getFortune() - Number(sols);
if (reste >= 0) {
await Monnaie.optimiserFortune(this, reste);
}
return reste;
}
async ajouterSols(sols, fromActorId = undefined) {
sols = Number(sols);
if (sols == 0) {
return;
}
if (sols < 0) {
ui.notifications.error(`Impossible d'ajouter un gain de ${sols} <0`);
return;
}
if (fromActorId && !game.user.isGM) {
RdDBaseActor.remoteActorCall({
userId: Misc.connectedGMOrUser(),
actorId: this.id,
method: 'ajouterSols', args: [sols, fromActorId]
});
}
else {
const fromActor = game.actors.get(fromActorId)
await Monnaie.optimiserFortune(this, sols + this.getFortune());
RdDAudio.PlayContextAudio("argent"); // Petit son
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: `Vous avez reçu <strong>${sols} Sols</strong> ${fromActor ? " de " + fromActor.name : ''}, qui ont été ajoutés à votre argent.`
});
}
}
/* -------------------------------------------- */
async monnaieIncDec(id, value) {
let monnaie = this.getMonnaie(id);
if (monnaie) {
const quantite = Math.max(0, monnaie.system.quantite + value);
await this.updateEmbeddedDocuments('Item', [{ _id: monnaie.id, 'system.quantite': quantite }]);
}
}
/* -------------------------------------------- */
async achatVente(achat) {
if (achat.vendeurId == achat.acheteurId) {
ui.notifications.info("Inutile de se vendre à soi-même");
return;
}
if (!Misc.isUniqueConnectedGM()) {
RdDBaseActor.remoteActorCall({
actorId: achat.vendeurId ?? achat.acheteurId,
method: 'achatVente',
args: [achat]
});
return;
}
const cout = Number(achat.prixTotal ?? 0);
const vendeur = achat.vendeurId ? game.actors.get(achat.vendeurId) : undefined;
const service = achat.serviceId ? (vendeur?.getItem(achat.serviceId) ?? game.items.get(achat.serviceId)) : undefined;
const acheteur = achat.acheteurId ? game.actors.get(achat.acheteurId) : undefined;
const vente = achat.vente;
const quantite = (achat.choix.nombreLots ?? 1) * (vente.tailleLot);
const itemVendu = vendeur?.getItem(vente.item._id) ?? (await RdDItem.getCorrespondingItem(vente.item));
if (!this.verifierQuantite(service, vente.serviceSubItem, vendeur, itemVendu, quantite)) {
ChatUtility.notifyUser(achat.userId, 'warn', `Le vendeur n'a pas assez de ${itemVendu.name} !`);
return
}
if ((acheteur?.getFortune() ?? 0) < Number(cout)) {
ChatUtility.notifyUser(achat.userId, 'warn', `Vous n'avez pas assez d'argent pour payer ${Math.ceil(cout / 100)} sols !`);
return;
}
await this.decrementerVente(service, vendeur, itemVendu, quantite, cout);
if (acheteur) {
await acheteur.depenserSols(cout);
let createdItemId = await acheteur.creerQuantiteItem(vente.item, quantite);
await acheteur.consommerNourritureAchetee(achat, vente, createdItemId);
}
if (cout > 0) {
RdDAudio.PlayContextAudio("argent");
}
const chatAchatItem = duplicate(vente);
chatAchatItem.quantiteTotal = quantite;
ChatMessage.create({
user: achat.userId,
speaker: { alias: (acheteur ?? vendeur).name },
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', chatAchatItem)
});
if (!vente.quantiteIllimite) {
if (vente.quantiteNbLots <= achat.choix.nombreLots) {
ChatUtility.removeChatMessageId(achat.chatMessageIdVente);
}
else if (!service) {
vente["properties"] = itemVendu.getProprietes();
vente.quantiteNbLots -= achat.choix.nombreLots;
vente.jsondata = JSON.stringify(vente.item);
const messageVente = game.messages.get(achat.chatMessageIdVente);
messageVente.update({ content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', vente) });
messageVente.render(true);
}
}
}
async decrementerVente(service, vendeur, itemVendu, quantite, cout) {
if (service) {
await service.venteRefItem(itemVendu, quantite, cout)
}
else if (vendeur) {
await vendeur.ajouterSols(cout);
await vendeur.decrementerQuantiteItem(itemVendu, quantite);
}
}
verifierQuantite(service, serviceSubItem, vendeur, item, quantiteTotal) {
const disponible = service ? service.getQuantiteDisponible(serviceSubItem, quantiteTotal) : (vendeur ? (item?.getQuantite() ?? 0) : quantiteTotal);
return disponible >= quantiteTotal;
}
async consommerNourritureAchetee(achat, vente, createdItemId) {
if (achat.choix.consommer && vente.item.type == 'nourritureboisson' && createdItemId != undefined) {
achat.choix.doses = achat.choix.nombreLots;
await this.consommerNourritureboisson(createdItemId, achat.choix, vente.actingUserId);
}
}
async decrementerQuantiteItem(item, quantite) {
let resteQuantite = (item.system.quantite ?? 1) - quantite;
if (resteQuantite <= 0) {
await this.deleteEmbeddedDocuments("Item", [item.id]);
if (resteQuantite < 0) {
ui.notifications.warn(`La quantité de ${item.name} était insuffisante, l'objet a donc été supprimé`)
}
}
else if (resteQuantite > 0) {
await this.updateEmbeddedDocuments("Item", [{ _id: item.id, 'system.quantite': resteQuantite }]);
}
}
async creerQuantiteItem(item, quantite) {
const items = await this.createEmbeddedDocuments("Item", RdDActor.$prepareListeAchat(item, quantite));
return items.length > 0 ? items[0].id : undefined;
}
static $prepareListeAchat(item, quantite) {
const isItemEmpilable = "quantite" in item.system;
const achatData = {
type: item.type,
img: item.img,
name: item.name,
system: mergeObject(item.system, { quantite: isItemEmpilable ? quantite : undefined }),
};
return isItemEmpilable ? [achatData] : Array.from({ length: quantite }, (_, i) => achatData);
}
/* -------------------------------------------- */
async effectuerTacheAlchimie(recetteId, tacheAlchimie, texteTache) {
let recetteData = this.findItemLike(recetteId, 'recettealchimique');
@@ -4133,6 +3705,7 @@ export class RdDActor extends RdDBaseActor {
await this.onCreateOwnedDraconique(item, options, id);
break;
}
await item.onCreateItemTemporel(this);
await item.onCreateDecoupeComestible(this);
}

View File

@@ -31,7 +31,7 @@ export class RdDBaseActorSheet extends ActorSheet {
Monnaie.validerMonnaies(this.actor.itemTypes['monnaie']);
this.actor.recompute();
const userRightLevel = this.actor.getUserLevel(game.user)
const userRightLevel = game.user.isGM ? CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER : this.actor.getUserLevel(game.user)
const options = duplicate(this.options);
mergeObject(options, {
isGM: game.user.isGM,
@@ -40,6 +40,7 @@ export class RdDBaseActorSheet extends ActorSheet {
isLimited: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.LIMITED,
isObserver: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER,
isOwner: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER,
owner: this.actor.isOwner,
});
let formData = {
@@ -49,13 +50,15 @@ export class RdDBaseActorSheet extends ActorSheet {
img: this.actor.img,
name: this.actor.name,
system: foundry.utils.deepClone(this.actor.system),
description: await TextEditor.enrichHTML(this.actor.system.description, { async: true }),
notesmj: await TextEditor.enrichHTML(this.actor.system.notesmj, { async: true }),
options: options,
}
this.filterItemsPerTypeForSheet(formData, this.actor.itemTypes);
formData.calc = {
fortune: this.toSolsDeniers(this.actor.getFortune()),
prixTotalEquipement: this.actor.computePrixTotalEquipement(),
encTotal: await this.actor.computeEncombrementTotalEtMalusArmure(),
encTotal: await this.actor.computeEncTotal(),
}
this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets);
@@ -74,7 +77,6 @@ export class RdDBaseActorSheet extends ActorSheet {
/* -------------------------------------------- */
filterItemsPerTypeForSheet(formData, itemTypes) {
formData.services = Misc.arrayOrEmpty(itemTypes['service']);
formData.recettescuisine = Misc.arrayOrEmpty(itemTypes['recettecuisine']);
formData.recettesAlchimiques = Misc.arrayOrEmpty(itemTypes['recettealchimique']);
formData.maladies = Misc.arrayOrEmpty(itemTypes['maladie']);
@@ -100,9 +102,8 @@ export class RdDBaseActorSheet extends ActorSheet {
formData.oeuvres = Misc.arrayOrEmpty(itemTypes['oeuvre']);
formData.jeux = Misc.arrayOrEmpty(itemTypes['jeu']);
formData.services = Misc.arrayOrEmpty(itemTypes['service']);
formData.conteneurs = Misc.arrayOrEmpty(itemTypes['conteneur']);
formData.materiel = Misc.arrayOrEmpty(itemTypes['objet']);
formData.armes = Misc.arrayOrEmpty(itemTypes['arme']);
formData.armures = Misc.arrayOrEmpty(itemTypes['armure']);
@@ -114,22 +115,12 @@ export class RdDBaseActorSheet extends ActorSheet {
formData.herbes = Misc.arrayOrEmpty(itemTypes['herbe']);
formData.nourritureboissons = Misc.arrayOrEmpty(itemTypes['nourritureboisson']);
formData.gemmes = Misc.arrayOrEmpty(itemTypes['gemme']);
formData.monnaie = Misc.arrayOrEmpty(itemTypes['monnaie']).sort(Monnaie.triValeurEntiere());
formData.objets = formData.conteneurs
.concat(formData.materiel)
.concat(formData.armes)
.concat(formData.armures)
.concat(formData.munitions)
.concat(formData.livres)
.concat(formData.potions)
.concat(formData.ingredients)
.concat(formData.herbes)
.concat(formData.faunes)
.concat(formData.monnaie)
.concat(formData.nourritureboissons)
.concat(formData.gemmes);
formData.objets = RdDItem.getItemTypesInventaire('all')
.map(t => Misc.arrayOrEmpty(itemTypes[t]))
.reduce((a, b) => a.concat(b), [])
.sort(Misc.ascending(it => it.name));
}
/* -------------------------------------------- */ /** @override */
@@ -138,22 +129,22 @@ export class RdDBaseActorSheet extends ActorSheet {
this.html = html;
this.html.find('.conteneur-name a').click(async event => {
RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
RdDUtility.toggleAfficheContenu(this.getItemId(event));
this.render(true);
});
this.html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true))
this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItemToChat());
this.html.find('.item-edit').click(async event => this.getItem(event)?.sheet.render(true))
this.html.find('.item-montrer').click(async event => this.getItem(event)?.postItemToChat());
this.html.find('.actor-montrer').click(async event => this.actor.postActorToChat());
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
this.html.find('.item-split').click(async event => {
const item = RdDSheetUtility.getItem(event, this.actor);
const item = this.getItem(event);
RdDSheetUtility.splitItem(item, this.actor);
});
this.html.find('.item-delete').click(async event => RdDUtility.confirmActorItemDelete(this, RdDSheetUtility.getItem(event, this.actor)));
this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente());
this.html.find('.item-delete').click(async event => RdDUtility.confirmActorItemDelete(this, this.getItem(event)));
this.html.find('.item-vendre').click(async event => this.vendre(this.getItem(event)));
this.html.find('.creer-un-objet').click(async event => {
this.selectObjetTypeToCreate();
@@ -162,15 +153,21 @@ export class RdDBaseActorSheet extends ActorSheet {
this.actor.nettoyerConteneurs();
});
this.html.find('.monnaie-plus').click(async event => {
this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), 1);
this.actor.monnaieIncDec(this.getItemId(event), 1);
});
this.html.find('.monnaie-moins').click(async event => {
this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), -1);
this.actor.monnaieIncDec(this.getItemId(event), -1);
});
}
getItemId(event) {
return RdDSheetUtility.getItemId(event);
}
getItem(event) {
return RdDSheetUtility.getItem(event, this.actor);
}
/* -------------------------------------------- */
_getHeaderButtons() {
let buttons = super._getHeaderButtons();
@@ -185,7 +182,7 @@ export class RdDBaseActorSheet extends ActorSheet {
/* -------------------------------------------- */
async _onDropItem(event, dragData) {
const destItemId = this.html.find(event.target)?.closest('.item').attr('data-item-id')
const dropParams = RdDSheetUtility.prepareItemDropParameters(destItemId, this.actor, dragData, this.objetVersConteneur)
const dropParams = await RdDSheetUtility.prepareItemDropParameters(destItemId, this.actor, dragData, this.objetVersConteneur)
if (dropParams) {
const callSuper = await this.actor.processDropItem(dropParams)
if (callSuper) {
@@ -194,10 +191,9 @@ export class RdDBaseActorSheet extends ActorSheet {
}
}
/* -------------------------------------------- */
async selectObjetTypeToCreate() {
let typeObjets = RdDItem.getItemTypesInventaire();
let typeObjets = this.getTypesInventaire().sort(Misc.ascending(type => Misc.typeName('Item', type)));
let content = `<span class="competence-label">Selectionnez le type d'équipement</span><select class="item-type">`;
for (let typeName of typeObjets) {
content += `<option value="${typeName}">${Misc.typeName('Item', typeName)}</option>`
@@ -217,6 +213,10 @@ export class RdDBaseActorSheet extends ActorSheet {
d.render(true);
}
getTypesInventaire() {
return RdDItem.getItemTypesInventaire();
}
/** @override */
setPosition(options = {}) {
const position = super.setPosition(options);
@@ -253,4 +253,8 @@ export class RdDBaseActorSheet extends ActorSheet {
}
}
vendre(item) {
item?.proposerVente(this.actor.getQuantiteDisponible(item));
}
}

View File

@@ -1,6 +1,8 @@
import { ChatUtility } from "../chat-utility.js";
import { SYSTEM_SOCKET_ID } from "../constants.js";
import { Monnaie } from "../item-monnaie.js";
import { Misc } from "../misc.js";
import { RdDAudio } from "../rdd-audio.js";
import { RdDUtility } from "../rdd-utility.js";
import { SystemCompendiums } from "../settings/system-compendiums.js";
@@ -73,14 +75,14 @@ export class RdDBaseActor extends Actor {
if (actorData.items) {
return await super.create(actorData, options);
}
actorData.items = [];
if (actorData.type == "personnage") {
const competences = await SystemCompendiums.getCompetences(actorData.type);
actorData.items = competences.map(i => i.toObject())
actorData.items = actorData.items.concat(competences.map(i => i.toObject()))
.concat(Monnaie.monnaiesStandard());
}
else {
actorData.items = [];
else if (actorData.type == "commerce") {
actorData.items = actorData.items.concat(Monnaie.monnaiesStandard());
}
return super.create(actorData, options);
}
@@ -120,9 +122,11 @@ export class RdDBaseActor extends Actor {
?? Misc.findFirstLike(idOrName, this.listItems(type), { description: Misc.typeName('Item', type) });
}
getMonnaie(id) { return this.findItemLike(id, 'monnaie'); }
recompute() { }
/* -------------------------------------------- */
async onPreUpdateItem(item, change, options, id) { }
@@ -132,11 +136,228 @@ export class RdDBaseActor extends Actor {
async onUpdateActor(update, options, actorId) { }
async onTimeChanging(oldTimestamp, newTimestamp) {
this.items.filter(it => it.isFinPeriode(oldTimestamp, newTimestamp))
.forEach(async it => await it.onFinPeriodeTemporel(oldTimestamp, newTimestamp))
}
/* -------------------------------------------- */
getFortune() {
return Monnaie.getFortune(this.itemTypes['monnaie']);
}
/* -------------------------------------------- */
async monnaieIncDec(id, value) {
let monnaie = this.getMonnaie(id);
if (monnaie) {
const quantite = Math.max(0, monnaie.system.quantite + value);
await this.updateEmbeddedDocuments('Item', [{ _id: monnaie.id, 'system.quantite': quantite }]);
}
}
computePrixTotalEquipement() {
return this.items.filter(it => it.isInventaire())
.filter(it => !it.isMonnaie())
.map(it => it.valeurTotale())
.reduce(Misc.sum(), 0);
}
async payerSols(depense) {
depense = Number(depense);
if (depense == 0) {
return;
}
let fortune = this.getFortune();
console.log("payer", game.user.character, depense, fortune);
let msg = "";
if (fortune >= depense) {
await Monnaie.optimiserFortune(this, fortune - depense);
msg = `Vous avez payé <strong>${depense} Sols</strong>, qui ont été soustraits de votre argent.`;
RdDAudio.PlayContextAudio("argent"); // Petit son
} else {
msg = "Vous n'avez pas assez d'argent pour payer cette somme !";
}
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: msg
};
ChatMessage.create(message);
}
async depenserSols(sols) {
let reste = this.getFortune() - Number(sols);
if (reste >= 0) {
await Monnaie.optimiserFortune(this, reste);
}
return reste;
}
async ajouterSols(sols, fromActorId = undefined) {
sols = Number(sols);
if (sols == 0) {
return;
}
if (sols < 0) {
ui.notifications.error(`Impossible d'ajouter un gain de ${sols} <0`);
return;
}
if (fromActorId && !game.user.isGM) {
RdDBaseActor.remoteActorCall({
userId: Misc.connectedGMOrUser(),
actorId: this.id,
method: 'ajouterSols', args: [sols, fromActorId]
});
}
else {
const fromActor = game.actors.get(fromActorId)
await Monnaie.optimiserFortune(this, sols + this.getFortune());
RdDAudio.PlayContextAudio("argent"); // Petit son
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: `Vous avez reçu <strong>${sols} Sols</strong> ${fromActor ? " de " + fromActor.name : ''}, qui ont été ajoutés à votre argent.`
});
}
}
/* -------------------------------------------- */
getQuantiteDisponible(item) {
return item?.isService() ? undefined : item?.getQuantite();
}
/* -------------------------------------------- */
async achatVente(achat) {
if (achat.vendeurId == achat.acheteurId) {
ui.notifications.info("Inutile de se vendre à soi-même");
return;
}
if (!Misc.isUniqueConnectedGM()) {
RdDBaseActor.remoteActorCall({
actorId: achat.vendeurId ?? achat.acheteurId,
method: 'achatVente',
args: [achat]
});
return;
}
const cout = Number(achat.prixTotal ?? 0);
const vendeur = achat.vendeurId ? game.actors.get(achat.vendeurId) : undefined;
const acheteur = achat.acheteurId ? game.actors.get(achat.acheteurId) : undefined;
const vente = achat.vente;
const quantite = (achat.choix.nombreLots ?? 1) * (vente.tailleLot);
const itemVendu = vendeur?.getItem(vente.item._id);
if (!this.verifierQuantite(vendeur, itemVendu, quantite)) {
ChatUtility.notifyUser(achat.userId, 'warn', `Le vendeur n'a pas assez de ${itemVendu.name} !`);
return
}
if (acheteur && !acheteur.verifierFortune(cout)) {
ChatUtility.notifyUser(achat.userId, 'warn', `Vous n'avez pas assez d'argent pour payer ${Math.ceil(cout / 100)} sols !`);
return;
}
await this.decrementerVente(vendeur, itemVendu, quantite, cout);
if (acheteur) {
await acheteur.depenserSols(cout);
const createdItemId = await acheteur.creerQuantiteItem(vente.item, quantite);
await acheteur.consommerNourritureAchetee(achat, vente, createdItemId);
}
if (cout > 0) {
RdDAudio.PlayContextAudio("argent");
}
const chatAchatItem = duplicate(vente);
chatAchatItem.quantiteTotal = quantite;
ChatMessage.create({
user: achat.userId,
speaker: { alias: (acheteur ?? vendeur).name },
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', chatAchatItem)
});
if (!vente.quantiteIllimite) {
if (vente.quantiteNbLots <= achat.choix.nombreLots) {
ChatUtility.removeChatMessageId(achat.chatMessageIdVente);
}
else if (achat.chatMessageIdVente) {
vente["properties"] = itemVendu.getProprietes();
vente.quantiteNbLots -= achat.choix.nombreLots;
vente.jsondata = JSON.stringify(vente.item);
const messageVente = game.messages.get(achat.chatMessageIdVente);
messageVente.update({ content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', vente) });
messageVente.render(true);
}
}
}
async decrementerVente(vendeur, itemVendu, quantite, cout) {
if (vendeur) {
await vendeur.ajouterSols(cout);
await vendeur.decrementerQuantiteItem(itemVendu, quantite);
}
}
verifierFortune(cout) {
return this.getFortune() >= cout;
}
verifierQuantite(vendeur, item, quantiteTotal) {
const disponible = vendeur?.getQuantiteDisponible(item);
return disponible == undefined || disponible >= quantiteTotal;
}
async consommerNourritureAchetee(achat, vente, createdItemId) {
if (achat.choix.consommer && vente.item.type == 'nourritureboisson' && createdItemId != undefined) {
achat.choix.doses = achat.choix.nombreLots;
await this.consommerNourritureboisson(createdItemId, achat.choix, vente.actingUserId);
}
}
async decrementerQuantiteItem(item, quantite, options = { supprimerSiZero: true }) {
if (item.isService()) {
return;
}
let resteQuantite = (item.system.quantite ?? 1) - quantite;
if (resteQuantite <= 0) {
if (options.supprimerSiZero) {
await this.deleteEmbeddedDocuments("Item", [item.id]);
}
else {
await this.updateEmbeddedDocuments("Item", [{ _id: item.id, 'system.quantite': 0 }]);
}
if (resteQuantite < 0) {
ui.notifications.warn(`La quantité de ${item.name} était insuffisante, l'objet a donc été supprimé`)
}
}
else if (resteQuantite > 0) {
await this.updateEmbeddedDocuments("Item", [{ _id: item.id, 'system.quantite': resteQuantite }]);
}
}
async creerQuantiteItem(item, quantite) {
if (this.canReceive(item)) {
const isItemEmpilable = "quantite" in item.system;
const baseItem = {
type: item.type,
img: item.img,
name: item.name,
system: mergeObject(item.system, { quantite: isItemEmpilable ? quantite : undefined })
};
const newItems = isItemEmpilable ? [baseItem] : Array.from({ length: quantite }, (_, i) => baseItem);
const items = await this.createEmbeddedDocuments("Item", newItems);
return items.length > 0 ? items[0].id : undefined;
}
}
/* -------------------------------------------- */
async computeEncTotal() {
if (!this.pack) {
this.encTotal = this.items.map(it => it.getEncTotal()).reduce(Misc.sum(), 0);
return this.encTotal;
}
return 0;
}
async createItem(type, name = undefined) {
if (!name) {
name = 'Nouveau ' + Misc.typeName('Item', type);
@@ -148,6 +369,237 @@ export class RdDBaseActor extends Actor {
return false;
}
async processDropItem(params) {
const targetActorId = this.id;
const sourceActorId = params.sourceActorId;
const itemId = params.itemId;
const destId = params.destId;
const srcId = params.srcId;
if (sourceActorId && sourceActorId != targetActorId) {
console.log("Moving objects", sourceActorId, targetActorId, itemId);
this.moveItemsBetweenActors(itemId, sourceActorId);
return false;
}
let result = true;
const item = this.getItem(itemId);
if (item?.isInventaire('all') && sourceActorId == targetActorId) {
// rangement
if (srcId != destId && itemId != destId) { // déplacement de l'objet
const src = this.getItem(srcId);
const dest = this.getItem(destId);
const cible = this.getContenantOrParent(dest);
const [empilable, message] = item.isInventaireEmpilable(dest);
if (empilable) {
await dest.empiler(item)
result = false;
}
// changer de conteneur
else if (!cible || this.conteneurPeutContenir(cible, item)) {
await this.enleverDeConteneur(item, src, params.onEnleverConteneur);
await this.ajouterDansConteneur(item, cible, params.onAjouterDansConteneur);
if (message && !dest.isConteneur()) {
ui.notifications.info(cible
? `${message}<br>${item.name} a été déplacé dans: ${cible.name}`
: `${message}<br>${item.name} a été sorti du conteneur`);
}
}
}
}
await this.computeEncTotal();
return result;
}
getContenantOrParent(dest) {
if (!dest || dest.isConteneur()) {
return dest;
}
return this.getContenant(dest);
}
getContenant(item) {
return this.itemTypes['conteneur'].find(it => it.system.contenu.includes(item.id));
}
/* -------------------------------------------- */
conteneurPeutContenir(dest, item) {
if (!dest) {
return true;
}
if (!dest.isConteneur()) {
return false;
}
const destData = dest
if (this._isConteneurContenu(item, dest)) {
ui.notifications.warn(`Impossible de déplacer un conteneur parent (${item.name}) dans un de ses contenus ${destData.name} !`);
return false; // Loop detected !
}
// Calculer le total actuel des contenus
let encContenu = this.getRecursiveEnc(dest) - Number(destData.system.encombrement);
let newEnc = this.getRecursiveEnc(item); // Calculer le total actuel du nouvel objet
// Teste si le conteneur de destination a suffisament de capacité pour recevoir le nouvel objet
if (Number(destData.system.capacite) < encContenu + newEnc) {
ui.notifications.warn(
`Le conteneur ${dest.name} a une capacité de ${destData.system.capacite}, et contient déjà ${encContenu}.
Impossible d'y ranger: ${item.name} d'encombrement ${newEnc}!`);
return false;
}
return true;
}
/* -------------------------------------------- */
_isConteneurContenu(item, conteneur) {
if (item?.isConteneur()) { // Si c'est un conteneur, il faut vérifier qu'on ne le déplace pas vers un sous-conteneur lui appartenant
for (let id of item.system.contenu) {
let subObjet = this.getItem(id);
if (subObjet?.id == conteneur.id) {
return true; // Loop detected !
}
if (subObjet?.isConteneur()) {
return this._isConteneurContenu(subObjet, conteneur);
}
}
}
return false;
}
/* -------------------------------------------- */
getRecursiveEnc(objet) {
if (!objet) {
return 0;
}
const tplData = objet.system;
if (objet.type != 'conteneur') {
return Number(tplData.encombrement) * Number(tplData.quantite);
}
const encContenus = tplData.contenu.map(idContenu => this.getRecursiveEnc(this.getItem(idContenu)));
return encContenus.reduce(Misc.sum(), 0)
+ Number(tplData.encombrement) /* TODO? Number(tplData.quantite) -- on pourrait avoir plusieurs conteneurs...*/
}
/* -------------------------------------------- */
/** Ajoute un item dans un conteneur, sur la base
* de leurs ID */
async ajouterDansConteneur(item, conteneur, onAjouterDansConteneur) {
if (!conteneur) {
// TODO: afficher
item.estContenu = false;
}
else if (conteneur.isConteneur()) {
item.estContenu = true;
await this.updateEmbeddedDocuments('Item', [{
_id: conteneur.id,
'system.contenu': [...conteneur.system.contenu, item.id]
}]);
onAjouterDansConteneur(item.id, conteneur.id);
}
}
/* -------------------------------------------- */
/** Fonction de remise à plat de l'équipement (ie vide les champs 'contenu') */
async nettoyerConteneurs() {
RdDConfirm.confirmer({
settingConfirmer: "confirmation-vider",
content: `<p>Etes vous certain de vouloir vider tous les conteneurs ?</p>`,
title: 'Vider les conteneurs',
buttonLabel: 'Vider',
onAction: async () => {
const corrections = [];
for (let item of this.items) {
if (item.estContenu) {
item.estContenu = undefined;
}
if (item.type == 'conteneur' && item.system.contenu.length > 0) {
corrections.push({ _id: item.id, 'system.contenu': [] });
}
}
if (corrections.length > 0) {
await this.updateEmbeddedDocuments('Item', corrections);
}
}
});
}
/* -------------------------------------------- */
buildSubConteneurObjetList(conteneurId, deleteList) {
let conteneur = this.getItem(conteneurId);
if (conteneur?.type == 'conteneur') { // Si c'est un conteneur
for (let subId of conteneur.system.contenu) {
let subObj = this.getItem(subId);
if (subObj) {
if (subObj.type == 'conteneur') {
this.buildSubConteneurObjetList(subId, deleteList);
}
deleteList.push({ id: subId, conteneurId: conteneurId });
}
}
}
}
/* -------------------------------------------- */
async deleteAllConteneur(itemId, options) {
let list = [];
list.push({ id: itemId, conteneurId: undefined }); // Init list
this.buildSubConteneurObjetList(itemId, list);
await this.deleteEmbeddedDocuments('Item', list.map(it => it.id), options);
}
/* -------------------------------------------- */
/** Supprime un item d'un conteneur, sur la base
* de leurs ID */
async enleverDeConteneur(item, conteneur, onEnleverDeConteneur) {
if (conteneur?.isConteneur()) {
item.estContenu = false;
await this.updateEmbeddedDocuments('Item', [{
_id: conteneur.id,
'system.contenu': conteneur.system.contenu.filter(id => id != item.id)
}]);
onEnleverDeConteneur();
}
}
/* -------------------------------------------- */
async moveItemsBetweenActors(itemId, sourceActorId) {
let itemsList = []
let sourceActor = game.actors.get(sourceActorId);
itemsList.push({ id: itemId, conteneurId: undefined }); // Init list
sourceActor.buildSubConteneurObjetList(itemId, itemsList); // Get itemId list
const itemsDataToCreate = itemsList.map(it => sourceActor.getItem(it.id))
.map(it => duplicate(it))
.map(it => { it.system.contenu = []; return it; });
let newItems = await this.createEmbeddedDocuments('Item', itemsDataToCreate);
let itemMap = this._buildMapOldNewId(itemsList, newItems);
for (let item of itemsList) { // Second boucle pour traiter la remise en conteneurs
// gestion conteneur/contenu
if (item.conteneurId) { // l'Objet était dans un conteneur
let newConteneurId = itemMap[item.conteneurId]; // Get conteneur
let newConteneur = this.getItem(newConteneurId);
let newItemId = itemMap[item.id]; // Get newItem
console.log('New conteneur filling!', newConteneur, newItemId, item);
let contenu = duplicate(newConteneur.system.contenu);
contenu.push(newItemId);
await this.updateEmbeddedDocuments('Item', [{ _id: newConteneurId, 'system.contenu': contenu }]);
}
}
for (let item of itemsList) {
await sourceActor.deleteEmbeddedDocuments('Item', [item.id]);
}
}
_buildMapOldNewId(itemsList, newItems) {
let itemMap = {};
for (let i = 0; i < itemsList.length; i++) {
itemMap[itemsList[i].id] = newItems[i].id; // Pour garder le lien ancien / nouveau
}
return itemMap;
}
/* -------------------------------------------- */
async postActorToChat(modeOverride) {
let chatData = {

View File

@@ -0,0 +1,74 @@
import { DialogItemAchat } from "../dialog-item-achat.js";
import { RdDItem } from "../item.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDUtility } from "../rdd-utility.js";
import { RdDBaseActorSheet } from "./base-actor-sheet.js";
import { RdDCommerce } from "./commerce.js";
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class RdDCommerceSheet extends RdDBaseActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["rdd", "sheet", "actor"],
template: "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-actor-sheet.html",
width: 600,
height: 720,
tabs: [],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }]
});
}
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
super.activateListeners(html);
this.html.find('a.item-acheter').click(async event => await this.vente(this.getItem(event)));
if (!this.options.editable) return;
this.html.find('a.item-quantite-moins').click(async event => await this.getItem(event)?.quantiteIncDec(-1, { supprimerSiZero: false}));
this.html.find('a.item-quantite-plus').click(async event => await this.getItem(event)?.quantiteIncDec(1));
this.html.find('input.item-quantite').change(async event => {
const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val()));
await this.getItem(event)?.update({ "system.quantite": newQuantite });
})
this.html.find('input.item-cout').change(async event => {
const newCout = Math.max(0, Number(this.html.find(event.currentTarget).val()));
await this.getItem(event)?.update({ "system.cout": newCout });
})
}
getTypesInventaire() {
return RdDItem.getItemTypesInventaire('all');
}
async vente(item) {
const acheteur = RdDUtility.getSelectedActor();
if (!acheteur) {
ui.notifications.warn(`Pas d'acheteur sélectionné`);
return;
}
const disponible = this.actor.getQuantiteDisponible(item)
if (disponible == 0) {
ui.notifications.warn(`${this.name} n'a plus de ${item.name} en vente`);
return;
}
await DialogItemAchat.onAcheter({
item,
vendeur: this.actor,
acheteur,
quantiteIllimite: disponible == undefined,
nbLots: disponible ?? 1,
tailleLot: 1,
prixLot: item.calculerPrixCommercant()
});
}
}

53
module/actor/commerce.js Normal file
View File

@@ -0,0 +1,53 @@
import { Misc } from "../misc.js";
import { RdDBaseActor } from "./base-actor.js";
export class RdDCommerce extends RdDBaseActor {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/services/commerce.webp";
}
prepareData() {
super.prepareData();
}
prepareDerivedData() {
super.prepareDerivedData();
}
canReceive(item) {
if (item.isInventaire('all')) {
return true;
}
return super.canReceive(item);
}
getQuantiteDisponible(item) {
return this.system.illimite || item.isService() ? undefined : item.getQuantite();
}
verifierFortune(cout) {
return this.system.illimite || super.verifierFortune(cout);
}
async depenserSols(cout) {
if (this.system.illimite) {
return
}
await super.depenserSols(cout)
}
async consommerNourritureAchetee(achat, vente, createdItemId) {
// ne pas consommer pour un commerce
}
async decrementerQuantiteItem(item, quantite) {
if (this.system.illimite) {
return;
}
await super.decrementerQuantiteItem(item, quantite, { supprimerSiZero: false });
}
calculerPrix(item) {
const pourcentage = this.system.pourcentage ?? 100;
return Misc.keepDecimals(Math.ceil(item.system.cout * pourcentage) / 100, 2);
}
}

View File

@@ -1,5 +1,6 @@
import { SYSTEM_RDD } from "./constants.js";
import { Grammar } from "./grammar.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
const LATEST_USED_JOURNAL_ID = "chronologie-dernier-journal";
@@ -16,16 +17,13 @@ export class DialogChronologie extends Dialog {
});
}
static async create() {
const dateRdD = game.system.rdd.calendrier.getCalendrier();
const dialogData = {
auteur: game.user.name,
isGM: game.user.isGM,
information: "",
journalId: game.settings.get(SYSTEM_RDD, LATEST_USED_JOURNAL_ID),
journaux: game.journal.filter(it => it.testUserPermission(game.user, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)),
dateRdD: dateRdD,
jourRdD: dateRdD.jour +1,
heureRdD: game.system.rdd.calendrier.getCurrentHeure(),
timestamp: game.system.rdd.calendrier.timestamp,
dateReel: DialogChronologie.getCurrentDateTime()
};
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-chronologie.html", dialogData);
@@ -93,11 +91,12 @@ export class DialogChronologie extends Dialog {
auteur: this.html.find("form.rdddialogchrono :input[name='auteur']").val(),
information: this.html.find("form.rdddialogchrono :input[name='information']").val(),
dateRdD: {
jour: this.html.find("form.rdddialogchrono :input[name='jourRdD']").val(),
moisRdD: this.html.find("form.rdddialogchrono :input[name='dateRdD.moisRdD.key']").val(),
annee: this.html.find("form.rdddialogchrono :input[name='dateRdD.annee']").val()
jour: this.html.find("form.rdddialogchrono :input[name='chronologie.jourDuMois']").val(),
mois: RdDTimestamp.definition(this.html.find("form.rdddialogchrono :input[name='chronologie.mois']").val()),
annee: this.html.find("form.rdddialogchrono :input[name='chronologie.annee']").val(),
heure: RdDTimestamp.definition(this.html.find("form.rdddialogchrono :input[name='chronologie.heure']").val()),
minute: this.html.find("form.rdddialogchrono :input[name='chronologie.minute']").val(),
},
heureRdD: this.html.find("form.rdddialogchrono :input[name='heureRdD']").val(),
dateReel: this.html.find("form.rdddialogchrono :input[name='dateReel']").val().replace('T', ' ')
}
}

View File

@@ -1,6 +1,6 @@
import { ChatUtility } from "./chat-utility.js";
import { HtmlUtility } from "./html-utility.js";
import { RdDItemSigneDraconique } from "./item-signedraconique.js";
import { RdDItemSigneDraconique } from "./item/item-signedraconique.js";
import { TMRUtility } from "./tmr-utility.js";
export class DialogCreateSigneDraconique extends Dialog {

View File

@@ -30,15 +30,13 @@ export class DialogItemAchat extends Dialog {
}
static async onAcheter({ item, vendeur, acheteur, service, serviceSubItem, tailleLot, prixLot, nbLots, quantiteIllimite, chatMessageIdVente }) {
static async onAcheter({ item, vendeur, acheteur, tailleLot, prixLot, nbLots, quantiteIllimite, chatMessageIdVente }) {
const venteData = {
item,
actingUserId: game.user.id,
vendeurId: vendeur?.id,
vendeur,
acheteur,
serviceSubItem: serviceSubItem,
service,
tailleLot,
quantiteIllimite,
quantiteNbLots: nbLots,
@@ -77,7 +75,7 @@ export class DialogItemAchat extends Dialog {
buttons[actionAchat] = { label: actionAchat, callback: it => { this.onAchat(); } };
buttons["decliner"] = { label: "Décliner", callback: it => { } };
const acheteur = venteData.acheteur?.name ?? 'Un acheteur';
const vendeur = (venteData.service ?? venteData.vendeur)?.name ?? 'Un vendeur';
const vendeur = venteData.vendeur?.name ?? 'Un vendeur';
let conf = {
title: `${acheteur} - ${actionAchat} à ${vendeur}`,
content: html,
@@ -93,7 +91,6 @@ export class DialogItemAchat extends Dialog {
await this.html.find(".nombreLots").change();
(this.venteData.vendeur ?? this.venteData.acheteur).achatVente({
userId: game.user.id,
serviceId: this.venteData.service?.id,
vendeurId: this.venteData.vendeur?.id,
acheteurId: this.venteData.acheteur?.id,
prixTotal: this.venteData.prixTotal,

View File

@@ -2,23 +2,21 @@ import { HtmlUtility } from "./html-utility.js";
export class DialogItemVente extends Dialog {
static async display({ item, callback, service = undefined, quantiteMax = undefined }) {
const quantite = quantiteMax ?? item.getQuantite();
const isOwned = item.isOwned;
// const isOwned = item.isOwned || service?.actor;
static async display({ item, callback, quantiteMax = undefined }) {
const quantite = quantiteMax ?? item.getQuantite() ?? 1;
const isOwned = item.parent;
const venteData = {
item: item,
alias: item.actor?.name ?? service?.name ?? game.user.name,
serviceId: service?.id,
vendeurId: item.actor?.id ?? service?.actor?.id,
prixOrigine: item.system.cout,
prixUnitaire: item.system.cout,
prixLot: item.system.cout,
alias: item.actor?.name ?? game.user.name,
vendeurId: item.actor?.id ,
prixOrigine: item.calculerPrixCommercant(),
prixUnitaire: item.calculerPrixCommercant(),
prixLot: item.calculerPrixCommercant(),
tailleLot: 1,
quantiteNbLots: quantite,
quantiteMaxLots: quantite,
quantiteMax: quantite,
quantiteIllimite: (service && service.system && service.system.illimite) ? service.system.illimite : !isOwned,
quantiteIllimite: item.isItemCommerce() ? quantiteMax == undefined : !isOwned,
isOwned: isOwned,
};
const html = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/dialog-item-vente.html`, venteData);
@@ -43,8 +41,7 @@ export class DialogItemVente extends Dialog {
activateListeners(html) {
super.activateListeners(html);
this.html = html;
HtmlUtility._showControlWhen(this.html.find(".quantiteNbLots"), !this.venteData.quantiteIllimite)
this.setQuantiteIllimite(this.venteData.quantiteIllimite);
this.html.find(".tailleLot").change(event => this.setTailleLot(Number(event.currentTarget.value)));
this.html.find(".quantiteNbLots").change(event => this.setNbLots(Number(event.currentTarget.value)));
this.html.find(".quantiteIllimite").change(event => this.setQuantiteIllimite(event.currentTarget.checked));

View File

@@ -51,7 +51,7 @@ export class RdDConteneurItemSheet extends RdDItemSheet {
async _onDropItem(event, dragData) {
if (this.actor) {
const dropParams = RdDSheetUtility.prepareItemDropParameters(this.item.id, this.actor, dragData, this.objetVersConteneur);
const dropParams = await RdDSheetUtility.prepareItemDropParameters(this.item.id, this.actor, dragData, this.objetVersConteneur);
await this.actor.processDropItem(dropParams);
await this.render(true);
}

View File

@@ -1,4 +1,4 @@
import { RdDRencontre } from "./item-rencontre.js";
import { RdDRencontre } from "./item/item-rencontre.js";
import { RdDItemSheet } from "./item-sheet.js";
export class RdDRencontreItemSheet extends RdDItemSheet {

View File

@@ -1,10 +1,4 @@
import { RdDItemSheet } from "./item-sheet.js";
import { Misc } from "./misc.js";
import { RdDUtility } from "./rdd-utility.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
import { DialogItemAchat } from "./dialog-item-achat.js";
import { RdDItem } from "./item.js";
import { RdDItemService } from "./item-service.js";
export class RdDServiceItemSheet extends RdDItemSheet {
@@ -18,64 +12,5 @@ export class RdDServiceItemSheet extends RdDItemSheet {
activateListeners(html) {
super.activateListeners(html);
this.html.find('a.rdd-world-content-link').click(async event => {
const itemRef = this.getItemRef(event);
game.items.get(itemRef.id)?.sheet.render(true)
});
this.html.find('a.sub-item-acheter').click(async event => {
const subItem = this.item.findRefItem(this.getItemRef(event));
await this.item.acheter(RdDUtility.getSelectedActor(), subItem);
});
if (!this.options.editable) return;
this.html.find('a.sub-item-vendre').click(async event => {
const subItem = this.item.findRefItem(this.getItemRef(event));
await this.item.vendre(subItem);
});
this.html.find('a.sub-item-delete').click(async event => {
await this.item.removeRefItem(this.getItemRef(event));
});
this.html.find('a.sub-item-quantite-moins').click(async event => await this.item.increaseRefItemQuantite(this.getItemRef(event), -1))
this.html.find('a.sub-item-quantite-plus').click(async event => await this.item.increaseRefItemQuantite(this.getItemRef(event), 1))
this.html.find('input.sub-item-quantite').change(async event => {
const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val()));
await this.item.updateRefItem(this.getItemRef(event), it => it.system.quantite = newQuantite);
})
this.html.find('input.sub-item-cout').change(async event => {
const newCout = Math.max(0, Number(this.html.find(event.currentTarget).val()));
await this.item.updateRefItem(this.getItemRef(event), it => it.system.cout = newCout);
})
this.html.find('a.sub-item-info-add').click(__ =>
ui.notifications.info(`Utiliser le glisser-déposer pour ajouter des objets depuis un compendium ou les objets du monde`)
);
}
async _onDropItem(event, dragData) {
let linkedItem = fromUuidSync(dragData.uuid);
const existing = this.item.system.items.find(it => it.pack == linkedItem.pack && it.id == linkedItem.id && it.type == linkedItem.type);
if (existing) {
ui.notifications.warn(`${this.item.name} contient déjà un ${existing.name}`);
return;
}
if (linkedItem.pack) {
linkedItem = await SystemCompendiums.loadDocument(linkedItem);
}
if (linkedItem.isInventaire()) {
await this.item.addRefItem(RdDItemService.createSubItem(linkedItem));
}
else {
ui.notifications.warn(`${this.item.name} ne peut pas proposer à la vente de ${Misc.typeName('Item', linkedItem.type)}: ${linkedItem.name}`);
}
}
getItemRef(event) {
const itemRow = this.html.find(event.currentTarget)?.parents('.item.service-item');
return { id: itemRow?.data("item-id"), pack: itemRow?.data("pack") ?? undefined }
}
}

View File

@@ -1,141 +0,0 @@
import { DialogItemAchat } from "./dialog-item-achat.js";
import { RdDItem } from "./item.js";
import { Misc } from "./misc.js";
export class RdDItemService extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/items/services.webp";
}
/** @override*/
getUserLevel(user) {
const level = super.getUserLevel(user);
if (level == CONST.DOCUMENT_OWNERSHIP_LEVELS.NONE) {
// si quelqu'un a accès au lien d'un service, il peut le voir
return CONST.DOCUMENT_OWNERSHIP_LEVELS.LIMITED;
}
return level;
}
isService() { return true; }
getChatItemTemplate() { return 'systems/foundryvtt-reve-de-dragon/templates/post-item-service.html'; }
getProprietes() { return []; }
getServiceItem(itemRef) {
if (itemRef && this.isService()) {
return this.system.items.find(it => it.id == itemRef.id && it.pack == itemRef.pack);
}
return undefined;
}
getQuantiteDisponible(itemRef, max) {
if (this.system.illimite) {
return max;
}
const subItem = this.getServiceItem(itemRef);
return subItem?.system.quantite ?? 0;
}
async venteRefItem(ref, quantite, cout) {
if (this.actor) {
await this.actor.ajouterSols(cout);
}
await this.increaseRefItemQuantite(ref, -quantite);
}
async vendre(subItem) {
const item = await RdDItem.getCorrespondingItem(subItem);
const quantiteMax = this.system.illimite ? undefined : subItem.system.quantite;
await item.proposerVente({ service: this, quantiteMax });
}
async acheter(acheteur, subItem) {
if (!acheteur) {
ui.notifications.warn(`Pas d'acheteur sélectionné`);
return;
}
const nbLots = this.system.illimite ? 1 : subItem.system.quantite;
if (nbLots <= 0) {
ui.notifications.warn(`${this.name} n'a plus de ${subItem.name} en vente`);
return;
}
await DialogItemAchat.onAcheter({
item: await RdDItem.getCorrespondingItem(subItem),
acheteur,
serviceSubItem: subItem,
service: this,
quantiteIllimite: this.system.illimite,
nbLots,
tailleLot: 1,
prixLot: subItem.system.cout
});
}
static createSubItem(linkedItem) {
return {
id: linkedItem.id,
pack: linkedItem.pack,
name: linkedItem.name,
img: linkedItem.img,
system: {
quantite: 1,
cout: linkedItem.system.cout ?? 0
}
};
}
static matchRefItem({ id, pack }) {
return it => it.id == id && (pack ? (it.pack == pack) : (!it.pack));
}
findRefItem(ref) {
return this.system.items.find(RdDItemService.matchRefItem(ref));
}
async increaseRefItemQuantite(ref, quantite) {
await this.updateRefItem(ref,
it => it.system.quantite = Math.max(0, it.system.quantite + quantite)
);
}
async updateRefItem(ref, update = it => { }) {
await this.updateRefItems(RdDItemService.matchRefItem(ref), update);
}
async addRefItem(newItem) {
if (!newItem.id) {
ui.notifications.warn(`${newItem?.name ?? '??'} n'a pas d'identifiant`);
return;
}
if (this.system.items.find(RdDItemService.matchRefItem(newItem))) {
ui.notifications.warn(`${newItem?.name ?? newItem.id} est déjà présent ici`);
return;
}
await this.setRefItems([...this.system.items, newItem]);
}
async removeRefItem(ref) {
await this.removeRefItems(RdDItemService.matchRefItem(ref));
}
async removeRefItems(matcher = it => false) {
await this.setRefItems(this.system.items.filter(it => !matcher(it)));
}
async updateRefItems(matcher = it => false, update = it => { }) {
const updatedList = this.system.items.map(it => {
if (matcher(it)) {
update(it);
}
return it;
});
await this.setRefItems(updatedList);
}
async setRefItems(newItems) {
await this.update({ 'system.items': newItems.sort(Misc.ascending(it => it.type + ':' + it.name)) });
}
}

View File

@@ -10,6 +10,7 @@ import { SYSTEM_RDD } from "./constants.js";
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
import { Misc } from "./misc.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
/**
* Extend the basic ItemSheet for RdD specific items
@@ -60,7 +61,7 @@ export class RdDItemSheet extends ItemSheet {
buttons.unshift({
class: "vendre",
icon: "fas fa-comments-dollar",
onclick: ev => this.item.proposerVente({service: this, quantiteMax: 1})
onclick: ev => this.item.proposerVente(1)
});
}
buttons.unshift({
@@ -135,11 +136,7 @@ export class RdDItemSheet extends ItemSheet {
RdDGemme.calculDataDerivees(this.item);
}
if (this.item.type == 'potion') {
if (this.dateUpdated) {
formData.system.prdate = this.dateUpdated;
this.dateUpdated = undefined;
}
await RdDHerbes.updatePotionData(formData);
await RdDHerbes.addPotionFormData(formData);
}
if (formData.isOwned && this.item.type == 'herbe' && (formData.system.categorie == 'Soin' || formData.system.categorie == 'Repos')) {
formData.isIngredientPotionBase = true;
@@ -185,10 +182,12 @@ export class RdDItemSheet extends ItemSheet {
}
})
this.html.find('.enchanteDate').change((event) => {
let jour = Number(this.html.find('[name="splitDate.day"]').val());
let mois = this.html.find('[name="splitDate.month"]').val();
this.dateUpdated = game.system.rdd.calendrier.getIndexFromDate(jour, mois);
this.html.find('.date-enchantement').change((event) => {
const jour = Number(this.html.find('input.date-enchantement[name="enchantement.jour"]').val());
const mois = RdDTimestamp.definition(this.html.find('select.date-enchantement[name="enchantement.mois"]').val());
const indexDate = game.system.rdd.calendrier.getIndexFromDate(jour, mois.heure);
this.item.update({ 'system.prdate': indexDate });
console.warn(`Date d'enchantement modifiée ${jour}/${mois.heure}: ${indexDate}`)
});
this.html.find('.creer-tache-livre').click((event) => this._getEventActor(event).creerTacheDepuisLivre(this.item));
@@ -213,6 +212,11 @@ export class RdDItemSheet extends ItemSheet {
this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente());
this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItemToChat());
this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => this.render(true)));
const updateItemTimestamp = (path, timestamp) => this.item.update({ [path]: duplicate(timestamp) })
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.debut', updateItemTimestamp);
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.fin', updateItemTimestamp);
}
_getEventActor(event) {
@@ -221,6 +225,7 @@ export class RdDItemSheet extends ItemSheet {
return actor;
}
/* -------------------------------------------- */
async _onSelectCategorie(event) {
event.preventDefault();

View File

@@ -1,5 +1,5 @@
import { RdDItemSheet } from "./item-sheet.js";
import { RdDItemSigneDraconique } from "./item-signedraconique.js";
import { RdDItemSigneDraconique } from "./item/item-signedraconique.js";
import { TMRUtility } from "./tmr-utility.js";
/**

View File

@@ -2,17 +2,18 @@ import { DialogItemVente } from "./dialog-item-vente.js";
import { Grammar } from "./grammar.js";
import { Misc } from "./misc.js";
import { RdDHerbes } from "./rdd-herbes.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
import { RdDUtility } from "./rdd-utility.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
const typesObjetsInventaire = [
const typesInventaireMateriel = [
"arme",
"armure",
"conteneur",
"faune",
"gemme",
"herbe",
"ingredient",
"faune",
"livre",
"monnaie",
"munition",
@@ -20,11 +21,17 @@ const typesObjetsInventaire = [
"objet",
"potion",
]
const typesInventaire = {
materiel: typesInventaireMateriel,
all: ['service'].concat(typesInventaireMateriel),
}
const typesObjetsOeuvres = ["oeuvre", "recettecuisine", "musique", "chant", "danse", "jeu"]
const typesObjetsDraconiques = ["queue", "ombre", "souffle", "tete", "signedraconique", "sortreserve", "rencontre"]
const typesObjetsConnaissance = ["meditation", "recettealchimique", "sort"]
const typesObjetsEffet = ["possession", "poison", "maladie"]
const typesObjetsCompetence = ["competence", "competencecreature"]
const typesObjetsTemporels = ["poison", "maladie", "queue", "ombre", "souffle", "signedraconique", "rencontre"]
const encBrin = 0.00005; // un brin = 1 décigramme = 1/10g = 1/10000kg = 1/20000 enc
const encPepin = 0.0007; /* un pépin de gemme = 1/10 cm3 = 1/1000 l = 3.5/1000 kg = 7/2000 kg = 7/1000 enc
densité 3.5 (~2.3 à 4, parfois plus) -- https://www.juwelo.fr/guide-des-pierres/faits-et-chiffres/
@@ -58,7 +65,7 @@ export const defaultItemImg = {
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",
service: "systems/foundryvtt-reve-de-dragon/icons/items/services.webp",
service: "systems/foundryvtt-reve-de-dragon/icons/services/lit.webp",
signedraconique: "systems/foundryvtt-reve-de-dragon/icons/tmr/signe_draconique.webp",
gemme: "systems/foundryvtt-reve-de-dragon/icons/gemmes/almaze.webp",
possession: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp",
@@ -97,8 +104,8 @@ export class RdDItem extends Item {
return game.items.get(itemRef.id ?? itemRef._id);
}
static getItemTypesInventaire() {
return typesObjetsInventaire
static getItemTypesInventaire(mode = 'materiel') {
return typesInventaire[mode ?? 'materiel']
}
static getTypesOeuvres() {
@@ -145,27 +152,20 @@ export class RdDItem extends Item {
isCompetenceCreature() { return this.type == 'competencecreature' }
isConteneur() { return this.type == 'conteneur'; }
isMonnaie() { return this.type == 'monnaie'; }
isPotion() { return this.type == 'potion'; }
isNourritureBoisson() { return this.type == 'nourritureboisson'; }
isService() { return this.type == 'service'; }
isCompetence() {
return typesObjetsCompetence.includes(this.type)
}
isInventaire() {
return typesObjetsInventaire.includes(this.type);
}
isOeuvre() {
return typesObjetsOeuvres.includes(this.type)
}
isDraconique() {
return typesObjetsDraconiques.includes(this.type)
}
isEffet() {
return typesObjetsEffet.includes(this.type)
}
isConnaissance() {
return typesObjetsConnaissance.includes(this.type)
}
isCompetence() { return typesObjetsCompetence.includes(this.type) }
isTemporel() { return typesObjetsTemporels.includes(this.type) }
isOeuvre() { return typesObjetsOeuvres.includes(this.type) }
isDraconique() { return typesObjetsDraconiques.includes(this.type) }
isEffet() { return typesObjetsEffet.includes(this.type) }
isConnaissance() { return typesObjetsConnaissance.includes(this.type) }
isInventaire(mode = 'materiel') { return RdDItem.getItemTypesInventaire(mode).includes(this.type); }
isAlcool() { return this.isNourritureBoisson() && this.system.boisson && this.system.alcoolise; }
isHerbeAPotion() { return this.type == 'herbe' && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos'); }
getItemGroup() {
if (this.isInventaire()) return "equipement";
@@ -177,16 +177,43 @@ export class RdDItem extends Item {
return "autres";
}
isConteneurNonVide() {
return this.isConteneur() && (this.system.contenu?.length ?? 0) > 0;
isConteneurNonVide() { return this.isConteneur() && (this.system.contenu?.length ?? 0) > 0; }
isConteneurVide() { return this.isConteneur() && (this.system.contenu?.length ?? 0) == 0; }
isVideOuNonConteneur() { return !this.isConteneur() || (this.system.contenu?.length ?? 0) == 0; }
isFinPeriode(oldTimestamp, newTimestamp) {
if (!this.isTemporel()) {
return false;
}
const finPeriode = new RdDTimestamp(this.system.temporel.fin);
return oldTimestamp.compare(finPeriode) < 0 && finPeriode.compare(newTimestamp) <= 0
}
isConteneurVide() {
return this.isConteneur() && (this.system.contenu?.length ?? 0) == 0;
async onCreateItemTemporel(actor) {
if (this.isTemporel()) {
const timestampDebut = game.system.rdd.calendrier.timestamp;
const timestampFin = await this.calculerFinPeriodeTemporel(timestampDebut);
await actor.updateEmbeddedDocuments('Item', [{
_id: this.id,
'system.temporel.debut': duplicate(timestampDebut),
'system.temporel.fin': duplicate(timestampFin),
}])
}
}
isVideOuNonConteneur() {
return !this.isConteneur() || (this.system.contenu?.length ?? 0) == 0;
async calculerFinPeriodeTemporel(timestampDebut) {
return timestampDebut;
}
async onFinPeriodeTemporel(oldTimestamp, newTimestamp) {
if (this.isTemporel() && this.actor) {
await this.onFinPeriode(oldTimestamp, newTimestamp);
}
}
async onFinPeriode(oldTimestamp, newTimestamp) {
console.log(`${this.actor.name}: l'objet ${this.name} a expiré et été supprimé`);
await this.actor?.deleteEmbeddedDocuments('Item', [this.id]);
}
isComestible() {
@@ -200,16 +227,6 @@ export class RdDItem extends Item {
return '';
}
isAlcool() {
return this.isNourritureBoisson() && this.system.boisson && this.system.alcoolise;
}
isHerbeAPotion() {
return this.type == 'herbe' && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos');
}
isPotion() {
return this.type == 'potion';
}
isCristalAlchimique() {
return this.type == 'objet' && Grammar.toLowerCaseNoAccent(this.name) == 'cristal alchimique' && this.system.quantite > 0;
}
@@ -218,16 +235,22 @@ export class RdDItem extends Item {
return this.system.magique
}
isItemCommerce() {
return this.parent?.type == 'commerce';
}
getQuantite() {
return Math.round(this.system.quantite ?? 0)
return this.isService() ? undefined : Math.round(this.system.quantite ?? 0)
}
getEncTotal() {
return this.getEnc() * this.getQuantite();
return (this.isService() ? 0 : this.getQuantite()) * this.getEnc();
}
getEnc() {
switch (this.type) {
case 'service':
return 0;
case 'herbe':
return this.getEncHerbe();
case 'gemme':
@@ -246,13 +269,21 @@ export class RdDItem extends Item {
}
valeurTotale() {
return this.getQuantite() * this.valeur()
return (this.isService() ? 1 : this.getQuantite()) * this.valeur()
}
valeur() {
return this.system.cout ?? 0
}
calculerPrixCommercant() {
if (this.isItemCommerce()) {
// appliquer le pourcentage
return this.parent.calculerPrix(this);
}
return this.system.cout;
}
prepareDerivedData() {
super.prepareDerivedData();
if (this.isInventaire()) {
@@ -365,7 +396,7 @@ export class RdDItem extends Item {
await item.delete();
}
async quantiteIncDec(nombre, options = { diminuerQuantite: true, supprimerSiZero: false }) {
async quantiteIncDec(nombre, options = { supprimerSiZero: false }) {
const quantite = Number(this.system.quantite ?? -1);
if (quantite >= 0) {
const reste = Math.max(quantite + Number(nombre), 0);
@@ -402,7 +433,7 @@ export class RdDItem extends Item {
return [false, `Impossible de regrouper ${this.name} avec ${other.name}`];
}
else {
const excludedProperties = ['quantite', 'cout', 'encTotal'];
const excludedProperties = ['quantite', 'cout', 'encTotal', 'environnement'];
if (this.isComestible()) {
excludedProperties.push('sust', 'encombrement');
}
@@ -420,7 +451,7 @@ export class RdDItem extends Item {
return [true, undefined];
}
async proposerVente({ service = undefined, quantiteMax = undefined }) {
async proposerVente(quantiteMax = undefined) {
console.log(this);
if (this.isConteneurNonVide()) {
ui.notifications.warn(`Votre ${this.name} n'est pas vide, pas possible de le proposer`);
@@ -428,7 +459,6 @@ export class RdDItem extends Item {
}
await DialogItemVente.display({
item: this,
service: service,
quantiteMax,
callback: async (vente) => {
vente["properties"] = this.getProprietes();
@@ -464,7 +494,7 @@ export class RdDItem extends Item {
img: this.img,
pack: this.pack,
name: this.name,
actor : this.actor ? { id: this.actor.id } : undefined,
actor: this.actor ? { id: this.actor.id } : undefined,
system: { description: this.system.description },
properties: this.getProprietes(),
}
@@ -475,9 +505,6 @@ export class RdDItem extends Item {
}
getChatItemTemplate() {
switch (this.type) {
case 'service': return 'systems/foundryvtt-reve-de-dragon/templates/post-item-service.html';
}
return 'systems/foundryvtt-reve-de-dragon/templates/post-item.html';
}

View File

@@ -1,4 +1,5 @@
import { EffetsRencontre } from "./effets-rencontres.js";
import { EffetsRencontre } from "../effets-rencontres.js";
import { RdDItem } from "../item.js";
const tableEffets = [
{ code: "messager", resultat: "succes", description: "Envoie un message à (force) cases", method: EffetsRencontre.messager },
@@ -36,7 +37,11 @@ const tableEffets = [
// { code: "epart-souffle", resultat: "echec", description: "Souffle de dragon sur échec particulier" },
];
export class RdDRencontre {
export class RdDRencontre extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/tete_dragon.webp";
}
static getEffetsSucces() { return RdDRencontre.getEffets("succes"); }
static getEffetsEchec() { return RdDRencontre.getEffets("echec"); }
@@ -68,4 +73,8 @@ export class RdDRencontre {
}
}
async calculerFinPeriodeTemporel(debut) {
return await debut.nouvelleHeure().addHeures(12);
}
}

View File

@@ -0,0 +1,17 @@
import { RdDItem } from "../item.js";
export class RdDItemService extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/services/lit.webp";
}
isService() { return true; }
getProprietes() {
return [
RdDItem.propertyIfDefined('Qualité', this.system.qualite, this.system.qualite != 0),
RdDItem.propertyIfDefined('Moral', 'Situation heureuse', this.system.moral),
RdDItem.propertyIfDefined('Coût', `${this.calculerPrixCommercant()} sols`),
];
}
}

View File

@@ -1,8 +1,9 @@
import { defaultItemImg } from "./item.js";
import { Misc } from "./misc.js";
import { RdDDice } from "./rdd-dice.js";
import { RdDRollTables } from "./rdd-rolltables.js";
import { TMRType, TMRUtility } from "./tmr-utility.js";
import { RdDItem, defaultItemImg } from "../item.js";
import { Misc } from "../misc.js";
import { RdDDice } from "../rdd-dice.js";
import { RdDRollTables } from "../rdd-rolltables.js";
import { RdDTimestamp } from "../rdd-timestamp.js";
import { TMRType, TMRUtility } from "../tmr-utility.js";
const tableSignesIndicatifs = [
{ rarete: "Très facile", difficulte: 0, xp: 6, nbCases: 14 },
@@ -15,7 +16,17 @@ const tableSignesIndicatifs = [
const DIFFICULTE_LECTURE_SIGNE_MANQUE = +11;
export class RdDItemSigneDraconique {
export class RdDItemSigneDraconique extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/tmr/signe_draconique.webp";
}
async calculerFinPeriodeTemporel(debut) {
// TODO
return RdDTimestamp.formulesDuree().find(it => it.code == "").calcul(debut, this.actor);
}
static prepareSigneDraconiqueMeditation(meditation, rolled) {
return {
@@ -96,6 +107,6 @@ export class RdDItemSigneDraconique {
static async randomSigneDescription() {
return await RdDRollTables.drawTextFromRollTable("Signes draconiques", false);
}
}
}

47
module/item/maladie.js Normal file
View File

@@ -0,0 +1,47 @@
import { RdDItem } from "../item.js";
import { Misc } from "../misc.js";
import { RdDTimestamp } from "../rdd-timestamp.js";
export class RdDItemMaladie extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp";
}
async calculerFinPeriodeTemporel(debut) {
return await debut.addPeriode(this.system.periode.nombre, this.system.periode.unite);
}
async onFinPeriode(oldTimestamp, newTimestamp) {
await RdDItemMaladie.notifierMaladiePoison(this, oldTimestamp, newTimestamp)
}
static async notifierMaladiePoison(mal, oldTimestamp, newTimestamp) {
if (mal.actor) {
const souffrance = mal.system.identifie
? `de ${mal.name}`
: `d'un mal inconnu`
ChatMessage.create({ content: `${mal.actor.name} souffre ${souffrance} (${Misc.typeName('Item', mal.type)}): vérifiez que les effets ne se sont pas aggravés !` });
mal.postItemToChat('gmroll');
await RdDItemMaladie.prolongerPeriode(mal,oldTimestamp, newTimestamp);
}
}
static async prolongerPeriode(mal, oldTimestamp, newTimestamp) {
if (mal.actor) {
// TODO: déterminer le nombre de périodes écoulées
console.log(`${mal.actor.name}: le mal ${mal.name} a atteint la fin de sa période et été prolongé`);
const current = newTimestamp;
const finPeriode = new RdDTimestamp(mal.system.temporel.fin)
const periodeSuivante = (finPeriode.compare(current) > 0 ? finPeriode : current);
const timestampFin = await mal.calculerFinPeriodeTemporel(periodeSuivante);
await mal.actor.updateEmbeddedDocuments('Item', [{
_id: mal.id,
'system.temporel.fin': duplicate(timestampFin),
}])
}
}
}

11
module/item/ombre.js Normal file
View File

@@ -0,0 +1,11 @@
import { RdDItem } from "../item.js";
export class RdDItemOmbre extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp";
}
async calculerFinPeriodeTemporel(debut) {
return await debut.appliquerDuree(this.system.duree, this.parent);
}
}

17
module/item/poison.js Normal file
View File

@@ -0,0 +1,17 @@
import { RdDItem } from "../item.js";
import { RdDItemMaladie } from "./maladie.js";
export class RdDItemPoison extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp";
}
async calculerFinPeriodeTemporel(debut) {
return await debut.addPeriode(this.system.periode.nombre, this.system.periode.unite) ;
}
async onFinPeriode(oldTimestamp, newTimestamp) {
RdDItemMaladie.notifierMaladiePoison(this, oldTimestamp, newTimestamp)
}
}

13
module/item/queue.js Normal file
View File

@@ -0,0 +1,13 @@
import { RdDItem } from "../item.js";
export class RdDItemQueue extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp";
}
async calculerFinPeriodeTemporel(debut) {
return await debut.appliquerDuree(this.system.duree, this.parent);
}
}

13
module/item/souffle.js Normal file
View File

@@ -0,0 +1,13 @@
import { RdDItem } from "../item.js";
export class RdDItemSouffle extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp";
}
async calculerFinPeriodeTemporel(debut) {
return await debut.appliquerDuree(this.system.duree, this.parent);
}
}

View File

@@ -1,6 +1,10 @@
import { RdDBaseActor } from "./actor/base-actor.js";
import { LOG_HEAD, SYSTEM_RDD } from "./constants.js";
import { Environnement } from "./environnement.js";
import { Grammar } from "./grammar.js";
import { Monnaie } from "./item-monnaie.js";
import { RdDItem } from "./item.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
class Migration {
get code() { return "sample"; }
@@ -41,9 +45,9 @@ class _1_5_34_migrationPngWebp {
}
function prepareDocumentsImgUpdate(documents) {
return documents.filter(it => it.img && it.img.match(regexOldPngJpg))
.map(it => {
return { _id: it.id, img: convertImgToWebp(it.img) }
});
.map(it => {
return { _id: it.id, img: convertImgToWebp(it.img) }
});
}
const itemsUpdates = prepareDocumentsImgUpdate(game.items);
@@ -325,6 +329,91 @@ class _10_3_17_Monnaies extends Migration {
}
}
class _10_4_6_ServicesEnCommerces extends Migration {
get code() { return "migration-service-acteurs"; }
get version() { return "10.4.6"; }
async migrate() {
const servicesToMigrate = game.items.filter(it => it.type == 'service');
servicesToMigrate.forEach(async service => {
const commerce = await this.convertServiceToCommerce(service);
await RdDBaseActor.create(commerce, { renderSheet: false });
await service.delete();
});
}
async convertServiceToCommerce(service) {
return {
name: service.name, img: service.img, type: 'commerce',
system: {
description: service.system.description,
notesmj: service.system.descriptionmj,
illimite: service.system.illimite
},
items: await this.transformInventaireCommerce(service)
}
}
async transformInventaireCommerce(service) {
const serviceItems = (service.system.items ?? []);
const commerceItems = await Promise.all(serviceItems.map(async (it) => { return await this.transformToItemBoutique(it); }));
return commerceItems.concat(Monnaie.monnaiesStandard());
}
async transformToItemBoutique(serviceRefItem) {
const item = await RdDItem.getCorrespondingItem(serviceRefItem);
const itemToCreate = {
name: item.name, img: item.img, type: item.type,
system: mergeObject({ cout: serviceRefItem.system.cout, quantite: serviceRefItem.system.quantite }, item.system, { overwrite: false })
};
return itemToCreate;
}
}
class _10_5_0_UpdatePeriodicite extends Migration {
get code() { return "migration-periodicite-poisons-maladies"; }
get version() { return "10.5.0"; }
async migrate() {
await this.applyItemsUpdates(items => this._updatePeriodicite(items));
}
_updatePeriodicite(items) {
return items.filter(it => ['poison', 'maladie'].includes(it.type))
.filter(it => it.system.periodicite != "")
.map(it => {
let [incubation, periodicite] = this.getPeriodicite(it);
const periode = periodicite.split(' ');
let unite = periode.length == 2
? RdDTimestamp.formulesPeriode().find(it => Grammar.includesLowerCaseNoAccent(periode[1], it.code))?.code
: undefined
if (unite && Number(periode[0])) {
return {
_id: it.id,
'system.periodicite': undefined,
'system.incubation': incubation,
'system.periode.nombre': Number.parseInt(periode[0]),
'system.periode.unite': unite
};
}
else {
return {
_id: it.id,
'system.periodicite': undefined,
'system.incubation': it.system.periodicite
};
}
}).filter(it => it != undefined);
}
getPeriodicite(it) {
let p = it.system.periodicite.split(/[\/\\]/);
switch (p.length) {
case 2: return [p[0].trim(), p[1].trim()];
case 1: return ["", it.system.periodicite.trim()];
default: return [it.system.periodicite.trim(), ""];
}
}
}
export class Migrations {
static getMigrations() {
@@ -338,7 +427,9 @@ export class Migrations {
new _10_2_10_DesirLancinant_IdeeFixe(),
new _10_3_0_Inventaire(),
new _10_3_0_FrequenceEnvironnement(),
new _10_3_17_Monnaies()
new _10_3_17_Monnaies(),
new _10_4_6_ServicesEnCommerces(),
new _10_5_0_UpdatePeriodicite(),
];
}
@@ -355,16 +446,10 @@ export class Migrations {
migrate() {
const currentVersion = game.settings.get(SYSTEM_RDD, "systemMigrationVersion");
if (isNewerVersion(game.system.version, currentVersion)) {
//if (true) { /* comment previous and uncomment here to test before upgrade */
//if (true) { /* comment previous and uncomment here to test before upgrade */
const migrations = Migrations.getMigrations().filter(m => isNewerVersion(m.version, currentVersion));
if (migrations.length > 0) {
migrations.sort((a, b) =>
isNewerVersion(a.version, b.version)
? 1
: isNewerVersion(b.version, a.version)
? -1
: 0
);
migrations.sort((a, b) => this.compareVersions(a, b));
migrations.forEach(async (m) => {
ui.notifications.info(
`Executing migration ${m.code}: version ${currentVersion} is lower than ${m.version}`
@@ -390,4 +475,8 @@ export class Migrations {
console.log(LOG_HEAD + `No system version changed`);
}
}
compareVersions(a, b) {
return isNewerVersion(a.version, b.version) ? 1 : isNewerVersion(b.version, a.version) ? -1 : 0;
}
}

View File

@@ -3,23 +3,28 @@
* Extend the base Dialog entity by defining a custom window to perform roll.
* @extends {Dialog}
*/
export class RdDAstrologieEditeur extends Dialog {
export class RdDAstrologieEditeur extends Dialog {
/* -------------------------------------------- */
constructor(html, calendrier, calendrierData) {
let myButtons = {
resetButton: { label: "Re-tirer les nombres astraux", callback: html => this.resetNombreAstraux() },
saveButton: { label: "Fermer", callback: html => this.fillData() }
};
resetButton: { label: "Re-tirer les nombres astraux", callback: html => this.resetNombreAstraux() },
saveButton: { label: "Fermer", callback: html => this.fillData() }
};
// Common conf
let dialogConf = { content: html, title: "Editeur d'Astrologie", buttons: myButtons, default: "saveButton" };
let dialogOptions = { classes: ["rdd-roll-dialog"], width: 600, height: 300, 'z-index': 99999 }
let dialogOptions = {
classes: ["rdd-roll-dialog"], width: 600,
height: 'fit-content',
'max-height': 800,
'z-index': 99999
}
super(dialogConf, dialogOptions)
this.calendrier = calendrier;
this.updateData( calendrierData );
this.updateData(calendrierData);
}
activateListeners(html) {
@@ -28,7 +33,7 @@
}
/* -------------------------------------------- */
/* -------------------------------------------- */
async resetNombreAstraux() {
game.system.rdd.calendrier.resetNombreAstral();
await game.system.rdd.calendrier.rebuildListeNombreAstral();
@@ -36,12 +41,12 @@
game.system.rdd.calendrier.showAstrologieEditor();
}
/* -------------------------------------------- */
fillData( ) {
/* -------------------------------------------- */
fillData() {
}
/* -------------------------------------------- */
updateData( calendrierData ) {
updateData(calendrierData) {
this.calendrierData = duplicate(calendrierData);
}

View File

@@ -1,4 +1,4 @@
import { Misc } from "./misc.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
/**
* Extend the base Dialog entity by defining a custom window to perform roll.
@@ -12,7 +12,7 @@ export class RdDCalendrierEditeur extends Dialog {
content: html,
title: "Editeur de date/heure",
buttons: {
save: { label: "Enregistrer", callback: html => this.fillData() }
save: { label: "Enregistrer", callback: html => this.saveCalendrier() }
},
default: "save"
};
@@ -26,22 +26,37 @@ export class RdDCalendrierEditeur extends Dialog {
activateListeners(html) {
super.activateListeners(html);
this.html = html;
this.html.find("input[name='nomMois']").val(this.calendrierData.moisKey);
this.html.find("select[name='nomHeure']").val(this.calendrierData.heureKey);
this.html.find("select[name='jourMois']").val(this.calendrierData.jourMois);
this.html.find("select[name='minutesRelative']").val(this.calendrierData.minutesRelative);
this.html.find("select[name='annee']").val(this.calendrierData.annee);
this.html.find("input[name='calendar.annee']").val(this.calendrierData.annee);
this.html.find("select[name='calendar.mois']").val(this.calendrierData.mois.key);
this.html.find("select[name='calendar.heure']").val(this.calendrierData.heure.key);
RdDCalendrierEditeur.setLimited(this.html.find("input[name='calendar.jourDuMois']"), this.calendrierData.jourDuMois, 1, 28);
RdDCalendrierEditeur.setLimited(this.html.find("input[name='calendar.minute']"), this.calendrierData.minute, 0, 119);
}
static setLimited(input, init, min, max) {
input.val(init);
input.change(event => {
const val = Number.parseInt(input.val());
if (val < min) {
input.val(min);
}
if (val > max) {
input.val(max);
}
});
}
/* -------------------------------------------- */
fillData() {
this.calendrierData.annee = this.html.find("input[name='annee']").val();
this.calendrierData.moisKey = this.html.find("select[name='nomMois']").val();
this.calendrierData.heureKey = this.html.find("select[name='nomHeure']").val();
this.calendrierData.jourMois = this.html.find("select[name='jourMois']").val();
this.calendrierData.minutesRelative = this.html.find("select[name='minutesRelative']").val();
saveCalendrier() {
const annee = Number.parseInt(this.html.find("input[name='calendar.annee']").val());
const mois = this.html.find("select[name='calendar.mois']").val();
const jour = Number.parseInt(this.html.find("input[name='calendar.jourDuMois']").val());
const heure = this.html.find("select[name='calendar.heure']").val();
const minute = Number.parseInt(this.html.find("input[name='calendar.minute']").val());
this.calendrier.saveEditeur(this.calendrierData)
this.calendrier.setNewTimestamp(RdDTimestamp.timestamp(annee, mois, jour, heure, minute))
}
/* -------------------------------------------- */

View File

@@ -1,44 +1,17 @@
/* -------------------------------------------- */
import { RdDCalendrierEditeur } from "./rdd-calendrier-editeur.js";
import { RdDAstrologieEditeur } from "./rdd-astrologie-editeur.js";
import { HtmlUtility } from "./html-utility.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { RdDUtility } from "./rdd-utility.js";
import { Grammar } from "./grammar.js";
import { RdDDice } from "./rdd-dice.js";
import { Misc } from "./misc.js";
import { HIDE_DICE, SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
import { DialogChronologie } from "./dialog-chronologie.js";
import { RdDTimestamp, WORLD_TIMESTAMP_SETTING } from "./rdd-timestamp.js";
/* -------------------------------------------- */
const dossierIconesHeures = 'systems/foundryvtt-reve-de-dragon/icons/heures/'
const heuresList = ["vaisseau", "sirene", "faucon", "couronne", "dragon", "epees", "lyre", "serpent", "poissonacrobate", "araignee", "roseau", "chateaudormant"];
const heuresDef = {
"vaisseau": { key: "vaisseau", label: "Vaisseau", lettreFont: 'v', saison: "printemps", heure: 0, icon: 'hd01.svg' },
"sirene": { key: "sirene", label: "Sirène", lettreFont: 'i', saison: "printemps", heure: 1, icon: 'hd02.svg' },
"faucon": { key: "faucon", label: "Faucon", lettreFont: 'f', saison: "printemps", heure: 2, icon: 'hd03.svg' },
"couronne": { key: "couronne", label: "Couronne", lettreFont: '', saison: "ete", heure: 3, icon: 'hd04.svg' },
"dragon": { key: "dragon", label: "Dragon", lettreFont: 'd', saison: "ete", heure: 4, icon: 'hd05.svg' },
"epees": { key: "epees", label: "Epées", lettreFont: 'e', saison: "ete", heure: 5, icon: 'hd06.svg' },
"lyre": { key: "lyre", label: "Lyre", lettreFont: 'l', saison: "automne", heure: 6, icon: 'hd07.svg' },
"serpent": { key: "serpent", label: "Serpent", lettreFont: 's', saison: "automne", heure: 7, icon: 'hd08.svg' },
"poissonacrobate": { key: "poissonacrobate", label: "Poisson Acrobate", lettreFont: 'p', saison: "automne", heure: 8, icon: 'hd09.svg' },
"araignee": { key: "araignee", label: "Araignée", lettreFont: 'a', saison: "hiver", heure: 9, icon: 'hd10.svg' },
"roseau": { key: "roseau", label: "Roseau", lettreFont: 'r', saison: "hiver", heure: 10, icon: 'hd11.svg' },
"chateaudormant": { key: "chateaudormant", label: "Château Dormant", lettreFont: 'c', saison: "hiver", heure: 11, icon: 'hd12.svg' }
};
const saisonsDef = {
"printemps": { label: "Printemps" },
"ete": { label: "Eté" },
"automne": { label: "Automne" },
"hiver": { label: "Hiver" }
};
const RDD_MOIS_PAR_AN = 12;
export const RDD_JOUR_PAR_MOIS = 28;
const RDD_JOUR_PAR_MOIS = 28;
const RDD_HEURES_PAR_JOUR = 12;
const RDD_MINUTES_PAR_HEURES = 120;
const MAX_NOMBRE_ASTRAL = 12;
const JOURS_DU_MOIS = Array(RDD_JOUR_PAR_MOIS).fill().map((item, index) => 1 + index);
/* -------------------------------------------- */
export class RdDCalendrier extends Application {
@@ -55,57 +28,6 @@ export class RdDCalendrier extends Application {
return { top: 200, left: 200 };
}
static getDefSigne(chiffre) {
chiffre = chiffre % RDD_MOIS_PAR_AN;
return Object.values(heuresDef).find(h => h.heure == chiffre);
}
static getSigneAs(key, value) {
const heure = (typeof value == 'string' || typeof value == 'number') && Number.isInteger(Number(value))
? Number(value)
: (typeof value == 'string') ? RdDCalendrier.getChiffreFromSigne(value)
: undefined
if (heure != undefined && ['key', 'label', 'lettreFont', 'saison', 'heure', 'icon'].includes(key)) {
return RdDCalendrier.getDefSigne(heure)[key]
}
if (heure != undefined && ['webp'].includes(key)) {
return RdDCalendrier.getDefSigne(heure)['icon'].replace('svg', 'webp');
}
console.error(`Appel à getSigneAs('${key}', ${value}) avec une clé/heure incorrects`);
return value;
}
static getChiffreFromSigne(signe) {
return heuresList.indexOf(signe);
}
static createCalendrierInitial() {
return {
heureRdD: 0,
minutesRelative: 0,
indexJour: 0,
annee: 0,
moisRdD: 0,
moisLabel: heuresDef["vaisseau"].label,
jour: 0
}
}
getCalendrier(index) {
index = index ?? this.getCurrentDayIndex();
const mois = Math.floor(index / RDD_JOUR_PAR_MOIS) % RDD_MOIS_PAR_AN;
return {
heureRdD: 0, // Index dans heuresList / heuresDef[x].heure
minutesRelative: 0,
indexJour: index,
annee: Math.floor(index / (RDD_JOUR_PAR_MOIS * RDD_MOIS_PAR_AN)),
moisRdD: RdDCalendrier.getDefSigne(mois).heure,
moisLabel: RdDCalendrier.getDefSigne(mois).label,
jour: (index % RDD_JOUR_PAR_MOIS) // Le calendrier stocke le jour en 0-27, mais en 1-28 à l'affichage
}
}
constructor() {
super();
// position
@@ -114,19 +36,23 @@ export class RdDCalendrier extends Application {
this.calendrierPos = RdDCalendrier.createCalendrierPos();
game.settings.set(SYSTEM_RDD, "calendrier-pos", this.calendrierPos);
}
// Calendrier
this.calendrier = duplicate(game.settings.get(SYSTEM_RDD, "calendrier") ?? RdDCalendrier.createCalendrierInitial());
this.calendrier.annee = this.calendrier.annee ?? Math.floor((this.calendrier.moisRdD ?? 0) / RDD_MOIS_PAR_AN);
this.calendrier.moisRdD = (this.calendrier.moisRdD ?? 0) % RDD_MOIS_PAR_AN;
this.timestamp = RdDTimestamp.getWorldTime();
if (Misc.isUniqueConnectedGM()) { // Uniquement si GM
game.settings.set(SYSTEM_RDD, "calendrier", this.calendrier);
RdDTimestamp.setWorldTime(this.timestamp);
this.listeNombreAstral = this.getListeNombreAstral();
this.rebuildListeNombreAstral(HIDE_DICE); // Ensure always up-to-date
}
console.log('RdDCalendrier.constructor()', this.calendrier, this.calendrierPos, this.listeNombreAstral);
console.log('RdDCalendrier.constructor()', this.timestamp, this.timestamp.toCalendrier(), this.calendrierPos, this.listeNombreAstral);
Hooks.on('updateSetting', async (setting, update, options, id) => this.onUpdateSetting(setting, update, options, id));
}
async onUpdateSetting(setting, update, options, id) {
if (setting.key == SYSTEM_RDD + '.' + WORLD_TIMESTAMP_SETTING) {
this.timestamp = RdDTimestamp.getWorldTime();
this.updateDisplay();
}
}
/* -------------------------------------------- */
@@ -227,48 +153,50 @@ export class RdDCalendrier extends Application {
}
/* -------------------------------------------- */
getDateFromIndex(index) {
const dateRdD = this.getCalendrier(index);
return (dateRdD.jour + 1) + ' ' + dateRdD.moisLabel;
dateCourante() {
return this.timestamp.formatDate();
}
isAfterIndexDate(indexDate) {
// TODO: standardize
return indexDate < this.timestamp.indexDate;
}
/* -------------------------------------------- */
getDayMonthFromIndex(index = undefined) {
const dateRdD = this.getCalendrier(index);
return {
day: dateRdD.jour + 1,
month: heuresList[dateRdD.moisRdD]
}
}
heureCourante() { return RdDTimestamp.definition(this.timestamp.heure); }
/* -------------------------------------------- */
getCurrentHeure() {
return heuresList[this.calendrier.heureRdD];
getCurrentMinute() { return this.timestamp.indexMinute; }
getTimestampFinChateauDormant(nbJours = 0) {
return this.timestamp.nouveauJour().addJour(nbJours);
}
/* -------------------------------------------- */
getCurrentDayIndex() {
return (((this.calendrier.annee ?? 0) * RDD_MOIS_PAR_AN + (this.calendrier.moisRdD ?? 0)) * RDD_JOUR_PAR_MOIS) + (this.calendrier.jour ?? 0);
getTimestampFinHeure(nbHeures = 0) {
return this.timestamp.nouvelleHeure().addHeures(nbHeures);
}
/* -------------------------------------------- */
getIndexFromDate(jour, mois) {
return (heuresDef[mois].heure * RDD_JOUR_PAR_MOIS) + jour - 1;
const addYear = mois < this.timestamp.mois || (mois == this.timestamp.mois && jour < this.timestamp.jour)
const time = RdDTimestamp.timestamp(this.timestamp.annee + (addYear ? 1 : 0), mois, jour);
return time.indexDate;
}
/* -------------------------------------------- */
getJoursSuivants(num) {
getJoursSuivants(count) {
let jours = [];
let index = this.getCurrentDayIndex();
for (let i = 0; i < num; i++) {
jours[i] = { label: this.getDateFromIndex(index + i), index: index + i };
let indexDate = this.timestamp.indexDate;
for (let i = 0; i < count; i++, indexDate++) {
jours[i] = { label: RdDTimestamp.formatIndexDate(indexDate), index: indexDate };
}
return jours;
}
/* -------------------------------------------- */
async ajouterNombreAstral(index, showDice = SHOW_DICE) {
async ajouterNombreAstral(indexDate, showDice = SHOW_DICE) {
const nombreAstral = await RdDDice.rollTotal("1dh", { showDice: showDice, rollMode: "selfroll" });
const dateFuture = this.getDateFromIndex(index);
const dateFuture = RdDTimestamp.formatIndexDate(indexDate);
if (showDice != HIDE_DICE) {
ChatMessage.create({
whisper: ChatMessage.getWhisperRecipients("GM"),
@@ -278,14 +206,13 @@ export class RdDCalendrier extends Application {
return {
nombreAstral: nombreAstral,
valeursFausses: [],
index: index
index: indexDate
}
}
/* -------------------------------------------- */
getCurrentNombreAstral() {
let indexDate = this.getCurrentDayIndex();
return this.getNombreAstral(indexDate);
return this.getNombreAstral(this.timestamp.indexDate);
}
/* -------------------------------------------- */
@@ -309,10 +236,9 @@ export class RdDCalendrier extends Application {
/* -------------------------------------------- */
async rebuildListeNombreAstral(showDice = HIDE_DICE) {
if (Misc.isUniqueConnectedGM()) {
let jourCourant = this.getCurrentDayIndex();
let newList = [];
for (let i = 0; i < MAX_NOMBRE_ASTRAL; i++) {
let dayIndex = jourCourant + i;
let dayIndex = this.timestamp.indexDate + i;
let na = this.listeNombreAstral.find(n => n.index == dayIndex);
if (na) {
newList[i] = na;
@@ -320,11 +246,20 @@ export class RdDCalendrier extends Application {
newList[i] = await this.ajouterNombreAstral(dayIndex, showDice);
}
}
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", newList);
this.listeNombreAstral = newList;
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", newList);
}
}
/* -------------------------------------------- */
async setNewTimestamp(newTimestamp) {
game.actors.forEach(actor => actor.onTimeChanging(this.timestamp, newTimestamp));
RdDTimestamp.setWorldTime(newTimestamp);
this.timestamp = newTimestamp;
await this.rebuildListeNombreAstral();
this.updateDisplay();
}
/* -------------------------------------------- */
async onCalendarButton(ev) {
ev.preventDefault();
@@ -339,95 +274,31 @@ export class RdDCalendrier extends Application {
this.updateDisplay();
}
/* -------------------------------------------- */
checkMaladie(periode) {
for (let actor of game.actors) {
if (actor.type == 'personnage') {
let maladies = actor.items.filter(item => (item.type == 'maladie' || (item.type == 'poison' && item.system.active)) && item.system.periodicite.toLowerCase().includes(periode));
for (let maladie of maladies) {
if (maladie.system.identifie) {
ChatMessage.create({ content: `${actor.name} souffre de ${maladie.name} (${maladie.type}): vérifiez que les effets ne se sont pas aggravés !` });
} else {
ChatMessage.create({ content: `${actor.name} souffre d'un mal inconnu (${maladie.type}): vérifiez que les effets ne se sont pas aggravés !` });
}
let itemMaladie = actor.getItem(maladie.id)
itemMaladie.postItem('gmroll');
}
}
}
}
/* -------------------------------------------- */
async incrementTime(minutes = 0) {
this.calendrier.minutesRelative += minutes;
this.checkMaladie("round");
this.checkMaladie("minute");
if (this.calendrier.minutesRelative >= RDD_MINUTES_PAR_HEURES) {
this.calendrier.minutesRelative -= RDD_MINUTES_PAR_HEURES;
this.calendrier.heureRdD += 1;
this.checkMaladie("heure");
}
if (this.calendrier.heureRdD >= RDD_HEURES_PAR_JOUR) {
this.calendrier.heureRdD -= RDD_HEURES_PAR_JOUR;
await this.incrementerJour();
this.checkMaladie("heure");
this.checkMaladie("jour");
}
game.settings.set(SYSTEM_RDD, "calendrier", duplicate(this.calendrier));
// Notification aux joueurs // TODO: replace with Hook on game settings update
game.socket.emit(SYSTEM_SOCKET_ID, {
msg: "msg_sync_time",
data: duplicate(this.calendrier)
});
await this.setNewTimestamp(this.timestamp.addMinutes(minutes));
}
/* -------------------------------------------- */
async incrementerJour() {
const index = this.getCurrentDayIndex() + 1;
this.calendrier = this.getCalendrier(index);
await this.rebuildListeNombreAstral();
}
/* -------------------------------------------- */
syncPlayerTime(calendrier) {
this.calendrier = duplicate(calendrier); // Local copy update
this.updateDisplay();
await this.setNewTimestamp(this.timestamp.nouveauJour());
}
/* -------------------------------------------- */
async positionnerHeure(indexHeure) {
if (indexHeure <= this.calendrier.heureRdD) {
await this.incrementerJour();
}
this.calendrier.heureRdD = indexHeure;
this.calendrier.minutesRelative = 0;
game.settings.set(SYSTEM_RDD, "calendrier", duplicate(this.calendrier));
await this.setNewTimestamp(new RdDTimestamp({ indexDate: this.timestamp.indexDate + (this.timestamp.heure < indexHeure ? 0 : 1) }).addHeures(indexHeure))
}
/* -------------------------------------------- */
fillCalendrierData(formData = {}) {
const mois = RdDCalendrier.getDefSigne(this.calendrier.moisRdD);
const heure = RdDCalendrier.getDefSigne(this.calendrier.heureRdD);
console.log('fillCalendrierData', this.calendrier, mois, heure);
formData.heureKey = heure.key;
formData.moisKey = mois.key;
formData.jourMois = this.calendrier.jour + 1;
formData.nomMois = mois.label; // heures et mois nommés identiques
formData.annee = this.calendrier.annee;
formData.iconMois = dossierIconesHeures + mois.icon;
formData.nomHeure = heure.label;
formData.iconHeure = dossierIconesHeures + heure.icon;
formData.nomSaison = saisonsDef[mois.saison].label;
formData.heureRdD = this.calendrier.heureRdD;
formData.minutesRelative = this.calendrier.minutesRelative;
mergeObject(formData, this.timestamp.toCalendrier());
formData.isGM = game.user.isGM;
return formData;
}
/* -------------------------------------------- */
getLectureAstrologieDifficulte(dateIndex) {
let indexNow = this.getCurrentDayIndex();
let indexNow = this.timestamp.indexDate;
let diffDay = dateIndex - indexNow;
return - Math.floor(diffDay / 2);
}
@@ -449,9 +320,9 @@ export class RdDCalendrier extends Application {
request.rolled = rollData.rolled;
request.isValid = request.rolled.isSuccess;
request.nbAstral = this.getNombreAstral(request.date);
if (request.rolled.isSuccess) {
if (request.rolled.isPart){
if (request.rolled.isPart) {
// Gestion expérience (si existante)
request.competence = actor.getCompetence("astrologie")
request.selectedCarac = actor.system.carac["vue"];
@@ -483,55 +354,32 @@ export class RdDCalendrier extends Application {
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", this.listeNombreAstral);
}
/* -------------------------------------------- */
findHeure(heure) {
heure = Grammar.toLowerCaseNoAccentNoSpace(heure);
let parHeureOuLabel = Object.values(heuresDef).filter(it => (it.heure + 1) == parseInt(heure) || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure);
if (parHeureOuLabel.length == 1) {
return parHeureOuLabel[0];
}
let parLabelPartiel = Object.values(heuresDef).filter(it => Grammar.toLowerCaseNoAccentNoSpace(it.label).includes(heure));
if (parLabelPartiel.length > 0) {
parLabelPartiel.sort(Misc.ascending(h => h.label.length));
return parLabelPartiel[0];
}
return undefined;
}
/* -------------------------------------------- */
getHeureNumber(hNum) {
let heure = Object.values(heuresDef).find(it => (it.heure) == hNum);
return heure
getHeureChance(heure) {
return heure + (this.getCurrentNombreAstral() ?? 1) - 1;
}
/* -------------------------------------------- */
getHeuresChanceMalchance(heureNaissance) {
let heuresChancesMalchances = [];
let defHeure = this.findHeure(heureNaissance);
let defHeure = RdDTimestamp.findHeure(heureNaissance);
if (defHeure) {
let hn = defHeure.heure;
let chiffreAstral = this.getCurrentNombreAstral() ?? 0;
heuresChancesMalchances[0] = { value: "+4", heures: [this.getHeureNumber((hn + chiffreAstral) % RDD_HEURES_PAR_JOUR).label] };
heuresChancesMalchances[1] = {
value: "+2", heures: [this.getHeureNumber((hn + chiffreAstral + 4) % RDD_HEURES_PAR_JOUR).label,
this.getHeureNumber((hn + chiffreAstral + 8) % RDD_HEURES_PAR_JOUR).label]
};
heuresChancesMalchances[2] = { value: "-4", heures: [this.getHeureNumber((hn + chiffreAstral + 6) % RDD_HEURES_PAR_JOUR).label] };
heuresChancesMalchances[3] = {
value: "-2", heures: [this.getHeureNumber((hn + chiffreAstral + 3) % RDD_HEURES_PAR_JOUR).label,
this.getHeureNumber((hn + chiffreAstral + 9) % RDD_HEURES_PAR_JOUR).label]
};
const signe = h => h % RDD_HEURES_PAR_JOUR;
const chance = this.getHeureChance(defHeure.heure);
return [
{ ajustement: "+4", heures: [signe(chance)] },
{ ajustement: "+2", heures: [signe(chance + 4), signe(chance + 8)] },
{ ajustement: "-4", heures: [signe(chance + 6)] },
{ ajustement: "-2", heures: [signe(chance + 3), signe(chance + 9)] }
];
}
return heuresChancesMalchances;
return [];
}
/* -------------------------------------------- */
getAjustementAstrologique(heureNaissance, name = undefined) {
let defHeure = this.findHeure(heureNaissance);
let defHeure = RdDTimestamp.findHeure(heureNaissance);
if (defHeure) {
let hn = defHeure.heure;
let chiffreAstral = this.getCurrentNombreAstral() ?? 0;
let heureCourante = this.calendrier.heureRdD;
let ecartChance = (hn + chiffreAstral - heureCourante) % RDD_HEURES_PAR_JOUR;
const chance = this.getHeureChance(defHeure.heure);
const ecartChance = (chance - this.timestamp.heure) % RDD_HEURES_PAR_JOUR;
switch (ecartChance) {
case 0: return 4;
case 4: case 8: return 2;
@@ -551,9 +399,7 @@ export class RdDCalendrier extends Application {
/* -------------------------------------------- */
getData() {
let formData = super.getData();
this.fillCalendrierData(formData);
this.setPos(this.calendrierPos);
return formData;
}
@@ -582,50 +428,40 @@ export class RdDCalendrier extends Application {
updateDisplay() {
let calendrier = this.fillCalendrierData();
// Rebuild text du calendrier
let dateHTML = `${calendrier.jourMois} ${calendrier.nomMois} ${calendrier.annee} (${calendrier.nomSaison})`
let dateHTML = `${calendrier.jourDuMois} ${calendrier.mois.label} ${calendrier.annee} (${calendrier.mois.saison})`
if (game.user.isGM) {
dateHTML = dateHTML + " - NA: " + (this.getCurrentNombreAstral() ?? "indéterminé");
dateHTML = dateHTML + " - NA: " + (this.getCurrentNombreAstral() ?? "?");
}
for (let handle of document.getElementsByClassName("calendar-date-rdd")) {
handle.innerHTML = dateHTML;
}
for (let heure of document.getElementsByClassName("calendar-heure-texte")) {
heure.innerHTML = calendrier.nomHeure;
heure.innerHTML = calendrier.heure.label;
}
for (const minute of document.getElementsByClassName("calendar-time-disp")) {
minute.innerHTML = `${calendrier.minutesRelative} minutes`;
minute.innerHTML = `${calendrier.minute} minutes`;
}
for (const heureImg of document.getElementsByClassName("calendar-heure-img")) {
heureImg.src = calendrier.iconHeure;
heureImg.src = calendrier.heure.icon;
}
}
/* -------------------------------------------- */
async saveEditeur(calendrierData) {
this.calendrier.minutesRelative = Number(calendrierData.minutesRelative);
this.calendrier.jour = Number(calendrierData.jourMois) - 1;
this.calendrier.moisRdD = RdDCalendrier.getChiffreFromSigne(calendrierData.moisKey);
this.calendrier.annee = Number(calendrierData.annee);
this.calendrier.heureRdD = RdDCalendrier.getChiffreFromSigne(calendrierData.heureKey);
game.settings.set(SYSTEM_RDD, "calendrier", duplicate(this.calendrier));
await this.rebuildListeNombreAstral();
game.socket.emit(SYSTEM_SOCKET_ID, {
msg: "msg_sync_time",
data: duplicate(this.calendrier)
});
this.updateDisplay();
const newTimestamp = RdDTimestamp.timestamp(
Number.parseInt(calendrierData.annee),
calendrierData.mois.heure,
Number.parseInt(calendrierData.jourMois),
calendrierData.heure.heure,
Number.parseInt(calendrierData.minutes)
);
await this.setNewTimestamp(newTimestamp);
}
/* -------------------------------------------- */
async showCalendarEditor() {
let calendrierData = duplicate(this.fillCalendrierData());
let calendrierData = this.fillCalendrierData();
if (this.editeur == undefined) {
calendrierData.jourMoisOptions = RdDCalendrier.buildJoursMois();
calendrierData.heuresOptions = [0, 1];
calendrierData.minutesOptions = Array(RDD_MINUTES_PAR_HEURES).fill().map((item, index) => 0 + index);
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/calendar-editor-template.html', calendrierData);
this.editeur = new RdDCalendrierEditeur(html, this, calendrierData)
}
@@ -633,33 +469,30 @@ export class RdDCalendrier extends Application {
this.editeur.render(true);
}
static buildJoursMois() {
return Array(RDD_JOUR_PAR_MOIS).fill().map((item, index) => 1 + index);
}
static buildJoursMois() { return JOURS_DU_MOIS; }
/* -------------------------------------------- */
async showAstrologieEditor() {
let calendrierData = duplicate(this.fillCalendrierData());
let astrologieArray = [];
const calendrierData = duplicate(this.fillCalendrierData());
this.listeNombreAstral = this.listeNombreAstral || [];
for (let astralData of this.listeNombreAstral) {
astralData.humanDate = this.getDateFromIndex(astralData.index);
for (let vf of astralData.valeursFausses) {
calendrierData.astrologieData = this.listeNombreAstral.map(astro => {
const timestamp = new RdDTimestamp({ indexDate: astro.index });
astro.date = { mois: timestamp.mois, jour: timestamp.jour + 1 }
for (let vf of astro.valeursFausses) {
let actor = game.actors.get(vf.actorId);
vf.actorName = (actor) ? actor.name : "Inconnu";
}
astrologieArray.push(duplicate(astralData));
}
let heuresParActeur = {};
for (let actor of game.actors) {
return astro;
});
calendrierData.heuresParActeur = {};
game.actors.filter(it => it.isPersonnage() && it.hasPlayerOwner).forEach(actor => {
let heureNaissance = actor.getHeureNaissance();
if (heureNaissance) {
heuresParActeur[actor.name] = this.getHeuresChanceMalchance(heureNaissance);
calendrierData.heuresParActeur[actor.name] = this.getHeuresChanceMalchance(heureNaissance);
}
}
//console.log("ASTRO", astrologieArray);
calendrierData.astrologieData = astrologieArray;
calendrierData.heuresParActeur = heuresParActeur;
})
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/calendar-astrologie-template.html', calendrierData);
let astrologieEditeur = new RdDAstrologieEditeur(html, this, calendrierData)
astrologieEditeur.updateData(calendrierData);

View File

@@ -206,16 +206,16 @@ export class RdDCommands {
let rollMode = game.settings.get("core", "rollMode");
if (["gmroll", "blindroll"].includes(rollMode)) {
msg["whisper"] = ChatMessage.getWhisperRecipients("GM");
}
if (rollMode === "blindroll"){
}
if (rollMode === "blindroll") {
msg["blind"] = true;
}
}
msg["type"] = 0;
if (!this.commandsTable) {
this._registerCommands();
}
let command = commandLine[0].toLowerCase();
if (this._isCommandHandled(command)) {
let params = commandLine.slice(1);
@@ -225,7 +225,7 @@ export class RdDCommands {
return false;
}
_isCommandHandled(command){
_isCommandHandled(command) {
return this.commandsTable[command] != undefined;
}
@@ -331,7 +331,7 @@ export class RdDCommands {
diff = 0;
}
const caracName = params[0];
let competence = length > 1 ? actors[0].getCompetence(Misc.join(params.slice(1, length), ' ')) : {name:undefined};
let competence = length > 1 ? actors[0].getCompetence(Misc.join(params.slice(1, length), ' ')) : { name: undefined };
if (competence) {
for (let actor of actors) {
await actor.rollCaracCompetence(caracName, competence.name, diff);
@@ -448,17 +448,27 @@ export class RdDCommands {
}
async creerSignesDraconiques() {
DialogCreateSigneDraconique.createSigneForActors();
if (game.user.isGM) {
DialogCreateSigneDraconique.createSigneForActors();
}
else {
ui.notifications.warn("Seul le MJ est autorisé à utiliser la commande /signe");
}
return true;
}
async supprimerSignesDraconiquesEphemeres() {
game.actors.forEach(actor => {
const ephemeres = actor.items.filter(item => item.type = 'signedraconique' && item.system.ephemere);
if (ephemeres.length > 0) {
actor.deleteEmbeddedDocuments("Item", ephemeres.map(item => item.id));
}
});
if (game.user.isGM) {
game.actors.forEach(actor => {
const ephemeres = actor.items.filter(item => item.type = 'signedraconique' && item.system.ephemere);
if (ephemeres.length > 0) {
actor.deleteEmbeddedDocuments("Item", ephemeres.map(item => item.id));
}
});
}
else {
ui.notifications.warn("Seul le MJ est autorisé à utiliser la commande /signe");
}
return true;
}

View File

@@ -1,7 +1,6 @@
import { RdDUtility } from "./rdd-utility.js";
import { RdDCalendrier } from "./rdd-calendrier.js";
import { Grammar } from "./grammar.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
/* -------------------------------------------- */
export class RdDHerbes extends Item {
@@ -29,7 +28,7 @@ export class RdDHerbes extends Item {
}
/* -------------------------------------------- */
static async updatePotionData(formData) {
static async addPotionFormData(formData) {
formData.isSoins = formData.system.categorie.includes('Soin');
formData.isRepos = formData.system.categorie.includes('Repos');
if (formData.isSoins) {
@@ -40,9 +39,8 @@ export class RdDHerbes extends Item {
}
formData.herbesSoins = RdDHerbes.buildHerbesList(this.herbesSoins, 12);
formData.herbesRepos = RdDHerbes.buildHerbesList(this.herbesRepos, 7);
formData.jourMoisOptions = RdDCalendrier.buildJoursMois();
formData.dateActuelle = game.system.rdd.calendrier.getDateFromIndex();
formData.splitDate = game.system.rdd.calendrier.getDayMonthFromIndex(formData.system.prdate);
formData.dateActuelle = game.system.rdd.calendrier.dateCourante();
formData.enchantement = RdDTimestamp.splitIndexDate(formData.system.prdate);
}
/* -------------------------------------------- */

View File

@@ -1,10 +1,6 @@
import { SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
import { RdDActor } from "./actor.js";
import { RdDItemSheet } from "./item-sheet.js";
import { RdDActorSheet } from "./actor-sheet.js";
import { RdDActorCreatureSheet } from "./actor-creature-sheet.js";
import { RdDActorVehiculeSheet } from "./actor-vehicule-sheet.js";
import { RdDActorEntiteSheet } from "./actor-entite-sheet.js";
import { RdDItem } from "./item.js";
import { RdDUtility } from "./rdd-utility.js";
import { TMRUtility } from "./tmr-utility.js";
import { RdDCalendrier } from "./rdd-calendrier.js";
@@ -19,24 +15,40 @@ import { ReglesOptionelles } from "./settings/regles-optionelles.js";
import { RdDHotbar } from "./rdd-hotbar-drop.js"
import { EffetsDraconiques } from "./tmr/effets-draconiques.js";
import { RdDHerbes } from "./rdd-herbes.js";
import { RdDItem } from "./item.js";
import { RdDDice } from "./rdd-dice.js";
import { RdDPossession } from "./rdd-possession.js";
import { RdDSigneDraconiqueItemSheet } from "./item-signedraconique-sheet.js";
import { Misc } from "./misc.js";
import { Migrations } from './migrations.js';
import { DialogChronologie } from "./dialog-chronologie.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
import { RdDRencontreItemSheet } from "./item-rencontre-sheet.js";
import { TMRRencontres } from "./tmr-rencontres.js";
import { RdDHerbeItemSheet } from "./item-herbe-sheet.js";
import { Environnement } from "./environnement.js";
import { RdDItemService } from "./item/item-service.js";
import { RdDBaseActor } from "./actor/base-actor.js";
import { RdDCommerceSheet } from "./actor/commerce-sheet.js";
import { RdDCommerce } from "./actor/commerce.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
import { RdDItemMaladie } from "./item/maladie.js";
import { RdDItemPoison } from "./item/poison.js";
import { RdDItemSigneDraconique } from "./item/item-signedraconique.js";
import { RdDItemQueue } from "./item/queue.js";
import { RdDItemOmbre } from "./item/ombre.js";
import { RdDItemSouffle } from "./item/souffle.js";
import { RdDRencontre } from "./item/item-rencontre.js";
import { RdDActorSheet } from "./actor-sheet.js";
import { RdDActorCreatureSheet } from "./actor-creature-sheet.js";
import { RdDActorVehiculeSheet } from "./actor-vehicule-sheet.js";
import { RdDActorEntiteSheet } from "./actor-entite-sheet.js";
import { RdDItemSheet } from "./item-sheet.js";
import { RdDServiceItemSheet } from "./item-service-sheet.js";
import { RdDHerbeItemSheet } from "./item-herbe-sheet.js";
import { RdDRencontreItemSheet } from "./item-rencontre-sheet.js";
import { RdDIngredientItemSheet } from "./item-ingredient-sheet.js";
import { RdDFauneItemSheet } from "./item-faune-sheet.js";
import { RdDConteneurItemSheet } from "./item-conteneur-sheet.js";
import { RdDServiceItemSheet } from "./item-service-sheet.js";
import { RdDItemService } from "./item-service.js";
import { RdDBaseActor } from "./actor/base-actor.js";
import { RdDSigneDraconiqueItemSheet } from "./item-signedraconique-sheet.js";
import { TMRRencontres } from "./tmr-rencontres.js";
/**
* RdD system
@@ -55,13 +67,21 @@ export class SystemReveDeDragon {
this.RdDUtility = RdDUtility;
this.RdDHotbar = RdDHotbar;
this.itemClasses = {
service: RdDItemService
service: RdDItemService,
maladie: RdDItemMaladie,
poison: RdDItemPoison,
queue: RdDItemQueue,
ombre: RdDItemOmbre,
souffle: RdDItemSouffle,
signedraconique: RdDItemSigneDraconique,
rencontre: RdDRencontre
}
this.actorClasses = {
creature: RdDActor,
entite: RdDActor,
personnage: RdDActor,
vehicule: RdDActor,
commerce: RdDCommerce,
}
}
@@ -77,13 +97,101 @@ export class SystemReveDeDragon {
RdDUtility.preloadHandlebarsTemplates();
/* -------------------------------------------- */
this.initSystemSettings();
/* -------------------------------------------- */
// Set an initiative formula for the system
CONFIG.Combat.initiative = {
formula: "1+(1d6/10)",
decimals: 2
};
/* -------------------------------------------- */
game.socket.on(SYSTEM_SOCKET_ID, async (sockmsg) => {
console.log(">>>>> MSG RECV", sockmsg);
try {
RdDUtility.onSocketMessage(sockmsg);
RdDCombat.onSocketMessage(sockmsg);
ChatUtility.onSocketMessage(sockmsg);
RdDBaseActor.onSocketMessage(sockmsg);
} catch (e) {
console.error('game.socket.on(SYSTEM_SOCKET_ID) Exception: ', sockmsg, ' => ', e)
}
});
/* -------------------------------------------- */
// Define custom Entity classes
CONFIG.Actor.documentClass = RdDBaseActor;
CONFIG.Item.documentClass = RdDItem;
CONFIG.RDD = {
resolutionTable: RdDResolutionTable.resolutionTable,
carac_array: RdDUtility.getCaracArray(),
ajustementsConditions: RdDUtility.getAjustementsConditions(),
difficultesLibres: RdDUtility.getDifficultesLibres()
}
/* -------------------------------------------- */
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet(SYSTEM_RDD, RdDCommerceSheet, { types: ["commerce"], makeDefault: true });
Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true });
Actors.registerSheet(SYSTEM_RDD, RdDActorCreatureSheet, { types: ["creature"], makeDefault: true });
Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true });
Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true });
Items.unregisterSheet("core", ItemSheet);
RdDItemSheet.register(RdDSigneDraconiqueItemSheet);
RdDItemSheet.register(RdDRencontreItemSheet);
RdDItemSheet.register(RdDConteneurItemSheet);
RdDItemSheet.register(RdDHerbeItemSheet);
RdDItemSheet.register(RdDFauneItemSheet);
RdDItemSheet.register(RdDIngredientItemSheet);
RdDItemSheet.register(RdDServiceItemSheet);
Items.registerSheet(SYSTEM_RDD, RdDItemSheet, {
types: [
"competence", "competencecreature",
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
"objet", "arme", "armure", "livre", "potion", "munition",
"monnaie", "nourritureboisson", "gemme",
"meditation", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
"nombreastral", "tache", "maladie", "poison", "possession",
"tarot", "extraitpoetique"
], makeDefault: true
});
CONFIG.Combat.documentClass = RdDCombatManager;
// préparation des différents modules
RdDTimestamp.init();
SystemCompendiums.init();
DialogChronologie.init();
ReglesOptionelles.init();
RdDUtility.init();
RdDDice.init();
RdDCommands.init();
RdDCombat.init();
RdDCombatManager.init();
RdDTokenHud.init();
RdDBaseActor.init();
RddCompendiumOrganiser.init();
EffetsDraconiques.init()
TMRUtility.init();
RdDHotbar.initDropbar();
RdDPossession.init();
TMRRencontres.init();
Environnement.init();
Hooks.once('ready', () => this.onReady());
}
initSystemSettings() {
game.settings.register(SYSTEM_RDD, "accorder-entite-cauchemar", {
name: "Accorder le rêve aux entités",
hint: "A quel moment les personnages doivent accorder leur rêve aux entités de cauchemar",
scope: "world",
config: true,
type: String,
choices: { // If choices are defined, the resulting setting will be a select menu
choices: {
"avant-attaque": "Avant l'attaque",
"avant-defense": "Avant la défense",
"avant-encaissement": "Avant l'encaissement",
@@ -91,15 +199,6 @@ export class SystemReveDeDragon {
default: "avant-encaissement"
});
/* -------------------------------------------- */
game.settings.register(SYSTEM_RDD, "calendrier", {
name: "calendrier",
scope: "world",
config: false,
default: RdDCalendrier.createCalendrierInitial(),
type: Object
});
/* -------------------------------------------- */
game.settings.register(SYSTEM_RDD, "liste-nombre-astral", {
name: "liste-nombre-astral",
@@ -128,6 +227,7 @@ export class SystemReveDeDragon {
default: true,
type: Boolean
});
/* -------------------------------------------- */
game.settings.register(SYSTEM_RDD, "activer-sons-audio", {
name: "Activer les bruitages intégrés",
@@ -151,88 +251,6 @@ export class SystemReveDeDragon {
},
default: "aucun"
});
/* -------------------------------------------- */
// Set an initiative formula for the system
CONFIG.Combat.initiative = {
formula: "1+(1d6/10)",
decimals: 2
};
/* -------------------------------------------- */
game.socket.on(SYSTEM_SOCKET_ID, async (sockmsg) => {
console.log(">>>>> MSG RECV", sockmsg);
try {
RdDUtility.onSocketMessage(sockmsg);
RdDCombat.onSocketMessage(sockmsg);
ChatUtility.onSocketMessage(sockmsg);
RdDBaseActor.onSocketMessage(sockmsg);
} catch (e) {
console.error('game.socket.on(SYSTEM_SOCKET_ID) Exception: ', sockmsg, ' => ', e)
}
});
/* -------------------------------------------- */
// Define custom Entity classes
CONFIG.Actor.documentClass = RdDActor;
CONFIG.Item.documentClass = RdDItem;
CONFIG.RDD = {
resolutionTable: RdDResolutionTable.resolutionTable,
carac_array: RdDUtility.getCaracArray(),
ajustementsConditions: RdDUtility.getAjustementsConditions(),
difficultesLibres: RdDUtility.getDifficultesLibres()
}
/* -------------------------------------------- */
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true });
Actors.registerSheet(SYSTEM_RDD, RdDActorCreatureSheet, { types: ["creature"], makeDefault: true });
Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true });
Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true });
Items.unregisterSheet("core", ItemSheet);
RdDItemSheet.register(RdDSigneDraconiqueItemSheet);
RdDItemSheet.register(RdDRencontreItemSheet);
RdDItemSheet.register(RdDConteneurItemSheet);
RdDItemSheet.register(RdDHerbeItemSheet);
RdDItemSheet.register(RdDFauneItemSheet);
RdDItemSheet.register(RdDIngredientItemSheet);
RdDItemSheet.register(RdDServiceItemSheet);
Items.registerSheet(SYSTEM_RDD, RdDItemSheet, {
types: [
"competence", "competencecreature",
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
"objet", "arme", "armure", "livre", "potion", "munition",
"monnaie", "nourritureboisson", "gemme",
"meditation", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
"nombreastral", "tache", "maladie", "poison", "possession",
"tarot", "extraitpoetique"
], makeDefault: true
});
CONFIG.Combat.documentClass = RdDCombatManager;
// préparation des différents modules
SystemCompendiums.init();
DialogChronologie.init();
ReglesOptionelles.init();
RdDUtility.init();
RdDDice.init();
RdDCommands.init();
RdDCombat.init();
RdDCombatManager.init();
RdDTokenHud.init();
RdDBaseActor.init();
RddCompendiumOrganiser.init();
EffetsDraconiques.init()
TMRUtility.init();
RdDHotbar.initDropbar();
RdDPossession.init();
TMRRencontres.init();
Environnement.init();
Hooks.once('ready', () => this.onReady());
}
async onReady() {

View File

@@ -1,4 +1,4 @@
import { RdDActor } from "./actor.js";
import { RdDBaseActor } from "./actor/base-actor.js";
import { Misc } from "./misc.js";
import { RdDDice } from "./rdd-dice.js";
@@ -20,7 +20,7 @@ export class RdDNameGen {
static async onCreerActeur(event) {
const button = event.currentTarget;
await RdDActor.create({
await RdDBaseActor.create({
name: button.attributes['data-nom'].value,
type: button.attributes['data-type'].value
},

View File

@@ -1,4 +1,6 @@
import { DialogSplitItem } from "./dialog-split-item.js";
import { RdDItem } from "./item.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
export class RdDSheetUtility {
@@ -19,8 +21,11 @@ export class RdDSheetUtility {
return $(event.currentTarget)?.parents(".item");
}
static prepareItemDropParameters(destItemId, actor, dragData, objetVersConteneur) {
const item = fromUuidSync(dragData.uuid)
static async prepareItemDropParameters(destItemId, actor, dragData, objetVersConteneur) {
let item = fromUuidSync(dragData.uuid);
if (item.pack && !item.system){
item = await RdDItem.getCorrespondingItem(item);
}
if (actor.canReceive(item)) {
return {
destId: destItemId,

307
module/rdd-timestamp.js Normal file
View File

@@ -0,0 +1,307 @@
import { SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
import { Grammar } from "./grammar.js";
import { Misc } from "./misc.js";
import { RdDDice } from "./rdd-dice.js";
export const WORLD_TIMESTAMP_SETTING = "calendrier";
const RDD_MOIS_PAR_AN = 12;
const RDD_JOURS_PAR_MOIS = 28;
const RDD_JOURS_PAR_AN = 336; //RDD_JOURS_PAR_MOIS * RDD_MOIS_PAR_AN;
const RDD_HEURES_PAR_JOUR = 12;
const RDD_MINUTES_PAR_HEURES = 120;
const RDD_MINUTES_PAR_JOUR = 1440; //RDD_HEURES_PAR_JOUR * RDD_MINUTES_PAR_HEURES;
const ROUNDS_PAR_MINUTE = 10;
const DEFINITION_HEURES = [
{ key: "vaisseau", label: "Vaisseau", lettreFont: 'v', saison: "Printemps" },
{ key: "sirene", label: "Sirène", lettreFont: 'i', saison: "Printemps" },
{ key: "faucon", label: "Faucon", lettreFont: 'f', saison: "Printemps" },
{ key: "couronne", label: "Couronne", lettreFont: '', saison: "Eté" },
{ key: "dragon", label: "Dragon", lettreFont: 'd', saison: "Eté" },
{ key: "epees", label: "Epées", lettreFont: 'e', saison: "Eté" },
{ key: "lyre", label: "Lyre", lettreFont: 'l', saison: "Automne" },
{ key: "serpent", label: "Serpent", lettreFont: 's', saison: "Automne" },
{ key: "poissonacrobate", label: "Poisson Acrobate", lettreFont: 'p', saison: "Automne" },
{ key: "araignee", label: "Araignée", lettreFont: 'a', saison: "Hiver" },
{ key: "roseau", label: "Roseau", lettreFont: 'r', saison: "Hiver" },
{ key: "chateaudormant", label: "Château Dormant", lettreFont: 'c', saison: "Hiver" },
]
const FORMULES_DUREE = [
{ code: "", label: "", calcul: async (t, actor) => t.addJours(100 * RDD_JOURS_PAR_AN) },
{ code: "jour", label: "1 jour", calcul: async (t, actor) => t.nouveauJour().addJours(1) },
{ code: "1d7jours", label: "1d7 jour", calcul: async (t, actor) => t.nouveauJour().addJours(await RdDDice.rollTotal('1d7', { showDice: SHOW_DICE })) },
{ code: "1ddr", label: "Un dé draconique jours", calcul: async (t, actor) => t.nouveauJour().addJours(await RdDDice.rollTotal('1dr+7', { showDice: SHOW_DICE })) },
{ code: "hn", label: "Fin de l'Heure de Naissance", calcul: async (t, actor) => t.finHeure(actor.getHeureNaissance()) },
// { code: "1h", label: "Une heure", calcul: async (t, actor) => t.nouvelleHeure().addHeures(1) },
// { code: "12h", label: "12 heures", calcul: async (t, actor) => t.nouvelleHeure().addHeures(12) },
// { code: "chateaudormant", label: "Fin Chateau dormant", calcul: async (t, actor) => t.nouveauJour() },
// { code: "special", label: "Spéciale", calcul: async (t, actor) => t.addJours(100 * RDD_JOURS_PAR_AN) },
]
const FORMULES_PERIODE = [
{ code: 'round', label: "Rounds", calcul: async (t, nombre) => t.addMinutes(nombre / 10) },
{ code: 'minute', label: "Minutes", calcul: async (t, nombre) => t.addMinutes(nombre) },
{ code: 'heure', label: "Heures", calcul: async (t, nombre) => t.addHeures(nombre) },
{ code: 'jour', label: "Jours", calcul: async (t, nombre) => t.addJours(nombre) },
]
export class RdDTimestamp {
static iconeHeure(heure) {
return `systems/foundryvtt-reve-de-dragon/icons/heures/hd${heure < 9 ? '0' : ''}${heure + 1}.svg`;
}
static init() {
game.settings.register(SYSTEM_RDD, WORLD_TIMESTAMP_SETTING, {
name: WORLD_TIMESTAMP_SETTING,
scope: "world",
config: false,
default: { indexDate: 0, indexMinute: 0 },
type: Object
});
for (let i = 0; i < DEFINITION_HEURES.length; i++) {
DEFINITION_HEURES[i].heure = i;
DEFINITION_HEURES[i].icon = RdDTimestamp.iconeHeure(i);
DEFINITION_HEURES[i].webp = DEFINITION_HEURES[i].icon.replace(".svg", ".webp");
}
}
/**
* @param signe
* @returns L'entrée de DEFINITION_HEURES correspondant au signe
*/
static definition(signe) {
if (Number.isInteger(signe)) {
return DEFINITION_HEURES[signe % RDD_HEURES_PAR_JOUR];
}
let definition = DEFINITION_HEURES.find(it => it.key == signe);
if (!definition) {
definition = Misc.findFirstLike(signe, DEFINITION_HEURES, { mapper: it => it.label, description: 'signe' });
}
return definition
}
static formulesDuree() {
return FORMULES_DUREE
}
static formulesPeriode() {
return FORMULES_PERIODE
}
static imgSigneHeure(heure) {
return RdDTimestamp.imgSigne(RdDTimestamp.definition(heure));
}
static imgSigne(signe) {
return `<img class="img-signe-heure" src="${signe.webp}" alt="${signe.label}"/>`
}
static handleTimestampEditor(html, path, consumeTimestamp = async (path, timestamp) => {}) {
const fields = {
annee: html.find(`input[name="${path}.annee"]`),
mois: html.find(`select[name="${path}.mois"]`),
jourDuMois: html.find(`input[name="${path}.jourDuMois"]`),
heure: html.find(`select[name="${path}.heure"]`),
minute: html.find(`input[name="${path}.minute"]`)
};
async function onChangeTimestamp(fields, path) {
const annee = Number(fields.annee.val());
const mois = fields.mois.val();
const jour = Number(fields.jourDuMois.val());
const heure = fields.heure.val();
const minute = Number(fields.minute.val());
await consumeTimestamp(path, RdDTimestamp.timestamp(annee, mois, jour, heure, minute));
}
fields.annee.change(async (event) => await onChangeTimestamp(fields, path));
fields.mois.change(async (event) => await onChangeTimestamp(fields, path));
fields.jourDuMois.change(async (event) => await onChangeTimestamp(fields, path));
fields.heure.change(async (event) => await onChangeTimestamp(fields, path));
fields.minute.change(async (event) => await onChangeTimestamp(fields, path));
}
static findHeure(heure) {
heure = Grammar.toLowerCaseNoAccentNoSpace(heure);
let parHeureOuLabel = DEFINITION_HEURES.filter(it => (it.heure) == parseInt(heure) % RDD_HEURES_PAR_JOUR || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure);
if (parHeureOuLabel.length == 1) {
return parHeureOuLabel[0];
}
let parLabelPartiel = DEFINITION_HEURES.filter(it => Grammar.toLowerCaseNoAccentNoSpace(it.label).includes(heure));
if (parLabelPartiel.length > 0) {
parLabelPartiel.sort(Misc.ascending(h => h.label.length));
return parLabelPartiel[0];
}
return undefined;
}
/**
* @param indexDate: la date (depuis le jour 0)
* @return la version formattée de la date
*/
static formatIndexDate(indexDate) {
return new RdDTimestamp({ indexDate }).formatDate()
}
static splitIndexDate(indexDate) {
const timestamp = new RdDTimestamp({ indexDate });
return {
jour: timestamp.jour + 1,
mois: RdDTimestamp.definition(timestamp.mois).key
}
}
static getWorldTime() {
let worldTime = game.settings.get(SYSTEM_RDD, WORLD_TIMESTAMP_SETTING);
if (worldTime.indexJour && worldTime.heureRdD) {
// Migration
worldTime = {
indexDate: worldTime.indexJour,
indexMinute: worldTime.heureRdD * 120 + worldTime.minutesRelative
};
RdDTimestamp.setWorldTime(new RdDTimestamp(worldTime))
}
return new RdDTimestamp(worldTime);
}
static setWorldTime(timestamp) {
game.settings.set(SYSTEM_RDD, WORLD_TIMESTAMP_SETTING, duplicate(timestamp));
}
/** construit un RdDTimestamp à partir de l'année/mois/jour/heure?/minute? */
static timestamp(annee, mois, jour, heure = 0, minute = 0) {
mois = this.definition(mois)?.heure
heure = this.definition(heure)?.heure
return new RdDTimestamp({
indexDate: (jour - 1) + (mois + annee * RDD_MOIS_PAR_AN) * RDD_JOURS_PAR_MOIS,
indexMinute: heure * RDD_MINUTES_PAR_HEURES + minute
})
}
/**
* Constructeur d'un timestamp.
* Selon les paramètres, l'objet construit se base su:
* - le timestamp
* - la date numérique + minute (dans la journée)
* @param indexDate: la date à utiliser pour ce timestamp
* @param indexMinute: la minute de la journée à utiliser pour ce timestamp
*
*/
constructor({ indexDate, indexMinute = undefined }) {
this.indexDate = indexDate
this.indexMinute = indexMinute ?? 0
}
/**
* Convertit le timestamp en une structure avec les informations utiles
* pour afficher la date et l'heure
*/
toCalendrier() {
return {
timestamp: this,
annee: this.annee,
mois: RdDTimestamp.definition(this.mois),
jour: this.jour,
jourDuMois: this.jour + 1,
heure: RdDTimestamp.definition(this.heure),
minute: this.minute
};
}
get annee() { return Math.floor(this.indexDate / RDD_JOURS_PAR_AN) }
get mois() { return Math.floor((this.indexDate % RDD_JOURS_PAR_AN) / RDD_JOURS_PAR_MOIS) }
get jour() { return (this.indexDate % RDD_JOURS_PAR_AN) % RDD_JOURS_PAR_MOIS }
get heure() { return Math.floor(this.indexMinute / RDD_MINUTES_PAR_HEURES) }
get minute() { return this.indexMinute % RDD_MINUTES_PAR_HEURES }
get round() { return ROUNDS_PAR_MINUTE * (this.indexMinute - Math.floor(this.indexMinute)) }
formatDate() {
const jour = this.jour + 1;
const mois = RdDTimestamp.definition(this.mois).label;
const annee = this.annee ?? '';
return `${jour} ${mois}` + (annee ? ' ' + annee : '');
}
nouveauJour() { return new RdDTimestamp({ indexDate: this.indexDate + 1, indexMinute: 0 }) }
nouvelleHeure() {
return this.heure >= RDD_HEURES_PAR_JOUR ? this.nouveauJour() : new RdDTimestamp({
indexDate: this.indexDate,
indexMinute: (this.heure + 1) * RDD_MINUTES_PAR_HEURES
})
}
addJours(jours) {
return jours == 0 ? this : new RdDTimestamp({
indexDate: this.indexDate + jours,
indexMinute: this.indexMinute
})
}
addHeures(heures) {
if (heures == 0) {
return this
}
const heure = this.heure + heures;
return new RdDTimestamp({
indexDate: this.indexDate + Math.floor(heure / RDD_HEURES_PAR_JOUR),
indexMinute: (this.indexMinute + (heure % RDD_HEURES_PAR_JOUR)) % (RDD_MINUTES_PAR_JOUR)
})
}
addMinutes(minutes) {
if (minutes == 0) {
return this;
}
const indexMinute = this.indexMinute + minutes;
const jours = Math.floor(indexMinute / RDD_MINUTES_PAR_JOUR)
return new RdDTimestamp({
indexDate: this.indexDate + jours,
indexMinute: indexMinute - (jours * RDD_MINUTES_PAR_JOUR)
})
}
addPeriode(nombre, unite) {
const formule = FORMULES_PERIODE.find(it => it.code == unite);
if (formule) {
return formule.calcul(this, nombre);
}
else {
ui.notifications.info(`Pas de période pour ${unite ?? 'Aucune uinité définie'}`)
}
return this;
}
finHeure(heure) {
return this.nouvelleHeure().addHeures((12 + heure - this.heure) % 12);
}
async appliquerDuree(duree, actor) {
const formule = FORMULES_DUREE.find(it => it.code == duree) ?? FORMULES_DUREE.find(it => it.code == "");
return await formule.calcul(this, actor);
}
compare(timestamp) {
let diff = this.indexDate - timestamp.indexDate
if (diff == 0) {
diff = this.indexMinute - timestamp.indexMinute
}
return diff < 0 ? -1 : diff > 0 ? 1 : 0;
}
difference(timestamp) {
const jours = this.indexDate - timestamp.indexDate;
const minutes = this.indexMinute - timestamp.indexMinute;
return {
jours: jours,
heures: Math.floor(minutes / RDD_MINUTES_PAR_HEURES),
minutes: minutes % RDD_MINUTES_PAR_HEURES
}
}
}

View File

@@ -15,8 +15,9 @@ import { HtmlUtility } from "./html-utility.js";
import { ReglesOptionelles } from "./settings/regles-optionelles.js";
import { RdDDice } from "./rdd-dice.js";
import { STATUSES } from "./settings/status-effects.js";
import { RdDRencontre } from "./item-rencontre.js";
import { RdDRencontre } from "./item/item-rencontre.js";
import { RdDCalendrier } from "./rdd-calendrier.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
/* -------------------------------------------- */
@@ -840,7 +841,7 @@ export class RdDTMRDialog extends Dialog {
async processSortReserve(sortReserve) {
await this.actor.deleteEmbeddedDocuments('Item', [sortReserve.id]);
console.log("declencheSortEnReserve", sortReserve);
const heureCible = RdDCalendrier.getSigneAs('label', sortReserve.system.heurecible);
const heureCible = RdDTimestamp.definition(sortReserve.system.heurecible).label;
this._tellToUserAndGM(`Vous avez déclenché
${sortReserve.system.echectotal ? "<strong>l'échec total!</strong>" : "le sort"}
en réserve <strong>${sortReserve.name}</strong>

View File

@@ -12,10 +12,10 @@ import { Monnaie } from "./item-monnaie.js";
import { RdDPossession } from "./rdd-possession.js";
import { RdDNameGen } from "./rdd-namegen.js";
import { RdDConfirm } from "./rdd-confirm.js";
import { RdDCalendrier } from "./rdd-calendrier.js";
import { Environnement } from "./environnement.js";
import { RdDItemCompetence } from "./item-competence.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
/* -------------------------------------------- */
// This table starts at 0 -> niveau -10
@@ -170,40 +170,18 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-animaux.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-suivants.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-vehicules.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.html',
//Items
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete-script.hbs',
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete.hbs',
'systems/foundryvtt-reve-de-dragon/templates/item/boutons-comestible.html',
'systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs',
'systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html',
'systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.html',
'systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.html',
'systems/foundryvtt-reve-de-dragon/templates/header-item.html',
'systems/foundryvtt-reve-de-dragon/templates/item-competence-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-competencecreature-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-arme-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-armure-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-objet-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-conteneur-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-sort-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-herbe-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-ingredient-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-faune-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-livre-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-tache-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-potion-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-rencontre-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-queue-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-souffle-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-tarot-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-tete-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-ombre-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-monnaie-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-meditation-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-nourritureboisson-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-signedraconique-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-possession-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-extraitpoetique-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-service-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/header-item.html',
// partial enums
'systems/foundryvtt-reve-de-dragon/templates/enum-caracteristiques.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-base-competence.html',
@@ -214,7 +192,6 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/enum-categorie-potion.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-categorie-vehicule.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-competence.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-herbesoin-ingredient.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-heures.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-initpremierround.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-niveau-ethylisme.html',
@@ -222,8 +199,12 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/enum-categorie-queue.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-draconic.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-periode.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-effet.html',
// Partials
'systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/compendium-link.hbs',
'systems/foundryvtt-reve-de-dragon/templates/partial-description-overflow.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-description-sort.html',
@@ -296,13 +277,20 @@ export class RdDUtility {
Handlebars.registerHelper('apostrophe', (article, str) => Grammar.apostrophe(article, str));
Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str));
Handlebars.registerHelper('accord', (genre, ...args) => Grammar.accord(genre, args));
Handlebars.registerHelper('buildConteneur', (objet) => { return new Handlebars.SafeString(RdDUtility.buildConteneur(objet)); });
Handlebars.registerHelper('buildConteneur', (objet, templateItem, options) => { return new Handlebars.SafeString(RdDUtility.buildConteneur(objet, 1, templateItem, options)); });
Handlebars.registerHelper('buildContenu', (objet) => { return new Handlebars.SafeString(RdDUtility.buildContenu(objet, 1, true)); });
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
Handlebars.registerHelper('signeHeure', (key, heure) => RdDCalendrier.getSigneAs(key, heure));
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionelles.isUsing(option));
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
@@ -361,69 +349,6 @@ export class RdDUtility {
return undefined;
}
/* -------------------------------------------- */
static filterItemsPerTypeForSheet(formData, itemTypes) {
RdDUtility.filterEquipementParType(formData, itemTypes);
formData.sorts = this.arrayOrEmpty(itemTypes['sort']);
formData.rencontres = this.arrayOrEmpty(itemTypes['rencontre']);
formData.casestmr = this.arrayOrEmpty(itemTypes['casetmr']);
formData.signesdraconiques = this.arrayOrEmpty(itemTypes['signedraconique']);
formData.queues = this.arrayOrEmpty(itemTypes['queue']);
formData.souffles = this.arrayOrEmpty(itemTypes['souffle']);
formData.ombres = this.arrayOrEmpty(itemTypes['ombre']);
formData.tetes = this.arrayOrEmpty(itemTypes['tete']);
formData.taches = this.arrayOrEmpty(itemTypes['tache']);
formData.meditations = this.arrayOrEmpty(itemTypes['meditation']);
formData.chants = this.arrayOrEmpty(itemTypes['chant']);
formData.danses = this.arrayOrEmpty(itemTypes['danse']);
formData.musiques = this.arrayOrEmpty(itemTypes['musique']);
formData.oeuvres = this.arrayOrEmpty(itemTypes['oeuvre']);
formData.jeux = this.arrayOrEmpty(itemTypes['jeu']);
formData.services = this.arrayOrEmpty(itemTypes['service']);
formData.recettescuisine = this.arrayOrEmpty(itemTypes['recettecuisine']);
formData.recettesAlchimiques = this.arrayOrEmpty(itemTypes['recettealchimique']);
formData.maladies = this.arrayOrEmpty(itemTypes['maladie']);
formData.poisons = this.arrayOrEmpty(itemTypes['poison']);
formData.possessions = this.arrayOrEmpty(itemTypes['possession']);
formData.maladiesPoisons = formData.maladies.concat(formData.poisons);
formData.competences = (itemTypes['competence'] ?? []).concat(itemTypes['competencecreature'] ?? []);
formData.sortsReserve = this.arrayOrEmpty(itemTypes['sortreserve']);
}
static filterEquipementParType(formData, itemTypes) {
formData.conteneurs = this.arrayOrEmpty(itemTypes['conteneur']);
formData.materiel = this.arrayOrEmpty(itemTypes['objet']);
formData.armes = this.arrayOrEmpty(itemTypes['arme']);
formData.armures = this.arrayOrEmpty(itemTypes['armure']);
formData.munitions = this.arrayOrEmpty(itemTypes['munition']);
formData.livres = this.arrayOrEmpty(itemTypes['livre']);
formData.potions = this.arrayOrEmpty(itemTypes['potion']);
formData.ingredients = this.arrayOrEmpty(itemTypes['ingredient']);
formData.faunes = this.arrayOrEmpty(itemTypes['faune']);
formData.herbes = this.arrayOrEmpty(itemTypes['herbe']);
formData.monnaie = this.arrayOrEmpty(itemTypes['monnaie']).sort(Monnaie.triValeurEntiere());
formData.nourritureboissons = this.arrayOrEmpty(itemTypes['nourritureboisson']);
formData.gemmes = this.arrayOrEmpty(itemTypes['gemme']);
formData.objets = formData.conteneurs
.concat(formData.materiel)
.concat(formData.armes)
.concat(formData.armures)
.concat(formData.munitions)
.concat(formData.livres)
.concat(formData.potions)
.concat(formData.ingredients)
.concat(formData.herbes)
.concat(formData.faunes)
.concat(formData.monnaie)
.concat(formData.nourritureboissons)
.concat(formData.gemmes);
}
/* -------------------------------------------- */
static buildArbreDeConteneurs(conteneurs, objets) {
let objetVersConteneur = {};
@@ -472,29 +397,34 @@ export class RdDUtility {
/** Construit la structure récursive des conteneurs, avec imbrication potentielle
*
*/
static buildConteneur(objet, profondeur) {
static buildConteneur(objet, profondeur, templateItem, options) {
if (!profondeur) profondeur = 1;
if (!templateItem) templateItem = 'actor/inventaire-item.html'
objet.niveau = profondeur;
const isConteneur = objet.type == 'conteneur';
const isOuvert = isConteneur && this.getAfficheContenu(objet._id);
const isVide = isConteneur && objet.system.contenu.length == 0;
const conteneur = Handlebars.partials['systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-item.html']({
const conteneur = Handlebars.partials[`systems/foundryvtt-reve-de-dragon/templates/${templateItem}`]({
item: objet,
vide: isVide,
ouvert: isOuvert
ouvert: isOuvert,
options: options
});
const contenu = isConteneur ? RdDUtility.buildContenu(objet, profondeur, isOuvert) : '';
const contenu = isConteneur ? RdDUtility.buildContenu(objet, profondeur, isOuvert, templateItem, options) : '';
return conteneur + contenu;
}
/* -------------------------------------------- */
static buildContenu(objet, profondeur, afficherContenu) {
static buildContenu(objet, profondeur, afficherContenu, templateItem, options) {
if (!profondeur) profondeur = 1;
if (!templateItem) templateItem = 'actor/inventaire-item.html'
objet.niveau = profondeur;
const display = afficherContenu ? 'item-display-show' : 'item-display-hide';
let strContenu = `<ul class='item-list alterne-list ${display} list-item-margin${Math.min(profondeur,6)}'>`;
let strContenu = `<ul class='item-list alterne-list ${display} list-item-margin${Math.min(profondeur, 6)}'>`;
for (let subItem of objet.subItems) {
strContenu += this.buildConteneur(subItem, profondeur + 1);
strContenu += this.buildConteneur(subItem, profondeur + 1, templateItem, options);
}
return strContenu + "</ul>";
}
@@ -646,7 +576,7 @@ export class RdDUtility {
return await RdDUtility.prepareEncaissement(rollData, roll, armure);
}
/* -------------------------------------------- */
static async prepareEncaissement(rollData, roll, armure) {
const jetTotal = roll.total + rollData.dmg.total - armure;
@@ -662,11 +592,11 @@ export class RdDUtility {
encaissement.endurance = await RdDUtility._evaluatePerte(encaissement.endurance, over20);
encaissement.penetration = rollData.arme?.system.penetration ?? 0;
encaissement.blessures = (
encaissement.critiques> 0 ? "Critique":
encaissement.graves> 0 ? "Grave":
encaissement.legeres> 0 ? "Légère":
encaissement.eraflures>0 ? "Contusions/Eraflures":
'Aucune'
encaissement.critiques > 0 ? "Critique" :
encaissement.graves > 0 ? "Grave" :
encaissement.legeres > 0 ? "Légère" :
encaissement.eraflures > 0 ? "Contusions/Eraflures" :
'Aucune'
);
return encaissement;
}
@@ -720,8 +650,6 @@ export class RdDUtility {
switch (sockmsg.msg) {
case "msg_gm_chat_message":
return ChatUtility.handleGMChatMessage(sockmsg.data);
case "msg_sync_time":
return game.system.rdd.calendrier.syncPlayerTime(sockmsg.data);
case "msg_request_nombre_astral":
return game.system.rdd.calendrier.requestNombreAstral(sockmsg.data);
case "msg_response_nombre_astral":
@@ -785,7 +713,7 @@ export class RdDUtility {
html.on("click", '.rdd-world-content-link', async event => {
const htmlElement = html.find(event.currentTarget);
const id = htmlElement?.data("id");
const doctype= htmlElement?.data("doctype");
const doctype = htmlElement?.data("doctype");
switch (doctype ?? 'Item') {
case 'Actor':
return game.actors.get(id)?.sheet.render(true);
@@ -869,7 +797,7 @@ export class RdDUtility {
if (p2[2] == 'd') deniers += Number(p2[1]);
if (p2[2] == 's') sols += Number(p2[1]);
let sommeAPayer = sols + deniers/100;
let sommeAPayer = sols + deniers / 100;
let msgPayer = `La somme de ${sols} Sols et ${deniers} Deniers est à payer<br>
<a class='payer-button chat-card-button' data-somme-a-payer='${sommeAPayer}'>Payer</a>`
ChatMessage.create({ content: msgPayer });
@@ -952,10 +880,10 @@ export class RdDUtility {
/* -------------------------------------------- */
static afficherHeuresChanceMalchance(heureNaissance) {
if (game.user.isGM) {
let heure = game.system.rdd.calendrier.findHeure(heureNaissance);
const heure = RdDTimestamp.findHeure(heureNaissance - 1);
if (heureNaissance && heure) {
let ajustement = game.system.rdd.calendrier.getAjustementAstrologique(heureNaissance);
const current = game.system.rdd.calendrier.findHeure(game.system.rdd.calendrier.getCurrentHeure());
const current = game.system.rdd.calendrier.heureCourante();
ChatMessage.create({
content: `A l'heure de <strong>${current.label}</strong>, le modificateur de Chance/Malchance est de <strong>${Misc.toSignedString(ajustement)}</strong> pour l'heure de naissance <strong>${heure.label}</strong>.`,
whisper: ChatMessage.getWhisperRecipients("GM")

View File

@@ -12,10 +12,10 @@ export class TMRRencontres {
static init() {
const tmrRencontre = new TMRRencontres();
game.system.rdd.rencontresTMR = tmrRencontre;
}
constructor(){
constructor() {
this.table = new CompendiumTable('rencontres', 'Item', 'rencontre', Misc.ascending(it => it.system.ordreTri));
}
@@ -59,24 +59,16 @@ export class TMRRencontres {
return rencontre.clone({
'system.force': await RdDDice.rollTotal(rencontre.system.formule),
'system.coord': tmr?.coord,
'system.date': game.system.rdd.calendrier.getDateFromIndex(),
'system.heure': game.system.rdd.calendrier.getCurrentHeure()
'system.date': game.system.rdd.calendrier.dateCourante(),
'system.heure': game.system.rdd.calendrier.heureCourante().key
}, { save: false });
}
async calculRencontre(rencontre, tmr = undefined) {
if (rencontre.system.coord == "") {
rencontre.system.coord = tmr?.coord;
}
if (rencontre.system.force == 0) {
rencontre.system.force = await RdDDice.rollTotal(rencontre.system.formule);
}
if (rencontre.system.date == "") {
rencontre.system.date = game.system.rdd.calendrier.getDateFromIndex();
}
if (rencontre.system.heure == "") {
rencontre.system.heure = game.system.rdd.calendrier.getCurrentHeure();
}
rencontre.system.coord = rencontre.system.coord ?? tmr?.coord;
rencontre.system.force = rencontre.system.force ?? await RdDDice.rollTotal(rencontre.system.formule);
rencontre.system.date = rencontre.system.date ?? game.system.rdd.calendrier.dateCourante();
rencontre.system.heure = rencontre.system.heure ?? game.system.rdd.calendrier.heureCourante().key;
return rencontre;
}
@@ -110,7 +102,7 @@ export class TMRRencontres {
/* -------------------------------------------- */
async $chatRolledRencontre(row, rencontre,tmr) {
async $chatRolledRencontre(row, rencontre, tmr) {
const flavorContent = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-compendium-table-roll-rencontre.html',
{
roll: row.roll,

View File

@@ -1,28 +1,28 @@
{"name":"Mal glauque","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.0S9GCJskJQaYEuXz"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"0S9GCJskJQaYEuXz","system":{"description":"<p>Le mal glauque est une maladie due &agrave; la famine.</p>\n<p>Il peut &ecirc;tre contract&eacute; en cons&eacute;quence d&rsquo;un je&ucirc;ne prolong&eacute; ou d&rsquo;une malnutrition chronique. Ses sympt&ocirc;mes sont de violents maux de t&ecirc;te accompagn&eacute;s d&rsquo;hallucinations auditives o&ugrave; le malade croit entendre le bruit de la mer. &Agrave; mesure que le mal progresse, la peau du malade prend une couleur plomb&eacute;e, puis carr&eacute;ment verd&acirc;tre, cependant que dans sa t&ecirc;te, le bruit de la mer atteint des mugissements de temp&ecirc;te.</p>\n<p>La perte de chaque point de vie s&rsquo;accompagne de celle d&rsquo;un point d&rsquo;EMPATHIE. Une fois la maladie &eacute;limin&eacute;e, ces points sont regagn&eacute;s de la m&ecirc;me mani&egrave;re que les points de VUE de la fi&egrave;vre brune (sauf qu&rsquo;il n&rsquo;y a pas d&rsquo;&eacute;quivalent de la solimonce). Il faut enfin noter qu&rsquo;aucun rem&egrave;de ne peut &ecirc;tre efficace tant que l&rsquo;alimentation n&rsquo;est pas redevenue normale.</p>","descriptionmj":"","identifie":false,"malignite":8,"periodicite":"12 heures","remedesconnus":false,"remedes":"-6 \\ Topazoïne +16, Élixir des Gnomes +14","dommages":"1 pt de Vie et 1 pt d'Empathie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299815,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Nanar","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.4zOQxOMwgAxxd2MV"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"4zOQxOMwgAxxd2MV","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":2,"periodicite":"2 minutes","remedesconnus":false,"remedes":"-3/ Teinture dÉrozonne +16, Lait de lune +12.","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299815,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fièvre blanche","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.AWarJ2i12lEOdyiM"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"AWarJ2i12lEOdyiM","system":{"description":"<p>La fi&egrave;vre blanche est une fi&egrave;vre infectieuse, mortelle, qui accompagne souvent les blessures graves.</p>\n<p>Elle se caract&eacute;rise par un rapide affaiblissement g&eacute;n&eacute;ral accompagn&eacute; de d&eacute;lire. Tout autour de la blessure, la chair devient blanche et purulente.</p>","descriptionmj":"","identifie":false,"malignite":4,"periodicite":"8 heures","remedesconnus":false,"remedes":"-5 \\ Sable-Poudre +15, Tournegraisse +10","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299816,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ossiphage","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.HB057aVUY1GylYxw"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"HB057aVUY1GylYxw","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","identifie":false,"malignite":6,"periodicite":"3 rounds","remedesconnus":false,"remedes":"-5/ Perle de Bjwal +10, Huile de Sélikanthe +6","dommages":"4 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299816,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin paralysant de goule","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.IF19EUvrY1HL87lr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"IF19EUvrY1HL87lr","system":{"description":"<p>Venin inocul&eacute; par une morsure de goule.</p>\n<p>La paralysie intervient quand toutes les lignes de fatigue sont pleines et dure 6 heures.</p>\n<p>Le <em>floume-dhu</em> est obtenu en m&eacute;langeant en quantit&eacute;s &eacute;gales gel&eacute;e de floumette et lait humain (pour une dose : une demi-mesure de chaque).</p>\n<p>Puis chauffer le m&eacute;lange jusqu&rsquo;&agrave; couleur bleu-sangue (-2).</p>","descriptionmj":"","identifie":false,"malignite":6,"periodicite":"1 round","remedesconnus":false,"remedes":"-4 \\ Floume-dhu +16","dommages":"1 ligne de fatigue"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Blèmissure","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.JYMeJz8mxyI2oYIj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"JYMeJz8mxyI2oYIj","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":4,"periodicite":"1 minute","remedesconnus":false,"remedes":"-4/ Élixir des Gnomes +14, Huile de Sélikanthe +10.","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fesse de groin","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.LkDe57PbpOIshhMI"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"LkDe57PbpOIshhMI","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":3,"periodicite":"1 minute","remedesconnus":false,"remedes":"-3/ Bitume de Camphre +16, Élixir des Gnomes +12","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Nécrophase","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.MImC24IVo96y7r7p"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"MImC24IVo96y7r7p","system":{"description":"<p>La N&eacute;crophase est une horrible maladie contract&eacute;e suite &agrave; une morsure de Ranan&egrave;cre.&nbsp;</p>\n<p>Tout autour de la blessure, la chair s&rsquo;enfle, vire au noir et se putr&eacute;fie, puis l&rsquo;ensemble du corps est gagn&eacute; peu &agrave; peu.</p>\n<p>Si la mort survient, elle donne naissance &agrave; une entit&eacute; de cauchemar non incarn&eacute;e ayant le m&ecirc;me nombre de points de r&ecirc;ve que la caract&eacute;ristique R&Ecirc;VE de la victime.</p>\n<p>Tirer 1d2 : 1 = haine ; 2 = d&eacute;sespoir.</p>","descriptionmj":"","identifie":false,"malignite":7,"periodicite":"1 heure","remedesconnus":false,"remedes":"-4 \\ Tournegraisse +16 Huile de Sélikanthe +6","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1671050485807,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Arrache-rêve","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Rl5jadqNYTxzn6Ns"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"Rl5jadqNYTxzn6Ns","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":6,"periodicite":"4 rounds","remedesconnus":false,"remedes":"-3/ Tournegraisse +14, Perle de Bjwal +12","dommages":"4 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1671050485809,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Salsimir à points verts","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Rx2nQjwaCa5s38Tm"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"Rx2nQjwaCa5s38Tm","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":1,"periodicite":"5 minutes","remedesconnus":false,"remedes":"-5/ Lait de lune +14, Gelée royale +12","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1671050485809,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Énervure","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.SlfTPRdCC9t3o9ai"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"SlfTPRdCC9t3o9ai","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","identifie":false,"malignite":3,"periodicite":"1 minute","remedesconnus":false,"remedes":"-3/ Tournegraisse +14, Mirobolant +10","dommages":"2 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1671050485809,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Crétamère","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.WBmXlsa3Wt2AN952"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"WBmXlsa3Wt2AN952","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":3,"periodicite":"3 minutes","remedesconnus":false,"remedes":"-3/ Lait de lune +12, Gelée royale +8","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299819,"modifiedTime":1671050485809,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ortilise","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.X8vVqbK5pjuxQwBF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"X8vVqbK5pjuxQwBF","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","identifie":false,"malignite":3,"periodicite":"1 minute","remedesconnus":false,"remedes":"-3/ Topazoïne +12, Lait de lune +8","dommages":"2 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299819,"modifiedTime":1671050485810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Croupigne","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Zsodttv3S6OPTJL4"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"Zsodttv3S6OPTJL4","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":2,"periodicite":"5 minutes","remedesconnus":false,"remedes":"-3/ Élixir des Gnomes +16, Gelée royale +10","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Acrève","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.aTzSlu5leo4JJypZ"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"aTzSlu5leo4JJypZ","system":{"description":"<p>L&rsquo;acr&egrave;ve est une mortelle infection pulmonaire, due &agrave; un brusque refroidissement.</p>\n<p>Ses sympt&ocirc;mes sont l&rsquo;apparition de sueurs et de tremblements, bient&ocirc;t suivis d&rsquo;une toux de plus en plus douloureuse. Puis le malade se met &agrave; cracher du sang.</p>\n<p>La premi&egrave;re p&eacute;riode indiqu&eacute;e est celle de l&rsquo;incubation, la seconde est la p&eacute;riodicit&eacute; normale.</p>\n<p>Tant que le malade n&rsquo;a subi aucun dommage, utiliser la p&eacute;riode d&rsquo;incubation (2 heures) ; puis d&egrave;s qu&rsquo;il a perdu ses deux premiers points de vie, utiliser la p&eacute;riodicit&eacute; normale (5 heures).</p>","descriptionmj":"","identifie":false,"malignite":3,"periodicite":"2 heures / 5 heures","remedesconnus":false,"remedes":"-4 \\ Gelée royale +14, Huile de Sélikanthe +10","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ortironce","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.bEDPtCAlJwmoZx5p"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"bEDPtCAlJwmoZx5p","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","identifie":false,"malignite":4,"periodicite":"1 minute","remedesconnus":false,"remedes":"-3/ Bitume de Camphre +12, Teinture dÉrozonne +8","dommages":"2 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin de chrasme","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.cFMUtU6LZG0mKeDl"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"cFMUtU6LZG0mKeDl","system":{"description":"<p>Venin du chrasme.&nbsp;</p>","descriptionmj":"","identifie":false,"malignite":3,"periodicite":"1 minute","remedesconnus":false,"remedes":"-2 \\ Liqueur de Bagdol +16 Teinture dÉrozonne +10","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Téthanatos","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.fMukHi1h4lU84XQR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"fMukHi1h4lU84XQR","system":{"description":"<p>Le t&eacute;thanatos est un mal mortel, usuellement transmis par les blessures caus&eacute;es par les objets souill&eacute;s, comme par exemple les armes des Groins.&nbsp;</p>\n<p>Ses symptomes sont une forte fi&egrave;vre&nbsp; et l'apparition progressive de plaques noires,&nbsp; accompagn&eacute;es d'une odeur naus&eacute;abonde.</p>","descriptionmj":"","identifie":false,"malignite":7,"periodicite":"6 heures","remedesconnus":false,"remedes":"-3\\ Bitume de Camphre +12, Mirobolant +8","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin de scologriffe","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.iwlN0bNJ5XNNfjgj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"iwlN0bNJ5XNNfjgj","system":{"description":"<p>Venin du scologriffe. Il provoque une sensation aigu&euml; de d&eacute;s&eacute;quilibre.</p>\n<p>Jouer VOLONT&Eacute; &agrave; -3. En cas d&rsquo;&eacute;chec, on chute sans parvenir &agrave; se relever.</p>","descriptionmj":"","identifie":false,"malignite":3,"periodicite":"1 minute","remedesconnus":false,"remedes":"-3 \\ Liqueur de Bagdol +16 Topazoïne +8","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Genèfle","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.jl0MvAcVRo63LWg3"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"jl0MvAcVRo63LWg3","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":1,"periodicite":"10 minutes","remedesconnus":false,"remedes":"-3/ Teinture dÉrozonne +16, Topazoïne +12","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485811,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin de vipère jaune","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.lUeNPc0ECKqHglbG"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"lUeNPc0ECKqHglbG","system":{"description":"<p>Venin de la vip&egrave;re jaune. Il provoque des spasmes musculaires.</p>","descriptionmj":"","identifie":false,"malignite":2,"periodicite":"6 rounds","remedesconnus":false,"remedes":"-3\\ Liqueur de Bagdol +14, Topazoïne +10","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485811,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fièvre brune","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.nyruCPiWDd8Scv44"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"nyruCPiWDd8Scv44","system":{"description":"<p>La fi&egrave;vre brune est une fi&egrave;vre mortelle v&eacute;hicul&eacute;e par les moustiques de certains marais. Outre un affaiblissement g&eacute;n&eacute;ral, elle provoque la c&eacute;cit&eacute;.</p>\n<p>Ses sympt&ocirc;mes progressifs consistent en hallucinations de taches brunes, puis en saignement des yeux, jusqu&rsquo;&agrave; la c&eacute;cit&eacute; compl&egrave;te qui pr&eacute;c&egrave;de la mort.</p>\n<p>La premi&egrave;re p&eacute;riode indiqu&eacute;e est celle de l&rsquo;incubation, la seconde est la p&eacute;riodicit&eacute; normale. Tant que le malade n&rsquo;a subi aucun dommage, utiliser la p&eacute;riode d&rsquo;incubation (1 heure) ; puis d&egrave;s qu&rsquo;il a perdu un premier point de vie, utiliser la p&eacute;riodicit&eacute; normale (6 heures).</p>\n<p>Les points de VUE perdus ne peuvent &ecirc;tre regagn&eacute;s que quand la maladie est enti&egrave;rement gu&eacute;rie. &Agrave; chaque point de vie regagn&eacute;, jouer un jet de CONSTITUTION ajust&eacute; n&eacute;gativement par les points de vie toujours manquants. Puis selon le r&eacute;sultat:</p>\n<ul>\n<li><strong><em>Particuli&egrave;re&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </em></strong>Regain de 2 points de VUE</li>\n<li><strong><em>Normale et significative</em></strong>&nbsp; &nbsp; &nbsp; Regain de 1 point de VUE</li>\n<li><strong><em>&Eacute;chec et &Eacute;chec particulier</em></strong>&nbsp; Aucun regain</li>\n<li><strong><em>&Eacute;chec total</em>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </strong>Aggravation, re-perte d&rsquo;un point de VUE</li>\n</ul>\n<p>Si tous les points de vie ont &eacute;t&eacute; regagn&eacute;s et qu&rsquo;il manque toujours un ou plusieurs points de VUE, jouer un jet de CONSTITUTION &agrave; z&eacute;ro toutes les 12 heures, et appliquer les m&ecirc;mes r&eacute;sultats que ci-dessus.</p>\n<p>Une potion d&rsquo;herbes de soin enchant&eacute;e peut faire regagner tous les points de vie une fois la maladie gu&eacute;rie, mais ne fait pas regagner les points de VUE perdus. Si le malade est devenu enti&egrave;rement aveugle au cours de sa maladie, c&rsquo;est-&agrave;-dire si sa VUE est tomb&eacute;e &agrave; z&eacute;ro, il perd d&eacute;finitivement un point de VUE. Quand il regagnera ses points de VUE, il les regagnera tous moins un.</p>\n<h2>Bains de solimonce</h2>\n<p>Une d&eacute;coction de feuilles de solimonce (voir Herbes, p336) utilis&eacute;e en bains d&rsquo;yeux donne un bonus de +4 au jet de CONSTITUTION pour le regain des points de VUE.</p>\n<p>La d&eacute;coction se pr&eacute;pare comme une d&eacute;coction d&rsquo;herbes de soin. Pour baigner les deux yeux, il en faut 10 brins. Le bain doit durer 60 minutes (pour les deux yeux), puis les yeux doivent &ecirc;tre tenus &agrave; l&rsquo;abri de la lumi&egrave;re pendant un minimum de 3 heures. Le mieux est de les fermer et de dormir. Un bain d&rsquo;yeux n&rsquo;est valable que pour un seul jet de CONSTITUTION.</p>\n<p>Dans tous les cas, la fr&eacute;quence des jets est toutes les 12 heures. La d&eacute;coction de solimonce n&rsquo;&eacute;tant jamais bue, un enchantement ne lui conf&egrave;re rien de plus. La solimonce ne gu&eacute;rit pas la fi&egrave;vre brune et ne peut avoir d&rsquo;effet que quand la maladie est enti&egrave;rement gu&eacute;rie.</p>","descriptionmj":"","identifie":false,"malignite":6,"periodicite":"1 heure \\ 6 heures","remedesconnus":false,"remedes":"-4 \\ Élixir des Gnomes +14, Bitume de Camphre +10","dommages":"1 pt de Vie et 1 pt de Vue"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485811,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Bousille","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.qE4IEazgBeRs4uE0"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"qE4IEazgBeRs4uE0","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":5,"periodicite":"6 rounds","remedesconnus":false,"remedes":"-4/ Teinture dÉrozonne +10, Topazoïne +6","dommages":"3 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1671050485811,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Hécatombe","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.sSgu1FYK1s1vZinT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"sSgu1FYK1s1vZinT","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":4,"periodicite":"1 minute","remedesconnus":false,"remedes":"-5/ Bitume de Camphre +12, Mirobolant +6","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1671050485811,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Amanite thanataire","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.sriGtgt3FQkc642z"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"sriGtgt3FQkc642z","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":7,"periodicite":"3 rounds","remedesconnus":false,"remedes":"-3/ Tournegraisse +12, Perle de Bjwal +10","dommages":"4 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1671050485811,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Cheleuse","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.tpzD5959gxuIcTir"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"tpzD5959gxuIcTir","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","identifie":false,"malignite":1,"periodicite":"5 minutes","remedesconnus":false,"remedes":"-3/ Liqueur de Bagdol +16, Mirobolant +14","dommages":"1 pt de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1671050485811,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin d'araflate","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.v7yZidE9mObKO566"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"v7yZidE9mObKO566","system":{"description":"<p>Venin de l'araflate. Sa morsure inflige un venin anesth&eacute;siant, inocul&eacute; sur toute blessure sauf contusion\\ &eacute;raflure.</p>\n<p>Chaque perte d&rsquo;endurance s&rsquo;accompagne de la fatigue &eacute;quivalente. &Agrave; z&eacute;ro d&rsquo;endurance, la victime est paralys&eacute;e et ne peut plus faire un geste.</p>","descriptionmj":"","identifie":false,"malignite":6,"periodicite":"1 round","remedesconnus":false,"remedes":"-3 \\ Liqueur de Bagdol +12 Lait de lune +6","dommages":"1d6 pts d'endurance"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1671050485812,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fumebol","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.xzCBr3FiSk1WewcT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"xzCBr3FiSk1WewcT","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","identifie":false,"malignite":5,"periodicite":"8 rounds","remedesconnus":false,"remedes":"-5/ Sable-Poudre +12, Huile de Sélikanthe +8.","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1671050485812,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Mal glauque","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.0S9GCJskJQaYEuXz"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"0S9GCJskJQaYEuXz","system":{"description":"<p>Le mal glauque est une maladie due &agrave; la famine.</p>\n<p>Il peut &ecirc;tre contract&eacute; en cons&eacute;quence d&rsquo;un je&ucirc;ne prolong&eacute; ou d&rsquo;une malnutrition chronique. Ses sympt&ocirc;mes sont de violents maux de t&ecirc;te accompagn&eacute;s d&rsquo;hallucinations auditives o&ugrave; le malade croit entendre le bruit de la mer. &Agrave; mesure que le mal progresse, la peau du malade prend une couleur plomb&eacute;e, puis carr&eacute;ment verd&acirc;tre, cependant que dans sa t&ecirc;te, le bruit de la mer atteint des mugissements de temp&ecirc;te.</p>\n<p>La perte de chaque point de vie s&rsquo;accompagne de celle d&rsquo;un point d&rsquo;EMPATHIE. Une fois la maladie &eacute;limin&eacute;e, ces points sont regagn&eacute;s de la m&ecirc;me mani&egrave;re que les points de VUE de la fi&egrave;vre brune (sauf qu&rsquo;il n&rsquo;y a pas d&rsquo;&eacute;quivalent de la solimonce). Il faut enfin noter qu&rsquo;aucun rem&egrave;de ne peut &ecirc;tre efficace tant que l&rsquo;alimentation n&rsquo;est pas redevenue normale.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":8,"periodicite":"12 heures","incubation":"","periode":{"unite":"heure","nombre":12},"remedesconnus":false,"remedes":"-6 \\ Topazoïne +16, Élixir des Gnomes +14","dommages":"1 pt de Vie et 1 pt d'Empathie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299815,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Nanar","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.4zOQxOMwgAxxd2MV"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"4zOQxOMwgAxxd2MV","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":2,"periodicite":"2 minutes","incubation":"","periode":{"unite":"minute","nombre":2},"remedesconnus":false,"remedes":"-3/ Teinture dÉrozonne +16, Lait de lune +12.","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299815,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fièvre blanche","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.AWarJ2i12lEOdyiM"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"AWarJ2i12lEOdyiM","system":{"description":"<p>La fi&egrave;vre blanche est une fi&egrave;vre infectieuse, mortelle, qui accompagne souvent les blessures graves.</p>\n<p>Elle se caract&eacute;rise par un rapide affaiblissement g&eacute;n&eacute;ral accompagn&eacute; de d&eacute;lire. Tout autour de la blessure, la chair devient blanche et purulente.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":4,"periodicite":"8 heures","incubation":"","periode":{"unite":"heure","nombre":8},"remedesconnus":false,"remedes":"-5 \\ Sable-Poudre +15, Tournegraisse +10","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299816,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ossiphage","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.HB057aVUY1GylYxw"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"HB057aVUY1GylYxw","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":6,"periodicite":"3 rounds","incubation":"","periode":{"unite":"round","nombre":3},"remedesconnus":false,"remedes":"-5/ Perle de Bjwal +10, Huile de Sélikanthe +6","dommages":"4 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299816,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin paralysant de goule","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.IF19EUvrY1HL87lr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"IF19EUvrY1HL87lr","system":{"description":"<p>Venin inocul&eacute; par une morsure de goule.</p>\n<p>La paralysie intervient quand toutes les lignes de fatigue sont pleines et dure 6 heures.</p>\n<p>Le <em>floume-dhu</em> est obtenu en m&eacute;langeant en quantit&eacute;s &eacute;gales gel&eacute;e de floumette et lait humain (pour une dose : une demi-mesure de chaque).</p>\n<p>Puis chauffer le m&eacute;lange jusqu&rsquo;&agrave; couleur bleu-sangue (-2).</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":6,"periodicite":"1 round","incubation":"","periode":{"unite":"round","nombre":1},"remedesconnus":false,"remedes":"-4 \\ Floume-dhu +16","dommages":"1 ligne de fatigue"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1673135772495,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Blèmissure","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.JYMeJz8mxyI2oYIj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"JYMeJz8mxyI2oYIj","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":4,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-4/ Élixir des Gnomes +14, Huile de Sélikanthe +10.","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1673135772492,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fesse de groin","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.LkDe57PbpOIshhMI"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"LkDe57PbpOIshhMI","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":3,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-3/ Bitume de Camphre +16, Élixir des Gnomes +12","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Nécrophase","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.MImC24IVo96y7r7p"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"MImC24IVo96y7r7p","system":{"description":"<p>La N&eacute;crophase est une horrible maladie contract&eacute;e suite &agrave; une morsure de Ranan&egrave;cre.&nbsp;</p>\n<p>Tout autour de la blessure, la chair s&rsquo;enfle, vire au noir et se putr&eacute;fie, puis l&rsquo;ensemble du corps est gagn&eacute; peu &agrave; peu.</p>\n<p>Si la mort survient, elle donne naissance &agrave; une entit&eacute; de cauchemar non incarn&eacute;e ayant le m&ecirc;me nombre de points de r&ecirc;ve que la caract&eacute;ristique R&Ecirc;VE de la victime.</p>\n<p>Tirer 1d2 : 1 = haine ; 2 = d&eacute;sespoir.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":7,"periodicite":"1 heure","incubation":"","periode":{"unite":"heure","nombre":1},"remedesconnus":false,"remedes":"-4 \\ Tournegraisse +16 Huile de Sélikanthe +6","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Arrache-rêve","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Rl5jadqNYTxzn6Ns"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"Rl5jadqNYTxzn6Ns","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":6,"periodicite":"4 rounds","incubation":"","periode":{"unite":"round","nombre":4},"remedesconnus":false,"remedes":"-3/ Tournegraisse +14, Perle de Bjwal +12","dommages":"4 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1673135772492,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Salsimir à points verts","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Rx2nQjwaCa5s38Tm"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"Rx2nQjwaCa5s38Tm","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":1,"periodicite":"5 minutes","incubation":"","periode":{"unite":"minute","nombre":5},"remedesconnus":false,"remedes":"-5/ Lait de lune +14, Gelée royale +12","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Énervure","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.SlfTPRdCC9t3o9ai"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"SlfTPRdCC9t3o9ai","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":3,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-3/ Tournegraisse +14, Mirobolant +10","dommages":"2 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299818,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Crétamère","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.WBmXlsa3Wt2AN952"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"WBmXlsa3Wt2AN952","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":3,"periodicite":"3 minutes","incubation":"","periode":{"unite":"minute","nombre":3},"remedesconnus":false,"remedes":"-3/ Lait de lune +12, Gelée royale +8","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299819,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ortilise","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.X8vVqbK5pjuxQwBF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"X8vVqbK5pjuxQwBF","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":3,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-3/ Topazoïne +12, Lait de lune +8","dommages":"2 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299819,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Croupigne","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Zsodttv3S6OPTJL4"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"Zsodttv3S6OPTJL4","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":2,"periodicite":"5 minutes","incubation":"","periode":{"unite":"minute","nombre":5},"remedesconnus":false,"remedes":"-3/ Élixir des Gnomes +16, Gelée royale +10","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Acrève","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.aTzSlu5leo4JJypZ"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"aTzSlu5leo4JJypZ","system":{"description":"<p>L&rsquo;acr&egrave;ve est une mortelle infection pulmonaire, due &agrave; un brusque refroidissement.</p>\n<p>Ses sympt&ocirc;mes sont l&rsquo;apparition de sueurs et de tremblements, bient&ocirc;t suivis d&rsquo;une toux de plus en plus douloureuse. Puis le malade se met &agrave; cracher du sang.</p>\n<p>La premi&egrave;re p&eacute;riode indiqu&eacute;e est celle de l&rsquo;incubation, la seconde est la p&eacute;riodicit&eacute; normale.</p>\n<p>Tant que le malade n&rsquo;a subi aucun dommage, utiliser la p&eacute;riode d&rsquo;incubation (2 heures) ; puis d&egrave;s qu&rsquo;il a perdu ses deux premiers points de vie, utiliser la p&eacute;riodicit&eacute; normale (5 heures).</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":3,"periodicite":"2 heures / 5 heures","incubation":"2 heures","periode":{"unite":"heure","nombre":5},"remedesconnus":false,"remedes":"-4 \\ Gelée royale +14, Huile de Sélikanthe +10","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772492,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ortironce","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.bEDPtCAlJwmoZx5p"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"bEDPtCAlJwmoZx5p","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":4,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-3/ Bitume de Camphre +12, Teinture dÉrozonne +8","dommages":"2 pts de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin de chrasme","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.cFMUtU6LZG0mKeDl"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"cFMUtU6LZG0mKeDl","system":{"description":"<p>Venin du chrasme.&nbsp;</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":3,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-2 \\ Liqueur de Bagdol +16 Teinture dÉrozonne +10","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Téthanatos","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.fMukHi1h4lU84XQR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"fMukHi1h4lU84XQR","system":{"description":"<p>Le t&eacute;thanatos est un mal mortel, usuellement transmis par les blessures caus&eacute;es par les objets souill&eacute;s, comme par exemple les armes des Groins.&nbsp;</p>\n<p>Ses symptomes sont une forte fi&egrave;vre&nbsp; et l'apparition progressive de plaques noires,&nbsp; accompagn&eacute;es d'une odeur naus&eacute;abonde.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":7,"periodicite":"6 heures","incubation":"","periode":{"unite":"heure","nombre":6},"remedesconnus":false,"remedes":"-3\\ Bitume de Camphre +12, Mirobolant +8","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin de scologriffe","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.iwlN0bNJ5XNNfjgj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"iwlN0bNJ5XNNfjgj","system":{"description":"<p>Venin du scologriffe. Il provoque une sensation aigu&euml; de d&eacute;s&eacute;quilibre.</p>\n<p>Jouer VOLONT&Eacute; &agrave; -3. En cas d&rsquo;&eacute;chec, on chute sans parvenir &agrave; se relever.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":3,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-3 \\ Liqueur de Bagdol +16 Topazoïne +8","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Genèfle","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.jl0MvAcVRo63LWg3"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"jl0MvAcVRo63LWg3","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":1,"periodicite":"10 minutes","incubation":"","periode":{"unite":"minute","nombre":10},"remedesconnus":false,"remedes":"-3/ Teinture dÉrozonne +16, Topazoïne +12","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin de vipère jaune","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.lUeNPc0ECKqHglbG"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"lUeNPc0ECKqHglbG","system":{"description":"<p>Venin de la vip&egrave;re jaune. Il provoque des spasmes musculaires.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":2,"periodicite":"6 rounds","incubation":"","periode":{"unite":"round","nombre":6},"remedesconnus":false,"remedes":"-3\\ Liqueur de Bagdol +14, Topazoïne +10","dommages":"1 pt de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fièvre brune","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.nyruCPiWDd8Scv44"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/maladie.webp","effects":[],"_id":"nyruCPiWDd8Scv44","system":{"description":"<p>La fi&egrave;vre brune est une fi&egrave;vre mortelle v&eacute;hicul&eacute;e par les moustiques de certains marais. Outre un affaiblissement g&eacute;n&eacute;ral, elle provoque la c&eacute;cit&eacute;.</p>\n<p>Ses sympt&ocirc;mes progressifs consistent en hallucinations de taches brunes, puis en saignement des yeux, jusqu&rsquo;&agrave; la c&eacute;cit&eacute; compl&egrave;te qui pr&eacute;c&egrave;de la mort.</p>\n<p>La premi&egrave;re p&eacute;riode indiqu&eacute;e est celle de l&rsquo;incubation, la seconde est la p&eacute;riodicit&eacute; normale. Tant que le malade n&rsquo;a subi aucun dommage, utiliser la p&eacute;riode d&rsquo;incubation (1 heure) ; puis d&egrave;s qu&rsquo;il a perdu un premier point de vie, utiliser la p&eacute;riodicit&eacute; normale (6 heures).</p>\n<p>Les points de VUE perdus ne peuvent &ecirc;tre regagn&eacute;s que quand la maladie est enti&egrave;rement gu&eacute;rie. &Agrave; chaque point de vie regagn&eacute;, jouer un jet de CONSTITUTION ajust&eacute; n&eacute;gativement par les points de vie toujours manquants. Puis selon le r&eacute;sultat:</p>\n<ul>\n<li><strong><em>Particuli&egrave;re&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </em></strong>Regain de 2 points de VUE</li>\n<li><strong><em>Normale et significative</em></strong>&nbsp; &nbsp; &nbsp; Regain de 1 point de VUE</li>\n<li><strong><em>&Eacute;chec et &Eacute;chec particulier</em></strong>&nbsp; Aucun regain</li>\n<li><strong><em>&Eacute;chec total</em>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </strong>Aggravation, re-perte d&rsquo;un point de VUE</li>\n</ul>\n<p>Si tous les points de vie ont &eacute;t&eacute; regagn&eacute;s et qu&rsquo;il manque toujours un ou plusieurs points de VUE, jouer un jet de CONSTITUTION &agrave; z&eacute;ro toutes les 12 heures, et appliquer les m&ecirc;mes r&eacute;sultats que ci-dessus.</p>\n<p>Une potion d&rsquo;herbes de soin enchant&eacute;e peut faire regagner tous les points de vie une fois la maladie gu&eacute;rie, mais ne fait pas regagner les points de VUE perdus. Si le malade est devenu enti&egrave;rement aveugle au cours de sa maladie, c&rsquo;est-&agrave;-dire si sa VUE est tomb&eacute;e &agrave; z&eacute;ro, il perd d&eacute;finitivement un point de VUE. Quand il regagnera ses points de VUE, il les regagnera tous moins un.</p>\n<h2>Bains de solimonce</h2>\n<p>Une d&eacute;coction de feuilles de solimonce (voir Herbes, p336) utilis&eacute;e en bains d&rsquo;yeux donne un bonus de +4 au jet de CONSTITUTION pour le regain des points de VUE.</p>\n<p>La d&eacute;coction se pr&eacute;pare comme une d&eacute;coction d&rsquo;herbes de soin. Pour baigner les deux yeux, il en faut 10 brins. Le bain doit durer 60 minutes (pour les deux yeux), puis les yeux doivent &ecirc;tre tenus &agrave; l&rsquo;abri de la lumi&egrave;re pendant un minimum de 3 heures. Le mieux est de les fermer et de dormir. Un bain d&rsquo;yeux n&rsquo;est valable que pour un seul jet de CONSTITUTION.</p>\n<p>Dans tous les cas, la fr&eacute;quence des jets est toutes les 12 heures. La d&eacute;coction de solimonce n&rsquo;&eacute;tant jamais bue, un enchantement ne lui conf&egrave;re rien de plus. La solimonce ne gu&eacute;rit pas la fi&egrave;vre brune et ne peut avoir d&rsquo;effet que quand la maladie est enti&egrave;rement gu&eacute;rie.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":6,"periodicite":"1 heure \\ 6 heures","incubation":"1 heure","periode":{"unite":"heure","nombre":6},"remedesconnus":false,"remedes":"-4 \\ Élixir des Gnomes +14, Bitume de Camphre +10","dommages":"1 pt de Vie et 1 pt de Vue"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Bousille","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.qE4IEazgBeRs4uE0"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"qE4IEazgBeRs4uE0","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":5,"periodicite":"6 rounds","incubation":"","periode":{"unite":"round","nombre":6},"remedesconnus":false,"remedes":"-4/ Teinture dÉrozonne +10, Topazoïne +6","dommages":"3 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299820,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Hécatombe","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.sSgu1FYK1s1vZinT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"sSgu1FYK1s1vZinT","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un fruit v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":4,"periodicite":"1 minute","incubation":"","periode":{"unite":"minute","nombre":1},"remedesconnus":false,"remedes":"-5/ Bitume de Camphre +12, Mirobolant +6","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Amanite thanataire","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.sriGtgt3FQkc642z"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"sriGtgt3FQkc642z","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":7,"periodicite":"3 rounds","incubation":"","periode":{"unite":"round","nombre":3},"remedesconnus":false,"remedes":"-3/ Tournegraisse +12, Perle de Bjwal +10","dommages":"4 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1673135772492,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Cheleuse","type":"poison","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.tpzD5959gxuIcTir"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/urticants.webp","effects":[],"_id":"tpzD5959gxuIcTir","system":{"description":"<p>Des enflures apparaissent autour des plaies occasionn&eacute;es par les piquants de la plante urticante. Les sympt&ocirc;mes sont des sensations d&rsquo;&eacute;touffement accompagn&eacute;es de vertiges et de sueurs froides.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":1,"periodicite":"5 minutes","incubation":"","periode":{"unite":"minute","nombre":5},"remedesconnus":false,"remedes":"-3/ Liqueur de Bagdol +16, Mirobolant +14","dommages":"1 pt de Vie","active":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Venin d'araflate","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.v7yZidE9mObKO566"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp","effects":[],"_id":"v7yZidE9mObKO566","system":{"description":"<p>Venin de l'araflate. Sa morsure inflige un venin anesth&eacute;siant, inocul&eacute; sur toute blessure sauf contusion\\ &eacute;raflure.</p>\n<p>Chaque perte d&rsquo;endurance s&rsquo;accompagne de la fatigue &eacute;quivalente. &Agrave; z&eacute;ro d&rsquo;endurance, la victime est paralys&eacute;e et ne peut plus faire un geste.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":6,"periodicite":"1 round","incubation":"","periode":{"unite":"round","nombre":1},"remedesconnus":false,"remedes":"-3 \\ Liqueur de Bagdol +12 Lait de lune +6","dommages":"1d6 pts d'endurance"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1673135772494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Fumebol","type":"maladie","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.xzCBr3FiSk1WewcT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/maladies_venins/champifruit.webp","effects":[],"_id":"xzCBr3FiSk1WewcT","system":{"description":"<p>Intoxication suite &agrave; l'ingestion d'un champignon v&eacute;n&eacute;neux.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"identifie":false,"malignite":5,"periodicite":"8 rounds","incubation":"","periode":{"unite":"round","nombre":8},"remedesconnus":false,"remedes":"-5/ Sable-Poudre +12, Huile de Sélikanthe +8.","dommages":"2 pts de Vie"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1671050299821,"modifiedTime":1673135772493,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}

View File

@@ -1,25 +1,25 @@
{"_id":"2KM1yiEOE0ZdT2oL","name":"Désir d'escalade difficile","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.2KM1yiEOE0ZdT2oL"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Hauteur à grimper : 4d6 m, difficulté de lescalade : 1d4-4.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017067,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2KbzOC2aj98CiQbW","name":"Désir de blesser un enfant","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.2KbzOC2aj98CiQbW"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017067,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3dnmi4Fyh5eUQcyP","name":"Urgence draconique","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.3dnmi4Fyh5eUQcyP"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles dune montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort nest en réserve, ou si il y a impossibilité de pratiquer la magie à cause dune autre queue ou dun souffle, tirer à la place une idée fixe.</p>","descriptionmj":"","frequence":3,"hautrevant":true,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017067,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6MUcjYfxfi45STvo","name":"Insomnie","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.6MUcjYfxfi45STvo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017067,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"DnhuuGUEbOF95JlN","name":"Désir de boire du sang chaud","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.DnhuuGUEbOF95JlN"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Il sagit de sang encore chaud de la chaleur naturelle de la victime.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017068,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"N9j8K6x89BdS7ZKN","name":"Conquête","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.N9j8K6x89BdS7ZKN"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement et la&nbsp;<em>maîtriser</em>, difficulté -7. Ce peut être nimporte quelle case, sauf une case humide. En cas déchec, la concentration est rompue ; il ny a pas de souffle de Dragon en cas déchec total.</p>","descriptionmj":"","frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017068,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PMz7SaB6sRxhwrWw","name":"Coup de barre","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.PMz7SaB6sRxhwrWw"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017068,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PmEjVox3Q6SPF730","name":"Inertie draconique","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.PmEjVox3Q6SPF730"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu dun.</p>","descriptionmj":"","frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017068,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RrPMV2HW2Rg8POK1","name":"Souvenir morbide de l'archétype","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.RrPMV2HW2Rg8POK1"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Les prochains points dexpérience dus au stress doivent être mis en Thanatos.</p>","descriptionmj":"","frequence":5,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017068,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"S7se7qPnL6WDg5U5","name":"Mauvaise rencontre en perspective","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.S7se7qPnL6WDg5U5"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Tirer la prochaine rencontre dans les TMR sur la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table sp&eacute;ciale de rencontres}</p>","descriptionmj":"","frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017068,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UmvGxA4cFSoRE82Z","name":"Dépouillement","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.UmvGxA4cFSoRE82Z"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder daucune dépense.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017069,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"aZWuRmi8lplZQcdM","name":"Amnésie sélective","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.aZWuRmi8lplZQcdM"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, perte totale dune compétence, à lexclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017069,"modifiedTime":1669478091418,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cUkRSRz5DJYb3WM8","name":"Couardise irraisonnée","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.cUkRSRz5DJYb3WM8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>la prochaine occasion de combat, obligation de fuir, de se cacher ou de se rendre. Impossibilité dutiliser aucune magie, ni sur lennemi, ni sur soi-même.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017069,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"dFf8jaC0RvidC1ZC","name":"Haine fatale","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.dFf8jaC0RvidC1ZC"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>On devient immédiatement haineux et jaloux envers la première personne inconnue de même sexe et de même espèce rencontrée. Traiter comme le Coup de foudre fatal. La satisfaction sobtient en blessant gravement ou en infligeant une cuisante humiliation publique.</p>","descriptionmj":"","frequence":10,"hautrevant":false,"categorie":"lancinant","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017069,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"e67rXcuO236ioYAr","name":"Infarctus","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.e67rXcuO236ioYAr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Perte immédiate de 4 points de vie (et 8 points dendurance). Ces points pourront commencer à être regagnés au bout dun jour complet.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017069,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fO1jjVlOb6faLv3T","name":"Désir de dormir dans un cercueil","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.fO1jjVlOb6faLv3T"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017069,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fUKNZ0uEG2y2PkOk","name":"Injurier le premier inconnu rencontré","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.fUKNZ0uEG2y2PkOk"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir d'injurier la première personne inconnue rencontrée</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gT0PQAxlYrtITyut","name":"Désir de blesser une femme","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.gT0PQAxlYrtITyut"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lz3ghhJzkPRWJ2jz","name":"Désir de parler à un crâne (humain)","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.lz3ghhJzkPRWJ2jz"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. La \"conversation\" doit durer un minimum de 15 minutes.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"spYuiInqbCoDsKvd","name":"Héroïsme forcené","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.spYuiInqbCoDsKvd"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>À la prochaine occasion de combat, obligation de foncer en tête en corps à corps ou avec une arme de mêlée. Impossibilité dutiliser aucune magie, ni sur lennemi, ni sur soi-même.</p>","descriptionmj":"","frequence":9,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"twUoR8ALYiabkfoE","name":"Désir d'entendre hurler de terreur","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.twUoR8ALYiabkfoE"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Il doit sagir dun hurlement humain.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"uQ4PwcwplvZarfn1","name":"Montée laborieuse","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.uQ4PwcwplvZarfn1"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu dun, et 3 points en déplacement accéléré.</p>","descriptionmj":"","frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"wqWkQQsAPVlFw4ft","name":"Désir d'assister à une pendaison","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.wqWkQQsAPVlFw4ft"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091419,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yEHdCabJYx0qvoL5","name":"Réinsertion aléatoire","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.yEHdCabJYx0qvoL5"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Comme après une sortie de la carte, le gardien des rêves réintroduit secrètement le demi-rêve du haut-rêvant dans les TMR.</p>","descriptionmj":"","frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"zIXgRwfB83DMaNX8","name":"Pèlerinage","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.zIXgRwfB83DMaNX8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut ly téléporter, mais un Messager ne peut sy rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","descriptionmj":"","frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478017070,"modifiedTime":1669478091420,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2KM1yiEOE0ZdT2oL","name":"Désir d'escalade difficile","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.2KM1yiEOE0ZdT2oL"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Hauteur à grimper : 4d6 m, difficulté de lescalade : 1d4-4.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017067,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2KbzOC2aj98CiQbW","name":"Désir de blesser un enfant","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.2KbzOC2aj98CiQbW"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017067,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3dnmi4Fyh5eUQcyP","name":"Urgence draconique","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.3dnmi4Fyh5eUQcyP"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles dune montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort nest en réserve, ou si il y a impossibilité de pratiquer la magie à cause dune autre queue ou dun souffle, tirer à la place une idée fixe.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017067,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6MUcjYfxfi45STvo","name":"Insomnie","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.6MUcjYfxfi45STvo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"","refoulement":0,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017067,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"DnhuuGUEbOF95JlN","name":"Désir de boire du sang chaud","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.DnhuuGUEbOF95JlN"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Il sagit de sang encore chaud de la chaleur naturelle de la victime.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"N9j8K6x89BdS7ZKN","name":"Conquête","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.N9j8K6x89BdS7ZKN"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement et la&nbsp;<em>maîtriser</em>, difficulté -7. Ce peut être nimporte quelle case, sauf une case humide. En cas déchec, la concentration est rompue ; il ny a pas de souffle de Dragon en cas déchec total.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1673118685213,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PMz7SaB6sRxhwrWw","name":"Coup de barre","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.PMz7SaB6sRxhwrWw"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PmEjVox3Q6SPF730","name":"Inertie draconique","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.PmEjVox3Q6SPF730"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu dun.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"","refoulement":0,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RrPMV2HW2Rg8POK1","name":"Souvenir morbide de l'archétype","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.RrPMV2HW2Rg8POK1"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Les prochains points dexpérience dus au stress doivent être mis en Thanatos.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"S7se7qPnL6WDg5U5","name":"Mauvaise rencontre en perspective","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.S7se7qPnL6WDg5U5"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Tirer la prochaine rencontre dans les TMR sur la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table sp&eacute;ciale de rencontres}</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UmvGxA4cFSoRE82Z","name":"Dépouillement","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.UmvGxA4cFSoRE82Z"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder daucune dépense.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"aZWuRmi8lplZQcdM","name":"Amnésie sélective","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.aZWuRmi8lplZQcdM"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, perte totale dune compétence, à lexclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"","refoulement":0,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1673118685213,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cUkRSRz5DJYb3WM8","name":"Couardise irraisonnée","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.cUkRSRz5DJYb3WM8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>la prochaine occasion de combat, obligation de fuir, de se cacher ou de se rendre. Impossibilité dutiliser aucune magie, ni sur lennemi, ni sur soi-même.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1673118685213,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"dFf8jaC0RvidC1ZC","name":"Haine fatale","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.dFf8jaC0RvidC1ZC"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>On devient immédiatement haineux et jaloux envers la première personne inconnue de même sexe et de même espèce rencontrée. Traiter comme le Coup de foudre fatal. La satisfaction sobtient en blessant gravement ou en infligeant une cuisante humiliation publique.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":10,"hautrevant":false,"categorie":"lancinant","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"e67rXcuO236ioYAr","name":"Infarctus","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.e67rXcuO236ioYAr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Perte immédiate de 4 points de vie (et 8 points dendurance). Ces points pourront commencer à être regagnés au bout dun jour complet.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fO1jjVlOb6faLv3T","name":"Désir de dormir dans un cercueil","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.fO1jjVlOb6faLv3T"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fUKNZ0uEG2y2PkOk","name":"Injurier le premier inconnu rencontré","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.fUKNZ0uEG2y2PkOk"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir d'injurier la première personne inconnue rencontrée</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gT0PQAxlYrtITyut","name":"Désir de blesser une femme","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.gT0PQAxlYrtITyut"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lz3ghhJzkPRWJ2jz","name":"Désir de parler à un crâne (humain)","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.lz3ghhJzkPRWJ2jz"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. La \"conversation\" doit durer un minimum de 15 minutes.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"spYuiInqbCoDsKvd","name":"Héroïsme forcené","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.spYuiInqbCoDsKvd"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>À la prochaine occasion de combat, obligation de foncer en tête en corps à corps ou avec une arme de mêlée. Impossibilité dutiliser aucune magie, ni sur lennemi, ni sur soi-même.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":9,"hautrevant":false,"categorie":"false","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"twUoR8ALYiabkfoE","name":"Désir d'entendre hurler de terreur","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.twUoR8ALYiabkfoE"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire. Il doit sagir dun hurlement humain.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"uQ4PwcwplvZarfn1","name":"Montée laborieuse","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.uQ4PwcwplvZarfn1"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu dun, et 3 points en déplacement accéléré.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"","refoulement":0,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"wqWkQQsAPVlFw4ft","name":"Désir d'assister à une pendaison","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.wqWkQQsAPVlFw4ft"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Désir thanataire.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yEHdCabJYx0qvoL5","name":"Réinsertion aléatoire","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.yEHdCabJYx0qvoL5"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Comme après une sortie de la carte, le gardien des rêves réintroduit secrètement le demi-rêve du haut-rêvant dans les TMR.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"zIXgRwfB83DMaNX8","name":"Pèlerinage","type":"ombre","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.ombres-de-thanatos.zIXgRwfB83DMaNX8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut ly téléporter, mais un Messager ne peut sy rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"false","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1673118685215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}

View File

@@ -1,56 +1,56 @@
{"_id":"0jrEZ62Q2Jz4kBGf","name":"Mauvaise rencontre en perspective","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.0jrEZ62Q2Jz4kBGf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>La prochaine rencontre dans les TMR sera tir&eacute;e de la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table sp&eacute;ciale de rencontres}</p>","descriptionmj":"","frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025459,"modifiedTime":1669478080242,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"0uc2pMIGL03Hq2Hn","name":"Anorexie. Ne rien avaler, ni solide, ni liquide, pas même une potion","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.0uc2pMIGL03Hq2Hn"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025459,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"1gGVlZM0UyifL6RK","name":"Souvenir obsessionnel de l'archétype","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.1gGVlZM0UyifL6RK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Les prochains points dexpérience dus au stress doivent être mis dans une compétence déterminée aléatoirement par la table de @Compendium[foundryvtt-reve-de-dragon.tables-diverses.E0WLgjn6LA9WsvKJ]{Détermination aléatoire de compétence}.</p>","descriptionmj":"","frequence":48,"hautrevant":false,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025459,"modifiedTime":1669478080242,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"1l59lWbtvYp74OTb","name":"Briser un objet de verre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.1l59lWbtvYp74OTb"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080237,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"22EQLBJfHVYs96iC","name":"Cracher dans toute nourriture ou boisson aperçue","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.22EQLBJfHVYs96iC"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2Rtm78bMKPy8eG4q","name":"Éteindre tout feu rencontré (feu de camp, torche, lanterne, etc.)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.2Rtm78bMKPy8eG4q"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2i3PndTKG1n3hEUU","name":"Danser avec un(e) partenaire inconnu(e) (Beauté 13 minimum)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.2i3PndTKG1n3hEUU"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2j1q9e07ZLlIQDYl","name":"Traîner son épée en laisse (ou sa meilleure arme)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.2j1q9e07ZLlIQDYl"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"32LbwxxokC9Tn370","name":"Coup de foudre fatal","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.32LbwxxokC9Tn370"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>On devient immédiatement amoureux fou de la première personne inconnue de sexe opposé et de même espèce rencontrée. Tant que satisfaction nest pas obtenue, traiter comme un désir lancinant.&nbsp;</p>","descriptionmj":"","frequence":20,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080236,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3BcC8lSsP5WIyva7","name":"Gagner de largent (minimum 10 deniers)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.3BcC8lSsP5WIyva7"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3ZjwYyQRatCMnBCi","name":"Mégalomanie. Être acclamé par un minimum de 10 personnes","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.3ZjwYyQRatCMnBCi"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080239,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"5knw1NcnBsLIjHpr","name":"Montée laborieuse","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.5knw1NcnBsLIjHpr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu dun, et 3 points en déplacement accéléré.</p>","descriptionmj":"","frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080242,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6G0lF06jSryTduAt","name":"Avoir le visage noirci à la cendre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.6G0lF06jSryTduAt"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025460,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7TKsit2Mv9mWGq3C","name":"Ne marcher quà quatre pattes","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.7TKsit2Mv9mWGq3C"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025461,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"8sLXQBqo8XwjAFG0","name":"Acquérir une chèvre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.8sLXQBqo8XwjAFG0"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025461,"modifiedTime":1669478080237,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"E902EEYZHg3zFKq6","name":"Garder les yeux bandés","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.E902EEYZHg3zFKq6"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025461,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"EUrxQGd7FuW628NS","name":"Inertie draconique","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.EUrxQGd7FuW628NS"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu dun.</p>","descriptionmj":"","frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025461,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"F6qL4d4g3qjh045R","name":"Danser nu sous la pluie","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.F6qL4d4g3qjh045R"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025461,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"F8G3rdU1nfJzYwYR","name":"Garder sur soi 3d6 kilos de cailloux","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.F8G3rdU1nfJzYwYR"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025461,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HSNOvBR890dsEDw2","name":"Se faire raser la tête","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.HSNOvBR890dsEDw2"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025461,"modifiedTime":1669478080239,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"I0CtQ05xFW6ghcdP","name":"Aller tout nu, sans porter le moindre paquet ni objet","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.I0CtQ05xFW6ghcdP"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025462,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"J3XtcVuQo846U1OT","name":"Idée fixe","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.J3XtcVuQo846U1OT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.nbH4v630P7ARaAHk]{Id&eacute;es fixes}. Les id&eacute;es fixes prennent effet imm&eacute;diatement et durent jusqu&rsquo;&agrave; l&rsquo;extr&ecirc;me fin de l&rsquo;heure du Ch&acirc;teau Dormant du lendemain. Si pass&eacute; ce d&eacute;lai, l&rsquo;occasion de les manifester ne s&rsquo;est pas pr&eacute;sent&eacute;e, la queue prend fin n&eacute;anmoins. Si elles entrent en contradiction avec une autre queue de Dragon, retirer.</p>\n<p>&nbsp;</p>","descriptionmj":"","frequence":0,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025462,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"JcTX8qMS0z8bmdVt","name":"Boulimie. Manger au moins un point de sust. par heure","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.JcTX8qMS0z8bmdVt"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025462,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"LlELEB0FhymLx6VM","name":"Passer une nuit sur une échelle","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.LlELEB0FhymLx6VM"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080239,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Ltgqj86rYQr8D8LW","name":"Désir lancinant","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.Ltgqj86rYQr8D8LW"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.sVWhyr4wPnieuPP8]{D&eacute;sirs lancinants}. Les d&eacute;sirs lancinants durent jusqu&rsquo;&agrave; ce qu&rsquo;ils soient satisfaits ou refoul&eacute;s. Tant que satisfaction n&rsquo;est pas obtenue, aucun point d&rsquo;exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l&rsquo;exercice en cas de particuli&egrave;re et d&rsquo;ajustement final n&eacute;gatif. Les points d&rsquo;exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>\n<p>&nbsp;</p>","descriptionmj":"","frequence":0,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080237,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"NpTDqICR7ZuToQrg","name":"Refuser de monter dans les TMR","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.NpTDqICR7ZuToQrg"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"NzJJNK0YMAbobu0p","name":"Masochisme. Perdre 3 points dendurance minimum en 1 round","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.NzJJNK0YMAbobu0p"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080239,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"OSV2b7bVWv2SCfUY","name":"Urgence draconique","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.OSV2b7bVWv2SCfUY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles dune montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort nest en réserve, ou si il y a impossibilité de pratiquer la magie à cause dune autre queue ou dun souffle, tirer à la place une idée fixe.</p>","descriptionmj":"","frequence":16,"hautrevant":true,"categorie":"","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080242,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"OjG8XRbeYtq2jcgB","name":"Casser 3d6 oeufs en les jetant à terre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.OjG8XRbeYtq2jcgB"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080237,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"QHUOwjMR6AvepGPm","name":"Traire une vache","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.QHUOwjMR6AvepGPm"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Qgj5eSMpQ0IDHwZX","name":"Coup de barre","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.Qgj5eSMpQ0IDHwZX"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","descriptionmj":"","frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080236,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RVslW735GbPbXCpP","name":"Pèlerinage","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.RVslW735GbPbXCpP"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut ly téléporter, mais un Messager ne peut sy rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","descriptionmj":"","frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080242,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"S8PVNgxb7TcFXq9g","name":"Pisser dans un violon (luth, mandoline, etc.)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.S8PVNgxb7TcFXq9g"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025463,"modifiedTime":1669478080239,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"SY0SsWtZdxSodMcl","name":"Manger du poisson","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.SY0SsWtZdxSodMcl"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"TmEeikWOQt6NZGVY","name":"Masque de Narcos","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.TmEeikWOQt6NZGVY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant 1d7 jours à compter du lendemain, la caractéristique APPARENCE baisse de 1d6 points, de même que la Beauté.</p>","descriptionmj":"","frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080242,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UUTbsktTcxsIe5L5","name":"Ne pas franchir de porte. (On peut franchir une fenêtre)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.UUTbsktTcxsIe5L5"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"VChJbtGFtWoiFNky","name":"Refuser de se délester du moindre objet, ni donner ni prêter","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.VChJbtGFtWoiFNky"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YCHBbRLiMzTH7IBj","name":"Ne sexprimer que par des cris danimaux (meuh ! coin-coin ! etc.)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.YCHBbRLiMzTH7IBj"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"afGp9CewfyJKecEE","name":"Vider sur sa tête toute fiole ou flacon aperçu","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.afGp9CewfyJKecEE"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"df5oN8Ub3dWTVxNj","name":"Faire des bulles de savon","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.df5oN8Ub3dWTVxNj"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"diCCimukdNM6bPub","name":"Entendre braire un âne","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.diCCimukdNM6bPub"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"el4lofhhSucMv5xv","name":"Se rouler dans la boue","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.el4lofhhSucMv5xv"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025464,"modifiedTime":1669478080239,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gMmqdJ9I7Mt8Tg3f","name":"Ne dire que «non» ou négation analogue","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.gMmqdJ9I7Mt8Tg3f"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gadh6aI5iCM82qpP","name":"Manger des champignons","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.gadh6aI5iCM82qpP"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"hghw6Cldrad1CIiJ","name":"Refuser de se déplacer autrement que porté","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.hghw6Cldrad1CIiJ"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iHuLw0I1Gc5mIucG","name":"Réinsertion aléatoire","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.iHuLw0I1Gc5mIucG"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Comme apr&egrave;s une sortie de la carte, le gardien des r&ecirc;ves r&eacute;introduit secr&egrave;tement le demi-r&ecirc;ve du haut-r&ecirc;vant dans les TMR.</p>","descriptionmj":"","frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080242,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iJw6j7kuP1eAHIck","name":"Amnésie sélective","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.iJw6j7kuP1eAHIck"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, perte totale dune compétence, à lexclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","descriptionmj":"","frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080236,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iPYPgxL2uUnphStc","name":"Garder une main sur la tête","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.iPYPgxL2uUnphStc"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"j2xIrFWYqhDM4TcN","name":"Appeler les hommes «madame» et les femmes «messire»","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.j2xIrFWYqhDM4TcN"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jShpKV8mVcqWmYvp","name":"Se soûler (minimum pas frais)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.jShpKV8mVcqWmYvp"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025465,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"kHWwwxA0alcpDYpf","name":"Insomnie","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.kHWwwxA0alcpDYpf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","descriptionmj":"","frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025466,"modifiedTime":1669478080241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lBkO8FvFqXoKNhvk","name":"Conquête","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.lBkO8FvFqXoKNhvk"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir &agrave; nouveau faire usage du haut-r&ecirc;ve, y compris d&eacute;clencher volontairement un sort mis en r&eacute;serve, le haut-r&ecirc;vant doit se rendre dans une certaine case des TMR d&eacute;termin&eacute;e al&eacute;atoirement et la&nbsp;<em>ma&icirc;triser</em>, difficult&eacute; -7. Ce peut &ecirc;tre n&rsquo;importe quelle case, sauf une case humide. En cas d&rsquo;&eacute;chec, la concentration est rompue ; il n&rsquo;y a pas de souffle de Dragon en cas d&rsquo;&eacute;chec total.</p>","descriptionmj":"","frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025466,"modifiedTime":1669478080236,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"mN0yghXkFfj2YctJ","name":"Construire une cabane","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.mN0yghXkFfj2YctJ"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025466,"modifiedTime":1669478080237,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"sjXBBr85OBk4Yg4t","name":"Embrasser un cochon sur le groin","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.sjXBBr85OBk4Yg4t"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025466,"modifiedTime":1669478080238,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"vft88ioHpGxMzdML","name":"Dépouillement","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.vft88ioHpGxMzdML"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder daucune dépense.</p>","descriptionmj":"","frequence":20,"hautrevant":false,"categorie":"","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025466,"modifiedTime":1669478080237,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"xa4t9Lbt6uLEjap6","name":"Faire le mort","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.xa4t9Lbt6uLEjap6"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.8","coreVersion":"10.290","createdTime":1669478025466,"modifiedTime":1669478080240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"0jrEZ62Q2Jz4kBGf","name":"Mauvaise rencontre en perspective","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.0jrEZ62Q2Jz4kBGf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>La prochaine rencontre dans les TMR sera tir&eacute;e de la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table sp&eacute;ciale de rencontres}</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025459,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"0uc2pMIGL03Hq2Hn","name":"Anorexie. Ne rien avaler, ni solide, ni liquide, pas même une potion","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.0uc2pMIGL03Hq2Hn"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025459,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"1gGVlZM0UyifL6RK","name":"Souvenir obsessionnel de l'archétype","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.1gGVlZM0UyifL6RK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Les prochains points dexpérience dus au stress doivent être mis dans une compétence déterminée aléatoirement par la table de @Compendium[foundryvtt-reve-de-dragon.tables-diverses.E0WLgjn6LA9WsvKJ]{Détermination aléatoire de compétence}.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":48,"hautrevant":false,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025459,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"1l59lWbtvYp74OTb","name":"Briser un objet de verre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.1l59lWbtvYp74OTb"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"22EQLBJfHVYs96iC","name":"Cracher dans toute nourriture ou boisson aperçue","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.22EQLBJfHVYs96iC"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2Rtm78bMKPy8eG4q","name":"Éteindre tout feu rencontré (feu de camp, torche, lanterne, etc.)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.2Rtm78bMKPy8eG4q"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2i3PndTKG1n3hEUU","name":"Danser avec un(e) partenaire inconnu(e) (Beauté 13 minimum)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.2i3PndTKG1n3hEUU"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2j1q9e07ZLlIQDYl","name":"Traîner son épée en laisse (ou sa meilleure arme)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.2j1q9e07ZLlIQDYl"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"32LbwxxokC9Tn370","name":"Coup de foudre fatal","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.32LbwxxokC9Tn370"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>On devient immédiatement amoureux fou de la première personne inconnue de sexe opposé et de même espèce rencontrée. Tant que satisfaction nest pas obtenue, traiter comme un désir lancinant.&nbsp;</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":20,"hautrevant":false,"categorie":"lancinant","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3BcC8lSsP5WIyva7","name":"Gagner de largent (minimum 10 deniers)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.3BcC8lSsP5WIyva7"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3ZjwYyQRatCMnBCi","name":"Mégalomanie. Être acclamé par un minimum de 10 personnes","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.3ZjwYyQRatCMnBCi"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"5knw1NcnBsLIjHpr","name":"Montée laborieuse","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.5knw1NcnBsLIjHpr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu dun, et 3 points en déplacement accéléré.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6G0lF06jSryTduAt","name":"Avoir le visage noirci à la cendre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.6G0lF06jSryTduAt"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7TKsit2Mv9mWGq3C","name":"Ne marcher quà quatre pattes","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.7TKsit2Mv9mWGq3C"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"8sLXQBqo8XwjAFG0","name":"Acquérir une chèvre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.8sLXQBqo8XwjAFG0"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1673118700209,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"E902EEYZHg3zFKq6","name":"Garder les yeux bandés","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.E902EEYZHg3zFKq6"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"EUrxQGd7FuW628NS","name":"Inertie draconique","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.EUrxQGd7FuW628NS"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu dun.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1673118700213,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"F6qL4d4g3qjh045R","name":"Danser nu sous la pluie","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.F6qL4d4g3qjh045R"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"F8G3rdU1nfJzYwYR","name":"Garder sur soi 3d6 kilos de cailloux","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.F8G3rdU1nfJzYwYR"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HSNOvBR890dsEDw2","name":"Se faire raser la tête","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.HSNOvBR890dsEDw2"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"I0CtQ05xFW6ghcdP","name":"Aller tout nu, sans porter le moindre paquet ni objet","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.I0CtQ05xFW6ghcdP"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025462,"modifiedTime":1673118700209,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"J3XtcVuQo846U1OT","name":"Idée fixe","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.J3XtcVuQo846U1OT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.nbH4v630P7ARaAHk]{Id&eacute;es fixes}. Les id&eacute;es fixes prennent effet imm&eacute;diatement et durent jusqu&rsquo;&agrave; l&rsquo;extr&ecirc;me fin de l&rsquo;heure du Ch&acirc;teau Dormant du lendemain. Si pass&eacute; ce d&eacute;lai, l&rsquo;occasion de les manifester ne s&rsquo;est pas pr&eacute;sent&eacute;e, la queue prend fin n&eacute;anmoins. Si elles entrent en contradiction avec une autre queue de Dragon, retirer.</p>\n<p>&nbsp;</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":0,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025462,"modifiedTime":1673118700213,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"JcTX8qMS0z8bmdVt","name":"Boulimie. Manger au moins un point de sust. par heure","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.JcTX8qMS0z8bmdVt"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025462,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"LlELEB0FhymLx6VM","name":"Passer une nuit sur une échelle","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.LlELEB0FhymLx6VM"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Ltgqj86rYQr8D8LW","name":"Désir lancinant","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.Ltgqj86rYQr8D8LW"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.sVWhyr4wPnieuPP8]{D&eacute;sirs lancinants}. Les d&eacute;sirs lancinants durent jusqu&rsquo;&agrave; ce qu&rsquo;ils soient satisfaits ou refoul&eacute;s. Tant que satisfaction n&rsquo;est pas obtenue, aucun point d&rsquo;exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l&rsquo;exercice en cas de particuli&egrave;re et d&rsquo;ajustement final n&eacute;gatif. Les points d&rsquo;exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>\n<p>&nbsp;</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":0,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"NpTDqICR7ZuToQrg","name":"Refuser de monter dans les TMR","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.NpTDqICR7ZuToQrg"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"NzJJNK0YMAbobu0p","name":"Masochisme. Perdre 3 points dendurance minimum en 1 round","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.NzJJNK0YMAbobu0p"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"OSV2b7bVWv2SCfUY","name":"Urgence draconique","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.OSV2b7bVWv2SCfUY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles dune montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort nest en réserve, ou si il y a impossibilité de pratiquer la magie à cause dune autre queue ou dun souffle, tirer à la place une idée fixe.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"hautrevant":true,"categorie":"","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"OjG8XRbeYtq2jcgB","name":"Casser 3d6 oeufs en les jetant à terre","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.OjG8XRbeYtq2jcgB"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"QHUOwjMR6AvepGPm","name":"Traire une vache","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.QHUOwjMR6AvepGPm"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Qgj5eSMpQ0IDHwZX","name":"Coup de barre","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.Qgj5eSMpQ0IDHwZX"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RVslW735GbPbXCpP","name":"Pèlerinage","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.RVslW735GbPbXCpP"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut ly téléporter, mais un Messager ne peut sy rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"S8PVNgxb7TcFXq9g","name":"Pisser dans un violon (luth, mandoline, etc.)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.S8PVNgxb7TcFXq9g"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"SY0SsWtZdxSodMcl","name":"Manger du poisson","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.SY0SsWtZdxSodMcl"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"TmEeikWOQt6NZGVY","name":"Masque de Narcos","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.TmEeikWOQt6NZGVY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant 1d7 jours à compter du lendemain, la caractéristique APPARENCE baisse de 1d6 points, de même que la Beauté.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"1d7jours","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UUTbsktTcxsIe5L5","name":"Ne pas franchir de porte. (On peut franchir une fenêtre)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.UUTbsktTcxsIe5L5"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"VChJbtGFtWoiFNky","name":"Refuser de se délester du moindre objet, ni donner ni prêter","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.VChJbtGFtWoiFNky"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YCHBbRLiMzTH7IBj","name":"Ne sexprimer que par des cris danimaux (meuh ! coin-coin ! etc.)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.YCHBbRLiMzTH7IBj"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"afGp9CewfyJKecEE","name":"Vider sur sa tête toute fiole ou flacon aperçu","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.afGp9CewfyJKecEE"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"df5oN8Ub3dWTVxNj","name":"Faire des bulles de savon","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.df5oN8Ub3dWTVxNj"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"diCCimukdNM6bPub","name":"Entendre braire un âne","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.diCCimukdNM6bPub"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"el4lofhhSucMv5xv","name":"Se rouler dans la boue","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.el4lofhhSucMv5xv"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gMmqdJ9I7Mt8Tg3f","name":"Ne dire que «non» ou négation analogue","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.gMmqdJ9I7Mt8Tg3f"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700214,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gadh6aI5iCM82qpP","name":"Manger des champignons","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.gadh6aI5iCM82qpP"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700213,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"hghw6Cldrad1CIiJ","name":"Refuser de se déplacer autrement que porté","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.hghw6Cldrad1CIiJ"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iHuLw0I1Gc5mIucG","name":"Réinsertion aléatoire","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.iHuLw0I1Gc5mIucG"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Comme apr&egrave;s une sortie de la carte, le gardien des r&ecirc;ves r&eacute;introduit secr&egrave;tement le demi-r&ecirc;ve du haut-r&ecirc;vant dans les TMR.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iJw6j7kuP1eAHIck","name":"Amnésie sélective","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.iJw6j7kuP1eAHIck"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Pendant un jour, perte totale dune compétence, à lexclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700209,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iPYPgxL2uUnphStc","name":"Garder une main sur la tête","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.iPYPgxL2uUnphStc"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700212,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"j2xIrFWYqhDM4TcN","name":"Appeler les hommes «madame» et les femmes «messire»","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.j2xIrFWYqhDM4TcN"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jShpKV8mVcqWmYvp","name":"Se soûler (minimum pas frais)","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.jShpKV8mVcqWmYvp"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1673118700215,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"kHWwwxA0alcpDYpf","name":"Insomnie","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.kHWwwxA0alcpDYpf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":20,"hautrevant":false,"categorie":"","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1673118700213,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lBkO8FvFqXoKNhvk","name":"Conquête","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.lBkO8FvFqXoKNhvk"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Avant de pouvoir &agrave; nouveau faire usage du haut-r&ecirc;ve, y compris d&eacute;clencher volontairement un sort mis en r&eacute;serve, le haut-r&ecirc;vant doit se rendre dans une certaine case des TMR d&eacute;termin&eacute;e al&eacute;atoirement et la&nbsp;<em>ma&icirc;triser</em>, difficult&eacute; -7. Ce peut &ecirc;tre n&rsquo;importe quelle case, sauf une case humide. En cas d&rsquo;&eacute;chec, la concentration est rompue ; il n&rsquo;y a pas de souffle de Dragon en cas d&rsquo;&eacute;chec total.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"hautrevant":true,"categorie":"","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"mN0yghXkFfj2YctJ","name":"Construire une cabane","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.mN0yghXkFfj2YctJ"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1673118700210,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"sjXBBr85OBk4Yg4t","name":"Embrasser un cochon sur le groin","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/desir_lancinant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.sjXBBr85OBk4Yg4t"}},"system":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'exp&eacute;rience ne peut plus &ecirc;tre gagn&eacute; par l'exercice en cas de particuli&egrave;re et d'ajustement final n&eacute;gatif.<br />Les points d'exp&eacute;rience dus au stress ne sont pas affect&eacute;s.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"lancinant","refoulement":1,"duree":"","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"vft88ioHpGxMzdML","name":"Dépouillement","type":"queue","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.vft88ioHpGxMzdML"}},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"system":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder daucune dépense.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":20,"hautrevant":false,"categorie":"","refoulement":2,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"xa4t9Lbt6uLEjap6","name":"Faire le mort","type":"queue","img":"systems/foundryvtt-reve-de-dragon/icons/queues/idee_fixe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.queues-de-dragon.xa4t9Lbt6uLEjap6"}},"system":{"description":"<p>Prend effet imm&eacute;diatement et dure jusqu'&agrave; la <strong>fin de l'heure du Ch&acirc;teau Dormant </strong>du <strong>lendemain.<br /></strong>Si pass&eacute; ce d&eacute;lai, l'occasion de la manifester ne s'est pas pr&eacute;sent&eacute;e, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"ideefixe","refoulement":1,"duree":"jour","restant":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1673118700211,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}

View File

@@ -1,19 +1,19 @@
{"_id":"0wHV3netTtqjw280","name":"Mauvaises rencontres en perspective","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Tirer les d<sup>dr </sup>prochaines rencontres dans les TMR sur la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table sp&eacute;ciale de rencontres}</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246291440,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2FDRnIY6Os6JJ27j","name":"Je-m'en-foutisme","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de 1 niveau dans une compétence déterminée aléatoirement, autre quune compétence de combat ou quune connaissance.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246306342,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6xvkOytCrp5yDAOs","name":"Non-combativité","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de 1 niveau dans une compétence de combat, à déterminer aléatoirement.</p>","descriptionmj":"","frequence":4,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246213353,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"8B74cu17PCdqztke","name":"Impraticabilité des ponts","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, les ponts doivent être maîtrisés comme sils étaient des cases humides. Ils conservent néanmoins leur identité pour le lancer des sorts.</p>","descriptionmj":"","frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246317310,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"CVXptnnw75fLx4LK","name":"Queue de dragon perpétuelle","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Le personnage est atteint de 7 + d<sup>dr</sup> queues de Dragon, non pas simultanément, mais lune après lautre. Dès que la première prend fin, en tirer une autre; et ainsi de suite jusquà ce que toutes les queues aient été appliquées.</p>","descriptionmj":"","frequence":12,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246127241,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"GNZW6esJ2nCHjfyu","name":"Épuisement","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, chaque prise de fatigue est augmentée dun point. Chaque heure de marche coûte ainsi 1 point supplémentaire ; chaque round/case en TMR coûte 2 points, etc.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246352652,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HYsVo3LM53vAm8Y4","name":"Péage","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, traverser un pont ou pénétrer dans une cité coûte un point de rêve.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246188111,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"IYfK01ZdAkDZbUS9","name":"Paresse intellectuelle","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de 1 niveau dans une connaissance, à déterminer aléatoirement, y compris les voies de Draconic.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246201240,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"QcfOUgWT15BCLUvl","name":"Trou noir","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Une case spécifique à déterminer aléatoirement, autre quune case humide, disparaît définitivement de la carte des TMR du haut-rêvant. Le joueur est invité à la rayer à lencre noire, et pratiquement, elle nexiste plus pour son personnage. Si son demi-rêve y entre, considérer le fait comme une sortie de la carte et réinsérer aléatoirement. Si un sort sy trouvait en réserve, il est purement et simplement annulé.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246110622,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Su90PAG4Hea7qoej","name":"Désorientation","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, le haut-rêvant ne peut plus retrouver le chemin dun certain genre de case sur la carte des TMR. Pratiquement, le genre de case en question nexiste plus pour lui. Si son demi-rêve entre dans lune de ces cases, considérer le fait comme une sortie de la carte et réinsérer le demi-rêve aléatoirement. Les sorts en réserve sur ces cases ne sont pas annulés, ils redeviennent disponibles à réapparition des cases. Sil sagit des sanctuaires ou des nécropoles, il faut dabord attendre leur réapparition en cas de périple.</p>","descriptionmj":"","frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246374130,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YTMaARVXwdy4ssDF","name":"Sommeil sans rêve","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>On ne rêve plus pendant d<sup>dr</sup> jours, pas même dans les Hautes Terres pour la récupération du rêve.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246114672,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YiXBU7qBxR0OnkPS","name":"Débordement","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Une case des TMR à déterminer aléatoirement, autre quune case humide, devra dorénavant être maîtrisée à chaque fois comme si elle était précisément une case humide. Cette situation est définitive. La case conserve par ailleurs toute son identité pour le lancer des sorts.</p>","descriptionmj":"","frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246383573,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"aBiHdEMLWNZurX3v","name":"Fermeture des cités","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Les 22 cités ferment leurs portes au demi-rêve du haut-rêvant. Celui-ci ne peut plus les traverser ni y accomplir aucune magie tant quil ne les a pas reconquises. La conquête dune cité sobtient en réussissant <em>points actuels de rêve/Draconic à -9</em>, même règle que pour maîtriser les cases humides. Dès quune cité est conquise, elle redevient une case normale. On nest pas obligé de reconquérir toutes les cités. Si un Tourbillon abandonne le demi-rêve du haut-rêvant dans une cité, celui-ci doit aussitôt tenter de la conquérir. Même chose avec un Passeur ou un Changeur. Un Messager peut par contre entrer librement. Utiliser un Messager est la seule façon de lancer un sort depuis une cité non reconquise.</p>","descriptionmj":"","frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246327767,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cuopXCY54q3nTtBl","name":"Confusion draconique","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de la connaissance dun sort ou dun rituel, à déterminer aléatoirement. Le haut-rêvant peut le ré-apprendre par un jet normal de Synthèse, en ne dépensant que la moitié des points de sorts prévus. Les bonus de case dus à lusage sont perdus.</p>","descriptionmj":"","frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246393494,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"dArTQtFwTssAyl90","name":"Vieillissement instantané","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Le vieillissement est de 1d7 ans. Jouer un jet de Constitution ajusté négativement au nombre dannées perdues. En cas déchec, perte définitive dun point en Constitution.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246095709,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nI4sA12n6AdLNv5I","name":"Double résistance du fleuve","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, toute case de fleuve, lac ou marais doit être consécutivement maîtrisée deux fois. Si la seconde fois échoue, la concentration est rompue et il faut recommencer au début.</p>","descriptionmj":"","frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246366379,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yFZ6KkvVQVyCJLua","name":"Montée laborieuse","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, monter dans les TMR coûte 2 points de rêve au lieu dun, et le déplacement accéléré en coûte 3.</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246219963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yczTFUNwqyg0WhsQ","name":"Périple","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Impossibilité daccomplir aucune magie, sauf le déclenchement dun sort en réserve, tant que le demi-rêve nest pas allé se purifier dans chacun des 6 sanctuaires ou dans chacune des 8 nécropoles. Un Passeur ou un Changeur peut aider le haut-rêvant, mais un Messager ne peut y aller à sa place. À chaque fois, la purification sobtient en réussissant <em>points actuels de rêve/Draconic à -3</em> pour les sanctuaires ou <em>points actuels de rêve/Draconic à -5</em> pour les nécropoles. En cas déchec, même règle que pour maîtriser les cases humides. (Tirer 1d2 : 1 = Périple des sanctuaires ; 2 = Périple des nécropoles.)</p>","descriptionmj":"","frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246171126,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ykxvi2vohrZPidLK","name":"Perte dans une caractéristique","type":"souffle","flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>La perte est de 1d7 points et dure ddr jours. Au bout de ce délai, jouer un jet de la caractéristique concernée (originelle) avec une difficulté égale au nombre de points perdus. Réussite = la caractéristique remonte à sa hauteur originelle ; échec = elle remonte à sa hauteur originelle moins 1 point, lequel est définitivement perdu. Déterminer la caractéristique concernée avec 1d12.</p>\n<table style=\"width: 156px; float: left;\" border=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 35px;\">1</td>\n<td style=\"width: 114px;\">Apparence</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">2</td>\n<td style=\"width: 114px;\">Constitution</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">3</td>\n<td style=\"width: 114px;\">Force</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">4</td>\n<td style=\"width: 114px;\">Agilité</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">5</td>\n<td style=\"width: 114px;\">Dextérité</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">6</td>\n<td style=\"width: 114px;\">Vue</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">7</td>\n<td style=\"width: 114px;\">Ouïe</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">8</td>\n<td style=\"width: 114px;\">Odorat-Goût</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">9</td>\n<td style=\"width: 114px;\">Volonté</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">10</td>\n<td style=\"width: 114px;\">Intellect</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">11</td>\n<td style=\"width: 114px;\">Empathie</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">12</td>\n<td style=\"width: 114px;\">Rêve</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;</p>","descriptionmj":"","frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.9","coreVersion":"10.290","createdTime":null,"modifiedTime":1669246162970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"0wHV3netTtqjw280","name":"Mauvaises rencontres en perspective","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.0wHV3netTtqjw280"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Tirer les d<sup>dr </sup>prochaines rencontres dans les TMR sur la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table sp&eacute;ciale de rencontres}</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639379,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2FDRnIY6Os6JJ27j","name":"Je-m'en-foutisme","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.2FDRnIY6Os6JJ27j"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de 1 niveau dans une compétence déterminée aléatoirement, autre quune compétence de combat ou quune connaissance.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639379,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6xvkOytCrp5yDAOs","name":"Non-combativité","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.6xvkOytCrp5yDAOs"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de 1 niveau dans une compétence de combat, à déterminer aléatoirement.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":4,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639379,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"8B74cu17PCdqztke","name":"Impraticabilité des ponts","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.8B74cu17PCdqztke"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, les ponts doivent être maîtrisés comme sils étaient des cases humides. Ils conservent néanmoins leur identité pour le lancer des sorts.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"duree":"1ddr","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639379,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"CVXptnnw75fLx4LK","name":"Queue de dragon perpétuelle","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.CVXptnnw75fLx4LK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Le personnage est atteint de 7 + d<sup>dr</sup> queues de Dragon, non pas simultanément, mais lune après lautre. Dès que la première prend fin, en tirer une autre; et ainsi de suite jusquà ce que toutes les queues aient été appliquées.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":12,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639379,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"GNZW6esJ2nCHjfyu","name":"Épuisement","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.GNZW6esJ2nCHjfyu"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, chaque prise de fatigue est augmentée dun point. Chaque heure de marche coûte ainsi 1 point supplémentaire ; chaque round/case en TMR coûte 2 points, etc.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639379,"modifiedTime":1673118693559,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HYsVo3LM53vAm8Y4","name":"Péage","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.HYsVo3LM53vAm8Y4"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, traverser un pont ou pénétrer dans une cité coûte un point de rêve.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"1ddr","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"IYfK01ZdAkDZbUS9","name":"Paresse intellectuelle","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.IYfK01ZdAkDZbUS9"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de 1 niveau dans une connaissance, à déterminer aléatoirement, y compris les voies de Draconic.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"QcfOUgWT15BCLUvl","name":"Trou noir","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.QcfOUgWT15BCLUvl"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Une case spécifique à déterminer aléatoirement, autre quune case humide, disparaît définitivement de la carte des TMR du haut-rêvant. Le joueur est invité à la rayer à lencre noire, et pratiquement, elle nexiste plus pour son personnage. Si son demi-rêve y entre, considérer le fait comme une sortie de la carte et réinsérer aléatoirement. Si un sort sy trouvait en réserve, il est purement et simplement annulé.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693561,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Su90PAG4Hea7qoej","name":"Désorientation","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.Su90PAG4Hea7qoej"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, le haut-rêvant ne peut plus retrouver le chemin dun certain genre de case sur la carte des TMR. Pratiquement, le genre de case en question nexiste plus pour lui. Si son demi-rêve entre dans lune de ces cases, considérer le fait comme une sortie de la carte et réinsérer le demi-rêve aléatoirement. Les sorts en réserve sur ces cases ne sont pas annulés, ils redeviennent disponibles à réapparition des cases. Sil sagit des sanctuaires ou des nécropoles, il faut dabord attendre leur réapparition en cas de périple.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"duree":"1ddr","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693559,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YTMaARVXwdy4ssDF","name":"Sommeil sans rêve","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.YTMaARVXwdy4ssDF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>On ne rêve plus pendant d<sup>dr</sup> jours, pas même dans les Hautes Terres pour la récupération du rêve.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"1ddr","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693561,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YiXBU7qBxR0OnkPS","name":"Débordement","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.YiXBU7qBxR0OnkPS"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Une case des TMR à déterminer aléatoirement, autre quune case humide, devra dorénavant être maîtrisée à chaque fois comme si elle était précisément une case humide. Cette situation est définitive. La case conserve par ailleurs toute son identité pour le lancer des sorts.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693559,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"aBiHdEMLWNZurX3v","name":"Fermeture des cités","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.aBiHdEMLWNZurX3v"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Les 22 cités ferment leurs portes au demi-rêve du haut-rêvant. Celui-ci ne peut plus les traverser ni y accomplir aucune magie tant quil ne les a pas reconquises. La conquête dune cité sobtient en réussissant <em>points actuels de rêve/Draconic à -9</em>, même règle que pour maîtriser les cases humides. Dès quune cité est conquise, elle redevient une case normale. On nest pas obligé de reconquérir toutes les cités. Si un Tourbillon abandonne le demi-rêve du haut-rêvant dans une cité, celui-ci doit aussitôt tenter de la conquérir. Même chose avec un Passeur ou un Changeur. Un Messager peut par contre entrer librement. Utiliser un Messager est la seule façon de lancer un sort depuis une cité non reconquise.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693559,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cuopXCY54q3nTtBl","name":"Confusion draconique","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.cuopXCY54q3nTtBl"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Perte de la connaissance dun sort ou dun rituel, à déterminer aléatoirement. Le haut-rêvant peut le ré-apprendre par un jet normal de Synthèse, en ne dépensant que la moitié des points de sorts prévus. Les bonus de case dus à lusage sont perdus.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639380,"modifiedTime":1673118693559,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"dArTQtFwTssAyl90","name":"Vieillissement instantané","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.dArTQtFwTssAyl90"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Le vieillissement est de 1d7 ans. Jouer un jet de Constitution ajusté négativement au nombre dannées perdues. En cas déchec, perte définitive dun point en Constitution.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639381,"modifiedTime":1673118693561,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nI4sA12n6AdLNv5I","name":"Double résistance du fleuve","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.nI4sA12n6AdLNv5I"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, toute case de fleuve, lac ou marais doit être consécutivement maîtrisée deux fois. Si la seconde fois échoue, la concentration est rompue et il faut recommencer au début.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"duree":"1ddr","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639381,"modifiedTime":1673118693559,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yFZ6KkvVQVyCJLua","name":"Montée laborieuse","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.yFZ6KkvVQVyCJLua"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Pendant d<sup>dr</sup> jours, monter dans les TMR coûte 2 points de rêve au lieu dun, et le déplacement accéléré en coûte 3.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"1ddr","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639381,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yczTFUNwqyg0WhsQ","name":"Périple","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.yczTFUNwqyg0WhsQ"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>Impossibilité daccomplir aucune magie, sauf le déclenchement dun sort en réserve, tant que le demi-rêve nest pas allé se purifier dans chacun des 6 sanctuaires ou dans chacune des 8 nécropoles. Un Passeur ou un Changeur peut aider le haut-rêvant, mais un Messager ne peut y aller à sa place. À chaque fois, la purification sobtient en réussissant <em>points actuels de rêve/Draconic à -3</em> pour les sanctuaires ou <em>points actuels de rêve/Draconic à -5</em> pour les nécropoles. En cas déchec, même règle que pour maîtriser les cases humides. (Tirer 1d2 : 1 = Périple des sanctuaires ; 2 = Périple des nécropoles.)</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":true,"duree":"","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639381,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ykxvi2vohrZPidLK","name":"Perte dans une caractéristique","type":"souffle","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.souffles-de-dragon.ykxvi2vohrZPidLK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp","system":{"description":"<p>La perte est de 1d7 points et dure ddr jours. Au bout de ce délai, jouer un jet de la caractéristique concernée (originelle) avec une difficulté égale au nombre de points perdus. Réussite = la caractéristique remonte à sa hauteur originelle ; échec = elle remonte à sa hauteur originelle moins 1 point, lequel est définitivement perdu. Déterminer la caractéristique concernée avec 1d12.</p>\n<table style=\"width: 156px; float: left;\" border=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 35px;\">1</td>\n<td style=\"width: 114px;\">Apparence</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">2</td>\n<td style=\"width: 114px;\">Constitution</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">3</td>\n<td style=\"width: 114px;\">Force</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">4</td>\n<td style=\"width: 114px;\">Agilité</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">5</td>\n<td style=\"width: 114px;\">Dextérité</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">6</td>\n<td style=\"width: 114px;\">Vue</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">7</td>\n<td style=\"width: 114px;\">Ouïe</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">8</td>\n<td style=\"width: 114px;\">Odorat-Goût</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">9</td>\n<td style=\"width: 114px;\">Volonté</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">10</td>\n<td style=\"width: 114px;\">Intellect</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">11</td>\n<td style=\"width: 114px;\">Empathie</td>\n</tr>\n<tr>\n<td style=\"width: 35px;\">12</td>\n<td style=\"width: 114px;\">Rêve</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"hautrevant":false,"duree":"1ddr","restant":0,"refoulement":null},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"effects":[],"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.4.9","coreVersion":"10.291","createdTime":1673049639381,"modifiedTime":1673118693560,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}

View File

@@ -476,6 +476,12 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
border-width: 0;
border: 1px solid rgba(0, 0, 0, 0);
}
.img-signe-heure {
vertical-align: bottom;
max-width: 1.5em;
max-height: 1.5em;
border-width: 0;
}
.button-effect-img {
vertical-align: baseline;
max-width: 16px;
@@ -1152,6 +1158,8 @@ div.competence-column div.categorie-competence{
margin-left: 4px;
}
.sante-value,
.competence-carac,
.competence-damage,
.competence-value {
flex-grow: 0;
flex-basis: 2rem;
@@ -1607,21 +1615,13 @@ div.competence-column div.categorie-competence{
.calendar-btn-edit{
grid-row: 1;
grid-column: 1;
margin: auto;
color: rgba(0, 0, 0, 0.5);
}
.astrologie-btn-edit:hover,
.calendar-btn-edit:hover {
color: #FFF;
border: 0px solid #000;
cursor: pointer;
}
.calendar-btn{
margin: auto;
:is(.astrologie-btn-edit,.calendar-btn-edit,.calendar-btn){
margin: auto;
border: 1px solid rgba(0, 0, 0, 0);
color: rgba(255, 255, 255, 0.5);
}
.calendar-btn:hover {
:is(.astrologie-btn-edit,.calendar-btn-edit,.calendar-btn):hover {
color: var(--color-controls-hover);
border: 1px solid var(--color-control-border-hover);
cursor: pointer;
@@ -1897,6 +1897,7 @@ display: inline-flex;
{
font-family: CaslonAntique;
font-size: 2rem;
background: none;
}
#pause > h3
{

View File

@@ -1,8 +1,8 @@
{
"id": "foundryvtt-reve-de-dragon",
"title": "Rêve de Dragon",
"version": "10.4.5",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.4.5.zip",
"version": "10.5.0",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.5.0.zip",
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
"compatibility": {
"minimum": "10",

View File

@@ -1,6 +1,6 @@
{
"Actor": {
"types": ["personnage", "creature", "entite", "vehicule"],
"types": ["personnage", "creature", "entite", "commerce", "vehicule"],
"templates": {
"description": {
"description": "Description ...",
@@ -37,14 +37,14 @@
"equipage": 0,
"capacite_encombrement": 0,
"etat": {
"resistance" : {
"resistance": {
"type": "number",
"max": 20,
"value": 20,
"label": "Résistance",
"derivee": false
},
"structure":{
"structure": {
"type": "number",
"max": 10,
"value": 10,
@@ -90,7 +90,7 @@
"derivee": false
},
"resonnance": {
"actors" : []
"actors": []
}
},
"compteurs": {
@@ -462,18 +462,6 @@
"refoulement": {
"value": 0,
"label": "Points de Refoulement"
},
"queues": {
"list": []
},
"souffles": {
"list": []
},
"tetes": {
"list": []
},
"ombres": {
"list": []
}
},
"compteurs": {
@@ -544,16 +532,21 @@
}
},
"personnage": {
"templates": [ "personnage", "background", "subacteurs" ]
"templates": ["personnage", "background", "subacteurs"]
},
"creature": {
"templates": [ "creature", "description" ]
"templates": ["creature", "description"]
},
"entite": {
"templates": [ "entite", "description" ]
"templates": ["entite", "description"]
},
"vehicule": {
"templates": [ "vehicule", "description" ]
"templates": ["vehicule", "description"]
},
"commerce": {
"templates": ["description"],
"pourcentage": 100,
"illimite": false
}
},
"Item": {
@@ -572,6 +565,18 @@
"description": "",
"descriptionmj": ""
},
"temporel": {
"temporel": {
"debut": {
"indexDate": -1,
"indexMinute": 0
},
"fin": {
"indexDate": -1,
"indexMinute": 0
}
}
},
"equipement": {
"equipe": false
},
@@ -579,7 +584,7 @@
"encombrement": 0,
"quantite": 1,
"qualite": 0,
"cout": 0
"cout": 0.0
},
"environnement": {
"milieu": "",
@@ -587,11 +592,11 @@
},
"comestible": {
"sust": 0,
"exotisme": 0
"exotisme": 0
}
},
"competence": {
"templates": [ "description" ],
"templates": ["description"],
"niveau": 0,
"default_diffLibre": 0,
"base": 0,
@@ -602,7 +607,7 @@
"xp_sort": 0
},
"competencecreature": {
"templates": [ "description" ],
"templates": ["description"],
"categorie_parade": "",
"niveau": 0,
"default_diffLibre": 0,
@@ -614,7 +619,7 @@
"dommages": 0
},
"possession": {
"templates": [ "description" ],
"templates": ["description"],
"typepossession": "",
"possede": false,
"possessionid": "",
@@ -624,26 +629,34 @@
"date": 0
},
"maladie": {
"templates": [ "description" ],
"templates": ["description", "temporel"],
"identifie": false,
"malignite": 0,
"periodicite": "",
"incubation": "",
"periode": {
"unite": "",
"nombre": 0
},
"remedesconnus": false,
"remedes": "",
"dommages":""
"dommages": ""
},
"poison": {
"templates": [ "description" ],
"templates": ["description", "temporel"],
"identifie": false,
"malignite": 0,
"periodicite": "",
"incubation": "",
"periode": {
"unite": "",
"nombre": 0
},
"remedesconnus": false,
"remedes": "",
"dommages":"",
"dommages": "",
"active": false
},
"arme": {
"templates": [ "description", "equipement", "inventaire" ],
"templates": ["description", "equipement", "inventaire"],
"resistance": 0,
"categorie_parade": "",
"dommages": "0",
@@ -664,24 +677,24 @@
"initpremierround": ""
},
"armure": {
"templates": [ "description", "equipement", "inventaire" ],
"templates": ["description", "equipement", "inventaire"],
"protection": 0,
"deterioration": 0,
"malus": 0
},
"conteneur": {
"templates": [ "description", "inventaire" ],
"templates": ["description", "inventaire"],
"contenu": [],
"capacite": 0
},
"objet": {
"templates": [ "description", "inventaire"]
"templates": ["description", "inventaire"]
},
"monnaie": {
"templates": [ "description", "inventaire" ]
"templates": ["description", "inventaire"]
},
"gemme": {
"templates": [ "description", "inventaire" ],
"templates": ["description", "inventaire"],
"type": "",
"taille": 0,
"purete": 0,
@@ -689,10 +702,10 @@
"enchantabilite": 0
},
"munition": {
"templates": [ "description", "inventaire" ]
"templates": ["description", "inventaire"]
},
"nourritureboisson": {
"templates": [ "description", "inventaire", "comestible"],
"templates": ["description", "inventaire", "comestible"],
"cuisinier": "",
"boisson": false,
"desaltere": 0,
@@ -700,19 +713,19 @@
"force": 0
},
"herbe": {
"templates": [ "description", "inventaire", "environnement"],
"templates": ["description", "inventaire", "environnement", "comestible"],
"niveau": 0,
"base": 0,
"categorie": ""
},
"ingredient": {
"templates": [ "description", "inventaire", "environnement", "comestible"],
"templates": ["description", "inventaire", "environnement", "comestible"],
"niveau": 0,
"base": 0,
"categorie": ""
},
"faune": {
"templates": [ "description", "inventaire", "environnement", "comestible"],
"templates": ["description", "inventaire", "environnement", "comestible"],
"categorie": "",
"actor": {
"id": "",
@@ -721,7 +734,7 @@
}
},
"livre": {
"templates": [ "description", "inventaire" ],
"templates": ["description", "inventaire"],
"competence": "",
"auteur": "",
"difficulte": 0,
@@ -731,7 +744,7 @@
"niveau_maximum": 0
},
"potion": {
"templates": [ "description", "inventaire" ],
"templates": ["description", "inventaire", "temporel"],
"rarete": "",
"categorie": "",
"herbe": "",
@@ -743,18 +756,16 @@
"prdate": 0
},
"service": {
"templates": [ "description"],
"illimite": false,
"items": [],
"services": []
"templates": ["description", "inventaire"],
"moral": false
},
"musique": {
"templates": [ "description" ],
"templates": ["description"],
"niveau": "",
"reference": ""
},
"danse": {
"templates": [ "description" ],
"templates": ["description"],
"type": "",
"agilite": false,
"apparence": false,
@@ -762,19 +773,19 @@
"reference": ""
},
"chant": {
"templates": [ "description" ],
"templates": ["description"],
"niveau": "",
"reference": ""
},
"jeu": {
"templates": [ "description" ],
"templates": ["description"],
"type": "",
"base": "",
"caraccomp": "",
"reference": ""
},
"recettecuisine": {
"templates": [ "description" ],
"templates": ["description"],
"niveau": "",
"ingredients": "",
"duree": "",
@@ -783,14 +794,14 @@
"reference": ""
},
"oeuvre": {
"templates": [ "description" ],
"templates": ["description"],
"default_carac": "",
"competence": "",
"niveau": 0,
"reference": ""
},
"recettealchimique": {
"templates": [ "description" ],
"templates": ["description"],
"but": "",
"utilisation": "",
"enchantement": "",
@@ -798,7 +809,7 @@
"manipulation": ""
},
"tache": {
"templates": [ "description" ],
"templates": ["description"],
"carac": "",
"competence": "",
"periodicite": "",
@@ -811,7 +822,7 @@
"cacher_points_de_tache": false
},
"sort": {
"templates": [ "description" ],
"templates": ["description"],
"draconic": "",
"duree": "",
"JR": "",
@@ -827,7 +838,7 @@
"coutseuil": 0
},
"sortreserve": {
"sortid" : "",
"sortid": "",
"draconic": "",
"coord": "",
"ptreve": 0,
@@ -835,7 +846,7 @@
"echectotal": false
},
"rencontre": {
"templates": [ "description" ],
"templates": ["description", "temporel"],
"genre": "f",
"formule": "2d4",
"refoulement": 1,
@@ -850,7 +861,7 @@
"effets": [],
"message": "",
"poesie": "",
"reference":""
"reference": ""
},
"echec": {
"effets": [],
@@ -877,45 +888,45 @@
}
},
"queue": {
"templates": [ "description" ],
"templates": ["description", "temporel"],
"frequence": 0,
"hautrevant": false,
"categorie": "",
"refoulement": 0,
"duree": "",
"restant" : 0
"restant": 0
},
"ombre": {
"templates": [ "description" ],
"templates": ["description", "temporel"],
"frequence": 0,
"hautrevant": false,
"categorie": "false",
"refoulement": 2,
"duree": "",
"restant" : 0
"restant": 0
},
"souffle": {
"templates": [ "description" ],
"templates": ["description", "temporel"],
"frequence": 0,
"hautrevant": false,
"duree": "",
"restant" : 0
"restant": 0
},
"tete": {
"templates": [ "description" ],
"templates": ["description"],
"frequence": 0,
"hautrevant": false
},
"casetmr": {
"templates": [ "description" ],
"templates": ["description"],
"coord": "",
"type": "",
"label": "",
"specific": "",
"sourceid":""
"sourceid": ""
},
"meditation": {
"templates": [ "description" ],
"templates": ["description"],
"competence": "",
"theme": "",
"support": "",
@@ -924,10 +935,10 @@
"veture": "",
"comportement": "",
"tmr": "",
"malus" : 0
"malus": 0
},
"signedraconique": {
"templates": [ "description" ],
"templates": ["description", "temporel"],
"typesTMR": [],
"ephemere": true,
"duree": "1 round",
@@ -939,9 +950,9 @@
}
},
"tarot": {
"templates": [ "description" ],
"concept":"",
"aspect":"",
"templates": ["description"],
"concept": "",
"aspect": "",
"frequence": 1
},
"nombreastral": {

View File

@@ -189,7 +189,7 @@
<article class="flexcol">
<h3>Biographie : </h3>
<div class="form-group large-editor">
{{editor biographie target="system.biographie" button=true owner=owner editable=true engine="prosemirror"}}
{{editor biographie target="system.biographie" button=true owner=options.owner editable=true engine="prosemirror"}}
</div>
<h3>Notes : </h3>
<div class="form-group large-editor">

View File

@@ -24,9 +24,9 @@
</li>
<li class="caracteristique flexrow list-item">
<label class="derivee-label">{{system.compteurs.exaltation.label}}</label>
<input class="derivee-value" type="text" name="{{system.compteurs.exaltation.value}}" value="{{system.compteurs.exaltation.value}}" data-dtype="number"/>
<input class="derivee-value" type="text" name="system.compteurs.exaltation.value" value="{{system.compteurs.exaltation.value}}" data-dtype="number"/>
<label class="derivee-label">{{system.compteurs.dissolution.label}}</label>
<input class="derivee-value" type="text" name="{{system.compteurs.dissolution.value}}" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/>
<input class="derivee-value" type="text" name="system.compteurs.dissolution.value" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/>
</li>
<li class="caracteristique flexrow list-item">
<label class="derivee-label chance-actuelle"><a>Chance actuelle</a></label>

View File

@@ -1,4 +1,3 @@
{{log 'entitee.system' system}}
<ol class="carac-list alterne-list">
<li class="caracteristique flexrow list-item">
<span class="carac-label" name="catEntite">Catégorie : </span>

View File

@@ -0,0 +1,79 @@
<form class="{{cssClass}}" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="header-fields">
<div class="flexrow">
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
<div class="flexcol">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
{{#if @root.options.isObserver}}
<div class="form-group">
<input {{@root.disabled}} class="attribute-value" type="checkbox" name="system.illimite" {{#if system.illimite}}checked{{/if}}/>
<label for="system.illimite">Quantité illimitée en vente</label>
</div>
<div class="form-group">
<span>
<label for="system.pourcentage">Appliquer un pourcentage sur les prix</label>
<input {{@root.disabled}} class="attribute-value" type="number" data-dtype="Number"
name="system.pourcentage" value="{{system.pourcentage}}"
min="20" max="500" step="5"/>
</span>
</div>
{{/if}}
</div>
</div>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="flexcol form-group medium-editor">
{{editor description target="system.description" button=true owner=options.owner editable=options.isOwner engine="prosemirror"}}
</div>
<hr>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.html"}}
{{#unless system.illimite}}
{{#if @root.options.isObserver}}
<hr>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-monnaie.html"}}
{{/if}}
{{/unless}}
{{!--
<br>
<div class="flexcol">
<ul class="item-list alterne-list">
<li class="item flexrow list-item">
<label class="flex-grow">Service</label>
<label>Moral</label>
<label>Qualité</label>
<label>Prix (sols)</label>
<label>
{{#unless disabled}}
<a class="service-add"><i class="fas fa-plus-circle"></i></a>
{{/unless}}
</label>
</li>
{{#each system.services as |service key|}}
<li class="item flexrow list-item" data-key="{{key}}">
<input {{@root.disabled}} type="text" name="services[{{key}}].name" value="{{service.name}}" data-dtype="String" />
<input {{@root.disabled}} type="checkbox" name="services[{{key}}].system.moral" {{#if service.system.moral}}checked{{/if}} />
<input {{@root.disabled}} type="number" name="services[{{key}}].system.qualite" value="{{service.system.qualite}}" data-dtype="Number" min="-10" max="10"/>
<input {{@root.disabled}} type="number" class="input-prix" name="services[{{key}}].system.cout" value="{{numberFormat service.system.cout decimals=2 sign=false}}" data-dtype="Number" min="0" />
<div class="item-controls">
<a class="service-acheter" title="Acheter"><i class="fa-sharp fa-solid fa-coins"></i></a>
{{#unless @root.disabled}}
<a class="service-vendre" title="Proposer"><i class="fas fa-comments-dollar"></i></a>
<a class="service-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
{{/unless}}
</div>
</li>
{{/each}}
</ul>
</div>
--}}
<br>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/editor-notes-mj.html"}}
<br>
</section>
</form>

View File

@@ -0,0 +1,59 @@
{{#if (ne item.type 'monnaie')}}
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true">
<span class="equipement-nom {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} ">
<a{{#if (and (ne item.type 'conteneur') options.isObserver)}} class="item-edit"{{/if}} >
{{#if (eq item.type 'conteneur')}}
<i class="{{~#if vide}}far fa-square
{{else if ouvert}}far fa-minus-square
{{else}}far fa-plus-square
{{/if~}}"></i>
{{/if}}
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
<span>{{item.name}}</span>
</a>
</span>
{{#unless item.parent.system.illimite}}
<span class="equipement-detail flexrow">
{{#unless (or (eq item.type 'service') (and (eq item.type 'conteneur') (not vide)))}}
{{#if options.isOwner}}
<a class="item-quantite-moins"><i class="fas fa-minus-square"></i></a>
{{/if}}
<input {{#unless options.isOwner}}disabled{{/unless}} type="number" data-dtype="Number"
class="item-quantite" name="items[{{item._id}}].system.quantite"
value="{{item.system.quantite}}" />
{{#if options.isOwner}}
<a class="item-quantite-plus"><i class="fas fa-plus-square"></i></a>
{{/if}}
{{/unless}}
</span>
{{/unless}}
<span class="equipement-detail">
{{#unless (and (eq item.type 'conteneur') (not vide))}}
<input {{#unless options.isOwner}}disabled{{/unless}} type="number" data-dtype="Number"
class="input-prix number-x3 item-cout" name="items[{{item._id}}].system.cout"
{{#if options.isObserver}}
value="{{numberFormat item.system.cout decimals=2 sign=false}}"
{{else}}
value="{{numberFormat (calculerPrixCommercant item) decimals=2 sign=false}}"
{{/if}} />
{{/unless}}
</span>
<span class="equipement-actions item-controls">
{{#if options.isOwner}}
<a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
{{#unless (and (eq item.type 'conteneur') (not vide))}}
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
{{#if (or item.parent.system.illimite (ne item.system.quantite 0))}}
<a class="item-vendre" title="Vendre"><i class="fas fa-comments-dollar"></i></a>
{{/if}}
{{/unless}}
{{/if}}
{{#unless (and (eq item.type 'conteneur') (not vide))}}
{{#if (or item.parent.system.illimite (gt item.system.quantite 0))}}
<a class="item-acheter" title="Acheter"><i class="fa-regular fa-coins"></i></a>
{{/if}}
<a class="item-montrer" title="Montrer"><i class="fas fa-comment"></i></a>
{{/unless}}
</span>
</li>
{{/if}}

View File

@@ -0,0 +1,36 @@
<h4>Boutique</h4>
<span class="item-name">
{{#if options.isGM}}
<a class="chat-card-button creer-un-objet">Nouvel objet</a>
<a class="chat-card-button nettoyer-conteneurs">Tout vider</a>
{{/if}}
{{#unless system.illimite}}
{{#if calc.surEncombrementMessage}}<b>{{calc.surEncombrementMessage}}</b> &hyphen;{{/if}}
Encombrement: {{numberFormat calc.encTotal decimals=2}}
{{#if (regle-optionnelle 'afficher-prix-joueurs')}}
&hyphen; Valeur: {{numberFormat calc.prixTotalEquipement decimals=2}} Sols
{{/if}}
{{/unless}}
</span>
<ul class="item-list alterne-list">
<li class="competence-header flexrow">
<span class="equipement-nom">Nom</span>
{{#unless system.illimite}}
<span class="equipement-detail">Quantité</span>
{{/unless}}
<span class="equipement-detail">Prix (sols)</span>
<span class="equipement-actions">Actions</span>
</li>
{{#each objets as |item id|}}
{{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}}
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.html"
item=item vide=true ouvert=true options=../options}}
{{/if}}
{{/unless}}
{{/each}}
{{#each conteneurs as |conteneur id|}}
{{buildConteneur conteneur 'actor/commerce-inventaire-item.html' ../options}}
{{/each}}
</ul>

View File

@@ -6,13 +6,13 @@
<span>{{comp.name}}</span>
</a>
<input class="competence-value creature-carac" type="text" compname="{{comp.name}}"
<input class="competence-carac" type="text" compname="{{comp.name}}" name="{{comp._id}}.carac"
value="{{comp.system.carac_value}}" data-dtype="number"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
<input class="competence-value creature-niveau" type="text" compname="{{comp.name}}"
<input class="competence-value creature-niveau" type="text" compname="{{comp.name}}" name="{{comp._id}}.niveau"
value="{{numberFormat comp.system.niveau decimals=0 sign=true}}" data-dtype="number"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
<input class="competence-value creature-dommages" type="text" compname="{{comp.name}}"
<input class="competence-damage creature-dommages" type="text" compname="{{comp.name}}" name="{{comp._id}}.dommages"
value="{{numberFormat comp.system.dommages decimals=0 sign=true}}" data-dtype="number"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
{{#if @root.options.vueDetaillee}}

View File

@@ -20,11 +20,11 @@
{{#each objets as |item id|}}
{{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}}
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-item.html" item=item vide=true ouvert=true }}
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-item.html" item=item vide=true ouvert=true options=@root.options}}
{{/if}}
{{/unless}}
{{/each}}
{{#each conteneurs as |conteneur id|}}
{{buildConteneur this}}
{{buildConteneur this 'actor/inventaire-item.html' @root.options}}
{{/each}}
</ul>

View File

@@ -0,0 +1,56 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<div class="header-fields">
<h1 class="charname">Horoscope</h1>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="form-group">
<table class='table-nombres-astraux'>
<tr class='table-nombres-astraux-td'>
<th>Date</th>
{{#each astrologieData as |nombreData key|}}
<td class='table-nombres-astraux-td'>{{nombreData.date.jour}}{{timestamp-imgSigneHeure nombreData.date.mois}}</td>
{{/each}}
</tr>
<tr class='table-nombres-astraux-td'>
<th>Nombre astral</th>
{{#each astrologieData as |nombreData key|}}
<td class='table-nombres-astraux-td'>
<ol>
<b>{{nombreData.nombreAstral}}</b>
{{#each nombreData.valeursFausses as |fausseVal key|}}
<li>{{fausseVal.actorName}} - {{fausseVal.nombreAstral}}</li>
{{/each}}
</ol>
</td>
{{/each}}
</tr>
</table>
</div>
<div>
<table>
<tr>
<td></td>
<td><strong>+4</strong></td>
<td><strong>+2</strong></td>
<td><strong>-2</strong></td>
<td><strong>-4</strong></td>
</tr>
{{#each heuresParActeur as |heuresDef name|}}
<tr>
<td><strong>{{name}}</strong>:</td>
{{#each heuresDef as |ajustement|}}
<td>
{{#each ajustement.heures as |heure|}}
{{timestamp-imgSigneHeure heure}}
{{/each}}
</td>
{{/each}}
</tr>
{{/each}}
</table>
</div>
</section>
</form>

View File

@@ -4,47 +4,50 @@
<h1 class="charname">Horoscope</h1>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="form-group">
<table class='table-nombres-astraux'>
<tr class='table-nombres-astraux-td'>
<th>Date</th>
{{#each astrologieData as |nombreData key|}}
<td class='table-nombres-astraux-td'>{{nombreData.humanDate}}</td>
<td class='table-nombres-astraux-td'>{{nombreData.date.jour}}{{timestamp-imgSigneHeure nombreData.date.mois}}</td>
{{/each}}
</tr>
<tr class='table-nombres-astraux-td'>
<th>Nombre astral</th>
{{#each astrologieData as |nombreData key|}}
<td class='table-nombres-astraux-td'>
<ol>
<b>{{nombreData.nombreAstral}}</b>
{{#each nombreData.valeursFausses as |fausseVal key|}}
<li>{{fausseVal.actorName}} - {{fausseVal.nombreAstral}}</li>
{{/each}}
{{/each}}
</ol>
</td>
{{/each}}
</tr>
</table>
</table>
</div>
<div>
<ul>
<ul class="alterne-list">
{{#each heuresParActeur as |heuresDef name|}}
<li><strong>{{name}} </strong></li>
<ul class="list-item-margin1">
{{#each heuresDef as |heure idx|}}
<li><strong>{{heure.value}}</strong> :
{{#each heure.heures as |heureName idx|}}
{{heureName}}&nbsp;
<li class="list-item flexrow">
<span><strong>{{name}}</strong>:</span>
<span class="flex-grow-2">
|{{#each heuresDef as |ajustement|}}
<span>
<strong>{{ajustement.ajustement}}</strong>
{{#each ajustement.heures as |heure|}}
{{timestamp-imgSigneHeure heure}}
{{/each}}
|
</span>
{{/each}}
</li>
{{/each}}
</ul>
</span>
</li>
{{/each}}
</ul>
</div>
</section>
</form>

View File

@@ -8,45 +8,12 @@
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="form-group">
<label for="annee">Année</label>
<input type="text" name="annee" value="{{annee}}" data-dtype="Number" min="0"/>
</div>
<div class="form-group">
<label for="mois">Mois</label>
<select name="nomMois" data-dtype="String">
{{#select nomMois}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
</div>
<div class="form-group">
<label for="jour">Jour du mois </label>
<select name="jourMois" data-dtype="String">
{{#select jourMois}}
{{#each jourMoisOptions as |key|}}
<option value={{key}}>{{numberFormat key decimals=0}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="form-group">
<label for="heure">Heure Draconique</label>
<select name="nomHeure" data-dtype="String">
{{#select nomHeure}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
</div>
<div class="form-group">
<label for="minutesRelative">Minutes</label>
<select name="minutesRelative" data-dtype="String">
{{#select minutesRelative}}
{{#each minutesOptions as |key|}}
<option value={{key}}>{{numberFormat key decimals=0}}</option>
{{/each}}
{{/select}}
</select>
{{>"systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs"
(timestamp-extract timestamp)
path='calendar'
label='Date courante'
disabled=''
}}
</div>
</section>
</form>

View File

@@ -1,11 +1,11 @@
<div id="calendar-time-container">
<div class="calendar">
{{#if isGM}}
<i class="calendar-btn calendar-btn-edit fas fa-cog" title="Editer"></i>
<i class="calendar-btn astrologie-btn-edit fas fa-cog" title="Astrologie"></i>
<i class="calendar-btn-edit fas fa-cog" title="Editer"></i>
<i class="astrologie-btn-edit fas fa-cog" title="Astrologie"></i>
{{/if}}
<div class="calendar-hdr">
<p id="calendar-move-handle" class="calendar-date-rdd" title="Deplacer">Jour {{jourMois}} de {{nomMois}} ({{nomSaison}})</p>
<p id="calendar-move-handle" class="calendar-date-rdd" title="Deplacer">{{jourDuMois}} {{mois.label}} ({{mois.saison}})</p>
</div>
<div class="calendar-container">
{{#if isGM}}
@@ -20,15 +20,12 @@
</div>
{{/if}}
<div class="calendar-weekday-time">
{{#if isGM}}
<a class="ajout-chronologie calendar-weekday">
<img class="calendar-heure-img" src="{{iconHeure}}" alt="{{nomHeure}}"/>&nbsp;<span class="calendar-heure-texte">{{nomHeure}}</span>
</a>
<p class="calendar-time-disp calendar-time isGM">{{minutesRelative}} minutes</p>
{{else}}
<a class="ajout-chronologie">
<img class="calendar-heure-img" src="{{iconHeure}}" alt="{{nomHeure}}"/>&nbsp;<span class="calendar-heure-texte">{{nomHeure}}</span>
<img class="calendar-heure-img" src="{{heure.icon}}" alt="{{nomHeure}}"/>&nbsp;
<span class="calendar-heure-texte">{{heure.label}}</span>
</a>
{{#if isGM}}
<p class="calendar-time-disp calendar-time isGM">{{minute}} minutes</p>
{{/if}}
</div>
{{#if isGM}}

View File

@@ -19,7 +19,7 @@
{{/if}}
{{#if (ne prixLot 0)}}
<span><strong>Prix {{#if (gt tailleLot 1)}}du lot {{else}}unitaire{{/if}}:
<span class="prixLot">{{prixLot}}</span> Sols</strong></span><br>
<span class="prixLot">{{numberFormat prixLot decimals=2 sign=false}}</span> Sols</strong></span><br>
{{/if}}
</p>
{{#if (or (gt quantiteNbLots 0) quantiteIllimite)}}

View File

@@ -1,4 +1,4 @@
<h2>{{dateRdD.jour}} {{signeHeure 'label' dateRdD.moisRdD}}, an {{dateRdD.annee}} à l'heure de {{signeHeure 'label' heureRdD}}</h2>
<h2>{{dateRdD.jour}} {{dateRdD.mois.label}} {{dateRdD.annee}}, à l'heure de {{dateRdD.heure.label}}</h2>
<p>{{information}}</p>
<p class="poesie-reference">Par {{auteur}} ({{dateReel}})</p>
<hr>

View File

@@ -0,0 +1,3 @@
{{#each (timestamp-formulesDuree) as |duree|}}
<option value="{{duree.code}}">{{duree.label}}</option>
{{/each}}

View File

@@ -0,0 +1,9 @@
<label for="{{path}}.nombre">{{label}}</label>
<div class="flexrow">
<input type="number" name="{{path}}.nombre" value="{{nombre}}" data-dtype="Number"/>
<select name="{{path}}.unite" data-dtype="String" >
{{#select unite}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-periode.html"}}
{{/select}}
</select>
</div>

View File

@@ -0,0 +1,28 @@
<div class="flexcol">
<div class="flexrow">
<label>{{label}}</label>
<input {{#if disabled}}{{disabled}}{{/if}}
class="flex-shrink number-x2"
type="number" data-dtype="Number" min="1" max="28"
name="{{path}}.jourDuMois" value="{{jourDuMois}}" />
<select {{#if disabled}}{{disabled}}{{/if}} name="{{path}}.mois" class="flex-shrink" data-dtype="String">
{{#select mois.key}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
{{timestamp-imgSigne mois}}
<input {{#if disabled}}{{disabled}}{{/if}} type="number" class="number-x2" name="{{path}}.annee" value="{{annee}}" data-dtype="Number"/>
</div>
<div class="flexrow">
<label></label>
<label>à l'heure de</label>
<select {{#if disabled}}{{disabled}}{{/if}} name="{{path}}.heure" class="flex-shrink" data-dtype="String">
{{#select heure.key}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
{{timestamp-imgSigne heure}}
<input {{#if disabled}}{{disabled}}{{/if}} type="number" class="number-x2" name="{{path}}.minute" value="{{minute}}" data-dtype="Number"/>
<label>minutes</label>
</div>
</div>

View File

@@ -9,24 +9,12 @@
<textarea autocomplete="off" title="Information" name="information">{{information}}</textarea>
</div>
<div class="form-group">
<label for="heureRdD">Heure</label>
<select type="text" name="heureRdD" value="{{heureRdD}}" data-dtype="String" />
{{#select heureRdD}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
</div>
<div class="form-group">
<label for="jourRdD">Date en jeu</label>
<span class="flexrow">
<input type="text" name="jourRdD" value="{{jourRdD}}" data-dtype="Number" min="1" max="28"/>
<select type="text" name="dateRdD.moisRdD.key" value="{{dateRdD.moisRdD.key}}" data-dtype="String" >
{{#select dateRdD.moisRdD.key}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
<input type="text" name="dateRdD.annee" value="{{dateRdD.annee}}" data-dtype="Number" />
</span>
{{>"systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs"
(timestamp-extract timestamp)
path='chronologie'
label='Date en jeu'
disabled=''
}}
</div>
<div class="form-group">
<label for="dateReel">Date réelle</label>

View File

@@ -2,9 +2,7 @@
<div>
<div class="flexrow flex-center">
<div>
{{#if service}}
<img class="chat-icon" src="{{service.img}}" title="{{service.name}}" alt="{{service.name}}" />
{{else if vendeur}}
{{#if vendeur}}
<img class="chat-icon" src="{{vendeur.img}}" title="{{vendeur.name}}" alt="{{vendeur.name}}" />
{{else}}
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon_echoppe.webp" title="Un commerçant" alt="Vendeur MJ" />
@@ -85,12 +83,12 @@
{{#if isVente}}
<div class="flexrow flex-group-left">
<label>Prix {{#if (gt tailleLot 1)}}du lot{{else}}unitaire{{/if}}</label>
<label>{{prixLot}} Sols</label>
<label>{{numberFormat prixLot decimals=2 sign=false}} Sols</label>
</div>
<div class="flexrow flex-group-left">
<label>Prix total</label>
<span>
<span class="prixTotal">{{prixTotal}}</span>
<span class="prixTotal">{{numberFormat prixTotal decimals=2 sign=false}}</span>
Sols
</span>
</div>

View File

@@ -2,19 +2,21 @@
<img class="chat-icon" src="{{item.img}}" title="{{item.name}}" alt="{{item.name}}" />
<h4>{{item.name}}</h4>
<div class="flexcol">
{{#if isOwned}}
<div class="flexrow flex-group-left">
{{#if quantiteIllimite}}
<label>Quantité illimitée</label>
{{else}}
<label>Quantité disponible</label>
<label>{{quantiteMax}}</label>
{{/if}}
</div>
{{/if}}
<div class="flexrow flex-group-left">
<label>Nombre de lots</label>
<div class="flexrow">
{{#unless isOwned}}
<input name="quantiteIllimite" class="quantiteIllimite flex-shrink" type="checkbox" {{#if
quantiteIllimite}}checked{{/if}} />
<label class="label-quantiteIllimite flex-shrink">Illimités</label>
<label class="label-quantiteIllimite flex-shrink">disponibles</label>
{{/unless}}
<input name="quantiteNbLots" class="quantiteNbLots flex-shrink number-x2" type="number" min="1"
max="{{quantiteMaxLots}}" value="{{quantiteNbLots}}" data-dtype="Number" />
@@ -22,17 +24,19 @@
</div>
<div class="flexrow flex-group-left">
<label for="tailleLot">Taille d'un lot</label>
<input name="tailleLot" class="tailleLot flex-shrink number-x2" type="number" min="1"
max="{{quantiteMax}}" value="{{tailleLot}}" data-dtype="Number" />
<span class="flexrow">
<input name="tailleLot" class="tailleLot flex-shrink number-x2" type="number" min="1"
max="{{quantiteMax}}" value="{{tailleLot}}" data-dtype="Number" />
</span>
</div>
<div class="flexrow flex-group-left">
<label>Valeur unitaire</label>
<label>{{prixOrigine}} Sols</label>
<label>Prix unitaire</label>
<label>{{numberFormat prixOrigine decimals=2 sign=false}} Sols</label>
</div>
<div class="flexrow flex-group-left">
<label for="prixLot">Prix du lot</label>
<span class="flexrow">
<input name="prixLot" class="prixLot flex-shrink" type="number" value="{{prixLot}}"
<input name="prixLot" class="prixLot flex-shrink number-x3" type="number" value="{{numberFormat prixLot decimals=2 sign=false}}"
data-dtype="Number" />
<label>Sols</label>
</span>

View File

@@ -0,0 +1,9 @@
<option value=""></option>
<option value="hn">Fin de l'Heure de Naissance</option>
<option value="1h">Une heure</option>
<option value="12h">12 heures</option>
<option value="chateaudormant">Fin Chateau dormant</option>
<option value="12chateau">12 heures après Chateau Dormant</option>
<option value="1ddr">Un dé draconique jours</option>
<option value="special">Spéciale</option>

View File

@@ -1,11 +0,0 @@
<option value="Fausse Suppure">Fausse Suppure (Bonus 1, Brins : 11)</option>
<option value="Suppure">Suppure (Bonus 2, Brins : 10)</option>
<option value="Méritoine">Méritoine (Bonus 3, Brins : 9)</option>
<option value="Ortigal">Ortigal (Bonus 4, Brins : 8)</option>
<option value="Ortigal Noir">Ortigal Noir (Bonus 5, Brins : 7)</option>
<option value="Bélidane">Bélidane (Bonus 6, Brins : 6)</option>
<option value="Faux Murus">Faux Murus (Bonus 7, Brins : 5)</option>
<option value="Murus">Murus (Bonus 8, Brins : 4)</option>
<option value="Tanemiel">Tanemiel (Bonus 9, Brins : 3)</option>
<option value="Tanemiel Doré">Tanemiel Doré (Bonus 10, Brins : 2)</option>
<option value="Autre">Autre</option>

View File

@@ -0,0 +1,3 @@
{{#each (timestamp-formulesPeriode) as |periode|}}
<option value="{{periode.code}}">{{periode.label}}</option>
{{/each}}

View File

@@ -14,35 +14,40 @@
<section class="sheet-body">
{{#if (or isGM system.identifie)}}
<div class="form-group">
<label for="xp">Identifiée ? </label>
<label for="system.identifie">Identifiée ? </label>
<input class="attribute-value" type="checkbox" name="system.identifie" {{#if system.identifie}}checked{{/if}}/>
</div>
<div class="form-group">
<label for="xp">Malignité </label>
<label for="system.malignite">Malignité </label>
<input class="attribute-value" type="text" name="system.malignite" value="{{system.malignite}}" data-dtype="Number"/>
</div>
<div class="form-group">
<label for="xp">Périodicité</label>
<input class="attribute-value" type="text" name="system.periodicite" value="{{system.periodicite}}" data-dtype="String"/>
<label for="system.incubation">Incubation</label>
<input class="attribute-value" type="text" name="system.incubation" value="{{system.incubation}}" data-dtype="String"/>
</div>
<div class="form-group">
<label for="xp">Dommages</label>
{{>"systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs" system.periode path='system.periode' label='Périodicité'}}
</div>
<div class="form-group">
<label for="system.dommages">Dommages</label>
<input class="attribute-value" type="text" name="system.dommages" value="{{system.dommages}}" data-dtype="String"/>
</div>
<div class="form-group">
<label for="xp">Remedes Connus ? </label>
<label for="system.remedesconnus">Remedes Connus ? </label>
<input class="attribute-value" type="checkbox" name="system.remedesconnus" {{#if system.remedesconnus}}checked{{/if}}/>
</div>
{{#if (or isGM system.remedesconnus)}}
<div class="form-group">
<label for="xp">Remèdes </label>
<label for="system.remedes">Remèdes </label>
<input class="attribute-value" type="text" name="system.remedes" value="{{system.remedes}}" data-dtype="String"/>
</div>
{{/if}}
{{/if}}
{{#if (and isGM isOwned)}}
{{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Contractée" labelfin="Prochain jet"}}
{{/if}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
</section>
</form>

View File

@@ -13,37 +13,43 @@
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="form-group">
<label for="xp">Actif ? </label>
<input class="attribute-value" type="checkbox" name="system.active" {{#if system.active}}checked{{/if}}/>
<label for="system.active">Actif ? </label>
<input class="attribute-value" type="checkbox" name="system.active" {{#if system.active}}checked{{/if}} {{#unless isGM}}disabled{{/unless}}/>
</div>
{{#if (or isGM system.identifie)}}
<div class="form-group">
<label for="xp">Identifiée ? </label>
<label for="system.identifie">Identifiée ? </label>
<input class="attribute-value" type="checkbox" name="system.identifie" {{#if system.identifie}}checked{{/if}}/>
</div>
<div class="form-group">
<label for="xp">Malignité </label>
<label for="system.malignite">Malignité </label>
<input class="attribute-value" type="text" name="system.malignite" value="{{system.malignite}}" data-dtype="Number"/>
</div>
<div class="form-group">
<label for="xp">Périodicité</label>
<input class="attribute-value" type="text" name="system.periodicite" value="{{system.periodicite}}" data-dtype="String"/>
<label for="system.incubation">Incubation</label>
<input class="attribute-value" type="text" name="system.incubation" value="{{system.incubation}}" data-dtype="String"/>
</div>
<div class="form-group">
<label for="xp">Dommages</label>
{{>"systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs" system.periode path='system.periode' label='Périodicité'}}
</div>
<div class="form-group">
<label for="system.dommages">Dommages</label>
<input class="attribute-value" type="text" name="system.dommages" value="{{system.dommages}}" data-dtype="String"/>
</div>
<div class="form-group">
<label for="xp">Remedes Connus ? </label>
<label for="system.remedesconnus">Remedes Connus ? </label>
<input class="attribute-value" type="checkbox" name="system.remedesconnus" {{#if system.remedesconnus}}checked{{/if}}/>
</div>
{{#if (or isGM system.remedesconnus)}}
<div class="form-group">
<label for="xp">Remèdes </label>
<label for="system.remedes">Remèdes </label>
<input class="attribute-value" type="text" name="system.remedes" value="{{system.remedes}}" data-dtype="String"/>
</div>
{{/if}}
{{/if}}
{{#if (and isGM isOwned system.active)}}
{{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Contracté" labelfin="Prochain jet"}}
{{/if}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}

View File

@@ -85,15 +85,9 @@
<label>Date de l'Enchantement : Jour/Mois (date actuelle : {{dateActuelle}})</label>
</div>
<div class="form-group">
<select name="splitDate.day" class="enchanteDate" data-dtype="String">
{{#select splitDate.day}}
{{#each jourMoisOptions as |key|}}
<option value="{{key}}">{{numberFormat key decimals=0}}</option>
{{/each}}
{{/select}}
</select>
<select name="splitDate.month" class="enchanteDate" data-dtype="String">
{{#select splitDate.month}}
<input type="number" name="enchantement.jour" class="date-enchantement" value="{{enchantement.jour}}" data-dtype="Number" min="1" max="28"/>
<select name="enchantement.mois" class="date-enchantement" data-dtype="String">
{{#select enchantement.mois}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>

View File

@@ -19,11 +19,24 @@
</select>
</div>
<div class="form-group">
<label for="system.duree">Durée</label>
<select name="system.duree" data-dtype="String">
{{#select system.duree}}
{{>"systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs"}}
{{/select}}
</select>
</div>
<div class="form-group">
<label for="system.refoulement">Refoulement</label>
<input class="attribute-value" type="text" name="system.refoulement" value="{{system.refoulement}}" data-dtype="Number"/>
</div>
{{#if isOwned}}
{{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Depuis le" labelfin="Jusqu'au"}}
{{/if}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-hautrevant.html"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-frequence.html"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}

View File

@@ -27,6 +27,7 @@
<input class="attribute-value" type="text" name="system.heure" value="{{system.heure}}" data-dtype="String" {{#unless isGM}}disabled{{/unless}}/>
</div>
</div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Rencontrée le" labelfin="Disparaît le"}}
{{else}}
<div class="form-group">
<label for="system.formule">Rêve</label>

View File

@@ -2,102 +2,23 @@
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
<section class="sheet-body">
<div class="flexcol form-group small-editor">
{{editor description target="system.description" button=true owner=owner editable=(or isGM isOwner) engine="prosemirror"}}
</div>
{{!--
<div class="flexcol">
<ul class="item-list alterne-list">
<li class="item flexrow list-item">
<label class="flex-grow">Service</label>
<label>Moral</label>
<label>Qualité</label>
<label>Prix (sols)</label>
<label>
{{#unless disabled}}
<a class="service-add"><i class="fas fa-plus-circle"></i></a>
{{/unless}}
</label>
</li>
{{#each system.services as |service key|}}
<li class="item flexrow list-item" data-key="{{key}}">
<input {{@root.disabled}} type="text" name="services[{{key}}].name" value="{{service.name}}" data-dtype="String" />
<input {{@root.disabled}} type="checkbox" name="services[{{key}}].system.moral" {{#if service.system.moral}}checked{{/if}} />
<input {{@root.disabled}} type="number" name="services[{{key}}].system.qualite" value="{{service.system.qualite}}" data-dtype="Number" min="-10" max="10"/>
<input {{@root.disabled}} type="number" class="input-prix" name="services[{{key}}].system.cout" value="{{numberFormat service.system.cout decimals=2 sign=false}}" data-dtype="Number" min="0" />
<div class="item-controls">
<a class="service-acheter" title="Acheter"><i class="fa-sharp fa-solid fa-coins"></i></a>
{{#unless @root.disabled}}
<a class="service-vendre" title="Proposer"><i class="fas fa-comments-dollar"></i></a>
<a class="service-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
{{/unless}}
</div>
</li>
{{/each}}
</ul>
</div>
<br>
--}}
<div class="form-group">
<input {{@root.disabled}} class="attribute-value" type="checkbox" name="system.illimite" {{#if system.illimite}}checked{{/if}}/>
<span for="system.illimite">Quantité en vente illimitée</span>
<span for="system.moral">Jet de moral en situation heureuse</span>
<input {{@root.disabled}} class="attribute-value" type="checkbox" name="system.moral" {{#if system.moral}}checked{{/if}}/>
</div>
<div class="flexcol">
<ul class="item-list alterne-list">
<li class="item flexrow list-item">
<label class="flex-grow">A vendre</label>
{{#unless system.illimite}}
<label>Quantite</label>
{{/unless}}
<label>Prix (sols)</label>
<div class="item-controls">
{{#unless disabled}}
<a class="sub-item-info-add" title="Utiliser le drag&amp;drop pour ajouter un objet dans la liste">
<i class="fa-solid fa-circle-info"></i>
</a>
{{/unless}}
</div>
</li>
{{#each system.items as |item key|}}
<li class="item flexrow list-item service-item" data-item-id="{{item.id}}" data-pack="{{item.pack}}" data-key="{{key}}">
<label class="flex-grow">
{{#if item.img}}<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>{{/if}}
{{> 'systems/foundryvtt-reve-de-dragon/templates/common/compendium-link.hbs'
pack=item.pack id=item.id name=item.name}}
</label>
{{#unless @root.system.illimite}}
<span class="flexrow">
{{#unless @root.disabled}}
<a class="sub-item-quantite-moins"><i class="fas fa-minus-square"></i></a>
{{/unless}}
<input {{@root.disabled}} type="number" class="sub-item-quantite" name="items[{{key}}].system.quantite" value="{{item.system.quantite}}" data-dtype="Number" />
{{#unless @root.disabled}}
<a class="sub-item-quantite-plus"><i class="fas fa-plus-square"></i></a>
{{/unless}}
</span>
{{/unless}}
<span class="flexrow">
<input {{@root.disabled}} type="number" class="input-prix number-x3 sub-item-cout" name="items[{{key}}].system.cout" value="{{numberFormat item.system.cout decimals=2 sign=false}}" data-dtype="Number" />
</span>
<div class="item-controls">
<a class="sub-item-acheter" title="Acheter"><i class="fa-regular fa-coins"></i></a>
{{#unless @root.disabled}}
<a class="sub-item-vendre" title="Vendre"><i class="fas fa-comments-dollar"></i></a>
<a class="sub-item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
{{/unless}}
</div>
</li>
{{/each}}
</ul>
<div class="form-group">
<label for="system.qualite">Qualité</label>
<input class="attribute-value number-x3" type="number" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"
{{#unless (isFieldInventaireModifiable type 'qualite')}}disabled{{/unless}}/>
</div>
{{#if isGM}}
<br>
<div class="flexcol">
<span><label>Description (MJ seulement): </label></span>
<div class="form-group medium-editor">
{{editor descriptionmj target="system.descriptionmj" button=true owner=owner editable=true engine="prosemirror"}}
</div>
<div class="form-group item-cout">
<label for="system.cout">Prix (sols)</label>
<input class="input-prix attribute-value number-x3" type="number" name="system.cout" value="{{numberFormat system.cout decimals=2 sign=false}}" data-dtype="Number"
{{#unless (isFieldInventaireModifiable type 'cout')}}disabled{{/unless}}/>
</div>
{{/if}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
</section>
</form>

View File

@@ -2,6 +2,18 @@
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="form-group">
<label for="system.duree">Durée</label>
<select name="system.duree" data-dtype="String">
{{#select system.duree}}
{{>"systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs"}}
{{/select}}
</select>
</div>
{{#if isOwned}}
{{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Depuis le" labelfin="Jusqu'au"}}
{{/if}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-hautrevant.html"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-frequence.html"}}

View File

@@ -0,0 +1,17 @@
<div class="form-group">
{{>"systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs"
(timestamp-extract system.temporel.debut)
path='system.temporel.debut'
label=(either labeldebut 'Date début')
disabled=''
}}
</div>
<div class="form-group">
{{>"systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs"
(timestamp-extract system.temporel.fin)
path='system.temporel.fin'
label=(either labelfin 'Date fin')
disabled=''
}}
</div>

View File

@@ -1,6 +1,4 @@
<form autocomplete="off" onsubmit="event.preventDefault();">
{{log 'systemCompendiums'systemCompendiums}}
{{log 'availableCompendiums' availableCompendiums}}
<ul>
{{#each systemCompendiums as |definition key|}}
<li class="flexrow">