foundryvtt-reve-de-dragon/module/rdd-herbes.js

73 lines
2.8 KiB
JavaScript
Raw Permalink Normal View History

import { Grammar } from "./grammar.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js";
2021-04-07 22:46:57 +02:00
/* -------------------------------------------- */
export class RdDHerbes extends Item {
/* -------------------------------------------- */
2024-09-25 22:59:42 +02:00
static async onReady() {
this.herbesSoins = await RdDHerbes.listCategorieHerbes('Soin');
this.herbesRepos = await RdDHerbes.listCategorieHerbes('Repos');
2021-04-07 22:46:57 +02:00
}
static async listCategorieHerbes(categorie) {
const herbes = await SystemCompendiums.getWorldOrCompendiumItems('herbe', 'faune-flore-mineraux');
return herbes.filter(it => Grammar.equalsInsensitive(it.system.categorie, categorie));
2021-04-07 22:46:57 +02:00
}
/* -------------------------------------------- */
static buildHerbesList(listeHerbes, max) {
2021-04-07 22:46:57 +02:00
let list = {}
for (let herbe of listeHerbes) {
let brins = max - herbe.system.niveau;
list[herbe.name] = `${herbe.name} (Bonus: ${herbe.system.niveau}, Brins: ${brins})`;
2021-04-07 22:46:57 +02:00
}
list['Autre'] = 'Autre (Bonus: variable, Brins: variable)'
return list;
}
/* -------------------------------------------- */
2024-11-28 00:38:34 +01:00
static calculFormData(formData, item) {
formData.isSoins = item.system.categorie.includes('Soin');
formData.isRepos = item.system.categorie.includes('Repos');
if (formData.isSoins) {
RdDHerbes.calculBonusHerbe(formData, this.herbesSoins, 12);
}
if (formData.isRepos) {
RdDHerbes.calculBonusHerbe(formData, this.herbesRepos, 7);
}
formData.herbesSoins = RdDHerbes.buildHerbesList(this.herbesSoins, 12);
formData.herbesRepos = RdDHerbes.buildHerbesList(this.herbesRepos, 7);
formData.dateActuelle = game.system.rdd.calendrier.dateCourante();
2024-11-28 00:38:34 +01:00
formData.enchantement = RdDTimestamp.splitIndexDate(item.system.prdate);
2021-04-07 22:46:57 +02:00
}
2021-04-09 15:23:48 +02:00
/* -------------------------------------------- */
static calculPuissancePotion(potion) {
return potion.system.herbebonus * potion.system.pr;
}
/* -------------------------------------------- */
static calculPointsRepos(potion) {
return potion.system.herbebonus * potion.system.pr;
2021-04-09 15:23:48 +02:00
}
2021-04-07 22:46:57 +02:00
/* -------------------------------------------- */
static calculPointsGuerison(potion) {
return potion.system.herbebonus * potion.system.pr;
2021-04-07 22:46:57 +02:00
}
/* -------------------------------------------- */
static calculBonusHerbe(formData, herbesList, max) {
if (Number(formData.system.herbebrins)) {
let herbe = herbesList.find(item => item.name.toLowerCase() == formData.system.herbe.toLowerCase());
if (herbe) {
const brinsRequis = max - herbe.system.niveau;
const brinsManquants = Math.max(brinsRequis - formData.system.herbebrins, 0);
formData.system.herbebonus = Math.max(herbe.system.niveau - brinsManquants, 0);
2021-04-07 22:46:57 +02:00
}
}
}
2021-04-07 22:46:57 +02:00
}