diff --git a/module/rdd-herbes.js b/module/rdd-herbes.js new file mode 100644 index 00000000..df915c7e --- /dev/null +++ b/module/rdd-herbes.js @@ -0,0 +1,81 @@ +/* -------------------------------------------- */ +import { RdDUtility } from "./rdd-utility.js"; +import { Misc } from "./misc.js"; +import { RdDCalendrier } from "./rdd-calendrier.js"; + +/* -------------------------------------------- */ +export class RdDHerbes extends Item { + + /* -------------------------------------------- */ + static isHerbeSoin( botaniqueItem ) { + return Misc.templateData(botaniqueItem).categorie == 'Soin'; + } + /* -------------------------------------------- */ + static isHerbeRepos( botaniqueItem ) { + return Misc.templateData(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(listHerbes, max) { + let list = {} + for ( let herbe of listHerbes) { + let herbeData = Misc.templateData(herbe); + let brins = max - herbeData.niveau; + list[herbe.data.name] = `${herbe.data.name} (Bonus: ${herbeData.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 = Array(28).fill().map((item, index) => 1 + index); + formData.dateActuelle = game.system.rdd.calendrier.getDateFromIndex(); + formData.splitDate = game.system.rdd.calendrier.getNumericDateFromIndex(formData.data.prdate); + + if (formData.data.categorie.includes('Soin') ) { + formData.isHerbe = true; + this.computeHerbeBonus(formData, this.herbesSoins, 12); + } else if (formData.data.categorie.includes('Repos')) { + formData.isRepos = true; + this.computeHerbeBonus(formData, this.herbesRepos, 7); + } + + if (formData.data.categorie.includes('Enchante') ) { + formData.isEnchante = true; + if ( formData.isHerbe) { + formData.pointsGuerison = this.calculePointsGuerison( formData.data ); + } + if ( formData.isRepos) { + formData.caseRepos = formData.data.herbebonus * formData.data.pr; + } + } + } + + /* -------------------------------------------- */ + static calculePointsGuerison( data ){ + return data.herbebonus * data.pr; + } + + /* -------------------------------------------- */ + static computeHerbeBonus( formData, herbesList, max) { + if ( Number(formData.data.herbebrins) ) { + let herbe = herbesList.find(item => item.name.toLowerCase() == formData.data.herbe.toLowerCase() ); + if( herbe ) { + let herbeData = Misc.templateData(herbe); + let brinsBase = max - herbeData.niveau; + //console.log(herbeData, brinsBase, formData.data.herbebrins); + formData.data.herbebonus = Math.max(herbeData.niveau - Math.max(brinsBase - formData.data.herbebrins, 0), 0); + } + } + } + +} \ No newline at end of file diff --git a/templates/chat-appliquer-potion-soin.html b/templates/chat-appliquer-potion-soin.html new file mode 100644 index 00000000..9d4b9e30 --- /dev/null +++ b/templates/chat-appliquer-potion-soin.html @@ -0,0 +1,23 @@ + +