18039e905b
* permettre d'ajouter des compétences dans un monde, qui seront ajoutés aux acteurs créés dans ce monde * les herbes de repos/soins du monde sont bien considérées comme des herbes pour les potions
75 lines
2.8 KiB
JavaScript
75 lines
2.8 KiB
JavaScript
import { RdDUtility } from "./rdd-utility.js";
|
|
import { RdDCalendrier } from "./rdd-calendrier.js";
|
|
import { Grammar } from "./grammar.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) {
|
|
return await RdDUtility.loadItems(
|
|
it => it.type == 'herbe' && it.system.categorie.toLowerCase() == categorie.toLowerCase(),
|
|
'foundryvtt-reve-de-dragon.botanique');
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
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 updatePotionData(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.jourMoisOptions = RdDCalendrier.buildJoursMois();
|
|
formData.dateActuelle = game.system.rdd.calendrier.getDateFromIndex();
|
|
formData.splitDate = game.system.rdd.calendrier.getNumericDateFromIndex(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);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|