Merge pull request 'Amélioration esthétique' (#574) from VincentVk/foundryvtt-reve-de-dragon:v10 into v10

Reviewed-on: #574
This commit is contained in:
uberwald 2022-11-16 20:59:24 +01:00
commit 3ce3898326
27 changed files with 104 additions and 104 deletions

View File

@ -43,7 +43,8 @@
"TypeSouffle": "Souffle de Dragon", "TypeSouffle": "Souffle de Dragon",
"TypeTete": "Tête de Dragon", "TypeTete": "Tête de Dragon",
"TypePossession": "Possession", "TypePossession": "Possession",
"TypeSortreserve": "Sort en réserve" "TypeSortreserve": "Sort en réserve",
"TypeExtraitpoetique": "Extrait poetique"
}, },
"EFFECT": { "EFFECT": {
"StatusStunned": "Sonné", "StatusStunned": "Sonné",

View File

@ -2349,7 +2349,7 @@ export class RdDActor extends Actor {
const dialog = await RdDRoll.create(this, rollData, const dialog = await RdDRoll.create(this, rollData,
{ {
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-sort.html', html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-sort.html',
options: { height: 600 }, options: { height: 'fit-content' },
close: html => { this.currentTMR.maximize() } // Re-display TMR close: html => { this.currentTMR.maximize() } // Re-display TMR
}, },
{ {
@ -2674,7 +2674,7 @@ export class RdDActor extends Actor {
const dialog = await RdDRoll.create(this, artData, const dialog = await RdDRoll.create(this, artData,
{ {
html: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${oeuvre.type}.html`, html: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${oeuvre.type}.html`,
options: { height: 500, } options: { height: 'fit-content', }
}, },
{ {
name: `jet-${artData.art}`, name: `jet-${artData.art}`,
@ -2814,7 +2814,7 @@ export class RdDActor extends Actor {
const dialog = await RdDRoll.create(this, meditationData, const dialog = await RdDRoll.create(this, meditationData,
{ {
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-meditation.html', html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-meditation.html',
options: { height: 575, } options: { height: 'fit-content', }
}, },
{ {
name: 'jet-meditation', name: 'jet-meditation',
@ -2891,7 +2891,7 @@ export class RdDActor extends Actor {
const dialog = await RdDRoll.create(this, rollData, const dialog = await RdDRoll.create(this, rollData,
{ {
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-signedraconique.html', html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-signedraconique.html',
options: { height: 600 }, options: { height: 'fit-content' },
close: html => { this.currentTMR.maximize() } // Re-display TMR close: html => { this.currentTMR.maximize() } // Re-display TMR
}, },
{ {

View File

@ -49,7 +49,7 @@ export class DialogItemAchat extends Dialog {
constructor(html, venteData) { constructor(html, venteData) {
const isConsommable = venteData.item.type == 'nourritureboisson' && venteData.acheteur?.isPersonnage(); const isConsommable = venteData.item.type == 'nourritureboisson' && venteData.acheteur?.isPersonnage();
let options = { classes: ["dialogachat"], width: 400, height: isConsommable ? 450 : 350, 'z-index': 99999 }; let options = { classes: ["dialogachat"], width: 400, height: 'fit-content', 'z-index': 99999 };
const actionAchat = venteData.prixLot > 0 ? "Acheter" : "Prendre"; const actionAchat = venteData.prixLot > 0 ? "Acheter" : "Prendre";
const buttons = {}; const buttons = {};

View File

@ -9,7 +9,7 @@ export class DialogConsommer extends Dialog {
} }
constructor(actor, item, consommerData, html, onActionItem = async ()=>{}) { constructor(actor, item, consommerData, html, onActionItem = async ()=>{}) {
const options = { classes: ["dialogconsommer"], width: 350, height: 450, 'z-index': 99999 }; const options = { classes: ["dialogconsommer"], width: 350, height: 'fit-content', 'z-index': 99999 };
let conf = { let conf = {
title: consommerData.title, title: consommerData.title,
content: html, content: html,

View File

@ -24,7 +24,7 @@ export class DialogItemVente extends Dialog {
} }
constructor(venteData, html, callback) { constructor(venteData, html, callback) {
let options = { classes: ["dialogvente"], width: 400, height: 300, 'z-index': 99999 }; let options = { classes: ["dialogvente"], width: 400, height: 'fit-content', 'z-index': 99999 };
let conf = { let conf = {
title: "Proposer", title: "Proposer",

View File

@ -23,7 +23,7 @@ export class DialogStress extends Dialog {
constructor(dialogData, html) { constructor(dialogData, html) {
const options = { classes: ["DialogStress"], const options = { classes: ["DialogStress"],
width: 400, width: 400,
height: 205+dialogData.actors.length*25, height: 'fit-content',
'z-index': 99999 'z-index': 99999
}; };
const conf = { const conf = {

View File

@ -72,19 +72,19 @@ export class Monnaie {
let parValeur = Misc.classifyFirst(monnaies, it => it.system.valeur_deniers); let parValeur = Misc.classifyFirst(monnaies, it => it.system.valeur_deniers);
for (let valeur of [1000, 100, 10, 1]) { for (let valeur of [1000, 100, 10, 1]) {
const itemPiece = parValeur[valeur]; const itemPiece = parValeur[valeur];
const piecesDeCetteValeur = Math.floor(reste / valeur);
if (itemPiece) { if (itemPiece) {
if (piecesDeCetteValeur != itemPiece.system.quantite) { const quantite = Math.floor(reste / valeur);
updates.push({ _id: parValeur[valeur].id, 'system.quantite': piecesDeCetteValeur }); if (quantite != itemPiece.system.quantite) {
updates.push({ _id: parValeur[valeur].id, 'system.quantite': quantite });
} }
reste -= piecesDeCetteValeur*valeur; reste -= quantite*valeur;
} }
} }
console.log('Monnaie.optimiser', actor.name, 'total', fortune, 'parValeur', parValeur, 'updates', updates, 'reste', reste); console.log('Monnaie.optimiser', actor.name, 'total', fortune, 'parValeur', parValeur, 'updates', updates, 'reste', reste);
if (updates.length > 0) { if (updates.length > 0) {
await actor.updateEmbeddedDocuments('Item', updates); await actor.updateEmbeddedDocuments('Item', updates);
} }
if (reste>0){ if (reste > 0){
// créer le reste en deniers fortune en deniers // créer le reste en deniers fortune en deniers
await Monnaie.creerMonnaiesDeniers(actor, reste); await Monnaie.creerMonnaiesDeniers(actor, reste);
} }

View File

@ -96,14 +96,18 @@ export class RdDItemSheet extends ItemSheet {
formData.competences = await RdDUtility.loadItems(it => RdDItemCompetence.isDraconic(it), RdDItemCompetence.actorCompendium(this.actor?.type)) formData.competences = await RdDUtility.loadItems(it => RdDItemCompetence.isDraconic(it), RdDItemCompetence.actorCompendium(this.actor?.type))
} }
if (this.item.type == 'recettecuisine') { if (this.item.type == 'recettecuisine') {
formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, {async: true}) formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, {async: true})
}
if (this.item.type == 'extraitpoetique') {
formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, {async: true})
formData.texte = await TextEditor.enrichHTML(this.object.system.texte, {async: true})
} }
if (this.item.type == 'recettealchimique') { if (this.item.type == 'recettealchimique') {
RdDAlchimie.processManipulation(this.item, this.actor && this.actor.id); RdDAlchimie.processManipulation(this.item, this.actor && this.actor.id);
formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, {async: true}) formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, {async: true})
formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, {async: true}) formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, {async: true})
formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, {async: true}) formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, {async: true})
formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, {async: true}) formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, {async: true})
} }
if (this.item.type == 'gemme') { if (this.item.type == 'gemme') {
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList(); formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();

View File

@ -58,6 +58,7 @@ export const defaultItemImg = {
gemme: "systems/foundryvtt-reve-de-dragon/icons/gemmes/almaze.webp", gemme: "systems/foundryvtt-reve-de-dragon/icons/gemmes/almaze.webp",
possession: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp", possession: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp",
sortreserve: "systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp", sortreserve: "systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp",
extraitpoetique: "systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp",
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -1,72 +1,13 @@
import { Misc } from "./misc.js"
import { RdDDice } from "./rdd-dice.js"; import { RdDDice } from "./rdd-dice.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
const poesieHautReve = [
{
reference: 'Le Ratier Bretonien',
extrait: `Le courant du Fleuve
<br>Te domine et te Porte
<br>Avant que tu te moeuves
<br>Combat le, ou il t'emporte`
},
{
reference: 'Incompatibilité, Charles Beaudelaire',
extrait: `Et lorsque par hasard une nuée errante
<br>Assombrit dans son vol le lac silencieux,
<br>On croirait voir la robe ou l'ombre transparente
<br>D'un esprit qui voyage et passe dans les cieux.`
},
{
reference: 'Au fleuve de Loire, Joachim du Bellay',
extrait: `Ô de qui la vive course
<br>Prend sa bienheureuse source,
<br>Dune argentine fontaine,
<br>Qui dune fuite lointaine,
<br>Te rends au sein fluctueux
<br>De lOcéan monstrueux`
},
{
reference: 'Denis Gerfaud',
extrait: `Et l'on peut savoir qui est le maître d'Oniros, c'est le Fleuve de l'Oubli.
Et l'on sait qui est le créateur du Fleuve de l'Oubli, c'est Hypnos et Narcos.
Mais l'on ne sait pas qui est le maître du Fleuve de l'Oubli,
sinon peut-être lui-même, ou peut-être Thanatos` },
{
reference: 'Denis Gerfaud',
extrait: `Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure
Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir.
Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli`
},
{
reference: 'Denis Gerfaud',
extrait: `Narcos engendre le fils dont il est la mère à l'heure du Vaisseau,
car Oniros s'embarque pour redescendre le Fleuve
vers son père Hypnos sur la Voie de l'Oubli`
},
{
reference: 'Denis Gerfaud',
extrait: `Hypnos engendre le fils dont il est la mère à l'heure du Serpent, car
tel les serpents, Oniros commence à remonter le Fleuve
sur le Voie du Souvenir vers son père Narcos`
},
{
reference: 'Denis Gerfaud',
extrait: `Ainsi se succèdent les Jours et les Ages.
<br>Les jours des Dragons sont les Ages des Hommes.`
},
{
reference: 'Denis Gerfaud',
extrait: `Ainsi parlent les sages:
&laquo;Les Dragons sont créateurs de leurs rêves, mais ils ne sont pas créateurs d'Oniros
Les Dragons ne sont pas les maîtres de leurs rêvezs, car ils ne sont pas maîtres d'Oniros.
Nul ne sait qui est le créateur des Dragons, ni qui est leur maître.
Mais l'on peut supposer qui est le maître du Rêve des Dragons, c'est Oniros&raquo;`
},
]
export class Poetique { export class Poetique {
static async getExtrait(){ static async getExtrait() {
return await RdDDice.rollOneOf(poesieHautReve); const items = await SystemCompendiums.getItems('extrait-poetique', 'extraitpoetique')
const selected = await RdDDice.rollOneOf(items);
return {
reference: selected?.name,
extrait: selected?.system.extrait
}
} }
}
}

View File

@ -218,7 +218,7 @@ export class RdDCommands {
buttons: {}, buttons: {},
}, },
{ {
width: 600, height: 500, width: 600, height: 600,
}); });
d.render(true); d.render(true);

View File

@ -144,6 +144,9 @@ export class RdDDice {
} }
static async rollOneOf(array) { static async rollOneOf(array) {
if (array == undefined || array.length == 0) {
return undefined;
}
const roll = await RdDDice.rollTotal(`1d${array.length}`); const roll = await RdDDice.rollTotal(`1d${array.length}`);
return array[roll - 1]; return array[roll - 1];
} }

View File

@ -202,7 +202,7 @@ Hooks.once("init", async function () {
"monnaie", "nourritureboisson", "gemme", "monnaie", "nourritureboisson", "gemme",
"meditation", "rencontresTMR", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve", "meditation", "rencontresTMR", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
"nombreastral", "tache", "maladie", "poison", "possession", "nombreastral", "tache", "maladie", "poison", "possession",
"tarot" "tarot", "extraitpoetique"
], makeDefault: true ], makeDefault: true
}); });
CONFIG.Combat.documentClass = RdDCombatManager; CONFIG.Combat.documentClass = RdDCombatManager;

View File

@ -92,8 +92,7 @@ export class RdDPossession {
const dialog = await RdDRoll.create(defender, rollData, const dialog = await RdDRoll.create(defender, rollData,
{ {
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-defense-possession.html', html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-defense-possession.html'
options: { height: 450 }
}, },
{ {
name: 'conjurer', name: 'conjurer',
@ -134,8 +133,7 @@ export class RdDPossession {
const dialog = await RdDRoll.create(attacker, rollData, const dialog = await RdDRoll.create(attacker, rollData,
{ {
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html', html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html'
options: { height: 540 }
}, { }, {
name: 'jet-possession', name: 'jet-possession',
label: rollData.isECNIDefender ? 'Conjurer la possession' : 'Possession', label: rollData.isECNIDefender ? 'Conjurer la possession' : 'Possession',

View File

@ -33,7 +33,7 @@ export class RdDEncaisser extends Dialog {
let dialogOptions = { let dialogOptions = {
classes: ["rdddialog"], classes: ["rdddialog"],
width: 320, width: 320,
height: 260 height: 'fit-content'
} }
// Select proper roll dialog template and stuff // Select proper roll dialog template and stuff

View File

@ -15,7 +15,7 @@ export class RdDRollDialogEthylisme extends Dialog {
default: "rollButton", default: "rollButton",
buttons: { "rollButton": { label: "Test d'éthylisme", callback: html => this.onButton(html) } } buttons: { "rollButton": { label: "Test d'éthylisme", callback: html => this.onButton(html) } }
}; };
let dialogOptions = { classes: ["rdddialog"], width: 400, height: 270, 'z-index': 99999 } let dialogOptions = { classes: ["rdddialog"], width: 400, height: 'fit-content', 'z-index': 99999 }
super(dialogConf, dialogOptions) super(dialogConf, dialogOptions)
//console.log("ETH", rollData); //console.log("ETH", rollData);

View File

@ -53,7 +53,7 @@ export class RdDRollResolutionTable extends Dialog {
'lancer-fermer': { label: 'Lancer les dés et fermer', callback: html => this.onLancerFermer() } 'lancer-fermer': { label: 'Lancer les dés et fermer', callback: html => this.onLancerFermer() }
} }
}; };
super(conf, { classes: ["rdddialog"], width: 800, height: 800, 'z-index': 99999 }); super(conf, { classes: ["rdddialog"], width: 800, height: 'fit-content', 'z-index': 99999 });
this.rollData = rollData; this.rollData = rollData;
} }

View File

@ -29,7 +29,7 @@ export class RdDRoll extends Dialog {
const html = await renderTemplate(dialogConfig.html, rollData); const html = await renderTemplate(dialogConfig.html, rollData);
let options = { classes: ["rdddialog"], width: 600, height: 500, 'z-index': 99999 }; let options = { classes: ["rdddialog"], width: 600, height: 'fit-content', 'z-index': 99999 };
if (dialogConfig.options) { if (dialogConfig.options) {
mergeObject(options, dialogConfig.options, { overwrite: true }) mergeObject(options, dialogConfig.options, { overwrite: true })
} }

View File

@ -17,6 +17,7 @@ import { ReglesOptionelles } from "./settings/regles-optionelles.js";
import { RdDDice } from "./rdd-dice.js"; import { RdDDice } from "./rdd-dice.js";
import { STATUSES } from "./settings/status-effects.js"; import { STATUSES } from "./settings/status-effects.js";
import { RdDRencontre } from "./item-rencontre.js"; import { RdDRencontre } from "./item-rencontre.js";
import { RdDCalendrier } from "./rdd-calendrier.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -773,7 +774,7 @@ export class RdDTMRDialog extends Dialog {
const dialog = await RdDRoll.create(this.actor, rollData, const dialog = await RdDRoll.create(this.actor, rollData,
{ {
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-maitrise-tmr.html', html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-maitrise-tmr.html',
options: { height: 420 }, options: { height: 'fit-content' },
close: html => { this.maximize(); } // Re-display TMR close: html => { this.maximize(); } // Re-display TMR
}, },
{ {
@ -838,12 +839,13 @@ export class RdDTMRDialog extends Dialog {
async processSortReserve(sortReserve) { async processSortReserve(sortReserve) {
await this.actor.deleteEmbeddedDocuments('Item', [sortReserve.id]); await this.actor.deleteEmbeddedDocuments('Item', [sortReserve.id]);
console.log("declencheSortEnReserve", sortReserve); console.log("declencheSortEnReserve", sortReserve);
const heureCible = RdDCalendrier.getSigneAs('label', sortReserve.system.heurecible);
this._tellToUserAndGM(`Vous avez déclenché this._tellToUserAndGM(`Vous avez déclenché
${sortReserve.system.echectotal ? "<strong>l'échec total!</strong>" : "le sort"} ${sortReserve.system.echectotal ? "<strong>l'échec total!</strong>" : "le sort"}
en réserve <strong>${sortReserve.name}</strong> en réserve <strong>${sortReserve.name}</strong>
avec ${sortReserve.system.ptreve} points de Rêve avec ${sortReserve.system.ptreve} points de Rêve
en ${sortReserve.system.coord} (${TMRUtility.getTMRLabel(sortReserve.system.coord)}). en ${sortReserve.system.coord} (${TMRUtility.getTMRLabel(sortReserve.system.coord)}).
L'heure ciblée est ${sortReserve.system.heurecible}`); L'heure ciblée est ${heureCible}`);
this.close(); this.close();
} }

View File

@ -21,7 +21,7 @@ export class RdDTMRRencontreDialog extends Dialog {
const dialogOptions = { const dialogOptions = {
classes: ["tmrrencdialog"], classes: ["tmrrencdialog"],
width: 320, height: 240, width: 320, height: 'fit-content',
'z-index': 50 'z-index': 50
} }
super(dialogConf, dialogOptions); super(dialogConf, dialogOptions);

View File

@ -193,6 +193,7 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/item-nourritureboisson-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-signedraconique-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-possession-sheet.html', 'systems/foundryvtt-reve-de-dragon/templates/item-possession-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-extraitpoetique-sheet.html',
// partial enums // partial enums
'systems/foundryvtt-reve-de-dragon/templates/enum-caracteristiques.html', 'systems/foundryvtt-reve-de-dragon/templates/enum-caracteristiques.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-base-competence.html', 'systems/foundryvtt-reve-de-dragon/templates/enum-base-competence.html',

View File

@ -100,7 +100,7 @@ export class StatusEffects extends FormApplication {
mergeObject(options, { mergeObject(options, {
id: "status-effects", id: "status-effects",
template: "systems/foundryvtt-reve-de-dragon/templates/settings/status-effects.html", template: "systems/foundryvtt-reve-de-dragon/templates/settings/status-effects.html",
height: "800", height: 800,
width: 350, width: 350,
minimizable: false, minimizable: false,
closeOnSubmit: true, closeOnSubmit: true,

View File

@ -5,6 +5,7 @@ const COMPENDIUM_SETTING_PREFIX = 'compendium-';
const CONFIGURABLE_COMPENDIUMS = { const CONFIGURABLE_COMPENDIUMS = {
'tables-diverses': { label: "Tables aléatoires", type: "RollTable" }, 'tables-diverses': { label: "Tables aléatoires", type: "RollTable" },
'competences': { label: "Compétences", type: "Item" }, 'competences': { label: "Compétences", type: "Item" },
'extrait-poetique': { label: "Extraits poetiques", type: "Item" },
'queues-de-dragon': { label: "Queues de dragon", type: "Item" }, 'queues-de-dragon': { label: "Queues de dragon", type: "Item" },
'ombres-de-thanatos': { label: "Ombres de Thanatos", type: "Item" }, 'ombres-de-thanatos': { label: "Ombres de Thanatos", type: "Item" },
'souffles-de-dragon': { label: "Souffles de Dragon", type: "Item" }, 'souffles-de-dragon': { label: "Souffles de Dragon", type: "Item" },
@ -54,8 +55,9 @@ export class SystemCompendiums extends FormApplication {
return []; return [];
} }
static async getItems(compendium) { static async getItems(compendium, itemType = undefined) {
return await SystemCompendiums.getContent(compendium, 'Item') const items = await SystemCompendiums.getContent(compendium, 'Item');
return itemType ? items.filter(it => it.type == itemType) : items;
} }
static async getDefaultItems(compendium) { static async getDefaultItems(compendium) {

View File

@ -0,0 +1,9 @@
{"name":"Au fleuve de Loire, Joachim du Bellay","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>&Ocirc; de qui la vive course <br>Prend sa bienheureuse source, <br>D&rsquo;une argentine fontaine, <br>Qui d&rsquo;une fuite lointaine, <br>Te rends au sein fluctueux <br>De l&rsquo;Oc&eacute;an monstrueux</p>","texte":""},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"1xzVPsfnO3uukbc4","ownership":{"default":0}}
{"name":"Le Fleuve, Le Ratier Bretonien","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>Le courant du Fleuve<br>Te domine et te Porte<br>Avant que tu te moeuves<br>Combats le, ou il t'emporte</p>","texte":""},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"4dPfQh9ovWa90M9o","ownership":{"default":0}}
{"name":"Des voies du Rêve (4), Denis Gerfaud","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>&laquo;Narcos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Vaisseau, <br>car Oniros s'embarque pour redescendre le Fleuve <br>vers son p&egrave;re Hypnos sur la Voie de l'Oubli&raquo;</p>","texte":"<p>Ainsi parlent les sages: <br>&laquo;Les Dragons sont cr&eacute;ateurs de leurs r&ecirc;ves, mais ils ne sont pas cr&eacute;ateurs d'Oniros <br>Les Dragons ne sont pas les ma&icirc;tres de leurs r&ecirc;ves, car ils ne sont pas ma&icirc;tres d'Oniros. <br>Nul ne sait qui est le cr&eacute;ateur des Dragons, ni qui est leur ma&icirc;tre. <br>Mais l'on peut supposer qui est le ma&icirc;tre du R&ecirc;ve des Dragons, c'est Oniros&raquo;</p>\n<p>&laquo;Et l'on peut savoir qui est le ma&icirc;tre d'Oniros, c'est le Fleuve de l'Oubli. <br>Et l'on sait qui est le cr&eacute;ateur du Fleuve de l'Oubli, c'est Hypnos et Narcos. <br>Mais l'on ne sait pas qui est le ma&icirc;tre du Fleuve de l'Oubli, <br>sinon peut-&ecirc;tre lui-m&ecirc;me, ou peut-&ecirc;tre Thanatos&raquo;</p>\n<p>&laquo;Hypnos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Serpent, car <br>tel les serpents, Oniros commence &agrave; remonter le Fleuve <br>sur le Voie du Souvenir vers son p&egrave;re Narcos&raquo;</p>\n<p>&laquo;Narcos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Vaisseau, <br>car Oniros s'embarque pour redescendre le Fleuve <br>vers son p&egrave;re Hypnos sur la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure <br>Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir. <br>Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Ainsi se succ&egrave;dent les Jours et les Ages. <br>Les jours des Dragons sont les Ages des Hommes.&raquo;</p>"},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"7DNOC40NKHog49rb","ownership":{"default":0}}
{"name":"Des voies du Rêve (5), Denis Gerfaud","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>&laquo;Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure <br>Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir. <br>Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli&raquo;</p>","texte":"<p>Ainsi parlent les sages: <br>&laquo;Les Dragons sont cr&eacute;ateurs de leurs r&ecirc;ves, mais ils ne sont pas cr&eacute;ateurs d'Oniros <br>Les Dragons ne sont pas les ma&icirc;tres de leurs r&ecirc;ves, car ils ne sont pas ma&icirc;tres d'Oniros. <br>Nul ne sait qui est le cr&eacute;ateur des Dragons, ni qui est leur ma&icirc;tre. <br>Mais l'on peut supposer qui est le ma&icirc;tre du R&ecirc;ve des Dragons, c'est Oniros&raquo;</p>\n<p>&laquo;Et l'on peut savoir qui est le ma&icirc;tre d'Oniros, c'est le Fleuve de l'Oubli. <br>Et l'on sait qui est le cr&eacute;ateur du Fleuve de l'Oubli, c'est Hypnos et Narcos. <br>Mais l'on ne sait pas qui est le ma&icirc;tre du Fleuve de l'Oubli, <br>sinon peut-&ecirc;tre lui-m&ecirc;me, ou peut-&ecirc;tre Thanatos&raquo;</p>\n<p>&laquo;Hypnos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Serpent, car <br>tel les serpents, Oniros commence &agrave; remonter le Fleuve <br>sur le Voie du Souvenir vers son p&egrave;re Narcos&raquo;</p>\n<p>&laquo;Narcos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Vaisseau, <br>car Oniros s'embarque pour redescendre le Fleuve <br>vers son p&egrave;re Hypnos sur la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure <br>Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir. <br>Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Ainsi se succ&egrave;dent les Jours et les Ages. <br>Les jours des Dragons sont les Ages des Hommes.&raquo;</p>"},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"Ym0pweWHr8CIZFIR","ownership":{"default":0}}
{"name":"Des voies du Rêve (1), Denis Gerfaud (Copy)","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>Ainsi parlent les sages: <br>&laquo;Les Dragons sont cr&eacute;ateurs de leurs r&ecirc;ves, mais ils ne sont pas cr&eacute;ateurs d'Oniros <br>Les Dragons ne sont pas les ma&icirc;tres de leurs r&ecirc;ves, car ils ne sont pas ma&icirc;tres d'Oniros. <br>Nul ne sait qui est le cr&eacute;ateur des Dragons, ni qui est leur ma&icirc;tre. <br>Mais l'on peut supposer qui est le ma&icirc;tre du R&ecirc;ve des Dragons, c'est Oniros&raquo;</p>","texte":"<p>Ainsi parlent les sages: <br>&laquo;Les Dragons sont cr&eacute;ateurs de leurs r&ecirc;ves, mais ils ne sont pas cr&eacute;ateurs d'Oniros <br>Les Dragons ne sont pas les ma&icirc;tres de leurs r&ecirc;ves, car ils ne sont pas ma&icirc;tres d'Oniros. <br>Nul ne sait qui est le cr&eacute;ateur des Dragons, ni qui est leur ma&icirc;tre. <br>Mais l'on peut supposer qui est le ma&icirc;tre du R&ecirc;ve des Dragons, c'est Oniros&raquo;</p>\n<p>&laquo;Et l'on peut savoir qui est le ma&icirc;tre d'Oniros, c'est le Fleuve de l'Oubli. <br>Et l'on sait qui est le cr&eacute;ateur du Fleuve de l'Oubli, c'est Hypnos et Narcos. <br>Mais l'on ne sait pas qui est le ma&icirc;tre du Fleuve de l'Oubli, <br>sinon peut-&ecirc;tre lui-m&ecirc;me, ou peut-&ecirc;tre Thanatos&raquo;</p>\n<p>&laquo;Hypnos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Serpent, car <br>tel les serpents, Oniros commence &agrave; remonter le Fleuve <br>sur le Voie du Souvenir vers son p&egrave;re Narcos&raquo;</p>\n<p>&laquo;Narcos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Vaisseau, <br>car Oniros s'embarque pour redescendre le Fleuve <br>vers son p&egrave;re Hypnos sur la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure <br>Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir. <br>Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Ainsi se succ&egrave;dent les Jours et les Ages. <br>Les jours des Dragons sont les Ages des Hommes.&raquo;</p>"},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"fXBZ0YjF12LRtSOp","ownership":{"default":0}}
{"name":"Des voies du Rêve (6), Denis Gerfaud","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>&laquo;Ainsi se succ&egrave;dent les Jours et les Ages. <br>Les jours des Dragons sont les Ages des Hommes.&raquo;</p>","texte":"<p>Ainsi parlent les sages: <br>&laquo;Les Dragons sont cr&eacute;ateurs de leurs r&ecirc;ves, mais ils ne sont pas cr&eacute;ateurs d'Oniros <br>Les Dragons ne sont pas les ma&icirc;tres de leurs r&ecirc;ves, car ils ne sont pas ma&icirc;tres d'Oniros. <br>Nul ne sait qui est le cr&eacute;ateur des Dragons, ni qui est leur ma&icirc;tre. <br>Mais l'on peut supposer qui est le ma&icirc;tre du R&ecirc;ve des Dragons, c'est Oniros&raquo;</p>\n<p>&laquo;Et l'on peut savoir qui est le ma&icirc;tre d'Oniros, c'est le Fleuve de l'Oubli. <br>Et l'on sait qui est le cr&eacute;ateur du Fleuve de l'Oubli, c'est Hypnos et Narcos. <br>Mais l'on ne sait pas qui est le ma&icirc;tre du Fleuve de l'Oubli, <br>sinon peut-&ecirc;tre lui-m&ecirc;me, ou peut-&ecirc;tre Thanatos&raquo;</p>\n<p>&laquo;Hypnos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Serpent, car <br>tel les serpents, Oniros commence &agrave; remonter le Fleuve <br>sur le Voie du Souvenir vers son p&egrave;re Narcos&raquo;</p>\n<p>&laquo;Narcos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Vaisseau, <br>car Oniros s'embarque pour redescendre le Fleuve <br>vers son p&egrave;re Hypnos sur la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure <br>Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir. <br>Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Ainsi se succ&egrave;dent les Jours et les Ages. <br>Les jours des Dragons sont les Ages des Hommes.&raquo;</p>"},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"k55zGYj5cTis14Cw","ownership":{"default":0}}
{"name":"Des voies du Rêve (2), Denis Gerfaud","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>&laquo;Et l'on peut savoir qui est le ma&icirc;tre d'Oniros, c'est le Fleuve de l'Oubli. <br>Et l'on sait qui est le cr&eacute;ateur du Fleuve de l'Oubli, c'est Hypnos et Narcos. <br>Mais l'on ne sait pas qui est le ma&icirc;tre du Fleuve de l'Oubli, <br>sinon peut-&ecirc;tre lui-m&ecirc;me, ou peut-&ecirc;tre Thanatos&raquo;</p>","texte":"<p>Ainsi parlent les sages: <br>&laquo;Les Dragons sont cr&eacute;ateurs de leurs r&ecirc;ves, mais ils ne sont pas cr&eacute;ateurs d'Oniros <br>Les Dragons ne sont pas les ma&icirc;tres de leurs r&ecirc;ves, car ils ne sont pas ma&icirc;tres d'Oniros. <br>Nul ne sait qui est le cr&eacute;ateur des Dragons, ni qui est leur ma&icirc;tre. <br>Mais l'on peut supposer qui est le ma&icirc;tre du R&ecirc;ve des Dragons, c'est Oniros&raquo;</p>\n<p>&laquo;Et l'on peut savoir qui est le ma&icirc;tre d'Oniros, c'est le Fleuve de l'Oubli. <br>Et l'on sait qui est le cr&eacute;ateur du Fleuve de l'Oubli, c'est Hypnos et Narcos. <br>Mais l'on ne sait pas qui est le ma&icirc;tre du Fleuve de l'Oubli, <br>sinon peut-&ecirc;tre lui-m&ecirc;me, ou peut-&ecirc;tre Thanatos&raquo;</p>\n<p>&laquo;Hypnos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Serpent, car <br>tel les serpents, Oniros commence &agrave; remonter le Fleuve <br>sur le Voie du Souvenir vers son p&egrave;re Narcos&raquo;</p>\n<p>&laquo;Narcos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Vaisseau, <br>car Oniros s'embarque pour redescendre le Fleuve <br>vers son p&egrave;re Hypnos sur la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure <br>Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir. <br>Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Ainsi se succ&egrave;dent les Jours et les Ages. <br>Les jours des Dragons sont les Ages des Hommes.&raquo;</p>"},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"rjlGncoP26PljA2G","ownership":{"default":0}}
{"name":"Des voies du Rêve (3), Denis Gerfaud","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>&laquo;Hypnos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Serpent, car <br>tel les serpents, Oniros commence &agrave; remonter le Fleuve <br>sur le Voie du Souvenir vers son p&egrave;re Narcos&raquo;</p>","texte":"<p>Ainsi parlent les sages: <br>&laquo;Les Dragons sont cr&eacute;ateurs de leurs r&ecirc;ves, mais ils ne sont pas cr&eacute;ateurs d'Oniros <br>Les Dragons ne sont pas les ma&icirc;tres de leurs r&ecirc;ves, car ils ne sont pas ma&icirc;tres d'Oniros. <br>Nul ne sait qui est le cr&eacute;ateur des Dragons, ni qui est leur ma&icirc;tre. <br>Mais l'on peut supposer qui est le ma&icirc;tre du R&ecirc;ve des Dragons, c'est Oniros&raquo;</p>\n<p>&laquo;Et l'on peut savoir qui est le ma&icirc;tre d'Oniros, c'est le Fleuve de l'Oubli. <br>Et l'on sait qui est le cr&eacute;ateur du Fleuve de l'Oubli, c'est Hypnos et Narcos. <br>Mais l'on ne sait pas qui est le ma&icirc;tre du Fleuve de l'Oubli, <br>sinon peut-&ecirc;tre lui-m&ecirc;me, ou peut-&ecirc;tre Thanatos&raquo;</p>\n<p>&laquo;Hypnos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Serpent, car <br>tel les serpents, Oniros commence &agrave; remonter le Fleuve <br>sur le Voie du Souvenir vers son p&egrave;re Narcos&raquo;</p>\n<p>&laquo;Narcos engendre le fils dont il est la m&egrave;re &agrave; l'heure du Vaisseau, <br>car Oniros s'embarque pour redescendre le Fleuve <br>vers son p&egrave;re Hypnos sur la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure <br>Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir. <br>Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli&raquo;</p>\n<p>&laquo;Ainsi se succ&egrave;dent les Jours et les Ages. <br>Les jours des Dragons sont les Ages des Hommes.&raquo;</p>"},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"xMigGwI39BORZ82r","ownership":{"default":0}}
{"name":"Incompatibilité, Charles Beaudelaire","type":"extraitpoetique","img":"systems/foundryvtt-reve-de-dragon/icons/competence_ecriture.webp","system":{"extrait":"<p>Et lorsque par hasard une nu&eacute;e errante <br>Assombrit dans son vol le lac silencieux, <br>On croirait voir la robe ou l'ombre transparente <br>D'un esprit qui voyage et passe dans les cieux.</p>","texte":""},"effects":[],"flags":{},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.0","coreVersion":"10.288"},"_id":"yJ3m3fheGJluiGDx","ownership":{"default":0}}

View File

@ -198,6 +198,15 @@
"private": false, "private": false,
"flags": {} "flags": {}
}, },
{
"name": "extrait-poetique",
"label": "Extraits poétiques",
"system": "foundryvtt-reve-de-dragon",
"path": "packs/extrait-poetique.db",
"type": "Item",
"private": false,
"flags": {}
},
{ {
"name": "tetes-de-dragon-pour-haut-revants", "name": "tetes-de-dragon-pour-haut-revants",
"label": "Têtes de Dragon (Hauts-Rêvants)", "label": "Têtes de Dragon (Hauts-Rêvants)",

View File

@ -588,7 +588,7 @@
"monnaie", "nourritureboisson", "gemme", "monnaie", "nourritureboisson", "gemme",
"meditation", "rencontre", "rencontresTMR", "queue", "ombre", "souffle", "tete", "casetmr", "signedraconique", "sort", "sortreserve", "meditation", "rencontre", "rencontresTMR", "queue", "ombre", "souffle", "tete", "casetmr", "signedraconique", "sort", "sortreserve",
"nombreastral", "tache", "maladie", "poison", "possession", "nombreastral", "tache", "maladie", "poison", "possession",
"tarot" "tarot", "extraitpoetique"
], ],
"possession": { "possession": {
"typepossession": "", "typepossession": "",
@ -1007,6 +1007,10 @@
"ptreve": 0, "ptreve": 0,
"heurecible": "", "heurecible": "",
"echectotal": false "echectotal": false
},
"extraitpoetique": {
"extrait": "",
"texte": ""
} }
} }
} }

View File

@ -0,0 +1,25 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="chat-icon" src="{{img}}" data-edit="img" title="{{name}}"/>
<div class="header-fields">
<h1 class="charname">
<input name="name" type="text" value="{{name}}" placeholder="Name"/>
</h1>
<p class="poesie-reference">Référence</p>
</div>
</header>
<section class="sheet-body">
<div class="flexcol">
<label>Extrait</label>
<div class="form-group editor">
{{editor extrait target="system.extrait" button=true owner=owner editable=editable}}
</div>
</div>
<div class="flexcol">
<label>Texte complet</label>
<div class="form-group editor">
{{editor texte target="system.texte" button=true owner=owner editable=editable}}
</div>
</div>
</section>
</form>