Création du compendium Faune, Flore, Minéraux

- les tables d'environnement se basent sur ce seul compendium
- les tables de compendiums peuvent chercher plusieurs types d'items
- déplacement de la botanique
- déplacement des sels alchimiques depuis l'équipement
- modification de l'équipement de départ
- modification des acteurs (lien vers compendium de l'item source)
This commit is contained in:
Vincent Vandemeulebrouck
2022-11-30 01:11:31 +01:00
parent b7a0e5d034
commit 453e7da848
11 changed files with 311 additions and 324 deletions

View File

@ -26,18 +26,13 @@ const MILIEUX = [
const ITEM_ENVIRONNEMENT_TYPES = [
'herbe', 'ingredient'
]
const COMPENDIUMS_ENVIRONNEMENT = [
{ type: 'Item', subType: 'herbe', compendium: 'botanique' },
{ type: 'Item', subType: 'ingredient', compendium: 'botanique' },
{ type: 'Item', subType: 'ingredient', compendium: 'equipement' },
]
export class Environnement {
static init() {
game.settings.register(SYSTEM_RDD, SETTINGS_LISTE_MILIEUX, {
name: "Liste des milieux proposés",
hint: "Liste des noms de milieux proposés, séparés par des virgules",
hint: "Liste des milieux proposés pour la faune&flore, séparés par des virgules",
scope: "world",
config: true,
default: MILIEUX.reduce(Misc.joining(',')),
@ -63,7 +58,7 @@ export class Environnement {
const milieux = new Set(this.getMilieuxSettings());
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];
return [...milieux];
}
getMilieuxSettings() {
@ -76,32 +71,25 @@ export class Environnement {
async searchToChatMessage(search) {
const table = await this.buildEnvironnementTable(search);
await CompendiumTableHelpers.tableToChatMessage(table, 'Item', 'herbe', 'Ressource naturelle');
await CompendiumTableHelpers.tableToChatMessage(table, 'Item', ITEM_ENVIRONNEMENT_TYPES, `ressources en "${search}"`);
return true
}
async getRandom(search) {
const table = await this.buildEnvironnementTable(search);
const row = await CompendiumTableHelpers.getRandom(table, 'Item', 'herbe', undefined, 'Ressource naturelle');
return row
return await CompendiumTableHelpers.getRandom(table, 'Item', ITEM_ENVIRONNEMENT_TYPES, undefined, `ressources en "${search}"`);
}
async buildEnvironnementTable(search) {
const itemRareteEnMilieu = item => item.system?.environnement.find(env => Grammar.includesLowerCaseNoAccent(env.milieu, search));
const itemFrequenceEnMilieu = item => itemRareteEnMilieu(item)?.frequence ?? 0;
const isPresentEnMilieu = item => itemFrequenceEnMilieu(item) > 0;
let elements = await this.getElements(itemFrequenceEnMilieu, isPresentEnMilieu);
return CompendiumTableHelpers.buildTable(elements, itemFrequenceEnMilieu);
return await this.table.buildTable(itemFrequenceEnMilieu, isPresentEnMilieu);
}
async getElements(itemFrequence, filter) {
let elements = [];
for (let c of COMPENDIUMS_ENVIRONNEMENT) {
const fromCompendium = await c.table.getContent(itemFrequence, filter);
elements = elements.concat(fromCompendium);
}
return elements;
return await this.table.getContent(itemFrequence, filter);
}
}