Vincent Vandemeulebrouck
912b1d3df3
- Séparation des timestamp / calendrier Les poisons/maladies/souffles/queues/rencontres/signes peuvent être temporaires. - Ajout de champs pour stocker les timestamps de début et fin - définition de la durée (selon les items) - extraction des classes spécialisées des items - initialisation des dates de début/fin des effets temporaires à l'ajout d'un item temporel - préparation de la suppression automatique - Fix de mauvaise présentations sur les dialog d'astrologie et d'édition du calendrier
73 lines
2.8 KiB
JavaScript
73 lines
2.8 KiB
JavaScript
import { Grammar } from "./grammar.js";
|
|
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
|
import { RdDTimestamp } from "./rdd-timestamp.js";
|
|
|
|
/* -------------------------------------------- */
|
|
export class RdDHerbes extends Item {
|
|
|
|
/* -------------------------------------------- */
|
|
static async initializeHerbes() {
|
|
this.herbesSoins = await RdDHerbes.listCategorieHerbes('Soin');
|
|
this.herbesRepos = await RdDHerbes.listCategorieHerbes('Repos');
|
|
}
|
|
|
|
static async listCategorieHerbes(categorie) {
|
|
const herbes = await SystemCompendiums.getWorldOrCompendiumItems('herbe', 'faune-flore-mineraux');
|
|
return herbes.filter(it => Grammar.equalsInsensitive(it.system.categorie, categorie));
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static buildHerbesList(listeHerbes, max) {
|
|
let list = {}
|
|
for (let herbe of listeHerbes) {
|
|
let brins = max - herbe.system.niveau;
|
|
list[herbe.name] = `${herbe.name} (Bonus: ${herbe.system.niveau}, Brins: ${brins})`;
|
|
}
|
|
list['Autre'] = 'Autre (Bonus: variable, Brins: variable)'
|
|
return list;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static async addPotionFormData(formData) {
|
|
formData.isSoins = formData.system.categorie.includes('Soin');
|
|
formData.isRepos = formData.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();
|
|
formData.enchantement = RdDTimestamp.splitIndexDate(formData.system.prdate);
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static calculPuissancePotion(potion) {
|
|
return potion.system.herbebonus * potion.system.pr;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static calculPointsRepos(potion) {
|
|
return potion.system.herbebonus * potion.system.pr;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static calculPointsGuerison(potion) {
|
|
return potion.system.herbebonus * potion.system.pr;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|