Compare commits
78 Commits
foundryvtt
...
foundryvtt
| Author | SHA1 | Date | |
|---|---|---|---|
| 285937c201 | |||
| 93965ce91a | |||
| 18aba9adff | |||
| 0a5662ff71 | |||
| bf98e4eae2 | |||
| e32a1d25f6 | |||
| 327943c4aa | |||
| de56fa909a | |||
| 2aa62cffe9 | |||
| c57f140c54 | |||
| 9cf14f8b75 | |||
| b8e7b21e14 | |||
| c1d02d9fda | |||
| 23af30a538 | |||
| 4e1b663dec | |||
| c9d98c57da | |||
| 0aef139cf8 | |||
| 9c85293714 | |||
| ab1c04ae17 | |||
| a585e0faba | |||
| 50c730ba72 | |||
| 928a60f092 | |||
| e5c2f52b0e | |||
| f9391523f8 | |||
| 55434762f4 | |||
| 5e6ffc7846 | |||
| 3344e20936 | |||
| 5a66e4e741 | |||
| d329724d63 | |||
| 8a5405c9f5 | |||
| ea992aae46 | |||
| 0bfcfec58f | |||
| 88e00c59bc | |||
| d314dc39a0 | |||
| 30bb803da2 | |||
| dd79e16ea5 | |||
| 83e2d56fd4 | |||
| afc23dfa7b | |||
| 3e189cbe5f | |||
| d0475e8677 | |||
| a3694c1673 | |||
| 9e6d5856b1 | |||
| acc880b53f | |||
| 2598ae3489 | |||
| 4f5fb63751 | |||
| d739a7993a | |||
| 41335cd433 | |||
| e470d76ea0 | |||
| ffccc819f1 | |||
| 45bfc69b39 | |||
| 79e9358072 | |||
| 5cab418e62 | |||
| 7809f7c21a | |||
| 1bac204071 | |||
| 3bf5beb67b | |||
| ac1da6e979 | |||
| 67735197bc | |||
| f81dc9a5f5 | |||
| a563233d6b | |||
| 0c11013694 | |||
| 77cf72a752 | |||
| 42ed5da2d4 | |||
| 5fd3a43b2a | |||
| 1bb710ce83 | |||
| 80579032ea | |||
| a810e20eca | |||
| c6f0aaeba0 | |||
| 3c3be7409d | |||
| f97345e407 | |||
| 4cc50fc190 | |||
| 26967fe1cd | |||
| b23dcaace5 | |||
| 045ee76013 | |||
| 7fed3844b5 | |||
| b5571e6c7a | |||
| b5eac8ccfa | |||
| 673196c644 | |||
| 9741028914 |
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
|||||||
.vscode/settings.json
|
.vscode/settings.json
|
||||||
.idea
|
.idea
|
||||||
|
.history
|
||||||
todo.md
|
todo.md
|
||||||
/.vscode
|
/.vscode
|
||||||
/ignored/
|
/ignored/
|
||||||
|
|||||||
BIN
icons/sante/blessure-mort.webp
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
icons/sante/blessure-soins.webp
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
icons/sante/blessure.webp
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
icons/sante/eraflure.webp
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
icons/sante/mort.webp
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
65
lang/fr.json
@@ -7,47 +7,48 @@
|
|||||||
"TypeVehicule": "Véhicule"
|
"TypeVehicule": "Véhicule"
|
||||||
},
|
},
|
||||||
"ITEM": {
|
"ITEM": {
|
||||||
"TypeObjet": "Objet",
|
|
||||||
"TypeGemme": "Gemme",
|
|
||||||
"TypeCompetence": "Compétence",
|
|
||||||
"TypeCompetencecreature": "Compétence de créature",
|
|
||||||
"TypeMaladie": "Maladie",
|
|
||||||
"TypePoison": "Poison",
|
|
||||||
"TypeNombreastral": "Nombre astral",
|
|
||||||
"TypeTarot": "Carte de tarot",
|
|
||||||
"TypeCasetmr": "TMR spéciale",
|
|
||||||
"TypeRencontre": "Rencontre TMR",
|
|
||||||
"TypeMunition": "Munition",
|
|
||||||
"TypeMonnaie": "Monnaie",
|
|
||||||
"TypeHerbe": "Herbe",
|
|
||||||
"TypePlante": "Plante",
|
|
||||||
"TypeIngredient": "Ingrédient",
|
|
||||||
"TypeFaune": "Faune",
|
|
||||||
"TypeLivre": "Livre",
|
|
||||||
"TypePotion": "Potion",
|
|
||||||
"TypeArme": "Arme",
|
"TypeArme": "Arme",
|
||||||
"TypeArmure": "Armure",
|
"TypeArmure": "Armure",
|
||||||
"TypeConteneur": "Conteneur",
|
"TypeBlessure": "Blessure",
|
||||||
"TypeNourritureboisson": "Nourriture & boisson",
|
"TypeCasetmr": "TMR spéciale",
|
||||||
"TypeService": "Service",
|
|
||||||
"TypeChant": "Chant",
|
"TypeChant": "Chant",
|
||||||
|
"TypeCompetence": "Compétence",
|
||||||
|
"TypeCompetencecreature": "Compétence de créature",
|
||||||
|
"TypeConteneur": "Conteneur",
|
||||||
"TypeDanse": "Danse",
|
"TypeDanse": "Danse",
|
||||||
"TypeMusique": "Musique",
|
"TypeExtraitpoetique": "Extrait poetique",
|
||||||
"TypeOeuvre": "Oeuvre",
|
"TypeFaune": "Faune",
|
||||||
"TypeTache": "Tâche",
|
"TypeGemme": "Gemme",
|
||||||
|
"TypeHerbe": "Herbe",
|
||||||
|
"TypeIngredient": "Ingrédient",
|
||||||
"TypeJeu": "Jeu",
|
"TypeJeu": "Jeu",
|
||||||
|
"TypeLivre": "Livre",
|
||||||
|
"TypeMaladie": "Maladie",
|
||||||
|
"TypeMeditation": "Méditation",
|
||||||
|
"TypeMonnaie": "Monnaie",
|
||||||
|
"TypeMunition": "Munition",
|
||||||
|
"TypeMusique": "Musique",
|
||||||
|
"TypeNombreastral": "Nombre astral",
|
||||||
|
"TypeNourritureboisson": "Nourriture & boisson",
|
||||||
|
"TypeObjet": "Objet",
|
||||||
|
"TypeOeuvre": "Oeuvre",
|
||||||
|
"TypeOmbre": "Ombre de Thanatos",
|
||||||
|
"TypePlante": "Plante",
|
||||||
|
"TypePoison": "Poison",
|
||||||
|
"TypePossession": "Possession",
|
||||||
|
"TypePotion": "Potion",
|
||||||
|
"TypeQueue": "Queue de Dragon",
|
||||||
"TypeRecettealchimique": "Recette alchimique",
|
"TypeRecettealchimique": "Recette alchimique",
|
||||||
"TypeRecettecuisine": "Recette de cuisine",
|
"TypeRecettecuisine": "Recette de cuisine",
|
||||||
"TypeSort": "Sort",
|
"TypeRencontre": "Rencontre TMR",
|
||||||
"TypeMeditation": "Méditation",
|
"TypeService": "Service",
|
||||||
"TypeSignedraconique": "Signe draconique",
|
"TypeSignedraconique": "Signe draconique",
|
||||||
"TypeQueue": "Queue de Dragon",
|
"TypeSort": "Sort",
|
||||||
"TypeOmbre": "Ombre de Thanatos",
|
|
||||||
"TypeSouffle": "Souffle de Dragon",
|
|
||||||
"TypeTete": "Tête de Dragon",
|
|
||||||
"TypePossession": "Possession",
|
|
||||||
"TypeSortreserve": "Sort en réserve",
|
"TypeSortreserve": "Sort en réserve",
|
||||||
"TypeExtraitpoetique": "Extrait poetique"
|
"TypeSouffle": "Souffle de Dragon",
|
||||||
|
"TypeTache": "Tâche",
|
||||||
|
"TypeTarot": "Carte de tarot",
|
||||||
|
"TypeTete": "Tête de Dragon"
|
||||||
},
|
},
|
||||||
"EFFECT": {
|
"EFFECT": {
|
||||||
"StatusStunned": "Sonné",
|
"StatusStunned": "Sonné",
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { STATUSES } from "./settings/status-effects.js";
|
|||||||
import { MAINS_DIRECTRICES } from "./actor.js";
|
import { MAINS_DIRECTRICES } from "./actor.js";
|
||||||
import { RdDBaseActorSheet } from "./actor/base-actor-sheet.js";
|
import { RdDBaseActorSheet } from "./actor/base-actor-sheet.js";
|
||||||
import { RdDItem } from "./item.js";
|
import { RdDItem } from "./item.js";
|
||||||
|
import { RdDItemBlessure } from "./item/blessure.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/**
|
/**
|
||||||
@@ -116,7 +117,10 @@ export class RdDActorSheet extends RdDBaseActorSheet {
|
|||||||
// Everything below here is only needed if the sheet is editable
|
// Everything below here is only needed if the sheet is editable
|
||||||
if (!this.options.editable) return;
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor));
|
this.html.find('.item-action').click(async event => {
|
||||||
|
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||||
|
item?.actionPrincipale(this.actor, async () => this.render())
|
||||||
|
});
|
||||||
|
|
||||||
this.html.find('.subacteur-delete').click(async event => {
|
this.html.find('.subacteur-delete').click(async event => {
|
||||||
const li = RdDSheetUtility.getEventElement(event);
|
const li = RdDSheetUtility.getEventElement(event);
|
||||||
@@ -151,42 +155,31 @@ export class RdDActorSheet extends RdDBaseActorSheet {
|
|||||||
this.html.find('.creer-tache').click(async event => {
|
this.html.find('.creer-tache').click(async event => {
|
||||||
this.createEmptyTache();
|
this.createEmptyTache();
|
||||||
});
|
});
|
||||||
this.html.find('.creer-tache-blessure-legere').click(async event => {
|
this.html.find('.creer-tache-blessure-legere').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 2));
|
||||||
this.actor.createTacheBlessure('legere');
|
this.html.find('.creer-tache-blessure-grave').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 4));
|
||||||
});
|
this.html.find('.creer-tache-blessure-critique').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 6));
|
||||||
this.html.find('.creer-tache-blessure-grave').click(async event => {
|
this.html.find('.creer-blessure-legere').click(async event => RdDItemBlessure.createBlessure(this.actor, 2));
|
||||||
this.actor.createTacheBlessure('grave');
|
this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4));
|
||||||
});
|
this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6));
|
||||||
this.html.find('.creer-tache-blessure-critique').click(async event => {
|
|
||||||
this.actor.createTacheBlessure('critique');
|
|
||||||
});
|
|
||||||
this.html.find('.creer-une-oeuvre').click(async event => {
|
this.html.find('.creer-une-oeuvre').click(async event => {
|
||||||
this.selectTypeOeuvreToCreate();
|
this.selectTypeOeuvreToCreate();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Blessure control
|
this.html.find('.blessure-premierssoins-done').change(async event => {
|
||||||
this.html.find('.blessure-control').click(async event => {
|
const blessure = this.getBlessure(event);
|
||||||
const tr = this.html.find(event.currentTarget).parents(".item");
|
await blessure?.setSoinsBlessure({ premierssoins: { done: event.currentTarget.checked } });
|
||||||
let btype = tr.data("blessure-type");
|
|
||||||
let index = tr.data('blessure-index');
|
|
||||||
let active = this.html.find(event.currentTarget).data('blessure-active');
|
|
||||||
//console.log(btype, index, active);
|
|
||||||
await this.actor.manageBlessureFromSheet(btype, index, active);
|
|
||||||
});
|
});
|
||||||
|
this.html.find('.blessure-soinscomplets-done').change(async event => {
|
||||||
// Blessure data
|
const blessure = this.getBlessure(event);
|
||||||
this.html.find('.blessure-soins').change(async event => {
|
await blessure?.setSoinsBlessure({ soinscomplets: { done: event.currentTarget.checked } })
|
||||||
const tr = this.html.find(event.currentTarget).parents(".item");
|
});
|
||||||
let btype = tr.data('blessure-type');
|
this.html.find('.blessure-premierssoins-bonus').change(async event => {
|
||||||
let index = tr.data('blessure-index');
|
const blessure = this.getBlessure(event);
|
||||||
let psoins = tr.find('.blessure-premiers_soins').val();
|
await blessure?.setSoinsBlessure({ premierssoins: { bonus: Number(event.currentTarget.value) } })
|
||||||
let pcomplets = tr.find('.blessure-soins_complets').val();
|
});
|
||||||
let jours = tr.find('.blessure-jours').val();
|
this.html.find('.blessure-soinscomplets-bonus').change(async event => {
|
||||||
let loc = tr.find('.blessure-localisation').val();
|
const blessure = this.getBlessure(event);
|
||||||
let psdone = tr.find('.blessure-psdone:checked').val();
|
await blessure?.setSoinsBlessure({ soinscomplets: { bonus: Number(event.currentTarget.value) } })
|
||||||
let scdone = tr.find('.blessure-scdone:checked').val();
|
|
||||||
console.log(btype, index, psoins, pcomplets, jours, loc, psdone, scdone);
|
|
||||||
await this.actor.setDataBlessureFromSheet(btype, index, psoins, pcomplets, jours, loc, psdone, scdone);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Equip Inventory Item
|
// Equip Inventory Item
|
||||||
@@ -426,6 +419,12 @@ export class RdDActorSheet extends RdDBaseActorSheet {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getBlessure(event) {
|
||||||
|
const itemId = this.html.find(event.currentTarget).parents(".item-blessure").data('item-id');
|
||||||
|
const blessure = this.actor.getItem(itemId, 'blessure');
|
||||||
|
return blessure;
|
||||||
|
}
|
||||||
|
|
||||||
isCompetenceAffichable(competence) {
|
isCompetenceAffichable(competence) {
|
||||||
return !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(competence);
|
return !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(competence);
|
||||||
}
|
}
|
||||||
|
|||||||
697
module/actor.js
@@ -78,6 +78,7 @@ export class RdDBaseActorSheet extends ActorSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static filterItemsPerTypeForSheet(formData, itemTypes) {
|
static filterItemsPerTypeForSheet(formData, itemTypes) {
|
||||||
|
formData.blessures = Misc.arrayOrEmpty(itemTypes['blessure']);
|
||||||
formData.recettescuisine = Misc.arrayOrEmpty(itemTypes['recettecuisine']);
|
formData.recettescuisine = Misc.arrayOrEmpty(itemTypes['recettecuisine']);
|
||||||
formData.recettesAlchimiques = Misc.arrayOrEmpty(itemTypes['recettealchimique']);
|
formData.recettesAlchimiques = Misc.arrayOrEmpty(itemTypes['recettealchimique']);
|
||||||
formData.maladies = Misc.arrayOrEmpty(itemTypes['maladie']);
|
formData.maladies = Misc.arrayOrEmpty(itemTypes['maladie']);
|
||||||
@@ -137,7 +138,13 @@ export class RdDBaseActorSheet extends ActorSheet {
|
|||||||
this.html.find('.item-edit').click(async event => this.getItem(event)?.sheet.render(true))
|
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('.item-montrer').click(async event => this.getItem(event)?.postItemToChat());
|
||||||
this.html.find('.actor-montrer').click(async event => this.actor.postActorToChat());
|
this.html.find('.actor-montrer').click(async event => this.actor.postActorToChat());
|
||||||
|
this.html.find('.recherche')
|
||||||
|
.each((index, field) => {
|
||||||
|
this._rechercheSelectArea(field);
|
||||||
|
})
|
||||||
|
.keyup(async event => this._rechercherKeyup(event))
|
||||||
|
.change(async event => this._rechercherKeyup(event));
|
||||||
|
this.html.find('.recherche').prop( "disabled", false );
|
||||||
// Everything below here is only needed if the sheet is editable
|
// Everything below here is only needed if the sheet is editable
|
||||||
if (!this.options.editable) return;
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
@@ -145,6 +152,8 @@ export class RdDBaseActorSheet extends ActorSheet {
|
|||||||
const item = this.getItem(event);
|
const item = this.getItem(event);
|
||||||
RdDSheetUtility.splitItem(item, this.actor);
|
RdDSheetUtility.splitItem(item, this.actor);
|
||||||
});
|
});
|
||||||
|
this.html.find('.item-quantite-plus').click(async event => this.actor.itemQuantiteIncDec(this.getItemId(event), 1));
|
||||||
|
this.html.find('.item-quantite-moins').click(async event => this.actor.itemQuantiteIncDec(this.getItemId(event), -1));
|
||||||
this.html.find('.item-delete').click(async event => RdDUtility.confirmActorItemDelete(this, this.getItem(event)));
|
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('.item-vendre').click(async event => this.vendre(this.getItem(event)));
|
||||||
|
|
||||||
@@ -154,18 +163,6 @@ export class RdDBaseActorSheet extends ActorSheet {
|
|||||||
this.html.find('.nettoyer-conteneurs').click(async event => {
|
this.html.find('.nettoyer-conteneurs').click(async event => {
|
||||||
this.actor.nettoyerConteneurs();
|
this.actor.nettoyerConteneurs();
|
||||||
});
|
});
|
||||||
this.html.find('.monnaie-plus').click(async event => {
|
|
||||||
this.actor.monnaieIncDec(this.getItemId(event), 1);
|
|
||||||
});
|
|
||||||
this.html.find('.monnaie-moins').click(async event => {
|
|
||||||
this.actor.monnaieIncDec(this.getItemId(event), -1);
|
|
||||||
});
|
|
||||||
this.html.find('.recherche')
|
|
||||||
.each((index, field) => {
|
|
||||||
this._rechercheSelectArea(field);
|
|
||||||
})
|
|
||||||
.keyup(async event => this._rechercherKeyup(event))
|
|
||||||
.change(async event => this._rechercherKeyup(event));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_rechercherKeyup(event) {
|
_rechercherKeyup(event) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { Misc } from "../misc.js";
|
|||||||
import { RdDAudio } from "../rdd-audio.js";
|
import { RdDAudio } from "../rdd-audio.js";
|
||||||
import { RdDUtility } from "../rdd-utility.js";
|
import { RdDUtility } from "../rdd-utility.js";
|
||||||
import { SystemCompendiums } from "../settings/system-compendiums.js";
|
import { SystemCompendiums } from "../settings/system-compendiums.js";
|
||||||
|
import { APP_ASTROLOGIE_REFRESH } from "../sommeil/app-astrologie.js";
|
||||||
|
|
||||||
export class RdDBaseActor extends Actor {
|
export class RdDBaseActor extends Actor {
|
||||||
|
|
||||||
@@ -20,14 +21,16 @@ export class RdDBaseActor extends Actor {
|
|||||||
Hooks.on("updateActor", (actor, change, options, actorId) => actor.onUpdateActor(change, options, actorId));
|
Hooks.on("updateActor", (actor, change, options, actorId) => actor.onUpdateActor(change, options, actorId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static onSocketMessage(sockmsg) {
|
static onSocketMessage(sockmsg) {
|
||||||
switch (sockmsg.msg) {
|
switch (sockmsg.msg) {
|
||||||
case "msg_remote_actor_call":
|
case "msg_remote_actor_call":
|
||||||
return RdDBaseActor.onRemoteActorCall(sockmsg.data, sockmsg.userId);
|
return RdDBaseActor.onRemoteActorCall(sockmsg.data, sockmsg.userId);
|
||||||
case "msg_reset_nombre_astral":
|
case "msg_reset_nombre_astral":
|
||||||
console.log("RESET ASTRAL", game.user.character);
|
game.user.character.resetNombresAstraux();
|
||||||
game.user.character.resetNombreAstral();
|
game.system.rdd.calendrier.notifyChangeNombresAstraux();
|
||||||
|
return;
|
||||||
|
case "msg_refresh_nombre_astral":
|
||||||
|
Hooks.callAll(APP_ASTROLOGIE_REFRESH);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,11 +150,11 @@ export class RdDBaseActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async monnaieIncDec(id, value) {
|
async itemQuantiteIncDec(id, value) {
|
||||||
let monnaie = this.getMonnaie(id);
|
let item = this.getItem(id);
|
||||||
if (monnaie) {
|
if (item && item.isInventaire()) {
|
||||||
const quantite = Math.max(0, monnaie.system.quantite + value);
|
const quantite = Math.max(0, item.system.quantite + value);
|
||||||
await this.updateEmbeddedDocuments('Item', [{ _id: monnaie.id, 'system.quantite': quantite }]);
|
await this.updateEmbeddedDocuments('Item', [{ _id: item.id, 'system.quantite': quantite }]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { SYSTEM_RDD } from "./constants.js";
|
import { SYSTEM_RDD } from "./constants.js";
|
||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
import { HtmlUtility } from "./html-utility.js";
|
import { HtmlUtility } from "./html-utility.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
|
|
||||||
|
|
||||||
const LATEST_USED_JOURNAL_ID = "chronologie-dernier-journal";
|
const LATEST_USED_JOURNAL_ID = "chronologie-dernier-journal";
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { RdDUtility } from "./rdd-utility.js";
|
|||||||
export class DialogFabriquerPotion extends Dialog {
|
export class DialogFabriquerPotion extends Dialog {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, item, dialogConfig) {
|
static async create(actor, item, onActionItem) {
|
||||||
const min = DialogFabriquerPotion.nombreBrinsMinimum(item);
|
const min = DialogFabriquerPotion.nombreBrinsMinimum(item);
|
||||||
if (item.system.quantite < min) {
|
if (item.system.quantite < min) {
|
||||||
ui.notifications.warn(`Vous avez ${item.system.quantite} brins de ${item.name}, il en faut au moins ${min} pour faire une potion!`);
|
ui.notifications.warn(`Vous avez ${item.system.quantite} brins de ${item.name}, il en faut au moins ${min} pour faire une potion!`);
|
||||||
@@ -13,12 +13,10 @@ export class DialogFabriquerPotion extends Dialog {
|
|||||||
}
|
}
|
||||||
let potionData = DialogFabriquerPotion.prepareData(actor, item);
|
let potionData = DialogFabriquerPotion.prepareData(actor, item);
|
||||||
|
|
||||||
const html = await renderTemplate(dialogConfig.html, potionData);
|
const html = await renderTemplate( 'systems/foundryvtt-reve-de-dragon/templates/dialog-fabriquer-potion-base.html', potionData);
|
||||||
|
|
||||||
let options = { classes: ["dialogfabriquerpotion"], width: 600, height: 160, 'z-index': 99999 };
|
let options = { classes: ["dialogfabriquerpotion"], width: 600, height: 160, 'z-index': 99999 };
|
||||||
mergeObject(options, dialogConfig.options ?? {}, { overwrite: true })
|
new DialogFabriquerPotion(actor, potionData, onActionItem, html, options).render(true);
|
||||||
|
|
||||||
new DialogFabriquerPotion(actor, potionData, html, options).render(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -34,14 +32,14 @@ export class DialogFabriquerPotion extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
constructor(actor, potionData, html, options) {
|
constructor(actor, potionData, onActionItem, html, options) {
|
||||||
const conf = {
|
const conf = {
|
||||||
title: `Fabriquer une potion de ${potionData.system.categorie}`,
|
title: `Fabriquer une potion de ${potionData.system.categorie}`,
|
||||||
content: html,
|
content: html,
|
||||||
default: 'fabriquer',
|
default: 'fabriquer',
|
||||||
buttons: {
|
buttons: {
|
||||||
'fabriquer': {
|
'fabriquer': {
|
||||||
label: potionData.buttonName, callback: it => this.onFabriquer(html)
|
label: potionData.buttonName, callback: it => this.onFabriquer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -50,6 +48,7 @@ export class DialogFabriquerPotion extends Dialog {
|
|||||||
|
|
||||||
this.actor = actor;
|
this.actor = actor;
|
||||||
this.potionData = potionData;
|
this.potionData = potionData;
|
||||||
|
this.onActionItem = onActionItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -64,10 +63,11 @@ export class DialogFabriquerPotion extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async onFabriquer(html) {
|
async onFabriquer() {
|
||||||
await this.html.find("[name='nbBrins']").change();
|
await this.html.find("[name='nbBrins']").change();
|
||||||
this.actor.fabriquerPotion(this.potionData);
|
await this.actor.fabriquerPotion(this.potionData);
|
||||||
this.close();
|
this.close();
|
||||||
|
await this.onActionItem()
|
||||||
}
|
}
|
||||||
|
|
||||||
static nombreBrinsMinimum(herbeData) {
|
static nombreBrinsMinimum(herbeData) {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export class DialogValidationEncaissement extends Dialog {
|
|||||||
constructor(html, actor, rollData, armure, encaissement, show, onEncaisser) {
|
constructor(html, actor, rollData, armure, encaissement, show, onEncaisser) {
|
||||||
// Common conf
|
// Common conf
|
||||||
let buttons = {
|
let buttons = {
|
||||||
"valider": { label: "Valider", callback: html => this.validerEncaissement() },
|
"valider": { label: "Valider", callback: html => this.onValider() },
|
||||||
"annuler": { label: "Annuler", callback: html => { } },
|
"annuler": { label: "Annuler", callback: html => { } },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ export class DialogValidationEncaissement extends Dialog {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async validerEncaissement() {
|
async onValider() {
|
||||||
this.encaissement = await RdDUtility.jetEncaissement(this.rollData, this.armure, { showDice: SHOW_DICE, forceDiceResult: this.forceDiceResult});
|
this.encaissement = await RdDUtility.jetEncaissement(this.rollData, this.armure, { showDice: SHOW_DICE, forceDiceResult: this.forceDiceResult});
|
||||||
this.onEncaisser(this.encaissement, this.show)
|
this.onEncaisser(this.encaissement, this.show)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { SYSTEM_RDD } from "./constants.js";
|
|||||||
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
|
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
|
||||||
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extend the basic ItemSheet for RdD specific items
|
* Extend the basic ItemSheet for RdD specific items
|
||||||
@@ -188,7 +188,7 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.html.find('.creer-tache-livre').click((event) => this._getEventActor(event).creerTacheDepuisLivre(this.item));
|
this.html.find('.creer-tache-livre').click((event) => this._getEventActor(event).creerTacheDepuisLivre(this.item));
|
||||||
this.html.find('.consommer-potion').click((event) => this._getEventActor(event).consommerPotion(this.item));
|
this.html.find('.consommer-potion').click((event) => this._getEventActor(event).consommerPotion(this.item, this.getActionRenderItem()));
|
||||||
this.html.find('.creer-potion-base').click((event) => this._getEventActor(event).dialogFabriquerPotion(this.item));
|
this.html.find('.creer-potion-base').click((event) => this._getEventActor(event).dialogFabriquerPotion(this.item));
|
||||||
|
|
||||||
this.html.find('.alchimie-tache a').click((event) => {
|
this.html.find('.alchimie-tache a').click((event) => {
|
||||||
@@ -203,12 +203,23 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, async () => this.render(true)));
|
if (this.actor) {
|
||||||
|
this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, this.getActionRenderItem()));
|
||||||
this.html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true));
|
this.html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true));
|
||||||
this.html.find('.item-delete').click(async event => RdDUtility.confirmActorItemDelete(this, RdDSheetUtility.getItem(event, 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-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-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)));
|
this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, this.getActionRenderItem()));
|
||||||
|
|
||||||
|
this.html.find('.item-quantite-plus').click(async event => {
|
||||||
|
await this.actor.itemQuantiteIncDec(RdDSheetUtility.getItemId(event), 1)
|
||||||
|
this.render();
|
||||||
|
});
|
||||||
|
this.html.find('.item-quantite-moins').click(async event => {
|
||||||
|
await this.actor.itemQuantiteIncDec(RdDSheetUtility.getItemId(event), -1)
|
||||||
|
this.render();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const updateItemTimestamp = (path, timestamp) => this.item.update({ [path]: duplicate(timestamp) })
|
const updateItemTimestamp = (path, timestamp) => this.item.update({ [path]: duplicate(timestamp) })
|
||||||
|
|
||||||
@@ -216,6 +227,16 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.fin', updateItemTimestamp);
|
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.fin', updateItemTimestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getActionRenderItem() {
|
||||||
|
return async () => {
|
||||||
|
let item = this.item;
|
||||||
|
while (item) {
|
||||||
|
await item.sheet?.render()
|
||||||
|
item = this.actor.getContenant(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_getEventActor(event) {
|
_getEventActor(event) {
|
||||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
||||||
let actor = game.actors.get(actorId);
|
let actor = game.actors.get(actorId);
|
||||||
@@ -239,9 +260,8 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
_updateObject(event, formData) {
|
_updateObject(event, formData) {
|
||||||
if (this.item.type == 'sort') {
|
if (this.item.type == 'sort') {
|
||||||
// Données de bonus de cases ?
|
// Données de bonus de cases ?
|
||||||
formData['system.bonuscase'] = RdDItemSort.buildBonusCaseStringFromFormData(formData.bonusValue, formData.caseValue);
|
formData['system.bonuscase'] = RdDItemSort.buildBonuscaseFromArrays(formData.bonusValue, formData.caseValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.item.update(formData);
|
return this.item.update(formData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
/* -------------------------------------------- */
|
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { TMRUtility } from "./tmr-utility.js";
|
import { TMRUtility } from "./tmr-utility.js";
|
||||||
|
|
||||||
@@ -16,7 +15,7 @@ export class RdDItemSort extends Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static setCoutReveReel(sort){
|
static setCoutReveReel(sort) {
|
||||||
if (sort) {
|
if (sort) {
|
||||||
sort.system.ptreve_reel = this.isCoutVariable(sort) ? 1 : sort.system.ptreve;
|
sort.system.ptreve_reel = this.isCoutVariable(sort) ? 1 : sort.system.ptreve;
|
||||||
}
|
}
|
||||||
@@ -31,30 +30,22 @@ export class RdDItemSort extends Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static buildBonusCaseList( caseBonusString, newCase ) {
|
static buildBonusCaseList(bonuscase, newCase) {
|
||||||
if (caseBonusString == undefined) {
|
const list = RdDItemSort._bonuscaseStringToList(bonuscase)
|
||||||
return [];
|
if (newCase) {
|
||||||
|
return list.concat({ case: "Nouvelle", bonus: 0 });
|
||||||
}
|
}
|
||||||
let bonusCaseList = [];
|
return list;
|
||||||
let bonusCaseArray = caseBonusString == undefined ? [] : caseBonusString.split(',');
|
|
||||||
for( let bonusCase of bonusCaseArray) {
|
|
||||||
let bonusSplit = bonusCase.split(':');
|
|
||||||
bonusCaseList.push( { case: bonusSplit[0], bonus: bonusSplit[1] } );
|
|
||||||
}
|
|
||||||
if ( newCase )
|
|
||||||
bonusCaseList.push( {case: "Nouvelle", bonus: 0} );
|
|
||||||
return bonusCaseList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
/**
|
/**
|
||||||
* Retourne une liste de bonus/case pour un item-sheet
|
* Retourne une liste de bonus/case pour un item-sheet
|
||||||
* @param {} item
|
* @param {} item
|
||||||
*/
|
*/
|
||||||
static getBonusCaseList( item, newCase = false ) {
|
static getBonusCaseList(item, newCase = false) {
|
||||||
// Gestion spéciale case bonus
|
// Gestion spéciale case bonus
|
||||||
if ( item.type == 'sort') {
|
if (item.type == 'sort') {
|
||||||
return this.buildBonusCaseList(item.system.bonuscase, newCase );
|
return RdDItemSort.buildBonusCaseList(item.system.bonuscase, newCase);
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@@ -63,56 +54,61 @@ export class RdDItemSort extends Item {
|
|||||||
/** Met à jour les données de formulaire
|
/** Met à jour les données de formulaire
|
||||||
* si static des bonus de cases sont présents
|
* si static des bonus de cases sont présents
|
||||||
* */
|
* */
|
||||||
static buildBonusCaseStringFromFormData( bonuses, cases ) {
|
static buildBonuscaseFromArrays(bonuses, coords) {
|
||||||
if ( bonuses ) {
|
if (bonuses) {
|
||||||
let list = [];
|
const list = [];
|
||||||
let caseCheck = {};
|
const caseCheck = {};
|
||||||
for (let i=0; i<bonuses.length; i++) {
|
for (let i = 0; i < bonuses.length && i < coords.length; i++) {
|
||||||
let coord = cases[i]?.toUpperCase() || 'A1';
|
const coord = coords[i] == 'Fleuve' ? 'Fleuve' : (coords[i]?.toUpperCase() ?? 'A1');
|
||||||
let bonus = bonuses[i] || 0;
|
const bonus = bonuses[i] || 0;
|
||||||
if ( TMRUtility.verifyTMRCoord( coord ) && bonus > 0 && caseCheck[coord] == undefined ) {
|
if (TMRUtility.verifyTMRCoord(coord) && bonus > 0 && caseCheck[coord] == undefined) {
|
||||||
caseCheck[coord] = bonus;
|
caseCheck[coord] = bonus;
|
||||||
list.push( coord+":"+bonus );
|
list.push({ case: coord, bonus: bonus });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list.toString();
|
return RdDItemSort._bonuscaseListToString(list);
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static incrementBonusCase( actor, sort, coord ) {
|
static incrementBonusCase(actor, sort, coord) {
|
||||||
let bonusCaseList = this.buildBonusCaseList(sort.system.bonuscase, false);
|
if (TMRUtility.getTMR(coord).type == "fleuve") {
|
||||||
//console.log("ITEMSORT", sort, bonusCaseList);
|
coord = 'Fleuve';
|
||||||
|
}
|
||||||
|
const list = RdDItemSort.buildBonusCaseList(sort.system.bonuscase, false);
|
||||||
|
const bonus = Number(list.find(it => it.case == coord)?.bonus ?? 0);
|
||||||
|
const modified = { case: coord, bonus: bonus + 1 };
|
||||||
|
|
||||||
let found = false;
|
const bonuscase = RdDItemSort._bonuscaseListToString(
|
||||||
let StringList = [];
|
list.filter(it => it.case != coord).concat(modified)
|
||||||
for( let bc of bonusCaseList) {
|
);
|
||||||
if (bc.case == coord) { // Case existante
|
|
||||||
found = true;
|
|
||||||
bc.bonus = Number(bc.bonus) + 1;
|
|
||||||
}
|
|
||||||
StringList.push( bc.case+':'+bc.bonus );
|
|
||||||
}
|
|
||||||
if ( !found) { //Nouvelle case, bonus de 1
|
|
||||||
StringList.push(coord+':1');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sauvegarde/update
|
// Sauvegarde/update
|
||||||
let bonuscase = StringList.toString();
|
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }]);
|
||||||
//console.log("Bonus cae :", bonuscase);
|
|
||||||
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }] );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getCaseBonus( sort, coord) {
|
static getCaseBonus(sort, coord) {
|
||||||
let bonusCaseList = this.buildBonusCaseList(sort.system.bonuscase, false);
|
const isFleuve = TMRUtility.getTMR(coord).type == "fleuve";
|
||||||
for( let bc of bonusCaseList) {
|
|
||||||
if (bc.case == coord) { // Case existante
|
let bc = RdDItemSort.buildBonusCaseList(sort.system.bonuscase, false)
|
||||||
return Number(bc.bonus);
|
.filter(it => it.case == coord || (isFleuve && it.case == 'Fleuve'))
|
||||||
|
.find(it => true)
|
||||||
|
return Number(bc?.bonus ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static _bonuscaseListToString(list) {
|
||||||
|
return list.map(it => `${it.case}:${it.bonus}`)
|
||||||
|
.sort(Misc.ascending())
|
||||||
|
.join(',');
|
||||||
}
|
}
|
||||||
return 0;
|
static _bonuscaseStringToList(bonuscase) {
|
||||||
|
return (bonuscase ?? '').split(',').map(it => {
|
||||||
|
const b = it.split(':');
|
||||||
|
return { case: b[0], bonus: b[1] };
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
const BASE_TACHE_SOIN_BLESSURE = { type: "tache", img: 'systems/foundryvtt-reve-de-dragon/icons/competence_chirurgie.webp', system: { carac: "dexterite", competence: "Chirurgie", periodicite: "1 round", fatigue: 0, } }
|
|
||||||
const TACHES_SOIN_BLESSURE = {
|
|
||||||
'critique': { name: 'Blessure critique', system: { difficulte: -6, points_de_tache: 6 } },
|
|
||||||
'grave': { name: 'Blessure grave', system: { difficulte: -4, points_de_tache: 4 } },
|
|
||||||
'legere': { name: 'Blessure légère', system: { difficulte: -2, points_de_tache: 2 } },
|
|
||||||
}
|
|
||||||
|
|
||||||
export class RdDItemTache extends Item {
|
|
||||||
|
|
||||||
static prepareTacheSoin(gravite) {
|
|
||||||
const blessure = TACHES_SOIN_BLESSURE[gravite]
|
|
||||||
if (blessure) {
|
|
||||||
return mergeObject(duplicate(BASE_TACHE_SOIN_BLESSURE), blessure)
|
|
||||||
}
|
|
||||||
ui.notifications.warn(`Pas de tâche de soins pour une blessure ${gravite}`)
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,7 @@ import { DialogItemVente } from "./dialog-item-vente.js";
|
|||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { RdDHerbes } from "./rdd-herbes.js";
|
import { RdDHerbes } from "./rdd-herbes.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
import { RdDUtility } from "./rdd-utility.js";
|
import { RdDUtility } from "./rdd-utility.js";
|
||||||
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
||||||
import { RdDRaretes } from "./item/raretes.js";
|
import { RdDRaretes } from "./item/raretes.js";
|
||||||
@@ -31,9 +31,9 @@ const typesInventaire = {
|
|||||||
const typesObjetsOeuvres = ["oeuvre", "recettecuisine", "musique", "chant", "danse", "jeu"]
|
const typesObjetsOeuvres = ["oeuvre", "recettecuisine", "musique", "chant", "danse", "jeu"]
|
||||||
const typesObjetsDraconiques = ["queue", "ombre", "souffle", "tete", "signedraconique", "sortreserve", "rencontre"]
|
const typesObjetsDraconiques = ["queue", "ombre", "souffle", "tete", "signedraconique", "sortreserve", "rencontre"]
|
||||||
const typesObjetsConnaissance = ["meditation", "recettealchimique", "sort"]
|
const typesObjetsConnaissance = ["meditation", "recettealchimique", "sort"]
|
||||||
const typesObjetsEffet = ["possession", "poison", "maladie"]
|
const typesObjetsEffet = ["possession", "poison", "maladie", "blessure"]
|
||||||
const typesObjetsCompetence = ["competence", "competencecreature"]
|
const typesObjetsCompetence = ["competence", "competencecreature"]
|
||||||
const typesObjetsTemporels = ["poison", "maladie", "queue", "ombre", "souffle", "signedraconique", "rencontre"]
|
const typesObjetsTemporels = ["blessure", "poison", "maladie", "queue", "ombre", "souffle", "signedraconique", "rencontre"]
|
||||||
const typesEnvironnement = typesInventaireMateriel;
|
const typesEnvironnement = typesInventaireMateriel;
|
||||||
const encBrin = 0.00005; // un brin = 1 décigramme = 1/10g = 1/10000kg = 1/20000 enc
|
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
|
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
|
||||||
@@ -176,6 +176,7 @@ export class RdDItem extends Item {
|
|||||||
isBoisson() { return this.isNourritureBoisson() && this.system.boisson; }
|
isBoisson() { return this.isNourritureBoisson() && this.system.boisson; }
|
||||||
isAlcool() { return this.isNourritureBoisson() && this.system.boisson && this.system.alcoolise; }
|
isAlcool() { return this.isNourritureBoisson() && this.system.boisson && this.system.alcoolise; }
|
||||||
isHerbeAPotion() { return this.type == 'herbe' && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos'); }
|
isHerbeAPotion() { return this.type == 'herbe' && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos'); }
|
||||||
|
isBlessure() { return this.type == 'blessure' }
|
||||||
|
|
||||||
isPresentDansMilieux(milieux) {
|
isPresentDansMilieux(milieux) {
|
||||||
return this.getEnvironnements(milieux).length > 0
|
return this.getEnvironnements(milieux).length > 0
|
||||||
@@ -410,7 +411,7 @@ export class RdDItem extends Item {
|
|||||||
case 'potion': return await actor.consommerPotion(this, onActionItem);
|
case 'potion': return await actor.consommerPotion(this, onActionItem);
|
||||||
case 'livre': return await actor.actionLire(this);
|
case 'livre': return await actor.actionLire(this);
|
||||||
case 'conteneur': return await this.sheet.render(true);
|
case 'conteneur': return await this.sheet.render(true);
|
||||||
case 'herbe': return await actor.actionHerbe(this);
|
case 'herbe': return await actor.actionHerbe(this, onActionItem);
|
||||||
case 'queue': case 'ombre': return await actor.actionRefoulement(this);
|
case 'queue': case 'ombre': return await actor.actionRefoulement(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
199
module/item/blessure.js
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
import { RdDItem } from "../item.js";
|
||||||
|
import { Misc } from "../misc.js";
|
||||||
|
import { RdDTimestamp } from "../time/rdd-timestamp.js";
|
||||||
|
|
||||||
|
const BASE_TACHE_SOIN_BLESSURE = {
|
||||||
|
type: "tache",
|
||||||
|
img: 'systems/foundryvtt-reve-de-dragon/icons/competence_chirurgie.webp',
|
||||||
|
system: { carac: "dexterite", competence: "Chirurgie", periodicite: "1 round", fatigue: 0, }
|
||||||
|
}
|
||||||
|
const TACHES_SOIN_BLESSURE = {
|
||||||
|
6: { name: 'Blessure critique', system: { difficulte: -6, points_de_tache: 6 } },
|
||||||
|
4: { name: 'Blessure grave', system: { difficulte: -4, points_de_tache: 4 } },
|
||||||
|
2: { name: 'Blessure légère', system: { difficulte: -2, points_de_tache: 2 } },
|
||||||
|
}
|
||||||
|
|
||||||
|
const definitionsBlessures = [
|
||||||
|
{ type: "contusion", gravite: 0, label: 'Contusion/éraflure', max: 100, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/eraflure.webp" },
|
||||||
|
{ type: "legere", gravite: 2, label: 'Légère', max: 5, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
|
||||||
|
{ type: "grave", gravite: 4, label: 'Grave', max: 2, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
|
||||||
|
{ type: "critique", gravite: 6, label: 'Critique', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
|
||||||
|
{ type: "mort", gravite: 8, label: 'Mort', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/mort.webp" }
|
||||||
|
]
|
||||||
|
|
||||||
|
export class RdDItemBlessure extends RdDItem {
|
||||||
|
|
||||||
|
static get defaultIcon() {
|
||||||
|
return "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp";
|
||||||
|
}
|
||||||
|
|
||||||
|
prepareDerivedData() {
|
||||||
|
super.prepareDerivedData();
|
||||||
|
this.system.label = this.getLabelGravite()
|
||||||
|
}
|
||||||
|
|
||||||
|
static prepareTacheSoin(gravite) {
|
||||||
|
const tache = TACHES_SOIN_BLESSURE[gravite]
|
||||||
|
if (!tache) {
|
||||||
|
ui.notifications.warn(`Pas de tâche de soins pour une blessure ${gravite}`)
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return mergeObject(duplicate(BASE_TACHE_SOIN_BLESSURE), tache)
|
||||||
|
}
|
||||||
|
static async createBlessure(actor, gravite, localisation = '', attacker) {
|
||||||
|
const definition = RdDItemBlessure.getDefinition(gravite)
|
||||||
|
const blessure = {
|
||||||
|
name: definition.label,
|
||||||
|
type: 'blessure',
|
||||||
|
img: definition.icon,
|
||||||
|
system: {
|
||||||
|
gravite: gravite,
|
||||||
|
difficulte: - gravite,
|
||||||
|
localisation: localisation,
|
||||||
|
origine: attacker?.name ?? ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const blessures = await actor.createEmbeddedDocuments('Item', [blessure])
|
||||||
|
return blessures[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
static async createTacheSoinBlessure(actor, gravite) {
|
||||||
|
const tache = RdDItemBlessure.prepareTacheSoin(gravite)
|
||||||
|
if (tache) {
|
||||||
|
const taches = await actor.createEmbeddedDocuments('Item', [tache], { renderSheet: false });
|
||||||
|
return taches[0];
|
||||||
|
}
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
async updateTacheSoinBlessure(tache) {
|
||||||
|
if (tache) {
|
||||||
|
await tache.update({
|
||||||
|
system: {
|
||||||
|
itemId: this.id,
|
||||||
|
difficulte: Math.min(this.system.difficulte, tache.system.difficulte),
|
||||||
|
points_de_tache_courant: Math.max(0, this.system.premierssoins.tache)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async setSoinsBlessure(systemUpdate = {}) {
|
||||||
|
systemUpdate = mergeObject(systemUpdate, this.system, { overwrite: false }),
|
||||||
|
systemUpdate.soinscomplets.done = systemUpdate.premierssoins.done && systemUpdate.soinscomplets.done
|
||||||
|
await this.update({
|
||||||
|
img: this.getImgSoins(systemUpdate.gravite, systemUpdate.soinscomplets.done),
|
||||||
|
system: systemUpdate
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async recuperationBlessure({ actor, timestamp, message, isMaladeEmpoisonne, blessures }) {
|
||||||
|
if (this.parent != actor || actor == undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (new RdDTimestamp(this.system.temporel.fin).compare(timestamp) > 0) {
|
||||||
|
// attente periode
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.system.gravite > 0) {
|
||||||
|
const update = { system: { premierssoins: { bonus: 0 }, soinscomplets: { bonus: 0 } } }
|
||||||
|
const gravite = this.system.gravite;
|
||||||
|
const graviteMoindre = gravite - 2;
|
||||||
|
const moindres = blessures.filter(it => it.system.gravite == graviteMoindre, 'blessures').length
|
||||||
|
const label = this.getLabelGravite();
|
||||||
|
|
||||||
|
let rolled = await actor.jetRecuperationConstitution(this.system.soinscomplets.bonus, message);
|
||||||
|
|
||||||
|
if (rolled.isETotal) {
|
||||||
|
message.content += ` -- une blessure ${label} s'infecte (temps de guérison augmenté de ${gravite} jours, perte de vie)`;
|
||||||
|
await actor.santeIncDec("vie", -1);
|
||||||
|
mergeObject(update, {
|
||||||
|
system: { fin: { indexDate: timestamp.addJours(gravite).indexDate } }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!isMaladeEmpoisonne && rolled.isSuccess && this.peutRetrograder(graviteMoindre, moindres)) {
|
||||||
|
message.content += ` -- une blessure ${label} cicatrise`;
|
||||||
|
mergeObject(update, {
|
||||||
|
system: { gravite: graviteMoindre, fin: { indexDate: timestamp.addJours(graviteMoindre).indexDate } }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
message.content += ` -- une blessure ${label} reste stable`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await this.update(update);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
peutRetrograder(graviteMoindre, moindres) {
|
||||||
|
return moindres < RdDItemBlessure.getDefinition(graviteMoindre).max
|
||||||
|
}
|
||||||
|
|
||||||
|
async calculerFinPeriodeTemporel(debut) {
|
||||||
|
return await debut.nouveauJour().addJours(this.system.gravite);
|
||||||
|
}
|
||||||
|
|
||||||
|
async onFinPeriode(oldTimestamp, newTimestamp) {
|
||||||
|
if (this.system.gravite <= 0) {
|
||||||
|
await super.onFinPeriode(oldTimestamp, newTimestamp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getImgSoins(gravite, soins) {
|
||||||
|
let img = 'blessure'
|
||||||
|
if (gravite > 6) {
|
||||||
|
img = 'mort'
|
||||||
|
}
|
||||||
|
if (gravite <= 0) {
|
||||||
|
img = 'eraflure'
|
||||||
|
}
|
||||||
|
return `systems/foundryvtt-reve-de-dragon/icons/sante/${soins ? 'blessure-soins' : img}.webp`
|
||||||
|
}
|
||||||
|
|
||||||
|
getLabelGravite() {
|
||||||
|
return RdDItemBlessure.getDefinition(this.system.gravite).label
|
||||||
|
}
|
||||||
|
|
||||||
|
static getDefinition(gravite) {
|
||||||
|
return definitionsBlessures.sort(Misc.ascending(it => it.gravite))
|
||||||
|
.find(it => it.gravite >= gravite);
|
||||||
|
}
|
||||||
|
static maxBlessures(gravite) {
|
||||||
|
return RdDItemBlessure.getDefinition(gravite).max
|
||||||
|
}
|
||||||
|
|
||||||
|
isContusion() {
|
||||||
|
return this.system.gravite <= 0
|
||||||
|
}
|
||||||
|
isLegere() {
|
||||||
|
return this.system.gravite > 0 && this.system.gravite <= 2
|
||||||
|
}
|
||||||
|
isGrave() {
|
||||||
|
return this.system.gravite > 2 && this.system.gravite <= 4
|
||||||
|
}
|
||||||
|
isCritique() {
|
||||||
|
return this.system.gravite > 4 && this.system.gravite <= 6
|
||||||
|
}
|
||||||
|
isMort() {
|
||||||
|
return this.system.gravite > 6
|
||||||
|
}
|
||||||
|
|
||||||
|
getProprietes() {
|
||||||
|
return [
|
||||||
|
RdDItem.propertyIfDefined('Causée par', this.system.origine, this.system.origine),
|
||||||
|
`<b>Heure et Date</b>: ${new RdDTimestamp(this.system.temporel.debut).formatDateHeure()}`,
|
||||||
|
RdDItem.propertyIfDefined('Blessé', this.parent?.name, this.parent),
|
||||||
|
`<b>Localisation</b>: ${this.system.localisation}`,
|
||||||
|
`<b>Gravité</b>: ${RdDItemBlessure.getDefinition(this.system.gravite).label}`,
|
||||||
|
`<b>Difficulté des soins</b>: ${this.system.difficulte}`,
|
||||||
|
(this.system.soinscomplets.done ?
|
||||||
|
`<b>Bonus soins complets</b>: ${this.system.soinscomplets.bonus}` :
|
||||||
|
(this.system.premierssoins.done ?
|
||||||
|
`<b>Bonus premiers soins</b>: ${this.system.premierssoins.bonus}` :
|
||||||
|
`<b>Points de tâche</b>: ${this.system.premierssoins.tache}`
|
||||||
|
)
|
||||||
|
),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { RdDItem } from "../item.js";
|
import { RdDItem } from "../item.js";
|
||||||
import { Misc } from "../misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { RdDTimestamp } from "../rdd-timestamp.js";
|
import { RdDTimestamp } from "../time/rdd-timestamp.js";
|
||||||
|
|
||||||
export class RdDItemMaladie extends RdDItem {
|
export class RdDItemMaladie extends RdDItem {
|
||||||
|
|
||||||
|
|||||||
29
module/item/sheet-blessure.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import { RdDItemSheet } from "../item-sheet.js";
|
||||||
|
|
||||||
|
export class RdDBlessureItemSheet extends RdDItemSheet {
|
||||||
|
|
||||||
|
static get ITEM_TYPE() { return "blessure" };
|
||||||
|
|
||||||
|
async getData() {
|
||||||
|
const formData = await super.getData();
|
||||||
|
formData.disabled = formData.options.isGM || formData.options.isOwned ? '' : 'disabled';
|
||||||
|
return formData;
|
||||||
|
}
|
||||||
|
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
|
||||||
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
|
this.html.find('[name="premierssoins-done"]').change(async event => {
|
||||||
|
await this.item.setSoinsBlessure({ premierssoins: { done: event.currentTarget.checked } });
|
||||||
|
});
|
||||||
|
this.html.find('[name="soinscomplets-done"]').change(async event => {
|
||||||
|
await this.item.setSoinsBlessure({ soinscomplets: { done: event.currentTarget.checked } })
|
||||||
|
});
|
||||||
|
this.html.find('[name="system-gravite"]').change(async event => {
|
||||||
|
const gravite = Number(event.currentTarget.value)
|
||||||
|
await this.item.setSoinsBlessure({ gravite: gravite, difficulte: - gravite })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@ import { RdDItem, defaultItemImg } from "../item.js";
|
|||||||
import { Misc } from "../misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { RdDDice } from "../rdd-dice.js";
|
import { RdDDice } from "../rdd-dice.js";
|
||||||
import { RdDRollTables } from "../rdd-rolltables.js";
|
import { RdDRollTables } from "../rdd-rolltables.js";
|
||||||
import { RdDTimestamp } from "../rdd-timestamp.js";
|
import { RdDTimestamp } from "../time/rdd-timestamp.js";
|
||||||
import { TMRType, TMRUtility } from "../tmr-utility.js";
|
import { TMRType, TMRUtility } from "../tmr-utility.js";
|
||||||
|
|
||||||
const tableSignesIndicatifs = [
|
const tableSignesIndicatifs = [
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { LOG_HEAD, SYSTEM_RDD } from "./constants.js";
|
|||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
import { Monnaie } from "./item-monnaie.js";
|
import { Monnaie } from "./item-monnaie.js";
|
||||||
import { RdDItem } from "./item.js";
|
import { RdDItem } from "./item.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
import { RdDRaretes } from "./item/raretes.js";
|
import { RdDRaretes } from "./item/raretes.js";
|
||||||
|
|
||||||
class Migration {
|
class Migration {
|
||||||
@@ -416,6 +416,48 @@ class _10_5_0_UpdatePeriodicite extends Migration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _10_7_0_MigrationBlessures extends Migration {
|
||||||
|
get code() { return "migration-blessures"; }
|
||||||
|
get version() { return "10.7.0"; }
|
||||||
|
|
||||||
|
async migrate() {
|
||||||
|
const timestamp = game.system.rdd.calendrier.getTimestamp()
|
||||||
|
await Promise.all(game.actors.filter(it => it.isPersonnage() || it.isCreature())
|
||||||
|
.map(async (actor) => {
|
||||||
|
const legeres = actor.system.blessures?.legeres.liste.filter(it => it.active).map(it => this.creerBlessure(2, 'légère', it, timestamp)) ?? [];
|
||||||
|
const graves = actor.system.blessures?.graves.liste.filter(it => it.active).map(it => this.creerBlessure(4, 'grave', it, timestamp)) ?? [];
|
||||||
|
const critiques = actor.system.blessures?.critiques.liste.filter(it => it.active).map(it => this.creerBlessure(6, 'critique', it, timestamp));
|
||||||
|
const blessures = legeres.concat(graves).concat(critiques);
|
||||||
|
if (blessures.length > 0) {
|
||||||
|
await actor.createEmbeddedDocuments("Item", blessures);
|
||||||
|
}
|
||||||
|
await actor.update({
|
||||||
|
'system.blessures.legeres.liste': [],
|
||||||
|
'system.blessures.graves.liste': [],
|
||||||
|
'system.blessures.critiques.liste': []
|
||||||
|
})
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
creerBlessure(gravite, graviteTexte, blessure, timestamp) {
|
||||||
|
const dateBlessure = timestamp.addJours(-blessure.jours);
|
||||||
|
const datePremiereRecup = dateBlessure.addJours(gravite);
|
||||||
|
return {
|
||||||
|
name: `Blessure ${graviteTexte}`,
|
||||||
|
type: 'blessure',
|
||||||
|
img: `systems/foundryvtt-reve-de-dragon/icons/sante/blessure${blessure.psdone ? '-soins' : ''}.webp`,
|
||||||
|
system: {
|
||||||
|
gravite: gravite,
|
||||||
|
difficulte: -gravite,
|
||||||
|
debut: { indexDate: dateBlessure.indexDate, indexMinute: 0 },
|
||||||
|
fin: { indexDate: datePremiereRecup.indexDate, indexMinute: 0 },
|
||||||
|
premierssoins: { done: blessure.psdone, bonus: blessure.premiers_soins },
|
||||||
|
soinscomplets: { done: blessure.scdone, bonus: blessure.soins_complets },
|
||||||
|
localisation: blessure.localisation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class Migrations {
|
export class Migrations {
|
||||||
static getMigrations() {
|
static getMigrations() {
|
||||||
return [
|
return [
|
||||||
@@ -431,6 +473,7 @@ export class Migrations {
|
|||||||
new _10_3_17_Monnaies(),
|
new _10_3_17_Monnaies(),
|
||||||
new _10_4_6_ServicesEnCommerces(),
|
new _10_4_6_ServicesEnCommerces(),
|
||||||
new _10_5_0_UpdatePeriodicite(),
|
new _10_5_0_UpdatePeriodicite(),
|
||||||
|
new _10_7_0_MigrationBlessures(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,6 +119,17 @@ export class Misc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns an array of incremental integers (including from / excluding to).
|
||||||
|
* if max<min, the array is decrementing integers
|
||||||
|
*/
|
||||||
|
static intArray(from, to) {
|
||||||
|
if (from > to) {
|
||||||
|
return Array.from(Array(from - to).keys()).map(i => from - i)
|
||||||
|
}
|
||||||
|
return Array.from(Array(to - from).keys()).map(i => from + i)
|
||||||
|
}
|
||||||
|
|
||||||
static distinct(array) {
|
static distinct(array) {
|
||||||
return [...new Set(array)];
|
return [...new Set(array)];
|
||||||
}
|
}
|
||||||
@@ -228,4 +239,15 @@ export class Misc {
|
|||||||
}
|
}
|
||||||
return subset;
|
return subset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cssRotation(angle) {
|
||||||
|
const rotation = `rotate(${angle}deg)`;
|
||||||
|
return {
|
||||||
|
'transform': rotation,
|
||||||
|
'-ms-transform': rotation,
|
||||||
|
'-moz-transform': rotation,
|
||||||
|
'-webkit-transform': rotation,
|
||||||
|
'-o-transform': rotation
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
|
|
||||||
/**
|
|
||||||
* Extend the base Dialog entity by defining a custom window to perform roll.
|
|
||||||
* @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 => {} }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Common conf
|
|
||||||
let dialogConf = { content: html, title: "Editeur d'Astrologie", buttons: myButtons, default: "saveButton" };
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
activateListeners(html) {
|
|
||||||
super.activateListeners(html);
|
|
||||||
this.html = html;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async resetNombreAstraux() {
|
|
||||||
game.system.rdd.calendrier.resetNombreAstral();
|
|
||||||
await game.system.rdd.calendrier.rebuildListeNombreAstral();
|
|
||||||
|
|
||||||
game.system.rdd.calendrier.showAstrologieEditor();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
updateData(calendrierData) {
|
|
||||||
this.calendrierData = duplicate(calendrierData);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
import { RdDItemCompetence } from "./item-competence.js";
|
|
||||||
import { Misc } from "./misc.js";
|
|
||||||
import { SYSTEM_SOCKET_ID } from "./constants.js";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extend the base Dialog entity by defining a custom window to perform roll.
|
|
||||||
* @extends {Dialog}
|
|
||||||
*/
|
|
||||||
export class RdDAstrologieJoueur extends Dialog {
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static async create(actor) {
|
|
||||||
|
|
||||||
let dialogData = {
|
|
||||||
nombres: this.organizeNombres(actor),
|
|
||||||
dates: game.system.rdd.calendrier.getJoursSuivants(10),
|
|
||||||
etat: actor.getEtatGeneral(),
|
|
||||||
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
|
|
||||||
astrologie: RdDItemCompetence.findCompetence(actor.items, 'Astrologie')
|
|
||||||
}
|
|
||||||
const html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-astrologie-joueur.html', dialogData);
|
|
||||||
|
|
||||||
const options = { classes: ["rdd-roll-dialog"], width: 600, height: 'fit-content', 'z-index': 99999 };
|
|
||||||
const dialog = new RdDAstrologieJoueur(html, actor, dialogData, options);
|
|
||||||
dialog.render(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
constructor(html, actor, dialogData, dialogOptions) {
|
|
||||||
const dialogConf = {
|
|
||||||
title: "Nombres Astraux",
|
|
||||||
content: html,
|
|
||||||
default: "saveButton",
|
|
||||||
buttons: {
|
|
||||||
saveButton: { label: "Fermer", callback: html => {} }
|
|
||||||
},
|
|
||||||
};
|
|
||||||
super(dialogConf, dialogOptions);
|
|
||||||
|
|
||||||
this.actor = actor;
|
|
||||||
this.dataNombreAstral = duplicate(dialogData);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
activateListeners(html) {
|
|
||||||
super.activateListeners(html);
|
|
||||||
this.html = html;
|
|
||||||
|
|
||||||
this.html.find("[name='diffConditions']").val(0);
|
|
||||||
|
|
||||||
this.html.find('[name="jet-astrologie"]').click((event) => {
|
|
||||||
this.requestJetAstrologie();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static organizeNombres(actor) {
|
|
||||||
let itemNombres = actor.listItems('nombreastral');
|
|
||||||
let itemFiltered = {};
|
|
||||||
for (let item of itemNombres) {
|
|
||||||
if (itemFiltered[item.system.jourindex]) {
|
|
||||||
itemFiltered[item.system.jourindex].listValues.push(item.system.value);
|
|
||||||
} else {
|
|
||||||
itemFiltered[item.system.jourindex] = {
|
|
||||||
listValues: [item.system.value],
|
|
||||||
jourlabel: item.system.jourlabel
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return itemFiltered;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
requestJetAstrologie() {
|
|
||||||
let socketData = {
|
|
||||||
id: this.actor.id,
|
|
||||||
carac_vue: this.actor.system.carac['vue'].value,
|
|
||||||
etat: this.dataNombreAstral.etat,
|
|
||||||
astrologie: this.dataNombreAstral.astrologie,
|
|
||||||
conditions: this.html.find('[name="diffConditions"]').val(),
|
|
||||||
date: this.html.find('[name="joursAstrologie"]').val(),
|
|
||||||
userId: game.user.id
|
|
||||||
}
|
|
||||||
if (Misc.isUniqueConnectedGM()) {
|
|
||||||
game.system.rdd.calendrier.requestNombreAstral(socketData);
|
|
||||||
} else {
|
|
||||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
|
||||||
msg: "msg_request_nombre_astral",
|
|
||||||
data: socketData
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -28,7 +28,7 @@ export class RdDBonus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static dmg(rollData, dmgActor, isCauchemar = false) {
|
static dmg(rollData, dmgActor, isEntiteIncarnee = false) {
|
||||||
let dmg = { total: 0 };
|
let dmg = { total: 0 };
|
||||||
if (rollData.arme && rollData.arme.name.toLowerCase() == "esquive") {
|
if (rollData.arme && rollData.arme.name.toLowerCase() == "esquive") {
|
||||||
// Specific case management
|
// Specific case management
|
||||||
@@ -41,7 +41,7 @@ export class RdDBonus {
|
|||||||
dmg.dmgSurprise = RdDBonus.dmgBonus(rollData.ajustements?.attaqueDefenseurSurpris.used);
|
dmg.dmgSurprise = RdDBonus.dmgBonus(rollData.ajustements?.attaqueDefenseurSurpris.used);
|
||||||
dmg.dmgActor = rollData.selectedCarac ? RdDBonus._dmgPerso(dmgActor, rollData.selectedCarac.label, dmg.dmgArme) : 0;
|
dmg.dmgActor = rollData.selectedCarac ? RdDBonus._dmgPerso(dmgActor, rollData.selectedCarac.label, dmg.dmgArme) : 0;
|
||||||
dmg.total = dmg.dmgSurprise + dmg.dmgTactique + dmg.dmgArme + dmg.dmgActor + dmg.dmgParticuliere;
|
dmg.total = dmg.dmgSurprise + dmg.dmgTactique + dmg.dmgArme + dmg.dmgActor + dmg.dmgParticuliere;
|
||||||
dmg.mortalite = RdDBonus._calculMortalite(rollData, isCauchemar)
|
dmg.mortalite = RdDBonus._calculMortalite(rollData, isEntiteIncarnee)
|
||||||
}
|
}
|
||||||
return dmg;
|
return dmg;
|
||||||
}
|
}
|
||||||
@@ -62,11 +62,8 @@ export class RdDBonus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _calculMortalite(rollData, isCauchemar) {
|
static _calculMortalite(rollData, isEntiteIncarnee) {
|
||||||
if (isCauchemar) {
|
return isEntiteIncarnee ? "entiteincarnee"
|
||||||
return "cauchemar";
|
|
||||||
}
|
|
||||||
return isCauchemar ? "cauchemar"
|
|
||||||
: rollData.dmg?.mortalite
|
: rollData.dmg?.mortalite
|
||||||
?? rollData.arme?.system.mortalite
|
?? rollData.arme?.system.mortalite
|
||||||
?? "mortel";
|
?? "mortel";
|
||||||
|
|||||||
@@ -1,512 +0,0 @@
|
|||||||
import { RdDCalendrierEditeur } from "./rdd-calendrier-editeur.js";
|
|
||||||
import { RdDAstrologieEditeur } from "./rdd-astrologie-editeur.js";
|
|
||||||
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
|
||||||
import { RdDUtility } from "./rdd-utility.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";
|
|
||||||
import { DialogChateauDormant } from "./sommeil/dialog-chateau-dormant.js";
|
|
||||||
import { ReglesOptionelles } from "./settings/regles-optionelles.js";
|
|
||||||
|
|
||||||
const RDD_JOUR_PAR_MOIS = 28;
|
|
||||||
const RDD_HEURES_PAR_JOUR = 12;
|
|
||||||
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 {
|
|
||||||
|
|
||||||
static get defaultOptions() {
|
|
||||||
return mergeObject(super.defaultOptions, {
|
|
||||||
template: "systems/foundryvtt-reve-de-dragon/templates/calendar-template.html",
|
|
||||||
popOut: false,
|
|
||||||
resizable: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static createCalendrierPos() {
|
|
||||||
return { top: 200, left: 200 };
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
// position
|
|
||||||
this.calendrierPos = duplicate(game.settings.get(SYSTEM_RDD, "calendrier-pos"));
|
|
||||||
if (this.calendrierPos == undefined || this.calendrierPos.top == undefined) {
|
|
||||||
this.calendrierPos = RdDCalendrier.createCalendrierPos();
|
|
||||||
game.settings.set(SYSTEM_RDD, "calendrier-pos", this.calendrierPos);
|
|
||||||
}
|
|
||||||
// Calendrier
|
|
||||||
this.timestamp = RdDTimestamp.getWorldTime();
|
|
||||||
|
|
||||||
if (Misc.isUniqueConnectedGM()) { // Uniquement si GM
|
|
||||||
RdDTimestamp.setWorldTime(this.timestamp);
|
|
||||||
this.listeNombreAstral = this.getListeNombreAstral();
|
|
||||||
this.rebuildListeNombreAstral(HIDE_DICE); // Ensure always up-to-date
|
|
||||||
}
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
/** @override */
|
|
||||||
async activateListeners(html) {
|
|
||||||
super.activateListeners(html);
|
|
||||||
this.html = html;
|
|
||||||
|
|
||||||
this.updateDisplay();
|
|
||||||
|
|
||||||
this.html.find('.ajout-chronologie').click(ev => DialogChronologie.create());
|
|
||||||
|
|
||||||
this.html.find('.calendar-btn').click(ev => this.onCalendarButton(ev));
|
|
||||||
|
|
||||||
this.html.find('.calendar-set-datetime').click(ev => {
|
|
||||||
ev.preventDefault();
|
|
||||||
this.showCalendarEditor();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.calendar-astrologie').click(ev => {
|
|
||||||
ev.preventDefault();
|
|
||||||
this.showAstrologieEditor();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.calendar-title').mousedown(ev => {
|
|
||||||
ev.preventDefault();
|
|
||||||
ev = ev || window.event;
|
|
||||||
let isRightMB = false;
|
|
||||||
if ("which" in ev) { // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
|
|
||||||
isRightMB = ev.which == 3;
|
|
||||||
} else if ("button" in ev) { // IE, Opera
|
|
||||||
isRightMB = ev.button == 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isRightMB) {
|
|
||||||
dragElement(document.getElementById("calendar-time-container"));
|
|
||||||
let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
|
|
||||||
|
|
||||||
function dragElement(elmnt) {
|
|
||||||
elmnt.onmousedown = dragMouseDown;
|
|
||||||
function dragMouseDown(e) {
|
|
||||||
e = e || window.event;
|
|
||||||
e.preventDefault();
|
|
||||||
pos3 = e.clientX;
|
|
||||||
pos4 = e.clientY;
|
|
||||||
|
|
||||||
document.onmouseup = closeDragElement;
|
|
||||||
document.onmousemove = elementDrag;
|
|
||||||
}
|
|
||||||
|
|
||||||
function elementDrag(e) {
|
|
||||||
e = e || window.event;
|
|
||||||
e.preventDefault();
|
|
||||||
// calculate the new cursor position:
|
|
||||||
pos1 = pos3 - e.clientX;
|
|
||||||
pos2 = pos4 - e.clientY;
|
|
||||||
pos3 = e.clientX;
|
|
||||||
pos4 = e.clientY;
|
|
||||||
// set the element's new position:
|
|
||||||
elmnt.style.bottom = undefined
|
|
||||||
elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
|
|
||||||
elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeDragElement() {
|
|
||||||
// stop moving when mouse button is released:
|
|
||||||
elmnt.onmousedown = undefined;
|
|
||||||
document.onmouseup = undefined;
|
|
||||||
document.onmousemove = undefined;
|
|
||||||
let xPos = (elmnt.offsetLeft - pos1) > window.innerWidth ? window.innerWidth - 200 : (elmnt.offsetLeft - pos1);
|
|
||||||
let yPos = (elmnt.offsetTop - pos2) > window.innerHeight - 20 ? window.innerHeight - 100 : (elmnt.offsetTop - pos2)
|
|
||||||
xPos = xPos < 0 ? 0 : xPos;
|
|
||||||
yPos = yPos < 0 ? 0 : yPos;
|
|
||||||
if (xPos != (elmnt.offsetLeft - pos1) || yPos != (elmnt.offsetTop - pos2)) {
|
|
||||||
elmnt.style.top = (yPos) + "px";
|
|
||||||
elmnt.style.left = (xPos) + "px";
|
|
||||||
}
|
|
||||||
game.system.rdd.calendrier.calendrierPos.top = yPos;
|
|
||||||
game.system.rdd.calendrier.calendrierPos.left = xPos;
|
|
||||||
if (game.user.isGM) {
|
|
||||||
game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (isRightMB) {
|
|
||||||
game.system.rdd.calendrier.calendrierPos.top = 200;
|
|
||||||
game.system.rdd.calendrier.calendrierPos.left = 200;
|
|
||||||
if (game.user.isGM) {
|
|
||||||
game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos));
|
|
||||||
}
|
|
||||||
this.setPos(game.system.rdd.calendrier.calendrierPos);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getListeNombreAstral() {
|
|
||||||
return game.settings.get(SYSTEM_RDD, "liste-nombre-astral") ?? [];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
dateCourante() {
|
|
||||||
return this.timestamp.formatDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
isAfterIndexDate(indexDate) {
|
|
||||||
// TODO: standardize
|
|
||||||
return indexDate < this.timestamp.indexDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
heureCourante() { return RdDTimestamp.definition(this.timestamp.heure); }
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getCurrentMinute() { return this.timestamp.indexMinute; }
|
|
||||||
|
|
||||||
getTimestamp() {
|
|
||||||
return this.timestamp;
|
|
||||||
}
|
|
||||||
getTimestampFinChateauDormant(nbJours = 0) {
|
|
||||||
return this.timestamp.nouveauJour().addJours(nbJours);
|
|
||||||
}
|
|
||||||
|
|
||||||
getTimestampFinHeure(nbHeures = 0) {
|
|
||||||
return this.timestamp.nouvelleHeure().addHeures(nbHeures);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getIndexFromDate(jour, mois) {
|
|
||||||
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(count) {
|
|
||||||
let jours = [];
|
|
||||||
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(indexDate, showDice = SHOW_DICE) {
|
|
||||||
const nombreAstral = await RdDDice.rollTotal("1dh", { showDice: showDice, rollMode: "selfroll" });
|
|
||||||
const dateFuture = RdDTimestamp.formatIndexDate(indexDate);
|
|
||||||
if (showDice != HIDE_DICE) {
|
|
||||||
ChatMessage.create({
|
|
||||||
whisper: ChatMessage.getWhisperRecipients("GM"),
|
|
||||||
content: `Le chiffre astrologique du ${dateFuture} sera le ${nombreAstral}`
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
nombreAstral: nombreAstral,
|
|
||||||
valeursFausses: [],
|
|
||||||
index: indexDate
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
resetNombreAstral() {
|
|
||||||
this.listeNombreAstral = [];
|
|
||||||
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", []);
|
|
||||||
|
|
||||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
|
||||||
msg: "msg_reset_nombre_astral",
|
|
||||||
data: {}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {*} indexDate la date pour laquelle obtenir le nombre astral. Si undefined, on prend la date du jour
|
|
||||||
* @returns le nombre astral pour la date, ou pour la date du jour si la date n'est pas fournie.
|
|
||||||
* Si aucun nombre astral n'est trouvé, retourne 0 (cas où l'on demanderait un nombre astral en dehors des 12 jours courant et à venir)
|
|
||||||
*/
|
|
||||||
getNombreAstral(indexDate = undefined) {
|
|
||||||
if (indexDate == undefined) {
|
|
||||||
indexDate = this.timestamp.indexDate;
|
|
||||||
}
|
|
||||||
const listNombreAstral = this.getListeNombreAstral();
|
|
||||||
let astralData = listNombreAstral.find((nombreAstral, i) => nombreAstral.index == indexDate);
|
|
||||||
return astralData?.nombreAstral ?? 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async rebuildListeNombreAstral(showDice = HIDE_DICE) {
|
|
||||||
if (Misc.isUniqueConnectedGM()) {
|
|
||||||
let newList = [];
|
|
||||||
for (let i = 0; i < MAX_NOMBRE_ASTRAL; i++) {
|
|
||||||
let dayIndex = this.timestamp.indexDate + i;
|
|
||||||
let na = this.listeNombreAstral.find(n => n.index == dayIndex);
|
|
||||||
if (na) {
|
|
||||||
newList[i] = na;
|
|
||||||
} else {
|
|
||||||
newList[i] = await this.ajouterNombreAstral(dayIndex, showDice);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.listeNombreAstral = newList;
|
|
||||||
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", newList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async setNewTimestamp(newTimestamp) {
|
|
||||||
const oldTimestamp = this.timestamp;
|
|
||||||
await Promise.all(game.actors.map(async actor => await actor.onTimeChanging(oldTimestamp, newTimestamp)));
|
|
||||||
RdDTimestamp.setWorldTime(newTimestamp);
|
|
||||||
if (oldTimestamp.indexDate + 1 == newTimestamp.indexDate && ReglesOptionelles.isUsing("chateau-dormant-gardien")) {
|
|
||||||
await DialogChateauDormant.create();
|
|
||||||
}
|
|
||||||
this.timestamp = newTimestamp;
|
|
||||||
await this.rebuildListeNombreAstral();
|
|
||||||
this.updateDisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async onCalendarButton(ev) {
|
|
||||||
ev.preventDefault();
|
|
||||||
const calendarAvance = ev.currentTarget.attributes['data-calendar-avance'];
|
|
||||||
const calendarSet = ev.currentTarget.attributes['data-calendar-set'];
|
|
||||||
if (calendarAvance) {
|
|
||||||
await this.incrementTime(Number(calendarAvance.value));
|
|
||||||
}
|
|
||||||
else if (calendarSet) {
|
|
||||||
this.positionnerHeure(Number(calendarSet.value));
|
|
||||||
}
|
|
||||||
this.updateDisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async incrementTime(minutes = 0) {
|
|
||||||
await this.setNewTimestamp(this.timestamp.addMinutes(minutes));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async incrementerJour() {
|
|
||||||
await this.setNewTimestamp(this.timestamp.nouveauJour());
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async positionnerHeure(heure) {
|
|
||||||
const indexDate = this.timestamp.indexDate;
|
|
||||||
const addDay = this.timestamp.heure < heure ? 0 : 1;
|
|
||||||
const newTimestamp = new RdDTimestamp({ indexDate: indexDate + addDay}).addHeures(heure);
|
|
||||||
await this.setNewTimestamp(newTimestamp)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
fillCalendrierData(formData = {}) {
|
|
||||||
mergeObject(formData, this.timestamp.toCalendrier());
|
|
||||||
formData.isGM = game.user.isGM;
|
|
||||||
return formData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getLectureAstrologieDifficulte(dateIndex) {
|
|
||||||
let indexNow = this.timestamp.indexDate;
|
|
||||||
let diffDay = dateIndex - indexNow;
|
|
||||||
return - Math.floor(diffDay / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async requestNombreAstral(request) {
|
|
||||||
const actor = game.actors.get(request.id);
|
|
||||||
if (Misc.isUniqueConnectedGM()) { // Only once
|
|
||||||
console.log(request);
|
|
||||||
let jourDiff = this.getLectureAstrologieDifficulte(request.date);
|
|
||||||
let niveau = Number(request.astrologie.system.niveau) + Number(request.conditions) + Number(jourDiff) + Number(request.etat);
|
|
||||||
let rollData = {
|
|
||||||
caracValue: request.carac_vue,
|
|
||||||
finalLevel: niveau,
|
|
||||||
showDice: HIDE_DICE,
|
|
||||||
rollMode: "blindroll"
|
|
||||||
};
|
|
||||||
await RdDResolutionTable.rollData(rollData);
|
|
||||||
request.rolled = rollData.rolled;
|
|
||||||
request.isValid = request.rolled.isSuccess;
|
|
||||||
request.nbAstral = this.getNombreAstral(request.date);
|
|
||||||
|
|
||||||
if (request.rolled.isSuccess) {
|
|
||||||
if (request.rolled.isPart) {
|
|
||||||
// Gestion expérience (si existante)
|
|
||||||
request.competence = actor.getCompetence("astrologie")
|
|
||||||
request.selectedCarac = actor.system.carac["vue"];
|
|
||||||
actor.appliquerAjoutExperience(request, 'hide');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
request.nbAstral = await RdDDice.rollTotal("1dhr" + request.nbAstral, {
|
|
||||||
rollMode: "selfroll", showDice: HIDE_DICE
|
|
||||||
});
|
|
||||||
// Mise à jour des nombres astraux du joueur
|
|
||||||
this.addNbAstralIncorect(request.id, request.date, request.nbAstral);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Misc.getActiveUser(request.userId)?.isGM) {
|
|
||||||
RdDUtility.responseNombreAstral(request);
|
|
||||||
} else {
|
|
||||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
|
||||||
msg: "msg_response_nombre_astral",
|
|
||||||
data: request
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
addNbAstralIncorect(actorId, date, nbAstral) {
|
|
||||||
let astralData = this.listeNombreAstral.find((nombreAstral, i) => nombreAstral.index == date);
|
|
||||||
astralData.valeursFausses.push({ actorId: actorId, nombreAstral: nbAstral });
|
|
||||||
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", this.listeNombreAstral);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ecartHeureChance(heureNaissance, nombreAstral, heure) {
|
|
||||||
return (heureNaissance + nombreAstral - heure) % RDD_HEURES_PAR_JOUR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getAjustementAstrologique(heureNaissance, name = undefined) {
|
|
||||||
let defHeure = RdDTimestamp.findHeure(heureNaissance);
|
|
||||||
if (defHeure) {
|
|
||||||
return RdDCalendrier.ajustementAstrologiqueHeure(defHeure.heure, this.getNombreAstral(), this.timestamp.heure);
|
|
||||||
}
|
|
||||||
else if (name) {
|
|
||||||
ui.notifications.warn(name + " n'a pas d'heure de naissance, ou elle est incorrecte : " + heureNaissance);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ui.notifications.warn(heureNaissance + " ne correspond pas à une heure de naissance");
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ajustementAstrologiqueHeure(hn, nbAstral, heure) {
|
|
||||||
switch (RdDCalendrier.ecartHeureChance(hn, nbAstral, heure)) {
|
|
||||||
case 0: return 4;
|
|
||||||
case 4: case 8: return 2;
|
|
||||||
case 6: return -4;
|
|
||||||
case 3: case 9: return -2;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getData() {
|
|
||||||
let formData = super.getData();
|
|
||||||
this.fillCalendrierData(formData);
|
|
||||||
this.setPos(this.calendrierPos);
|
|
||||||
return formData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
setPos(pos) {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
function check() {
|
|
||||||
let elmnt = document.getElementById("calendar-time-container");
|
|
||||||
if (elmnt) {
|
|
||||||
elmnt.style.bottom = undefined;
|
|
||||||
let xPos = (pos.left) > window.innerWidth ? window.innerWidth - 200 : pos.left;
|
|
||||||
let yPos = (pos.top) > window.innerHeight - 20 ? window.innerHeight - 100 : pos.top;
|
|
||||||
elmnt.style.top = (yPos) + "px";
|
|
||||||
elmnt.style.left = (xPos) + "px";
|
|
||||||
resolve();
|
|
||||||
} else {
|
|
||||||
setTimeout(check, 30);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
check();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
updateDisplay() {
|
|
||||||
let calendrier = this.fillCalendrierData();
|
|
||||||
// Rebuild text du calendrier
|
|
||||||
let dateHTML = `${calendrier.jourDuMois} ${calendrier.mois.label} (${calendrier.mois.saison}) de l'année ${calendrier.annee}`
|
|
||||||
if (game.user.isGM) {
|
|
||||||
dateHTML = dateHTML + "<br>Nombre Astral: " + (this.getNombreAstral() ?? "?");
|
|
||||||
}
|
|
||||||
for (let handle of document.getElementsByClassName("calendar-title")) {
|
|
||||||
handle.innerHTML = dateHTML;
|
|
||||||
}
|
|
||||||
for (let heure of document.getElementsByClassName("calendar-heure-texte")) {
|
|
||||||
heure.innerHTML = calendrier.heure.label;
|
|
||||||
}
|
|
||||||
for (const minute of document.getElementsByClassName("calendar-minute-texte")) {
|
|
||||||
minute.innerHTML = `${calendrier.minute} minutes`;
|
|
||||||
}
|
|
||||||
for (const heureImg of document.getElementsByClassName("calendar-heure-img")) {
|
|
||||||
heureImg.src = calendrier.heure.icon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async saveEditeur(calendrierData) {
|
|
||||||
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 = this.fillCalendrierData();
|
|
||||||
if (this.editeur == undefined) {
|
|
||||||
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/calendar-editor-template.html', calendrierData);
|
|
||||||
this.editeur = new RdDCalendrierEditeur(html, this, calendrierData)
|
|
||||||
}
|
|
||||||
this.editeur.updateData(calendrierData);
|
|
||||||
this.editeur.render(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
static buildJoursMois() { return JOURS_DU_MOIS; }
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async showAstrologieEditor() {
|
|
||||||
const calendrierData = duplicate(this.fillCalendrierData());
|
|
||||||
this.listeNombreAstral = this.listeNombreAstral || [];
|
|
||||||
|
|
||||||
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";
|
|
||||||
}
|
|
||||||
return astro;
|
|
||||||
});
|
|
||||||
|
|
||||||
const nbAstral = this.getNombreAstral()
|
|
||||||
calendrierData.heures = Array.from(Array(RDD_HEURES_PAR_JOUR).keys());
|
|
||||||
calendrierData.ajustementsActeur = game.actors.filter(it => it.isPersonnage() && it.hasPlayerOwner).map(actor => {
|
|
||||||
return {
|
|
||||||
actor,
|
|
||||||
ajustements: calendrierData.heures.map(heure => {
|
|
||||||
const hn = RdDTimestamp.findHeure(actor.getHeureNaissance())?.heure;
|
|
||||||
return {
|
|
||||||
heure,
|
|
||||||
ajustement: RdDCalendrier.ajustementAstrologiqueHeure(hn, nbAstral, heure)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
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);
|
|
||||||
astrologieEditeur.render(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -39,35 +39,31 @@ export class RdDCombatManager extends Combat {
|
|||||||
|
|
||||||
static init() {
|
static init() {
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
|
Hooks.on("getCombatTrackerEntryContext", (html, options) => { RdDCombatManager.pushInitiativeOptions(html, options); });
|
||||||
RdDCombatManager.pushInitiativeOptions(html, options);
|
Hooks.on("updateCombat", (combat, change, options, userId) => { RdDCombat.onUpdateCombat(combat, change, options, userId) });
|
||||||
});
|
Hooks.on("preDeleteCombat", (combat, html, id) => { combat.onPreDeleteCombat() });
|
||||||
Hooks.on("preDeleteCombat", (combat, html, id) => {
|
|
||||||
combat.onPreDeleteCombat()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
cleanItemUse() {
|
|
||||||
for (let turn of this.turns) {
|
|
||||||
turn.actor.resetItemUse()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async nextRound() {
|
async nextRound() {
|
||||||
this.cleanItemUse();
|
|
||||||
await this.finDeRound();
|
await this.finDeRound();
|
||||||
return await super.nextRound();
|
return await super.nextRound();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async onPreDeleteCombat() {
|
async onPreDeleteCombat() {
|
||||||
|
if (Misc.isUniqueConnectedGM()) {
|
||||||
await this.finDeRound({ terminer: true });
|
await this.finDeRound({ terminer: true });
|
||||||
|
ChatUtility.removeChatMessageContaining(`<div data-combatid="${this.id}" data-combatmessage="actor-turn-summary">`)
|
||||||
|
game.messages.filter(m => ChatUtility.getMessageData(m, 'attacker-roll') != undefined && ChatUtility.getMessageData(m, 'defender-roll') != undefined)
|
||||||
|
.forEach(it => it.delete());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async finDeRound(options = { terminer: false }) {
|
async finDeRound(options = { terminer: false }) {
|
||||||
|
this.turns.forEach(turn => turn.actor.resetItemUse());
|
||||||
|
|
||||||
for (let combatant of this.combatants) {
|
for (let combatant of this.combatants) {
|
||||||
if (combatant.actor) {
|
if (combatant.actor) {
|
||||||
await combatant.actor.finDeRound(options);
|
await combatant.actor.finDeRound(options);
|
||||||
@@ -144,9 +140,8 @@ export class RdDCombatManager extends Combat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static calculInitiative(niveau, caracValue, bonusEcaille = 0) {
|
static calculInitiative(niveau, caracValue, bonus = 0) {
|
||||||
let base = niveau + Math.floor(caracValue / 2);
|
let base = niveau + Math.floor(caracValue / 2) + bonus;
|
||||||
base += bonusEcaille;
|
|
||||||
return "1d6" + (base >= 0 ? "+" : "") + base;
|
return "1d6" + (base >= 0 ? "+" : "") + base;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -420,18 +415,11 @@ export class RdDCombatManager extends Combat {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDCombat {
|
export class RdDCombat {
|
||||||
|
|
||||||
static init() {
|
|
||||||
Hooks.on("updateCombat", (combat, change, options, userId) => { RdDCombat.onUpdateCombat(combat, change, options, userId) });
|
|
||||||
Hooks.on("preDeleteCombat", (combat, options, userId) => { RdDCombat.onPreDeleteCombat(combat, options, userId); });
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onSocketMessage(sockmsg) {
|
static onSocketMessage(sockmsg) {
|
||||||
switch (sockmsg.msg) {
|
switch (sockmsg.msg) {
|
||||||
case "msg_encaisser":
|
case "msg_encaisser": return RdDCombat.onMsgEncaisser(sockmsg.data);
|
||||||
return RdDCombat.onMsgEncaisser(sockmsg.data);
|
case "msg_defense": return RdDCombat.onMsgDefense(sockmsg.data);
|
||||||
case "msg_defense":
|
|
||||||
return RdDCombat.onMsgDefense(sockmsg.data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -442,16 +430,6 @@ export class RdDCombat {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static onPreDeleteCombat(combat, options, userId) {
|
|
||||||
if (Misc.isUniqueConnectedGM()) {
|
|
||||||
combat.cleanItemUse();
|
|
||||||
ChatUtility.removeChatMessageContaining(`<div data-combatid="${combat.id}" data-combatmessage="actor-turn-summary">`)
|
|
||||||
game.messages.filter(m => ChatUtility.getMessageData(m, 'attacker-roll') != undefined && ChatUtility.getMessageData(m, 'defender-roll') != undefined)
|
|
||||||
.forEach(it => it.delete());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static combatNouveauTour(combat) {
|
static combatNouveauTour(combat) {
|
||||||
if (Misc.isUniqueConnectedGM()) {
|
if (Misc.isUniqueConnectedGM()) {
|
||||||
@@ -756,15 +734,6 @@ export class RdDCombat {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async attaque(competence, arme) {
|
async attaque(competence, arme) {
|
||||||
// const nonIncarnee = this.defender.isEntite([ENTITE_NONINCARNE])
|
|
||||||
// const blurette = this.defender.isEntite([ENTITE_BLURETTE])
|
|
||||||
// if (nonIncarnee || blurette) {
|
|
||||||
// ChatMessage.create( {
|
|
||||||
// content: `<strong>La cible est ${nonIncarnee ? 'non incarnée' : 'une blurette'}.
|
|
||||||
// Il est impossible de l'atteindre.`,
|
|
||||||
// whisper: ChatMessage.getWhisperRecipients("GM")})
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (!await this.attacker.accorder(this.defender, 'avant-attaque')) {
|
if (!await this.attacker.accorder(this.defender, 'avant-attaque')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -970,9 +939,8 @@ export class RdDCombat {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_filterArmesParade(defender, competence) {
|
_filterArmesParade(defender, competence) {
|
||||||
let items = defender.items.filter(it => RdDItemArme.isArmeUtilisable(it) || RdDItemCompetenceCreature.isCompetenceParade(it))
|
let items = defender.items.filter(it => RdDItemArme.isArmeUtilisable(it) || RdDItemCompetenceCreature.isCompetenceParade(it))
|
||||||
for (let item of items) {
|
items.forEach(item => item.system.nbUsage = defender.getItemUse(item.id)); // Ajout du # d'utilisation ce round
|
||||||
item.system.nbUsage = defender.getItemUse(item.id); // Ajout du # d'utilisation ce round
|
|
||||||
}
|
|
||||||
switch (competence.system.categorie) {
|
switch (competence.system.categorie) {
|
||||||
case 'tir':
|
case 'tir':
|
||||||
case 'lancer':
|
case 'lancer':
|
||||||
@@ -1327,13 +1295,8 @@ export class RdDCombat {
|
|||||||
blessuresStatus: actor.computeResumeBlessure(),
|
blessuresStatus: actor.computeResumeBlessure(),
|
||||||
SConst: actor.getSConst(),
|
SConst: actor.getSConst(),
|
||||||
actorId: actor.id,
|
actorId: actor.id,
|
||||||
isGrave: false,
|
isGrave: actor.countBlessures(it => it.isGrave()) > 0,
|
||||||
isCritique: false
|
isCritique: actor.countBlessures(it => it.isCritique()) > 0
|
||||||
}
|
|
||||||
if (actor.countBlessuresNonSoigneeByName("critiques") > 0) { // Pour éviter le cumul grave + critique
|
|
||||||
formData.isCritique = true;
|
|
||||||
} else if (actor.countBlessuresNonSoigneeByName("graves") > 0) {
|
|
||||||
formData.isGrave = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatUtility.createChatWithRollMode(actor.name, {
|
ChatUtility.createChatWithRollMode(actor.name, {
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ export class RdDCommands {
|
|||||||
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) {
|
if (competence) {
|
||||||
for (let actor of actors) {
|
for (let actor of actors) {
|
||||||
await actor.rollCaracCompetence(caracName, competence.name, diff);
|
await actor.doRollCaracCompetence(caracName, competence.name, diff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDHerbes extends Item {
|
export class RdDHerbes extends Item {
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { Migrations } from './migrations.js';
|
|||||||
import { RdDUtility } from "./rdd-utility.js";
|
import { RdDUtility } from "./rdd-utility.js";
|
||||||
import { TMRUtility } from "./tmr-utility.js";
|
import { TMRUtility } from "./tmr-utility.js";
|
||||||
import { TMRRencontres } from "./tmr-rencontres.js";
|
import { TMRRencontres } from "./tmr-rencontres.js";
|
||||||
import { RdDCalendrier } from "./rdd-calendrier.js";
|
import { RdDCalendrier } from "./time/rdd-calendrier.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
import { DialogChronologie } from "./dialog-chronologie.js";
|
import { DialogChronologie } from "./dialog-chronologie.js";
|
||||||
|
|
||||||
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
||||||
@@ -36,6 +36,7 @@ import { RdDActorVehiculeSheet } from "./actor-vehicule-sheet.js";
|
|||||||
import { RdDActorEntiteSheet } from "./actor-entite-sheet.js";
|
import { RdDActorEntiteSheet } from "./actor-entite-sheet.js";
|
||||||
|
|
||||||
import { RdDItem } from "./item.js";
|
import { RdDItem } from "./item.js";
|
||||||
|
import { RdDItemBlessure } from "./item/blessure.js";
|
||||||
import { RdDItemService } from "./item/service.js";
|
import { RdDItemService } from "./item/service.js";
|
||||||
import { RdDItemMaladie } from "./item/maladie.js";
|
import { RdDItemMaladie } from "./item/maladie.js";
|
||||||
import { RdDItemPoison } from "./item/poison.js";
|
import { RdDItemPoison } from "./item/poison.js";
|
||||||
@@ -46,6 +47,7 @@ import { RdDItemSouffle } from "./item/souffle.js";
|
|||||||
import { RdDRencontre } from "./item/rencontre.js";
|
import { RdDRencontre } from "./item/rencontre.js";
|
||||||
|
|
||||||
import { RdDItemSheet } from "./item-sheet.js";
|
import { RdDItemSheet } from "./item-sheet.js";
|
||||||
|
import { RdDBlessureItemSheet } from "./item/sheet-blessure.js";
|
||||||
import { RdDServiceItemSheet } from "./item/sheet-service.js";
|
import { RdDServiceItemSheet } from "./item/sheet-service.js";
|
||||||
import { RdDRencontreItemSheet } from "./item/sheet-rencontre.js";
|
import { RdDRencontreItemSheet } from "./item/sheet-rencontre.js";
|
||||||
import { RdDHerbeItemSheet } from "./item/sheet-herbe.js";
|
import { RdDHerbeItemSheet } from "./item/sheet-herbe.js";
|
||||||
@@ -55,6 +57,7 @@ import { RdDFauneItemSheet } from "./item/sheet-faune.js";
|
|||||||
import { RdDConteneurItemSheet } from "./item/sheet-conteneur.js";
|
import { RdDConteneurItemSheet } from "./item/sheet-conteneur.js";
|
||||||
import { RdDSigneDraconiqueItemSheet } from "./item/sheet-signedraconique.js";
|
import { RdDSigneDraconiqueItemSheet } from "./item/sheet-signedraconique.js";
|
||||||
import { RdDItemInventaireSheet } from "./item/sheet-base-inventaire.js";
|
import { RdDItemInventaireSheet } from "./item/sheet-base-inventaire.js";
|
||||||
|
import { AppAstrologie } from "./sommeil/app-astrologie.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RdD system
|
* RdD system
|
||||||
@@ -73,21 +76,22 @@ export class SystemReveDeDragon {
|
|||||||
this.RdDUtility = RdDUtility;
|
this.RdDUtility = RdDUtility;
|
||||||
this.RdDHotbar = RdDHotbar;
|
this.RdDHotbar = RdDHotbar;
|
||||||
this.itemClasses = {
|
this.itemClasses = {
|
||||||
service: RdDItemService,
|
blessure: RdDItemBlessure,
|
||||||
maladie: RdDItemMaladie,
|
maladie: RdDItemMaladie,
|
||||||
|
ombre: RdDItemOmbre,
|
||||||
poison: RdDItemPoison,
|
poison: RdDItemPoison,
|
||||||
queue: RdDItemQueue,
|
queue: RdDItemQueue,
|
||||||
ombre: RdDItemOmbre,
|
rencontre: RdDRencontre,
|
||||||
souffle: RdDItemSouffle,
|
service: RdDItemService,
|
||||||
signedraconique: RdDItemSigneDraconique,
|
signedraconique: RdDItemSigneDraconique,
|
||||||
rencontre: RdDRencontre
|
souffle: RdDItemSouffle,
|
||||||
}
|
}
|
||||||
this.actorClasses = {
|
this.actorClasses = {
|
||||||
|
commerce: RdDCommerce,
|
||||||
creature: RdDActor,
|
creature: RdDActor,
|
||||||
entite: RdDActor,
|
entite: RdDActor,
|
||||||
personnage: RdDActor,
|
personnage: RdDActor,
|
||||||
vehicule: RdDActor,
|
vehicule: RdDActor,
|
||||||
commerce: RdDCommerce,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,6 +100,8 @@ export class SystemReveDeDragon {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async onInit() {
|
async onInit() {
|
||||||
game.system.rdd = this;
|
game.system.rdd = this;
|
||||||
|
this.AppAstrologie = AppAstrologie;
|
||||||
|
|
||||||
|
|
||||||
console.log(`Initializing Reve de Dragon System`);
|
console.log(`Initializing Reve de Dragon System`);
|
||||||
|
|
||||||
@@ -154,6 +160,7 @@ export class SystemReveDeDragon {
|
|||||||
RdDItemSheet.register(RdDPlanteItemSheet);
|
RdDItemSheet.register(RdDPlanteItemSheet);
|
||||||
RdDItemSheet.register(RdDIngredientItemSheet);
|
RdDItemSheet.register(RdDIngredientItemSheet);
|
||||||
RdDItemSheet.register(RdDServiceItemSheet);
|
RdDItemSheet.register(RdDServiceItemSheet);
|
||||||
|
RdDItemSheet.register(RdDBlessureItemSheet);
|
||||||
|
|
||||||
Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, {
|
Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, {
|
||||||
types: [
|
types: [
|
||||||
@@ -174,13 +181,13 @@ export class SystemReveDeDragon {
|
|||||||
|
|
||||||
// préparation des différents modules
|
// préparation des différents modules
|
||||||
RdDTimestamp.init();
|
RdDTimestamp.init();
|
||||||
|
RdDCalendrier.init();
|
||||||
SystemCompendiums.init();
|
SystemCompendiums.init();
|
||||||
DialogChronologie.init();
|
DialogChronologie.init();
|
||||||
ReglesOptionelles.init();
|
ReglesOptionelles.init();
|
||||||
RdDUtility.init();
|
RdDUtility.init();
|
||||||
RdDDice.init();
|
RdDDice.init();
|
||||||
RdDCommands.init();
|
RdDCommands.init();
|
||||||
RdDCombat.init();
|
|
||||||
RdDCombatManager.init();
|
RdDCombatManager.init();
|
||||||
RdDTokenHud.init();
|
RdDTokenHud.init();
|
||||||
RdDBaseActor.init();
|
RdDBaseActor.init();
|
||||||
@@ -210,25 +217,6 @@ export class SystemReveDeDragon {
|
|||||||
default: "avant-encaissement"
|
default: "avant-encaissement"
|
||||||
});
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
game.settings.register(SYSTEM_RDD, "liste-nombre-astral", {
|
|
||||||
name: "liste-nombre-astral",
|
|
||||||
scope: "world",
|
|
||||||
config: false,
|
|
||||||
default: [],
|
|
||||||
type: Object
|
|
||||||
});
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
game.settings.register(SYSTEM_RDD, "calendrier-pos", {
|
|
||||||
name: "calendrierPos",
|
|
||||||
scope: "client",
|
|
||||||
config: false,
|
|
||||||
default: RdDCalendrier.createCalendrierPos(),
|
|
||||||
type: Object
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
game.settings.register(SYSTEM_RDD, "supprimer-dialogues-combat-chat", {
|
game.settings.register(SYSTEM_RDD, "supprimer-dialogues-combat-chat", {
|
||||||
name: "Supprimer les dialogues de combat",
|
name: "Supprimer les dialogues de combat",
|
||||||
@@ -274,9 +262,11 @@ export class SystemReveDeDragon {
|
|||||||
let sidebar = document.getElementById("sidebar");
|
let sidebar = document.getElementById("sidebar");
|
||||||
sidebar.style.width = "min-content";
|
sidebar.style.width = "min-content";
|
||||||
}
|
}
|
||||||
|
game.system.rdd.calendrier = new RdDCalendrier();
|
||||||
if (Misc.isUniqueConnectedGM()) {
|
if (Misc.isUniqueConnectedGM()) {
|
||||||
new Migrations().migrate();
|
new Migrations().migrate();
|
||||||
|
this.messageDeBienvenue();
|
||||||
|
this.registerUsageCount(SYSTEM_RDD);
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusEffects.onReady();
|
StatusEffects.onReady();
|
||||||
@@ -284,14 +274,7 @@ export class SystemReveDeDragon {
|
|||||||
RdDDice.onReady();
|
RdDDice.onReady();
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Affiche/Init le calendrier */
|
/* Affiche/Init le calendrier */
|
||||||
let calendrier = new RdDCalendrier();
|
game.system.rdd.calendrier.display();
|
||||||
let templatePath = "systems/foundryvtt-reve-de-dragon/templates/calendar-template.html";
|
|
||||||
let templateData = {};
|
|
||||||
renderTemplate(templatePath, templateData).then(html => {
|
|
||||||
calendrier.render(true);
|
|
||||||
});
|
|
||||||
game.system.rdd.calendrier = calendrier; // Reference;
|
|
||||||
|
|
||||||
// Avertissement si joueur sans personnage
|
// Avertissement si joueur sans personnage
|
||||||
if (!game.user.isGM && game.user.character == undefined) {
|
if (!game.user.isGM && game.user.character == undefined) {
|
||||||
ui.notifications.info("Attention ! Vous n'êtes connecté à aucun personnage !");
|
ui.notifications.info("Attention ! Vous n'êtes connecté à aucun personnage !");
|
||||||
@@ -300,10 +283,6 @@ export class SystemReveDeDragon {
|
|||||||
user: game.user.id
|
user: game.user.id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (Misc.isUniqueConnectedGM()) {
|
|
||||||
this.messageDeBienvenue();
|
|
||||||
this.registerUsageCount(SYSTEM_RDD);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|||||||
@@ -195,17 +195,6 @@ export class RdDResolutionTable {
|
|||||||
return Math.max(Math.floor(carac * (diff + 10) / 2), 1);
|
return Math.max(Math.floor(carac * (diff + 10) / 2), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static isAjustementAstrologique(rollData) {
|
|
||||||
if (rollData.selectedCarac?.label.toLowerCase().includes('chance')) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (rollData.selectedSort?.system.isrituel) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static isEchec(rollData) {
|
static isEchec(rollData) {
|
||||||
switch (rollData.surprise) {
|
switch (rollData.surprise) {
|
||||||
@@ -294,12 +283,9 @@ export class RdDResolutionTable {
|
|||||||
carac: carac,
|
carac: carac,
|
||||||
difficulte: level,
|
difficulte: level,
|
||||||
min: minLevel,
|
min: minLevel,
|
||||||
rows: RdDResolutionTable.incrementalArray(minCarac, maxCarac),
|
rows: Misc.intArray(minCarac, maxCarac+1),
|
||||||
cols: RdDResolutionTable.incrementalArray(minLevel, maxLevel)
|
cols: Misc.intArray(minLevel, maxLevel+1)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
static incrementalArray(min, max) {
|
|
||||||
return Array.from(Array(max-min+1).keys()).map(i=>i+min)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -30,9 +30,9 @@ export class RdDEncaisser extends Dialog {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if (actor.isEntite([ENTITE_BLURETTE, ENTITE_INCARNE])) {
|
else if (actor.isEntite([ENTITE_BLURETTE, ENTITE_INCARNE])) {
|
||||||
dialogConf.default = "cauchemar"
|
dialogConf.default = "entiteincarnee"
|
||||||
dialogConf.buttons = {
|
dialogConf.buttons = {
|
||||||
"cauchemar": { label: "Cauchemar", callback: html => this.performEncaisser("cauchemar") }
|
"entiteincarnee": { label: "Entité incarnée", callback: html => this.performEncaisser("entiteincarnee") }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +70,6 @@ export class RdDEncaisser extends Dialog {
|
|||||||
total: Number(this.modifier),
|
total: Number(this.modifier),
|
||||||
ajustement: Number(this.modifier),
|
ajustement: Number(this.modifier),
|
||||||
encaisserSpecial: this.encaisserSpecial,
|
encaisserSpecial: this.encaisserSpecial,
|
||||||
loc: { result: 0, label: "" },
|
|
||||||
mortalite: mortalite
|
mortalite: mortalite
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,15 +7,16 @@ export class RdDSheetUtility {
|
|||||||
const userRightLevel = game.user.isGM
|
const userRightLevel = game.user.isGM
|
||||||
? CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER
|
? CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER
|
||||||
: document.getUserLevel(game.user);
|
: document.getUserLevel(game.user);
|
||||||
mergeObject(options, {
|
let newOptions = {
|
||||||
isGM: game.user.isGM,
|
isGM: game.user.isGM,
|
||||||
isOwned: document.parent,
|
isOwned: document.parent ? true : false,
|
||||||
editable: editable,
|
editable: editable,
|
||||||
cssClass: editable ? "editable" : "locked",
|
cssClass: editable ? "editable" : "locked",
|
||||||
isLimited: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.LIMITED,
|
isLimited: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.LIMITED,
|
||||||
isObserver: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER,
|
isObserver: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER,
|
||||||
isOwner: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER
|
isOwner: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER
|
||||||
});
|
}
|
||||||
|
mergeObject(options, newOptions);
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,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";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
@@ -286,7 +285,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async onActionRencontre(action, tmr, rencontre) {
|
async onActionRencontre(action, tmr, rencontre) {
|
||||||
if (!this.currentRencontre){
|
if (!this.currentRencontre) {
|
||||||
ui.notifications.warn("#612 Rencontre perdue, récupération en cours. Vous pouvez contacter l'équipe avec les logs pour aider à résoudre ce problème")
|
ui.notifications.warn("#612 Rencontre perdue, récupération en cours. Vous pouvez contacter l'équipe avec les logs pour aider à résoudre ce problème")
|
||||||
console.error("#612 Rencontre perdue", action, tmr, rencontre, this);
|
console.error("#612 Rencontre perdue", action, tmr, rencontre, this);
|
||||||
this.currentRencontre = rencontre;
|
this.currentRencontre = rencontre;
|
||||||
@@ -805,19 +804,21 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async declencheSortEnReserve(coord) {
|
async declencheSortEnReserve(coord) {
|
||||||
let sorts = this.getSortsReserve(coord);
|
const sorts = this.getSortsReserve(coord);
|
||||||
if (sorts.length > 0) {
|
if (sorts.length > 0) {
|
||||||
if (EffetsDraconiques.isSortReserveImpossible(this.actor)) {
|
if (EffetsDraconiques.isSortReserveImpossible(this.actor)) {
|
||||||
ui.notifications.error("Une queue ou un souffle vous empèche de déclencher de sort!");
|
ui.notifications.error("Une queue ou un souffle vous empèche de déclencher de sort!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!EffetsDraconiques.isUrgenceDraconique(this.actor) &&
|
const reserveSecurite = EffetsDraconiques.isReserveEnSecurite(this.actor);
|
||||||
(EffetsDraconiques.isReserveEnSecurite(this.actor) || this.isReserveExtensible(coord))) {
|
const reserveExtensible = this.isReserveExtensible(coord);
|
||||||
let msg = "Vous êtes sur une case avec un Sort en Réserve. Grâce à votre Tête <strong>Reserve en Sécurité</strong> ou <strong>Réserve Exensible</strong>, vous pouvez contrôler le déclenchement. Cliquez si vous souhaitez le déclencher : <ul>";
|
if (!EffetsDraconiques.isUrgenceDraconique(this.actor) && (reserveSecurite || reserveExtensible)) {
|
||||||
for (let sort of sorts) {
|
const msg = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-demande-declencher-sort.hbs`, {
|
||||||
msg += `<li><a class="chat-card-button declencher-sort-reserve" data-actor-id="${this.actor.id}" data-tmr-coord="${coord}" data-sort-id='${sort.id}">${sort.name}</a></li>`;
|
actor: this.actor,
|
||||||
}
|
sorts: sorts,
|
||||||
msg += "</ol>";
|
coord: coord,
|
||||||
|
tete: { reserveSecurite: reserveSecurite, reserveExtensible: reserveExtensible }
|
||||||
|
})
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
content: msg,
|
content: msg,
|
||||||
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
import { HtmlUtility } from "./html-utility.js";
|
import { HtmlUtility } from "./html-utility.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { RdDCombatManager } from "./rdd-combat.js";
|
import { RdDCombatManager } from "./rdd-combat.js";
|
||||||
|
import { Targets } from "./targets.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDTokenHud {
|
export class RdDTokenHud {
|
||||||
@@ -18,29 +19,39 @@ export class RdDTokenHud {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async addExtensionHud(app, html, tokenId) {
|
static async addExtensionHud(app, html, tokenId, isCombat) {
|
||||||
|
|
||||||
let token = canvas.tokens.get(tokenId);
|
let token = canvas.tokens.get(tokenId);
|
||||||
let actor = token.actor;
|
let actor = token.actor;
|
||||||
|
app.hasExtension = true;
|
||||||
|
// soins
|
||||||
|
await RdDTokenHud.addExtensionHudSoins(html, actor);
|
||||||
|
|
||||||
|
if (isCombat) {
|
||||||
let combatant = game.combat.combatants.find(c => c.tokenId == tokenId);
|
let combatant = game.combat.combatants.find(c => c.tokenId == tokenId);
|
||||||
if (! (combatant?.actor) ) {
|
if (!(combatant?.actor)) {
|
||||||
ui.notifications.warn(`Le combatant ${token.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
ui.notifications.warn(`Le combatant ${token.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
app.hasExtension = true;
|
let actions = RdDCombatManager.listActionsCombat(combatant);
|
||||||
|
// initiative
|
||||||
|
await RdDTokenHud.addExtensionHudInit(html, combatant, actions);
|
||||||
|
// combat
|
||||||
|
await RdDTokenHud.addExtensionHudCombat(html, combatant, actions);
|
||||||
|
}
|
||||||
|
|
||||||
let actionsCombat = RdDCombatManager.listActionsCombat(combatant);
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static async addExtensionHudInit(html, combatant, actions) {
|
||||||
const hudData = {
|
const hudData = {
|
||||||
combatant: combatant,
|
combatant, actions,
|
||||||
actions: actionsCombat,
|
|
||||||
commandes: [
|
commandes: [
|
||||||
{ name: "Autre action", command: 'autre' },
|
{ name: "Autre action", command: 'autre' },
|
||||||
{ name: 'Initiative +1', command: 'inc', value: 0.01 },
|
{ name: 'Initiative +1', command: 'inc', value: 0.01 },
|
||||||
{ name: 'Initiative -1', command: 'dec', value: -0.01 }]
|
{ name: 'Initiative -1', command: 'dec', value: -0.01 }]
|
||||||
};
|
};
|
||||||
|
|
||||||
const controlIconCombat = html.find('.control-icon[data-action=combat]');
|
const controlIconCombat = html.find('.control-icon[data-action=combat]');
|
||||||
// initiative
|
|
||||||
await RdDTokenHud._configureSubMenu(controlIconCombat,
|
await RdDTokenHud._configureSubMenu(controlIconCombat,
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-init.html',
|
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-init.html',
|
||||||
hudData,
|
hudData,
|
||||||
@@ -51,26 +62,47 @@ export class RdDTokenHud {
|
|||||||
RdDTokenHud._initiativeCommand(initCommand, combatantId);
|
RdDTokenHud._initiativeCommand(initCommand, combatantId);
|
||||||
} else {
|
} else {
|
||||||
let index = event.currentTarget.attributes['data-action-index'].value;
|
let index = event.currentTarget.attributes['data-action-index'].value;
|
||||||
let action = actionsCombat[index];
|
let action = hudData.actions[index];
|
||||||
RdDCombatManager.rollInitiativeAction(combatantId, action);
|
RdDCombatManager.rollInitiativeAction(combatantId, action);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static async addExtensionHudCombat(html, combatant, actions) {
|
||||||
|
const hudData = { combatant, actions, commandes: [] };
|
||||||
const controlIconTarget = html.find('.control-icon[data-action=target]');
|
const controlIconTarget = html.find('.control-icon[data-action=target]');
|
||||||
// combat
|
|
||||||
await RdDTokenHud._configureSubMenu(controlIconTarget, 'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html', hudData,
|
await RdDTokenHud._configureSubMenu(controlIconTarget, 'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html', hudData,
|
||||||
(event) => {
|
(event) => {
|
||||||
const actionIndex = event.currentTarget.attributes['data-action-index']?.value;
|
const actionIndex = event.currentTarget.attributes['data-action-index']?.value;
|
||||||
const action = actionsCombat[actionIndex];
|
const action = hudData.actions[actionIndex];
|
||||||
if (action.action == 'conjurer') {
|
if (action.action == 'conjurer') {
|
||||||
actor.conjurerPossession(actor.getPossession(action.system.possessionid));
|
const possession = combatant.actor.getPossession(action.system.possessionid);
|
||||||
|
combatant.actor.conjurerPossession(possession);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
actor.rollArme(action);
|
combatant.actor.rollArme(action);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async addExtensionHudSoins(html, sourceActor) {
|
||||||
|
const target = Targets.getTarget({ warn: false });
|
||||||
|
if (target?.actor) {
|
||||||
|
const hudSoins = { blessures: target.actor.blessuresASoigner() ?? [] };
|
||||||
|
if (hudSoins.blessures.length > 0) {
|
||||||
|
// soins
|
||||||
|
const controlIconTarget = html.find('.control-icon[data-action=combat]');
|
||||||
|
await RdDTokenHud._configureSubMenu(controlIconTarget,
|
||||||
|
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-soins.hbs',
|
||||||
|
hudSoins,
|
||||||
|
(event) => {
|
||||||
|
const blessureId = event.currentTarget.attributes['data-blessure-id']?.value;
|
||||||
|
sourceActor.rollSoins(target.actor, blessureId)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static _initiativeCommand(initCommand, combatantId) {
|
static _initiativeCommand(initCommand, combatantId) {
|
||||||
switch (initCommand) {
|
switch (initCommand) {
|
||||||
case 'inc': return RdDCombatManager.incDecInit(combatantId, 0.01);
|
case 'inc': return RdDCombatManager.incDecInit(combatantId, 0.01);
|
||||||
@@ -83,16 +115,17 @@ export class RdDTokenHud {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async addTokenHudExtensions(app, html, tokenId) {
|
static async addTokenHudExtensions(app, html, tokenId) {
|
||||||
const controlIconCombat = html.find('.control-icon[data-action=combat]');
|
const controlIconCombat = html.find('.control-icon[data-action=combat]');
|
||||||
|
if (controlIconCombat.length > 0) {
|
||||||
controlIconCombat.click(event => {
|
controlIconCombat.click(event => {
|
||||||
if (event.currentTarget.className.includes('active')) {
|
if (event.currentTarget.className.includes('active')) {
|
||||||
RdDTokenHud.removeExtensionHud(app, html, tokenId);
|
RdDTokenHud.removeExtensionHud(app, html, tokenId);
|
||||||
} else {
|
} else {
|
||||||
setTimeout(function () { RdDTokenHud.addExtensionHud(app, html, tokenId) }, 200);
|
setTimeout(() => RdDTokenHud.addExtensionHud(app, html, tokenId), 200);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (controlIconCombat.length>0 && controlIconCombat[0].className.includes('active')) {
|
const isCombat = controlIconCombat[0].className.includes('active');
|
||||||
RdDTokenHud.addExtensionHud(app, html, tokenId);
|
RdDTokenHud.addExtensionHud(app, html, tokenId, isCombat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,15 +13,15 @@ import { RdDNameGen } from "./rdd-namegen.js";
|
|||||||
import { RdDConfirm } from "./rdd-confirm.js";
|
import { RdDConfirm } from "./rdd-confirm.js";
|
||||||
import { RdDItemCompetence } from "./item-competence.js";
|
import { RdDItemCompetence } from "./item-competence.js";
|
||||||
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
||||||
import { RdDTimestamp } from "./rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
import { RdDRaretes } from "./item/raretes.js";
|
import { RdDRaretes } from "./item/raretes.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// This table starts at 0 -> niveau -10
|
// This table starts at 0 -> niveau -10
|
||||||
const carac_array = ["taille", "apparence", "constitution", "force", "agilite", "dexterite", "vue", "ouie", "odoratgout", "volonte", "intellect", "empathie", "reve", "chance", "melee", "tir", "lancer", "derobee"];
|
const carac_array = ["taille", "apparence", "constitution", "force", "agilite", "dexterite", "vue", "ouie", "odoratgout", "volonte", "intellect", "empathie", "reve", "chance", "melee", "tir", "lancer", "derobee"];
|
||||||
const difficultesLibres = [0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10];
|
const difficultesLibres = Misc.intArray(0, -11);
|
||||||
const ajustementsConditions = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10];
|
const ajustementsConditions = Misc.intArray(-10, 11);
|
||||||
const ajustementsEncaissement = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, +17, +18, +19, +20, +21, +22, +23, +24, +25];
|
const ajustementsEncaissement = Misc.intArray(-10, 26);
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
function _buildAllSegmentsFatigue(max) {
|
function _buildAllSegmentsFatigue(max) {
|
||||||
@@ -66,38 +66,31 @@ const fatigueMarche = {
|
|||||||
"tresdifficile": { "4": 4, "6": 6 }
|
"tresdifficile": { "4": 4, "6": 6 }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
const definitionsBlessures = [
|
|
||||||
{ type: "legere", facteur: 2 },
|
|
||||||
{ type: "grave", facteur: 4 },
|
|
||||||
{ type: "critique", facteur: 6 }
|
|
||||||
]
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const nomEthylisme = ["Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "Complètement fait", "Ivre mort"];
|
const nomEthylisme = ["Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "Complètement fait", "Ivre mort"];
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const definitionsEncaissement = {
|
const definitionsEncaissement = {
|
||||||
"mortel": [
|
"mortel": [
|
||||||
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", eraflures: 0, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1},
|
||||||
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", eraflures: 1, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0},
|
||||||
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", eraflures: 0, legeres: 1, graves: 0, critiques: 0 },
|
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", gravite: 2},
|
||||||
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "2", eraflures: 0, legeres: 0, graves: 1, critiques: 0 },
|
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "2", gravite: 4},
|
||||||
{ minimum: 20, maximum: undefined, endurance: "100", vie: "4 + @over20", eraflures: 0, legeres: 0, graves: 0, critiques: 1 },
|
{ minimum: 20, maximum: undefined, endurance: "100", vie: "4 + @over20", gravite: 6},
|
||||||
],
|
],
|
||||||
"non-mortel": [
|
"non-mortel": [
|
||||||
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", eraflures: 0, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1},
|
||||||
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", eraflures: 1, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0 },
|
||||||
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", eraflures: 1, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", gravite: 0 },
|
||||||
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "0", eraflures: 0, legeres: 1, graves: 0, critiques: 0 },
|
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "0", gravite: 2 },
|
||||||
{ minimum: 20, maximum: undefined, endurance: "100", vie: "0", eraflures: 0, legeres: 1, graves: 0, critiques: 0 },
|
{ minimum: 20, maximum: undefined, endurance: "100", vie: "0", gravite: 2 },
|
||||||
],
|
],
|
||||||
"cauchemar": [
|
"entiteincarnee": [
|
||||||
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", eraflures: 0, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1},
|
||||||
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", eraflures: 1, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0},
|
||||||
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", eraflures: 1, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", gravite: 0 },
|
||||||
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "0", eraflures: 1, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "0", gravite: 0 },
|
||||||
{ minimum: 20, maximum: undefined, endurance: "3d6 + @over20", vie: "0", eraflures: 1, legeres: 0, graves: 0, critiques: 0 },
|
{ minimum: 20, maximum: undefined, endurance: "3d6 + @over20", vie: "0", gravite: 0 },
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -139,7 +132,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/xp-competences.html',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/xp-competences.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/combat.html',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/combat.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/blessures.html',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/blessures.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/blessure.html',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/blessure.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/maladies-poisons.html',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/maladies-poisons.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/possessions.html',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/possessions.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/taches.html',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/taches.html',
|
||||||
@@ -203,6 +196,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-effet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-effet.html',
|
||||||
// Partials
|
// Partials
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/tirage/liste-resultats-recherche.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/tirage/liste-resultats-recherche.hbs',
|
||||||
|
'systems/foundryvtt-reve-de-dragon/templates/time/horloge.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs',
|
'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/periodicite.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs',
|
||||||
@@ -234,11 +228,10 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-meditation.html',
|
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-meditation.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.html',
|
'systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-alchimie.html',
|
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-alchimie.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/dialog-astrologie-joueur.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/sommeil/sommeil-actor-moral.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/sommeil/sommeil-actor-moral.hbs',
|
||||||
// Calendrier
|
'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-gardien.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/calendar-template.html',
|
'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-joueur.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/calendar-editor-template.html',
|
'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-theme.hbs',
|
||||||
// HUD
|
// HUD
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-init.html',
|
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-init.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html',
|
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html',
|
||||||
@@ -247,20 +240,6 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-description.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-description.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-info-distance.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-info-distance.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-defense.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-particuliere.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-etotal.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-appelchance.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-attaque.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-encaissement.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-parade.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-esquive.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-competence.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-general.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-tache.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-sort.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-alchimie.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-possession.html',
|
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-summary.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-summary.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html',
|
||||||
@@ -274,7 +253,8 @@ export class RdDUtility {
|
|||||||
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(row, col));
|
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(row, col));
|
||||||
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
||||||
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
|
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
|
||||||
Handlebars.registerHelper('upper', str => str?.toUpperCase() ?? 'NULL');
|
Handlebars.registerHelper('upper', str => str?.toUpperCase() ?? '');
|
||||||
|
Handlebars.registerHelper('lowercase', str => str?.toLowerCase() ?? '');
|
||||||
Handlebars.registerHelper('le', str => Grammar.articleDetermine(str));
|
Handlebars.registerHelper('le', str => Grammar.articleDetermine(str));
|
||||||
Handlebars.registerHelper('apostrophe', (article, str) => Grammar.apostrophe(article, str));
|
Handlebars.registerHelper('apostrophe', (article, str) => Grammar.apostrophe(article, str));
|
||||||
Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str));
|
Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str));
|
||||||
@@ -444,12 +424,16 @@ export class RdDUtility {
|
|||||||
static buildContenuConteneur(conteneur, options = {}, optionsArbre = {}) {
|
static buildContenuConteneur(conteneur, options = {}, optionsArbre = {}) {
|
||||||
RdDUtility.prepareOptionsArbreInventaire(conteneur, optionsArbre);
|
RdDUtility.prepareOptionsArbreInventaire(conteneur, optionsArbre);
|
||||||
const display = optionsArbre.ouvert ? 'item-display-show' : 'item-display-hide';
|
const display = optionsArbre.ouvert ? 'item-display-show' : 'item-display-hide';
|
||||||
let strContenu = `<ul class='item-list alterne-list ${display} list-item-margin${Math.min(optionsArbre.profondeur, 6)}'>`;
|
const profondeur = optionsArbre.profondeur;
|
||||||
|
|
||||||
optionsArbre.profondeur++;
|
optionsArbre.profondeur++;
|
||||||
for (let contenu of conteneur.subItems) {
|
const lignesContenu = conteneur.subItems.sort(Misc.ascending(it => it.name))
|
||||||
strContenu += this.buildLigneInventaire(contenu, options, optionsArbre);
|
.map(contenu => this.buildLigneInventaire(contenu, options, optionsArbre));
|
||||||
}
|
|
||||||
return strContenu + "</ul>";
|
return `<ul class='item-list alterne-list ${display} list-item-margin${Math.min(profondeur, 6)}'>`
|
||||||
|
+ lignesContenu.reduce(Misc.joining(''), '')
|
||||||
|
+ "</ul>";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -466,10 +450,6 @@ export class RdDUtility {
|
|||||||
return ajustementsEncaissement;
|
return ajustementsEncaissement;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getDefinitionsBlessures() {
|
|
||||||
return definitionsBlessures;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getSegmentsFatigue(maxEnd) {
|
static getSegmentsFatigue(maxEnd) {
|
||||||
maxEnd = Math.max(maxEnd, 1);
|
maxEnd = Math.max(maxEnd, 1);
|
||||||
@@ -610,17 +590,10 @@ export class RdDUtility {
|
|||||||
encaissement.dmg.loc.label = encaissement.dmg.loc.label ?? 'Corps;';
|
encaissement.dmg.loc.label = encaissement.dmg.loc.label ?? 'Corps;';
|
||||||
encaissement.roll = roll;
|
encaissement.roll = roll;
|
||||||
encaissement.armure = armure;
|
encaissement.armure = armure;
|
||||||
|
encaissement.penetration = rollData.arme?.system.penetration ?? 0;
|
||||||
encaissement.total = jetTotal;
|
encaissement.total = jetTotal;
|
||||||
encaissement.vie = await RdDUtility._evaluatePerte(encaissement.vie, over20);
|
encaissement.vie = await RdDUtility._evaluatePerte(encaissement.vie, over20);
|
||||||
encaissement.endurance = await RdDUtility._evaluatePerte(encaissement.endurance, over20);
|
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'
|
|
||||||
);
|
|
||||||
return encaissement;
|
return encaissement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
206
module/sommeil/app-astrologie.js
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
import { SYSTEM_RDD } from "../constants.js";
|
||||||
|
import { Misc } from "../misc.js";
|
||||||
|
import { RdDTimestamp } from "../time/rdd-timestamp.js";
|
||||||
|
|
||||||
|
export const APP_ASTROLOGIE_REFRESH = `${SYSTEM_RDD}-refresh-astrologie`
|
||||||
|
|
||||||
|
export class AppAstrologie extends Application {
|
||||||
|
static async create(actor = undefined, options = {}) {
|
||||||
|
if (actor == undefined && !game.user.isGM) {
|
||||||
|
actor = game.user.character
|
||||||
|
}
|
||||||
|
if (!actor && !game.user.isGM) {
|
||||||
|
console.error("AppAstrologie uniquement accessible pour le MJ, ou depuis un personnage pour un joueur")
|
||||||
|
}
|
||||||
|
new AppAstrologie(actor, options).render(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static get defaultOptions() {
|
||||||
|
return mergeObject(super.defaultOptions, {
|
||||||
|
template: "systems/foundryvtt-reve-de-dragon/templates/sommeil/app-astrologie.hbs",
|
||||||
|
title: "Astrologie",
|
||||||
|
width: 'fit-content',
|
||||||
|
height: 'fit-content',
|
||||||
|
classes: ['calendar-astrologie'],
|
||||||
|
popOut: true,
|
||||||
|
resizable: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(actor, options = {}) {
|
||||||
|
super(options);
|
||||||
|
this.actor = actor;
|
||||||
|
this.hookReference = Hooks.on(APP_ASTROLOGIE_REFRESH, () => this.refreshAstrologie());
|
||||||
|
}
|
||||||
|
|
||||||
|
getData(options) {
|
||||||
|
this.appData = super.getData(options)
|
||||||
|
const calendrier = game.system.rdd.calendrier;
|
||||||
|
mergeObject(this.appData, {
|
||||||
|
isGM: game.user.isGM,
|
||||||
|
isActor: this.actor != undefined,
|
||||||
|
calendrier: calendrier.getTimestamp().toCalendrier(),
|
||||||
|
dates: calendrier.getJoursSuivants(10),
|
||||||
|
heures: RdDTimestamp.definitions(),
|
||||||
|
actorAstrologie: this.getActorAstrologie(),
|
||||||
|
gmAstrologie: this.getGMAstrologie(calendrier),
|
||||||
|
theme: {
|
||||||
|
signeAstral: RdDTimestamp.definition(0),
|
||||||
|
signeNaissance: RdDTimestamp.definition(0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return this.appData;
|
||||||
|
}
|
||||||
|
|
||||||
|
getActorAstrologie() {
|
||||||
|
if (this.actor) {
|
||||||
|
return {
|
||||||
|
actor: this.actor,
|
||||||
|
nombres: this._organizeNombresAstraux(this.actor.listItems('nombreastral')),
|
||||||
|
ajustements: CONFIG.RDD.difficultesLibres,
|
||||||
|
etat: this.actor.getEtatGeneral(),
|
||||||
|
astrologie: this.actor.getCompetence('Astrologie')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
_organizeNombresAstraux(nombresAstraux) {
|
||||||
|
let organized = {};
|
||||||
|
nombresAstraux.forEach(na => {
|
||||||
|
if (!organized[na.system.jourindex]) {
|
||||||
|
organized[na.system.jourindex] = {
|
||||||
|
listValues: [],
|
||||||
|
jourlabel: na.system.jourlabel
|
||||||
|
}
|
||||||
|
}
|
||||||
|
organized[na.system.jourindex].listValues.push(na.system.value);
|
||||||
|
})
|
||||||
|
return organized;
|
||||||
|
}
|
||||||
|
|
||||||
|
getGMAstrologie(calendrier) {
|
||||||
|
if (game.user.isGM) {
|
||||||
|
const nbAstral = calendrier.getNombreAstral()
|
||||||
|
const heures = RdDTimestamp.heures();
|
||||||
|
return {
|
||||||
|
ajustementsActors: game.actors.filter(it => it.isPersonnage() && it.hasPlayerOwner)
|
||||||
|
.map(actor => this.getAjustementActor(actor, nbAstral, heures)),
|
||||||
|
nombresAstraux: calendrier.getNombresAstraux().map(na => this.getDetailNombreAstral(na))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
getAjustementActor(actor, nbAstral, heures) {
|
||||||
|
const hn = RdDTimestamp.findHeure(actor.getHeureNaissance())?.heure ?? 0;
|
||||||
|
return {
|
||||||
|
actor,
|
||||||
|
ajustements: heures.map(heure => {
|
||||||
|
return { heure, ajustement: RdDTimestamp.ajustementAstrologiqueHeure(hn, nbAstral, heure) };
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getDetailNombreAstral(nombreAstral) {
|
||||||
|
const detail = duplicate(nombreAstral);
|
||||||
|
const timestamp = new RdDTimestamp({ indexDate: nombreAstral.index });
|
||||||
|
detail.date = { mois: timestamp.mois, jour: timestamp.jour + 1 };
|
||||||
|
detail.valeursFausses.forEach(fausse => fausse.actorName = game.actors.get(fausse.actorId).name ?? "Inconnu");
|
||||||
|
return detail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
this.html = html;
|
||||||
|
this.html.find('select[name="signe-astral"]').change(event => {
|
||||||
|
this.selectNombreAstral(this.html.find('select[name="signe-astral"]').val());
|
||||||
|
})
|
||||||
|
this.html.find('select[name="signe-naissance"]').change(event => {
|
||||||
|
this.selectHeureNaissance(this.html.find('select[name="signe-naissance"]').val());
|
||||||
|
})
|
||||||
|
this.html.find('td.nombre-astral').click(event => {
|
||||||
|
this.selectNombreAstral(Number.parseInt(event.currentTarget.attributes['data-nombre-astral'].value) - 1);
|
||||||
|
})
|
||||||
|
this.html.find('tr.heure-naissance').click(event => {
|
||||||
|
this.selectHeureNaissance(event.currentTarget.attributes['data-heure-naissance'].value);
|
||||||
|
})
|
||||||
|
this.html.find('[name="jet-astrologie"]').click(event => this.requestJetAstrologie());
|
||||||
|
this.html.find('[name="rebuild-nombres-astraux"]').click(event => this.rebuildNombresAstraux());
|
||||||
|
|
||||||
|
this.onCalculThemeAstral();
|
||||||
|
}
|
||||||
|
|
||||||
|
selectHeureNaissance(heureNaissance) {
|
||||||
|
this.appData.theme.signeNaissance = RdDTimestamp.definition(heureNaissance);
|
||||||
|
this.onCalculThemeAstral();
|
||||||
|
}
|
||||||
|
|
||||||
|
selectNombreAstral(nombreAstral) {
|
||||||
|
this.appData.theme.signeAstral = RdDTimestamp.definition(nombreAstral);
|
||||||
|
this.onCalculThemeAstral();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rebuildNombresAstraux() {
|
||||||
|
game.system.rdd.calendrier.resetNombresAstraux();
|
||||||
|
|
||||||
|
await game.system.rdd.calendrier.rebuildNombresAstraux();
|
||||||
|
}
|
||||||
|
|
||||||
|
onCalculThemeAstral() {
|
||||||
|
const chiffreAstral = this.appData.theme.signeAstral.heure + 1;
|
||||||
|
const heureNaissance = this.appData.theme.signeNaissance.heure + 1;
|
||||||
|
RdDTimestamp.definitions().forEach(dh => {
|
||||||
|
const ajustement = RdDTimestamp.ajustementAstrologiqueHeure(heureNaissance, chiffreAstral, dh.heure + 1);
|
||||||
|
const txtAjustement = ajustement == 0 ? '' : Misc.toSignedString(ajustement);
|
||||||
|
this.html.find(`div.horloge-ajustement.heure-${dh.hh}`).text(txtAjustement)
|
||||||
|
});
|
||||||
|
|
||||||
|
this.html.find(`select[name="signe-astral"]`).val(this.appData.theme.signeAstral.key)
|
||||||
|
this.html.find(`select[name="signe-naissance"]`).val(this.appData.theme.signeNaissance.key)
|
||||||
|
|
||||||
|
const angleAstrologie = ((chiffreAstral + heureNaissance) * 30) % 360 - 45;
|
||||||
|
this.html.find(`div.horloge-roue div.disque-astro img`).css(Misc.cssRotation(angleAstrologie));
|
||||||
|
|
||||||
|
const timestamp = game.system.rdd.calendrier.getTimestamp();
|
||||||
|
|
||||||
|
this.html.find(`div.horloge-roue div.horloge-aiguille-heure img`).css(Misc.cssRotation(timestamp.angleHeure));
|
||||||
|
this.html.find(`div.horloge-roue div.horloge-aiguille-minute img`).css(Misc.cssRotation(timestamp.angleMinute));
|
||||||
|
}
|
||||||
|
|
||||||
|
requestJetAstrologie() {
|
||||||
|
if (!this.appData?.isActor) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let socketData = {
|
||||||
|
id: this.appData.actorAstrologie.actor.id,
|
||||||
|
carac_vue: this.actor.system.carac['vue'].value,
|
||||||
|
etat: this.actor.getEtatGeneral(),
|
||||||
|
astrologie: this.actor.getCompetence('Astrologie'),
|
||||||
|
conditions: this.html.find('[name="diffConditions"]').val(),
|
||||||
|
date: this.html.find('[name="joursAstrologie"]').val(),
|
||||||
|
userId: game.user.id
|
||||||
|
}
|
||||||
|
if (Misc.isUniqueConnectedGM()) {
|
||||||
|
game.system.rdd.calendrier.requestNombreAstral(socketData);
|
||||||
|
} else {
|
||||||
|
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||||
|
msg: "msg_request_nombre_astral",
|
||||||
|
data: socketData
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshAstrologie() {
|
||||||
|
this.render(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
async close(options) {
|
||||||
|
Hooks.off(APP_ASTROLOGIE_REFRESH, this.hookReference);
|
||||||
|
this.hookReference = undefined
|
||||||
|
await super.close(options)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
import { EffetsDraconiques } from "../tmr/effets-draconiques.js";
|
|
||||||
|
|
||||||
export class DialogChateauDormant extends Dialog {
|
export class DialogChateauDormant extends Dialog {
|
||||||
|
|
||||||
@@ -76,8 +75,14 @@ export class DialogChateauDormant extends Dialog {
|
|||||||
|
|
||||||
async onChateauDormant() {
|
async onChateauDormant() {
|
||||||
const motifStress = this.html.find("form input[name='motifStress']").val();
|
const motifStress = this.html.find("form input[name='motifStress']").val();
|
||||||
const consignesChateauDormant = jQuery.map(this.html.find('li.set-sommeil-actor'), it => {
|
jQuery.map(
|
||||||
const actorRow = this.html.find(it);
|
this.html.find('li.set-sommeil-actor'),
|
||||||
|
it => this.extractConsigneActor(this.html.find(it), motifStress)
|
||||||
|
).forEach(async consigne => await consigne.actor.prepareChateauDormant(consigne))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extractConsigneActor(actorRow, motifStress) {
|
||||||
const actorId = actorRow.data('actor-id');
|
const actorId = actorRow.data('actor-id');
|
||||||
const actor = this.getActor(actorId);
|
const actor = this.getActor(actorId);
|
||||||
const insomnie = actorRow.find('input.sommeil-insomnie').is(':checked');
|
const insomnie = actorRow.find('input.sommeil-insomnie').is(':checked');
|
||||||
@@ -93,11 +98,8 @@ export class DialogChateauDormant extends Dialog {
|
|||||||
date: this.dialogData.finChateauDormant,
|
date: this.dialogData.finChateauDormant,
|
||||||
insomnie: insomnie,
|
insomnie: insomnie,
|
||||||
heures: insomnie ? 0 : Number.parseInt(actorRow.find('input.sommeil-heures').val()),
|
heures: insomnie ? 0 : Number.parseInt(actorRow.find('input.sommeil-heures').val()),
|
||||||
moral: actor.moral,
|
moral: actor.system.sommeil.moral ?? 'neutre',
|
||||||
}
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
|
||||||
consignesChateauDormant.forEach(async consigne => await consigne.actor.prepareChateauDormant(consigne))
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,10 @@ import { EffetsDraconiques } from "../tmr/effets-draconiques.js";
|
|||||||
export class DialogRepos extends Dialog {
|
export class DialogRepos extends Dialog {
|
||||||
|
|
||||||
static async create(actor) {
|
static async create(actor) {
|
||||||
if (!ReglesOptionelles.isUsing("chateau-dormant-gardien")) {
|
if (!actor.isPersonnage()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!ReglesOptionelles.isUsing("chateau-dormant-gardien") || !actor.hasPlayerOwner) {
|
||||||
actor.system.sommeil = {
|
actor.system.sommeil = {
|
||||||
"nouveaujour": true,
|
"nouveaujour": true,
|
||||||
"insomnie": EffetsDraconiques.isSujetInsomnie(actor),
|
"insomnie": EffetsDraconiques.isSujetInsomnie(actor),
|
||||||
|
|||||||
@@ -39,18 +39,18 @@ export class Targets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTarget() {
|
static getTarget(options = { warn: true }) {
|
||||||
const targets = Targets.listTargets();
|
const targets = Targets.listTargets();
|
||||||
switch (targets.length) {
|
switch (targets.length) {
|
||||||
case 1:
|
case 1:
|
||||||
return targets[0];
|
return targets[0];
|
||||||
case 0:
|
case 0:
|
||||||
ui.notifications.warn("Vous devez choisir une cible à attaquer!");
|
if (options.warn) ui.notifications.warn("Vous devez choisir une cible à attaquer!");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui.notifications.warn("Vous devez choisir une cible (et <strong>une seule</strong>) à attaquer!");
|
if (options.warn) ui.notifications.warn("Vous devez choisir une cible (et <strong>une seule</strong>) à attaquer!");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@ import { RdDTimestamp } from "./rdd-timestamp.js";
|
|||||||
* Extend the base Dialog entity by defining a custom window to perform roll.
|
* Extend the base Dialog entity by defining a custom window to perform roll.
|
||||||
* @extends {Dialog}
|
* @extends {Dialog}
|
||||||
*/
|
*/
|
||||||
export class RdDCalendrierEditeur extends Dialog {
|
export class RdDCalendrierEditor extends Dialog {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
constructor(html, calendrier, calendrierData) {
|
constructor(html, calendrier, calendrierData) {
|
||||||
@@ -30,8 +30,8 @@ export class RdDCalendrierEditeur extends Dialog {
|
|||||||
this.html.find("input[name='calendar.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.mois']").val(this.calendrierData.mois.key);
|
||||||
this.html.find("select[name='calendar.heure']").val(this.calendrierData.heure.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);
|
RdDCalendrierEditor.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);
|
RdDCalendrierEditor.setLimited(this.html.find("input[name='calendar.minute']"), this.calendrierData.minute, 0, 119);
|
||||||
}
|
}
|
||||||
|
|
||||||
static setLimited(input, init, min, max) {
|
static setLimited(input, init, min, max) {
|
||||||
442
module/time/rdd-calendrier.js
Normal file
@@ -0,0 +1,442 @@
|
|||||||
|
import { MAX_NOMBRE_ASTRAL, RdDTimestamp, WORLD_TIMESTAMP_SETTING } from "./rdd-timestamp.js";
|
||||||
|
import { RdDCalendrierEditor } from "./rdd-calendrier-editor.js";
|
||||||
|
import { RdDResolutionTable } from "../rdd-resolution-table.js";
|
||||||
|
import { RdDUtility } from "../rdd-utility.js";
|
||||||
|
import { RdDDice } from "../rdd-dice.js";
|
||||||
|
import { Misc } from "../misc.js";
|
||||||
|
import { DialogChronologie } from "../dialog-chronologie.js";
|
||||||
|
import { HIDE_DICE, SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "../constants.js";
|
||||||
|
import { ReglesOptionelles } from "../settings/regles-optionelles.js";
|
||||||
|
import { DialogChateauDormant } from "../sommeil/dialog-chateau-dormant.js";
|
||||||
|
import { APP_ASTROLOGIE_REFRESH, AppAstrologie } from "../sommeil/app-astrologie.js";
|
||||||
|
|
||||||
|
const TEMPLATE_CALENDRIER = "systems/foundryvtt-reve-de-dragon/templates/time/calendar.hbs";
|
||||||
|
|
||||||
|
const INITIAL_CALENDAR_POS = { top: 200, left: 200, horlogeAnalogique: true };
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
export class RdDCalendrier extends Application {
|
||||||
|
static init() {
|
||||||
|
game.settings.register(SYSTEM_RDD, "liste-nombre-astral", {
|
||||||
|
name: "liste-nombre-astral",
|
||||||
|
scope: "world",
|
||||||
|
config: false,
|
||||||
|
default: [],
|
||||||
|
type: Object
|
||||||
|
});
|
||||||
|
|
||||||
|
game.settings.register(SYSTEM_RDD, "calendrier-pos", {
|
||||||
|
name: "calendrierPos",
|
||||||
|
scope: "client",
|
||||||
|
config: false,
|
||||||
|
default: INITIAL_CALENDAR_POS,
|
||||||
|
type: Object
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static get defaultOptions() {
|
||||||
|
return mergeObject(super.defaultOptions, {
|
||||||
|
title: "Calendrier",
|
||||||
|
template: TEMPLATE_CALENDRIER,
|
||||||
|
classes: ["calendar"],
|
||||||
|
popOut: true,
|
||||||
|
resizable: false,
|
||||||
|
width: 'fit-content',
|
||||||
|
height: 'fit-content',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.timestamp = RdDTimestamp.getWorldTime();
|
||||||
|
if (Misc.isUniqueConnectedGM()) { // Uniquement si GM
|
||||||
|
RdDTimestamp.setWorldTime(this.timestamp);
|
||||||
|
this.nombresAstraux = this.getNombresAstraux();
|
||||||
|
this.rebuildNombresAstraux(HIDE_DICE); // Ensure always up-to-date
|
||||||
|
}
|
||||||
|
Hooks.on('updateSetting', async (setting, update, options, id) => this.onUpdateSetting(setting, update, options, id));
|
||||||
|
}
|
||||||
|
|
||||||
|
get title() {
|
||||||
|
const calendrier = this.timestamp.toCalendrier();
|
||||||
|
return `${calendrier.heure.label}, ${calendrier.jourDuMois} ${calendrier.mois.label} ${calendrier.annee} (${calendrier.mois.saison})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
savePosition() {
|
||||||
|
game.settings.set(SYSTEM_RDD, "calendrier-pos", {
|
||||||
|
top: this.position.top,
|
||||||
|
left: this.position.left,
|
||||||
|
horlogeAnalogique: this.horlogeAnalogique
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getSavePosition() {
|
||||||
|
const pos = game.settings.get(SYSTEM_RDD, "calendrier-pos");
|
||||||
|
if (pos?.top == undefined) {
|
||||||
|
return INITIAL_CALENDAR_POS;
|
||||||
|
}
|
||||||
|
this.horlogeAnalogique = pos.horlogeAnalogique;
|
||||||
|
return pos
|
||||||
|
}
|
||||||
|
|
||||||
|
setPosition(position) {
|
||||||
|
super.setPosition(position)
|
||||||
|
this.savePosition()
|
||||||
|
}
|
||||||
|
|
||||||
|
display() {
|
||||||
|
const pos = this.getSavePosition()
|
||||||
|
this.render(true, { left: pos.left, top: pos.top });
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
_getHeaderButtons() {
|
||||||
|
const buttons = [];
|
||||||
|
if (game.user.isGM) {
|
||||||
|
buttons.unshift({
|
||||||
|
class: "calendar-astrologie",
|
||||||
|
icon: "fa-solid fa-moon-over-sun",
|
||||||
|
onclick: ev => this.showAstrologieEditor()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
class: "calendar-set-datetime",
|
||||||
|
icon: "fa-solid fa-calendar-pen",
|
||||||
|
onclick: ev => this.showCalendarEditor()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return buttons
|
||||||
|
}
|
||||||
|
async maximize() {
|
||||||
|
await super.maximize()
|
||||||
|
this.render(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
async close() { }
|
||||||
|
|
||||||
|
async onUpdateSetting(setting, update, options, id) {
|
||||||
|
if (setting.key == SYSTEM_RDD + '.' + WORLD_TIMESTAMP_SETTING) {
|
||||||
|
this.timestamp = RdDTimestamp.getWorldTime();
|
||||||
|
this.positionAiguilles()
|
||||||
|
Hooks.callAll(APP_ASTROLOGIE_REFRESH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getData() {
|
||||||
|
const formData = super.getData();
|
||||||
|
this.fillCalendrierData(formData);
|
||||||
|
return formData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
fillCalendrierData(formData = {}) {
|
||||||
|
mergeObject(formData, this.timestamp.toCalendrier());
|
||||||
|
formData.isGM = game.user.isGM;
|
||||||
|
formData.heures = RdDTimestamp.definitions()
|
||||||
|
formData.horlogeAnalogique = this.horlogeAnalogique;
|
||||||
|
return formData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
/** @override */
|
||||||
|
async activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
this.html = html;
|
||||||
|
this.html.find('.ajout-chronologie').click(ev => DialogChronologie.create());
|
||||||
|
this.html.find('.toggle-horloge-analogique').click(ev => this.onToggleHorlogeAnalogique())
|
||||||
|
this.html.find('.calendar-btn').click(ev => this.onCalendarButton(ev));
|
||||||
|
this.html.find('.horloge-roue .horloge-heure').click(event => {
|
||||||
|
const h = this.html.find(event.currentTarget)?.data('heure');
|
||||||
|
this.positionnerHeure(Number(h));
|
||||||
|
})
|
||||||
|
this.html.find('.calendar-set-datetime').click(ev => {
|
||||||
|
ev.preventDefault();
|
||||||
|
this.showCalendarEditor();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.html.find('.calendar-astrologie').click(ev => {
|
||||||
|
ev.preventDefault();
|
||||||
|
this.showAstrologieEditor();
|
||||||
|
});
|
||||||
|
this.positionAiguilles()
|
||||||
|
}
|
||||||
|
|
||||||
|
positionAiguilles() {
|
||||||
|
const timestamp = this.getTimestamp();
|
||||||
|
this.html.find(`div.horloge-roue div.horloge-aiguille-heure img`).css(Misc.cssRotation(timestamp.angleHeure));
|
||||||
|
this.html.find(`div.horloge-roue div.horloge-aiguille-minute img`).css(Misc.cssRotation(timestamp.angleMinute));
|
||||||
|
}
|
||||||
|
|
||||||
|
onToggleHorlogeAnalogique() {
|
||||||
|
this.horlogeAnalogique = !this.horlogeAnalogique;
|
||||||
|
this.savePosition()
|
||||||
|
this.display()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getNombresAstraux() {
|
||||||
|
return game.settings.get(SYSTEM_RDD, "liste-nombre-astral") ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
dateCourante() {
|
||||||
|
return this.timestamp.formatDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
isAfterIndexDate(indexDate) {
|
||||||
|
// TODO: standardize
|
||||||
|
return indexDate < this.timestamp.indexDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
heureCourante() { return RdDTimestamp.definition(this.timestamp.heure); }
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getCurrentMinute() { return this.timestamp.indexMinute; }
|
||||||
|
|
||||||
|
getTimestamp() {
|
||||||
|
return this.timestamp;
|
||||||
|
}
|
||||||
|
getTimestampFinChateauDormant(nbJours = 0) {
|
||||||
|
return this.timestamp.nouveauJour().addJours(nbJours);
|
||||||
|
}
|
||||||
|
|
||||||
|
getTimestampFinHeure(nbHeures = 0) {
|
||||||
|
return this.timestamp.nouvelleHeure().addHeures(nbHeures);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getIndexFromDate(jour, mois) {
|
||||||
|
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(count) {
|
||||||
|
return Misc.intArray(this.timestamp.indexDate, this.timestamp.indexDate + count)
|
||||||
|
.map(i => { return { label: RdDTimestamp.formatIndexDate(i), index: i } })
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async ajouterNombreAstral(indexDate, showDice = SHOW_DICE) {
|
||||||
|
const nombreAstral = await RdDDice.rollTotal("1dh", { showDice: showDice, rollMode: "selfroll" });
|
||||||
|
const dateFuture = RdDTimestamp.formatIndexDate(indexDate);
|
||||||
|
if (showDice != HIDE_DICE) {
|
||||||
|
ChatMessage.create({
|
||||||
|
whisper: ChatMessage.getWhisperRecipients("GM"),
|
||||||
|
content: `Le chiffre astrologique du ${dateFuture} sera le ${nombreAstral}`
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
nombreAstral: nombreAstral,
|
||||||
|
valeursFausses: [],
|
||||||
|
index: indexDate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
resetNombresAstraux() {
|
||||||
|
this.nombresAstraux = [];
|
||||||
|
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", []);
|
||||||
|
|
||||||
|
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||||
|
msg: "msg_reset_nombre_astral",
|
||||||
|
data: {}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {*} indexDate la date pour laquelle obtenir le nombre astral. Si undefined, on prend la date du jour
|
||||||
|
* @returns le nombre astral pour la date, ou pour la date du jour si la date n'est pas fournie.
|
||||||
|
* Si aucun nombre astral n'est trouvé, retourne 0 (cas où l'on demanderait un nombre astral en dehors des 12 jours courant et à venir)
|
||||||
|
*/
|
||||||
|
getNombreAstral(indexDate = undefined) {
|
||||||
|
if (indexDate == undefined) {
|
||||||
|
indexDate = this.timestamp.indexDate;
|
||||||
|
}
|
||||||
|
this.nombresAstraux = this.getNombresAstraux();
|
||||||
|
let astralData = this.nombresAstraux.find((nombreAstral, i) => nombreAstral.index == indexDate);
|
||||||
|
return astralData?.nombreAstral ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rebuildNombresAstraux(showDice = HIDE_DICE) {
|
||||||
|
if (Misc.isUniqueConnectedGM()) {
|
||||||
|
let newList = [];
|
||||||
|
for (let i = 0; i < MAX_NOMBRE_ASTRAL; i++) {
|
||||||
|
let dayIndex = this.timestamp.indexDate + i;
|
||||||
|
let na = this.nombresAstraux.find(n => n.index == dayIndex);
|
||||||
|
if (na) {
|
||||||
|
newList[i] = na;
|
||||||
|
} else {
|
||||||
|
newList[i] = await this.ajouterNombreAstral(dayIndex, showDice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.nombresAstraux = newList;
|
||||||
|
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", newList);
|
||||||
|
game.actors.filter(it => it.isPersonnage()).forEach(actor => actor.supprimerAnciensNombresAstraux());
|
||||||
|
this.notifyChangeNombresAstraux();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
notifyChangeNombresAstraux() {
|
||||||
|
Hooks.callAll(APP_ASTROLOGIE_REFRESH);
|
||||||
|
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||||
|
msg: "msg_refresh_nombre_astral",
|
||||||
|
data: {}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async setNewTimestamp(newTimestamp) {
|
||||||
|
const oldTimestamp = this.timestamp;
|
||||||
|
await Promise.all(game.actors.map(async actor => await actor.onTimeChanging(oldTimestamp, newTimestamp)));
|
||||||
|
RdDTimestamp.setWorldTime(newTimestamp);
|
||||||
|
if (oldTimestamp.indexDate + 1 == newTimestamp.indexDate && ReglesOptionelles.isUsing("chateau-dormant-gardien")) {
|
||||||
|
await DialogChateauDormant.create();
|
||||||
|
}
|
||||||
|
this.timestamp = newTimestamp;
|
||||||
|
await this.rebuildNombresAstraux();
|
||||||
|
this.positionAiguilles()
|
||||||
|
this.display();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async onCalendarButton(ev) {
|
||||||
|
ev.preventDefault();
|
||||||
|
const calendarAvance = ev.currentTarget.attributes['data-calendar-avance'];
|
||||||
|
const calendarSet = ev.currentTarget.attributes['data-calendar-set'];
|
||||||
|
if (calendarAvance) {
|
||||||
|
await this.incrementTime(Number(calendarAvance.value));
|
||||||
|
}
|
||||||
|
else if (calendarSet) {
|
||||||
|
this.positionnerHeure(Number(calendarSet.value));
|
||||||
|
}
|
||||||
|
this.positionAiguilles()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async incrementTime(minutes = 0) {
|
||||||
|
if (game.user.isGM) {
|
||||||
|
await this.setNewTimestamp(this.timestamp.addMinutes(minutes));
|
||||||
|
Hooks.callAll(APP_ASTROLOGIE_REFRESH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async incrementerJour() {
|
||||||
|
await this.setNewTimestamp(this.timestamp.nouveauJour());
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async positionnerHeure(heure) {
|
||||||
|
if (game.user.isGM) {
|
||||||
|
const indexDate = this.timestamp.indexDate;
|
||||||
|
const addDay = this.timestamp.heure < heure ? 0 : 1;
|
||||||
|
const newTimestamp = new RdDTimestamp({ indexDate: indexDate + addDay }).addHeures(heure);
|
||||||
|
await this.setNewTimestamp(newTimestamp)
|
||||||
|
Hooks.callAll(APP_ASTROLOGIE_REFRESH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getLectureAstrologieDifficulte(dateIndex) {
|
||||||
|
let indexNow = this.timestamp.indexDate;
|
||||||
|
let diffDay = dateIndex - indexNow;
|
||||||
|
return - Math.floor(diffDay / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async requestNombreAstral(request) {
|
||||||
|
const actor = game.actors.get(request.id);
|
||||||
|
if (Misc.isUniqueConnectedGM()) { // Only once
|
||||||
|
console.log(request);
|
||||||
|
let jourDiff = this.getLectureAstrologieDifficulte(request.date);
|
||||||
|
let niveau = Number(request.astrologie.system.niveau) + Number(request.conditions) + Number(jourDiff) + Number(request.etat);
|
||||||
|
let rollData = {
|
||||||
|
caracValue: request.carac_vue,
|
||||||
|
finalLevel: niveau,
|
||||||
|
showDice: HIDE_DICE,
|
||||||
|
rollMode: "blindroll"
|
||||||
|
};
|
||||||
|
await RdDResolutionTable.rollData(rollData);
|
||||||
|
request.rolled = rollData.rolled;
|
||||||
|
request.isValid = request.rolled.isSuccess;
|
||||||
|
request.nbAstral = this.getNombreAstral(request.date);
|
||||||
|
|
||||||
|
if (request.rolled.isSuccess) {
|
||||||
|
if (request.rolled.isPart) {
|
||||||
|
// Gestion expérience (si existante)
|
||||||
|
request.competence = actor.getCompetence("astrologie")
|
||||||
|
request.selectedCarac = actor.system.carac["vue"];
|
||||||
|
actor.appliquerAjoutExperience(request, 'hide');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
request.nbAstral = await RdDDice.rollTotal("1dhr" + request.nbAstral, {
|
||||||
|
rollMode: "selfroll", showDice: HIDE_DICE
|
||||||
|
});
|
||||||
|
// Mise à jour des nombres astraux du joueur
|
||||||
|
this.addNbAstralIncorect(request.id, request.date, request.nbAstral);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Misc.getActiveUser(request.userId)?.isGM) {
|
||||||
|
RdDUtility.responseNombreAstral(request);
|
||||||
|
} else {
|
||||||
|
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||||
|
msg: "msg_response_nombre_astral",
|
||||||
|
data: request
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addNbAstralIncorect(actorId, date, nbAstral) {
|
||||||
|
const astralData = this.nombresAstraux.find((nombreAstral, i) => nombreAstral.index == date);
|
||||||
|
astralData.valeursFausses.push({ actorId: actorId, nombreAstral: nbAstral });
|
||||||
|
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", this.nombresAstraux);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getAjustementAstrologique(heureNaissance, name = undefined) {
|
||||||
|
const defHeure = RdDTimestamp.findHeure(heureNaissance);
|
||||||
|
if (defHeure) {
|
||||||
|
return RdDTimestamp.ajustementAstrologiqueHeure(defHeure.heure, this.getNombreAstral(), this.timestamp.heure);
|
||||||
|
}
|
||||||
|
else if (name) {
|
||||||
|
ui.notifications.warn(name + " n'a pas d'heure de naissance, ou elle est incorrecte : " + heureNaissance);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ui.notifications.warn(heureNaissance + " ne correspond pas à une heure de naissance");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async saveEditeur(calendrierData) {
|
||||||
|
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() {
|
||||||
|
const calendrierData = this.fillCalendrierData();
|
||||||
|
if (this.editeur == undefined) {
|
||||||
|
const html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/time/calendar-editor.hbs', calendrierData);
|
||||||
|
this.editeur = new RdDCalendrierEditor(html, this, calendrierData)
|
||||||
|
}
|
||||||
|
this.editeur.updateData(calendrierData);
|
||||||
|
this.editeur.render(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async showAstrologieEditor() {
|
||||||
|
await AppAstrologie.create();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,16 +1,17 @@
|
|||||||
import { SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
|
import { SHOW_DICE, SYSTEM_RDD } from "../constants.js";
|
||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "../grammar.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { RdDDice } from "./rdd-dice.js";
|
import { RdDDice } from "../rdd-dice.js";
|
||||||
|
|
||||||
export const WORLD_TIMESTAMP_SETTING = "calendrier";
|
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_JOURS_PAR_AN = 336; //RDD_JOURS_PAR_MOIS * RDD_MOIS_PAR_AN;
|
||||||
const RDD_HEURES_PAR_JOUR = 12;
|
const RDD_MOIS_PAR_AN = 12;
|
||||||
const RDD_MINUTES_PAR_HEURES = 120;
|
export const RDD_JOURS_PAR_MOIS = 28;
|
||||||
const RDD_MINUTES_PAR_JOUR = 1440; //RDD_HEURES_PAR_JOUR * RDD_MINUTES_PAR_HEURES;
|
export const RDD_HEURES_PAR_JOUR = 12;
|
||||||
|
export const MAX_NOMBRE_ASTRAL = 12;
|
||||||
|
export const RDD_MINUTES_PAR_HEURES = 120;
|
||||||
|
export const RDD_MINUTES_PAR_JOUR = 1440; //RDD_HEURES_PAR_JOUR * RDD_MINUTES_PAR_HEURES;
|
||||||
const ROUNDS_PAR_MINUTE = 10;
|
const ROUNDS_PAR_MINUTE = 10;
|
||||||
|
|
||||||
const DEFINITION_HEURES = [
|
const DEFINITION_HEURES = [
|
||||||
@@ -48,10 +49,6 @@ const FORMULES_PERIODE = [
|
|||||||
|
|
||||||
export class RdDTimestamp {
|
export class RdDTimestamp {
|
||||||
|
|
||||||
static iconeHeure(heure) {
|
|
||||||
return `systems/foundryvtt-reve-de-dragon/icons/heures/hd${heure < 9 ? '0' : ''}${heure + 1}.svg`;
|
|
||||||
}
|
|
||||||
|
|
||||||
static init() {
|
static init() {
|
||||||
game.settings.register(SYSTEM_RDD, WORLD_TIMESTAMP_SETTING, {
|
game.settings.register(SYSTEM_RDD, WORLD_TIMESTAMP_SETTING, {
|
||||||
name: WORLD_TIMESTAMP_SETTING,
|
name: WORLD_TIMESTAMP_SETTING,
|
||||||
@@ -63,11 +60,37 @@ export class RdDTimestamp {
|
|||||||
|
|
||||||
for (let i = 0; i < DEFINITION_HEURES.length; i++) {
|
for (let i = 0; i < DEFINITION_HEURES.length; i++) {
|
||||||
DEFINITION_HEURES[i].heure = i;
|
DEFINITION_HEURES[i].heure = i;
|
||||||
|
DEFINITION_HEURES[i].hh = RdDTimestamp.hh(i);
|
||||||
DEFINITION_HEURES[i].icon = RdDTimestamp.iconeHeure(i);
|
DEFINITION_HEURES[i].icon = RdDTimestamp.iconeHeure(i);
|
||||||
DEFINITION_HEURES[i].webp = DEFINITION_HEURES[i].icon.replace(".svg", ".webp");
|
DEFINITION_HEURES[i].webp = DEFINITION_HEURES[i].icon.replace(".svg", ".webp");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static hh(heure) {
|
||||||
|
return heure < 9 ? `0${heure + 1}` : `${heure + 1}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
static iconeHeure(heure) {
|
||||||
|
return `systems/foundryvtt-reve-de-dragon/icons/heures/hd${RdDTimestamp.hh(heure)}.svg`;
|
||||||
|
}
|
||||||
|
|
||||||
|
static definitions() {
|
||||||
|
return DEFINITION_HEURES
|
||||||
|
}
|
||||||
|
|
||||||
|
static formulesDuree() {
|
||||||
|
return FORMULES_DUREE
|
||||||
|
}
|
||||||
|
|
||||||
|
static formulesPeriode() {
|
||||||
|
return FORMULES_PERIODE
|
||||||
|
}
|
||||||
|
|
||||||
|
static heures() {
|
||||||
|
return Misc.intArray(0, RDD_HEURES_PAR_JOUR)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param signe
|
* @param signe
|
||||||
* @returns L'entrée de DEFINITION_HEURES correspondant au signe
|
* @returns L'entrée de DEFINITION_HEURES correspondant au signe
|
||||||
@@ -86,20 +109,26 @@ export class RdDTimestamp {
|
|||||||
return definition
|
return definition
|
||||||
}
|
}
|
||||||
|
|
||||||
static formulesDuree() {
|
|
||||||
return FORMULES_DUREE
|
|
||||||
}
|
|
||||||
|
|
||||||
static formulesPeriode() {
|
|
||||||
return FORMULES_PERIODE
|
|
||||||
}
|
|
||||||
|
|
||||||
static imgSigneHeure(heure) {
|
static imgSigneHeure(heure) {
|
||||||
return RdDTimestamp.imgSigne(RdDTimestamp.definition(heure));
|
return RdDTimestamp.imgSigne(RdDTimestamp.definition(heure));
|
||||||
}
|
}
|
||||||
|
|
||||||
static imgSigne(signe) {
|
static imgSigne(signe) {
|
||||||
return signe == undefined ? '' : `<img class="img-signe-heure" src="${signe.webp}" alt="${signe.label}"/>`
|
return signe == undefined ? '' : `<img class="img-signe-heure" src="${signe.webp}" alt="${signe.label}" title="${signe.label}"/>`
|
||||||
|
}
|
||||||
|
|
||||||
|
static ajustementAstrologiqueHeure(hn, nbAstral, heure) {
|
||||||
|
let ecart = (hn + nbAstral - heure) % RDD_HEURES_PAR_JOUR;
|
||||||
|
if (ecart < 0) {
|
||||||
|
ecart = (ecart + RDD_HEURES_PAR_JOUR) % RDD_HEURES_PAR_JOUR;
|
||||||
|
}
|
||||||
|
switch (ecart) {
|
||||||
|
case 0: return 4;
|
||||||
|
case 4: case 8: return 2;
|
||||||
|
case 6: return -4;
|
||||||
|
case 3: case 9: return -2;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static handleTimestampEditor(html, path, consumeTimestamp = async (path, timestamp) => { }) {
|
static handleTimestampEditor(html, path, consumeTimestamp = async (path, timestamp) => { }) {
|
||||||
@@ -199,6 +228,14 @@ export class RdDTimestamp {
|
|||||||
this.indexMinute = indexMinute ?? 0
|
this.indexMinute = indexMinute ?? 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)) }
|
||||||
|
get angleHeure() { return this.indexMinute / RDD_MINUTES_PAR_JOUR * 360 - 45 }
|
||||||
|
get angleMinute() { return this.indexMinute / RDD_MINUTES_PAR_HEURES * 360 + 45 }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convertit le timestamp en une structure avec les informations utiles
|
* Convertit le timestamp en une structure avec les informations utiles
|
||||||
@@ -216,13 +253,6 @@ export class RdDTimestamp {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
formatDate() {
|
||||||
const jour = this.jour + 1;
|
const jour = this.jour + 1;
|
||||||
const mois = RdDTimestamp.definition(this.mois).label;
|
const mois = RdDTimestamp.definition(this.mois).label;
|
||||||
@@ -230,6 +260,10 @@ export class RdDTimestamp {
|
|||||||
return `${jour} ${mois}` + (annee ? ' ' + annee : '');
|
return `${jour} ${mois}` + (annee ? ' ' + annee : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
formatDateHeure() {
|
||||||
|
return `${RdDTimestamp.definition(this.heure).label}, ${this.formatDate()}`;
|
||||||
|
}
|
||||||
|
|
||||||
nouveauJour() { return new RdDTimestamp({ indexDate: this.indexDate + 1, indexMinute: 0 }) }
|
nouveauJour() { return new RdDTimestamp({ indexDate: this.indexDate + 1, indexMinute: 0 }) }
|
||||||
|
|
||||||
nouvelleHeure() {
|
nouvelleHeure() {
|
||||||
@@ -226,9 +226,6 @@ export const TMRType = {
|
|||||||
desolation: { name: "désolation", genre: "f" }
|
desolation: { name: "désolation", genre: "f" }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
const caseSpecificModes = ["attache", "trounoir", "debordement", "reserve_extensible", "maitrisee"];
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const tmrRandomMovePatten =
|
const tmrRandomMovePatten =
|
||||||
[{ name: 'top', col: 0, row: -1 },
|
[{ name: 'top', col: 0, row: -1 },
|
||||||
@@ -239,8 +236,6 @@ const tmrRandomMovePatten =
|
|||||||
{ name: 'topleft', col: -1, row: -1 }
|
{ name: 'topleft', col: -1, row: -1 }
|
||||||
]
|
]
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class TMRUtility {
|
export class TMRUtility {
|
||||||
static init() {
|
static init() {
|
||||||
@@ -258,32 +253,25 @@ export class TMRUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static verifyTMRCoord(coord) {
|
static verifyTMRCoord(coord) {
|
||||||
let TMRregexp = new RegExp(/([A-M])(\d+)/g);
|
return Grammar.equalsInsensitive(coord, 'Fleuve') || TMRUtility.getTMR(coord);
|
||||||
let res = TMRregexp.exec(coord);
|
|
||||||
if (res && res[1] && res[2]) {
|
|
||||||
if (res[2] > 0 && res[2] < 16) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getTMR(coord) {
|
static getTMR(coord) {
|
||||||
return TMRMapping[coord];
|
return coord == 'Fleuve' ? TMRMapping['D1'] : TMRMapping[coord];
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTMRLabel(coord) {
|
static getTMRLabel(coord) {
|
||||||
return TMRMapping[coord]?.label ?? (coord + ": case inconnue");
|
return TMRUtility.getTMR(coord)?.label ?? (coord + ": case inconnue");
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTMRType(coord) {
|
static getTMRType(coord) {
|
||||||
const tmr = TMRMapping[coord];
|
const tmr = TMRUtility.getTMR(coord);
|
||||||
return Misc.upperFirst(TMRType[tmr.type].name);
|
return Misc.upperFirst(TMRType[tmr.type].name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTMRDescr(coord) {
|
static getTMRDescr(coord) {
|
||||||
const tmr = TMRMapping[coord];
|
const tmr = TMRUtility.getTMR(coord);
|
||||||
return Grammar.articleDetermine(tmr.type) + ' ' + tmr.label;
|
return Grammar.articleDetermine(tmr.type) + ' ' + tmr.label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@
|
|||||||
{"name":"Râpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"DJIvE20bU09h4YXw"}
|
{"name":"Râpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"DJIvE20bU09h4YXw"}
|
||||||
{"_id":"ElweMV283IUpqaik","name":"Sable-Poudre","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sable_poudre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ElweMV283IUpqaik"}},"system":{"description":"<p>Granulés. Poudre blanche.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"ElweMV283IUpqaik","name":"Sable-Poudre","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sable_poudre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ElweMV283IUpqaik"}},"system":{"description":"<p>Granulés. Poudre blanche.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"Eospy1EFNlhgOyXc","name":"Lacet de cuir (1 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lacet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Eospy1EFNlhgOyXc"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"Eospy1EFNlhgOyXc","name":"Lacet de cuir (1 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lacet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Eospy1EFNlhgOyXc"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"F6ZHJth4t0PA5PMB","name":"Alêne","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/poincon_2.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.F6ZHJth4t0PA5PMB"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074398966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
|
||||||
{"_id":"FH3mSvdebfhIL2Af","name":"Topazoïne","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/topazoine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.FH3mSvdebfhIL2Af"}},"system":{"description":"<p>Granulés. Coquille d'oeuf de cane broyé.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"FH3mSvdebfhIL2Af","name":"Topazoïne","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/topazoine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.FH3mSvdebfhIL2Af"}},"system":{"description":"<p>Granulés. Coquille d'oeuf de cane broyé.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"FaNRC7YQzibSdqZU","name":"Plume de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/plume_de_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.FaNRC7YQzibSdqZU"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"FaNRC7YQzibSdqZU","name":"Plume de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/plume_de_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.FaNRC7YQzibSdqZU"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"Flx5inKGs1GQKoYq","name":"Tube à parchemins","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tube_parchemin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Flx5inKGs1GQKoYq"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":1.3,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"Flx5inKGs1GQKoYq","name":"Tube à parchemins","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tube_parchemin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Flx5inKGs1GQKoYq"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":1.3,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
@@ -61,7 +60,6 @@
|
|||||||
{"_id":"LZPEdSIv3KywCwdk","name":"Liquide","type":"munition","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_neutre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LZPEdSIv3KywCwdk"}},"system":{"description":"<p>1 mesure (20cl) d'un liquide.</p>\n<p><em>(à modifier/compléter)</em></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"LZPEdSIv3KywCwdk","name":"Liquide","type":"munition","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_neutre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LZPEdSIv3KywCwdk"}},"system":{"description":"<p>1 mesure (20cl) d'un liquide.</p>\n<p><em>(à modifier/compléter)</em></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"LaAP5tsP1Sc43hKO","name":"Lanterne à huile","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lanterne_huile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LaAP5tsP1Sc43hKO"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.3,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"LaAP5tsP1Sc43hKO","name":"Lanterne à huile","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lanterne_huile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LaAP5tsP1Sc43hKO"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.3,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"LkE8EjPfao9m6Rn7","name":"Huile de Sélikanthe","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/huile_de_selikanthe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LkE8EjPfao9m6Rn7"}},"system":{"description":"<p>Fluide.</p>\n<p>Liquide légèrement huileux.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"LkE8EjPfao9m6Rn7","name":"Huile de Sélikanthe","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/huile_de_selikanthe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LkE8EjPfao9m6Rn7"}},"system":{"description":"<p>Fluide.</p>\n<p>Liquide légèrement huileux.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"Lz4dA2NwxdSZ3FZK","name":"Râpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074398967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
|
||||||
{"_id":"M1RgJDuQUvxjqJVV","name":"Chandelle de suif (1 heure)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chandelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.M1RgJDuQUvxjqJVV"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"M1RgJDuQUvxjqJVV","name":"Chandelle de suif (1 heure)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chandelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.M1RgJDuQUvxjqJVV"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"MGvyXFQJpv6nNynl","name":"Masse lourde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/masse_lourde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MGvyXFQJpv6nNynl"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":10,"categorie_parade":"","dommages":"3/4","penetration":0,"force":"12/11","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"masse"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"MGvyXFQJpv6nNynl","name":"Masse lourde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/masse_lourde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MGvyXFQJpv6nNynl"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":10,"categorie_parade":"","dommages":"3/4","penetration":0,"force":"12/11","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"masse"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"MQxgfYTEQEUhG116","name":"Épée bâtarde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_batarde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MQxgfYTEQEUhG116"}},"system":{"description":"<p>Comme son nom l’indique, c’est une <em>bâtarde </em>de l'épée longue et de l'épée sorde, à la fois longue et large, pouvant s’utiliser à une ou deux mains.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":14,"categorie_parade":"epees-lourdes","dommages":"4/5","penetration":0,"force":"13/12","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"epeebatarde"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"MQxgfYTEQEUhG116","name":"Épée bâtarde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_batarde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MQxgfYTEQEUhG116"}},"system":{"description":"<p>Comme son nom l’indique, c’est une <em>bâtarde </em>de l'épée longue et de l'épée sorde, à la fois longue et large, pouvant s’utiliser à une ou deux mains.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":14,"categorie_parade":"epees-lourdes","dommages":"4/5","penetration":0,"force":"13/12","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"epeebatarde"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
@@ -124,7 +122,6 @@
|
|||||||
{"_id":"b0f08L5CDeFIMluC","name":"Cuir Souple","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_souple.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.b0f08L5CDeFIMluC"}},"system":{"description":"<p>Même épaisseur que nos modernes blousons de cuir. Pourpoint ou cotte de cuir souple + culottes de cuir souple + bottes de cuir souple.</p>\n<p> </p>","descriptionmj":"","equipe":false,"encombrement":0,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"protection":2,"deterioration":0,"malus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"b0f08L5CDeFIMluC","name":"Cuir Souple","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_souple.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.b0f08L5CDeFIMluC"}},"system":{"description":"<p>Même épaisseur que nos modernes blousons de cuir. Pourpoint ou cotte de cuir souple + culottes de cuir souple + bottes de cuir souple.</p>\n<p> </p>","descriptionmj":"","equipe":false,"encombrement":0,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"protection":2,"deterioration":0,"malus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"bA0JDA7awoWhu0vO","name":"Teinture d'Erozonne","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/teinture_erozonne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bA0JDA7awoWhu0vO"}},"system":{"description":"<p>Fluide. </p>\n<p>Liquide rosâtre.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"bA0JDA7awoWhu0vO","name":"Teinture d'Erozonne","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/teinture_erozonne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bA0JDA7awoWhu0vO"}},"system":{"description":"<p>Fluide. </p>\n<p>Liquide rosâtre.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"beQ9d4QQwZDQl5NA","name":"Flûte à bec","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flute_bec.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.beQ9d4QQwZDQl5NA"}},"system":{"description":"","descriptionmj":"","encombrement":0.09,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"beQ9d4QQwZDQl5NA","name":"Flûte à bec","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flute_bec.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.beQ9d4QQwZDQl5NA"}},"system":{"description":"","descriptionmj":"","encombrement":0.09,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"bgkEBYUEFLvAaeVf","name":"Luth","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074398967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
|
||||||
{"_id":"cVZbnh5cYxBx6P5b","name":"Burin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074398967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
{"_id":"cVZbnh5cYxBx6P5b","name":"Burin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074398967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
||||||
{"name":"Viole","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"cbwLXpLTEtywFT6b"}
|
{"name":"Viole","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"cbwLXpLTEtywFT6b"}
|
||||||
{"_id":"ckKnviu9SHvWgya0","name":"Bougie de cire (2 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bougie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ckKnviu9SHvWgya0"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"ckKnviu9SHvWgya0","name":"Bougie de cire (2 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bougie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ckKnviu9SHvWgya0"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
@@ -164,7 +161,6 @@
|
|||||||
{"_id":"lOI2HVu3B6EDY4sE","name":"Arbalète","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/arbalete.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lOI2HVu3B6EDY4sE"}},"system":{"description":"<p>Nie jusqu'à 2 points d'armure.</p>\n<p>Rechargement 1 round.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":0,"categorie_parade":"","dommages":"3","penetration":2,"force":"0","competence":"","lancer":"","tir":"Arbalète","portee_courte":15,"portee_moyenne":30,"portee_extreme":70,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"lOI2HVu3B6EDY4sE","name":"Arbalète","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/arbalete.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lOI2HVu3B6EDY4sE"}},"system":{"description":"<p>Nie jusqu'à 2 points d'armure.</p>\n<p>Rechargement 1 round.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":0,"categorie_parade":"","dommages":"3","penetration":2,"force":"0","competence":"","lancer":"","tir":"Arbalète","portee_courte":15,"portee_moyenne":30,"portee_extreme":70,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"lq7pjDQESNbZOQ3n","name":"1 m2 de soie ou de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lq7pjDQESNbZOQ3n"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"lq7pjDQESNbZOQ3n","name":"1 m2 de soie ou de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lq7pjDQESNbZOQ3n"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"m9yuZjp9DK7pSqPK","name":"Lanterne à bougie","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lanterne_bougie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.m9yuZjp9DK7pSqPK"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"m9yuZjp9DK7pSqPK","name":"Lanterne à bougie","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lanterne_bougie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.m9yuZjp9DK7pSqPK"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Poinçon","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/poincon_2.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.F6ZHJth4t0PA5PMB"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"mJw1nFfIKiUdPdWb"}
|
|
||||||
{"_id":"n2HMv0xv0MFpuiKp","name":"Parchemin 1 feuille","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/parchemin_1_feuille.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.n2HMv0xv0MFpuiKp"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"n2HMv0xv0MFpuiKp","name":"Parchemin 1 feuille","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/parchemin_1_feuille.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.n2HMv0xv0MFpuiKp"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"nBhYyPbRwcWswiyC","name":"Tonnelet (10 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tonnelet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nBhYyPbRwcWswiyC"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.25,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"nBhYyPbRwcWswiyC","name":"Tonnelet (10 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tonnelet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nBhYyPbRwcWswiyC"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.25,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"nPczxZ7yylpmGSyO","name":"Crochet de serrurier","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/crochet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nPczxZ7yylpmGSyO"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"nPczxZ7yylpmGSyO","name":"Crochet de serrurier","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/crochet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nPczxZ7yylpmGSyO"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
@@ -173,14 +169,11 @@
|
|||||||
{"_id":"oXpPZ9LS1nsU0nGT","name":"Épée sorde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_sord.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.oXpPZ9LS1nsU0nGT"}},"system":{"description":"<p>C’est une épée plus courte que la dragonne, mais plus <em>large</em>. Elle peut s’utiliser à une ou deux mains. Sa grande solidité en fait l’épée de prédilection des gardes et des soldats.</p>\n<p>C’est probablement à elle que le <em>Guerrier Sorde</em> doit son nom (à moins que ce ne soit l’inverse).</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":20,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":15,"categorie_parade":"epees-lourdes","dommages":"3/4","penetration":null,"force":"12/11","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"epeesorde"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"oXpPZ9LS1nsU0nGT","name":"Épée sorde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_sord.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.oXpPZ9LS1nsU0nGT"}},"system":{"description":"<p>C’est une épée plus courte que la dragonne, mais plus <em>large</em>. Elle peut s’utiliser à une ou deux mains. Sa grande solidité en fait l’épée de prédilection des gardes et des soldats.</p>\n<p>C’est probablement à elle que le <em>Guerrier Sorde</em> doit son nom (à moins que ce ne soit l’inverse).</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":20,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":15,"categorie_parade":"epees-lourdes","dommages":"3/4","penetration":null,"force":"12/11","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"epeesorde"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"of2LbmmB4EtlSwte","name":"Sac en jute (50 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sac_jute_50.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.of2LbmmB4EtlSwte"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.08,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":25,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"of2LbmmB4EtlSwte","name":"Sac en jute (50 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sac_jute_50.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.of2LbmmB4EtlSwte"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.08,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":25,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"orpj8CumQ39xMOHy","name":"Brosse à cheveux","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/Brosse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.orpj8CumQ39xMOHy"}},"system":{"description":"","descriptionmj":"","encombrement":0.06,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"orpj8CumQ39xMOHy","name":"Brosse à cheveux","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/Brosse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.orpj8CumQ39xMOHy"}},"system":{"description":"","descriptionmj":"","encombrement":0.06,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Burin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"pUqdjYH8PMTB65ps"}
|
|
||||||
{"name":"Gouge","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"pY17ihKKHgfThcyK","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
{"name":"Gouge","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"pY17ihKKHgfThcyK","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
||||||
{"_id":"phfgVizT4ekUwqFq","name":"Selle et harnais","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/selle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.phfgVizT4ekUwqFq"}},"system":{"description":"","descriptionmj":"","encombrement":4,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":25,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"phfgVizT4ekUwqFq","name":"Selle et harnais","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/selle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.phfgVizT4ekUwqFq"}},"system":{"description":"","descriptionmj":"","encombrement":4,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":25,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Ciseau à bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"pnXLgGbsHHAMLfg7"}
|
|
||||||
{"_id":"q5zaNnlmNZZChi31","name":"Miel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gelee_royale.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.0UhqiYISVSiztBfv"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"sust":2,"exotisme":0,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"q5zaNnlmNZZChi31","name":"Miel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gelee_royale.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.0UhqiYISVSiztBfv"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"sust":2,"exotisme":0,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"qCLTOjlIOvlj0uo7","name":"Chaperon de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chaperon_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qCLTOjlIOvlj0uo7"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"qCLTOjlIOvlj0uo7","name":"Chaperon de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chaperon_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qCLTOjlIOvlj0uo7"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"qWhl9EfdnJx4KFTZ","name":"Bas de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qWhl9EfdnJx4KFTZ"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"qWhl9EfdnJx4KFTZ","name":"Bas de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qWhl9EfdnJx4KFTZ"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Gouge","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"qvC91707xhdk7BxX"}
|
|
||||||
{"_id":"sSgPT3aKDOZ25svO","name":"Porte plume en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/porte_plume2.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sSgPT3aKDOZ25svO"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"sSgPT3aKDOZ25svO","name":"Porte plume en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/porte_plume2.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sSgPT3aKDOZ25svO"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"sXoStuW19r9zVi1S","name":"Flacon de verre (40 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flacon_verre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sXoStuW19r9zVi1S"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.2,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"sXoStuW19r9zVi1S","name":"Flacon de verre (40 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flacon_verre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sXoStuW19r9zVi1S"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.2,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"sbgHtwEj4sK9cMh7","name":"Livre","type":"livre","flags":{"core":{"sourceId":"Item.1bn0Q8cO1qRWQvlf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/objets/livre.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"competence":"Ecriture","auteur":"Inconnu","difficulte":0,"points_de_tache":0,"xp":0,"niveau_minimum":0,"niveau_maximum":0},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"sbgHtwEj4sK9cMh7","name":"Livre","type":"livre","flags":{"core":{"sourceId":"Item.1bn0Q8cO1qRWQvlf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/objets/livre.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"competence":"Ecriture","auteur":"Inconnu","difficulte":0,"points_de_tache":0,"xp":0,"niveau_minimum":0,"niveau_maximum":0},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
@@ -197,7 +190,6 @@
|
|||||||
{"_id":"ueBk3MbdEaMbzyPS","name":"Ficelle (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ficelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueBk3MbdEaMbzyPS"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"ueBk3MbdEaMbzyPS","name":"Ficelle (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ficelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueBk3MbdEaMbzyPS"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"ueJnUMLK1vpL8xOB","name":"Stylet de bronze","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/stylet_de_bronze.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueJnUMLK1vpL8xOB"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"ueJnUMLK1vpL8xOB","name":"Stylet de bronze","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/stylet_de_bronze.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueJnUMLK1vpL8xOB"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"uwwunMSrJoUYTDkG","name":"Seau de bois ferré (10 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/seau_ferre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.uwwunMSrJoUYTDkG"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"uwwunMSrJoUYTDkG","name":"Seau de bois ferré (10 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/seau_ferre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.uwwunMSrJoUYTDkG"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Lime","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"vFYEGmCMfR98skRU"}
|
|
||||||
{"_id":"vQ494sD9FgFI08kZ","name":"Drap Matelassé","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/drap_matelasse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.vQ494sD9FgFI08kZ"}},"system":{"description":"<p>Deux épaisseurs de drap surpiquées, avec rembourrage de laine.</p>\n<p>Pourpoint ou cotte de drap matelassé + culottes de drap matelassé + bottes de cuir souple. Le pourpoint est une sorte de veste ; la cotte est une sorte de tunique, lacée sur la poitrine, et descendant jusqu’aux genoux, façon Robin des Bois.</p>\n<p> </p>","descriptionmj":"","equipe":false,"encombrement":0,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"protection":"1","deterioration":0,"malus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"vQ494sD9FgFI08kZ","name":"Drap Matelassé","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/drap_matelasse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.vQ494sD9FgFI08kZ"}},"system":{"description":"<p>Deux épaisseurs de drap surpiquées, avec rembourrage de laine.</p>\n<p>Pourpoint ou cotte de drap matelassé + culottes de drap matelassé + bottes de cuir souple. Le pourpoint est une sorte de veste ; la cotte est une sorte de tunique, lacée sur la poitrine, et descendant jusqu’aux genoux, façon Robin des Bois.</p>\n<p> </p>","descriptionmj":"","equipe":false,"encombrement":0,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"protection":"1","deterioration":0,"malus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Épée demi-dragonne","type":"arme","flags":{"core":{"sourceId":"Item.ErwaSLcGryAbYjkm"}},"img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/demi_dragonne.webp","effects":[],"_id":"vnlRGjt7X6yQRObA","system":{"description":null,"descriptionmj":"","equipe":false,"encombrement":1.5,"quantite":1,"qualite":0,"cout":15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":10,"categorie_parade":"epees-longues","dommages":"2","penetration":0,"force":"10","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeedragonne"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Épée demi-dragonne","type":"arme","flags":{"core":{"sourceId":"Item.ErwaSLcGryAbYjkm"}},"img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/demi_dragonne.webp","effects":[],"_id":"vnlRGjt7X6yQRObA","system":{"description":null,"descriptionmj":"","equipe":false,"encombrement":1.5,"quantite":1,"qualite":0,"cout":15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":10,"categorie_parade":"epees-longues","dommages":"2","penetration":0,"force":"10","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeedragonne"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"wPE64RRcuLlvuPrY","name":"Épée cyane","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_cyane.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wPE64RRcuLlvuPrY"}},"system":{"description":"<p>Long <em>cimeterre </em>à l’acier bleuté, exclusivement fabriqué par les Cyans ou Hommes bleus.</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":25,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":12,"categorie_parade":"epees-lourdes","dommages":"3","penetration":0,"force":"11","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeecyane"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"wPE64RRcuLlvuPrY","name":"Épée cyane","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_cyane.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wPE64RRcuLlvuPrY"}},"system":{"description":"<p>Long <em>cimeterre </em>à l’acier bleuté, exclusivement fabriqué par les Cyans ou Hommes bleus.</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":25,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":12,"categorie_parade":"epees-lourdes","dommages":"3","penetration":0,"force":"11","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeecyane"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
@@ -205,7 +197,6 @@
|
|||||||
{"_id":"wpWaqe96x3cvqTXy","name":"Robe de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wpWaqe96x3cvqTXy"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"wpWaqe96x3cvqTXy","name":"Robe de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wpWaqe96x3cvqTXy"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Herbe à pipe","type":"herbe","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp","system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0.01,"cout":0.01,"milieu":"","environnement":[],"sust":0,"exotisme":0,"niveau":0,"base":0,"categorie":"Autre"},"effects":[],"flags":{"core":{"sourceId":"Item.wxmHkhTTzPNepN4d"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1676073283027,"modifiedTime":1676074352883,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"wxmHkhTTzPNepN4d","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
{"name":"Herbe à pipe","type":"herbe","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp","system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0.01,"cout":0.01,"milieu":"","environnement":[],"sust":0,"exotisme":0,"niveau":0,"base":0,"categorie":"Autre"},"effects":[],"flags":{"core":{"sourceId":"Item.wxmHkhTTzPNepN4d"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1676073283027,"modifiedTime":1676074352883,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"wxmHkhTTzPNepN4d","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
||||||
{"_id":"x4g6bDu3eUllSSSJ","name":"Eponge de mer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/eponge.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.x4g6bDu3eUllSSSJ"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Maritimes","rarete":"Rare","frequence":6},{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"x4g6bDu3eUllSSSJ","name":"Eponge de mer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/eponge.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.x4g6bDu3eUllSSSJ"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Maritimes","rarete":"Rare","frequence":6},{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Viole","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"xO1pGXzDRTalmJl7","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
|
||||||
{"_id":"xfdeDEyMK8YtBpzC","name":"Huile 20 cl (4 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/huile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xfdeDEyMK8YtBpzC"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.04,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"xfdeDEyMK8YtBpzC","name":"Huile 20 cl (4 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/huile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xfdeDEyMK8YtBpzC"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.04,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"xuk60njqtrSZusSX","name":"Chemise de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xuk60njqtrSZusSX"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"xuk60njqtrSZusSX","name":"Chemise de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xuk60njqtrSZusSX"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"_id":"yILNvELKbsz2OOln","name":"Ecritoire","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecritoire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.yILNvELKbsz2OOln"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"_id":"yILNvELKbsz2OOln","name":"Ecritoire","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecritoire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.yILNvELKbsz2OOln"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
|
|||||||
@@ -8,5 +8,6 @@
|
|||||||
{"name":"Encaissement","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/svg/bones.svg","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.encaisser();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671234017623,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"WD6T8AdRbX2Ylxqe"}
|
{"name":"Encaissement","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/svg/bones.svg","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.encaisser();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671234017623,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"WD6T8AdRbX2Ylxqe"}
|
||||||
{"name":"Jet quelconque","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/sundries/gaming/dice-runed-tan.webp","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.roll();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671233500655,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"bnJnbKDHpbqY8Pr9"}
|
{"name":"Jet quelconque","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/sundries/gaming/dice-runed-tan.webp","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.roll();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671233500655,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"bnJnbKDHpbqY8Pr9"}
|
||||||
{"name":"Recherche et tirage","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/tools/scribal/magnifying-glass.webp","command":"game.system.rdd.commands.tirage()","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.ZFWPNdQBjQs9z0YW"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.5.4","coreVersion":"10.291","createdTime":1673472449426,"modifiedTime":1673655461651,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"iVZnxOxhCMpkvYh3"}
|
{"name":"Recherche et tirage","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/tools/scribal/magnifying-glass.webp","command":"game.system.rdd.commands.tirage()","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.ZFWPNdQBjQs9z0YW"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.5.4","coreVersion":"10.291","createdTime":1673472449426,"modifiedTime":1673655461651,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"iVZnxOxhCMpkvYh3"}
|
||||||
|
{"name":"Thème astral","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/magic/nature/symbol-moon-stars-white.webp","command":"game.system.rdd.AppAstrologie.create()","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.oA0HPFeFK6YMspAX"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.19","coreVersion":"10.291","createdTime":1678127868791,"modifiedTime":1678237392810,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"koqhiDJSGP4gQ4vf"}
|
||||||
{"name":"Jet d'éthylisme","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/consumables/drinks/alcohol-beer-stein-wooden-metal-brown.webp","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.jetEthylisme();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671233646086,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"mvub1dRHNFmWjRr7"}
|
{"name":"Jet d'éthylisme","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/consumables/drinks/alcohol-beer-stein-wooden-metal-brown.webp","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.jetEthylisme();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671233646086,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"mvub1dRHNFmWjRr7"}
|
||||||
{"name":"Tirer le tarot","type":"chat","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","command":"/tirer tarot","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.HBZSKR9OHCQbLcTC"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1669469547231,"modifiedTime":1671237401618,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"vTfJTFYYiRu8X5LM"}
|
{"name":"Tirer le tarot","type":"chat","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","command":"/tirer tarot","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.HBZSKR9OHCQbLcTC"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1669469547231,"modifiedTime":1671237401618,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"vTfJTFYYiRu8X5LM"}
|
||||||
|
|||||||
@@ -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 l’escalade : 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":"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 l’escalade : 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":"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 d’une 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 n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un 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":"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 d’une 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 n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un 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":"","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017067,"modifiedTime":1679614524362,"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":"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 s’agit 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":"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 s’agit 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 <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y 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":"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 <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y 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":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1679614460613,"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":"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 d’un.</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":"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 d’un.</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 d’expé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":"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 d’expé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":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1679614525067,"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é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":"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éciale de rencontres}</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":true,"categorie":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017068,"modifiedTime":1679614525873,"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 d’aucune 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":"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 d’aucune dépense.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1679614470999,"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 d’une compétence, à l’exclusion 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":"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 d’une compétence, à l’exclusion 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é d’utiliser aucune magie, ni sur l’ennemi, 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":"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é d’utiliser aucune magie, ni sur l’ennemi, ni sur soi-même.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":3,"hautrevant":false,"categorie":"","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1679614463556,"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 s’obtient 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":"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 s’obtient 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 d’endurance). Ces points pourront commencer à être regagnés au bout d’un 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":"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 d’endurance). Ces points pourront commencer à être regagnés au bout d’un jour complet.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":5,"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.7.3","coreVersion":"10.291","createdTime":1669478017069,"modifiedTime":1679614525870,"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":"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":"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":"","refoulement":4,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1679614525871,"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":"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":"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é d’utiliser aucune magie, ni sur l’ennemi, 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":"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é d’utiliser aucune magie, ni sur l’ennemi, 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 s’agir d’un 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":"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 s’agir d’un 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 d’un, 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":"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 d’un, 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":"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":"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":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1679614525586,"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 l’y téléporter, mais un Messager ne peut s’y 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"}}
|
{"_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 l’y téléporter, mais un Messager ne peut s’y 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":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478017070,"modifiedTime":1679614525874,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{"_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ée de la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table spé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":"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ée de la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table spé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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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 d’expé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":"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 d’expé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":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025459,"modifiedTime":1679614413217,"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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"}}
|
||||||
@@ -9,12 +9,12 @@
|
|||||||
{"_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 n’est pas obtenue, traiter comme un désir lancinant. </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":"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 n’est pas obtenue, traiter comme un désir lancinant. </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 l’argent (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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"3BcC8lSsP5WIyva7","name":"Gagner de l’argent (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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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 d’un, 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":"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 d’un, 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":0,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025460,"modifiedTime":1679614361208,"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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 d’un.</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":"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 d’un.</p>","descriptionmj":"","temporel":{"debut":{"indexDate":0,"indexMinute":0},"fin":{"indexDate":0,"indexMinute":0}},"frequence":16,"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.7.3","coreVersion":"10.291","createdTime":1669478025461,"modifiedTime":1679614313037,"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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"}}
|
||||||
@@ -28,11 +28,11 @@
|
|||||||
{"_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 d’une 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 n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un 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":"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 d’une 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 n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un 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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1679614376913,"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 l’y téléporter, mais un Messager ne peut s’y 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":"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 l’y téléporter, mais un Messager ne peut s’y 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":0,"duree":"","restant":0},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025463,"modifiedTime":1679614238011,"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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":0,"duree":"1d7jours","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025464,"modifiedTime":1679614425790,"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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 s’exprimer que par des cris d’animaux (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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"YCHBbRLiMzTH7IBj","name":"Ne s’exprimer que par des cris d’animaux (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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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"}}
|
||||||
@@ -43,13 +43,13 @@
|
|||||||
{"_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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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è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":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":"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è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":16,"hautrevant":true,"categorie":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1679614348966,"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 d’une compétence, à l’exclusion 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":"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 d’une compétence, à l’exclusion 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":0,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025465,"modifiedTime":1679614403347,"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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":"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édiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présenté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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":0,"duree":"jour","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1679614392997,"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 à 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 <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y 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":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":"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 à 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 <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y 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":16,"hautrevant":true,"categorie":"","refoulement":0,"duree":"","restant":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.7.3","coreVersion":"10.291","createdTime":1669478025466,"modifiedTime":1679614282249,"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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":"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érience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affecté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 d’aucune 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":"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 d’aucune 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"}}
|
||||||
|
|||||||
22
styles/img/ui/astro-disque.svg
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="402.74" height="402.74" version="1.1" viewBox="0 0 106.56 106.56" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
|
<metadata>
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||||
|
<dc:title/>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g transform="translate(-52.554 -94.887)" fill="none">
|
||||||
|
<path d="m54.72 134.47 64.823 64.757" opacity=".8" stroke="#4a0" stroke-width=".53382"/>
|
||||||
|
<path d="m143.17 111.06-88.517 23.669" opacity=".8" stroke="#4a0" stroke-width=".53382"/>
|
||||||
|
<g stroke="#c83737" stroke-width=".52917">
|
||||||
|
<path d="m54.72 134.47 102.23 27.392" opacity=".8"/>
|
||||||
|
<path d="m119.53 97.053-64.809 37.418" opacity=".8"/>
|
||||||
|
<path d="m92.137 199.28-37.418-64.809" opacity=".8"/>
|
||||||
|
</g>
|
||||||
|
<circle transform="rotate(15)" cx="140.58" cy="115.73" r="52.917" opacity=".5" stroke="#aa00d4" stroke-linecap="round" stroke-width=".7"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
20
styles/img/ui/rdd-aiguille-horloge.svg
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
17
styles/img/ui/rdd-aiguille-minute.svg
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="675" height="675" version="1.1" viewBox="0 0 178.59 178.59" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
|
<metadata>
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||||
|
<dc:title/>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<circle cx="89.297" cy="89.297" r="4.6257" style="fill:#214478"/>
|
||||||
|
<g transform="matrix(.98563 -.98178 .98563 .98178 -87.392 88.66)">
|
||||||
|
<rect x="88.635" y="7.9375" width="1.3229" height="82.021" style="fill:#214478"/>
|
||||||
|
<path d="m88.635 72.76s-2.6458-1e-6 -2.6458-2.6458c-1e-6 -5.2917 1.2526-5.291 1.2149-13.168-0.01237-2.5872 1.4309-4.0295 1.4309-15.936 2e-6 -9.7014 0-29.104 0-29.104s-0.96823-1.3508-1.3297-2.5446c-0.65159-2.152 0.35906-1.9377 1.0888-4.0645 0.32001-0.93267 0.86732-5.2972 0.86732-5.2972s0.59836 4.3708 0.91836 5.3035c0.72973 2.1268 1.6581 1.9061 1.0065 4.0582-0.36144 1.1937-1.2284 2.5446-1.2284 2.5446v29.104c0 11.906 1.3229 13.229 1.2284 15.936-0.27485 7.8725 1.4174 7.8768 1.4174 13.168 1e-6 2.6458-2.6458 2.6458-2.6458 2.6458z" style="fill:#214478"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -77,6 +77,16 @@
|
|||||||
--gradient-violet: linear-gradient(150deg, rgba(100, 45, 124, 0.6), rgba(216, 157, 192, 0.3), rgba(177, 157, 216, 0.5), rgba(107, 62, 121, 0.3), rgba(100, 45, 124, 0.6));
|
--gradient-violet: linear-gradient(150deg, rgba(100, 45, 124, 0.6), rgba(216, 157, 192, 0.3), rgba(177, 157, 216, 0.5), rgba(107, 62, 121, 0.3), rgba(100, 45, 124, 0.6));
|
||||||
--gradient-purple-black: linear-gradient(150deg, rgba(0, 0, 0, 0.7), rgba(100, 45, 124, 0.4), rgba(82, 17, 131, 0.3),rgba(100, 45, 124, 0.4), rgba(0, 0, 0, 0.7));
|
--gradient-purple-black: linear-gradient(150deg, rgba(0, 0, 0, 0.7), rgba(100, 45, 124, 0.4), rgba(82, 17, 131, 0.3),rgba(100, 45, 124, 0.4), rgba(0, 0, 0, 0.7));
|
||||||
--gradient-silver-light: linear-gradient(30deg, rgba(61, 55, 93, 0.2), rgba(178, 179, 196, 0.1), rgba(59, 62, 63, 0.2), rgba(206, 204, 199, 0.1), rgba(61, 46, 49, 0.2));
|
--gradient-silver-light: linear-gradient(30deg, rgba(61, 55, 93, 0.2), rgba(178, 179, 196, 0.1), rgba(59, 62, 63, 0.2), rgba(206, 204, 199, 0.1), rgba(61, 46, 49, 0.2));
|
||||||
|
--gradient-daylight: conic-gradient(
|
||||||
|
from 0deg,
|
||||||
|
hsla(50, 100%, 80%, 0.7),
|
||||||
|
hsla(30, 30%, 40%, 0.1) 25%,
|
||||||
|
hsla(250, 50%, 40%, 0.1) 25%,
|
||||||
|
hsla(250, 30%, 30%, 0.7) 50%,
|
||||||
|
hsla(250, 50%, 40%, 0.1) 75%,
|
||||||
|
hsla(30, 30%, 40%, 0.1) 75%,
|
||||||
|
hsla(50, 100%, 80%, 0.7)
|
||||||
|
);
|
||||||
|
|
||||||
--background-custom-button: linear-gradient(to bottom, rgba(33, 55, 74, 0.988) 5%, rgba(21, 40, 51, 0.671) 100%);
|
--background-custom-button: linear-gradient(to bottom, rgba(33, 55, 74, 0.988) 5%, rgba(21, 40, 51, 0.671) 100%);
|
||||||
--background-custom-button-hover: linear-gradient(to bottom, rgb(128, 0, 0) 5%, rgb(62, 1, 1) 100%);
|
--background-custom-button-hover: linear-gradient(to bottom, rgb(128, 0, 0) 5%, rgb(62, 1, 1) 100%);
|
||||||
@@ -176,7 +186,7 @@ i:is(.fas, .far) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.system-foundryvtt-reve-de-dragon .sheet-header :is(.header-compteurs,.header-etats,.profile-img, .profile-img-token){
|
.system-foundryvtt-reve-de-dragon .sheet-header :is(.header-compteurs,.header-etats,.profile-img, .profile-img-token){
|
||||||
padding: 0 3%;
|
padding: 0 0.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.system-foundryvtt-reve-de-dragon .sheet-header :is(.profile-img, .profile-img-token) {
|
.system-foundryvtt-reve-de-dragon .sheet-header :is(.profile-img, .profile-img-token) {
|
||||||
@@ -203,11 +213,13 @@ i:is(.fas, .far) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.system-foundryvtt-reve-de-dragon .sheet-header .header-compteurs {
|
.system-foundryvtt-reve-de-dragon .sheet-header .header-compteurs {
|
||||||
|
width: calc(60% - 110px - 1rem);
|
||||||
text-align: right;
|
text-align: right;
|
||||||
max-width: fit-content;
|
max-width: fit-content;
|
||||||
}
|
}
|
||||||
|
|
||||||
.system-foundryvtt-reve-de-dragon .sheet-header div.header-etats {
|
.system-foundryvtt-reve-de-dragon .sheet-header div.header-etats {
|
||||||
|
width: calc(40% - 32px - 1rem);
|
||||||
height: 48px;
|
height: 48px;
|
||||||
max-width: fit-content;
|
max-width: fit-content;
|
||||||
flex: initial;
|
flex: initial;
|
||||||
@@ -416,6 +428,7 @@ span.equipement-detail-buttons {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blessure-control {
|
.blessure-control {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
@@ -447,14 +460,17 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
|
|||||||
.blessure-inactive {
|
.blessure-inactive {
|
||||||
color:rgba(150, 150, 150, 0.4);
|
color:rgba(150, 150, 150, 0.4);
|
||||||
}
|
}
|
||||||
|
.blessure-active-2,
|
||||||
.blessure-active-legere {
|
.blessure-active-legere {
|
||||||
color:rgba(60, 60, 60, 0.9);
|
color:rgba(60, 60, 60, 0.9);
|
||||||
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
||||||
}
|
}
|
||||||
|
.blessure-active-4,
|
||||||
.blessure-active-grave {
|
.blessure-active-grave {
|
||||||
color: rgba(218, 126, 21, 0.9);
|
color: rgba(218, 126, 21, 0.9);
|
||||||
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
||||||
}
|
}
|
||||||
|
.blessure-active-6,
|
||||||
.blessure-active-critique {
|
.blessure-active-critique {
|
||||||
color: rgba(173, 36, 26, 0.9);
|
color: rgba(173, 36, 26, 0.9);
|
||||||
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
||||||
@@ -860,12 +876,36 @@ form.rdddialogchrono input[type=datetime-local] {
|
|||||||
color: var(--color-text-dark-primary);
|
color: var(--color-text-dark-primary);
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
.app-calendar-astrologie div.theme-astral{
|
||||||
|
width: 14rem;
|
||||||
|
margin: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-calendar-astrologie div.horloge-roue {
|
||||||
|
position: relative;
|
||||||
|
left: calc(50% - 6.5rem);
|
||||||
|
width: 13rem;
|
||||||
|
height: 13rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-calendar-astrologie div.horloge-roue div.horloge-heure {
|
||||||
|
position: absolute;
|
||||||
|
width: 1.8rem;
|
||||||
|
height: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-calendar-astrologie div.horloge-roue div.horloge-heure img.horloge-heure-img {
|
||||||
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
|
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
|
||||||
background: rgb(245,245,240) url(img/bg_left.webp) no-repeat left top;
|
background: rgb(245,245,240) url(img/bg_left.webp) no-repeat left top;
|
||||||
}
|
}
|
||||||
|
|
||||||
section.sheet-body{padding: 0.25rem 0.5rem;}
|
section.sheet-body {
|
||||||
|
padding: 0.25rem 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.sheet header.sheet-header :is(.profile-img, .profile-img-token) {
|
.sheet header.sheet-header :is(.profile-img, .profile-img-token) {
|
||||||
object-fit: scale-down;
|
object-fit: scale-down;
|
||||||
@@ -1261,27 +1301,36 @@ table.table-nombres-astraux tr:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ======================================== */
|
/* ======================================== */
|
||||||
.tokenhudext {
|
.token-hud-ext {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 0 !important;
|
flex: 0 !important;
|
||||||
font-family: CaslonPro;
|
font-family: CaslonPro;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
.tokenhudext.left {
|
.token-hud-ext.left {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
right: 4rem;
|
right: 4rem;
|
||||||
}
|
}
|
||||||
.tokenhudext.right {
|
.token-hud-ext.soins {
|
||||||
|
justify-content: flex-start;
|
||||||
|
flex-direction: column;
|
||||||
|
position: absolute;
|
||||||
|
top: 13.2rem;
|
||||||
|
left: -5rem;
|
||||||
|
max-width: 8.5rem
|
||||||
|
}
|
||||||
|
|
||||||
|
.token-hud-ext.right {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
left: 4rem;
|
left: 4rem;
|
||||||
}
|
}
|
||||||
.control-icon.tokenhudicon {
|
.control-icon.token-hud-icon {
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
@@ -1290,7 +1339,7 @@ table.table-nombres-astraux tr:hover {
|
|||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
margin: 0.2rem;
|
margin: 0.2rem;
|
||||||
}
|
}
|
||||||
.control-icon.tokenhudicon.right {
|
.control-icon.token-hud-icon.right {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
.rdd-hud-menu label {
|
.rdd-hud-menu label {
|
||||||
@@ -1558,178 +1607,211 @@ table.table-nombres-astraux tr:hover {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
/* CALENDAR STUFF */
|
|
||||||
#calendar-time-container{
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar {
|
.window-app.calendar {
|
||||||
min-width: 250px;
|
background: none;
|
||||||
width: fit-content;
|
|
||||||
|
|
||||||
display: grid;
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 9;
|
|
||||||
|
|
||||||
min-height: 5rem;
|
|
||||||
height: fit-content;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: 1px solid #000;
|
box-shadow: none;
|
||||||
border-radius: 0.3rem;
|
pointer-events: none;
|
||||||
background: hsla(0, 0%, 0%, 0.5);
|
|
||||||
font-family: "GoudyAcc";
|
|
||||||
z-index: 100;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-title {
|
.window-app.calendar header.window-header {
|
||||||
grid-column: 1 / span 7;
|
pointer-events: all;
|
||||||
grid-row: 1;
|
|
||||||
|
|
||||||
color: #CCC;
|
|
||||||
opacity: 90;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.calendar-options {
|
|
||||||
grid-column: 8 / span 2;
|
|
||||||
}
|
|
||||||
.calendar-title,.calendar-options{
|
|
||||||
border-bottom: 1px solid hsla(0, 0%, 80%, 0.5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-avance-heure {
|
.window-app.calendar .window-content {
|
||||||
grid-column: 1 / span 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-change-heure {
|
|
||||||
grid-column: 9 / span 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-change-heure .calendar-change-heure-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-column: 1;
|
|
||||||
grid-row: 2;
|
|
||||||
|
|
||||||
margin: 2px;
|
|
||||||
grid-row-gap: 3px;
|
|
||||||
color: hsla(0, 0%, 80%, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-avance-heure .calendar-avance-heure-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-column: 3;
|
|
||||||
grid-row: 2;
|
|
||||||
|
|
||||||
margin: 2px;
|
|
||||||
grid-row-gap: 3px;
|
|
||||||
color: hsla(0, 0%, 80%, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-avance-heure .calendar-avance-heure-grid:hover {
|
|
||||||
color: #FFF;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-affiche-heure {
|
|
||||||
grid-column: 4 / span 4;
|
|
||||||
grid-row: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-affiche-heure .calendar-horloge {
|
|
||||||
display: grid;
|
|
||||||
max-width: 100px;
|
|
||||||
float: left;
|
|
||||||
padding-top: 0px;
|
|
||||||
padding-bottom: 0px;
|
|
||||||
margin: 0 0.3rem 0 0.3rem;
|
|
||||||
color: #CCC;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-affiche-heure .calendar-horloge .calendar-heure-texte {
|
|
||||||
font-size: 1.1rem;
|
|
||||||
}
|
|
||||||
.calendar-affiche-heure .calendar-horloge .calendar-minute-texte {
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
z-index: 100;
|
||||||
|
flex-direction: column;
|
||||||
|
min-width: 250px;
|
||||||
|
height: fit-content;
|
||||||
|
background: hsla(0, 0%, 0%, 0.0);
|
||||||
|
font-family: "GoudyAcc";
|
||||||
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-affiche-heure .calendar-horloge .calendar-heure-img{
|
.window-app.calendar .window-content > div {
|
||||||
width: 2rem;
|
pointer-events: all;
|
||||||
height: 2rem;
|
}
|
||||||
float: left;
|
|
||||||
flex-grow: 0;
|
.window-app.calendar div.horloge-roue {
|
||||||
padding: 0.1rem;
|
position: relative;
|
||||||
border: 0;
|
margin-bottom: 7px;
|
||||||
opacity: 0.9;
|
left: 0;
|
||||||
color: hsla(0, 0%, 100%, 0.5);
|
width: 8rem;
|
||||||
}
|
height: 8rem;
|
||||||
|
}
|
||||||
.calendar :is(.calendar-astrologie,.calendar-set-datetime) {
|
|
||||||
grid-row: 1;
|
.window-app.calendar div.horloge-roue div.horloge-heure {
|
||||||
grid-column: 1;
|
width: 1.4rem;
|
||||||
}
|
height: 1.4rem;
|
||||||
.calendar :is(.calendar-astrologie,.calendar-set-datetime,.calendar-btn) {
|
}
|
||||||
color: hsla(0, 0%, 100%, 0.5);
|
.window-app.calendar div.horloge-roue div.horloge-heure img.horloge-heure-img {
|
||||||
border: 1px solid rgba(0, 0, 0, 0);
|
width: 1.4rem;
|
||||||
}
|
height: 1.4rem;
|
||||||
.calendar :is(.calendar-astrologie,.calendar-set-datetime,.calendar-btn):hover {
|
}
|
||||||
color: var(--color-controls-hover);
|
|
||||||
border: 1px solid var(--color-control-border-hover);
|
div.horloge-roue div {
|
||||||
cursor: pointer;
|
position: absolute;
|
||||||
}
|
border: none;
|
||||||
.calendar .calendar-affiche-heure .calendar-horloge a {
|
pointer-events: all;
|
||||||
border: 1px solid rgba(0, 0, 0, 0);
|
}
|
||||||
}
|
|
||||||
.calendar .calendar-affiche-heure .calendar-horloge a:hover {
|
div.horloge-roue div.horloge-cercle {
|
||||||
color: var(--color-controls-hover);
|
background: hsl(60, 20%, 95%) url(img/bg_left.webp) no-repeat left top;
|
||||||
border: 1px solid var(--color-control-border-hover);
|
top: 2%; left: 2%; width: 96%; height: 96%; border-radius: 50%;
|
||||||
cursor: pointer;
|
}
|
||||||
}
|
|
||||||
|
div.horloge-roue div.horloge-cercle1 {
|
||||||
.calendar-avance-heure .calendar-1min {
|
background: var(--gradient-daylight);
|
||||||
grid-row: 1;
|
border: 0.2rem solid rgba(100, 45, 124, 0.6);
|
||||||
grid-column: 1;
|
top: 2%; left: 2%; width: 96%; height: 96%; border-radius: 50%;
|
||||||
}
|
}
|
||||||
.calendar-avance-heure .calendar-5min {
|
|
||||||
grid-row: 1;
|
div.horloge-roue div.horloge-cercle2 {
|
||||||
grid-column: 2;
|
border: 0.1rem solid rgba(100, 45, 124, 0.4);
|
||||||
}
|
top: 17%; left: 17%; width: 66%; height: 66%; border-radius: 50%;
|
||||||
.calendar-avance-heure .calendar-15min {
|
}
|
||||||
grid-row: 1;
|
div.horloge-roue div.disque-astro {
|
||||||
grid-column: 3;
|
top: 28%; left: 28%; width: 44%; height: 44%;
|
||||||
}
|
}
|
||||||
.calendar-avance-heure .calendar-30min {
|
div.horloge-roue div.horloge-aiguille-heure {
|
||||||
grid-row: 2;
|
top: 25%; left: 25%; width: 50%; height: 50%;
|
||||||
grid-column: 1;
|
}
|
||||||
}
|
div.horloge-roue div.horloge-aiguille-minute {
|
||||||
.calendar-avance-heure .calendar-60min {
|
top: 20%; left: 20%; width: 60%; height: 60%;
|
||||||
grid-row: 2;
|
}
|
||||||
grid-column: 2;
|
div.horloge-roue div.horloge-ajustement {
|
||||||
}
|
width: 0.8rem;
|
||||||
.calendar-avance-heure .calendar-1heure {
|
height: 0.8rem;
|
||||||
grid-row: 2;
|
color: hsl(120, 50%, 15%);
|
||||||
grid-column: 3;
|
background-color: hsla(300, 100%, 95%, 0.4);
|
||||||
}
|
font-size: 0.8rem;
|
||||||
|
text-align: center;
|
||||||
.calendar-lyre{
|
vertical-align: middle;
|
||||||
grid-row: 1;
|
border-radius: 0.3rem;
|
||||||
grid-column: 1;
|
}
|
||||||
}
|
|
||||||
|
div.horloge-roue div img {
|
||||||
.calendar-vaisseau {
|
border: none;
|
||||||
grid-row: 2;
|
}
|
||||||
grid-column: 1;
|
|
||||||
}
|
|
||||||
|
.window-app.calendar div.horloge-heure.heure-01 { top: calc(50% - 0.7rem + sin(-180deg) *38%); left: calc(50% - 0.7rem + cos(-180deg) *38%); }
|
||||||
.calendar-change-heure .calendar-btn:is(.calendar-lyre,.calendar-vaisseau) img {
|
.window-app.calendar div.horloge-heure.heure-02 { top: calc(50% - 0.7rem + sin(-150deg) *38%); left: calc(50% - 0.7rem + cos(-150deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-03 { top: calc(50% - 0.7rem + sin(-120deg) *38%); left: calc(50% - 0.7rem + cos(-120deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-04 { top: calc(50% - 0.7rem + sin(-90deg) *38%); left: calc(50% - 0.7rem + cos(-90deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-05 { top: calc(50% - 0.7rem + sin(-60deg) *38%); left: calc(50% - 0.7rem + cos(-60deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-06 { top: calc(50% - 0.7rem + sin(-30deg) *38%); left: calc(50% - 0.7rem + cos(-30deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-07 { top: calc(50% - 0.7rem + sin(-0deg) *38%); left: calc(50% - 0.7rem + cos(-0deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-08 { top: calc(50% - 0.7rem + sin(30deg) *38%); left: calc(50% - 0.7rem + cos(30deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-09 { top: calc(50% - 0.7rem + sin(60deg) *38%); left: calc(50% - 0.7rem + cos(60deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-10 { top: calc(50% - 0.7rem + sin(90deg) *38%); left: calc(50% - 0.7rem + cos(90deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-11 { top: calc(50% - 0.7rem + sin(120deg) *38%); left: calc(50% - 0.7rem + cos(120deg) *38%); }
|
||||||
|
.window-app.calendar div.horloge-heure.heure-12 { top: calc(50% - 0.7rem + sin(150deg) *38%); left: calc(50% - 0.7rem + cos(150deg) *41%); }
|
||||||
|
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-01 { top: calc(50% - 1rem + sin(-180deg) *41%); left: calc(50% - 1rem + cos(-180deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-02 { top: calc(50% - 1rem + sin(-150deg) *41%); left: calc(50% - 1rem + cos(-150deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-03 { top: calc(50% - 1rem + sin(-120deg) *41%); left: calc(50% - 1rem + cos(-120deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-04 { top: calc(50% - 1rem + sin(-90deg) *41%); left: calc(50% - 1rem + cos(-90deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-05 { top: calc(50% - 1rem + sin(-60deg) *41%); left: calc(50% - 1rem + cos(-60deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-06 { top: calc(50% - 1rem + sin(-30deg) *41%); left: calc(50% - 1rem + cos(-30deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-07 { top: calc(50% - 1rem + sin(-0deg) *41%); left: calc(50% - 1rem + cos(-0deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-08 { top: calc(50% - 1rem + sin(30deg) *41%); left: calc(50% - 1rem + cos(30deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-09 { top: calc(50% - 1rem + sin(60deg) *41%); left: calc(50% - 1rem + cos(60deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-10 { top: calc(50% - 1rem + sin(90deg) *41%); left: calc(50% - 1rem + cos(90deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-11 { top: calc(50% - 1rem + sin(120deg) *41%); left: calc(50% - 1rem + cos(120deg) *41%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-heure.heure-12 { top: calc(50% - 1rem + sin(150deg) *41%); left: calc(50% - 1rem + cos(150deg) *41%); }
|
||||||
|
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-01 { top: calc(50% - 0.4rem + sin(180deg) * 28%); left: calc(50% - 0.4rem + cos(180deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-02 { top: calc(50% - 0.4rem + sin(-150deg) * 28%); left: calc(50% - 0.4rem + cos(-150deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-03 { top: calc(50% - 0.4rem + sin(-120deg) * 28%); left: calc(50% - 0.4rem + cos(-120deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-04 { top: calc(50% - 0.4rem + sin(-90deg) * 28%); left: calc(50% - 0.4rem + cos(-90deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-05 { top: calc(50% - 0.4rem + sin(-60deg) * 28%); left: calc(50% - 0.4rem + cos(-60deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-06 { top: calc(50% - 0.4rem + sin(-30deg) * 28%); left: calc(50% - 0.4rem + cos(-30deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-07 { top: calc(50% - 0.4rem + sin(0deg) * 28%); left: calc(50% - 0.4rem + cos(0deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-08 { top: calc(50% - 0.4rem + sin(30deg) * 28%); left: calc(50% - 0.4rem + cos(30deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-09 { top: calc(50% - 0.4rem + sin(60deg) * 28%); left: calc(50% - 0.4rem + cos(60deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-10 { top: calc(50% - 0.4rem + sin(90deg) * 28%); left: calc(50% - 0.4rem + cos(90deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-11 { top: calc(50% - 0.4rem + sin(120deg) * 28%); left: calc(50% - 0.4rem + cos(120deg) * 28%); }
|
||||||
|
.window-app.calendar-astrologie div.horloge-ajustement.heure-12 { top: calc(50% - 0.4rem + sin(150deg) * 28%); left: calc(50% - 0.4rem + cos(150deg) * 28%); }
|
||||||
|
|
||||||
|
.window-app.calendar header.window-header h4 {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-app.calendar section.window-content div.calendar-boutons-heure {
|
||||||
|
display: grid;
|
||||||
|
background: hsla(0, 0%, 20%, 1);
|
||||||
|
color: hsla(0, 0%, 80%, 0.8);
|
||||||
|
|
||||||
|
grid-row: 1;
|
||||||
|
grid-column: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-boutons-heure .calendar-btn:is(.calendar-lyre,.calendar-vaisseau) img {
|
||||||
color: hsla(0, 0%, 100%, 0.5);
|
color: hsla(0, 0%, 100%, 0.5);
|
||||||
|
border: none;
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
max-width: 1.2em;
|
max-width: 1.2em;
|
||||||
max-height: 1.2em;
|
max-height: 1.2em;
|
||||||
border-width: 0;
|
margin: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-boutons-heure i {
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
.calendar-boutons-heure i:hover {
|
||||||
|
color: var(--color-controls-hover);
|
||||||
|
border: 1px solid var(--color-control-border-hover);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-1min { grid-column: 1;}
|
||||||
|
.calendar-5min { grid-column: 2;}
|
||||||
|
.calendar-15min { grid-column: 3;}
|
||||||
|
.calendar-30min { grid-column: 4;}
|
||||||
|
.calendar-60min { grid-column: 5;}
|
||||||
|
.calendar-1heure { grid-column: 6;}
|
||||||
|
.calendar-lyre { grid-column: 7;}
|
||||||
|
.calendar-vaisseau { grid-column: 8;}
|
||||||
|
.calendar-set-datetime { grid-column: 9;}
|
||||||
|
.calendar-astrologie { grid-column: 10;}
|
||||||
|
|
||||||
|
div.horloge-analogique {
|
||||||
|
border: none;
|
||||||
|
margin: 0;
|
||||||
|
width: fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
align-content: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
div.horloge-analogique.horloge-analogique-hidden {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
div.horloge-digitale {
|
||||||
|
color: #CCC;
|
||||||
|
background: hsla(0, 0%, 20%, 1);
|
||||||
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.horloge-digitale :is(.calendar-heure-texte,.calendar-minute-texte) {
|
||||||
|
font-size: 1rem;
|
||||||
|
pointer-events: all;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.horloge-digitale a {
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
div.horloge-digitale a:hover {
|
||||||
|
color: var(--color-controls-hover);
|
||||||
|
border: 1px solid var(--color-control-border-hover);
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.calendar-timestamp-edit select.calendar-signe-heure {
|
div.calendar-timestamp-edit select.calendar-signe-heure {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"id": "foundryvtt-reve-de-dragon",
|
"id": "foundryvtt-reve-de-dragon",
|
||||||
"title": "Rêve de Dragon",
|
"title": "Rêve de Dragon",
|
||||||
"version": "10.6.16",
|
"version": "10.7.6",
|
||||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.6.16.zip",
|
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.7.6.zip",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "10",
|
"minimum": "10",
|
||||||
|
|||||||
@@ -179,23 +179,8 @@
|
|||||||
"value": 10,
|
"value": 10,
|
||||||
"label": "Endurance",
|
"label": "Endurance",
|
||||||
"derivee": false
|
"derivee": false
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"blessures": {
|
"bonusPotion": 0
|
||||||
"legeres": {
|
|
||||||
"liste": [ { "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" } ]
|
|
||||||
},
|
|
||||||
"graves": {
|
|
||||||
"liste": [ { "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" } ]
|
|
||||||
},
|
|
||||||
"critiques": {
|
|
||||||
"liste": [ { "active": false, "psdone": false, "premiers_soins": -1, "scdone": false, "soins_complets": -1, "jours": 0, "localisation": "" } ]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"attributs": {
|
"attributs": {
|
||||||
"plusdom": {
|
"plusdom": {
|
||||||
@@ -380,23 +365,8 @@
|
|||||||
"value": 0,
|
"value": 0,
|
||||||
"label": "Fatigue",
|
"label": "Fatigue",
|
||||||
"derivee": true
|
"derivee": true
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"blessures": {
|
"bonusPotion": 0
|
||||||
"legeres": {
|
|
||||||
"liste": [ { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" } ]
|
|
||||||
},
|
|
||||||
"graves": {
|
|
||||||
"liste": [ { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" },
|
|
||||||
{ "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" } ]
|
|
||||||
},
|
|
||||||
"critiques": {
|
|
||||||
"liste": [ { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" } ]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"attributs": {
|
"attributs": {
|
||||||
"sconst": {
|
"sconst": {
|
||||||
@@ -567,7 +537,7 @@
|
|||||||
"monnaie", "nourritureboisson", "gemme",
|
"monnaie", "nourritureboisson", "gemme",
|
||||||
"service",
|
"service",
|
||||||
"meditation", "rencontre", "queue", "ombre", "souffle", "tete", "casetmr", "signedraconique", "sort", "sortreserve",
|
"meditation", "rencontre", "queue", "ombre", "souffle", "tete", "casetmr", "signedraconique", "sort", "sortreserve",
|
||||||
"nombreastral", "tache", "maladie", "poison", "possession",
|
"nombreastral", "tache", "blessure", "maladie", "poison", "possession",
|
||||||
"tarot", "extraitpoetique"
|
"tarot", "extraitpoetique"
|
||||||
],
|
],
|
||||||
"templates": {
|
"templates": {
|
||||||
@@ -636,6 +606,22 @@
|
|||||||
"compteur": 0,
|
"compteur": 0,
|
||||||
"date": 0
|
"date": 0
|
||||||
},
|
},
|
||||||
|
"blessure": {
|
||||||
|
"templates": ["temporel"],
|
||||||
|
"gravite": 0,
|
||||||
|
"difficulte": 0,
|
||||||
|
"premierssoins": {
|
||||||
|
"tache": 0,
|
||||||
|
"done": false,
|
||||||
|
"bonus": 0
|
||||||
|
},
|
||||||
|
"soinscomplets": {
|
||||||
|
"done": false,
|
||||||
|
"bonus": 0
|
||||||
|
},
|
||||||
|
"localisation": "",
|
||||||
|
"origine": ""
|
||||||
|
},
|
||||||
"maladie": {
|
"maladie": {
|
||||||
"templates": ["description", "temporel"],
|
"templates": ["description", "temporel"],
|
||||||
"identifie": false,
|
"identifie": false,
|
||||||
@@ -833,7 +819,8 @@
|
|||||||
"points_de_tache_courant": 0,
|
"points_de_tache_courant": 0,
|
||||||
"nb_jet_echec": 0,
|
"nb_jet_echec": 0,
|
||||||
"nb_jet_succes": 0,
|
"nb_jet_succes": 0,
|
||||||
"cacher_points_de_tache": false
|
"cacher_points_de_tache": false,
|
||||||
|
"itemId": ""
|
||||||
},
|
},
|
||||||
"sort": {
|
"sort": {
|
||||||
"templates": ["description"],
|
"templates": ["description"],
|
||||||
|
|||||||
@@ -89,7 +89,6 @@
|
|||||||
{{#if options.isObserver}}{{!-- Combat Tab --}}
|
{{#if options.isObserver}}{{!-- Combat Tab --}}
|
||||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/combat.html"}}<hr>
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/combat.html"}}<hr>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/chirurgie.html"}}
|
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/blessures.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/blessures.html"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/maladies-poisons.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/maladies-poisons.html"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/possessions.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/possessions.html"}}
|
||||||
@@ -100,6 +99,7 @@
|
|||||||
<div class="tab connaissances" data-group="primary" data-tab="connaissances">
|
<div class="tab connaissances" data-group="primary" data-tab="connaissances">
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/astrologie.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/astrologie.html"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/taches.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/taches.html"}}
|
||||||
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/chirurgie.html"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/oeuvres.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/oeuvres.html"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/jeux.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/jeux.html"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/alchimie.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/alchimie.html"}}
|
||||||
|
|||||||
41
templates/actor/blessure.hbs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<li class="item item-blessure flexrow list-item blessure-active-{{lowercase system.label}}" data-item-id="{{id}}">
|
||||||
|
<span class="blessure-control">
|
||||||
|
<img class="sheet-competence-img" src="{{img}}" />
|
||||||
|
<i class="fas fa-skull-crossbones"></i>
|
||||||
|
{{system.label}}
|
||||||
|
</span>
|
||||||
|
{{#if (gt system.gravite 6)}}
|
||||||
|
<span class="flexrow"></span>
|
||||||
|
<span class="flexrow"></span>
|
||||||
|
{{else}}
|
||||||
|
<span class="flexrow">
|
||||||
|
<input type="checkbox" class="blessure-premierssoins-done" name="blessure.{{id}}.premierssoins.done" {{#if system.premierssoins.done}}checked{{/if}}/>
|
||||||
|
{{#if system.premierssoins.done}}
|
||||||
|
{{#unless system.soinscomplets.done}}
|
||||||
|
<input type="text" class="blessure-premierssoins-bonus number-x2" name="blessure.{{id}}.premierssoins.bonus" data-dtype="number" value="{{system.premierssoins.bonus}}"/>
|
||||||
|
{{/unless}}
|
||||||
|
{{else}}
|
||||||
|
<label>{{system.premierssoins.tache}} / {{system.gravite}}</label>
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
<span class="flexrow">
|
||||||
|
{{#if system.premierssoins.done}}
|
||||||
|
<input type="checkbox" class="blessure-soinscomplets-done" name="blessure.{{id}}.system.soinscomplets.done" {{#if system.soinscomplets.done}}checked{{/if}}/>
|
||||||
|
{{#if system.soinscomplets.done}}
|
||||||
|
<input type="text" class="blessure-soinscomplets-bonus number-x2" name="blessure.{{id}}.system.soinscomplets.bonus" data-dtype="number" value="{{system.soinscomplets.bonus}}"/>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<label>Difficulté {{system.difficulte}}</label>
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
{{/if}}
|
||||||
|
<span>
|
||||||
|
{{#if system.origine}}<span>Par {{system.origine}}</span>{{/if}}
|
||||||
|
{{#if system.localisation}}<span>{{system.localisation}}</span>{{/if}}
|
||||||
|
</span>
|
||||||
|
<span class="item-controls">
|
||||||
|
<a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
|
<a class="item-montrer" title="Montrer"><i class="fas fa-comment"></i></a>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
<li class="item flexrow list-item {{#if blessure.active}}blessure-active-{{gravite}}{{else}}blessure-inactive{{/if}}"
|
|
||||||
data-blessure-type="{{gravite}}"
|
|
||||||
data-attribute={{key}}
|
|
||||||
data-blessure-index="{{key}}"
|
|
||||||
data-blessure-active="{{blessure.active}}">
|
|
||||||
<span class="blessure-control" title="Blessure {{title}}">
|
|
||||||
<i class="fas fa-skull-crossbones" name="blessure-{{gravite}}-{{key}}-active"></i>
|
|
||||||
{{title}}
|
|
||||||
</span>
|
|
||||||
{{#if blessure.active}}
|
|
||||||
<span class="blessure-soins flexrow">
|
|
||||||
<input class="blessure-psdone" name="blessure-{{gravite}}-{{key}}-psdone" type="checkbox" name="blessure.psdone" {{#if blessure.psdone}}checked{{/if}}/>
|
|
||||||
<input class="blessure-premiers_soins" type="text" name="blessure-{{gravite}}-{{key}}-premiers_soins" data-dtype="number" value="{{blessure.premiers_soins}}"/>
|
|
||||||
</span>
|
|
||||||
<span class="blessure-soins flexrow">
|
|
||||||
<input class="blessure-scdone" name="blessure-{{gravite}}-{{key}}-scdone" type="checkbox" name="blessure.scdone" {{#if blessure.scdone}}checked{{/if}}/>
|
|
||||||
<input class="blessure-soins_complets" type="text" name="blessure-{{gravite}}-{{key}}-soins_complets" data-dtype="number" value="{{blessure.soins_complets}}"/>
|
|
||||||
</span>
|
|
||||||
<input class="blessure-jours" type="text" name="blessure-{{gravite}}-{{key}}-jours" name="jours" data-dtype="number" value="{{blessure.jours}}"/>
|
|
||||||
<input class="blessure-localisation" type="text" name="blessure-{{gravite}}-{{key}}-localisation" data-dtype="String" value="{{blessure.loc}}"/>
|
|
||||||
{{else}}
|
|
||||||
<span></span>
|
|
||||||
<span></span>
|
|
||||||
<span></span>
|
|
||||||
<span></span>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
@@ -1,18 +1,20 @@
|
|||||||
|
<h4>blessures</h4>
|
||||||
|
<div>
|
||||||
|
<a class="chat-card-button creer-blessure-legere"><i class="fas fa-plus-circle"></i> légère</a>
|
||||||
|
<a class="chat-card-button creer-blessure-grave"><i class="fas fa-plus-circle"></i> grave</a>
|
||||||
|
<a class="chat-card-button creer-blessure-critique"><i class="fas fa-plus-circle"></i> critique</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
<li class="competence-header flexrow" >
|
<li class="competence-header flexrow" >
|
||||||
<span>Blessures</span>
|
<span></span>
|
||||||
<span>Premiers soins</span>
|
<span>Premiers soins</span>
|
||||||
<span>Soins complets</span>
|
<span>Soins complets</span>
|
||||||
<span>Age (jours)</span>
|
<span>Loc.</span>
|
||||||
<span>Localisation</span>
|
<span>Actions</span>
|
||||||
</li>
|
</li>
|
||||||
{{#each system.blessures.legeres.liste as |blessure key|}}
|
{{#each blessures as |blessure|}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/blessure.html" blessure=blessure key=key gravite="legere" title="Légère"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/blessure.hbs" blessure}}
|
||||||
{{/each}}
|
|
||||||
{{#each system.blessures.graves.liste as |blessure key|}}
|
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/blessure.html" blessure=blessure key=key gravite="grave" title="Grave"}}
|
|
||||||
{{/each}}
|
|
||||||
{{#each system.blessures.critiques.liste as |blessure key|}}
|
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/blessure.html" blessure=blessure key=key gravite="critique" title="Critique"}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
<h4>Soins</h4>
|
<h4>Soins</h4>
|
||||||
<a class="chat-card-button creer-tache-blessure-legere">Blessure légère</a>
|
<div>
|
||||||
<a class="chat-card-button creer-tache-blessure-grave">Blessure grave</a>
|
<a class="chat-card-button creer-tache-blessure-legere"><i class="fas fa-first-aid"></i> légère</a>
|
||||||
<a class="chat-card-button creer-tache-blessure-critique">Blessure critique</a>
|
<a class="chat-card-button creer-tache-blessure-grave"><i class="fas fa-first-aid"></i> grave</a>
|
||||||
|
<a class="chat-card-button creer-tache-blessure-critique"><i class="fas fa-first-aid"></i> critique</a>
|
||||||
|
</div>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each taches as |tache id|}}
|
{{#each taches as |tache id|}}
|
||||||
{{#if (eq tache.system.competence 'Chirurgie')}}
|
{{#if (eq tache.system.competence 'Chirurgie')}}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<span>
|
<div>
|
||||||
{{#if effects}}
|
{{#if effects}}
|
||||||
{{#each effects as |effect key|}}
|
{{#each effects as |effect key|}}
|
||||||
<span class="active-effect" data-effect="{{effect.flags.core.statusId}}">
|
<span class="active-effect" data-effect="{{effect.flags.core.statusId}}">
|
||||||
@@ -9,4 +9,4 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
Aucun effet actif
|
Aucun effet actif
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</div>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<div class="flex-group-left header-etats">
|
<div class="flex-group-left header-etats">
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<span>{{system.compteurs.etat.label}}: {{system.compteurs.etat.value}}</span>
|
<div>{{system.compteurs.etat.label}}: {{system.compteurs.etat.value}}</div>
|
||||||
<span>Sur-encombrement: {{calc.surenc}}</span>
|
<div>Sur-encombrement: {{calc.surenc}}</div>
|
||||||
<span>{{calc.resumeBlessures}}</span>
|
<div>{{calc.resumeBlessures}}</div>
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-effects.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-effects.html"}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -15,7 +15,11 @@
|
|||||||
</a>
|
</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
<span class="equipement-detail">{{item.system.quantite}}
|
<span class="equipement-detail">
|
||||||
|
{{#if (gt item.system.quantite 1)}}
|
||||||
|
<a class="item-quantite-moins"><i class="fas fa-minus-square"></i></a>
|
||||||
|
{{/if}}
|
||||||
|
{{item.system.quantite}}
|
||||||
{{#if (gt item.system.quantite 1)}}
|
{{#if (gt item.system.quantite 1)}}
|
||||||
<a class="item-split" title="Séparer"><i class="fas fa-unlink"></i></a>
|
<a class="item-split" title="Séparer"><i class="fas fa-unlink"></i></a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
</span>
|
</span>
|
||||||
{{#if @root.options.isOwner}}
|
{{#if @root.options.isOwner}}
|
||||||
<span class="equipement-button item-controls">
|
<span class="equipement-button item-controls">
|
||||||
<a class="monnaie-moins"><i class="fas fa-minus-square"></i></a>
|
<a class="item-quantite-moins"><i class="fas fa-minus-square"></i></a>
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="equipement-detail">
|
<span class="equipement-detail">
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
</span>
|
</span>
|
||||||
{{#if @root.options.isOwner}}
|
{{#if @root.options.isOwner}}
|
||||||
<span class="equipement-button item-controls">
|
<span class="equipement-button item-controls">
|
||||||
<a class="monnaie-plus"><i class="fas fa-plus-square"></i></a>
|
<a class="item-quantite-plus"><i class="fas fa-plus-square"></i></a>
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="equipement-actions item-controls">
|
<span class="equipement-actions item-controls">
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
<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>
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
<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>
|
|
||||||
<th>Date</th>
|
|
||||||
{{#each astrologieData as |nombreData key|}}
|
|
||||||
<th>{{nombreData.date.jour}}{{timestamp-imgSigneHeure nombreData.date.mois}}</th>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Nombre astral</th>
|
|
||||||
{{#each astrologieData as |nombreData key|}}
|
|
||||||
<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 class='table-nombres-astraux'>
|
|
||||||
<tr>
|
|
||||||
<th></th>
|
|
||||||
{{#each heures as |heure|}}
|
|
||||||
<th>
|
|
||||||
{{timestamp-imgSigneHeure heure}}
|
|
||||||
</th>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
{{#each ajustementsActeur as |ajustementActeur|}}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<img class="img-signe-heure" src="{{actor.img}}" title="{{actor.name}}" />
|
|
||||||
{{actor.name}}
|
|
||||||
</td>
|
|
||||||
{{#each ajustementActeur.ajustements as |ajustement|}}
|
|
||||||
<td>{{#if (ne ajustement.ajustement 0)}}
|
|
||||||
<strong>
|
|
||||||
{{numberFormat ajustement.ajustement decimals=0 sign=true}}
|
|
||||||
</strong>
|
|
||||||
{{else}}
|
|
||||||
<div class="dimmed">
|
|
||||||
{{timestamp-imgSigneHeure ajustement.heure}}
|
|
||||||
</div>
|
|
||||||
{{/if}}</td>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
{{/each}}
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</form>
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
<div id="calendar-time-container">
|
|
||||||
<div class="calendar">
|
|
||||||
<div class="calendar-title" title="Deplacer">{{jourDuMois}} {{mois.label}} ({{mois.saison}})</div>
|
|
||||||
<div class="calendar-options">
|
|
||||||
{{#if isGM}}
|
|
||||||
<i class="calendar-set-datetime fa-solid fa-calendar-pen" title="Editer"></i>
|
|
||||||
<i class="calendar-astrologie fa-solid fa-moon-over-sun" title="Astrologie"></i>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
<div class="calendar-avance-heure">
|
|
||||||
<div class="calendar-avance-heure-grid">
|
|
||||||
{{#if isGM}}
|
|
||||||
<i class="calendar-btn calendar-1min" data-calendar-avance="1" title="Avancer de 1 minute">+1</i>
|
|
||||||
<i class="calendar-btn calendar-5min" data-calendar-avance="5" title="Avancer de 5 minutes">+5</i>
|
|
||||||
<i class="calendar-btn calendar-15min" data-calendar-avance="15" title="Avancer de 15 minutes">+15</i>
|
|
||||||
<i class="calendar-btn calendar-30min" data-calendar-avance="30" title="Avancer de 30 minutes">+30</i>
|
|
||||||
<i class="calendar-btn calendar-60min" data-calendar-avance="60" title="Avancer de 60 minutes" >+60</i>
|
|
||||||
<i class="calendar-btn calendar-1heure" data-calendar-avance="120" title="Avancer d'1 heure" >+1h</i>
|
|
||||||
{{else}}
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="calendar-affiche-heure">
|
|
||||||
<div class="calendar-horloge">
|
|
||||||
<a class="ajout-chronologie">
|
|
||||||
<img class="calendar-heure-img" src="{{heure.icon}}" alt="{{nomHeure}}"/>
|
|
||||||
<span class="calendar-heure-texte">{{heure.label}}</span>
|
|
||||||
</a>
|
|
||||||
{{#if isGM}}
|
|
||||||
<p class="calendar-minute-texte">{{minute}} minutes</p>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="calendar-change-heure">
|
|
||||||
<div class="calendar-change-heure-grid">
|
|
||||||
{{#if isGM}}
|
|
||||||
<i class="calendar-btn calendar-lyre fas fa-forward" data-calendar-set="6" title="Avancer à Lyre">
|
|
||||||
<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd07.svg" alt="Avancer à Lyre"/>
|
|
||||||
</i>
|
|
||||||
<i class="calendar-btn calendar-vaisseau fas fa-forward" data-calendar-set="0" title="Avancer au Vaisseau">
|
|
||||||
<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd01.svg" alt="Avancer au Vaisseau"/>
|
|
||||||
</i>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -5,5 +5,6 @@
|
|||||||
<div>{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes. Un point d'Endurance a été retiré automatiquement.</div>
|
<div>{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes. Un point d'Endurance a été retiré automatiquement.</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if isCritique}}
|
{{#if isCritique}}
|
||||||
<div>{{alias}} souffre d'une <strong>Blessure Critique</strong> : faites un <a id="chat-jet-vie" data-actorId="{{actorId}}">Jet de Vie.<a></div>
|
<div>{{alias}} souffre d'une <strong>Blessure Critique</strong> : faites un
|
||||||
|
<a id="chat-jet-vie" class="chat-card-button" data-actorId="{{actorId}}">Jet de Vie.<a></div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
17
templates/chat-demande-declencher-sort.hbs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<p>
|
||||||
|
Vous êtes sur une case avec un Sort en Réserve. Grâce à votre Tête de Dragon
|
||||||
|
({{#if tete.reserveSecurite}}Réserve en sécurité{{/if}}
|
||||||
|
{{~#if tete.reserveExtensible}}{{#if tete.reserveSecurite}}, {{/if~}}
|
||||||
|
Réserve extensible
|
||||||
|
{{~/if}}), vous pouvez contrôler le déclenchement. Cliquez sur le sort que vous souhaitez déclencher en {{coord}} - {{caseTmr-label coord}}:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
{{#each sorts as |sort|}}
|
||||||
|
<li>
|
||||||
|
<a class="chat-card-button declencher-sort-reserve" data-actor-id="{{actor.id}}" data-tmr-coord="{{sort.system.coord}}" data-sort-id="{{sort.id}}">
|
||||||
|
{{sort.name}} (r{{sort.system.ptreve}})
|
||||||
|
</a>
|
||||||
|
{{#if sort.system.heurecible }} HN {{timestamp-imgSigneHeure sort.system.heurecible}}{{/if}}
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
@@ -1,17 +1,18 @@
|
|||||||
{{#if isGM}}
|
{{#if isGM}}
|
||||||
|
{{log this}}
|
||||||
<span>
|
<span>
|
||||||
{{#if (gt endurance 0)}}
|
{{#if (gt endurance 0)}}
|
||||||
De plus, {{alias}} a perdu {{endurance}} points d'endurance
|
De plus, {{alias}} a perdu {{endurance}} points d'endurance
|
||||||
{{#if (ne vie 0)}}et <span class="rdd-roll-echec">{{vie}} points de vie</span>{{/if}}
|
{{#if (ne vie 0)}}et <span class="rdd-roll-echec">{{vie}} points de vie</span>{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (gt endurance 1)}}Jet d'endurance : {{jetEndurance}} / {{resteEndurance}} {{/if}}
|
{{#if (and jetEndurance (gt endurance 1))}}Jet d'endurance : {{jetEndurance}} / {{resteEndurance}} {{/if}}
|
||||||
</span>
|
</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<h4>{{alias}} encaisse à
|
<h4>{{alias}} encaisse à
|
||||||
<span>
|
<span>
|
||||||
{{numberFormat dmg.total decimals=0 sign=true}}
|
{{numberFormat dmg.total decimals=0 sign=true}}
|
||||||
{{#if (eq dmg.mortalite 'non-mortel')~}}(coups non mortels)
|
{{#if (eq dmg.mortalite 'non-mortel')~}}(coups non mortels)
|
||||||
{{~else if (eq dmg.mortalite 'cauchemar')}}(entité de cauchemar)
|
{{~else if (eq dmg.mortalite 'entiteincarnee')}}(entité incarnée)
|
||||||
{{~/if}}
|
{{~/if}}
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
@@ -22,15 +23,16 @@
|
|||||||
{{~/unless}}, total: <span class="rdd-roll-echec">{{total}}</span>
|
{{~/unless}}, total: <span class="rdd-roll-echec">{{total}}</span>
|
||||||
<br>
|
<br>
|
||||||
{{alias}}
|
{{alias}}
|
||||||
{{#if (eq dmg.mortalite 'cauchemar')}}subit le coup
|
{{#if (eq dmg.mortalite 'entiteincarnee')}}subit le coup
|
||||||
{{else if eraflures}}subit une contusion
|
|
||||||
{{else if legeres}}subit une blessure légère
|
|
||||||
{{else if graves}}subit une blessure grave
|
|
||||||
{{else if critiques}}subit une blessure critique
|
|
||||||
{{else if mort}}vient de mourir
|
{{else if mort}}vient de mourir
|
||||||
|
{{else if blessure}}
|
||||||
|
{{#if (gt blessure.system.gravite 0)}}subit une blessure {{blessure.system.labelGravite}}
|
||||||
|
{{else}}subit une contusion
|
||||||
|
{{~/if~}}
|
||||||
{{else}}s'en sort sans une égratignure
|
{{else}}s'en sort sans une égratignure
|
||||||
{{~/if~}}
|
{{~/if~}}
|
||||||
{{~#unless (eq dmg.mortalite 'cauchemar')}}
|
|
||||||
|
{{~#unless (eq dmg.mortalite 'entiteincarnee')}}
|
||||||
{{#if dmg.loc.label}}
|
{{#if dmg.loc.label}}
|
||||||
{{#if (gt roll.total 0)}}({{dmg.loc.label}}){{/if}}
|
{{#if (gt roll.total 0)}}({{dmg.loc.label}}){{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -39,7 +41,7 @@
|
|||||||
{{~#if hasPlayerOwner}}, a perdu {{endurance}} points d'endurance
|
{{~#if hasPlayerOwner}}, a perdu {{endurance}} points d'endurance
|
||||||
{{#if (ne vie 0)}}, <span class="rdd-roll-echec">{{vie}} points de vie</span>{{/if}}
|
{{#if (ne vie 0)}}, <span class="rdd-roll-echec">{{vie}} points de vie</span>{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (ne dmg.mortalite 'cauchemar')}}
|
{{#if (ne dmg.mortalite 'entiteincarnee')}}
|
||||||
{{#if (gt endurance 1)}}et
|
{{#if (gt endurance 1)}}et
|
||||||
{{#if sonne}}est <strong>sonné</strong><img class="chat-icon" src="icons/svg/stoned.svg" alt="charge" height="16" width="16" /> jusqu'à la fin du prochain round{{else}}n'est pas sonné{{/if}}!
|
{{#if sonne}}est <strong>sonné</strong><img class="chat-icon" src="icons/svg/stoned.svg" alt="charge" height="16" width="16" /> jusqu'à la fin du prochain round{{else}}n'est pas sonné{{/if}}!
|
||||||
{{#if hasPlayerOwner}}Jet d'endurance : Jet d'endurance : {{jetEndurance}} / {{resteEndurance}}{{/if}}
|
{{#if hasPlayerOwner}}Jet d'endurance : Jet d'endurance : {{jetEndurance}} / {{resteEndurance}}{{/if}}
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
<form class="{{cssClass}}" autocomplete="off">
|
|
||||||
<header class="sheet-header">
|
|
||||||
<div class="header-fields">
|
|
||||||
<h1 class="charname">Astrologie</h1>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<label> Conditions</label>
|
|
||||||
<select name="diffConditions" data-dtype="Number">
|
|
||||||
{{#select diffConditions}}
|
|
||||||
{{#each ajustementsConditions as |key|}}
|
|
||||||
<option value={{key}}>{{numberFormat key decimals=0 sign=true}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
<label> Jours</label>
|
|
||||||
<select name="joursAstrologie" data-dtype="Number">
|
|
||||||
{{#select joursSuivants}}
|
|
||||||
{{#each dates as |date key|}}
|
|
||||||
<option value={{date.index}}>{{date.label}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
<label>Etat Général: {{etat}}</label>
|
|
||||||
<label> <a name="jet-astrologie">Faire un jet d'Astrologie</a></label>
|
|
||||||
|
|
||||||
{{!-- Sheet Body --}}
|
|
||||||
<section class="sheet-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="astralList">Nombres Astraux</label>
|
|
||||||
<table class='table-nombres-astraux'>
|
|
||||||
<tr class='table-nombres-astraux-td'>
|
|
||||||
{{#each nombres as |nombreData key|}}
|
|
||||||
<td class='table-nombres-astraux-td'>{{nombreData.jourlabel}}</td>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
<tr class='table-nombres-astraux-td'>
|
|
||||||
{{#each nombres as |nombreData key|}}
|
|
||||||
<td class='table-nombres-astraux-td'>
|
|
||||||
<ol>
|
|
||||||
{{#each nombreData.listValues as |nombreAstral key|}}
|
|
||||||
<li>{{nombreAstral}}</li>
|
|
||||||
{{/each}}
|
|
||||||
</ol>
|
|
||||||
</td>
|
|
||||||
{{/each}}
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="control-icon rdd-combat ">
|
<div class="control-icon rdd-combat ">
|
||||||
<img class="rdd-hud-togglebutton" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" width="36" height="36" title="Attaque"/>
|
<img class="rdd-hud-togglebutton" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" width="36" height="36" title="Attaque"/>
|
||||||
<div class="rdd-hud-list tokenhudext left">
|
<div class="rdd-hud-list token-hud-ext left">
|
||||||
{{#each actions as |action key|}}
|
{{#each actions as |action key|}}
|
||||||
{{#unless action.system.initOnly}}
|
{{#unless action.system.initOnly}}
|
||||||
<div class="control-icon tokenhudicon rdd-hud-menu rdd-attaque"
|
<div class="control-icon token-hud-icon rdd-hud-menu rdd-attaque"
|
||||||
data-combatant-id="{{../combatant.id}}"
|
data-combatant-id="{{../combatant.id}}"
|
||||||
data-action-index="{{action.index}}"
|
data-action-index="{{action.index}}"
|
||||||
title="{{action.name}}">
|
title="{{action.name}}">
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<div class="control-icon rdd-initiative ">
|
<div class="control-icon rdd-initiative ">
|
||||||
<img class="rdd-hud-togglebutton" src="icons/svg/sword.svg" width="36" height="36" title="Initiative" />
|
<img class="rdd-hud-togglebutton" src="icons/svg/sword.svg" width="36" height="36" title="Initiative" />
|
||||||
<div class="rdd-hud-list tokenhudext right">
|
<div class="rdd-hud-list token-hud-ext right">
|
||||||
{{#each actions as |action key|}}
|
{{#each actions as |action key|}}
|
||||||
<div class="control-icon tokenhudicon rdd-hud-menu"
|
<div class="control-icon token-hud-icon rdd-hud-menu"
|
||||||
data-combatant-id="{{../combatant.id}}"
|
data-combatant-id="{{../combatant.id}}"
|
||||||
data-action-index="{{action.index}}"
|
data-action-index="{{action.index}}"
|
||||||
title="{{action.name}}">
|
title="{{action.name}}">
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#each commandes as |commande key|}}
|
{{#each commandes as |commande key|}}
|
||||||
<div class="control-icon tokenhudicon rdd-hud-menu"
|
<div class="control-icon token-hud-icon rdd-hud-menu"
|
||||||
data-command="{{commande.command}}"
|
data-command="{{commande.command}}"
|
||||||
data-combatant-id="{{../combatant.id}}"
|
data-combatant-id="{{../combatant.id}}"
|
||||||
data-action-index="{{commande.index}}"
|
data-action-index="{{commande.index}}"
|
||||||
|
|||||||
12
templates/hud-actor-soins.hbs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<div class="control-icon rdd-soins ">
|
||||||
|
<img class="rdd-hud-togglebutton" src="icons/svg/regen.svg" width="36" height="36" title="Soins" />
|
||||||
|
<div class="rdd-hud-list token-hud-ext soins">
|
||||||
|
{{#each blessures as |blessure|}}
|
||||||
|
<div class="control-icon token-hud-icon rdd-hud-menu"
|
||||||
|
data-blessure-id="{{blessure.id}}"
|
||||||
|
title="{{blessure.name}}">
|
||||||
|
<label>Soigner: {{blessure.name}}</label>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
60
templates/item-blessure-sheet.html
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system-gravite">Gravité</label>
|
||||||
|
<select name="system-gravite" class="gravite" data-dtype="Number">
|
||||||
|
{{#select system.gravite}}
|
||||||
|
<option value="0">Contusion / Eraflure</option>
|
||||||
|
<option value="2">Légère</option>
|
||||||
|
<option value="4">Grave</option>
|
||||||
|
<option value="6">Critique</option>
|
||||||
|
<option value="8">Mort</option>
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system.localisation">Localisation</label>
|
||||||
|
<input class="attribute-value" type="text" name="system.localisation" value="{{system.localisation}}" data-dtype="String"/>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system.origine">Causée par</label>
|
||||||
|
<input class="attribute-value" type="text" name="system.origine" value="{{system.origine}}" data-dtype="String"/>
|
||||||
|
</div>
|
||||||
|
{{#if (lt system.gravite 7)}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system.difficulte">Difficulté des soins</label>
|
||||||
|
<input class="attribute-value number-x" type="text" name="system.difficulte" value="{{system.difficulte}}" data-dtype="Number"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="premierssoins-done">Premiers soins
|
||||||
|
<input class="attribute-value" type="checkbox" name="premierssoins-done" {{#if system.premierssoins.done}}checked{{/if}}/>
|
||||||
|
</label>
|
||||||
|
{{#if system.premierssoins.done}}
|
||||||
|
{{#unless system.soinscomplets.done}}
|
||||||
|
<input class="attribute-value number-x" type="text" name="system.premierssoins.bonus" value="{{system.premierssoins.bonus}}" data-dtype="Number"/>
|
||||||
|
{{/unless}}
|
||||||
|
{{else}}
|
||||||
|
<label for="system.premierssoins.tache">Points de tâches</label>
|
||||||
|
<input class="attribute-value number-x" type="text" name="system.premierssoins.tache" value="{{system.premierssoins.tache}}" data-dtype="Number"/>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{#if system.premierssoins.done}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="soinscomplets-done">Soins complets
|
||||||
|
<input class="attribute-value" type="checkbox" name="soinscomplets-done" {{#if system.soinscomplets.done}}checked{{/if}}/>
|
||||||
|
</label>
|
||||||
|
{{#if system.soinscomplets.done}}
|
||||||
|
<input class="attribute-value number-x" type="text" name="system.soinscomplets.bonus" value="{{system.soinscomplets.bonus}}" data-dtype="Number"/>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if options.isOwned}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Obtenue" labelfin="Prochain jet"}}
|
||||||
|
{{/if}}
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<section class="sheet-body">
|
<section class="sheet-body">
|
||||||
<div class="tab items flexcol" data-group="primary" data-tab="informations">
|
<div class="tab items flexcol" data-group="primary" data-tab="informations">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Fréquence</label>
|
<label for="system.rarete">Fréquence</label>
|
||||||
<select name="system.rarete" class="rarete" data-dtype="String">
|
<select name="system.rarete" class="rarete" data-dtype="String">
|
||||||
{{#select system.rarete}}
|
{{#select system.rarete}}
|
||||||
<option value=""></option>
|
<option value=""></option>
|
||||||
@@ -27,66 +27,60 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Catégorie</label>
|
<label for="system.categorie">Catégorie</label>
|
||||||
<select name="system.categorie" class="categoriepotion" data-dtype="String">
|
<select name="system.categorie" class="categoriepotion" data-dtype="String">
|
||||||
{{#select system.categorie}}
|
{{#select system.categorie}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-potion.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-potion.html"}}
|
||||||
{{/select}}
|
{{/select}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{{#if isSoins}}
|
{{#if (or isSoins isRepos)}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Herbe</label>
|
<label for="system.herbe">Herbe</label>
|
||||||
<select name="system.herbe" class="herbe" data-dtype="String">
|
<select name="system.herbe" class="herbe" data-dtype="String">
|
||||||
|
{{#if isSoins}}
|
||||||
{{selectOptions herbesSoins selected=system.herbe localize=false}}
|
{{selectOptions herbesSoins selected=system.herbe localize=false}}
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Nombre de brins</label>
|
|
||||||
<input class="attribute-value" type="text" name="system.herbebrins" value="{{system.herbebrins}}" data-dtype="Number" />
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Bonus</label>
|
|
||||||
<input class="attribute-value" type="text" name="system.herbebonus" value="{{system.herbebonus}}" data-dtype="Number" />
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if isRepos}}
|
{{#if isRepos}}
|
||||||
<div class="form-group">
|
|
||||||
<label>Herbe</label>
|
|
||||||
<select name="system.herbe" class="herbe" data-dtype="String">
|
|
||||||
{{selectOptions herbesRepos selected=system.herbe localize=false}}
|
{{selectOptions herbesRepos selected=system.herbe localize=false}}
|
||||||
|
{{/if}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Nombre de brins</label>
|
<label for="system.herbebrins">Nombre de brins</label>
|
||||||
<input class="attribute-value" type="text" name="system.herbebrins" value="{{system.herbebrins}}" data-dtype="Number" />
|
<input class="attribute-value" type="text" name="system.herbebrins" value="{{system.herbebrins}}" data-dtype="Number" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Bonus</label>
|
<label for="system.herbebonus">Bonus</label>
|
||||||
<input class="attribute-value" type="text" name="system.herbebonus" value="{{system.herbebonus}}" data-dtype="Number" />
|
<input class="attribute-value" type="text" name="system.herbebonus" value="{{system.herbebonus}}" data-dtype="Number" />
|
||||||
</div>
|
</div>
|
||||||
|
{{#if isRepos}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Repos Alchimique ?</label>
|
<label for="system.reposalchimique">Repos Alchimique ?</label>
|
||||||
<input class="attribute-value" type="checkbox" name="system.reposalchimique" {{#if system.reposalchimique}}checked{{/if}}/>
|
<input class="attribute-value" type="checkbox" name="system.reposalchimique" {{#if system.reposalchimique}}checked{{/if}}/>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
{{#if system.magique}}
|
{{#if system.magique}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Points de rêve</label>
|
<label for="system.pr">Points de rêve</label>
|
||||||
<input class="attribute-value" type="text" name="system.pr" value="{{system.pr}}" data-dtype="Number" />
|
<input class="attribute-value" type="text" name="system.pr" value="{{system.pr}}" data-dtype="Number" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="xp">Permanente ? </label>
|
<label for="system.prpermanent">Permanente ? </label>
|
||||||
<input class="attribute-value" type="checkbox" name="system.prpermanent" {{#if system.prpermanent}}checked{{/if}}/>
|
<input class="attribute-value" type="checkbox" name="system.prpermanent" {{#if system.prpermanent}}checked{{/if}}/>
|
||||||
</div>
|
</div>
|
||||||
{{#if isSoins}}
|
{{#if (or isSoins isRepos)}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="xp">Points de guérison </label>
|
<label>Points de
|
||||||
<label for="xp">{{pointsGuerison}}</label>
|
{{#if isSoins}}guérison{{/if}}
|
||||||
|
{{#if isRepos}}repos{{/if}}
|
||||||
|
</label>
|
||||||
|
<label>{{system.puissance}}</label>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Date de l'Enchantement : Jour/Mois (date actuelle : {{dateActuelle}})</label>
|
<label for="enchantement.jour">Date de l'Enchantement : Jour/Mois (date actuelle : {{dateActuelle}})</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="number" name="enchantement.jour" class="date-enchantement" value="{{enchantement.jour}}" data-dtype="Number" min="1" max="28"/>
|
<input type="number" name="enchantement.jour" class="date-enchantement" value="{{enchantement.jour}}" data-dtype="Number" min="1" max="28"/>
|
||||||
|
|||||||
@@ -59,7 +59,6 @@
|
|||||||
<label for="system.xp">XP</label>
|
<label for="system.xp">XP</label>
|
||||||
<input class="attribute-value" type="text" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
|
<input class="attribute-value" type="text" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
|
||||||
</div>
|
</div>
|
||||||
{{#if options.isOwner}}
|
|
||||||
{{#each bonusCaseList as |bcData key|}}
|
{{#each bonusCaseList as |bcData key|}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="caseValue">Case/Bonus :</label>
|
<label for="caseValue">Case/Bonus :</label>
|
||||||
@@ -67,7 +66,6 @@
|
|||||||
<input class="attribute-value" type="text" name="bonusValue" value="{{bcData.bonus}}" data-dtype="Number"/>
|
<input class="attribute-value" type="text" name="bonusValue" value="{{bcData.bonus}}" data-dtype="Number"/>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
18
templates/sommeil/app-astrologie.hbs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<form class="app-calendar-astrologie" autocomplete="off">
|
||||||
|
<div class="flexrow">
|
||||||
|
<div class="flex-grow">
|
||||||
|
<div class="header-fields">
|
||||||
|
<h1 class="charname">Astrologie {{#if isActor}}: {{actorAstrologie.actor.name}}{{/if}}</h1>
|
||||||
|
</div>
|
||||||
|
{{log 'astrologie' this}}
|
||||||
|
{{#if isActor}}
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-joueur.hbs'}}
|
||||||
|
{{else}}
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-gardien.hbs'}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-theme.hbs'}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
57
templates/sommeil/astrologie-gardien.hbs
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<div>
|
||||||
|
<a class="chat-card-button" name="rebuild-nombres-astraux">Réinitialiser les nombres astraux</a>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<table class='table-nombres-astraux'>
|
||||||
|
<tr>
|
||||||
|
<th>Date</th>
|
||||||
|
{{#each gmAstrologie.nombresAstraux as |nba|}}
|
||||||
|
<th>{{nba.date.jour}}{{timestamp-imgSigneHeure nba.date.mois}}</th>
|
||||||
|
{{/each}}
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Nombre astral</th>
|
||||||
|
{{#each gmAstrologie.nombresAstraux as |nba|}}
|
||||||
|
<td class="nombre-astral" data-nombre-astral="{{nba.nombreAstral}}">
|
||||||
|
<ol>
|
||||||
|
<b>{{nba.nombreAstral}}</b>
|
||||||
|
{{#each nba.valeursFausses as |fausse|}}
|
||||||
|
<li>{{fausse.actorName}} - {{fausse.nombreAstral}}</li>
|
||||||
|
{{/each}}
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
{{/each}}
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<table class='table-nombres-astraux'>
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
{{#each heures as |heure|}}
|
||||||
|
<td>
|
||||||
|
{{timestamp-imgSigneHeure heure.heure}}
|
||||||
|
</td>
|
||||||
|
{{/each}}
|
||||||
|
</tr>
|
||||||
|
{{#each gmAstrologie.ajustementsActors as |ajustementActeur|}}
|
||||||
|
<tr class="heure-naissance" data-heure-naissance="{{actor.system.heure}}">
|
||||||
|
<td>
|
||||||
|
<img class="img-signe-heure" src="{{actor.img}}" title="{{actor.name}}" />
|
||||||
|
{{actor.name}} {{timestamp-imgSigneHeure actor.system.heure}}
|
||||||
|
</td>
|
||||||
|
{{#each ajustementActeur.ajustements as |ajustement|}}
|
||||||
|
<td>{{#if (ne ajustement.ajustement 0)}}
|
||||||
|
<strong>
|
||||||
|
{{numberFormat ajustement.ajustement decimals=0 sign=true}}
|
||||||
|
</strong>
|
||||||
|
{{else}}
|
||||||
|
<div class="dimmed">
|
||||||
|
{{timestamp-imgSigneHeure ajustement.heure}}
|
||||||
|
</div>
|
||||||
|
{{/if}}</td>
|
||||||
|
{{/each}}
|
||||||
|
</tr>
|
||||||
|
{{/each}}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
43
templates/sommeil/astrologie-joueur.hbs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<div>
|
||||||
|
<label>Conditions</label>
|
||||||
|
<select name="diffConditions" data-dtype="Number">
|
||||||
|
{{#select '0'}}
|
||||||
|
{{#each actorAstrologie.ajustements as |ajustement|}}
|
||||||
|
<option value={{ajustement}}>{{ajustement}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
<label> Jours</label>
|
||||||
|
<select name="joursAstrologie" data-dtype="Number">
|
||||||
|
{{#select ''}}
|
||||||
|
{{#each dates as |date|}}
|
||||||
|
<option value={{date.index}}>{{date.label}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
<label>
|
||||||
|
Etat Général: {{actorAstrologie.etat}}
|
||||||
|
</label>
|
||||||
|
<a class="chat-card-button" name="jet-astrologie">Lire les étoiles</a>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="astralList">Nombres Astraux</label>
|
||||||
|
<table class='table-nombres-astraux'>
|
||||||
|
<tr class='table-nombres-astraux-td'>
|
||||||
|
{{#each actorAstrologie.nombres as |nombre|}}
|
||||||
|
<th class='table-nombres-astraux-td'>{{nombre.jourlabel}}</th>
|
||||||
|
{{/each}}
|
||||||
|
</tr>
|
||||||
|
<tr class='table-nombres-astraux-td'>
|
||||||
|
{{#each actorAstrologie.nombres as |nombre|}}
|
||||||
|
<td class='table-nombres-astraux-td'>
|
||||||
|
<ol>
|
||||||
|
{{#each nombre.listValues as |value|}}
|
||||||
|
<li>{{value}}</li>
|
||||||
|
{{/each}}
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
{{/each}}
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
23
templates/sommeil/astrologie-theme.hbs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<div class="theme-astral">
|
||||||
|
<div class="flexcol">
|
||||||
|
<label for="signe-astral">Nombre Astral</label>
|
||||||
|
<select name="signe-astral" class="calendar-signe-heure" data-dtype="String">
|
||||||
|
{{#select "vaisseau"}}
|
||||||
|
{{#each heures as |heure|}}
|
||||||
|
<option value="{{heure.key}}">{{numberFormat heure.hh}} - {{heure.label}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
<label for="signe-naissance">Heure de Naissance</label>
|
||||||
|
<select name="signe-naissance" class="calendar-signe-heure" data-dtype="String">
|
||||||
|
{{#select "vaisseau"}}
|
||||||
|
{{#each heures as |heure|}}
|
||||||
|
<option value="{{heure.key}}">{{numberFormat heure.hh}} - {{heure.label}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div><label>Heures de chance et malchance</label></div>
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/time/horloge.hbs'}}
|
||||||
|
</div>
|
||||||
40
templates/time/calendar.hbs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<div class="calendar-horloge">
|
||||||
|
{{#if isGM}}
|
||||||
|
<div class="calendar-boutons-heure">
|
||||||
|
<i class="calendar-btn calendar-1min" data-calendar-avance="1" title="Avancer de 1 minute">+1</i>
|
||||||
|
<i class="calendar-btn calendar-5min" data-calendar-avance="5" title="Avancer de 5 minutes">+5</i>
|
||||||
|
<i class="calendar-btn calendar-15min" data-calendar-avance="15" title="Avancer de 15 minutes">+15</i>
|
||||||
|
<i class="calendar-btn calendar-30min" data-calendar-avance="30" title="Avancer de 30 minutes">+30</i>
|
||||||
|
<i class="calendar-btn calendar-60min" data-calendar-avance="60" title="Avancer de 60 minutes" >+60</i>
|
||||||
|
<i class="calendar-btn calendar-1heure" data-calendar-avance="120" title="Avancer d'1 heure" >+1h</i>
|
||||||
|
<i class="calendar-btn calendar-lyre fas fa-forward" data-calendar-set="6" title="Avancer à Lyre">
|
||||||
|
<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd07.svg" alt="Avancer à Lyre"/>
|
||||||
|
</i>
|
||||||
|
<i class="calendar-btn calendar-vaisseau fas fa-forward" data-calendar-set="0" title="Avancer au Vaisseau">
|
||||||
|
<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd01.svg" alt="Avancer au Vaisseau"/>
|
||||||
|
</i>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
<div class="horloge-digitale">
|
||||||
|
<span>
|
||||||
|
<a class="toggle-horloge-analogique">
|
||||||
|
{{#if horlogeAnalogique}}
|
||||||
|
<i class="fa-solid fa-chevrons-up"></i>
|
||||||
|
{{else}}
|
||||||
|
<i class="fa-solid fa-chevrons-down"></i>
|
||||||
|
{{/if}}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<span class="calendar-heure-texte">
|
||||||
|
<a class="ajout-chronologie">
|
||||||
|
{{heure.label}}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{#if isGM}}
|
||||||
|
<span class="calendar-minute-texte">{{minute}} minutes</span>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="horloge-analogique {{#unless horlogeAnalogique}}horloge-analogique-hidden{{/unless}}">
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/time/horloge.hbs' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
22
templates/time/horloge.hbs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<div class="horloge-roue">
|
||||||
|
<div class="horloge-cercle"></div>
|
||||||
|
<div class="horloge-cercle1"></div>
|
||||||
|
{{#if theme}}
|
||||||
|
{{#each heures as |heure|}}
|
||||||
|
<div class="horloge-ajustement heure-{{heure.hh}}"></div>
|
||||||
|
{{/each}}
|
||||||
|
<div class="disque-astro">
|
||||||
|
<img src="systems/foundryvtt-reve-de-dragon/styles/img/ui/astro-disque.svg" alt="">
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#each heures as |heure|}}
|
||||||
|
<div class="horloge-heure heure-{{heure.hh}}" data-heure="{{heure.heure}}"><img class="horloge-heure-img" src="{{heure.webp}}" title="{{heure.label}}"></div>
|
||||||
|
{{/each}}
|
||||||
|
<div class="horloge-cercle2"></div>
|
||||||
|
<div class="horloge-aiguille-heure">
|
||||||
|
<img src="systems/foundryvtt-reve-de-dragon/styles/img/ui/rdd-aiguille-horloge.svg" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="horloge-aiguille-minute">
|
||||||
|
<img src="systems/foundryvtt-reve-de-dragon/styles/img/ui/rdd-aiguille-minute.svg" alt="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||