509b7f97dc
Utilisation de system dans les data de formulaire pour tous les Item/Actor (à la base, ou les sous-éléments) Corrections sur les sorts en réserve (ce ne sont pas des Item) Petites améliorations: * `actor.itemTypes[type]` revient à faire (sans besoin de filtrer) `actor.items.filter(it => it.type == type)` * dans les ItemSheet, this.object et this.document remplacés par this.item * dans les ActorSheet, this.object et this.document remplacés par this.actor Quelques corrections en plus: * parade ne marchait pas * problèmes sur le commerce
76 lines
2.9 KiB
JavaScript
76 lines
2.9 KiB
JavaScript
import { RdDUtility } from "./rdd-utility.js";
|
|
import { RdDCalendrier } from "./rdd-calendrier.js";
|
|
|
|
/* -------------------------------------------- */
|
|
export class RdDHerbes extends Item {
|
|
|
|
/* -------------------------------------------- */
|
|
static isHerbeSoin( botaniqueItem ) {
|
|
return botaniqueItem.categorie == 'Soin';
|
|
}
|
|
/* -------------------------------------------- */
|
|
static isHerbeRepos( botaniqueItem ) {
|
|
return botaniqueItem.categorie == 'Repos';
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static async initializeHerbes( ) {
|
|
this.herbesSoins = await RdDUtility.loadCompendium('foundryvtt-reve-de-dragon.botanique', item => this.isHerbeSoin(item));
|
|
this.herbesRepos = await RdDUtility.loadCompendium('foundryvtt-reve-de-dragon.botanique', item => this.isHerbeRepos(item));
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static buildHerbesList(listeHerbes, max) {
|
|
let list = {}
|
|
for ( let herbe of listeHerbes) {
|
|
let brins = max - herbe.system.niveau;
|
|
list[herbe.system.name] = `${herbe.system.name} (Bonus: ${herbe.system.niveau}, Brins: ${brins})`;
|
|
}
|
|
list['Autre'] = 'Autre (Bonus: variable, Brins: variable)'
|
|
return list;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static updatePotionData( formData ) {
|
|
formData.herbesSoins = this.buildHerbesList(this.herbesSoins, 12);
|
|
formData.herbesRepos = this.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);
|
|
|
|
if (formData.system.categorie.includes('Soin') ) {
|
|
formData.isHerbe = true;
|
|
this.computeHerbeBonus(formData, this.herbesSoins, 12);
|
|
} else if (formData.system.categorie.includes('Repos')) {
|
|
formData.isRepos = true;
|
|
this.computeHerbeBonus(formData, this.herbesRepos, 7);
|
|
}
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static calculePuissancePotion( potion ) {
|
|
return potion.system.herbebonus * potion.system.pr;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static calculePointsRepos( potion ) {
|
|
return potion.system.herbebonus * potion.system.pr;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static calculePointsGuerison( potion ){
|
|
return potion.system.herbebonus * potion.system.pr;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static computeHerbeBonus( formData, herbesList, max) {
|
|
if ( Number(formData.system.herbebrins) ) {
|
|
let herbe = herbesList.find(item => item.name.toLowerCase() == formData.system.herbe.toLowerCase() );
|
|
if( herbe ) {
|
|
let brinsBase = max - herbe.system.niveau;
|
|
formData.system.herbebonus = Math.max(herbe.system.niveau - Math.max(brinsBase - formData.system.herbebrins, 0), 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|