Compare commits
23 Commits
foundryvtt
...
foundryvtt
| Author | SHA1 | Date | |
|---|---|---|---|
| f027e3318b | |||
|
|
31b4d1cfcc | ||
|
|
5056c35038 | ||
|
|
7b58407634 | ||
|
|
7efa7be1c0 | ||
|
|
717bb6fc6e | ||
| 51273bcc3e | |||
|
|
b8f3a9af27 | ||
|
|
ab704c46d2 | ||
|
|
db8fd6dbf8 | ||
|
|
d998a4cb08 | ||
|
|
b1e27a9597 | ||
| eaac9564b4 | |||
|
|
0826c7e9e3 | ||
|
|
bdd3802e72 | ||
|
|
b07cea40e2 | ||
|
|
bb7f4c42ad | ||
|
|
ac15a022df | ||
| a43c725b06 | |||
|
|
1276c64835 | ||
|
|
4b4d778d9c | ||
|
|
86f9c37b30 | ||
|
|
ac77c6da9e |
BIN
icons/faune/cerf.webp
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
icons/faune/chevre.webp
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
icons/faune/crabe.webp
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
icons/faune/lapin.webp
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
icons/faune/oie.webp
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
icons/faune/oiseau.webp
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
icons/faune/poisson.webp
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
icons/faune/raton-laveur.webp
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
icons/faune/rongeur.webp
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
icons/faune/saumon.webp
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
icons/faune/singe-vert.webp
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
@@ -20,6 +20,7 @@
|
|||||||
"TypeMonnaie": "Monnaie",
|
"TypeMonnaie": "Monnaie",
|
||||||
"TypeHerbe": "Herbe ou plante",
|
"TypeHerbe": "Herbe ou plante",
|
||||||
"TypeIngredient": "Ingrédient",
|
"TypeIngredient": "Ingrédient",
|
||||||
|
"TypeFaune": "Faune",
|
||||||
"TypeLivre": "Livre",
|
"TypeLivre": "Livre",
|
||||||
"TypePotion": "Potion",
|
"TypePotion": "Potion",
|
||||||
"TypeArme": "Arme",
|
"TypeArme": "Arme",
|
||||||
|
|||||||
@@ -132,10 +132,12 @@ export class RdDActorSheet extends ActorSheet {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _onDropItem(event, dragData) {
|
async _onDropItem(event, dragData) {
|
||||||
const destItemId = $(event.target)?.closest('.item').attr('data-item-id')
|
const destItemId = $(event.target)?.closest('.item').attr('data-item-id')
|
||||||
const dropParams = RdDSheetUtility.prepareItemDropParameters(destItemId, this.actor.id, dragData, this.objetVersConteneur)
|
const dropParams = RdDSheetUtility.prepareItemDropParameters(destItemId, this.actor, dragData, this.objetVersConteneur)
|
||||||
const callSuper = await this.actor.processDropItem(dropParams)
|
if (dropParams) {
|
||||||
if (callSuper) {
|
const callSuper = await this.actor.processDropItem(dropParams)
|
||||||
await super._onDropItem(event, dragData)
|
if (callSuper) {
|
||||||
|
await super._onDropItem(event, dragData)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,31 +164,11 @@ export class RdDActorSheet extends ActorSheet {
|
|||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||||
RdDSheetUtility.splitItem(item, this.actor);
|
RdDSheetUtility.splitItem(item, this.actor);
|
||||||
});
|
});
|
||||||
html.find('.item-edit').click(async event => {
|
html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true))
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor)
|
html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor)));
|
||||||
item.sheet.render(true)
|
html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente());
|
||||||
})
|
html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem());
|
||||||
html.find('.display-label a').click(async event => {
|
html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor));
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
|
||||||
item.sheet.render(true);
|
|
||||||
});
|
|
||||||
html.find('.item-delete').click(async event => {
|
|
||||||
const li = RdDSheetUtility.getEventElement(event);
|
|
||||||
const item = this.actor.getObjet(li.data("item-id"));
|
|
||||||
RdDUtility.confirmerSuppressionItem(this, item, li);
|
|
||||||
});
|
|
||||||
html.find('.item-vendre').click(async event => {
|
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
|
||||||
item?.proposerVente();
|
|
||||||
});
|
|
||||||
html.find('.item-montrer').click(async event => {
|
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
|
||||||
item?.postItem();
|
|
||||||
});
|
|
||||||
html.find('.item-action').click(async event => {
|
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor)
|
|
||||||
this.actor.actionItem(item);
|
|
||||||
});
|
|
||||||
html.find('.subacteur-delete').click(async event => {
|
html.find('.subacteur-delete').click(async event => {
|
||||||
const li = RdDSheetUtility.getEventElement(event);
|
const li = RdDSheetUtility.getEventElement(event);
|
||||||
const actorId = li.data("actor-id");
|
const actorId = li.data("actor-id");
|
||||||
|
|||||||
284
module/actor.js
@@ -145,7 +145,7 @@ export class RdDActor extends Actor {
|
|||||||
// Make separate methods for each Actor type (character, npc, etc.) to keep
|
// Make separate methods for each Actor type (character, npc, etc.) to keep
|
||||||
// things organized.
|
// things organized.
|
||||||
if (this.isPersonnage()) this._prepareCharacterData(this)
|
if (this.isPersonnage()) this._prepareCharacterData(this)
|
||||||
if (this.isCreature()) this._prepareCreatureData(this)
|
if (this.isCreatureEntite()) this._prepareCreatureData(this)
|
||||||
if (this.isVehicule()) this._prepareVehiculeData(this)
|
if (this.isVehicule()) this._prepareVehiculeData(this)
|
||||||
this.computeEtatGeneral();
|
this.computeEtatGeneral();
|
||||||
}
|
}
|
||||||
@@ -193,10 +193,36 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
canReceive(item) {
|
||||||
|
if (this.isCreature()) {
|
||||||
|
return item.type == 'competencecreature' || RdDItem.isItemInventaire(item);
|
||||||
|
}
|
||||||
|
if (this.isEntite()) {
|
||||||
|
return item.type == 'competencecreature';
|
||||||
|
}
|
||||||
|
if (this.isVehicule()) {
|
||||||
|
return RdDItem.isItemInventaire(item);
|
||||||
|
}
|
||||||
|
if (this.isPersonnage()) {
|
||||||
|
switch (item.type) {
|
||||||
|
case 'competencecreature': case 'tarot':
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
isCreature() {
|
isCreatureEntite() {
|
||||||
return this.type == 'creature' || this.type == 'entite';
|
return this.type == 'creature' || this.type == 'entite';
|
||||||
}
|
}
|
||||||
|
isCreature() {
|
||||||
|
return this.type == 'creature';
|
||||||
|
}
|
||||||
|
isEntite() {
|
||||||
|
return this.type == 'entite';
|
||||||
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
isPersonnage() {
|
isPersonnage() {
|
||||||
return this.type == 'personnage';
|
return this.type == 'personnage';
|
||||||
@@ -224,7 +250,7 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getReveActuel() {
|
getReveActuel() {
|
||||||
switch(this.type) {
|
switch (this.type) {
|
||||||
case 'personnage':
|
case 'personnage':
|
||||||
return Misc.toInt(this.system.reve?.reve?.value ?? this.carac.reve.value);
|
return Misc.toInt(this.system.reve?.reve?.value ?? this.carac.reve.value);
|
||||||
case 'creature':
|
case 'creature':
|
||||||
@@ -232,7 +258,7 @@ export class RdDActor extends Actor {
|
|||||||
return Misc.toInt(this.system.carac.reve?.value)
|
return Misc.toInt(this.system.carac.reve?.value)
|
||||||
case 'vehicule':
|
case 'vehicule':
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -374,8 +400,8 @@ export class RdDActor extends Actor {
|
|||||||
return duplicate(possessions[0]);
|
return duplicate(possessions[0]);
|
||||||
}
|
}
|
||||||
const draconics = [...this.getDraconicList().filter(it => it.system.niveau >= 0),
|
const draconics = [...this.getDraconicList().filter(it => it.system.niveau >= 0),
|
||||||
POSSESSION_SANS_DRACONIC]
|
POSSESSION_SANS_DRACONIC]
|
||||||
.sort(Misc.descending(it => it.system.niveau));
|
.sort(Misc.descending(it => it.system.niveau));
|
||||||
return duplicate(draconics[0]);
|
return duplicate(draconics[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,18 +620,18 @@ export class RdDActor extends Actor {
|
|||||||
content: 'Remise à neuf de ' + this.name
|
content: 'Remise à neuf de ' + this.name
|
||||||
});
|
});
|
||||||
const updates = {
|
const updates = {
|
||||||
'system.sante.endurance.value' : this.system.sante.endurance.max
|
'system.sante.endurance.value': this.system.sante.endurance.max
|
||||||
};
|
};
|
||||||
if (!this.isEntite([ENTITE_INCARNE, ENTITE_BLURETTE])) {
|
if (!this.isEntite([ENTITE_INCARNE, ENTITE_BLURETTE])) {
|
||||||
if (this.system.blessures) {
|
if (this.system.blessures) {
|
||||||
updates['system.blessures.legeres.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE];
|
updates['system.blessures.legeres.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE];
|
||||||
updates['system.blessures.graves.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE];
|
updates['system.blessures.graves.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE];
|
||||||
updates['system.blessures.critiques.liste'] = [PAS_DE_BLESSURE];
|
updates['system.blessures.critiques.liste'] = [PAS_DE_BLESSURE];
|
||||||
}
|
}
|
||||||
updates['system.sante.vie.value'] = this.system.sante.vie.max;
|
updates['system.sante.vie.value'] = this.system.sante.vie.max;
|
||||||
updates['system.sante.fatigue.value'] = 0;
|
updates['system.sante.fatigue.value'] = 0;
|
||||||
if (this.isPersonnage()) {
|
if (this.isPersonnage()) {
|
||||||
updates['system.compteurs.ethylisme'] = { value:1, nb_doses: 0, jet_moral: false};
|
updates['system.compteurs.ethylisme'] = { value: 1, nb_doses: 0, jet_moral: false };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await this.update(updates);
|
await this.update(updates);
|
||||||
@@ -783,8 +809,7 @@ export class RdDActor extends Actor {
|
|||||||
name: 'maitrise',
|
name: 'maitrise',
|
||||||
label: 'Maîtriser le Rêve de Dragon',
|
label: 'Maîtriser le Rêve de Dragon',
|
||||||
callbacks: [
|
callbacks: [
|
||||||
{ action: async r =>
|
{ action: async r => this.resultCombatReveDeDragon(r) }
|
||||||
this.resultCombatReveDeDragon(r) }
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -803,11 +828,12 @@ export class RdDActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async sortMisEnReserve(sort, draconic, coord, ptreve) {
|
async sortMisEnReserve(sort, draconic, coord, ptreve) {
|
||||||
await this.createEmbeddedDocuments("Item", [{
|
await this.createEmbeddedDocuments("Item", [{
|
||||||
type: 'sortreserve',
|
type: 'sortreserve',
|
||||||
name: sort.name,
|
name: sort.name,
|
||||||
img: sort.img,
|
img: sort.img,
|
||||||
system: { sortid: sort._id, draconic: (draconic?.name ?? sort.system.draconic), ptreve: ptreve, coord: coord, heurecible: 'Vaisseau' } }],
|
system: { sortid: sort._id, draconic: (draconic?.name ?? sort.system.draconic), ptreve: ptreve, coord: coord, heurecible: 'Vaisseau' }
|
||||||
{ renderSheet: false});
|
}],
|
||||||
|
{ renderSheet: false });
|
||||||
this.currentTMR.updateTokens();
|
this.currentTMR.updateTokens();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -897,7 +923,7 @@ export class RdDActor extends Actor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const xpUtilise = Math.max(0, Math.min(stress, xpRequis));
|
const xpUtilise = Math.max(0, Math.min(stress, xpRequis));
|
||||||
const gainNiveau = (xpUtilise >= xpRequis || xpRequis <=0) ? 1 : 0;
|
const gainNiveau = (xpUtilise >= xpRequis || xpRequis <= 0) ? 1 : 0;
|
||||||
const nouveauNiveau = niveau + gainNiveau;
|
const nouveauNiveau = niveau + gainNiveau;
|
||||||
const nouveauXp = gainNiveau > 0 ? Math.max(competence.system.xp - xpSuivant, 0) : (competence.system.xp + xpUtilise);
|
const nouveauXp = gainNiveau > 0 ? Math.max(competence.system.xp - xpSuivant, 0) : (competence.system.xp + xpUtilise);
|
||||||
await competence.update({
|
await competence.update({
|
||||||
@@ -1002,7 +1028,7 @@ export class RdDActor extends Actor {
|
|||||||
});
|
});
|
||||||
await this.update({ [`system.experiencelog`]: expLog });
|
await this.update({ [`system.experiencelog`]: expLog });
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteExperienceLog(from, count) {
|
async deleteExperienceLog(from, count) {
|
||||||
if (from >= 0 && count > 0) {
|
if (from >= 0 && count > 0) {
|
||||||
let expLog = duplicate(this.system.experiencelog);
|
let expLog = duplicate(this.system.experiencelog);
|
||||||
@@ -1118,7 +1144,7 @@ export class RdDActor extends Actor {
|
|||||||
onEnleverDeConteneur();
|
onEnleverDeConteneur();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** Ajoute un item dans un conteneur, sur la base
|
/** Ajoute un item dans un conteneur, sur la base
|
||||||
* de leurs ID */
|
* de leurs ID */
|
||||||
@@ -1132,7 +1158,7 @@ export class RdDActor extends Actor {
|
|||||||
await this.updateEmbeddedDocuments('Item', [{
|
await this.updateEmbeddedDocuments('Item', [{
|
||||||
_id: conteneur.id,
|
_id: conteneur.id,
|
||||||
'system.contenu': [...conteneur.system.contenu, item.id]
|
'system.contenu': [...conteneur.system.contenu, item.id]
|
||||||
}]);
|
}]);
|
||||||
onAjouterDansConteneur(item.id, conteneur.id);
|
onAjouterDansConteneur(item.id, conteneur.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1175,15 +1201,15 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
let result = true;
|
let result = true;
|
||||||
const item = this.getObjet(itemId);
|
const item = this.getObjet(itemId);
|
||||||
if (item?.isEquipement() && sourceActorId == targetActorId) {
|
if (item?.isInventaire() && sourceActorId == targetActorId) {
|
||||||
// rangement
|
// rangement
|
||||||
if (srcId != destId && itemId != destId) { // déplacement de l'objet
|
if (srcId != destId && itemId != destId) { // déplacement de l'objet
|
||||||
const src = this.getObjet(srcId);
|
const src = this.getObjet(srcId);
|
||||||
const dest = this.getObjet(destId);
|
const dest = this.getObjet(destId);
|
||||||
const cible = this.getContenantOrParent(dest);
|
const cible = this.getContenantOrParent(dest);
|
||||||
const [empilable, message] = item.isEquipementEmpilable(dest);
|
const [empilable, message] = item.isInventaireEmpilable(dest);
|
||||||
if (empilable) {
|
if (empilable) {
|
||||||
await this.regrouperEquipementsSimilaires(item, dest);
|
await dest.empiler(item)
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
// changer de conteneur
|
// changer de conteneur
|
||||||
@@ -1283,11 +1309,6 @@ export class RdDActor extends Actor {
|
|||||||
return itemMap;
|
return itemMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
async regrouperEquipementsSimilaires(item, dest) {
|
|
||||||
await dest.quantiteIncDec(item.system.quantite);
|
|
||||||
await item.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
isSurenc() {
|
isSurenc() {
|
||||||
return this.isPersonnage() ? (this.computeMalusSurEncombrement() < 0) : false
|
return this.isPersonnage() ? (this.computeMalusSurEncombrement() < 0) : false
|
||||||
}
|
}
|
||||||
@@ -1348,8 +1369,8 @@ export class RdDActor extends Actor {
|
|||||||
async computeMalusArmure() {
|
async computeMalusArmure() {
|
||||||
if (this.isPersonnage()) {
|
if (this.isPersonnage()) {
|
||||||
const malusArmure = this.filterItems(it => it.type == 'armure' && it.system.equipe)
|
const malusArmure = this.filterItems(it => it.type == 'armure' && it.system.equipe)
|
||||||
.map(it => it.system.malus ?? 0)
|
.map(it => it.system.malus ?? 0)
|
||||||
.reduce(Misc.sum(), 0);
|
.reduce(Misc.sum(), 0);
|
||||||
// Mise à jour éventuelle du malus armure
|
// Mise à jour éventuelle du malus armure
|
||||||
if (this.system.attributs?.malusarmure?.value != malusArmure) {
|
if (this.system.attributs?.malusarmure?.value != malusArmure) {
|
||||||
await this.updateAttributeValue("malusarmure", malusArmure);
|
await this.updateAttributeValue("malusarmure", malusArmure);
|
||||||
@@ -1359,10 +1380,10 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
computePrixTotalEquipement() {
|
computePrixTotalEquipement() {
|
||||||
const valeur = this.items.filter(it => it.isEquipement())
|
const valeur = this.items.filter(it => it.isInventaire())
|
||||||
.map(it => it.valeurTotale())
|
.map(it => it.valeurTotale())
|
||||||
.reduce(Misc.sum(), 0);
|
.reduce(Misc.sum(), 0);
|
||||||
return valeur / 100;
|
return valeur;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -1434,7 +1455,7 @@ export class RdDActor extends Actor {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async ajouterRefoulement(value = 1, refouler) {
|
async ajouterRefoulement(value = 1, refouler) {
|
||||||
const refoulement = this.system.reve.refoulement.value + value;
|
const refoulement = this.system.reve.refoulement.value + value;
|
||||||
@@ -1542,7 +1563,7 @@ export class RdDActor extends Actor {
|
|||||||
async deleteTMRRencontreAtPosition() {
|
async deleteTMRRencontreAtPosition() {
|
||||||
const demiReve = this.getDemiReve()
|
const demiReve = this.getDemiReve()
|
||||||
let rencontreIds = this.items.filter(it => it.type == 'rencontre' && it.system.coord == demiReve).map(it => it.id);
|
let rencontreIds = this.items.filter(it => it.type == 'rencontre' && it.system.coord == demiReve).map(it => it.id);
|
||||||
if (rencontreIds.length>0) {
|
if (rencontreIds.length > 0) {
|
||||||
await this.deleteEmbeddedDocuments('Item', rencontreIds);
|
await this.deleteEmbeddedDocuments('Item', rencontreIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1550,7 +1571,7 @@ export class RdDActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addTMRRencontre(currentRencontre) {
|
async addTMRRencontre(currentRencontre) {
|
||||||
const toCreate = currentRencontre.toObject();
|
const toCreate = currentRencontre.toObject();
|
||||||
console.log('actor.addTMRRencontre(', toCreate,')');
|
console.log('actor.addTMRRencontre(', toCreate, ')');
|
||||||
this.createEmbeddedDocuments('Item', [toCreate]);
|
this.createEmbeddedDocuments('Item', [toCreate]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1779,7 +1800,7 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
async vehicleIncDec(name, inc) {
|
async vehicleIncDec(name, inc) {
|
||||||
if (!this.isVehicule() || !['resistance', 'structure'].includes(name)) {
|
if (!this.isVehicule() || !['resistance', 'structure'].includes(name)) {
|
||||||
return
|
return
|
||||||
@@ -1787,7 +1808,7 @@ export class RdDActor extends Actor {
|
|||||||
const value = this.system.etat[name].value;
|
const value = this.system.etat[name].value;
|
||||||
const max = this.system.etat[name].max;
|
const max = this.system.etat[name].max;
|
||||||
const newValue = value + inc;
|
const newValue = value + inc;
|
||||||
if (0 <= newValue && newValue <=max) {
|
if (0 <= newValue && newValue <= max) {
|
||||||
await this.update({ [`system.etat.${name}.value`]: newValue })
|
await this.update({ [`system.etat.${name}.value`]: newValue })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1923,25 +1944,33 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async actionItem(item, onActionItem = async () => { }) {
|
async actionItem(item, onActionItem = async () => { }) {
|
||||||
if (!item.getActionPrincipale()) return;
|
item.actionPrincipale(this, onActionItem);
|
||||||
switch (item.type) {
|
|
||||||
case 'nourritureboisson': return await this.actionNourritureboisson(item, onActionItem);
|
|
||||||
case 'potion': return await this.consommerPotion(item, onActionItem);
|
|
||||||
case 'livre': return await this.actionLire(item);
|
|
||||||
case 'conteneur': return await item.sheet.render(true);
|
|
||||||
case 'herbe': {
|
|
||||||
if (item.isHerbeAPotion()) {
|
|
||||||
return this.dialogFabriquerPotion(item);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
case 'queue': case 'ombre': return await this.actionRefoulement(item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async actionNourritureboisson(item, onActionItem) {
|
async actionNourritureboisson(item, onActionItem) {
|
||||||
const dialog = await DialogConsommer.create(this, item, onActionItem);
|
switch (item.isComestible()) {
|
||||||
dialog.render(true);
|
case 'brut': {
|
||||||
|
let d = new Dialog({
|
||||||
|
title: "Nourriture brute",
|
||||||
|
content: `Que faire de votre ${item.name}`,
|
||||||
|
buttons: {
|
||||||
|
'cuisiner': { icon: '<i class="fas fa-check"></i>', label: 'Cuisiner', callback: async () => await this.preparerNourriture(item) },
|
||||||
|
'manger': { icon: '<i class="fas fa-check"></i>', label: 'Manger cru', callback: async () => await this.mangerNourriture(item, onActionItem) }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
d.render(true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case 'pret':
|
||||||
|
await this.mangerNourriture(item, onActionItem);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async mangerNourriture(item, onActionItem) {
|
||||||
|
return (await DialogConsommer.create(this, item, onActionItem)).render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
async actionLire(item) {
|
async actionLire(item) {
|
||||||
@@ -1950,11 +1979,18 @@ export class RdDActor extends Actor {
|
|||||||
await this.rollTache(tache.id);
|
await this.rollTache(tache.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
async actionHerbe(item) {
|
||||||
|
if (item.isHerbeAPotion()) {
|
||||||
|
return this.dialogFabriquerPotion(item);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async consommer(item, choix) {
|
async consommer(item, choix) {
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
case 'nourritureboisson':
|
case 'nourritureboisson':
|
||||||
|
case 'herbe': case 'faune':
|
||||||
return await this.consommerNourritureboisson(item.id, choix);
|
return await this.consommerNourritureboisson(item.id, choix);
|
||||||
case 'potion':
|
case 'potion':
|
||||||
return await this.consommerPotion(item)
|
return await this.consommerPotion(item)
|
||||||
@@ -1962,18 +1998,18 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async consommerNourritureboisson(itemId, choix = { doses: 1, seForcer: false, supprimerSiZero: false}, userId = undefined) {
|
async consommerNourritureboisson(itemId, choix = { doses: 1, seForcer: false, supprimerSiZero: false }, userId = undefined) {
|
||||||
if (userId != undefined && userId != game.user.id) {
|
if (userId != undefined && userId != game.user.id) {
|
||||||
RdDActor.remoteActorCall({
|
RdDActor.remoteActorCall({
|
||||||
actorId: this.id,
|
actorId: this.id,
|
||||||
method: 'consommerNourritureboisson',
|
method: 'consommerNourritureboisson',
|
||||||
args: [itemId, choix, userId]
|
args: [itemId, choix, userId]
|
||||||
},
|
},
|
||||||
userId)
|
userId)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const item = this.getObjet(itemId)
|
const item = this.getObjet(itemId)
|
||||||
if (item.type != 'nourritureboisson') {
|
if (!item.isComestible()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (choix.doses > item.system.quantite) {
|
if (choix.doses > item.system.quantite) {
|
||||||
@@ -2271,9 +2307,9 @@ export class RdDActor extends Actor {
|
|||||||
if (xpData) {
|
if (xpData) {
|
||||||
const content = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-gain-xp.html`, xpData);
|
const content = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-gain-xp.html`, xpData);
|
||||||
if (hideChatMessage) {
|
if (hideChatMessage) {
|
||||||
ChatUtility.blindMessageToGM({ content: content});
|
ChatUtility.blindMessageToGM({ content: content });
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
|
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
|
||||||
content: content
|
content: content
|
||||||
@@ -2557,7 +2593,7 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollCompetence(idOrName, options = {tryTarget: true}) {
|
async rollCompetence(idOrName, options = { tryTarget: true }) {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
carac: this.system.carac,
|
carac: this.system.carac,
|
||||||
competence: this.getCompetence(idOrName)
|
competence: this.getCompetence(idOrName)
|
||||||
@@ -2565,14 +2601,14 @@ export class RdDActor extends Actor {
|
|||||||
if (rollData.competence.type == 'competencecreature') {
|
if (rollData.competence.type == 'competencecreature') {
|
||||||
if (rollData.competence.system.iscombat && options.tryTarget && Targets.hasTargets()) {
|
if (rollData.competence.system.iscombat && options.tryTarget && Targets.hasTargets()) {
|
||||||
Targets.selectOneToken(target => {
|
Targets.selectOneToken(target => {
|
||||||
if (rollData.competence.system.ispossession) {
|
if (rollData.competence.system.ispossession) {
|
||||||
RdDPossession.onAttaquePossession(target, this, rollData.competence)
|
RdDPossession.onAttaquePossession(target, this, rollData.competence)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const arme = RdDItemCompetenceCreature.armeNaturelle(rollData.competence)
|
const arme = RdDItemCompetenceCreature.armeNaturelle(rollData.competence)
|
||||||
RdDCombat.rddCombatTarget(target, this).attaque(competence, arme)
|
RdDCombat.rddCombatTarget(target, this).attaque(competence, arme)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Transformer la competence de créature
|
// Transformer la competence de créature
|
||||||
@@ -2679,14 +2715,15 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _rollArt(artData, selected, oeuvre, callBackResult = r => this._resultArt(r)) {
|
async _rollArt(artData, selected, oeuvre, callBackResult = r => this._resultArt(r)) {
|
||||||
|
oeuvre.system.niveau = oeuvre.system.niveau ?? 0;
|
||||||
mergeObject(artData,
|
mergeObject(artData,
|
||||||
{
|
{
|
||||||
oeuvre: oeuvre,
|
oeuvre: oeuvre,
|
||||||
art: oeuvre.type,
|
art: oeuvre.type,
|
||||||
competence: duplicate(this.getCompetence(artData.compName ?? oeuvre.system.competence ?? artData.art)),
|
competence: duplicate(this.getCompetence(artData.compName ?? oeuvre.system.competence ?? artData.art)),
|
||||||
diffLibre: - (oeuvre.system.niveau ?? 0),
|
diffLibre: - oeuvre.system.niveau,
|
||||||
diffConditions: 0,
|
diffConditions: 0,
|
||||||
use: { libre: false, conditions: true },
|
use: { libre: false, conditions: true, surenc: false },
|
||||||
selectedCarac: duplicate(this.system.carac[selected])
|
selectedCarac: duplicate(this.system.carac[selected])
|
||||||
},
|
},
|
||||||
{ overwrite: false });
|
{ overwrite: false });
|
||||||
@@ -2695,8 +2732,6 @@ export class RdDActor extends Actor {
|
|||||||
artData.forceCarac = {};
|
artData.forceCarac = {};
|
||||||
artData.forceCarac[selected] = duplicate(this.system.carac[selected]);
|
artData.forceCarac[selected] = duplicate(this.system.carac[selected]);
|
||||||
}
|
}
|
||||||
console.log("rollArt !!!", artData);
|
|
||||||
|
|
||||||
const dialog = await RdDRoll.create(this, artData,
|
const dialog = await RdDRoll.create(this, artData,
|
||||||
{ html: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${oeuvre.type}.html` },
|
{ html: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${oeuvre.type}.html` },
|
||||||
{
|
{
|
||||||
@@ -2713,8 +2748,9 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _resultArt(artData) {
|
async _resultArt(artData) {
|
||||||
const baseQualite = (artData.rolled.isSuccess ? artData.oeuvre.system.niveau : artData.competence.system.niveau);
|
const niveau = artData.oeuvre.system.niveau ?? 0;
|
||||||
artData.qualiteFinale = Math.min(baseQualite, artData.oeuvre.system.niveau) + artData.rolled.ptQualite;
|
const baseQualite = (artData.rolled.isSuccess ? niveau : artData.competence.system.niveau);
|
||||||
|
artData.qualiteFinale = Math.min(baseQualite, niveau) + artData.rolled.ptQualite;
|
||||||
|
|
||||||
await RdDResolutionTable.displayRollData(artData, this.name, `chat-resultat-${artData.art}.html`);
|
await RdDResolutionTable.displayRollData(artData, this.name, `chat-resultat-${artData.art}.html`);
|
||||||
}
|
}
|
||||||
@@ -2768,32 +2804,64 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _resultRecetteCuisine(artData) {
|
async _resultRecetteCuisine(cuisine) {
|
||||||
const baseQualite = (artData.rolled.isSuccess ? artData.oeuvre.system.niveau : artData.competence.system.niveau);
|
const niveauRecette = cuisine.oeuvre.system.niveau ?? 0;
|
||||||
const sust = artData.oeuvre.system.sust * artData.proportions;
|
const baseQualite = (cuisine.rolled.isSuccess ? niveauRecette : cuisine.competence.system.niveau);
|
||||||
artData.qualiteFinale = Math.min(baseQualite, artData.oeuvre.system.niveau) + artData.rolled.ptQualite;
|
cuisine.qualiteFinale = Math.min(baseQualite, niveauRecette) + cuisine.rolled.ptQualite;
|
||||||
artData.exotismeFinal = Math.min(Math.min(artData.qualiteFinale, artData.oeuvre.system.exotisme ?? 0), 0);
|
cuisine.exotismeFinal = Math.min(Math.min(cuisine.qualiteFinale, cuisine.oeuvre.system.exotisme ?? 0), 0);
|
||||||
//console.log("OEUVRE", artData.art, artData)
|
cuisine.sust = cuisine.oeuvre.system.sust * Math.min(cuisine.proportions, cuisine.proportionsMax ?? cuisine.proportions)
|
||||||
const platCuisine = {
|
const platCuisine = {
|
||||||
name: artData.oeuvre.name,
|
name: cuisine.oeuvre.name,
|
||||||
type: 'nourritureboisson',
|
type: 'nourritureboisson',
|
||||||
img: 'systems/foundryvtt-reve-de-dragon/icons/objets/provision_cuite.webp',
|
img: 'systems/foundryvtt-reve-de-dragon/icons/objets/provision_cuite.webp',
|
||||||
system: {
|
system: {
|
||||||
"description": artData.oeuvre.system.description,
|
"description": cuisine.oeuvre.system.description,
|
||||||
"sust": Math.min(sust, 1),
|
"sust": 1,
|
||||||
"qualite": artData.qualiteFinale,
|
"qualite": cuisine.qualiteFinale,
|
||||||
"exotisme": artData.exotismeFinal,
|
"exotisme": cuisine.exotismeFinal,
|
||||||
"encombrement": 0.1,
|
"encombrement": 0.1,
|
||||||
"quantite": Math.max(1, Math.floor(sust)),
|
"quantite": Math.max(1, Math.floor(cuisine.sust)),
|
||||||
"cout": Math.max(artData.qualiteFinale) * 0.01
|
"cout": Math.max(cuisine.qualiteFinale) * 0.01
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
if (artData.ajouterEquipement) {
|
if (cuisine.ajouterEquipement) {
|
||||||
await this.createEmbeddedDocuments('Item', [platCuisine]);
|
await this.createEmbeddedDocuments('Item', [platCuisine]);
|
||||||
ui.notifications.info(`${platCuisine.system.quantite} rations de ${platCuisine.name} ont été ajoutés à votre équipement`);
|
ui.notifications.info(`${platCuisine.system.quantite} rations de ${platCuisine.name} ont été ajoutés à votre équipement`);
|
||||||
}
|
}
|
||||||
artData.platCuisine = platCuisine;
|
cuisine.platCuisine = platCuisine;
|
||||||
await RdDResolutionTable.displayRollData(artData, this.name, `chat-resultat-${artData.art}.html`);
|
await RdDResolutionTable.displayRollData(cuisine, this.name, `chat-resultat-${cuisine.art}.html`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async preparerNourriture(item) {
|
||||||
|
if (item.isComestible() == 'brut') {
|
||||||
|
const nourriture = {
|
||||||
|
name: 'Plat de ' + item.name,
|
||||||
|
type: 'recettecuisine',
|
||||||
|
img: item.img,
|
||||||
|
system: {
|
||||||
|
sust: 1,
|
||||||
|
exotisme: item.system.exotisme,
|
||||||
|
ingredients: item.name
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const artData = {
|
||||||
|
verbe: 'Préparer',
|
||||||
|
compName: 'cuisine',
|
||||||
|
proportions: 1,
|
||||||
|
proportionsMax: Math.min(50, item.system.sust),
|
||||||
|
ajouterEquipement: true
|
||||||
|
};
|
||||||
|
await this._rollArt(artData, 'odoratgout', nourriture, async (cuisine) => {
|
||||||
|
await this._resultRecetteCuisine(cuisine);
|
||||||
|
const remaining = Math.max(item.system.quantite - cuisine.proportions, 0);
|
||||||
|
if (remaining > 0) {
|
||||||
|
await item.update({ 'system.quantite': remaining })
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await this.deleteEmbeddedDocuments('Item', [item.id]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -2995,7 +3063,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getHeureNaissance() {
|
getHeureNaissance() {
|
||||||
if (this.isCreature()) {
|
if (this.isCreatureEntite()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return this.system.heure;
|
return this.system.heure;
|
||||||
@@ -3003,7 +3071,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
ajustementAstrologique() {
|
ajustementAstrologique() {
|
||||||
if (this.isCreature()) {
|
if (this.isCreatureEntite()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
// selon l'heure de naissance...
|
// selon l'heure de naissance...
|
||||||
@@ -3145,7 +3213,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
const caracList = Object.entries(carac);
|
const caracList = Object.entries(carac);
|
||||||
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
|
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
|
||||||
if (!entry || entry.length ==0) {
|
if (!entry || entry.length == 0) {
|
||||||
entry = Misc.findFirstLike(name, caracList, { mapper: it => it[1].label, description: 'caractéristique' });
|
entry = Misc.findFirstLike(name, caracList, { mapper: it => it[1].label, description: 'caractéristique' });
|
||||||
}
|
}
|
||||||
return entry && entry.length > 0 ? carac[entry[0]] : undefined;
|
return entry && entry.length > 0 ? carac[entry[0]] : undefined;
|
||||||
@@ -3181,7 +3249,7 @@ export class RdDActor extends Actor {
|
|||||||
ui.notifications.warn("Vous êtes déja dans les TMR....");
|
ui.notifications.warn("Vous êtes déja dans les TMR....");
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (mode != 'visu' && this.getEffect(STATUSES.StatusDemiReve)) {
|
if (mode != 'visu' && this.getEffect(STATUSES.StatusDemiReve)) {
|
||||||
ui.notifications.warn("Le joueur ou le MJ est déja dans les Terres Médianes avec ce personnage ! Visualisation uniquement");
|
ui.notifications.warn("Le joueur ou le MJ est déja dans les Terres Médianes avec ce personnage ! Visualisation uniquement");
|
||||||
mode = "visu"; // bascule le mode en visu automatiquement
|
mode = "visu"; // bascule le mode en visu automatiquement
|
||||||
}
|
}
|
||||||
@@ -3239,18 +3307,18 @@ export class RdDActor extends Actor {
|
|||||||
title: 'Ne pas utiliser les automatisation de combat',
|
title: 'Ne pas utiliser les automatisation de combat',
|
||||||
buttonLabel: "Pas d'automatisation",
|
buttonLabel: "Pas d'automatisation",
|
||||||
onAction: async () => {
|
onAction: async () => {
|
||||||
this.rollCompetence(arme.system.competence, {tryTarget: false})
|
this.rollCompetence(arme.system.competence, { tryTarget: false })
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Targets.selectOneToken(target => {
|
Targets.selectOneToken(target => {
|
||||||
if (Targets.isTargetEntite(target)){
|
if (Targets.isTargetEntite(target)) {
|
||||||
ui.notifications.warn(`Vous ne pouvez pas attaquer une entité non incarnée avec votre ${arme.name}!!!!`);
|
ui.notifications.warn(`Vous ne pouvez pas attaquer une entité non incarnée avec votre ${arme.name}!!!!`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const competence = this.getCompetence(arme.system.competence)
|
const competence = this.getCompetence(arme.system.competence)
|
||||||
if (competence.system.ispossession) {
|
if (competence.system.ispossession) {
|
||||||
return RdDPossession.onAttaquePossession(target, this, competence);
|
return RdDPossession.onAttaquePossession(target, this, competence);
|
||||||
@@ -3369,12 +3437,12 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
async validerEncaissement(rollData, show) {
|
async validerEncaissement(rollData, show) {
|
||||||
if (ReglesOptionelles.isUsing('validation-encaissement-gr') && !game.user.isGM) {
|
if (ReglesOptionelles.isUsing('validation-encaissement-gr') && !game.user.isGM) {
|
||||||
RdDActor.remoteActorCall({
|
RdDActor.remoteActorCall({
|
||||||
actorId: this.id,
|
actorId: this.id,
|
||||||
method: 'validerEncaissement',
|
method: 'validerEncaissement',
|
||||||
args: [rollData, show]
|
args: [rollData, show]
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const armure = await this.computeArmure(rollData);
|
const armure = await this.computeArmure(rollData);
|
||||||
if (ReglesOptionelles.isUsing('validation-encaissement-gr')) {
|
if (ReglesOptionelles.isUsing('validation-encaissement-gr')) {
|
||||||
@@ -3854,7 +3922,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
addSubActeur(subActor) {
|
addSubActeur(subActor) {
|
||||||
if(subActor?.id == this.id){
|
if (subActor?.id == this.id) {
|
||||||
ui.notifications.warn("Vous ne pouvez pas attacher un acteur à lui même")
|
ui.notifications.warn("Vous ne pouvez pas attacher un acteur à lui même")
|
||||||
}
|
}
|
||||||
else if (!subActor?.isOwner) {
|
else if (!subActor?.isOwner) {
|
||||||
@@ -4081,10 +4149,10 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
console.log("setEffect", statusId, status)
|
console.log("setEffect", statusId, status)
|
||||||
const effect = this.getEffect(statusId);
|
const effect = this.getEffect(statusId);
|
||||||
if (!status && effect){
|
if (!status && effect) {
|
||||||
await this.deleteEmbeddedDocuments('ActiveEffect', [effect.id]);
|
await this.deleteEmbeddedDocuments('ActiveEffect', [effect.id]);
|
||||||
}
|
}
|
||||||
if (status && !effect ) {
|
if (status && !effect) {
|
||||||
await this.createEmbeddedDocuments("ActiveEffect", [StatusEffects.status(statusId)]);
|
await this.createEmbeddedDocuments("ActiveEffect", [StatusEffects.status(statusId)]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4110,7 +4178,6 @@ export class RdDActor extends Actor {
|
|||||||
await this.checkCompetenceXP(item.name, item.system.xp);
|
await this.checkCompetenceXP(item.name, item.system.xp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async onCreateItem(item, options, id) {
|
async onCreateItem(item, options, id) {
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
@@ -4121,6 +4188,7 @@ export class RdDActor extends Actor {
|
|||||||
await this.onCreateOwnedDraconique(item, options, id);
|
await this.onCreateOwnedDraconique(item, options, id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
await item.onCreateDecoupeComestible(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
async onDeleteItem(item, options, id) {
|
async onDeleteItem(item, options, id) {
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ import { Misc } from "./misc.js";
|
|||||||
|
|
||||||
export class DialogConsommer extends Dialog {
|
export class DialogConsommer extends Dialog {
|
||||||
|
|
||||||
static async create(actor, item, onActionItem = async ()=>{}) {
|
static async create(actor, item, onActionItem = async () => { }) {
|
||||||
const consommerData = DialogConsommer.prepareData(actor, item);
|
const consommerData = DialogConsommer.prepareData(actor, item);
|
||||||
const html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-item-consommer.html', consommerData);
|
const html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-item-consommer.html', consommerData);
|
||||||
return new DialogConsommer(actor, item, consommerData, html, onActionItem)
|
return new DialogConsommer(actor, item, consommerData, html, onActionItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(actor, item, consommerData, html, onActionItem = async ()=>{}) {
|
constructor(actor, item, consommerData, html, onActionItem = async () => { }) {
|
||||||
const options = { classes: ["dialogconsommer"], width: 350, height: 'fit-content', 'z-index': 99999 };
|
const options = { classes: ["dialogconsommer"], width: 350, height: 'fit-content', 'z-index': 99999 };
|
||||||
let conf = {
|
let conf = {
|
||||||
title: consommerData.title,
|
title: consommerData.title,
|
||||||
@@ -18,7 +18,8 @@ export class DialogConsommer extends Dialog {
|
|||||||
[consommerData.buttonName]: {
|
[consommerData.buttonName]: {
|
||||||
label: consommerData.buttonName, callback: async it => {
|
label: consommerData.buttonName, callback: async it => {
|
||||||
await this.onConsommer(it);
|
await this.onConsommer(it);
|
||||||
await onActionItem();}
|
await onActionItem();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -38,9 +39,8 @@ export class DialogConsommer extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static prepareData(actor, item) {
|
static prepareData(actor, item) {
|
||||||
item = duplicate(item);
|
|
||||||
let consommerData = {
|
let consommerData = {
|
||||||
item: item,
|
item: duplicate(item),
|
||||||
cuisine: actor.getCompetence('cuisine'),
|
cuisine: actor.getCompetence('cuisine'),
|
||||||
choix: {
|
choix: {
|
||||||
doses: 1,
|
doses: 1,
|
||||||
@@ -48,25 +48,47 @@ export class DialogConsommer extends Dialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
|
case 'herbe': case 'faune':
|
||||||
|
consommerData.title = 'Manger une portion crue: ';
|
||||||
|
consommerData.buttonName = "Manger";
|
||||||
|
break;
|
||||||
case 'nourritureboisson':
|
case 'nourritureboisson':
|
||||||
consommerData.title = item.system.boisson ? `${item.name}: boire une dose` : `${item.name}: manger une portion`;
|
consommerData.title = item.system.boisson ? 'Boire une dose: ' : 'Manger une portion: ';
|
||||||
consommerData.buttonName = item.system.boisson ? "Boire" : "Manger";
|
consommerData.buttonName = item.system.boisson ? "Boire" : "Manger";
|
||||||
break;
|
break;
|
||||||
case 'potion':
|
case 'potion':
|
||||||
consommerData.title = `${item.name}: boire la potion`;
|
consommerData.title = 'Boire la potion: ';
|
||||||
consommerData.buttonName = "Boire";
|
consommerData.buttonName = "Boire";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
DialogConsommer.calculDoses(consommerData, consommerData.choix.doses)
|
consommerData.title += item.name;
|
||||||
|
DialogConsommer.calculDoses(consommerData, item)
|
||||||
return consommerData;
|
return consommerData;
|
||||||
}
|
}
|
||||||
|
|
||||||
static calculDoses(consommer) {
|
static calculDoses(consommer, item) {
|
||||||
const doses = consommer.choix.doses;
|
const doses = consommer.choix.doses;
|
||||||
consommer.totalSust = Misc.keepDecimals(doses * (consommer.item.system.sust ?? 0), 2);
|
switch (item.type) {
|
||||||
consommer.totalDesaltere = consommer.item.system.boisson
|
case 'herbe': case 'faune':
|
||||||
? Misc.keepDecimals(doses * (consommer.item.system.desaltere ?? 0), 2)
|
consommer.totalSust = doses;
|
||||||
: 0;
|
consommer.totalDesaltere = 0;
|
||||||
|
consommer.choix.sust = 1;
|
||||||
|
consommer.choix.quantite = 0;
|
||||||
|
consommer.choix.encombrement = Misc.keepDecimals(consommer.item.system.encombrement / item.system.sust, 2);
|
||||||
|
return;
|
||||||
|
case 'nourritureboisson':
|
||||||
|
consommer.choix.sust = consommer.item.system.sust;
|
||||||
|
consommer.choix.quantite = doses;
|
||||||
|
consommer.choix.encombrement = 0
|
||||||
|
consommer.totalSust = Misc.keepDecimals(doses * (consommer.item.system.sust ?? 0), 2);
|
||||||
|
consommer.totalDesaltere = consommer.item.system.boisson
|
||||||
|
? Misc.keepDecimals(doses * (consommer.item.system.desaltere ?? 0), 2)
|
||||||
|
: 0;
|
||||||
|
break;
|
||||||
|
case 'potion':
|
||||||
|
consommer.totalSust = 0
|
||||||
|
consommer.totalDesaltere = 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +106,7 @@ export class DialogConsommer extends Dialog {
|
|||||||
|
|
||||||
selectDoses(event) {
|
selectDoses(event) {
|
||||||
this.consommerData.choix.doses = Number(event.currentTarget.value);
|
this.consommerData.choix.doses = Number(event.currentTarget.value);
|
||||||
DialogConsommer.calculDoses(this.consommerData);
|
DialogConsommer.calculDoses(this.consommerData, this.item);
|
||||||
$(".total-sust").text(this.consommerData.totalSust);
|
$(".total-sust").text(this.consommerData.totalSust);
|
||||||
$(".total-desaltere").text(this.consommerData.totalDesaltere);
|
$(".total-desaltere").text(this.consommerData.totalDesaltere);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,29 @@
|
|||||||
import { SYSTEM_RDD } from "./constants.js";
|
import { 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 { CompendiumTableHelpers, SystemCompendiums, CompendiumTable } from "./settings/system-compendiums.js";
|
import { CompendiumTableHelpers, CompendiumTable } from "./settings/system-compendiums.js";
|
||||||
|
|
||||||
const RARETES = [
|
const RARETES = [
|
||||||
{ name: 'Commune', frequence: 54, min: 27, max: 108 },
|
{ name: 'Commune', frequence: 54, min: 27, max: 108 },
|
||||||
{ name: 'Frequente', frequence: 18, min: 9, max: 36 },
|
{ name: 'Frequente', frequence: 18, min: 9, max: 36 },
|
||||||
{ name: 'Rare', frequence: 6, min: 3, max: 12 },
|
{ name: 'Rare', frequence: 6, min: 3, max: 12 },
|
||||||
{ name: 'Rarissime', frequence: 2, min: 1, max: 4 }]
|
{ name: 'Rarissime', frequence: 2, min: 1, max: 4 }]
|
||||||
|
const DEFAULT_RARETE = 1;
|
||||||
|
|
||||||
const SETTINGS_LISTE_MILIEUX = "liste-milieux";
|
const SETTINGS_LISTE_MILIEUX = "liste-milieux";
|
||||||
const MILIEUX = [
|
const MILIEUX = [
|
||||||
"Collines",
|
"Collines",
|
||||||
|
"Cours d'eau",
|
||||||
"Déserts",
|
"Déserts",
|
||||||
"Désolations",
|
|
||||||
"Forêts",
|
"Forêts",
|
||||||
"Forêts Tropicales",
|
|
||||||
"Marais",
|
"Marais",
|
||||||
"Milieux Aquatiques",
|
"Maritimes",
|
||||||
"Milieux Maritimes",
|
|
||||||
"Montagnes",
|
"Montagnes",
|
||||||
"Plaines",
|
"Plaines",
|
||||||
"Sous-Sols",
|
"Sous-sols"
|
||||||
]
|
]
|
||||||
const ITEM_ENVIRONNEMENT_TYPES = [
|
const ITEM_ENVIRONNEMENT_TYPES = [
|
||||||
'herbe', 'ingredient'
|
'herbe', 'ingredient', 'faune'
|
||||||
]
|
]
|
||||||
|
|
||||||
export class Environnement {
|
export class Environnement {
|
||||||
@@ -46,7 +45,7 @@ export class Environnement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static getRarete(name = undefined) {
|
static getRarete(name = undefined) {
|
||||||
return RARETES.find(it => it.name == name) ?? RARETES[0];
|
return RARETES.find(it => it.name == name) ?? RARETES[DEFAULT_RARETE];
|
||||||
}
|
}
|
||||||
|
|
||||||
static getFrequenceRarete(rarete, field = undefined) {
|
static getFrequenceRarete(rarete, field = undefined) {
|
||||||
@@ -55,25 +54,45 @@ export class Environnement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async milieux() {
|
async milieux() {
|
||||||
const milieux = new Set(this.getMilieuxSettings());
|
return Object.values(await this.mapMilieux());
|
||||||
const elements = await this.getElements(it => 1, it => ITEM_ENVIRONNEMENT_TYPES.includes(it.type));
|
}
|
||||||
elements.forEach(it => it.system.environnement.forEach(env => milieux.add(env.milieu)))
|
|
||||||
return [...milieux].filter(env => env);
|
async mapMilieux() {
|
||||||
|
const compendiumItems = await this.getElements(it => 1, it => ITEM_ENVIRONNEMENT_TYPES.includes(it.type));
|
||||||
|
return Misc.indexLowercase(this.getMilieuxSettings().concat(Environnement.listMilieux(compendiumItems)));
|
||||||
|
}
|
||||||
|
|
||||||
|
static listMilieux(items) {
|
||||||
|
return Misc.concat(items.map(it => Environnement.$itemToMilieux(it).filter(m => m)));
|
||||||
|
}
|
||||||
|
|
||||||
|
async autresMilieux(item) {
|
||||||
|
const mapMilieux = await this.mapMilieux();
|
||||||
|
const milieuxExistants = Environnement.$itemToMilieux(item).map(it => Grammar.toLowerCaseNoAccent(it));
|
||||||
|
return Object.keys(mapMilieux)
|
||||||
|
.filter(it => !milieuxExistants.includes(it))
|
||||||
|
.map(it => mapMilieux[it]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static $itemToMilieux(item) {
|
||||||
|
return item.system.environnement.map(env => env.milieu);
|
||||||
}
|
}
|
||||||
|
|
||||||
getMilieuxSettings() {
|
getMilieuxSettings() {
|
||||||
return game.settings.get(SYSTEM_RDD, SETTINGS_LISTE_MILIEUX).split(',');
|
return game.settings.get(SYSTEM_RDD, SETTINGS_LISTE_MILIEUX).split(',').map(it => it.trim()).filter(it => it != '');
|
||||||
}
|
}
|
||||||
|
|
||||||
async findEnvironnementsLike(search) {
|
async findEnvironnementsLike(search) {
|
||||||
const milieux = (await this.milieux()).filter(it => Grammar.includesLowerCaseNoAccent(it, search));
|
const milieux = await this.mapMilieux();
|
||||||
if (milieux.length > 1){
|
const searchLower = Grammar.toLowerCaseNoAccent(search);
|
||||||
const milieuExact = milieux.find(it => Grammar.equalsInsensitive(it, search));
|
const keys = Object.keys(milieux).filter(it => it.includes(searchLower));
|
||||||
|
if (keys.length > 1) {
|
||||||
|
const milieuExact = milieux[searchLower];
|
||||||
if (milieuExact) {
|
if (milieuExact) {
|
||||||
return [milieuExact];
|
return [milieuExact];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return milieux;
|
return keys.map(k => milieux[k]);
|
||||||
}
|
}
|
||||||
|
|
||||||
async searchToChatMessage(milieux, typeName) {
|
async searchToChatMessage(milieux, typeName) {
|
||||||
@@ -107,22 +126,12 @@ export class Environnement {
|
|||||||
|
|
||||||
export class EnvironmentSheetHelper {
|
export class EnvironmentSheetHelper {
|
||||||
|
|
||||||
static defaultOptions(defaultOptions, type) {
|
static defaultOptions(defaultOptions) {
|
||||||
return mergeObject(defaultOptions, {
|
return mergeObject(defaultOptions, {
|
||||||
classes: ["rdd", "sheet", "item"],
|
|
||||||
template: `systems/foundryvtt-reve-de-dragon/templates/item-${type}-sheet.html`,
|
|
||||||
width: 500,
|
|
||||||
height: 600,
|
|
||||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "informations" }]
|
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "informations" }]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static getHeaderButtons(sheet, buttons) {
|
|
||||||
buttons.unshift({ class: "post", icon: "fas fa-comment", onclick: ev => sheet.item.postItem() });
|
|
||||||
return buttons;
|
|
||||||
}
|
|
||||||
|
|
||||||
static setPosition(sheet, superPosition) {
|
static setPosition(sheet, superPosition) {
|
||||||
const position = superPosition;
|
const position = superPosition;
|
||||||
const sheetHeader = sheet.element.find(".sheet-header");
|
const sheetHeader = sheet.element.find(".sheet-header");
|
||||||
@@ -132,40 +141,41 @@ export class EnvironmentSheetHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async getData(sheet) {
|
static async getData(sheet, formData) {
|
||||||
const formData = duplicate(sheet.item);
|
return mergeObject(formData, {
|
||||||
const milieux = await game.system.rdd.environnement.milieux();
|
milieux: await game.system.rdd.environnement.autresMilieux(sheet.item)
|
||||||
const milieuxDisponibles = milieux.filter(it => !sheet.item.system.environnement.find(e => e.milieu == it));
|
|
||||||
mergeObject(formData, {
|
|
||||||
title: formData.name,
|
|
||||||
isGM: game.user.isGM,
|
|
||||||
owner: sheet.actor?.isOwner,
|
|
||||||
isOwned: sheet.actor ? true : false,
|
|
||||||
actorId: sheet.actor?.id,
|
|
||||||
editable: sheet.isEditable,
|
|
||||||
cssClass: sheet.isEditable ? "editable" : "locked",
|
|
||||||
milieux: milieuxDisponibles
|
|
||||||
});
|
});
|
||||||
return formData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static activateListeners(sheet, html) {
|
static activateListeners(sheet, html) {
|
||||||
if (!sheet.options.editable) return;
|
if (!sheet.options.editable) return;
|
||||||
|
|
||||||
|
html.find("input.input-selection-milieu").keypress(event => {
|
||||||
|
if (event.keyCode == '13') {
|
||||||
|
EnvironmentSheetHelper.onAddMilieu(html, sheet, event);
|
||||||
|
}
|
||||||
|
event.stopPropagation();
|
||||||
|
})
|
||||||
html.find("a.milieu-add").click(event => EnvironmentSheetHelper.onAddMilieu(html, sheet, event));
|
html.find("a.milieu-add").click(event => EnvironmentSheetHelper.onAddMilieu(html, sheet, event));
|
||||||
html.find("div.environnement-milieu a.milieu-delete").click(event => EnvironmentSheetHelper.onDeleteMilieu(sheet, event));
|
html.find("div.environnement-milieu a.milieu-delete").click(event => EnvironmentSheetHelper.onDeleteMilieu(sheet, event));
|
||||||
html.find("div.environnement-milieu select.environnement-rarete").change(event => EnvironmentSheetHelper.onChange(sheet, event,
|
html.find("div.environnement-milieu select.environnement-rarete").change(event => EnvironmentSheetHelper.onChange(sheet, event,
|
||||||
(updated) => {
|
updated => EnvironmentSheetHelper.$changeRarete(event, updated)));
|
||||||
const name = $(event.currentTarget).val();
|
|
||||||
const rarete = Environnement.getRarete(name);
|
|
||||||
updated.rarete = rarete.name;
|
|
||||||
updated.frequence = Math.min(
|
|
||||||
Math.max(rarete.min, updated.frequence ?? rarete.frequence),
|
|
||||||
rarete.max);
|
|
||||||
}));
|
|
||||||
html.find("div.environnement-milieu input[name='environnement-frequence']").change(event => EnvironmentSheetHelper.onChange(sheet, event,
|
html.find("div.environnement-milieu input[name='environnement-frequence']").change(event => EnvironmentSheetHelper.onChange(sheet, event,
|
||||||
(updated) => {
|
updated => EnvironmentSheetHelper.$changeFrequence(updated, event)));
|
||||||
updated.frequence = Number($(event.currentTarget).val())
|
}
|
||||||
}));
|
|
||||||
|
static $changeFrequence(updated, event) {
|
||||||
|
updated.frequence = Number($(event.currentTarget).val());
|
||||||
|
}
|
||||||
|
|
||||||
|
static $changeRarete(event, updated) {
|
||||||
|
const name = $(event.currentTarget).val();
|
||||||
|
const rarete = Environnement.getRarete(name);
|
||||||
|
updated.rarete = rarete.name;
|
||||||
|
updated.frequence = rarete.frequence;
|
||||||
|
// updated.frequence = Math.min(
|
||||||
|
// Math.max(rarete.min, updated.frequence ?? rarete.frequence),
|
||||||
|
// rarete.max);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async onAddMilieu(html, sheet, event) {
|
static async onAddMilieu(html, sheet, event) {
|
||||||
@@ -187,7 +197,7 @@ export class EnvironmentSheetHelper {
|
|||||||
|
|
||||||
static async onDeleteMilieu(sheet, event) {
|
static async onDeleteMilieu(sheet, event) {
|
||||||
const milieu = EnvironmentSheetHelper.$getEventMilieu(event);
|
const milieu = EnvironmentSheetHelper.$getEventMilieu(event);
|
||||||
if (milieu) {
|
if (milieu != undefined) {
|
||||||
const newList = sheet.item.system.environnement.filter(it => it.milieu != milieu)
|
const newList = sheet.item.system.environnement.filter(it => it.milieu != milieu)
|
||||||
.sort(Misc.ascending(it => it.milieu));
|
.sort(Misc.ascending(it => it.milieu));
|
||||||
await sheet.item.update({ 'system.environnement': newList });
|
await sheet.item.update({ 'system.environnement': newList });
|
||||||
@@ -210,13 +220,4 @@ export class EnvironmentSheetHelper {
|
|||||||
return $(event.currentTarget)?.parents("div.environnement-milieu").data("milieu");
|
return $(event.currentTarget)?.parents("div.environnement-milieu").data("milieu");
|
||||||
}
|
}
|
||||||
|
|
||||||
static template(itemType) {
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
return `systems/foundryvtt-reve-de-dragon/templates/item-${itemType}-sheet.html`;
|
|
||||||
}
|
|
||||||
|
|
||||||
static title(item) {
|
|
||||||
return Misc.typeName('Item', item.type) + ': ' + item.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -281,4 +281,36 @@ export class RdDItemCompetence extends Item {
|
|||||||
return duplicate(limitesArchetypes);
|
return duplicate(limitesArchetypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static triVisible(competences) {
|
||||||
|
return competences.filter(it => it.system.isVisible)
|
||||||
|
.sort((a, b) => RdDItemCompetence.compare(a,b))
|
||||||
|
}
|
||||||
|
|
||||||
|
static $positionTri(comp) {
|
||||||
|
if (comp.name.startsWith("Survie")) {
|
||||||
|
if (comp.name.includes("Cité")) return 0;
|
||||||
|
if (comp.name.includes("Extérieur")) return 1;
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if (comp.system.categorie.startsWith("melee")) {
|
||||||
|
if (comp.name.includes("Corps")) return 0;
|
||||||
|
if (comp.name.includes("Dague")) return 1;
|
||||||
|
if (comp.name.includes("Esquive")) return 2;
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
if (comp.system.categorie.startsWith("draconic")) {
|
||||||
|
if (comp.name.includes("Oniros")) return 0;
|
||||||
|
if (comp.name.includes("Hypnos")) return 1;
|
||||||
|
if (comp.name.includes("Narcos")) return 2;
|
||||||
|
if (comp.name.includes("Thanatos")) return 3;
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static compare(a,b) {
|
||||||
|
const diff = RdDItemCompetence.$positionTri(a) - RdDItemCompetence.$positionTri(b);
|
||||||
|
return diff ? diff : a.name.localeCompare(b.name);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
59
module/item-conteneur-sheet.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import { RdDItemSheet } from "./item-sheet.js";
|
||||||
|
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
|
||||||
|
import { RdDUtility } from "./rdd-utility.js";
|
||||||
|
|
||||||
|
export class RdDConteneurItemSheet extends RdDItemSheet {
|
||||||
|
|
||||||
|
static get ITEM_TYPE() { return "conteneur" };
|
||||||
|
|
||||||
|
async getData() {
|
||||||
|
const formData = await super.getData();
|
||||||
|
if (this.actor) {
|
||||||
|
this.prepareConteneurData(formData);
|
||||||
|
}
|
||||||
|
return formData;
|
||||||
|
}
|
||||||
|
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
|
html.find('.conteneur-name a').click(async event => {
|
||||||
|
RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
|
||||||
|
this.render(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
prepareConteneurData(formData) {
|
||||||
|
RdDUtility.filterEquipementParType(formData, this.actor.itemTypes);
|
||||||
|
|
||||||
|
this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets);
|
||||||
|
formData.subItems = formData.conteneurs.find(it => it._id == this.item.id)?.subItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
async _onDragStart(event) {
|
||||||
|
console.log("_onDragStart", event);
|
||||||
|
if (event.target.classList.contains("entity-link")) return;
|
||||||
|
|
||||||
|
const itemId = event.srcElement?.attributes["data-item-id"].value;
|
||||||
|
const item = this.actor.items.get(itemId);
|
||||||
|
// Create drag data
|
||||||
|
const dragData = {
|
||||||
|
actorId: this.actor.id,
|
||||||
|
type: "Item",
|
||||||
|
data: item.system
|
||||||
|
};
|
||||||
|
|
||||||
|
event.dataTransfer.setData("text/plain", JSON.stringify(dragData));
|
||||||
|
}
|
||||||
|
|
||||||
|
async _onDropItem(event, dragData) {
|
||||||
|
if (this.actor) {
|
||||||
|
const dropParams = RdDSheetUtility.prepareItemDropParameters(this.item.id, this.actor, dragData, this.objetVersConteneur);
|
||||||
|
await this.actor.processDropItem(dropParams);
|
||||||
|
await this.render(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
67
module/item-faune-sheet.js
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
import { EnvironmentSheetHelper } from "./environnement.js";
|
||||||
|
import { RdDItemSheet } from "./item-sheet.js";
|
||||||
|
import { RdDUtility } from "./rdd-utility.js";
|
||||||
|
|
||||||
|
export class RdDFauneItemSheet extends RdDItemSheet {
|
||||||
|
|
||||||
|
static get ITEM_TYPE() { return "faune" };
|
||||||
|
|
||||||
|
static get defaultOptions() {
|
||||||
|
return EnvironmentSheetHelper.defaultOptions(super.defaultOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
setPosition(options = {}) {
|
||||||
|
return EnvironmentSheetHelper.setPosition(this, super.setPosition(options));
|
||||||
|
}
|
||||||
|
|
||||||
|
async getData() {
|
||||||
|
const formData = await super.getData();
|
||||||
|
return await EnvironmentSheetHelper.getData(this, formData);
|
||||||
|
}
|
||||||
|
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
|
EnvironmentSheetHelper.activateListeners(this, html);
|
||||||
|
|
||||||
|
html.find("a.linked-actor-delete").click(event => this.onDeleteLinkedActor());
|
||||||
|
html.find("a.preparer-nourriture").click(event => this.preparerNourriture(event));
|
||||||
|
html.find("a.manger-nourriture").click(event => this.mangerNourriture(event));
|
||||||
|
}
|
||||||
|
|
||||||
|
async _onDropActor(event, dragData) {
|
||||||
|
console.log('faune:dropActor', event, dragData)
|
||||||
|
const linkedActor = fromUuidSync(dragData.uuid);
|
||||||
|
if (linkedActor?.pack) {
|
||||||
|
this.item.update({
|
||||||
|
'system.actor.pack': linkedActor.pack,
|
||||||
|
'system.actor.id': linkedActor._id,
|
||||||
|
'system.actor.name': linkedActor.name
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ui.notifications.warn(`${linkedActor.name} ne provient pas d'un compendium.
|
||||||
|
<br>Choisissez une créature du compendium pour représenter un élément de faune générique`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async onDeleteLinkedActor() {
|
||||||
|
this.item.update({
|
||||||
|
'system.actor.pack': '',
|
||||||
|
'system.actor.id': '',
|
||||||
|
'system.actor.name': ''
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async preparerNourriture(event) {
|
||||||
|
if (this.actor) {
|
||||||
|
await this.actor.preparerNourriture(this.item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async mangerNourriture(event) {
|
||||||
|
if (this.actor) {
|
||||||
|
await this.actor.mangerNourriture(this.item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,45 +1,25 @@
|
|||||||
import { SYSTEM_RDD } from "./constants.js";
|
import { EnvironmentSheetHelper } from "./environnement.js";
|
||||||
import { EnvironmentSheetHelper as EnvironmentItemSheet } from "./environnement.js";
|
import { RdDItemSheet } from "./item-sheet.js";
|
||||||
import { Misc } from "./misc.js";
|
|
||||||
|
|
||||||
const ITEM_TYPE = 'herbe';
|
export class RdDHerbeItemSheet extends RdDItemSheet {
|
||||||
|
|
||||||
export class RdDHerbeItemSheet extends ItemSheet {
|
static get ITEM_TYPE() { return "herbe" };
|
||||||
|
|
||||||
static register() {
|
|
||||||
Items.registerSheet(SYSTEM_RDD, RdDHerbeItemSheet, {
|
|
||||||
label: Misc.typeName('Item', ITEM_TYPE),
|
|
||||||
types: [ITEM_TYPE],
|
|
||||||
makeDefault: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return EnvironmentItemSheet.defaultOptions(super.defaultOptions, ITEM_TYPE);
|
return EnvironmentSheetHelper.defaultOptions(super.defaultOptions);
|
||||||
}
|
|
||||||
|
|
||||||
_getHeaderButtons() {
|
|
||||||
return EnvironmentItemSheet.getHeaderButtons(this, super._getHeaderButtons());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setPosition(options = {}) {
|
setPosition(options = {}) {
|
||||||
return EnvironmentItemSheet.setPosition(this, super.setPosition(options));
|
return EnvironmentSheetHelper.setPosition(this, super.setPosition(options));
|
||||||
}
|
}
|
||||||
|
|
||||||
async getData() {
|
async getData() {
|
||||||
return await EnvironmentItemSheet.getData(this);
|
const formData = await super.getData();
|
||||||
|
return await EnvironmentSheetHelper.getData(this, formData);
|
||||||
}
|
}
|
||||||
|
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
EnvironmentItemSheet.activateListeners(this, html);
|
EnvironmentSheetHelper.activateListeners(this, html);
|
||||||
}
|
|
||||||
|
|
||||||
get template() {
|
|
||||||
return EnvironmentItemSheet.template(this.item.type);
|
|
||||||
}
|
|
||||||
|
|
||||||
get title() {
|
|
||||||
return EnvironmentItemSheet.title(this.item);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,12 @@
|
|||||||
import { SYSTEM_RDD } from "./constants.js";
|
|
||||||
import { EnvironmentSheetHelper } from "./environnement.js";
|
import { EnvironmentSheetHelper } from "./environnement.js";
|
||||||
import { Misc } from "./misc.js";
|
import { RdDItemSheet } from "./item-sheet.js";
|
||||||
|
|
||||||
const ITEM_TYPE = 'ingredient';
|
export class RdDIngredientItemSheet extends RdDItemSheet {
|
||||||
export class RdDIngredientItemSheet extends ItemSheet {
|
|
||||||
|
|
||||||
static register() {
|
static get ITEM_TYPE() { return "ingredient" };
|
||||||
Items.registerSheet(SYSTEM_RDD, RdDIngredientItemSheet, {
|
|
||||||
label: Misc.typeName('Item', ITEM_TYPE),
|
|
||||||
types: [ITEM_TYPE],
|
|
||||||
makeDefault: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return EnvironmentSheetHelper.defaultOptions(super.defaultOptions, ITEM_TYPE);
|
return EnvironmentSheetHelper.defaultOptions(super.defaultOptions);
|
||||||
}
|
|
||||||
|
|
||||||
_getHeaderButtons() {
|
|
||||||
return EnvironmentSheetHelper.getHeaderButtons(this, super._getHeaderButtons());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setPosition(options = {}) {
|
setPosition(options = {}) {
|
||||||
@@ -26,19 +14,12 @@ export class RdDIngredientItemSheet extends ItemSheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getData() {
|
async getData() {
|
||||||
return await EnvironmentSheetHelper.getData(this);
|
const formData = await super.getData();
|
||||||
|
return await EnvironmentSheetHelper.getData(this, formData);
|
||||||
}
|
}
|
||||||
|
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
EnvironmentSheetHelper.activateListeners(this, html);
|
EnvironmentSheetHelper.activateListeners(this, html);
|
||||||
}
|
}
|
||||||
|
|
||||||
get template() {
|
|
||||||
return EnvironmentSheetHelper.template(this.item.type);
|
|
||||||
}
|
|
||||||
|
|
||||||
get title() {
|
|
||||||
return EnvironmentSheetHelper.title(this.item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,16 @@
|
|||||||
import { RdDRencontre } from "./item-rencontre.js";
|
import { RdDRencontre } from "./item-rencontre.js";
|
||||||
|
import { RdDItemSheet } from "./item-sheet.js";
|
||||||
|
|
||||||
/**
|
export class RdDRencontreItemSheet extends RdDItemSheet {
|
||||||
* Item sheet pour configurer les rencontres
|
|
||||||
* @extends {ItemSheet}
|
static get ITEM_TYPE() { return "rencontre" };
|
||||||
*/
|
|
||||||
export class RdDRencontreItemSheet extends ItemSheet {
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return mergeObject(super.defaultOptions, {
|
||||||
classes: ["rdd", "sheet", "item"],
|
|
||||||
template: "systems/foundryvtt-reve-de-dragon/templates/item-rencontre-sheet.html",
|
|
||||||
width: 500,
|
|
||||||
height: 500,
|
|
||||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }]
|
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
_getHeaderButtons() {
|
|
||||||
let buttons = super._getHeaderButtons();
|
|
||||||
buttons.unshift({ class: "post", icon: "fas fa-comment", onclick: ev => this.item.postItem() });
|
|
||||||
return buttons;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
/** @override */
|
||||||
setPosition(options = {}) {
|
setPosition(options = {}) {
|
||||||
@@ -34,7 +21,6 @@ export class RdDRencontreItemSheet extends ItemSheet {
|
|||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const formData = duplicate(this.item);
|
const formData = duplicate(this.item);
|
||||||
@@ -96,13 +82,4 @@ export class RdDRencontreItemSheet extends ItemSheet {
|
|||||||
updates[key] = liste;
|
updates[key] = liste;
|
||||||
this.item.update(updates);
|
this.item.update(updates);
|
||||||
}
|
}
|
||||||
|
|
||||||
get template() {
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
return `systems/foundryvtt-reve-de-dragon/templates/item-rencontre-sheet.html`;
|
|
||||||
}
|
|
||||||
|
|
||||||
get title() {
|
|
||||||
return `Rencontre: ${this.object.name}`;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,30 +9,54 @@ import { ReglesOptionelles } from "./settings/regles-optionelles.js";
|
|||||||
import { SYSTEM_RDD } from "./constants.js";
|
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";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extend the basic ItemSheet with some very simple modifications
|
* Extend the basic ItemSheet for RdD specific items
|
||||||
* @extends {ItemSheet}
|
|
||||||
*/
|
*/
|
||||||
export class RdDItemSheet extends ItemSheet {
|
export class RdDItemSheet extends ItemSheet {
|
||||||
|
|
||||||
|
static get ITEM_TYPE() {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
static defaultTemplate(type) {
|
||||||
|
return type ?
|
||||||
|
`systems/foundryvtt-reve-de-dragon/templates/item-${type}-sheet.html` :
|
||||||
|
"systems/foundryvtt-reve-de-dragon/templates/item-sheet.html";
|
||||||
|
}
|
||||||
|
|
||||||
|
static register(sheetClass) {
|
||||||
|
Items.registerSheet(SYSTEM_RDD, sheetClass, {
|
||||||
|
label: Misc.typeName('Item', sheetClass.ITEM_TYPE),
|
||||||
|
types: [sheetClass.ITEM_TYPE],
|
||||||
|
makeDefault: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return mergeObject(super.defaultOptions, {
|
||||||
classes: [SYSTEM_RDD, "sheet", "item"],
|
classes: [SYSTEM_RDD, "sheet", "item"],
|
||||||
template: "systems/foundryvtt-reve-de-dragon/templates/item-sheet.html",
|
template: RdDItemSheet.defaultTemplate(RdDItemSheet.ITEM_TYPE),
|
||||||
width: 550,
|
width: 550,
|
||||||
height: 550
|
height: 550
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
get template() {
|
||||||
|
return RdDItemSheet.defaultTemplate(this.item.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
get title() {
|
||||||
|
return `${Misc.typeName('Item', this.item.type)}: ${this.item.name}`;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_getHeaderButtons() {
|
_getHeaderButtons() {
|
||||||
let buttons = super._getHeaderButtons();
|
let buttons = super._getHeaderButtons();
|
||||||
// Add "Post to chat" button
|
if (this.item.isInventaire() && this.item.isVideOuNonConteneur()) {
|
||||||
// We previously restricted this to GM and editable items only. If you ever find this comment because it broke something: eh, sorry!
|
|
||||||
if ("cout" in this.item.system && this.item.isVideOuNonConteneur()) {
|
|
||||||
buttons.unshift({
|
buttons.unshift({
|
||||||
class: "vendre",
|
class: "vendre",
|
||||||
icon: "fas fa-comments-dollar",
|
icon: "fas fa-comments-dollar",
|
||||||
@@ -69,19 +93,14 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
system: this.item.system,
|
system: this.item.system,
|
||||||
isGM: game.user.isGM,
|
isGM: game.user.isGM,
|
||||||
actorId: this.actor?.id,
|
actorId: this.actor?.id,
|
||||||
|
isOwned: this.actor ? true : false,
|
||||||
owner: this.item.isOwner,
|
owner: this.item.isOwner,
|
||||||
editable: this.isEditable,
|
editable: this.isEditable,
|
||||||
cssClass: this.isEditable ? "editable" : "locked",
|
cssClass: this.isEditable ? "editable" : "locked",
|
||||||
isSoins: false,
|
isSoins: false,
|
||||||
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
|
description: await TextEditor.enrichHTML(this.item.system.description, { async: true }),
|
||||||
descriptionmj: await TextEditor.enrichHTML(this.object.system.descriptionmj, {async: true})
|
descriptionmj: await TextEditor.enrichHTML(this.item.system.descriptionmj, { async: true }),
|
||||||
|
isComestible: this.item.isComestible()
|
||||||
}
|
|
||||||
if (this.actor) {
|
|
||||||
formData.isOwned = true;
|
|
||||||
if (this.item.type == 'conteneur') {
|
|
||||||
this.prepareConteneurData(formData);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const competences = await SystemCompendiums.getCompetences(this.actor?.type);
|
const competences = await SystemCompendiums.getCompetences(this.actor?.type);
|
||||||
@@ -98,18 +117,18 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
formData.competences = competences.filter(it => RdDItemCompetence.isDraconic(it));
|
formData.competences = competences.filter(it => RdDItemCompetence.isDraconic(it));
|
||||||
}
|
}
|
||||||
if (this.item.type == 'recettecuisine') {
|
if (this.item.type == 'recettecuisine') {
|
||||||
formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, {async: true})
|
formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, { async: true })
|
||||||
}
|
}
|
||||||
if (this.item.type == 'extraitpoetique') {
|
if (this.item.type == 'extraitpoetique') {
|
||||||
formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, {async: true})
|
formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, { async: true })
|
||||||
formData.texte = await TextEditor.enrichHTML(this.object.system.texte, {async: true})
|
formData.texte = await TextEditor.enrichHTML(this.object.system.texte, { async: true })
|
||||||
}
|
}
|
||||||
if (this.item.type == 'recettealchimique') {
|
if (this.item.type == 'recettealchimique') {
|
||||||
RdDAlchimie.processManipulation(this.item, this.actor && this.actor.id);
|
RdDAlchimie.processManipulation(this.item, this.actor && this.actor.id);
|
||||||
formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, {async: true})
|
formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, { async: true })
|
||||||
formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, {async: true})
|
formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, { async: true })
|
||||||
formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, {async: true})
|
formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, { async: true })
|
||||||
formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, {async: true})
|
formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, { async: true })
|
||||||
}
|
}
|
||||||
if (this.item.type == 'gemme') {
|
if (this.item.type == 'gemme') {
|
||||||
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
|
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
|
||||||
@@ -134,25 +153,10 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
return formData;
|
return formData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
prepareConteneurData(formData) {
|
|
||||||
RdDUtility.filterEquipementParType(formData, this.actor.itemTypes);
|
|
||||||
|
|
||||||
this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets);
|
|
||||||
formData.subItems = formData.conteneurs.find(it => it._id == this.item.id)?.subItems;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
/** @override */
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
|
|
||||||
if (this.item.type == 'conteneur') {
|
|
||||||
this.form.ondragstart = (event) => this._onDragStart(event);
|
|
||||||
this.form.ondrop = (event) => this._onDrop(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
let itemSheetDialog = this;
|
let itemSheetDialog = this;
|
||||||
|
|
||||||
HtmlUtility._showControlWhen($(".item-cout"), ReglesOptionelles.isUsing('afficher-prix-joueurs') || game.user.isGM || !this.item.isOwned);
|
HtmlUtility._showControlWhen($(".item-cout"), ReglesOptionelles.isUsing('afficher-prix-joueurs') || game.user.isGM || !this.item.isOwned);
|
||||||
@@ -160,6 +164,8 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
// 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.form.ondragstart = (event) => this._onDragStart(event);
|
||||||
|
this.form.ondrop = (event) => this._onDrop(event);
|
||||||
|
|
||||||
// Select competence categorie
|
// Select competence categorie
|
||||||
html.find(".categorie").change(event => this._onSelectCategorie(event));
|
html.find(".categorie").change(event => this._onSelectCategorie(event));
|
||||||
@@ -176,64 +182,34 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
this.dateUpdated = game.system.rdd.calendrier.getIndexFromDate(jour, mois);
|
this.dateUpdated = game.system.rdd.calendrier.getIndexFromDate(jour, mois);
|
||||||
});
|
});
|
||||||
|
|
||||||
html.find('.creer-tache-livre').click((event) => {
|
html.find('.creer-tache-livre').click((event) => this._getEventActor(event).creerTacheDepuisLivre(this.item));
|
||||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
html.find('.consommer-potion').click((event) => this._getEventActor(event).consommerPotion(this.item));
|
||||||
let actor = game.actors.get(actorId);
|
html.find('.creer-potion-base').click((event) => this._getEventActor(event).dialogFabriquerPotion(this.item));
|
||||||
actor.creerTacheDepuisLivre(this.item);
|
|
||||||
});
|
|
||||||
html.find('.consommer-potion').click((event) => {
|
|
||||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
|
||||||
let actor = game.actors.get(actorId);
|
|
||||||
actor.consommerPotion(this.item);
|
|
||||||
});
|
|
||||||
html.find('.creer-potion-base').click((event) => {
|
|
||||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
|
||||||
let actor = game.actors.get(actorId);
|
|
||||||
actor.dialogFabriquerPotion(this.item);
|
|
||||||
});
|
|
||||||
|
|
||||||
html.find('.alchimie-tache a').click((event) => {
|
html.find('.alchimie-tache a').click((event) => {
|
||||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
let actor = this._getEventActor(event);
|
||||||
let recetteId = event.currentTarget.attributes['data-recette-id'].value;
|
|
||||||
let tacheName = event.currentTarget.attributes['data-alchimie-tache'].value;
|
|
||||||
let tacheData = event.currentTarget.attributes['data-alchimie-data'].value;
|
|
||||||
let actor = game.actors.get(actorId);
|
|
||||||
if (actor) {
|
if (actor) {
|
||||||
|
let recetteId = event.currentTarget.attributes['data-recette-id'].value;
|
||||||
|
let tacheName = event.currentTarget.attributes['data-alchimie-tache'].value;
|
||||||
|
let tacheData = event.currentTarget.attributes['data-alchimie-data'].value;
|
||||||
actor.effectuerTacheAlchimie(recetteId, tacheName, tacheData);
|
actor.effectuerTacheAlchimie(recetteId, tacheName, tacheData);
|
||||||
} else {
|
} else {
|
||||||
ui.notifications.info("Impossible trouver un acteur pour réaliser cette tache Alchimique.");
|
ui.notifications.info("Impossible trouver un acteur pour réaliser cette tache Alchimique.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
html.find('.item-split').click(async event => {
|
html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, async () => itemSheetDialog.render(true)));
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true));
|
||||||
await RdDSheetUtility.splitItem(item, this.actor, async () => itemSheetDialog.render(true));
|
html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor)));
|
||||||
});
|
html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente());
|
||||||
html.find('.item-edit').click(async event => {
|
html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem());
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => itemSheetDialog.render(true)));
|
||||||
item.sheet.render(true);
|
}
|
||||||
});
|
|
||||||
html.find('.item-delete').click(async event => {
|
_getEventActor(event) {
|
||||||
const li = RdDSheetUtility.getEventElement(event);
|
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
||||||
const item = this.actor.getObjet(li.data("item-id"));
|
let actor = game.actors.get(actorId);
|
||||||
RdDUtility.confirmerSuppressionItem(this, item, li);
|
return actor;
|
||||||
});
|
|
||||||
html.find('.item-vendre').click(async event => {
|
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
|
||||||
item?.proposerVente();
|
|
||||||
});
|
|
||||||
html.find('.item-montrer').click(async event => {
|
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
|
||||||
item?.postItem();
|
|
||||||
});
|
|
||||||
html.find('.item-action').click(async event => {
|
|
||||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
|
||||||
this.actor.actionItem(item, async () => itemSheetDialog.render(true));
|
|
||||||
});
|
|
||||||
html.find('.conteneur-name a').click(async event => {
|
|
||||||
RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
|
|
||||||
this.render(true);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -248,65 +224,51 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
get template() {
|
|
||||||
let type = this.item.type
|
|
||||||
return `systems/foundryvtt-reve-de-dragon/templates/item-${type}-sheet.html`;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
_updateObject(event, formData) {
|
_updateObject(event, formData) {
|
||||||
// Données de bonus de cases ?
|
if (this.item.type == 'sort') {
|
||||||
formData['system.bonuscase'] = RdDItemSort.buildBonusCaseStringFromFormData(formData.bonusValue, formData.caseValue);
|
// Données de bonus de cases ?
|
||||||
|
formData['system.bonuscase'] = RdDItemSort.buildBonusCaseStringFromFormData(formData.bonusValue, formData.caseValue);
|
||||||
|
}
|
||||||
|
|
||||||
return this.item.update(formData);
|
return this.item.update(formData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
async _onDragStart(event) {
|
async _onDragStart(event) {
|
||||||
console.log("_onDragStart", event);
|
|
||||||
if (event.target.classList.contains("entity-link")) return;
|
|
||||||
|
|
||||||
const itemId = event.srcElement?.attributes["data-item-id"].value;
|
|
||||||
const item = this.actor.items.get(itemId);
|
|
||||||
// Create drag data
|
|
||||||
const dragData = {
|
|
||||||
actorId: this.actor.id,
|
|
||||||
type: "Item",
|
|
||||||
data: item.system
|
|
||||||
};
|
|
||||||
|
|
||||||
event.dataTransfer.setData("text/plain", JSON.stringify(dragData));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async _onDrop(event) {
|
async _onDrop(event) {
|
||||||
// Try to extract the dragData
|
// Try to extract the dragData
|
||||||
let dragData;
|
let dragData = RdDItemSheet.$extractDragData(event);
|
||||||
try {
|
if (!dragData) return false;
|
||||||
dragData = JSON.parse(event.dataTransfer.getData('text/plain'));
|
|
||||||
} catch (err) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const allowed = Hooks.call("dropActorSheetData", this.actor, this, dragData);
|
const allowed = Hooks.call("dropActorSheetData", this.actor, this, dragData);
|
||||||
if (allowed === false) return;
|
if (allowed === false) return false;
|
||||||
|
|
||||||
// Handle different dragData types
|
// Handle different dragData types
|
||||||
switch (dragData.type) {
|
switch (dragData.type) {
|
||||||
case "Item":
|
case "Item":
|
||||||
return this._onDropItem(event, dragData);
|
return this._onDropItem(event, dragData);
|
||||||
|
case "Actor":
|
||||||
|
return this._onDropActor(event, dragData);
|
||||||
}
|
}
|
||||||
return super._onDrop(event);
|
return super._onDrop(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
static $extractDragData(event) {
|
||||||
async _onDropItem(event, dragData) {
|
try {
|
||||||
if (this.actor) {
|
const eventData = event?.dataTransfer?.getData('text/plain');
|
||||||
const dropParams = RdDSheetUtility.prepareItemDropParameters(this.item.id, this.actor.id, dragData, this.objetVersConteneur);
|
if (eventData) {
|
||||||
await this.actor.processDropItem(dropParams);
|
return JSON.parse(eventData);
|
||||||
await this.render(true);
|
}
|
||||||
}
|
} catch (err) { }
|
||||||
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async _onDropItem(event, dragData) {
|
||||||
|
}
|
||||||
|
|
||||||
|
async _onDropActor(event, dragData) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,14 @@
|
|||||||
import { SYSTEM_RDD } from "./constants.js";
|
import { RdDItemSheet } from "./item-sheet.js";
|
||||||
import { RdDItemSigneDraconique } from "./item-signedraconique.js";
|
import { RdDItemSigneDraconique } from "./item-signedraconique.js";
|
||||||
import { TMRUtility } from "./tmr-utility.js";
|
import { TMRUtility } from "./tmr-utility.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Item sheet pour signes draconiques
|
* Item sheet pour signes draconiques
|
||||||
* @extends {ItemSheet}
|
* @extends {RdDItemSheet}
|
||||||
*/
|
*/
|
||||||
export class RdDSigneDraconiqueItemSheet extends ItemSheet {
|
export class RdDSigneDraconiqueItemSheet extends RdDItemSheet {
|
||||||
|
|
||||||
/** @override */
|
static get ITEM_TYPE() { return "signedraconique" }
|
||||||
static get defaultOptions() {
|
|
||||||
return mergeObject(super.defaultOptions, {
|
|
||||||
classes: [SYSTEM_RDD, "sheet", "item"],
|
|
||||||
template: "systems/foundryvtt-reve-de-dragon/templates/item-signedraconique-sheet.html",
|
|
||||||
width: 550,
|
|
||||||
height: 550
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
_getHeaderButtons() {
|
|
||||||
let buttons = super._getHeaderButtons();
|
|
||||||
buttons.unshift({ class: "post", icon: "fas fa-comment", onclick: ev => this.item.postItem() });
|
|
||||||
return buttons;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
/** @override */
|
||||||
@@ -61,12 +46,13 @@ export class RdDSigneDraconiqueItemSheet extends ItemSheet {
|
|||||||
if (!this.options.editable) return;
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
html.find(".signe-aleatoire").click(event => this.setSigneAleatoire());
|
html.find(".signe-aleatoire").click(event => this.setSigneAleatoire());
|
||||||
html.find("input.select-tmr").change((event) => this.onSelectTmr(event));
|
html.find("input.select-tmr").change(event => this.onSelectTmr(event));
|
||||||
html.find(".signe-xp-sort").change((event) => this.onValeurXpSort(event.currentTarget.attributes['data-typereussite']?.value, Number(event.currentTarget.value)));
|
html.find(".signe-xp-sort").change(event => this.onValeurXpSort(event.currentTarget.attributes['data-typereussite']?.value, Number(event.currentTarget.value)));
|
||||||
}
|
}
|
||||||
|
|
||||||
async setSigneAleatoire() {
|
async setSigneAleatoire() {
|
||||||
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique();
|
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique();
|
||||||
|
newSigne.name = this.item.name;
|
||||||
this.item.update(newSigne);
|
this.item.update(newSigne);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,12 +74,4 @@ export class RdDSigneDraconiqueItemSheet extends ItemSheet {
|
|||||||
await this.item.update({ 'system.valeur': newValeur });
|
await this.item.update({ 'system.valeur': newValeur });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
get template() {
|
|
||||||
return `systems/foundryvtt-reve-de-dragon/templates/item-signedraconique-sheet.html`;
|
|
||||||
}
|
|
||||||
|
|
||||||
get title() {
|
|
||||||
return `Signe draconique: ${this.object.name}`;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
285
module/item.js
@@ -1,16 +1,17 @@
|
|||||||
import { DialogItemVente } from "./dialog-item-vente.js";
|
import { DialogItemVente } from "./dialog-item-vente.js";
|
||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
import { Monnaie } from "./item-monnaie.js";
|
import { Misc } from "./misc.js";
|
||||||
import { RdDHerbes } from "./rdd-herbes.js";
|
import { RdDHerbes } from "./rdd-herbes.js";
|
||||||
import { RdDUtility } from "./rdd-utility.js";
|
import { RdDUtility } from "./rdd-utility.js";
|
||||||
|
|
||||||
const typesObjetsEquipement = [
|
const typesObjetsInventaire = [
|
||||||
"arme",
|
"arme",
|
||||||
"armure",
|
"armure",
|
||||||
"conteneur",
|
"conteneur",
|
||||||
"gemme",
|
"gemme",
|
||||||
"herbe",
|
"herbe",
|
||||||
"ingredient",
|
"ingredient",
|
||||||
|
"faune",
|
||||||
"livre",
|
"livre",
|
||||||
"monnaie",
|
"monnaie",
|
||||||
"munition",
|
"munition",
|
||||||
@@ -36,6 +37,7 @@ export const defaultItemImg = {
|
|||||||
conteneur: "systems/foundryvtt-reve-de-dragon/icons/objets/sac_a_dos.webp",
|
conteneur: "systems/foundryvtt-reve-de-dragon/icons/objets/sac_a_dos.webp",
|
||||||
sort: "systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp",
|
sort: "systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp",
|
||||||
herbe: "systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp",
|
herbe: "systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp",
|
||||||
|
faune: "systems/foundryvtt-reve-de-dragon/icons/faune/rongeur.webp",
|
||||||
ingredient: "systems/foundryvtt-reve-de-dragon/icons/objets/sable_poudre.webp",
|
ingredient: "systems/foundryvtt-reve-de-dragon/icons/objets/sable_poudre.webp",
|
||||||
livre: "systems/foundryvtt-reve-de-dragon/icons/objets/livre.webp",
|
livre: "systems/foundryvtt-reve-de-dragon/icons/objets/livre.webp",
|
||||||
potion: "systems/foundryvtt-reve-de-dragon/icons/objets/liqueur_de_bagdol.webp",
|
potion: "systems/foundryvtt-reve-de-dragon/icons/objets/liqueur_de_bagdol.webp",
|
||||||
@@ -70,7 +72,11 @@ export class RdDItem extends Item {
|
|||||||
return defaultItemImg[itemType];
|
return defaultItemImg[itemType];
|
||||||
}
|
}
|
||||||
|
|
||||||
static isEquipementFieldEditable(type, field) {
|
static isItemInventaire(newLocal) {
|
||||||
|
return typesObjetsInventaire.includes(newLocal.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
static isFieldInventaireModifiable(type, field) {
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case 'quantite':
|
case 'quantite':
|
||||||
if (['conteneur'].includes(type)) {
|
if (['conteneur'].includes(type)) {
|
||||||
@@ -78,18 +84,24 @@ export class RdDItem extends Item {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'cout':
|
case 'cout':
|
||||||
if(['monnaie'].includes(type)){
|
if (['monnaie'].includes(type)) {
|
||||||
return game.user.isGM;
|
return game.user.isGM;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getUniteQuantite(type) {
|
getUniteQuantite() {
|
||||||
switch (type) {
|
switch (this.type) {
|
||||||
case "monnaie": return "(Pièces)"
|
case "monnaie": return "(Pièces)"
|
||||||
case "herbe": return "(Brins)"
|
case "herbe":
|
||||||
|
switch (this.system.categorie) {
|
||||||
|
case 'Alchimie': case 'Repos': case 'Soin':
|
||||||
|
return "(Brins)"
|
||||||
|
case 'Cuisine': return '';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
case "ingredient": return "(Pépins ou Brins)"
|
case "ingredient": return "(Pépins ou Brins)"
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
@@ -98,12 +110,12 @@ export class RdDItem extends Item {
|
|||||||
constructor(itemData, context) {
|
constructor(itemData, context) {
|
||||||
if (!itemData.img) {
|
if (!itemData.img) {
|
||||||
itemData.img = RdDItem.getDefaultImg(itemData.type);
|
itemData.img = RdDItem.getDefaultImg(itemData.type);
|
||||||
}
|
}
|
||||||
super(itemData, context);
|
super(itemData, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTypesObjetsEquipement() {
|
static getItemTypesInventaire() {
|
||||||
return typesObjetsEquipement
|
return typesObjetsInventaire
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTypesOeuvres() {
|
static getTypesOeuvres() {
|
||||||
@@ -113,11 +125,14 @@ export class RdDItem extends Item {
|
|||||||
isCompetencePersonnage() {
|
isCompetencePersonnage() {
|
||||||
return this.type == 'competence'
|
return this.type == 'competence'
|
||||||
}
|
}
|
||||||
|
isCompetenceCreature() {
|
||||||
|
return this.type == 'competencecreature'
|
||||||
|
}
|
||||||
isCompetence() {
|
isCompetence() {
|
||||||
return typesObjetsCompetence.includes(this.type)
|
return typesObjetsCompetence.includes(this.type)
|
||||||
}
|
}
|
||||||
isEquipement() {
|
isInventaire() {
|
||||||
return typesObjetsEquipement.includes(this.type)
|
return RdDItem.isItemInventaire(this)
|
||||||
}
|
}
|
||||||
isOeuvre() {
|
isOeuvre() {
|
||||||
return typesObjetsOeuvres.includes(this.type)
|
return typesObjetsOeuvres.includes(this.type)
|
||||||
@@ -136,7 +151,7 @@ export class RdDItem extends Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getItemGroup() {
|
getItemGroup() {
|
||||||
if (this.isEquipement()) return "equipement";
|
if (this.isInventaire()) return "equipement";
|
||||||
if (this.isOeuvre()) return "oeuvre";
|
if (this.isOeuvre()) return "oeuvre";
|
||||||
if (this.isDraconique()) return "draconique";
|
if (this.isDraconique()) return "draconique";
|
||||||
if (this.isConnaissance()) return "connaissance";
|
if (this.isConnaissance()) return "connaissance";
|
||||||
@@ -157,9 +172,25 @@ export class RdDItem extends Item {
|
|||||||
return !this.isConteneur() || (this.system.contenu?.length ?? 0) == 0;
|
return !this.isConteneur() || (this.system.contenu?.length ?? 0) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
isAlcool() {
|
isNourritureBoisson() {
|
||||||
return this.type == 'nourritureboisson' && this.system.boisson && this.system.alcoolise;
|
return this.type == 'nourritureboisson';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isComestible() {
|
||||||
|
switch (this.type) {
|
||||||
|
case 'nourritureboisson': return 'pret';
|
||||||
|
case 'herbe':
|
||||||
|
return this.system.categorie == 'Cuisine' && this.system.sust > 0 ? 'brut' : '';
|
||||||
|
case 'faune':
|
||||||
|
return this.system.sust > 0 ? 'brut' : '';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
isAlcool() {
|
||||||
|
return this.isNourritureBoisson() && this.system.boisson && this.system.alcoolise;
|
||||||
|
}
|
||||||
|
|
||||||
isHerbeAPotion() {
|
isHerbeAPotion() {
|
||||||
return this.type == 'herbe' && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos');
|
return this.type == 'herbe' && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos');
|
||||||
}
|
}
|
||||||
@@ -180,18 +211,27 @@ export class RdDItem extends Item {
|
|||||||
|
|
||||||
getEncTotal() {
|
getEncTotal() {
|
||||||
return this.getEnc() * this.getQuantite();
|
return this.getEnc() * this.getQuantite();
|
||||||
}
|
}
|
||||||
|
|
||||||
getEnc() {
|
getEnc() {
|
||||||
switch (this.type) {
|
switch (this.type) {
|
||||||
case 'herbe':
|
case 'herbe':
|
||||||
return encBrin;
|
return this.getEncHerbe();
|
||||||
case 'gemme':
|
case 'gemme':
|
||||||
return encPepin * this.system.taille;
|
return encPepin * this.system.taille;
|
||||||
}
|
}
|
||||||
return Math.max(this.system.encombrement ?? 0, 0);
|
return Math.max(this.system.encombrement ?? 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getEncHerbe() {
|
||||||
|
switch (this.system.categorie) {
|
||||||
|
case 'Repos': case 'Soin': case 'Alchimie':
|
||||||
|
return encBrin;
|
||||||
|
}
|
||||||
|
return this.system.encombrement;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
valeurTotale() {
|
valeurTotale() {
|
||||||
return this.getQuantite() * this.valeur()
|
return this.getQuantite() * this.valeur()
|
||||||
}
|
}
|
||||||
@@ -202,7 +242,7 @@ export class RdDItem extends Item {
|
|||||||
|
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
if (this.isEquipement()) {
|
if (this.isInventaire()) {
|
||||||
this.system.encTotal = this.getEncTotal();
|
this.system.encTotal = this.getEncTotal();
|
||||||
if (this.isPotion()) {
|
if (this.isPotion()) {
|
||||||
this.prepareDataPotion()
|
this.prepareDataPotion()
|
||||||
@@ -223,19 +263,43 @@ export class RdDItem extends Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getActionPrincipale(options = { warnIfNot: true }) {
|
getActionPrincipale(options = { warnIfNot: true }) {
|
||||||
const warn = options.warnIfNot;
|
|
||||||
switch (this.type) {
|
switch (this.type) {
|
||||||
case 'nourritureboisson': return this._actionOrWarnQuantiteZero(this.system.boisson ? 'Boire' : 'Manger', warn);
|
|
||||||
case 'potion': return this._actionOrWarnQuantiteZero('Boire', warn);
|
|
||||||
case 'livre': return this._actionOrWarnQuantiteZero('Lire', warn);
|
|
||||||
case 'conteneur': return 'Ouvrir';
|
case 'conteneur': return 'Ouvrir';
|
||||||
case 'herbe': return this.isHerbeAPotion() ? this._actionOrWarnQuantiteZero('Décoction', warn) : undefined;
|
}
|
||||||
case 'queue': case 'ombre': return this.system.refoulement>0 ? 'Refouler' : undefined;
|
if (this.actor?.isPersonnage()) {
|
||||||
|
const warn = options.warnIfNot;
|
||||||
|
if (this.isComestible() == 'brut') {
|
||||||
|
return 'Utiliser';
|
||||||
|
}
|
||||||
|
switch (this.type) {
|
||||||
|
case 'nourritureboisson': return this._actionOrWarnQuantiteZero(this.system.boisson ? 'Boire' : 'Manger', warn);
|
||||||
|
case 'potion': return this._actionOrWarnQuantiteZero('Boire', warn);
|
||||||
|
case 'livre': return this._actionOrWarnQuantiteZero('Lire', warn);
|
||||||
|
case 'herbe': return this.isHerbeAPotion() ? this._actionOrWarnQuantiteZero('Décoction', warn) : undefined;
|
||||||
|
case 'queue': case 'ombre': return this.system.refoulement > 0 ? 'Refouler' : undefined;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async actionPrincipale(actor, onActionItem = async () => { }) {
|
||||||
|
if (!this.getActionPrincipale()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (await actor.actionNourritureboisson(this, onActionItem)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (this.type) {
|
||||||
|
case 'potion': return await actor.consommerPotion(this, onActionItem);
|
||||||
|
case 'livre': return await actor.actionLire(this);
|
||||||
|
case 'conteneur': return await this.sheet.render(true);
|
||||||
|
case 'herbe': return await actor.actionHerbe(this);
|
||||||
|
case 'queue': case 'ombre': return await actor.actionRefoulement(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_actionOrWarnQuantiteZero(actionName, warn){
|
_actionOrWarnQuantiteZero(actionName, warn) {
|
||||||
if ((this.system.quantite ?? 0) <= 0) {
|
if ((this.system.quantite ?? 0) <= 0) {
|
||||||
if (warn) {
|
if (warn) {
|
||||||
ui.notifications.warn(`Vous n'avez plus de ${this.name}.`);
|
ui.notifications.warn(`Vous n'avez plus de ${this.name}.`);
|
||||||
@@ -252,6 +316,42 @@ export class RdDItem extends Item {
|
|||||||
await this.quantiteIncDec(-nombre, options);
|
await this.quantiteIncDec(-nombre, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async onCreateDecoupeComestible(actor) {
|
||||||
|
if (actor && this.isComestible() == 'brut' && this.system.sust != 1) {
|
||||||
|
if (this.system.sust < 1) {
|
||||||
|
await actor.updateEmbeddedDocuments('Item', [{
|
||||||
|
_id: this.id,
|
||||||
|
'system.sust': 0
|
||||||
|
}])
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const sust = Math.floor(this.system.sust);
|
||||||
|
await actor.updateEmbeddedDocuments('Item', [{
|
||||||
|
_id: this.id,
|
||||||
|
'system.quantite': this.system.quantite * sust,
|
||||||
|
'system.encombrement': Misc.keepDecimals(this.system.encombrement / sust, 2),
|
||||||
|
'system.cout': Misc.keepDecimals(this.system.cout / sust, 2),
|
||||||
|
'system.sust': 1
|
||||||
|
}])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async empiler(item) {
|
||||||
|
if (this.isComestible() == 'brut') {
|
||||||
|
const sust = this.system.sust + item.system.sust;
|
||||||
|
const encombrement = this.system.encombrement + item.system.encombrement;
|
||||||
|
await this.update({
|
||||||
|
"system.sust": sust,
|
||||||
|
"system.encombrement": encombrement
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await this.quantiteIncDec(item.system.quantite);
|
||||||
|
}
|
||||||
|
await item.delete();
|
||||||
|
}
|
||||||
|
|
||||||
async quantiteIncDec(nombre, options = { diminuerQuantite: true, supprimerSiZero: false }) {
|
async quantiteIncDec(nombre, options = { diminuerQuantite: true, supprimerSiZero: false }) {
|
||||||
const quantite = Number(this.system.quantite ?? -1);
|
const quantite = Number(this.system.quantite ?? -1);
|
||||||
if (quantite >= 0) {
|
if (quantite >= 0) {
|
||||||
@@ -275,14 +375,13 @@ export class RdDItem extends Item {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// détermine si deux équipements sont similaires: de même type, et avec les même champs hormis la quantité
|
// détermine si deux équipements sont similaires: de même type, et avec les même champs hormis la quantité
|
||||||
isEquipementEmpilable(other) {
|
isInventaireEmpilable(other) {
|
||||||
if (!other || !this.isEquipement()) {
|
if (!other || !this.isInventaire()) {
|
||||||
return [false, undefined];
|
return [false, undefined];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.system.quantite == undefined) {
|
if (this.system.quantite == undefined) {
|
||||||
return [false, `Impossible de regrouper des ${this.type}, ils ne sont pas empilables`];
|
return [false, `Impossible de regrouper des ${this.type}, ils ne sont pas empilables`];
|
||||||
}
|
}
|
||||||
else if (this.type != other.type) {
|
else if (this.type != other.type) {
|
||||||
return [false, `Impossible de regrouper des ${this.type} avec des ${other.type}`];
|
return [false, `Impossible de regrouper des ${this.type} avec des ${other.type}`];
|
||||||
}
|
}
|
||||||
@@ -290,8 +389,13 @@ export class RdDItem extends Item {
|
|||||||
return [false, `Impossible de regrouper ${this.name} avec ${other.name}`];
|
return [false, `Impossible de regrouper ${this.name} avec ${other.name}`];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const differences = Object.entries(this.system)
|
const excludedProperties = ['quantite', 'cout', 'encTotal'];
|
||||||
.filter(([key, value]) => !['quantite', 'cout', 'encTotal'].includes(key) && value != other.system[key]);
|
if (this.isComestible()) {
|
||||||
|
excludedProperties.push('sust', 'encombrement');
|
||||||
|
}
|
||||||
|
let differences = Object.entries(this.system)
|
||||||
|
.filter(([key, value]) => !excludedProperties.includes(key))
|
||||||
|
.filter(([key, value]) => value != other.system[key])
|
||||||
if (differences.length > 0) {
|
if (differences.length > 0) {
|
||||||
let message = `Impossible de regrouper les ${this.type} ${this.name}: `;
|
let message = `Impossible de regrouper les ${this.type} ${this.name}: `;
|
||||||
for (const [key, value] of differences) {
|
for (const [key, value] of differences) {
|
||||||
@@ -309,7 +413,7 @@ export class RdDItem extends Item {
|
|||||||
ui.notifications.warn(`Votre ${this.name} n'est pas vide, pas possible de le proposer`);
|
ui.notifications.warn(`Votre ${this.name} n'est pas vide, pas possible de le proposer`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await DialogItemVente.display(this, async (vente) => {
|
await DialogItemVente.display(this, async (vente) => {
|
||||||
vente["properties"] = this.getProprietes();
|
vente["properties"] = this.getProprietes();
|
||||||
if (vente.isOwned) {
|
if (vente.isOwned) {
|
||||||
if (vente.quantiteNbLots * vente.tailleLot > vente.quantiteMax) {
|
if (vente.quantiteNbLots * vente.tailleLot > vente.quantiteMax) {
|
||||||
@@ -318,7 +422,7 @@ export class RdDItem extends Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
vente.jsondata = JSON.stringify(vente.item);
|
vente.jsondata = JSON.stringify(vente.item);
|
||||||
|
|
||||||
console.log(vente);
|
console.log(vente);
|
||||||
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', vente);
|
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', vente);
|
||||||
ChatMessage.create(RdDUtility.chatDataSetup(html));
|
ChatMessage.create(RdDUtility.chatDataSetup(html));
|
||||||
@@ -327,7 +431,7 @@ export class RdDItem extends Item {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getProprietes() {
|
getProprietes() {
|
||||||
return this[`_${this.type}ChatData`]();
|
return this[`_${this.type}ChatData`]().filter(it => it != undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -351,29 +455,31 @@ export class RdDItem extends Item {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static propertyIfDefined(name, val, condition = (it) => true) {
|
static propertyIfDefined(name, val, condition = true) {
|
||||||
return condition ? [`<b>${name}</b>: ${val}`] : [];
|
return condition ? `<b>${name}</b>: ${val}` : undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_inventaireTemplateChatData() {
|
||||||
|
return [
|
||||||
|
RdDItem.propertyIfDefined('Qualité', this.system.qualite, this.system.qualite != 0),
|
||||||
|
RdDItem.propertyIfDefined('Encombrement', this.system.encombrement)
|
||||||
|
// cout et quantité masqués
|
||||||
|
]
|
||||||
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_objetChatData() {
|
_objetChatData() {
|
||||||
return [].concat(
|
return this._inventaireTemplateChatData()
|
||||||
RdDItem.propertyIfDefined('Résistance', this.system.resistance, this.system.resistance),
|
|
||||||
RdDItem.propertyIfDefined('Qualité', this.system.qualite, this.system.qualite),
|
|
||||||
RdDItem.propertyIfDefined('Encombrement', this.system.encombrement),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_nourritureboissonChatData() {
|
_nourritureboissonChatData() {
|
||||||
return [].concat(
|
return [
|
||||||
RdDItem.propertyIfDefined('Sustentation', this.system.sust, this.system.sust > 0),
|
RdDItem.propertyIfDefined('Sustentation', this.system.sust, this.system.sust > 0),
|
||||||
RdDItem.propertyIfDefined('Désaltère', this.system.desaltere, this.system.boisson),
|
RdDItem.propertyIfDefined('Désaltère', this.system.desaltere, this.system.boisson),
|
||||||
RdDItem.propertyIfDefined('Force alcool', this.system.force, this.system.boisson && this.system.alcoolise),
|
RdDItem.propertyIfDefined('Force alcool', this.system.force, this.system.boisson && this.system.alcoolise),
|
||||||
RdDItem.propertyIfDefined('Exotisme', this.system.exotisme, this.system.exotisme < 0),
|
RdDItem.propertyIfDefined('Exotisme', this.system.exotisme, this.system.exotisme < 0),
|
||||||
RdDItem.propertyIfDefined('Qualité', this.system.qualite, this.system.qualite),
|
...this._inventaireTemplateChatData()
|
||||||
RdDItem.propertyIfDefined('Encombrement', this.system.encombrement),
|
]
|
||||||
);
|
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_armeChatData() {
|
_armeChatData() {
|
||||||
@@ -382,21 +488,19 @@ export class RdDItem extends Item {
|
|||||||
`<b>Dommages</b>: ${this.system.dommages}`,
|
`<b>Dommages</b>: ${this.system.dommages}`,
|
||||||
`<b>Force minimum</b>: ${this.system.force}`,
|
`<b>Force minimum</b>: ${this.system.force}`,
|
||||||
`<b>Resistance</b>: ${this.system.resistance}`,
|
`<b>Resistance</b>: ${this.system.resistance}`,
|
||||||
`<b>Encombrement</b>: ${this.system.encombrement}`
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_conteneurChatData() {
|
_conteneurChatData() {
|
||||||
return [
|
return [
|
||||||
`<b>Capacité</b>: ${this.system.capacite} Enc.`,
|
`<b>Capacité</b>: ${this.system.capacite} Enc.`,
|
||||||
`<b>Encombrement</b>: ${this.system.encombrement}`
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_munitionChatData() {
|
_munitionChatData() {
|
||||||
return [
|
return this._inventaireTemplateChatData()
|
||||||
`<b>Encombrement</b>: ${this.system.encombrement}`
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_armureChatData() {
|
_armureChatData() {
|
||||||
@@ -404,7 +508,7 @@ export class RdDItem extends Item {
|
|||||||
`<b>Protection</b>: ${this.system.protection}`,
|
`<b>Protection</b>: ${this.system.protection}`,
|
||||||
`<b>Détérioration</b>: ${this.system.deterioration}`,
|
`<b>Détérioration</b>: ${this.system.deterioration}`,
|
||||||
`<b>Malus armure</b>: ${this.system.malus}`,
|
`<b>Malus armure</b>: ${this.system.malus}`,
|
||||||
`<b>Encombrement</b>: ${this.system.encombrement}`
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -438,16 +542,24 @@ export class RdDItem extends Item {
|
|||||||
_herbeChatData() {
|
_herbeChatData() {
|
||||||
return [
|
return [
|
||||||
`<b>Milieu</b>: ${this.system.milieu}`,
|
`<b>Milieu</b>: ${this.system.milieu}`,
|
||||||
`<b>Rareté</b>: ${this.system.rarete}`,
|
|
||||||
`<b>Catégorie</b>: ${this.system.categorie}`,
|
`<b>Catégorie</b>: ${this.system.categorie}`,
|
||||||
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_ingredientChatData() {
|
_ingredientChatData() {
|
||||||
return [
|
return [
|
||||||
`<b>Milieu</b>: ${this.system.milieu}`,
|
`<b>Milieu</b>: ${this.system.milieu}`,
|
||||||
`<b>Rareté</b>: ${this.system.rarete}`,
|
|
||||||
`<b>Catégorie</b>: ${this.system.categorie}`,
|
`<b>Catégorie</b>: ${this.system.categorie}`,
|
||||||
|
...this._inventaireTemplateChatData()
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
_fauneChatData() {
|
||||||
|
return [
|
||||||
|
`<b>Sustentation</b>: ${this.system.sust}`,
|
||||||
|
`<b>Milieu</b>: ${this.system.milieu}`,
|
||||||
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -457,12 +569,9 @@ export class RdDItem extends Item {
|
|||||||
`<b>Compétence</b>: ${this.system.competence}`,
|
`<b>Compétence</b>: ${this.system.competence}`,
|
||||||
`<b>Périodicité</b>: ${this.system.periodicite}`,
|
`<b>Périodicité</b>: ${this.system.periodicite}`,
|
||||||
`<b>Fatigue</b>: ${this.system.fatigue}`,
|
`<b>Fatigue</b>: ${this.system.fatigue}`,
|
||||||
`<b>Difficulté</b>: ${this.system.difficulte}`
|
`<b>Difficulté</b>: ${this.system.difficulte}`,
|
||||||
].concat([
|
RdDItem.propertyIfDefined('Points de Tâche', this.system.points_de_tache, this.system.cacher_points_de_tache),
|
||||||
this.system.cacher_points_de_tache ? [] :`<b>Points de Tâche</b>: ${this.system.points_de_tache}`
|
|
||||||
]).concat([
|
|
||||||
`<b>Points de Tâche atteints</b>: ${this.system.points_de_tache_courant}`]
|
`<b>Points de Tâche atteints</b>: ${this.system.points_de_tache_courant}`]
|
||||||
);
|
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_livreChatData() {
|
_livreChatData() {
|
||||||
@@ -470,8 +579,8 @@ export class RdDItem extends Item {
|
|||||||
`<b>Compétence</b>: ${this.system.competence}`,
|
`<b>Compétence</b>: ${this.system.competence}`,
|
||||||
`<b>Auteur</b>: ${this.system.auteur}`,
|
`<b>Auteur</b>: ${this.system.auteur}`,
|
||||||
`<b>Difficulté</b>: ${this.system.difficulte}`,
|
`<b>Difficulté</b>: ${this.system.difficulte}`,
|
||||||
`<b>Points de Tâche</b>: ${this.system.points_de_tache}`,
|
RdDItem.propertyIfDefined('Points de Tâche', this.system.points_de_tache, this.system.cacher_points_de_tache),
|
||||||
`<b>Encombrement</b>: ${this.system.encombrement}`
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -479,32 +588,44 @@ export class RdDItem extends Item {
|
|||||||
return [
|
return [
|
||||||
`<b>Rareté</b>: ${this.system.rarete}`,
|
`<b>Rareté</b>: ${this.system.rarete}`,
|
||||||
`<b>Catégorie</b>: ${this.system.categorie}`,
|
`<b>Catégorie</b>: ${this.system.categorie}`,
|
||||||
`<b>Encombrement</b>: ${this.system.encombrement}`,
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_queueChatData() {
|
_queueChatData() {
|
||||||
|
function label(categorie) {
|
||||||
|
switch (categorie) {
|
||||||
|
case 'ideefixe': return 'Idée fixe';
|
||||||
|
case 'lancinant': return 'Désir lancinant';
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
}
|
||||||
return [
|
return [
|
||||||
`<b>Refoulement</b>: ${this.system.refoulement}`
|
`<b>Refoulement</b>: ${this.system.refoulement}`,
|
||||||
|
`<b>Catégorie</b>: ${label(this.system.categorie)}`,
|
||||||
|
`<b>Affecte</b>: ${this.system.hautrevant ? 'les haut-rêvants' : 'tout le monde'}`,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_ombreChatData() {
|
_ombreChatData() {
|
||||||
return [
|
return this._queueChatData()
|
||||||
`<b>Refoulement</b>: ${this.system.refoulement}`
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_souffleChatData() {
|
_souffleChatData() {
|
||||||
return [];
|
return [
|
||||||
|
`<b>Affecte</b>: ${this.system.hautrevant ? 'les haut-rêvants' : 'tout le monde'}`,
|
||||||
|
];
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_teteChatData() {
|
_teteChatData() {
|
||||||
return [];
|
return [
|
||||||
|
`<b>Affecte</b>: ${this.system.hautrevant ? 'les haut-rêvants' : 'tout le monde'}`,
|
||||||
|
];
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_tarotChatData() {
|
_tarotChatData() {
|
||||||
return [
|
return [
|
||||||
|
RdDItem.propertyIfDefined('Carte', RdDUtility.linkCompendium(this.pack, this.id, this.name), this.pack),
|
||||||
`<b>Concept</b>: ${this.system.concept}`,
|
`<b>Concept</b>: ${this.system.concept}`,
|
||||||
`<b>Aspect</b>: ${this.system.aspect}`,
|
`<b>Aspect</b>: ${this.system.aspect}`,
|
||||||
]
|
]
|
||||||
@@ -518,10 +639,7 @@ export class RdDItem extends Item {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_monnaieChatData() {
|
_monnaieChatData() {
|
||||||
return [
|
return this._inventaireTemplateChatData()
|
||||||
`<b>Valeur en Sols</b>: ${this.system.cout}`,
|
|
||||||
`<b>Encombrement</b>: ${this.system.encombrement}`
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_meditationChatData() {
|
_meditationChatData() {
|
||||||
@@ -545,9 +663,9 @@ export class RdDItem extends Item {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
return [
|
return [
|
||||||
`<b>Force</b>: ${this.system.force}`,
|
`<b>Force</b>: ${this.system.formule}`,
|
||||||
`<b>Refoulement</b>: ${this.system.refoulement}`,
|
`<b>Refoulement</b>: ${this.system.refoulement}`,
|
||||||
`<b>Présent de cités</b>: ${this.system.presentCite}`,
|
RdDItem.propertyIfDefined('<b>Présent de cités</b>', '', this.system.presentCite),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -562,15 +680,12 @@ export class RdDItem extends Item {
|
|||||||
if (!this.system.identifie) {
|
if (!this.system.identifie) {
|
||||||
return [`<b>Inconnue</b>`]
|
return [`<b>Inconnue</b>`]
|
||||||
}
|
}
|
||||||
let properties = [
|
return [
|
||||||
`<b>Malignité</b>: ${this.system.malignite}`,
|
`<b>Malignité</b>: ${this.system.malignite}`,
|
||||||
`<b>Périodicité</b>: ${this.system.periodicite}`,
|
`<b>Périodicité</b>: ${this.system.periodicite}`,
|
||||||
`<b>Dommages</b>: ${this.system.dommages}`
|
`<b>Dommages</b>: ${this.system.dommages}`,
|
||||||
]
|
RdDItem.propertyIfDefined('<b>Remedes</b>', this.system.remedes, this.system.remedesconnus),
|
||||||
if (this.system.remedesconnus) {
|
]
|
||||||
properties.push(`<b>Remedes</b>: ${this.system.remedes}`)
|
|
||||||
}
|
|
||||||
return properties;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -585,7 +700,7 @@ export class RdDItem extends Item {
|
|||||||
`<b>Taille</b>: ${this.system.taille}`,
|
`<b>Taille</b>: ${this.system.taille}`,
|
||||||
`<b>Inertie</b>: ${this.system.inertie}`,
|
`<b>Inertie</b>: ${this.system.inertie}`,
|
||||||
`<b>Enchantabilité</b>: ${this.system.enchantabilite}`,
|
`<b>Enchantabilité</b>: ${this.system.enchantabilite}`,
|
||||||
`<b>Prix</b>: ${this.system.cout}`,
|
...this._inventaireTemplateChatData()
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ export class Misc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static typeName(type, subType) {
|
static typeName(type, subType) {
|
||||||
return game.i18n.localize(`${type.toUpperCase()}.Type${Misc.upperFirst(subType)}`);
|
return subType ? game.i18n.localize(`${type.toUpperCase()}.Type${Misc.upperFirst(subType)}`)
|
||||||
|
: '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,6 +73,19 @@ export class Misc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static indexLowercase(list) {
|
||||||
|
const obj = {};
|
||||||
|
const addToObj = (map, val) => {
|
||||||
|
const key = Grammar.toLowerCaseNoAccent(val);
|
||||||
|
if (key && !map[key]) map[key] = val
|
||||||
|
}
|
||||||
|
list.forEach(it => addToObj(obj, it))
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
static concat(lists) {
|
||||||
|
return lists.reduce((a, b) => a.concat(b), []);
|
||||||
|
}
|
||||||
|
|
||||||
static classify(items, classifier = it => it.type) {
|
static classify(items, classifier = it => it.type) {
|
||||||
let itemsBy = {}
|
let itemsBy = {}
|
||||||
Misc.classifyInto(itemsBy, items, classifier)
|
Misc.classifyInto(itemsBy, items, classifier)
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ export class RdDCombatManager extends Combat {
|
|||||||
if (actions.length > 0) {
|
if (actions.length > 0) {
|
||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
if (actor.isCreature()) {
|
if (actor.isCreatureEntite()) {
|
||||||
actions = actions.concat(RdDCombatManager.listActionsCreature(actor.itemTypes['competencecreature']));
|
actions = actions.concat(RdDCombatManager.listActionsCreature(actor.itemTypes['competencecreature']));
|
||||||
} else {
|
} else {
|
||||||
// Recupération des items 'arme'
|
// Recupération des items 'arme'
|
||||||
@@ -821,7 +821,7 @@ export class RdDCombat {
|
|||||||
essais: {}
|
essais: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.attacker.isCreature()) {
|
if (this.attacker.isCreatureEntite()) {
|
||||||
RdDItemCompetenceCreature.setRollDataCreature(rollData);
|
RdDItemCompetenceCreature.setRollDataCreature(rollData);
|
||||||
}
|
}
|
||||||
else if (arme) {
|
else if (arme) {
|
||||||
@@ -1079,7 +1079,7 @@ export class RdDCombat {
|
|||||||
show: {}
|
show: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.defender.isCreature()) {
|
if (this.defender.isCreatureEntite()) {
|
||||||
RdDItemCompetenceCreature.setRollDataCreature(defenderRoll);
|
RdDItemCompetenceCreature.setRollDataCreature(defenderRoll);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1158,7 +1158,7 @@ export class RdDCombat {
|
|||||||
show: {}
|
show: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.defender.isCreature()) {
|
if (this.defender.isCreatureEntite()) {
|
||||||
RdDItemCompetenceCreature.setRollDataCreature(rollData);
|
RdDItemCompetenceCreature.setRollDataCreature(rollData);
|
||||||
}
|
}
|
||||||
return rollData;
|
return rollData;
|
||||||
|
|||||||
@@ -403,11 +403,14 @@ export class RdDCommands {
|
|||||||
const search = Misc.join(params, ' ');
|
const search = Misc.join(params, ' ');
|
||||||
const milieux = await game.system.rdd.environnement.findEnvironnementsLike(search);
|
const milieux = await game.system.rdd.environnement.findEnvironnementsLike(search);
|
||||||
if (milieux.length == 0) {
|
if (milieux.length == 0) {
|
||||||
return RdDCommands._chatAnswer(msg, 'Aucun milieu correspondant à ' + search);
|
const tous = Object.values(await game.system.rdd.environnement.milieux());
|
||||||
|
return RdDCommands._chatAnswer(msg, `<strong>Aucun milieu correspondant à '${search}'.</strong>
|
||||||
|
<br>Milieux disponibles:
|
||||||
|
<br><ul class="chat-list"><li>${tous.reduce(Misc.joining('</li><li>'))}</li></ul>`);
|
||||||
}
|
}
|
||||||
if (milieux.length > 1) {
|
if (milieux.length > 1) {
|
||||||
ui.notifications.warn(`<strong>Plusieurs milieux correspondent à '${search}'</strong>:
|
ui.notifications.warn(`<strong>Plusieurs milieux correspondent à '${search}'</strong>:
|
||||||
<br><ul><li>${milieux.reduce(Misc.joining('</li><li>'))}</li></ul>`);
|
<br><ul class="chat-list"><li>${milieux.reduce(Misc.joining('</li><li>'))}</li></ul>`);
|
||||||
}
|
}
|
||||||
const tableName = `ressources en ${milieux.reduce(Misc.joining(', '))}`;
|
const tableName = `ressources en ${milieux.reduce(Misc.joining(', '))}`;
|
||||||
if (toChat == 'liste') {
|
if (toChat == 'liste') {
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ import { TMRRencontres } from "./tmr-rencontres.js";
|
|||||||
import { RdDHerbeItemSheet } from "./item-herbe-sheet.js";
|
import { RdDHerbeItemSheet } from "./item-herbe-sheet.js";
|
||||||
import { Environnement } from "./environnement.js";
|
import { Environnement } from "./environnement.js";
|
||||||
import { RdDIngredientItemSheet } from "./item-ingredient-sheet.js";
|
import { RdDIngredientItemSheet } from "./item-ingredient-sheet.js";
|
||||||
|
import { RdDFauneItemSheet } from "./item-faune-sheet.js";
|
||||||
|
import { RdDConteneurItemSheet } from "./item-conteneur-sheet.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Foundry VTT Initialization */
|
/* Foundry VTT Initialization */
|
||||||
@@ -163,8 +165,8 @@ Hooks.once("init", async function () {
|
|||||||
RdDCombat.onSocketMessage(sockmsg);
|
RdDCombat.onSocketMessage(sockmsg);
|
||||||
ChatUtility.onSocketMessage(sockmsg);
|
ChatUtility.onSocketMessage(sockmsg);
|
||||||
RdDActor.onSocketMessage(sockmsg);
|
RdDActor.onSocketMessage(sockmsg);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
console.error('game.socket.on(SYSTEM_SOCKET_ID) Exception: ', sockmsg,' => ', e)
|
console.error('game.socket.on(SYSTEM_SOCKET_ID) Exception: ', sockmsg, ' => ', e)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -187,28 +189,24 @@ Hooks.once("init", async function () {
|
|||||||
Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true });
|
Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true });
|
||||||
Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true });
|
Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true });
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
Items.unregisterSheet("core", ItemSheet);
|
||||||
Items.registerSheet(SYSTEM_RDD, RdDSigneDraconiqueItemSheet, {
|
|
||||||
label: "Signe draconique",
|
RdDItemSheet.register(RdDSigneDraconiqueItemSheet);
|
||||||
types: ["signedraconique"],
|
RdDItemSheet.register(RdDRencontreItemSheet);
|
||||||
makeDefault: true
|
RdDItemSheet.register(RdDConteneurItemSheet);
|
||||||
});
|
RdDItemSheet.register(RdDHerbeItemSheet);
|
||||||
Items.registerSheet(SYSTEM_RDD, RdDRencontreItemSheet, {
|
RdDItemSheet.register(RdDFauneItemSheet);
|
||||||
label: "Rencontre",
|
RdDItemSheet.register(RdDIngredientItemSheet);
|
||||||
types: ["rencontre"],
|
|
||||||
makeDefault: true
|
|
||||||
});
|
|
||||||
RdDHerbeItemSheet.register();
|
|
||||||
RdDIngredientItemSheet.register();
|
|
||||||
Items.registerSheet(SYSTEM_RDD, RdDItemSheet, {
|
Items.registerSheet(SYSTEM_RDD, RdDItemSheet, {
|
||||||
types: [
|
types: [
|
||||||
"competence", "competencecreature",
|
"competence", "competencecreature",
|
||||||
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
|
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
|
||||||
"objet", "arme", "armure", "conteneur", "livre", "potion", "munition",
|
"objet", "arme", "armure", "livre", "potion", "munition",
|
||||||
"monnaie", "nourritureboisson", "gemme",
|
"monnaie", "nourritureboisson", "gemme",
|
||||||
"meditation", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
|
"meditation", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
|
||||||
"nombreastral", "tache", "maladie", "poison", "possession",
|
"nombreastral", "tache", "maladie", "poison", "possession",
|
||||||
"tarot", "extraitpoetique"
|
"tarot", "extraitpoetique"
|
||||||
], makeDefault: true
|
], makeDefault: true
|
||||||
});
|
});
|
||||||
CONFIG.Combat.documentClass = RdDCombatManager;
|
CONFIG.Combat.documentClass = RdDCombatManager;
|
||||||
|
|
||||||
@@ -247,8 +245,8 @@ function messageDeBienvenue() {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Register world usage statistics
|
// Register world usage statistics
|
||||||
function registerUsageCount( registerKey ) {
|
function registerUsageCount(registerKey) {
|
||||||
if ( game.user.isGM ) {
|
if (game.user.isGM) {
|
||||||
game.settings.register("world", "world-key", {
|
game.settings.register("world", "world-key", {
|
||||||
name: "Unique world key",
|
name: "Unique world key",
|
||||||
scope: "world",
|
scope: "world",
|
||||||
@@ -258,9 +256,9 @@ function registerUsageCount( registerKey ) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let worldKey = game.settings.get("world", "world-key")
|
let worldKey = game.settings.get("world", "world-key")
|
||||||
if ( worldKey == undefined || worldKey == "" ) {
|
if (worldKey == undefined || worldKey == "") {
|
||||||
worldKey = randomID(32)
|
worldKey = randomID(32)
|
||||||
game.settings.set("world", "world-key", worldKey )
|
game.settings.set("world", "world-key", worldKey)
|
||||||
}
|
}
|
||||||
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
|
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
|
||||||
$.ajax(regURL)
|
$.ajax(regURL)
|
||||||
@@ -300,7 +298,7 @@ Hooks.once("ready", async function () {
|
|||||||
}
|
}
|
||||||
if (Misc.isUniqueConnectedGM()) {
|
if (Misc.isUniqueConnectedGM()) {
|
||||||
messageDeBienvenue();
|
messageDeBienvenue();
|
||||||
registerUsageCount( SYSTEM_RDD );
|
registerUsageCount(SYSTEM_RDD);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export class RdDPossession {
|
|||||||
defender: defender,
|
defender: defender,
|
||||||
targetToken: Targets.extractTokenData(target)
|
targetToken: Targets.extractTokenData(target)
|
||||||
};
|
};
|
||||||
if (attacker.isCreature()) {
|
if (attacker.isCreatureEntite()) {
|
||||||
RdDItemCompetenceCreature.setRollDataCreature(rollData)
|
RdDItemCompetenceCreature.setRollDataCreature(rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,17 +19,23 @@ export class RdDSheetUtility {
|
|||||||
return $(event.currentTarget)?.parents(".item");
|
return $(event.currentTarget)?.parents(".item");
|
||||||
}
|
}
|
||||||
|
|
||||||
static prepareItemDropParameters(destItemId, actorId, dragData, objetVersConteneur) {
|
static prepareItemDropParameters(destItemId, actor, dragData, objetVersConteneur) {
|
||||||
const item = fromUuidSync(dragData.uuid)
|
const item = fromUuidSync(dragData.uuid)
|
||||||
return {
|
if (actor.canReceive(item)) {
|
||||||
destId: destItemId,
|
return {
|
||||||
targetActorId: actorId,
|
destId: destItemId,
|
||||||
itemId: item.id,
|
targetActorId: actor.id,
|
||||||
sourceActorId: item.actor?.id,
|
itemId: item.id,
|
||||||
srcId: objetVersConteneur[item.id],
|
sourceActorId: item.actor?.id,
|
||||||
onEnleverConteneur: () => { delete objetVersConteneur[item.id]; },
|
srcId: objetVersConteneur[item.id],
|
||||||
onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; }
|
onEnleverConteneur: () => { delete objetVersConteneur[item.id]; },
|
||||||
|
onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
ui.notifications.warn(`Impossible de donner ${item.name} à ${actor.name}: ${item.type} / ${actor.type}`);
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
static async splitItem(item, actor, onSplit = () => { }) {
|
static async splitItem(item, actor, onSplit = () => { }) {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
/* Common useful functions shared between objects */
|
/* Common useful functions shared between objects */
|
||||||
|
|
||||||
import { ChatUtility } from "./chat-utility.js";
|
import { ChatUtility } from "./chat-utility.js";
|
||||||
import { RdDCombat } from "./rdd-combat.js";
|
import { RdDCombat } from "./rdd-combat.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
@@ -14,8 +13,8 @@ import { RdDPossession } from "./rdd-possession.js";
|
|||||||
import { RdDNameGen } from "./rdd-namegen.js";
|
import { RdDNameGen } from "./rdd-namegen.js";
|
||||||
import { RdDConfirm } from "./rdd-confirm.js";
|
import { RdDConfirm } from "./rdd-confirm.js";
|
||||||
import { RdDCalendrier } from "./rdd-calendrier.js";
|
import { RdDCalendrier } from "./rdd-calendrier.js";
|
||||||
import { RdDCarac } from "./rdd-carac.js";
|
|
||||||
import { Environnement } from "./environnement.js";
|
import { Environnement } from "./environnement.js";
|
||||||
|
import { RdDItemCompetence } from "./item-competence.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// This table starts at 0 -> niveau -10
|
// This table starts at 0 -> niveau -10
|
||||||
@@ -172,6 +171,7 @@ export class RdDUtility {
|
|||||||
//Items
|
//Items
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete-script.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete-script.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete.hbs',
|
||||||
|
'systems/foundryvtt-reve-de-dragon/templates/item/boutons-comestible.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.html',
|
||||||
@@ -185,6 +185,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/item-sort-sheet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item-sort-sheet.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item-herbe-sheet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item-herbe-sheet.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item-ingredient-sheet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item-ingredient-sheet.html',
|
||||||
|
'systems/foundryvtt-reve-de-dragon/templates/item-faune-sheet.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item-livre-sheet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item-livre-sheet.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item-tache-sheet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item-tache-sheet.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/item-potion-sheet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/item-potion-sheet.html',
|
||||||
@@ -220,6 +221,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html',
|
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html',
|
||||||
'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/common/compendium-link.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/partial-description-overflow.html',
|
'systems/foundryvtt-reve-de-dragon/templates/partial-description-overflow.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/partial-description-sort.html',
|
'systems/foundryvtt-reve-de-dragon/templates/partial-description-sort.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-ajustements.html',
|
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-ajustements.html',
|
||||||
@@ -279,6 +281,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html'
|
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
Handlebars.registerHelper('either', (a, b) => a ?? b);
|
||||||
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() ?? 'NULL');
|
||||||
@@ -296,46 +299,22 @@ export class RdDUtility {
|
|||||||
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
|
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
|
||||||
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionelles.isUsing(option));
|
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionelles.isUsing(option));
|
||||||
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
|
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
|
||||||
Handlebars.registerHelper('filtreTriCompetences', competences => competences.filter(it => it.system.isVisible)
|
Handlebars.registerHelper('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
|
||||||
.sort((a, b) => {
|
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
|
||||||
if (a.name.startsWith("Survie") && b.name.startsWith("Survie")) {
|
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
|
||||||
if (a.name.includes("Cité")) return -1;
|
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
|
||||||
if (b.name.includes("Cité")) return 1;
|
|
||||||
if (a.name.includes("Extérieur")) return -1;
|
|
||||||
if (b.name.includes("Extérieur")) return 1;
|
|
||||||
return a.name.localeCompare(b.name);
|
|
||||||
}
|
|
||||||
if (a.system.categorie.startsWith("melee") && b.system.categorie.startsWith("melee")) {
|
|
||||||
if (a.name.includes("Corps")) return -1;
|
|
||||||
if (b.name.includes("Corps")) return 1;
|
|
||||||
if (a.name.includes("Dague")) return -1;
|
|
||||||
if (b.name.includes("Dague")) return 1;
|
|
||||||
if (a.name.includes("Esquive")) return -1;
|
|
||||||
if (b.name.includes("Esquive")) return 1;
|
|
||||||
return a.name.localeCompare(b.name);
|
|
||||||
}
|
|
||||||
if (a.name.startsWith("Voie") && b.name.startsWith("Voie")) {
|
|
||||||
if (a.name.includes("Oniros")) return -1;
|
|
||||||
if (b.name.includes("Oniros")) return 1;
|
|
||||||
if (a.name.includes("Hypnos")) return -1;
|
|
||||||
if (b.name.includes("Hypnos")) return 1;
|
|
||||||
if (a.name.includes("Narcos")) return -1;
|
|
||||||
if (b.name.includes("Narcos")) return 1;
|
|
||||||
if (a.name.includes("Thanatos")) return -1;
|
|
||||||
if (b.name.includes("Thanatos")) return 1;
|
|
||||||
return a.name.localeCompare(b.name);
|
|
||||||
}
|
|
||||||
return a.name.localeCompare(b.name);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
Handlebars.registerHelper('linkCompendium', (compendium, id, name) => `@Compendium[${compendium}.${id}]{${name}}`);
|
|
||||||
Handlebars.registerHelper('uniteQuantite', (type) => RdDItem.getUniteQuantite(type));
|
|
||||||
Handlebars.registerHelper('isEquipementFieldEditable', (type, field) => RdDItem.isEquipementFieldEditable(type, field));
|
|
||||||
Handlebars.registerHelper('getFrequenceRarete', (rarete, field) => Environnement.getFrequenceRarete(rarete, field));
|
Handlebars.registerHelper('getFrequenceRarete', (rarete, field) => Environnement.getFrequenceRarete(rarete, field));
|
||||||
Handlebars.registerHelper('either', (a, b) => a ?? b);
|
|
||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getItem(itemId, actorId = undefined) {
|
||||||
|
return actorId ? game.actors.get(actorId)?.getObjet(itemId) : game.items.get(itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
static linkCompendium(pack, id, name) {
|
||||||
|
return `@Compendium[${pack}.${id}]{${name}}`;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async creerObjet(actorSheet) {
|
static async creerObjet(actorSheet) {
|
||||||
let itemType = $(".item-type").val();
|
let itemType = $(".item-type").val();
|
||||||
@@ -344,7 +323,7 @@ export class RdDUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async selectObjetType(actorSheet) {
|
static async selectObjetType(actorSheet) {
|
||||||
let typeObjets = RdDItem.getTypesObjetsEquipement();
|
let typeObjets = RdDItem.getItemTypesInventaire();
|
||||||
let options = `<span class="competence-label">Selectionnez le type d'équipement</span><select class="item-type">`;
|
let options = `<span class="competence-label">Selectionnez le type d'équipement</span><select class="item-type">`;
|
||||||
for (let typeName of typeObjets) {
|
for (let typeName of typeObjets) {
|
||||||
options += `<option value="${typeName}">${typeName}</option>`
|
options += `<option value="${typeName}">${typeName}</option>`
|
||||||
@@ -466,9 +445,9 @@ export class RdDUtility {
|
|||||||
formData.livres = this.arrayOrEmpty(itemTypes['livre']);
|
formData.livres = this.arrayOrEmpty(itemTypes['livre']);
|
||||||
formData.potions = this.arrayOrEmpty(itemTypes['potion']);
|
formData.potions = this.arrayOrEmpty(itemTypes['potion']);
|
||||||
formData.ingredients = this.arrayOrEmpty(itemTypes['ingredient']);
|
formData.ingredients = this.arrayOrEmpty(itemTypes['ingredient']);
|
||||||
|
formData.faunes = this.arrayOrEmpty(itemTypes['faune']);
|
||||||
formData.herbes = this.arrayOrEmpty(itemTypes['herbe']);
|
formData.herbes = this.arrayOrEmpty(itemTypes['herbe']);
|
||||||
formData.monnaie = this.arrayOrEmpty(itemTypes['monnaie']);
|
formData.monnaie = this.arrayOrEmpty(itemTypes['monnaie']).sort(Monnaie.triValeurEntiere());
|
||||||
formData.monnaie.sort(Monnaie.triValeurEntiere());
|
|
||||||
formData.nourritureboissons = this.arrayOrEmpty(itemTypes['nourritureboisson']);
|
formData.nourritureboissons = this.arrayOrEmpty(itemTypes['nourritureboisson']);
|
||||||
formData.gemmes = this.arrayOrEmpty(itemTypes['gemme']);
|
formData.gemmes = this.arrayOrEmpty(itemTypes['gemme']);
|
||||||
|
|
||||||
@@ -481,6 +460,7 @@ export class RdDUtility {
|
|||||||
.concat(formData.potions)
|
.concat(formData.potions)
|
||||||
.concat(formData.ingredients)
|
.concat(formData.ingredients)
|
||||||
.concat(formData.herbes)
|
.concat(formData.herbes)
|
||||||
|
.concat(formData.faunes)
|
||||||
.concat(formData.monnaie)
|
.concat(formData.monnaie)
|
||||||
.concat(formData.nourritureboissons)
|
.concat(formData.nourritureboissons)
|
||||||
.concat(formData.gemmes);
|
.concat(formData.gemmes);
|
||||||
@@ -996,7 +976,7 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static slideOnDelete(sheet, htmlToDelete) {
|
static slideOnDelete(sheet, htmlToDelete) {
|
||||||
return htmlToDelete.slideUp(200, () => sheet.render(false));
|
return htmlToDelete?.slideUp(200, () => sheet.render(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ export const referenceAjustements = {
|
|||||||
},
|
},
|
||||||
encTotal: {
|
encTotal: {
|
||||||
isVisible: (rollData, actor) => RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac) && RdDItemCompetence.isMalusEncombrementTotal(rollData.competence),
|
isVisible: (rollData, actor) => RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac) && RdDItemCompetence.isMalusEncombrementTotal(rollData.competence),
|
||||||
isUsed: (rollData, actor) => RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac) && RdDItemCompetence.isMalusEncombrementTotal(rollData.competence) && rollData.use.encTotal,
|
isUsed: (rollData, actor) => !rollData.oeuvre && RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac) && RdDItemCompetence.isMalusEncombrementTotal(rollData.competence) && rollData.use.encTotal,
|
||||||
getLabel: (rollData, actor) => 'Encombrement total',
|
getLabel: (rollData, actor) => 'Encombrement total',
|
||||||
getValue: (rollData, actor) => -actor.getEncTotal()
|
getValue: (rollData, actor) => -actor.getEncTotal()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export class SystemCompendiums extends FormApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static getPack(compendium) {
|
static getPack(compendium) {
|
||||||
return game.packs.get(SystemCompendiums.getCompendium(compendium));
|
return game.packs.get(SystemCompendiums.getCompendium(compendium)) ?? game.packs.get(SystemCompendiums._getDefaultCompendium(compendium));
|
||||||
}
|
}
|
||||||
|
|
||||||
static async getPackContent(compendium, docType) {
|
static async getPackContent(compendium, docType) {
|
||||||
@@ -213,11 +213,11 @@ export class CompendiumTableHelpers {
|
|||||||
let max = 0;
|
let max = 0;
|
||||||
const total = elements.map(it => itemFrequence(it)).reduce(Misc.sum(), 0);
|
const total = elements.map(it => itemFrequence(it)).reduce(Misc.sum(), 0);
|
||||||
return elements.map(it => {
|
return elements.map(it => {
|
||||||
const frequence = itemFrequence(it);
|
const frequence = itemFrequence(it);
|
||||||
let row = { document: it, frequence: frequence, min: max + 1, max: max + frequence, total: total };
|
let row = { document: it, frequence: frequence, min: max + 1, max: max + frequence, total: total };
|
||||||
max += frequence;
|
max += frequence;
|
||||||
return row;
|
return row;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static async getRandom(table, type, subTypes, forcedRoll = undefined, localisation = undefined) {
|
static async getRandom(table, type, subTypes, forcedRoll = undefined, localisation = undefined) {
|
||||||
|
|||||||
@@ -1,67 +1,68 @@
|
|||||||
{"name":"Floume","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.0EA5It28VyLzQE6n"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Floume.webp","effects":[],"_id":"0EA5It28VyLzQE6n","system":{"description":"<p>Fruit du floumier, sorte de poirier pleureur vivant dans les lieux très humides, au bord des rivières ou dans les marais. La floume a l’aspect d’une poire jaune pâle à la chair ferme, grumeleuse et rose. Son goût est âcre et amer, et son pouvoir nutritif encore plus faible que celui des clopinettes. Il existe heureusement une larve parasite, appelée <em>ver du floumier</em> ou plus simplement <em>floumette</em>. Ce ver ronge la floume de l’intérieur et la dévore entièrement, ne laissant à la place de la chair qu’un excrément brunâtre, sorte de gelée poisseuse. Cette pommade est en revanche hautement nutritive, bien que son goût soit parmi les plus ignobles. Jouer VOLONTÉ à -3, et en cas d’échec, recracher tellement c’est mauvais. Une floume bien floumée, c’est à-dire bien véreuse, vaut en moyenne 3 points de sustentation.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Lieux humides","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708516,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Floume","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.0EA5It28VyLzQE6n"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Floume.webp","effects":[],"_id":"0EA5It28VyLzQE6n","system":{"description":"<p>Fruit du floumier, sorte de poirier pleureur vivant dans les lieux très humides, au bord des rivières ou dans les marais. La floume a l’aspect d’une poire jaune pâle à la chair ferme, grumeleuse et rose. Son goût est âcre et amer, et son pouvoir nutritif encore plus faible que celui des clopinettes. Il existe heureusement une larve parasite, appelée <em>ver du floumier</em> ou plus simplement <em>floumette</em>. Ce ver ronge la floume de l’intérieur et la dévore entièrement, ne laissant à la place de la chair qu’un excrément brunâtre, sorte de gelée poisseuse. Cette pommade est en revanche hautement nutritive, bien que son goût soit parmi les plus ignobles. Jouer VOLONTÉ à -3, et en cas d’échec, recracher tellement c’est mauvais. Une floume bien floumée, c’est à-dire bien véreuse, vaut en moyenne 3 points de sustentation.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708516,"modifiedTime":1670025575828,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Salsimir à points jaunes","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.2IHZslApFfV72VMw"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20%C3%A0%20points%20jaunes.webp","effects":[],"_id":"2IHZslApFfV72VMw","system":{"description":"<p>Sorte de bolet doté d’un pied blanc et mince, au chapeau arrondi brun à pois jaunes.</p>\n<p>Commun.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Commune","frequence":54}],"niveau":1,"base":0,"categorie":"Cuisine","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708516,"modifiedTime":1669770106785,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Salsimir à points jaunes","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.2IHZslApFfV72VMw"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20%C3%A0%20points%20jaunes.webp","effects":[],"_id":"2IHZslApFfV72VMw","system":{"description":"<p>Sorte de bolet doté d’un pied blanc et mince, au chapeau arrondi brun à pois jaunes.</p>\n<p>Commun.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54},{"milieu":"Sous-sols","rarete":"Frequente","frequence":18}],"niveau":1,"base":0,"categorie":"Cuisine","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708516,"modifiedTime":1670025575828,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Tanemiel d'argent","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.3Idia6bqLgdtiswS"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20argent%C3%A9.webp","effects":[],"_id":"3Idia6bqLgdtiswS","system":{"description":"<p><em style=\"box-sizing: border-box; user-select: text;\">Herbe de repos.</em></p>\n<p>Variété de tanemiel aux reflets argentés, poussant comme ses frères en forêts humides et chaudes, et dont l'existence est presque aussi mythique. </p>\n<p>Rarissime.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.5,"milieu":"Forêts chaudes et humides","environnement":[{"milieu":"Forêts chaudes et humides","rarete":"Rarissime","frequence":2}],"niveau":5,"base":0,"categorie":"Repos","rarete":"Rarissime"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708516,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Tanemiel d'argent","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.3Idia6bqLgdtiswS"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20argent%C3%A9.webp","effects":[],"_id":"3Idia6bqLgdtiswS","system":{"description":"<p><em style=\"box-sizing: border-box; user-select: text;\">Herbe de repos.</em></p>\n<p>Variété de tanemiel aux reflets argentés, poussant comme ses frères en forêts humides et chaudes, et dont l'existence est presque aussi mythique. </p>\n<p>Rarissime.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.5,"milieu":"Forêts chaudes et humides","environnement":[{"milieu":"Forêts","rarete":"Rarissime","frequence":4}],"niveau":5,"base":0,"categorie":"Repos","rarete":"Rarissime"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708516,"modifiedTime":1670025575828,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Cheleuse","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.3PzaM8d7jLjdzdkt"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Cheleuse.webp","effects":[],"_id":"3PzaM8d7jLjdzdkt","system":{"description":"<p>Fausse menthe à feuilles urticantes.</p>\n<p>M1 \\ P 5 minutes \\ D1 \\ -3 \\ Liqueur de Bagdol +16, Mirobolant +14.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Lieux humides","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Cheleuse","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.3PzaM8d7jLjdzdkt"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Cheleuse.webp","effects":[],"_id":"3PzaM8d7jLjdzdkt","system":{"description":"<p>Fausse menthe à feuilles urticantes.</p>\n<p>M1 \\ P 5 minutes \\ D1 \\ -3 \\ Liqueur de Bagdol +16, Mirobolant +14.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1670025575828,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Champirigolo","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.45vMHMwrCFeLZyH8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Champirigolo.webp","effects":[],"_id":"45vMHMwrCFeLZyH8","system":{"description":"<p>Le champirigolo est un champignon de bordure de sous-bois, ressemblant à un petit bonhomme caché sous un chapeau conique aplati. Le « visage » du bonhomme, de couleur chair, tavelé, donne souvent l’impression de tirer la langue à qui le regarde. <br />Comestible, il possède toutefois des vertus hallucinogènes, provoquant des crises de fou rire, et, d’une manière générale, faisant trouver de la drôlerie dans tout. <br />En termes de jeu, il augmente l’EMPATHIE au détriment de l’INTELLECT.</p>\n<p>Fréquent.</p>\n<p><em>Cf : p.139</em></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Frequente","frequence":18}],"niveau":null,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Champirigolo","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.45vMHMwrCFeLZyH8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Champirigolo.webp","effects":[],"_id":"45vMHMwrCFeLZyH8","system":{"description":"<p>Le champirigolo est un champignon de bordure de sous-bois, ressemblant à un petit bonhomme caché sous un chapeau conique aplati. Le « visage » du bonhomme, de couleur chair, tavelé, donne souvent l’impression de tirer la langue à qui le regarde. <br />Comestible, il possède toutefois des vertus hallucinogènes, provoquant des crises de fou rire, et, d’une manière générale, faisant trouver de la drôlerie dans tout. <br />En termes de jeu, il augmente l’EMPATHIE au détriment de l’INTELLECT.</p>\n<p>Fréquent.</p>\n<p><em>Cf : p.139</em></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1670025575828,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Nanar","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.4ROad7HKzxuRKXNK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Nanar.webp","effects":[],"_id":"4ROad7HKzxuRKXNK","system":{"description":"<p>Champignon assez amusant, avec un pied minuscule et un joli petit chapeau rose.</p>\n<p>M2 \\ P 2 minutes \\ D1 \\ -3 \\ Teinture d’Érozonne +16, Lait de lune +12.</p>\n<p>Commun.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Commune","frequence":54}],"niveau":0,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1669770106783,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Nanar","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.4ROad7HKzxuRKXNK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Nanar.webp","effects":[],"_id":"4ROad7HKzxuRKXNK","system":{"description":"<p>Champignon assez amusant, avec un pied minuscule et un joli petit chapeau rose.</p>\n<p>M2 \\ P 2 minutes \\ D1 \\ -3 \\ Teinture d’Érozonne +16, Lait de lune +12.</p>\n<p>Commun.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54},{"milieu":"Sous-sols","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1670025575828,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Fausse suppure","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.57FoMF6mBK2ogX53"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fausse%20suppure.webp","effects":[],"_id":"57FoMF6mBK2ogX53","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Mousse semblable à la suppure, mais plus sèche, et poussant en tous milieux.</p>\n<p>Commune.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Tous","environnement":[{"milieu":"Tous","rarete":"Commune","frequence":54}],"niveau":1,"base":0,"categorie":"Soin","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Fausse suppure","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.57FoMF6mBK2ogX53"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fausse%20suppure.webp","effects":[],"_id":"57FoMF6mBK2ogX53","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Mousse semblable à la suppure, mais plus sèche, et poussant en tous milieux.</p>\n<p>Commune.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Tous","environnement":[{"milieu":"Collines","rarete":"Commune","frequence":54},{"milieu":"Cours d'eau","rarete":"Commune","frequence":54},{"milieu":"Déserts","rarete":"Commune","frequence":54},{"milieu":"Forêts","rarete":"Commune","frequence":54},{"milieu":"Marais","rarete":"Commune","frequence":54},{"milieu":"Montagnes","rarete":"Commune","frequence":54},{"milieu":"Plaines","rarete":"Commune","frequence":54}],"niveau":1,"base":0,"categorie":"Soin","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Salsimir ventru","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.66Rzf8phcEQRIShv"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20ventru.webp","effects":[],"_id":"66Rzf8phcEQRIShv","system":{"description":"<p>À points jaunes ou à points rouges, le salsimir ventru se distingue par un pied large et renflé.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Rare","frequence":6}],"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Salsimir ventru","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.66Rzf8phcEQRIShv"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20ventru.webp","effects":[],"_id":"66Rzf8phcEQRIShv","system":{"description":"<p>À points jaunes ou à points rouges, le salsimir ventru se distingue par un pied large et renflé.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":9},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":3}],"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708517,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Tricolet","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.6gb2cjdPXI44ym8D"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tricollet.webp","effects":[],"_id":"6gb2cjdPXI44ym8D","system":{"description":"<p>Champignon à pied blanc, triple volve, et large chapeau vert à points bleus.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Rare","frequence":6}],"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708518,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Tricolet","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.6gb2cjdPXI44ym8D"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tricollet.webp","effects":[],"_id":"6gb2cjdPXI44ym8D","system":{"description":"<p>Champignon à pied blanc, triple volve, et large chapeau vert à points bleus.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":3}],"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708518,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Salsimir à points verts","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.7IV2V4ZotDEP2sLs"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20%C3%A0%20points%20verts.webp","effects":[],"_id":"7IV2V4ZotDEP2sLs","system":{"description":"<p>Champignon semblable aux autres variétés de salsimir, hormis la couleur de ses points.</p>\n<p>M1 \\ P 5 minutes \\ D1 \\ -5 \\ Lait de lune +14, Gelée royale +12.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708518,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Salsimir à points verts","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.7IV2V4ZotDEP2sLs"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20%C3%A0%20points%20verts.webp","effects":[],"_id":"7IV2V4ZotDEP2sLs","system":{"description":"<p>Champignon semblable aux autres variétés de salsimir, hormis la couleur de ses points.</p>\n<p>M1 \\ P 5 minutes \\ D1 \\ -5 \\ Lait de lune +14, Gelée royale +12.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":9},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":3}],"niveau":null,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708518,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Tanemiel doré","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.7RgTRB47YPH74BwF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20dor%C3%A9.webp","effects":[],"_id":"7RgTRB47YPH74BwF","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Variété de tanemiel aux feuilles luisantes de couleur ambrée.</p>\n<p>Rarissime.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":2,"milieu":"Forêts chaudes et humides","environnement":[{"milieu":"Forêts chaudes et humides","rarete":"Rarissime","frequence":2}],"niveau":10,"base":0,"categorie":"Soin","rarete":"Rarissime"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708518,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Tanemiel doré","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.7RgTRB47YPH74BwF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20dor%C3%A9.webp","effects":[],"_id":"7RgTRB47YPH74BwF","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Variété de tanemiel aux feuilles luisantes de couleur ambrée.</p>\n<p>Rarissime.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":2,"milieu":"Forêts chaudes et humides","environnement":[{"milieu":"Forêts","rarete":"Rarissime","frequence":2}],"niveau":10,"base":0,"categorie":"Soin","rarete":"Rarissime"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708518,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Bousille","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.84i33KtUxLwCK2Uu"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Bousille.webp","effects":[],"_id":"84i33KtUxLwCK2Uu","system":{"description":"<p>Appétissant champignon brun beige très semblable à la morille.</p>\n<p>M5 \\ P 6 rounds \\ D3 \\ -4 \\ Teinture d’Érozonne +10, Topazoïne +6.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Bousille","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.84i33KtUxLwCK2Uu"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Bousille.webp","effects":[],"_id":"84i33KtUxLwCK2Uu","system":{"description":"<p>Appétissant champignon brun beige très semblable à la morille.</p>\n<p>M5 \\ P 6 rounds \\ D3 \\ -4 \\ Teinture d’Érozonne +10, Topazoïne +6.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Veloute","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.8MO2HBua7RUdGN3D"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Veloute.webp","effects":[],"_id":"8MO2HBua7RUdGN3D","system":{"description":"<p>Fruit du veloutier, petit arbre pleureur au tronc recouvert d’un lichen duveteux gris rose, poussant usuellement au bord de l’eau, la veloute est une petite pêche très velue, juteuse et douce, au goût panaché de litchi et de fraise des bois.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Lieux humides","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Veloute","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.8MO2HBua7RUdGN3D"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Veloute.webp","effects":[],"_id":"8MO2HBua7RUdGN3D","system":{"description":"<p>Fruit du veloutier, petit arbre pleureur au tronc recouvert d’un lichen duveteux gris rose, poussant usuellement au bord de l’eau, la veloute est une petite pêche très velue, juteuse et douce, au goût panaché de litchi et de fraise des bois.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Enervure","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.8QFBVNJMEsANaYaq"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/%C3%89nervure.webp","effects":[],"_id":"8QFBVNJMEsANaYaq","system":{"description":"<p>Fausse fougère aux feuilles tranchantes comme des rasoirs, distillant un venin mortel.</p>\n<p>M3 \\ P 1 minute \\ D2 \\ -3 \\ Tournegraisse +14, Mirobolant +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Enervure","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.8QFBVNJMEsANaYaq"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/%C3%89nervure.webp","effects":[],"_id":"8QFBVNJMEsANaYaq","system":{"description":"<p>Fausse fougère aux feuilles tranchantes comme des rasoirs, distillant un venin mortel.</p>\n<p>M3 \\ P 1 minute \\ D2 \\ -3 \\ Tournegraisse +14, Mirobolant +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Lulube","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.8a2EJVdhdU7CXFCn"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Lulube.webp","effects":[],"_id":"8a2EJVdhdU7CXFCn","system":{"description":"<p>Fruit du lulubier, arbre de la taille d’un cerisier, la lulube est un petit fruit rouge dont le goût est un panaché de cerise et de citron.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Tous","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Lulube","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.8a2EJVdhdU7CXFCn"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Lulube.webp","effects":[],"_id":"8a2EJVdhdU7CXFCn","system":{"description":"<p>Fruit du lulubier, arbre de la taille d’un cerisier, la lulube est un petit fruit rouge dont le goût est un panaché de cerise et de citron.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18},{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Déserts","rarete":"Frequente","frequence":18},{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18},{"milieu":"Montagnes","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Suppure","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.9XJEICURxX1qVud6"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Suppure.webp","effects":[],"_id":"9XJEICURxX1qVud6","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Sorte de mousse d’aspect maladif, s’accrochant aux vieux troncs et aux rochers des forêts, d’où elle semble <em>suppurer</em>.</p>\n<p>Commune.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.03,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54}],"niveau":2,"base":0,"categorie":"Soin","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Suppure","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.9XJEICURxX1qVud6"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Suppure.webp","effects":[],"_id":"9XJEICURxX1qVud6","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Sorte de mousse d’aspect maladif, s’accrochant aux vieux troncs et aux rochers des forêts, d’où elle semble <em>suppurer</em>.</p>\n<p>Commune.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.03,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54}],"niveau":2,"base":0,"categorie":"Soin","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708519,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Salsimir à points rouges","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.9pTMw1dFbVaN2iiF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20%C3%A0%20points%20rouges.webp","effects":[],"_id":"9pTMw1dFbVaN2iiF","system":{"description":"<p>Autre variété de salsimir, au teint plus clair et tacheté de points rouges. Fréquent.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Frequente","frequence":18}],"niveau":2,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Salsimir à points rouges","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.9pTMw1dFbVaN2iiF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20%C3%A0%20points%20rouges.webp","effects":[],"_id":"9pTMw1dFbVaN2iiF","system":{"description":"<p>Autre variété de salsimir, au teint plus clair et tacheté de points rouges. Fréquent.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":2,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Hécatombe","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.9tG4XPzyvjrSAj3o"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/H%C3%A9catombe.webp","effects":[],"_id":"9tG4XPzyvjrSAj3o","system":{"description":"<p>Petite poire rouge à peau lustrée, au goût acidulé et pas désagréable.</p>\n<p>M4 \\ P 1 minute \\ D2 \\ -5 \\ Bitume de Camphre +12, Mirobolant +6.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Tous","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Hécatombe","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.9tG4XPzyvjrSAj3o"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/H%C3%A9catombe.webp","effects":[],"_id":"9tG4XPzyvjrSAj3o","system":{"description":"<p>Petite poire rouge à peau lustrée, au goût acidulé et pas désagréable.</p>\n<p>M4 \\ P 1 minute \\ D2 \\ -5 \\ Bitume de Camphre +12, Mirobolant +6.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Collines","rarete":"Rare","frequence":6},{"milieu":"Cours d'eau","rarete":"Rare","frequence":6},{"milieu":"Déserts","rarete":"Frequente","frequence":18},{"milieu":"Forêts","rarete":"Rare","frequence":6},{"milieu":"Marais","rarete":"Rare","frequence":6},{"milieu":"Montagnes","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Fesse de groin","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.ALwHAF15KYWUQfQc"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fesse%20de%20groin.webp","effects":[],"_id":"ALwHAF15KYWUQfQc","system":{"description":"<p>Poussant à même le sol, sans quasiment de pied, c’est un champignon fendu verticalement, évoquant un gros derrière pustuleux. Quand on le bouscule, il émet un bruit incongru, accompagné d’une odeur pénible.</p>\n<p>M3 \\ P 1 minute \\ D1 \\ -3 \\ Bitume de Camphre +16, Élixir des Gnomes +12.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Commune","frequence":54}],"niveau":0,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Fesse de groin","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.ALwHAF15KYWUQfQc"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fesse%20de%20groin.webp","effects":[],"_id":"ALwHAF15KYWUQfQc","system":{"description":"<p>Poussant à même le sol, sans quasiment de pied, c’est un champignon fendu verticalement, évoquant un gros derrière pustuleux. Quand on le bouscule, il émet un bruit incongru, accompagné d’une odeur pénible.</p>\n<p>M3 \\ P 1 minute \\ D1 \\ -3 \\ Bitume de Camphre +16, Élixir des Gnomes +12.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Asper violet","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.EYy9B0xJ0IGWYEuh"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Asper%20violet.webp","effects":[],"_id":"EYy9B0xJ0IGWYEuh","system":{"description":"<p>Champignon violet à pied filiforme et chapeau pointu très éfilé.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Frequente","frequence":18}],"niveau":2,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Asper violet","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.EYy9B0xJ0IGWYEuh"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Asper%20violet.webp","effects":[],"_id":"EYy9B0xJ0IGWYEuh","system":{"description":"<p>Champignon violet à pied filiforme et chapeau pointu très éfilé.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":2,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1670025575829,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Candique","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/candique.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bxDITKRhXiyvLhMz"}},"system":{"description":"<p>Poudre blanche apparaissant sous l’écorce de nombreux arbres,</p>\n<p>VUE/Alchimie à 0.</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1668808206109,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"FjfZ789LlkzUUSMU"}
|
{"name":"Candique","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/candique.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bxDITKRhXiyvLhMz"}},"system":{"description":"<p>Poudre blanche apparaissant sous l’écorce de nombreux arbres,</p>\n<p>VUE/Alchimie à 0.</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1668808206109,"modifiedTime":1670025575830,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"FjfZ789LlkzUUSMU"}
|
||||||
{"name":"Ortilise","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.GrzjjbOUWlOUgzEQ"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortilise.webp","effects":[],"_id":"GrzjjbOUWlOUgzEQ","system":{"description":"<p>Redoutable variété d’ortie, poussant dans les lieux humides, le voisinage des marais.</p>\n<p>M3 \\ P 1 minute \\ D2 \\ -3 \\ Topazoïne +12, Lait de lune +8.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Lieux humides","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1669770106785,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Ortilise","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.GrzjjbOUWlOUgzEQ"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortilise.webp","effects":[],"_id":"GrzjjbOUWlOUgzEQ","system":{"description":"<p>Redoutable variété d’ortie, poussant dans les lieux humides, le voisinage des marais.</p>\n<p>M3 \\ P 1 minute \\ D2 \\ -3 \\ Topazoïne +12, Lait de lune +8.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux humides","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1670025575830,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Tshaï","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.H0eZczDzhj1fUUxZ"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tsha%C3%AF.webp","effects":[],"_id":"H0eZczDzhj1fUUxZ","system":{"description":"<p>Petit arbuste à fleurs blanches et feuilles persistantes, poussant au versant des collines ensoleillées. Une fois séchées, ses feuilles sont consommées en infusion, donnant une boisson parfumée et tonique. Par extension, tshaï est aussi le nom donné à la boisson en question.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":null,"milieu":"Collines","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18}],"niveau":null,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Tshaï","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.H0eZczDzhj1fUUxZ"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tsha%C3%AF.webp","effects":[],"_id":"H0eZczDzhj1fUUxZ","system":{"description":"<p>Petit arbuste à fleurs blanches et feuilles persistantes, poussant au versant des collines ensoleillées. Une fois séchées, ses feuilles sont consommées en infusion, donnant une boisson parfumée et tonique. Par extension, tshaï est aussi le nom donné à la boisson en question.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":null,"milieu":"Collines","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18}],"niveau":null,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1670025575830,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Obyssum vert","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/l_obyssum_vert.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.D5Z3FaUv91B8eCOP"}},"system":{"description":"<p>Poudre verdâtre apparaissant sur les tiges de certains roseaux.</p>\n<p>VUE/Alchimie à -2</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.05,"milieu":"Lieux humides","environnement":[{"milieu":"Lieux humides","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1668808206019,"modifiedTime":1669770106784,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"HTtgzxpvUvMHilqx"}
|
{"name":"Obyssum vert","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/l_obyssum_vert.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.D5Z3FaUv91B8eCOP"}},"system":{"description":"<p>Poudre verdâtre apparaissant sur les tiges de certains roseaux.</p>\n<p>VUE/Alchimie à -2</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.05,"milieu":"Lieux humides","environnement":[{"milieu":"Cours d'eau","rarete":"Commune","frequence":54},{"milieu":"Marais","rarete":"Commune","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1668808206019,"modifiedTime":1670025575830,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"HTtgzxpvUvMHilqx"}
|
||||||
{"name":"Calamine","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.HlUFBr3yInurp96Z"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Calamine.webp","effects":[],"_id":"HlUFBr3yInurp96Z","system":{"description":"<p>Fruit du calaminier, sorte de figuier rampant doté de lianes et de vrilles. La calamine pousse en petites grappes de fruits à goût mi-figue, mi-raisin.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Tous","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Calamine","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.HlUFBr3yInurp96Z"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Calamine.webp","effects":[],"_id":"HlUFBr3yInurp96Z","system":{"description":"<p>Fruit du calaminier, sorte de figuier rampant doté de lianes et de vrilles. La calamine pousse en petites grappes de fruits à goût mi-figue, mi-raisin.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18},{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Déserts","rarete":"Frequente","frequence":18},{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18},{"milieu":"Montagnes","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708520,"modifiedTime":1670025575830,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Primelune","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.Kg13pgjU0u421Kcm"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Primelune.webp","effects":[],"_id":"Kg13pgjU0u421Kcm","system":{"description":"<p>Apparaissant le plus souvent à la nouvelle lune, c’est un petit champignon à pied blanc et chapeau plat vert tendre.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Commune","frequence":54}],"niveau":1,"base":0,"categorie":"Cuisine","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1669770106785,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Primelune","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.Kg13pgjU0u421Kcm"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Primelune.webp","effects":[],"_id":"Kg13pgjU0u421Kcm","system":{"description":"<p>Apparaissant le plus souvent à la nouvelle lune, c’est un petit champignon à pied blanc et chapeau plat vert tendre.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54},{"milieu":"Sous-sols","rarete":"Frequente","frequence":18}],"niveau":1,"base":0,"categorie":"Cuisine","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Fumebol","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.LJdoBQBE3KNDLXKq"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fumebol.webp","effects":[],"_id":"LJdoBQBE3KNDLXKq","system":{"description":"<p>Champignon brun ressemblant grossièrement au cèpe bolet.</p>\n<p>M5 \\ P 8 rounds \\ D2 \\ -5 \\ Sable-Poudre +12, Huile de Sélikanthe +8.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Fumebol","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.LJdoBQBE3KNDLXKq"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fumebol.webp","effects":[],"_id":"LJdoBQBE3KNDLXKq","system":{"description":"<p>Champignon brun ressemblant grossièrement au cèpe bolet.</p>\n<p>M5 \\ P 8 rounds \\ D2 \\ -5 \\ Sable-Poudre +12, Huile de Sélikanthe +8.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Chramaelium","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chramaelium.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ncpONCxPPNZ9YbBr"}},"system":{"description":"<p>Poudre rouge obtenue par disruption alchimique de la <em>chramaele</em>, minerai ayant l’apparence de la glaise.</p>\n<p>VUE/Alchimie à -4</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1668808206114,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"NNTl6CAdRZcylrU1"}
|
{"name":"Chramaelium","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chramaelium.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ncpONCxPPNZ9YbBr"}},"system":{"description":"<p>Poudre rouge obtenue par disruption alchimique de la <em>chramaele</em>, minerai ayant l’apparence de la glaise.</p>\n<p>VUE/Alchimie à -4</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.5,"milieu":"Obtenu à partir de glaise","environnement":[{"milieu":"Cours d'eau","rarete":"Rare","frequence":12},{"milieu":"Forêts","rarete":"Rare","frequence":12},{"milieu":"Marais","rarete":"Rare","frequence":12},{"milieu":"Plaines","rarete":"Rare","frequence":12}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1668808206114,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"NNTl6CAdRZcylrU1"}
|
||||||
{"name":"Gironcle","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.NhJm0FRVOi8L3xqv"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Gironcle.webp","effects":[],"_id":"NhJm0FRVOi8L3xqv","system":{"description":"<p>Sorte de girolle à pied violet et corolle brun doré.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Rare","frequence":6}],"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Gironcle","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.NhJm0FRVOi8L3xqv"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Gironcle.webp","effects":[],"_id":"NhJm0FRVOi8L3xqv","system":{"description":"<p>Sorte de girolle à pied violet et corolle brun doré.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":2}],"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Amandelle","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Amandelle.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.w7jEFHGFrcrKAesQ"}},"_id":"QN2KLZLNL1JUh2bF","system":{"description":"<p>Fruit de l’amandelier, un petit arbuste à feuilles très découpées de couleur mauve pâle à violet foncé. L’amandelle est une noix plate et allongée au goût d’amande allié au parfum de violette.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Tous","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1669770106778,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
{"name":"Amandelle","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Amandelle.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.w7jEFHGFrcrKAesQ"}},"_id":"QN2KLZLNL1JUh2bF","system":{"description":"<p>Fruit de l’amandelier, un petit arbuste à feuilles très découpées de couleur mauve pâle à violet foncé. L’amandelle est une noix plate et allongée au goût d’amande allié au parfum de violette.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18},{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Déserts","rarete":"Frequente","frequence":18},{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18},{"milieu":"Montagnes","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708521,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
||||||
{"name":"Ortironce","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.RpUC6z3xhwnmv3sp"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortironce.webp","effects":[],"_id":"RpUC6z3xhwnmv3sp","system":{"description":"<p>Ronce venimeuse infestant de nombreux fourrés.</p>\n<p>M4 \\ P 1 minute \\ D2 \\ -3 \\ Bitume de Camphre +12, Teinture d’Érozonne +8.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54}],"niveau":0,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106785,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Ortironce","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.RpUC6z3xhwnmv3sp"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortironce.webp","effects":[],"_id":"RpUC6z3xhwnmv3sp","system":{"description":"<p>Ronce venimeuse infestant de nombreux fourrés.</p>\n<p>M4 \\ P 1 minute \\ D2 \\ -3 \\ Bitume de Camphre +12, Teinture d’Érozonne +8.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Collines","rarete":"Commune","frequence":54},{"milieu":"Cours d'eau","rarete":"Commune","frequence":54},{"milieu":"Forêts","rarete":"Commune","frequence":54},{"milieu":"Plaines","rarete":"Commune","frequence":54}],"niveau":0,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Nartha","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/nartha.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3mHSocNVPyWkmGBR"}},"system":{"description":"<p>Poudre noire obtenue par disruption alchimique du minerai appelé <em>narthalide</em>, sorte de marne.</p>\n<p>VUE/Alchimie à -3</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1668808206015,"modifiedTime":1669770106783,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"SiFtJoydPawJaMKA"}
|
{"name":"Nartha","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/nartha.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3mHSocNVPyWkmGBR"}},"system":{"description":"<p>Poudre noire obtenue par disruption alchimique du minerai appelé <em>narthalide</em>, sorte de marne.</p>\n<p>VUE/Alchimie à -3</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.4,"milieu":"Obtenu à partir de marne","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":30},{"milieu":"Marais","rarete":"Frequente","frequence":30},{"milieu":"Plaines","rarete":"Frequente","frequence":30}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1668808206015,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"SiFtJoydPawJaMKA"}
|
||||||
{"name":"Crétamère","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.Tfl4cElQxPQEXnPY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Cr%C3%A9tam%C3%A8re.webp","effects":[],"_id":"Tfl4cElQxPQEXnPY","system":{"description":"<p>Petite fraise des bois en forme de crête dentelée. Son goût est très amer et devrait suffire à dissuader les gourmands.</p>\n<p>M3 \\ P 3 minutes \\ D2 \\ -3 \\ Lait de lune +12, Gelée royale +8.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Tous","rarete":"Frequente","frequence":18}],"niveau":null,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Crétamère","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.Tfl4cElQxPQEXnPY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Cr%C3%A9tam%C3%A8re.webp","effects":[],"_id":"Tfl4cElQxPQEXnPY","system":{"description":"<p>Petite fraise des bois en forme de crête dentelée. Son goût est très amer et devrait suffire à dissuader les gourmands.</p>\n<p>M3 \\ P 3 minutes \\ D2 \\ -3 \\ Lait de lune +12, Gelée royale +8.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18},{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Déserts","rarete":"Frequente","frequence":18},{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18},{"milieu":"Montagnes","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Frequente","frequence":18}],"niveau":null,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Mignote","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.UfzdMXpTcSgIpAEp"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Mignote.webp","effects":[],"_id":"UfzdMXpTcSgIpAEp","system":{"description":"<p>Cône du mignotier, arbre voisin du mélèze, poussant en contreforts montagneux. Les mignotes doivent être grillées puis moulues. La farine obtenue a un goût chocolaté qui accompagne agréablement le lait chaud du petit déjeuner.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Contreforts montagneux","environnement":[{"milieu":"Contreforts montagneux","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106783,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Mignote","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.UfzdMXpTcSgIpAEp"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Mignote.webp","effects":[],"_id":"UfzdMXpTcSgIpAEp","system":{"description":"<p>Cône du mignotier, arbre voisin du mélèze, poussant en contreforts montagneux. Les mignotes doivent être grillées puis moulues. La farine obtenue a un goût chocolaté qui accompagne agréablement le lait chaud du petit déjeuner.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Contreforts montagneux","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Montagnes","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Endebrume","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.VGId76yXwx2k0Cli"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endebrume.webp","effects":[],"_id":"VGId76yXwx2k0Cli","system":{"description":"<p><em>Herbe de repos.</em></p>\n<p>Petite plante ramifiée aux tiges fines comme des cheveux, poussant dans les lieux frais et humides : marais ombragés, certaines forêts, et parfois vallées de montagne. Un peu moins rare est la fausse endebrume, qui lui ressemble physiquement, mais n'a aucune vertu. <br /><em>VUE/Botanique à -1 pour savoir à quelle espèce on a affaire (jet obligatoire à chaque cueillette).</em></p>\n<p>Rare</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Lieux frais et humides","environnement":[{"milieu":"Lieux frais et humides","rarete":"Rare","frequence":6}],"niveau":4,"base":0,"categorie":"Repos","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Endebrume","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.VGId76yXwx2k0Cli"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endebrume.webp","effects":[],"_id":"VGId76yXwx2k0Cli","system":{"description":"<p><em>Herbe de repos.</em></p>\n<p>Petite plante ramifiée aux tiges fines comme des cheveux, poussant dans les lieux frais et humides : marais ombragés, certaines forêts, et parfois vallées de montagne. Un peu moins rare est la fausse endebrume, qui lui ressemble physiquement, mais n'a aucune vertu. <br /><em>VUE/Botanique à -1 pour savoir à quelle espèce on a affaire (jet obligatoire à chaque cueillette).</em></p>\n<p>Rare</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Lieux frais et humides","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Forêts","rarete":"Rare","frequence":9},{"milieu":"Marais","rarete":"Rare","frequence":6},{"milieu":"Sous-sols","rarete":"Rare","frequence":4}],"niveau":4,"base":0,"categorie":"Repos","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Mélikasse","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.WbNKazgQZ4CeHtRo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/M%C3%A9likasse.webp","effects":[],"_id":"WbNKazgQZ4CeHtRo","system":{"description":"<p>Fruit du mélikassier, arbuste buissonneux voisin du sureau. La mélikasse pousse en grappes de petites baies noires. Insolite, son goût est un mélange de cassis et de savon.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Tous","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Mélikasse","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.WbNKazgQZ4CeHtRo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/M%C3%A9likasse.webp","effects":[],"_id":"WbNKazgQZ4CeHtRo","system":{"description":"<p>Fruit du mélikassier, arbuste buissonneux voisin du sureau. La mélikasse pousse en grappes de petites baies noires. Insolite, son goût est un mélange de cassis et de savon.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Tous","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18},{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Déserts","rarete":"Frequente","frequence":18},{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Marais","rarete":"Frequente","frequence":18},{"milieu":"Montagnes","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Aigronce","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.XVfDwjgzbRvotbP8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Aigronce.webp","effects":[],"_id":"XVfDwjgzbRvotbP8","system":{"description":"<p><em>Herbe de repos.</em></p>\n<p>Variété de klampine à l'odeur aigre et piquante. Pousse en lieux boisés des climats tempérés, parfois en lisière.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.04,"milieu":"Forêts tempérées","environnement":[{"milieu":"Forêts tempérées","rarete":"Frequente","frequence":18}],"niveau":2,"base":0,"categorie":"Repos","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106778,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Aigronce","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.XVfDwjgzbRvotbP8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Aigronce.webp","effects":[],"_id":"XVfDwjgzbRvotbP8","system":{"description":"<p><em>Herbe de repos.</em></p>\n<p>Variété de klampine à l'odeur aigre et piquante. Pousse en lieux boisés des climats tempérés, parfois en lisière.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.04,"milieu":"Forêts tempérées","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":2,"base":0,"categorie":"Repos","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Endorlotte","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.XWpfl6UmaMel1tJn"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp","effects":[],"_id":"XWpfl6UmaMel1tJn","system":{"description":"<p>Plante voisine du gui, poussant en parasite dans les branches des arbres de toutes forêts, l’endorlotte est une herbe de soin fonctionnant comme les dix grandes herbes connues, avec un bonus de guérison de +5. Son pouvoir ne s’applique toutefois qu’à la récupération des points de vie, pas à la cicatrisation des blessures. <br /><br />Elle doit être préparée en décoction selon la règle standard, à raison de 12 - 5 = 7 brins pour une décoction, et bue par le convalescent. Puis lors du test de récupération des points de vie\": <br />Part. 4 points de vie regagnés <br />Sign. 3 points de vie regagnés <br />Norm. 2 points de vie regagnés <br />Tout échec. Aucun point, sans autre conséquence. <br /><br />Enchantée, la décoction d’endorlotte fonctionne selon la règle standard avec son bonus de +5, et pratiquement devient équivalente à l’ortigal noir. <br />Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.25,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":5,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Endorlotte","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.XWpfl6UmaMel1tJn"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp","effects":[],"_id":"XWpfl6UmaMel1tJn","system":{"description":"<p>Plante voisine du gui, poussant en parasite dans les branches des arbres de toutes forêts, l’endorlotte est une herbe de soin fonctionnant comme les dix grandes herbes connues, avec un bonus de guérison de +5. Son pouvoir ne s’applique toutefois qu’à la récupération des points de vie, pas à la cicatrisation des blessures. <br /><br />Elle doit être préparée en décoction selon la règle standard, à raison de 12 - 5 = 7 brins pour une décoction, et bue par le convalescent. Puis lors du test de récupération des points de vie\": <br />Part. 4 points de vie regagnés <br />Sign. 3 points de vie regagnés <br />Norm. 2 points de vie regagnés <br />Tout échec. Aucun point, sans autre conséquence. <br /><br />Enchantée, la décoction d’endorlotte fonctionne selon la règle standard avec son bonus de +5, et pratiquement devient équivalente à l’ortigal noir. <br />Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.25,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":5,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Ortigal noir","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.Z20wqDHmbgFQSyXo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortigal%20noir.webp","effects":[],"_id":"Z20wqDHmbgFQSyXo","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Variété d’ortigal aux feuilles d’un vert sombre presque noir.</p>\n<p>Fréquent.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Marais","environnement":[{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":5,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1669770106784,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Ortigal noir","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.Z20wqDHmbgFQSyXo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortigal%20noir.webp","effects":[],"_id":"Z20wqDHmbgFQSyXo","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Variété d’ortigal aux feuilles d’un vert sombre presque noir.</p>\n<p>Fréquent.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Marais","environnement":[{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":5,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708522,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Satum","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.bBiHuMCom4B4nXBD"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Satum.webp","effects":[],"_id":"bBiHuMCom4B4nXBD","system":{"description":"<p>Également appelé nez de satin, le satum est une petite plante à feuille unique, douce et moirée comme le satin, poussant en toutes forêts, usuellement à l’orée des clairières. C’est une des herbes de base utilisées en alchimie.</p>\n<p>Commun.</p>\n<p> </p>\n<p><em>Voir Principes d’alchimie, p357.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.03,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54}],"niveau":null,"base":0,"categorie":"Alchimie","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708523,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Satum","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.bBiHuMCom4B4nXBD"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Satum.webp","effects":[],"_id":"bBiHuMCom4B4nXBD","system":{"description":"<p>Également appelé nez de satin, le satum est une petite plante à feuille unique, douce et moirée comme le satin, poussant en toutes forêts, usuellement à l’orée des clairières. C’est une des herbes de base utilisées en alchimie.</p>\n<p>Commun.</p>\n<p> </p>\n<p><em>Voir Principes d’alchimie, p357.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.03,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54}],"niveau":null,"base":0,"categorie":"Alchimie","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708523,"modifiedTime":1670025575831,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Chronophile","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.c6Gdd4A0QCTEnp6o"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Chronophile.webp","effects":[],"_id":"c6Gdd4A0QCTEnp6o","system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708523,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Chronophile","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.c6Gdd4A0QCTEnp6o"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Chronophile.webp","effects":[],"_id":"c6Gdd4A0QCTEnp6o","system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"Alchimie","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708523,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Névropenthe","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.chm4mCNhQXwJEtNy"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/N%C3%A9vropenthe.webp","effects":[],"_id":"chm4mCNhQXwJEtNy","system":{"description":"<p>Plante foisonnante à grappes de feuilles rondes, dont le vert est souvent piqueté de points rouges. Pousse au coeur de toutes forêts à l’abri des fourrés et des ronciers. C’est une des herbes de base utilisées en alchimie.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em style=\"box-sizing: border-box; user-select: text; color: #191813; font-family: GoudyAcc, sans-serif; text-align: justify;\">Voir Principes d’alchimie, p357.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.06,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"Alchimie","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708523,"modifiedTime":1669770106783,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Névropenthe","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.chm4mCNhQXwJEtNy"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/N%C3%A9vropenthe.webp","effects":[],"_id":"chm4mCNhQXwJEtNy","system":{"description":"<p>Plante foisonnante à grappes de feuilles rondes, dont le vert est souvent piqueté de points rouges. Pousse au coeur de toutes forêts à l’abri des fourrés et des ronciers. C’est une des herbes de base utilisées en alchimie.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em style=\"box-sizing: border-box; user-select: text; color: #191813; font-family: GoudyAcc, sans-serif; text-align: justify;\">Voir Principes d’alchimie, p357.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.06,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"Alchimie","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708523,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Ortigal","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.ckBk9H7jhFQC2IRX"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortigal.webp","effects":[],"_id":"ckBk9H7jhFQC2IRX","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Plante aquatique des marais, aux petites feuilles rondes et luisantes, voisine du nénuphar.</p>\n<p>Fréquent.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"Marais","environnement":[{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":4,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708524,"modifiedTime":1669770106784,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Ortigal","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.ckBk9H7jhFQC2IRX"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortigal.webp","effects":[],"_id":"ckBk9H7jhFQC2IRX","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Plante aquatique des marais, aux petites feuilles rondes et luisantes, voisine du nénuphar.</p>\n<p>Fréquent.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"Marais","environnement":[{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":4,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708524,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Croupigne","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.dr2xZkUKaWa3Gjvr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Croupigne.webp","effects":[],"_id":"dr2xZkUKaWa3Gjvr","system":{"description":"<p>Sorte de groseille rose pâle, poussant à l’orée des sous-bois et des clairières.</p>\n<p>M2 \\ P 5 minutes \\ D1 \\ -3 \\ Élixir des Gnomes +16, Gelée royale +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":null,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708524,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Croupigne","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.dr2xZkUKaWa3Gjvr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Croupigne.webp","effects":[],"_id":"dr2xZkUKaWa3Gjvr","system":{"description":"<p>Sorte de groseille rose pâle, poussant à l’orée des sous-bois et des clairières.</p>\n<p>M2 \\ P 5 minutes \\ D1 \\ -3 \\ Élixir des Gnomes +16, Gelée royale +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":null,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708524,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Noisemûre","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.eB5Nhus3Ao4H8ePT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Noisem%C3%BBre.webp","effects":[],"_id":"eB5Nhus3Ao4H8ePT","system":{"description":"<p>Fruit du noisemûrier, petit arbuste très ramifié vivant en sous-bois à l’ombre des plus grands arbres. La noisemûre a extérieurement l’apparence d’une grosse noisette à la coquille rougeâtre et granulée. Intérieurement, sa chair est tendre, juteuse et sucrée.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708525,"modifiedTime":1669770106784,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Noisemûre","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.eB5Nhus3Ao4H8ePT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Noisem%C3%BBre.webp","effects":[],"_id":"eB5Nhus3Ao4H8ePT","system":{"description":"<p>Fruit du noisemûrier, petit arbuste très ramifié vivant en sous-bois à l’ombre des plus grands arbres. La noisemûre a extérieurement l’apparence d’une grosse noisette à la coquille rougeâtre et granulée. Intérieurement, sa chair est tendre, juteuse et sucrée.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708525,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Fricotille","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.eKrtkHj3EbYCZu8Y"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fricotille.webp","effects":[],"_id":"eKrtkHj3EbYCZu8Y","system":{"description":"<p>Bolet à pied mince et blanc, et large chapeau pointu blanc à pois bleus.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Frequente","frequence":18}],"niveau":3,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708525,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Fricotille","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.eKrtkHj3EbYCZu8Y"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fricotille.webp","effects":[],"_id":"eKrtkHj3EbYCZu8Y","system":{"description":"<p>Bolet à pied mince et blanc, et large chapeau pointu blanc à pois bleus.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Frequente","frequence":18}],"niveau":3,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708525,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Solimonce","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.eqdFj8nT7JkibPvi"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Solimonce.webp","effects":[],"_id":"eqdFj8nT7JkibPvi","system":{"description":"<p>Variété d’ortie non urticante, poussant dans les lieux humides à l’abri de la lumière. Ses décoctions sont réputées souveraines contre les maladies des yeux.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Fièvre brune, p350.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":null,"milieu":"Lieux humides","environnement":[{"milieu":"Lieux humides","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708525,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Solimonce","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.eqdFj8nT7JkibPvi"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Solimonce.webp","effects":[],"_id":"eqdFj8nT7JkibPvi","system":{"description":"<p>Variété d’ortie non urticante, poussant dans les lieux humides à l’abri de la lumière. Ses décoctions sont réputées souveraines contre les maladies des yeux.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Fièvre brune, p350.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":null,"milieu":"Lieux humides","environnement":[{"milieu":"Cours d'eau","rarete":"Rare","frequence":4},{"milieu":"Forêts","rarete":"Rare","frequence":8},{"milieu":"Marais","rarete":"Rare","frequence":4},{"milieu":"Sous-sols","rarete":"Rare","frequence":8}],"niveau":null,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708525,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Obbadion","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/l_obbadion.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.69vN8bRlnCrRHQCm"}},"system":{"description":"<p>Poudre bleuâtre obtenue par disruption alchimique du minerai appelé <em>obbadine</em>, sorte de tourbe.</p>\n<p>VUE/Alchimie à -2</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Lieux humides","environnement":[{"milieu":"Lieux humides","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1668808206016,"modifiedTime":1669770106784,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"f4TPpX03pJuyBkuX"}
|
{"name":"Obbadion","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/l_obbadion.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.69vN8bRlnCrRHQCm"}},"system":{"description":"<p>Poudre bleuâtre obtenue par disruption alchimique du minerai appelé <em>obbadine</em>, sorte de tourbe.</p>\n<p>VUE/Alchimie à -2</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.2,"milieu":"Lieux humides, obtenu à partir d'Obbadine (tourbe)","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1668808206016,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"f4TPpX03pJuyBkuX"}
|
||||||
{"name":"Trésure","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jOCPgZmP3aZtMGdi"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tr%C3%A9sure.webp","effects":[],"_id":"jOCPgZmP3aZtMGdi","system":{"description":"<p>Fruit du trésurier, buisson épineux de la famille des ronces poussant principalement en montagne. La trésure est une grosse framboise de la taille d’une mandarine, rouge foncé avec un jus noir. Non seulement délicieuse, la trésure est nourrissante et énergétique. Chaque fruit vaut 3 points de sustentation et défatigue instantanément comme après une heure de sommeil. En termes de jeu, effacer un segment comme si l’on venait de dormir une heure. Enfin, faire suivre un repas de trésures (qu’il soit composé d’un ou plusieurs fruits) d’un jet de moral en situation heureuse. Une fois cueillies, les trésures ne se conservent pas plus de 12 heures, et même leur jus n’a plus aucune valeur. Véritables plantes miraculeuses, les trésuriers portent des fruits d’un bout de l’année à l’autre, même en hiver sous la neige.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Montagnes","environnement":[{"milieu":"Montagnes","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Trésure","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jOCPgZmP3aZtMGdi"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tr%C3%A9sure.webp","effects":[],"_id":"jOCPgZmP3aZtMGdi","system":{"description":"<p>Fruit du trésurier, buisson épineux de la famille des ronces poussant principalement en montagne. La trésure est une grosse framboise de la taille d’une mandarine, rouge foncé avec un jus noir. Non seulement délicieuse, la trésure est nourrissante et énergétique. Chaque fruit vaut 3 points de sustentation et défatigue instantanément comme après une heure de sommeil. En termes de jeu, effacer un segment comme si l’on venait de dormir une heure. Enfin, faire suivre un repas de trésures (qu’il soit composé d’un ou plusieurs fruits) d’un jet de moral en situation heureuse. Une fois cueillies, les trésures ne se conservent pas plus de 12 heures, et même leur jus n’a plus aucune valeur. Véritables plantes miraculeuses, les trésuriers portent des fruits d’un bout de l’année à l’autre, même en hiver sous la neige.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0,"milieu":"Montagnes","environnement":[{"milieu":"Montagnes","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Genèfle","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jbkZ9j04AAIAVBuG"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Gen%C3%A8fle.webp","effects":[],"_id":"jbkZ9j04AAIAVBuG","system":{"description":"<p>Fruit du genèflier, arbuste buissonneux vivant en plaine. La genèfle est très semblable à la clopinette, mais avec une peau plus nacrée.</p>\n<p>M1 \\ P 10 minutes \\ D1 \\ -3 \\ Teinture d’Érozonne +16, Topazoïne +12.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Plaines","environnement":[{"milieu":"Plaines","rarete":"Commune","frequence":54}],"niveau":null,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Genèfle","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jbkZ9j04AAIAVBuG"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Gen%C3%A8fle.webp","effects":[],"_id":"jbkZ9j04AAIAVBuG","system":{"description":"<p>Fruit du genèflier, arbuste buissonneux vivant en plaine. La genèfle est très semblable à la clopinette, mais avec une peau plus nacrée.</p>\n<p>M1 \\ P 10 minutes \\ D1 \\ -3 \\ Teinture d’Érozonne +16, Topazoïne +12.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0,"milieu":"Plaines","environnement":[{"milieu":"Plaines","rarete":"Commune","frequence":54}],"niveau":null,"base":0,"categorie":"","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Murus","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jjVl1PTFgTGdIfZf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Murus.webp","effects":[],"_id":"jjVl1PTFgTGdIfZf","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Sorte de minuscule chardon aux feuilles vert violacé, s’accrochant aux rochers escarpés. Son principe actif est contenu dans ses piquants.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.6,"milieu":"Rochers escarpés","environnement":[{"milieu":"Rochers escarpés","rarete":"Rare","frequence":6}],"niveau":8,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1669770106783,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Murus","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jjVl1PTFgTGdIfZf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Murus.webp","effects":[],"_id":"jjVl1PTFgTGdIfZf","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Sorte de minuscule chardon aux feuilles vert violacé, s’accrochant aux rochers escarpés. Son principe actif est contenu dans ses piquants.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.6,"milieu":"Rochers escarpés","environnement":[{"milieu":"Montagnes","rarete":"Rare","frequence":6}],"niveau":8,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Tanemiel","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jqUrbSHwFr5kPW3q"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel.webp","effects":[],"_id":"jqUrbSHwFr5kPW3q","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Plante grimpante, dotée de vrilles, voisine du liseron, de couleur vert laiteux presque blanc, s’accrochant aux arbres des forêts chaudes et humides.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.9,"milieu":"Forêts chaudes et humides","environnement":[{"milieu":"Forêts chaudes et humides","rarete":"Rare","frequence":6}],"niveau":9,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1669770106786,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Tanemiel","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.jqUrbSHwFr5kPW3q"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel.webp","effects":[],"_id":"jqUrbSHwFr5kPW3q","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Plante grimpante, dotée de vrilles, voisine du liseron, de couleur vert laiteux presque blanc, s’accrochant aux arbres des forêts chaudes et humides.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.9,"milieu":"Forêts chaudes et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":9,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Mercurion","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.k1l253yvSebgc7Xq"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Mercurion.webp","effects":[],"_id":"k1l253yvSebgc7Xq","system":{"description":"<p>Lierre noirâtre s’accrochant aux arbres des forêts, principalement les chênes. C’est une des herbes de base utilisées en alchimie.</p>\n<p>Commun. <br /><br /><em>Voir Principes d’alchimie, p357.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Forêts de chênes","environnement":[{"milieu":"Forêts de chênes","rarete":"Commune","frequence":54}],"niveau":null,"base":0,"categorie":"Alchimie","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1669770106782,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Mercurion","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.k1l253yvSebgc7Xq"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Mercurion.webp","effects":[],"_id":"k1l253yvSebgc7Xq","system":{"description":"<p>Lierre noirâtre s’accrochant aux arbres des forêts, principalement les chênes. C’est une des herbes de base utilisées en alchimie.</p>\n<p>Commun. <br /><br /><em>Voir Principes d’alchimie, p357.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Forêts de chênes","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54}],"niveau":null,"base":0,"categorie":"Alchimie","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708526,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Boralm","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/boralm.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.0ylGrNMzulUaKFP9"}},"system":{"description":"<p>Poudre brune apparaissant sur les parois des grottes.</p>\n<p>VUE/Alchimie à -1.</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.03,"milieu":"Cavernes","environnement":[{"milieu":"Cavernes","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1668808206013,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"kbWKsR0HovidPw6d"}
|
{"name":"Boralm","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/boralm.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.0ylGrNMzulUaKFP9"}},"system":{"description":"<p>Poudre brune apparaissant sur les parois des grottes.</p>\n<p>VUE/Alchimie à -1.</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.03,"milieu":"Cavernes","environnement":[{"milieu":"Sous-sols","rarete":"Commune","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1668808206013,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"kbWKsR0HovidPw6d"}
|
||||||
{"name":"Arrache-rêve","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.koLhmV2g0Z2tQZiB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Arrache-r%C3%AAve.webp","effects":[],"_id":"koLhmV2g0Z2tQZiB","system":{"description":"<p>Le plus virulent des champignons vénéneux après l’amanite thanataire, procurant une agonie des plus douloureuses. Ressemble à cette dernière, avec un chapeau en boule au lieu de plat et galbé.</p>\n<p>M6 \\ P 4 rounds \\ D4 \\ -3 \\ Tournegraisse +14, Perle de Bjwal +12.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Arrache-rêve","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.koLhmV2g0Z2tQZiB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Arrache-r%C3%AAve.webp","effects":[],"_id":"koLhmV2g0Z2tQZiB","system":{"description":"<p>Le plus virulent des champignons vénéneux après l’amanite thanataire, procurant une agonie des plus douloureuses. Ressemble à cette dernière, avec un chapeau en boule au lieu de plat et galbé.</p>\n<p>M6 \\ P 4 rounds \\ D4 \\ -3 \\ Tournegraisse +14, Perle de Bjwal +12.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Sajutte","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.l5G3NrS8USofuBK8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Sajutte.webp","effects":[],"_id":"l5G3NrS8USofuBK8","system":{"description":"<p><em style=\"box-sizing: border-box; user-select: text;\">Herbe de repos.</em></p>\n<p>Petite herbe à sève blanche, très poisseuse, poussant aussi bien en forêt qu'en plaine, qu'en marais (Plus rare en montagne).</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Tous (plus rare en montagne)","environnement":[{"milieu":"Tous (plus rare en montagne)","rarete":"Commune","frequence":54}],"niveau":1,"base":0,"categorie":"Repos","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1669770106785,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Sajutte","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.l5G3NrS8USofuBK8"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Sajutte.webp","effects":[],"_id":"l5G3NrS8USofuBK8","system":{"description":"<p><em style=\"box-sizing: border-box; user-select: text;\">Herbe de repos.</em></p>\n<p>Petite herbe à sève blanche, très poisseuse, poussant aussi bien en forêt qu'en plaine, qu'en marais (Plus rare en montagne).</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.02,"milieu":"Tous (plus rare en montagne)","environnement":[{"milieu":"Collines","rarete":"Commune","frequence":54},{"milieu":"Cours d'eau","rarete":"Commune","frequence":54},{"milieu":"Déserts","rarete":"Commune","frequence":54},{"milieu":"Forêts","rarete":"Commune","frequence":54},{"milieu":"Marais","rarete":"Commune","frequence":54},{"milieu":"Montagnes","rarete":"Frequente","frequence":18},{"milieu":"Plaines","rarete":"Commune","frequence":54}],"niveau":1,"base":0,"categorie":"Repos","rarete":"Commune"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1670025575832,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Corne de rêve","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.lDZbDKaPQGvqzK1k"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Corne%20de%20r%C3%AAve.webp","effects":[],"_id":"lDZbDKaPQGvqzK1k","system":{"description":"<p>Champignon en forme de conque violet sombre.</p>\n<p>Rarissime.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Rarissime","frequence":2}],"niveau":5,"base":0,"categorie":"Cuisine","rarete":"Rarissime"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Corne de rêve","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.lDZbDKaPQGvqzK1k"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Corne%20de%20r%C3%AAve.webp","effects":[],"_id":"lDZbDKaPQGvqzK1k","system":{"description":"<p>Champignon en forme de conque violet sombre.</p>\n<p>Rarissime.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rarissime","frequence":3},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":2}],"niveau":5,"base":0,"categorie":"Cuisine","rarete":"Rarissime"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Amanite Thanataire","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.m01q5bqTSKOJLSkY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Amanite%20thanataire.webp","effects":[],"_id":"m01q5bqTSKOJLSkY","system":{"description":"<p>L’un des plus beaux, mais également le plus foudroyant des champignons vénéneux. Pied et volve élégamment proportionnés, chapeau arrondi à peine galbé, le tout paré d’une somptueuse teinte blanc argenté parsemée de points noirs.</p>\n<p>M7 \\ P 3 rounds \\ D4 \\ -3 \\ Tournegraisse +12, Perle de Bjwal +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Lieux sombres et humides","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Amanite Thanataire","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.m01q5bqTSKOJLSkY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Amanite%20thanataire.webp","effects":[],"_id":"m01q5bqTSKOJLSkY","system":{"description":"<p>L’un des plus beaux, mais également le plus foudroyant des champignons vénéneux. Pied et volve élégamment proportionnés, chapeau arrondi à peine galbé, le tout paré d’une somptueuse teinte blanc argenté parsemée de points noirs.</p>\n<p>M7 \\ P 3 rounds \\ D4 \\ -3 \\ Tournegraisse +12, Perle de Bjwal +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Sous-sols","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Obyssum gris","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/l_obyssum_gris.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nIOEB0PpMaACqD65"}},"system":{"description":"<p>Plus rare que le vert, poudre grisâtre apparaissant le long de certaines lianes des marais.</p>\n<p>VUE/Alchimie à -4</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.1,"milieu":"Marais","environnement":[{"milieu":"Marais","rarete":"","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1668808206114,"modifiedTime":1669770106784,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"m9ONkzH9KwLk3P3i"}
|
{"name":"Obyssum gris","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/objets/l_obyssum_gris.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nIOEB0PpMaACqD65"}},"system":{"description":"<p>Plus rare que le vert, poudre grisâtre apparaissant le long de certaines lianes des marais.</p>\n<p>VUE/Alchimie à -4</p>","descriptionmj":"","encombrement":0.001,"quantite":1,"qualite":0,"cout":0.1,"milieu":"Marais","environnement":[{"milieu":"Marais","rarete":"Rare","frequence":12}],"niveau":0,"base":0,"categorie":"Alchimie","rarete":""},"ownership":{"default":0,"rYShh2P1DNavdoBD":3,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1668808206114,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"m9ONkzH9KwLk3P3i"}
|
||||||
{"name":"Méritoine","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.nuOClbQwu6SLucJn"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/M%C3%A9ritoine.webp","effects":[],"_id":"nuOClbQwu6SLucJn","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Plante rampante et ramifiée, aux minuscules feuilles vert pâle, s’accrochant aux troncs de certains conifères.</p>\n<p>Fréquente.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.06,"milieu":"Forêts de conifères","environnement":[{"milieu":"Forêts de conifères","rarete":"Frequente","frequence":18}],"niveau":3,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1669770106782,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Méritoine","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.nuOClbQwu6SLucJn"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/M%C3%A9ritoine.webp","effects":[],"_id":"nuOClbQwu6SLucJn","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Plante rampante et ramifiée, aux minuscules feuilles vert pâle, s’accrochant aux troncs de certains conifères.</p>\n<p>Fréquente.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.06,"milieu":"Forêts de conifères","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18},{"milieu":"Montagnes","rarete":"Frequente","frequence":18}],"niveau":3,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Ossiphage","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.pa0yqGaJX9x6kvKa"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ossiphage.webp","effects":[],"_id":"pa0yqGaJX9x6kvKa","system":{"description":"<p>Également appelée <em>suceuse d’os</em>, c’est une liane rampante à feuilles triangulaires de couleur violacée. Chaque feuille est dotée de trois longs piquants, un à chaque pointe de son triangle. Son venin est si foudroyant que la victime n’a souvent pas le temps d’aller bien loin et meurt empêtrée dans la liane. Il arrive que l’on découvre un squelette entier au coeur d’un bouquet d’ossiphage, chaque os maintenu en place par les vrilles de la plante.</p>\n<p>M6 \\ P 3 rounds \\ D4 \\ -5 \\ Perle de Bjwal +10, Huile de Sélikanthe +6.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1669770106785,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Ossiphage","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.pa0yqGaJX9x6kvKa"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ossiphage.webp","effects":[],"_id":"pa0yqGaJX9x6kvKa","system":{"description":"<p>Également appelée <em>suceuse d’os</em>, c’est une liane rampante à feuilles triangulaires de couleur violacée. Chaque feuille est dotée de trois longs piquants, un à chaque pointe de son triangle. Son venin est si foudroyant que la victime n’a souvent pas le temps d’aller bien loin et meurt empêtrée dans la liane. Il arrive que l’on découvre un squelette entier au coeur d’un bouquet d’ossiphage, chaque os maintenu en place par les vrilles de la plante.</p>\n<p>M6 \\ P 3 rounds \\ D4 \\ -5 \\ Perle de Bjwal +10, Huile de Sélikanthe +6.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6}],"niveau":0,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Faux murus","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.q6DoYNlSp6SEr5hj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Faux%20murus.webp","effects":[],"_id":"q6DoYNlSp6SEr5hj","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Variété de murus poussant en prairie de montagne.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.4,"milieu":"Prairies de montagnes","environnement":[{"milieu":"Prairies de montagnes","rarete":"Rare","frequence":6}],"niveau":7,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Faux murus","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.q6DoYNlSp6SEr5hj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Faux%20murus.webp","effects":[],"_id":"q6DoYNlSp6SEr5hj","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Variété de murus poussant en prairie de montagne.</p>\n<p>Rare.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.4,"milieu":"Prairies de montagnes","environnement":[{"milieu":"Montagnes","rarete":"Rare","frequence":6}],"niveau":7,"base":0,"categorie":"Soin","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708527,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Ortigal rose","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.rXGa2Mx1ttMETTXo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortigal%20rose.webp","effects":[],"_id":"rXGa2Mx1ttMETTXo","system":{"description":"<p><em>Herbe de repos.</em></p>\n<p>Variété d'ortigal dont l'extrémité des feuilles est toute piquetée de points roses. Comme les autres ortigals, ne pousse qu'en lieux très humides, principalement en marais.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"Lieux très humides","environnement":[{"milieu":"Lieux très humides","rarete":"Frequente","frequence":18}],"niveau":3,"base":0,"categorie":"Repos","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1669770106784,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Ortigal rose","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.rXGa2Mx1ttMETTXo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortigal%20rose.webp","effects":[],"_id":"rXGa2Mx1ttMETTXo","system":{"description":"<p><em>Herbe de repos.</em></p>\n<p>Variété d'ortigal dont l'extrémité des feuilles est toute piquetée de points roses. Comme les autres ortigals, ne pousse qu'en lieux très humides, principalement en marais.</p>\n<p>Fréquent.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"Lieux très humides","environnement":[{"milieu":"Cours d'eau","rarete":"Rare","frequence":9},{"milieu":"Marais","rarete":"Frequente","frequence":18}],"niveau":3,"base":0,"categorie":"Repos","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Clopinette","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.rkTRMgL8pFygYagr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Clopinettes.webp","effects":[],"_id":"rkTRMgL8pFygYagr","system":{"description":"<p>Fruit du clopinier, petit arbuste buissonneux semblable au genêt. Les clopinettes poussent en grappes nombreuses de petites baies rondes d’un blanc presque translucide. Peu juteuses, elles sont d’un goût neutre, non sucré, même pas âpre, et sont d’un pouvoir nutritif ridiculement faible (3 livres pour 1 sust). Poussant de préférence en plaine, y compris à l’abord des villages, elles sont ordinairement dédaignées des autochtones, même des animaux sauvages. On les laisse aux voyageurs. Pour cette raison, elles sont parfois appelées baies des voyageurs.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0,"milieu":"Plaines","environnement":[{"milieu":"Plaines","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1669770106780,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Clopinette","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.rkTRMgL8pFygYagr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Clopinettes.webp","effects":[],"_id":"rkTRMgL8pFygYagr","system":{"description":"<p>Fruit du clopinier, petit arbuste buissonneux semblable au genêt. Les clopinettes poussent en grappes nombreuses de petites baies rondes d’un blanc presque translucide. Peu juteuses, elles sont d’un goût neutre, non sucré, même pas âpre, et sont d’un pouvoir nutritif ridiculement faible (3 livres pour 1 sust). Poussant de préférence en plaine, y compris à l’abord des villages, elles sont ordinairement dédaignées des autochtones, même des animaux sauvages. On les laisse aux voyageurs. Pour cette raison, elles sont parfois appelées baies des voyageurs.</p>\n<p>Commune.</p>","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0,"milieu":"Plaines","environnement":[{"milieu":"Cours d'eau","rarete":"Commune","frequence":108},{"milieu":"Plaines","rarete":"Commune","frequence":108}],"niveau":0,"base":0,"categorie":"Cuisine","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Bélidane","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.vnq7HONrBm90g2gY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/B%C3%A9lidane.webp","effects":[],"_id":"vnq7HONrBm90g2gY","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Herbacée aux feuilles fines et dentelées comme celle de la ciguë. Ne pousse que sur les versants de collines ensoleillées.</p>\n<p>Fréquente.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.3,"milieu":"Collines ensoleillées","environnement":[{"milieu":"Collines ensoleillées","rarete":"Frequente","frequence":18}],"niveau":6,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Bélidane","type":"herbe","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.vnq7HONrBm90g2gY"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/B%C3%A9lidane.webp","effects":[],"_id":"vnq7HONrBm90g2gY","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Herbacée aux feuilles fines et dentelées comme celle de la ciguë. Ne pousse que sur les versants de collines ensoleillées.</p>\n<p>Fréquente.</p>\n<p> </p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.3,"milieu":"Collines ensoleillées","environnement":[{"milieu":"Collines","rarete":"Frequente","frequence":18}],"niveau":6,"base":0,"categorie":"Soin","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Blèmissure","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.wNBWvJSd9i1zHspR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Bl%C3%A8missure.webp","effects":[],"_id":"wNBWvJSd9i1zHspR","system":{"description":"<p>Champignon affectant la forme d’une éponge, de couleur gris blême, apparaissant sur les troncs des arbres.</p>\n<p>M4 \\ P 1 minute \\ D2 \\ -4 \\ Élixir des Gnomes +14, Huile de Sélikanthe +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts sombres et humides","environnement":[{"milieu":"Forêts sombres et humides","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1669770106779,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Blèmissure","type":"ingredient","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.wNBWvJSd9i1zHspR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Bl%C3%A8missure.webp","effects":[],"_id":"wNBWvJSd9i1zHspR","system":{"description":"<p>Champignon affectant la forme d’une éponge, de couleur gris blême, apparaissant sur les troncs des arbres.</p>\n<p>M4 \\ P 1 minute \\ D2 \\ -4 \\ Élixir des Gnomes +14, Huile de Sélikanthe +10.</p>\n<p>Fréquente.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Forêts sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Frequente","frequence":18}],"niveau":0,"base":0,"categorie":"","rarete":"Frequente"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
{"name":"Herbe de lune","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.x4wGXTdmrzaOn8Sh"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Herbe%20de%20lune.webp","effects":[],"_id":"x4wGXTdmrzaOn8Sh","system":{"description":"<p>Petite herbacée aux feuilles en forme de polygone à 7 côtés, d’un bleu très pâle, presque translucide, ne poussant qu’en haute montagne, à partir de 2000 mètres, et uniquement dans les recoins pouvant être éclairés par la lune. <br /><br />L’herbe de lune possède un fort pouvoir onirique sur celui qui la consomme\"; en termes de jeu, elle permet de gagner des points de rêve. Elle doit être cueillie de nuit et lorsque la lune l’éclaire, faute de quoi son pouvoir est nul. Sa force dépend de la phase lunaire durant laquelle elle est cueillie. <br /><br />Une fois séchée, l’herbe de lune peut être fumée dans une pipe ou préparée en décoction. Dans les deux cas, une dose doit être composée de 7 brins. Dès la dose absorbée (bue ou fumée), le consommateur doit jouer un JR r-force, c’est-à-dire un jet de points de rêve ajusté négativement à la force de l’herbe. Si le JR réussit, aucun effet ne se produit\"; s’il échoue, le consommateur gagne immédiatement un nombre de points de rêve égal à la force de l’herbe, puis en échange, marque un nombre identique de points de fatigue. On peut ainsi gagner des points de rêve même si le seuil de rêve est dépassé, mais se souvenir que dépasser le triple de son seuil provoque l’éclatement. <br /><br />L’herbe de lune est parfois trouvable chez les herboristes, mais n’est pas bon marché. Une dose (7 brins) vaut usuellement un nombre de sols égal à sa force. Une dose de force 6 vaut ainsi 6 sols. <br />Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":null,"milieu":"Hautes montagnes","environnement":[{"milieu":"Hautes montagnes","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.2.10","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1669770106781,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
{"name":"Ortigal glauque","type":"herbe","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortigal%20noir.webp","system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0,"milieu":"Plante aquatique","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":27},{"milieu":"Marais","rarete":"Commune","frequence":54}],"niveau":0,"base":0,"categorie":"Alchimie"},"effects":[],"flags":{"core":{"sourceId":"Item.wjvaEK4Bq2TwKCFH"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1670017184070,"modifiedTime":1670025575785,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"wjvaEK4Bq2TwKCFH","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
||||||
|
{"name":"Herbe de lune","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.x4wGXTdmrzaOn8Sh"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Herbe%20de%20lune.webp","effects":[],"_id":"x4wGXTdmrzaOn8Sh","system":{"description":"<p>Petite herbacée aux feuilles en forme de polygone à 7 côtés, d’un bleu très pâle, presque translucide, ne poussant qu’en haute montagne, à partir de 2000 mètres, et uniquement dans les recoins pouvant être éclairés par la lune. <br /><br />L’herbe de lune possède un fort pouvoir onirique sur celui qui la consomme\"; en termes de jeu, elle permet de gagner des points de rêve. Elle doit être cueillie de nuit et lorsque la lune l’éclaire, faute de quoi son pouvoir est nul. Sa force dépend de la phase lunaire durant laquelle elle est cueillie. <br /><br />Une fois séchée, l’herbe de lune peut être fumée dans une pipe ou préparée en décoction. Dans les deux cas, une dose doit être composée de 7 brins. Dès la dose absorbée (bue ou fumée), le consommateur doit jouer un JR r-force, c’est-à-dire un jet de points de rêve ajusté négativement à la force de l’herbe. Si le JR réussit, aucun effet ne se produit\"; s’il échoue, le consommateur gagne immédiatement un nombre de points de rêve égal à la force de l’herbe, puis en échange, marque un nombre identique de points de fatigue. On peut ainsi gagner des points de rêve même si le seuil de rêve est dépassé, mais se souvenir que dépasser le triple de son seuil provoque l’éclatement. <br /><br />L’herbe de lune est parfois trouvable chez les herboristes, mais n’est pas bon marché. Une dose (7 brins) vaut usuellement un nombre de sols égal à sa force. Une dose de force 6 vaut ainsi 6 sols. <br />Rare.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":null,"milieu":"Hautes montagnes","environnement":[{"milieu":"Montagnes","rarete":"Rare","frequence":6}],"niveau":null,"base":0,"categorie":"","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.3","coreVersion":"10.290","createdTime":1669734708528,"modifiedTime":1670025575833,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||||
|
|||||||
@@ -497,8 +497,7 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-body,
|
.foundryvtt-reve-de-dragon .sheet-body,
|
||||||
.foundryvtt-reve-de-dragon .sheet-body .tab,
|
.foundryvtt-reve-de-dragon .sheet-body .tab {
|
||||||
.foundryvtt-reve-de-dragon .sheet-body .tab .editor {
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -543,7 +542,7 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
|
|||||||
|
|
||||||
.editor {
|
.editor {
|
||||||
border: 2;
|
border: 2;
|
||||||
height: 300px;
|
height: 10rem;
|
||||||
padding: 0 3px;
|
padding: 0 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -873,6 +872,20 @@ ul, li {
|
|||||||
.alterne-list > .list-item:nth-child(odd) {
|
.alterne-list > .list-item:nth-child(odd) {
|
||||||
background: rgb(160, 130, 100, 0.05);
|
background: rgb(160, 130, 100, 0.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ul.chat-list {
|
||||||
|
margin-left: 0.8rem;
|
||||||
|
list-style: inside;
|
||||||
|
}
|
||||||
|
ul.chat-list li:nth-child(even) {
|
||||||
|
background: rgba(80, 60, 0, 0.10);
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
ul.chat-list li:nth-child(odd) {
|
||||||
|
background: rgb(160, 130, 100, 0.05);
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
.xp-level-up {
|
.xp-level-up {
|
||||||
margin: 0.1rem;
|
margin: 0.1rem;
|
||||||
box-shadow: inset 0px 0px 1px #00000096;
|
box-shadow: inset 0px 0px 1px #00000096;
|
||||||
|
|||||||
@@ -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.3.2",
|
"version": "10.3.6",
|
||||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.3.2.zip",
|
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.3.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",
|
||||||
|
|||||||
@@ -572,7 +572,7 @@
|
|||||||
"types": [
|
"types": [
|
||||||
"competence", "competencecreature",
|
"competence", "competencecreature",
|
||||||
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
|
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
|
||||||
"objet", "arme", "armure", "conteneur", "herbe", "ingredient", "livre", "potion", "munition",
|
"objet", "arme", "armure", "conteneur", "herbe", "ingredient", "faune", "livre", "potion", "munition",
|
||||||
"monnaie", "nourritureboisson", "gemme",
|
"monnaie", "nourritureboisson", "gemme",
|
||||||
"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", "maladie", "poison", "possession",
|
||||||
@@ -595,6 +595,10 @@
|
|||||||
"environnement": {
|
"environnement": {
|
||||||
"milieu": "",
|
"milieu": "",
|
||||||
"environnement": []
|
"environnement": []
|
||||||
|
},
|
||||||
|
"comestible": {
|
||||||
|
"sust": 0,
|
||||||
|
"exotisme": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"competence": {
|
"competence": {
|
||||||
@@ -699,13 +703,12 @@
|
|||||||
"templates": [ "description", "inventaire" ]
|
"templates": [ "description", "inventaire" ]
|
||||||
},
|
},
|
||||||
"nourritureboisson": {
|
"nourritureboisson": {
|
||||||
"templates": [ "description", "inventaire" ],
|
"templates": [ "description", "inventaire", "comestible"],
|
||||||
"sust": 0,
|
"cuisinier": "",
|
||||||
"boisson": false,
|
"boisson": false,
|
||||||
"desaltere": 0,
|
"desaltere": 0,
|
||||||
"alcoolise": false,
|
"alcoolise": false,
|
||||||
"force": 0,
|
"force": 0
|
||||||
"exotisme": 0
|
|
||||||
},
|
},
|
||||||
"herbe": {
|
"herbe": {
|
||||||
"templates": [ "description", "inventaire", "environnement"],
|
"templates": [ "description", "inventaire", "environnement"],
|
||||||
@@ -714,11 +717,20 @@
|
|||||||
"categorie": ""
|
"categorie": ""
|
||||||
},
|
},
|
||||||
"ingredient": {
|
"ingredient": {
|
||||||
"templates": [ "description", "inventaire", "environnement" ],
|
"templates": [ "description", "inventaire", "environnement", "comestible"],
|
||||||
"niveau": 0,
|
"niveau": 0,
|
||||||
"base": 0,
|
"base": 0,
|
||||||
"categorie": ""
|
"categorie": ""
|
||||||
},
|
},
|
||||||
|
"faune": {
|
||||||
|
"templates": [ "description", "inventaire", "environnement", "comestible"],
|
||||||
|
"categorie": "",
|
||||||
|
"actor": {
|
||||||
|
"id": "",
|
||||||
|
"pack": "",
|
||||||
|
"name": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
"livre": {
|
"livre": {
|
||||||
"templates": [ "description", "inventaire" ],
|
"templates": [ "description", "inventaire" ],
|
||||||
"competence": "",
|
"competence": "",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{queue._id}}">
|
<li class="item flexrow" data-attribute={{key}} data-item-id="{{queue._id}}">
|
||||||
<img class="sheet-competence-img" src="{{queue.img}}" />
|
<img class="sheet-competence-img" src="{{queue.img}}" />
|
||||||
<span class="display-label flex-grow">
|
<span class="item-edit flex-grow">
|
||||||
{{#if (eq queue.type 'ombre')}}
|
{{#if (eq queue.type 'ombre')}}
|
||||||
<img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp" />
|
<img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp" />
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{#each souffles as |souffle key|}}
|
{{#each souffles as |souffle key|}}
|
||||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}">
|
<li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}">
|
||||||
<img class="sheet-competence-img" src="{{souffle.img}}" />
|
<img class="sheet-competence-img" src="{{souffle.img}}" />
|
||||||
<span class="display-label flex-grow"><a>{{souffle.name}}</a></span>
|
<span class="item-edit flex-grow"><a>{{souffle.name}}</a></span>
|
||||||
<div class="item-controls flex-shrink">
|
<div class="item-controls flex-shrink">
|
||||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{#each tetes as |tete key|}}
|
{{#each tetes as |tete key|}}
|
||||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}">
|
<li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}">
|
||||||
<img class="sheet-competence-img" src="{{tete.img}}" />
|
<img class="sheet-competence-img" src="{{tete.img}}" />
|
||||||
<span class="display-label flex-grow"><a>{{tete.name}}</a></span>
|
<span class="item-edit flex-grow"><a>{{tete.name}}</a></span>
|
||||||
<div class="item-controls flex-shrink">
|
<div class="item-controls flex-shrink">
|
||||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{#each casestmr as |casetmr key|}}
|
{{#each casestmr as |casetmr key|}}
|
||||||
<li class="item list-item flexrow" data-item-id="{{casetmr.id}}" data-attribute="{{key}}">
|
<li class="item list-item flexrow" data-item-id="{{casetmr.id}}" data-attribute="{{key}}">
|
||||||
<img class="sheet-competence-img" src="{{casetmr.img}}" />
|
<img class="sheet-competence-img" src="{{casetmr.img}}" />
|
||||||
<span class="display-label"><a>{{casetmr.name}}</a></span>
|
<span class="item-edit"><a>{{casetmr.name}}</a></span>
|
||||||
<span>{{casetmr.system.coord}} - {{caseTmr-label casetmr.system.coord}}</span>
|
<span>{{casetmr.system.coord}} - {{caseTmr-label casetmr.system.coord}}</span>
|
||||||
<div class="item-controls flex-shrink">
|
<div class="item-controls flex-shrink">
|
||||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{#each rencontres as |rencontre key|}}
|
{{#each rencontres as |rencontre key|}}
|
||||||
<li class="item flexrow" data-item-id="{{rencontre._id}}" data-attribute="{{key}}">
|
<li class="item flexrow" data-item-id="{{rencontre._id}}" data-attribute="{{key}}">
|
||||||
<img class="sheet-competence-img" src="{{rencontre.img}}" />
|
<img class="sheet-competence-img" src="{{rencontre.img}}" />
|
||||||
<span class="display-label flex-grow"><a>
|
<span class="item-edit flex-grow"><a>
|
||||||
{{rencontre.name}} r{{rencontre.system.force}} ({{rencontre.system.coord}} - {{caseTmr-label rencontre.system.coord}})
|
{{rencontre.name}} r{{rencontre.system.force}} ({{rencontre.system.coord}} - {{caseTmr-label rencontre.system.coord}})
|
||||||
</a></span>
|
</a></span>
|
||||||
{{#if rencontre.system.date}}
|
{{#if rencontre.system.date}}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{#each signesdraconiques as |signe key|}}
|
{{#each signesdraconiques as |signe key|}}
|
||||||
<li class="item list-item flexrow" data-item-id="{{signe._id}}" data-attribute="{{key}}">
|
<li class="item list-item flexrow" data-item-id="{{signe._id}}" data-attribute="{{key}}">
|
||||||
<img class="sheet-competence-img" src="{{signe.img}}" />
|
<img class="sheet-competence-img" src="{{signe.img}}" />
|
||||||
<span class="display-label flex-grow"><a>{{signe.name}}</a></span>
|
<span class="item-edit flex-grow"><a>{{signe.name}}</a></span>
|
||||||
<span class="flex-shrink">{{signe.system.difficulte}}</span>
|
<span class="flex-shrink">{{signe.system.difficulte}}</span>
|
||||||
<div class="item-controls flex-shrink">
|
<div class="item-controls flex-shrink">
|
||||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{#each sortsReserve as |sort key|}}
|
{{#each sortsReserve as |sort key|}}
|
||||||
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
|
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
|
||||||
<img class="sheet-competence-img" src="{{sort.img}}" />
|
<img class="sheet-competence-img" src="{{sort.img}}" />
|
||||||
<span class="display-label"><a>{{#if sort.system.echectotal}}Echec total: {{/if}}{{sort.name}} r{{sort.system.ptreve}}</a></span>
|
<span class="item-edit"><a>{{#if sort.system.echectotal}}Echec total: {{/if}}{{sort.name}} r{{sort.system.ptreve}}</a></span>
|
||||||
<span>{{sort.system.coord}} - {{caseTmr-label sort.system.coord}}</span>
|
<span>{{sort.system.coord}} - {{caseTmr-label sort.system.coord}}</span>
|
||||||
<div class="item-controls flex-shrink">
|
<div class="item-controls flex-shrink">
|
||||||
<a class="item-delete flex-shrink" title="Supprimer"><i class="fas fa-trash"></i></a>
|
<a class="item-delete flex-shrink" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{#each sorts as |sort key|}}
|
{{#each sorts as |sort key|}}
|
||||||
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
|
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
|
||||||
<img class="sheet-competence-img" src="{{sort.img}}" />
|
<img class="sheet-competence-img" src="{{sort.img}}" />
|
||||||
<span class="display-label flex-grow-2">
|
<span class="item-edit flex-grow-2">
|
||||||
<a data-item-id="{{sort._id}}">{{sort.name}}
|
<a data-item-id="{{sort._id}}">{{sort.name}}
|
||||||
- {{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
|
- {{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
1
templates/common/compendium-link.hbs
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<a class="content-link" draggable="true" data-pack="{{pack}}" data-uuid="Compendium.{{pack}}.{{id}}" data-id="{{id}}"><i class="fas fa-suitcase"></i>{{name}}</a>
|
||||||
52
templates/item-faune-sheet.html
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
<header class="sheet-header">
|
||||||
|
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||||
|
<div class="header-fields">
|
||||||
|
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||||
|
{{>'systems/foundryvtt-reve-de-dragon/templates/item/boutons-comestible.html'}}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<nav class="sheet-tabs tabs" data-group="primary">
|
||||||
|
<a class="item" data-tab="informations">Informations</a>
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.html"}}
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section class="sheet-body">
|
||||||
|
<div class="tab items" data-group="primary" data-tab="informations">
|
||||||
|
<div class="flexcol">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system.sust">Sustentation (si applicable)</label>
|
||||||
|
<input class="attribute-value" type="number" name="system.sust" value="{{system.sust}}" data-dtype="Number" min="0"/>
|
||||||
|
</div>
|
||||||
|
{{#if (gt system.sust 0)}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system.exotisme">Exotisme</label>
|
||||||
|
<input class="attribute-value" type="number" name="system.exotisme" value="{{system.exotisme}}" data-dtype="Number" min="-10" max="0"/>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Créature correspondante</label>
|
||||||
|
<div>
|
||||||
|
{{#if system.actor.id}}
|
||||||
|
{{#if isGM}}
|
||||||
|
<label>
|
||||||
|
{{>'systems/foundryvtt-reve-de-dragon/templates/common/compendium-link.hbs'
|
||||||
|
pack=system.actor.pack id=system.actor.id name=system.actor.name}}
|
||||||
|
</label>
|
||||||
|
<a class="linked-actor-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
|
{{else}}
|
||||||
|
<label>{{system.actor.name}}</label>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<label>Pas de fiche de créature</label>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html"}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.html"}}
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -5,9 +5,10 @@
|
|||||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||||
{{#if isIngredientPotionBase}}
|
{{#if isIngredientPotionBase}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<span for="xp"><a class="creer-potion-base chat-card-button" data-actor-id="{{actorId}}">Fabriquer une potion depuis cette plante</a></span>
|
<span><a class="creer-potion-base chat-card-button" data-actor-id="{{actorId}}">Fabriquer une potion depuis cette plante</a></span>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{>'systems/foundryvtt-reve-de-dragon/templates/item/boutons-comestible.html'}}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@@ -19,10 +20,6 @@
|
|||||||
<section class="sheet-body">
|
<section class="sheet-body">
|
||||||
<div class="tab items" data-group="primary" data-tab="informations">
|
<div class="tab items" data-group="primary" data-tab="informations">
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
<div class="form-group">
|
|
||||||
<label>Niveau (si applicable)</label>
|
|
||||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number" />
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Catégorie</label>
|
<label>Catégorie</label>
|
||||||
<select name="system.categorie" class="categorie" data-dtype="String">
|
<select name="system.categorie" class="categorie" data-dtype="String">
|
||||||
@@ -31,7 +28,24 @@
|
|||||||
{{/select}}
|
{{/select}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{{#if (eq isComestible 'brut')}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system.sust">Sustentation</label>
|
||||||
|
<input class="attribute-value" type="number" name="system.sust" value="{{system.sust}}" data-dtype="Number" min="0"/>
|
||||||
|
</div>
|
||||||
|
{{#if (gt system.sust 0)}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="system.exotisme">Exotisme</label>
|
||||||
|
<input class="attribute-value" type="number" name="system.exotisme" value="{{system.exotisme}}" data-dtype="Number" min="-10" max="0"/>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Niveau (si applicable)</label>
|
||||||
|
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number" />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html"}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
8
templates/item/boutons-comestible.html
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{{#if (and isOwned isComestible)}}
|
||||||
|
<div class="form-group">
|
||||||
|
{{#if (eq isComestible 'brut')}}
|
||||||
|
<span><a class="preparer-nourriture chat-card-button" data-actor-id="{{actorId}}">Cuisiner</a></span>
|
||||||
|
{{/if}}
|
||||||
|
<span><a class="manger-nourriture chat-card-button" data-actor-id="{{actorId}}">Manger cru</a></span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="system.qualite">Qualité</label>
|
<label for="system.qualite">Qualité</label>
|
||||||
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"
|
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"
|
||||||
{{#unless (isEquipementFieldEditable type 'qualite')}}disabled{{/unless}}/>
|
{{#unless (isFieldInventaireModifiable type 'qualite')}}disabled{{/unless}}/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="system.encombrement">Encombrement</label>
|
<label for="system.encombrement">Encombrement</label>
|
||||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"
|
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"
|
||||||
{{#unless (isEquipementFieldEditable type 'encombrement')}}disabled{{/unless}}/>
|
{{#unless (isFieldInventaireModifiable type 'encombrement')}}disabled{{/unless}}/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="system.quantite">Quantité {{uniteQuantite type}}</label>
|
<label for="system.quantite">Quantité {{uniteQuantite id actorId}}</label>
|
||||||
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number"
|
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number"
|
||||||
{{#unless (isEquipementFieldEditable type 'quantite')}}disabled{{/unless}}/>
|
{{#unless (isFieldInventaireModifiable type 'quantite')}}disabled{{/unless}}/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group item-cout">
|
<div class="form-group item-cout">
|
||||||
<label for="system.cout">Prix (sols) </label>
|
<label for="system.cout">Prix (sols) </label>
|
||||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"
|
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"
|
||||||
{{#unless (isEquipementFieldEditable type 'cout')}}disabled{{/unless}}/>
|
{{#unless (isFieldInventaireModifiable type 'cout')}}disabled{{/unless}}/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ function autocomplete(input, proposals) {
|
|||||||
currentFocus--;
|
currentFocus--;
|
||||||
addActive(container);
|
addActive(container);
|
||||||
} else if (e.keyCode == 13) {
|
} else if (e.keyCode == 13) {
|
||||||
e.preventDefault();
|
|
||||||
if (currentFocus > -1 && container) {
|
if (currentFocus > -1 && container) {
|
||||||
container[currentFocus].click();
|
container[currentFocus].click();
|
||||||
}
|
}
|
||||||
|
|||||||