forked from public/foundryvtt-reve-de-dragon
Consommer nourriture et boisson WIP
This commit is contained in:
@ -28,6 +28,7 @@ import { Draconique } from "./tmr/draconique.js";
|
||||
import { RdDCarac } from "./rdd-carac.js";
|
||||
import { Monnaie } from "./item-monnaie.js";
|
||||
import { RdDHerbes } from "./rdd-herbes.js";
|
||||
import { DialogConsommer } from "./dialog-consommer.js";
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -355,6 +356,7 @@ export class RdDActor extends Actor {
|
||||
await this.transformerStress();
|
||||
await this.retourSeuilDeReve(message);
|
||||
this.bonusRecuperationPotion= 0; // Reset potion
|
||||
await this.retourSust(message);
|
||||
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`;
|
||||
ChatMessage.create(message);
|
||||
}
|
||||
@ -597,6 +599,26 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
async retourSust(message) {
|
||||
const tplData = Misc.templateData(this);
|
||||
const sustNeeded = tplData.attributs.sust.value;
|
||||
const sustConsomme = tplData.compteurs.sust.value;
|
||||
const eauConsomme = tplData.compteurs.eau.value;
|
||||
if (game.settings.get("foundryvtt-reve-de-dragon", "appliquer-famine-soif").includes('famine') && sustConsomme < sustNeeded) {
|
||||
const perte = sustConsomme < Math.min(0.5, sustNeeded) ? 3 : (sustConsomme <= (sustNeeded / 2) ? 2 : 1);
|
||||
message.content += `<br>Vous ne vous êtes sustenté que de ${sustConsomme} pour un appétit de ${sustNeeded}, vous avez faim!
|
||||
La famine devrait vous faire ${perte} points d'endurance non récupérables, notez le cumul de côté et ajustez l'endurance`;
|
||||
}
|
||||
|
||||
if (game.settings.get("foundryvtt-reve-de-dragon", "appliquer-famine-soif").includes('soif') && eauConsomme < sustNeeded) {
|
||||
const perte = eauConsomme < Math.min(0.5, sustNeeded) ? 12 : (eauConsomme <= (sustNeeded / 2) ? 6 : 3);
|
||||
message.content += `<br>Vous n'avez bu que ${eauConsomme} doses de liquide pour une soif de ${sustNeeded}, vous avez soif!
|
||||
La soif devrait vous faire ${perte} points d'endurance non récupérables, notez le cumul de côté et ajustez l'endurance`;
|
||||
}
|
||||
await this.updateCompteurValue('sust', 0);
|
||||
await this.updateCompteurValue('eau', 0);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async combattreReveDeDragon(force) {
|
||||
let rollData = {
|
||||
@ -1526,7 +1548,7 @@ export class RdDActor extends Actor {
|
||||
? "vous êtes libre de continuer à boire ou pas."
|
||||
: "vous avez une envie irrépréssible de reprendre un verre.");
|
||||
|
||||
msgText += `Vous avez échoué à votre jet d'éthylisme, vous êtes
|
||||
msgText += `Vous avez échoué à votre jet d'éthylisme, vous êtes
|
||||
maintenant ${RdDUtility.getNomEthylisme(ajustementEthylique)} (${ajustementEthylique}).
|
||||
<br> ${RdDResolutionTable.explain(rollVolonte)}
|
||||
<br>Qui a bu boira : ${quiABuBoira}`;
|
||||
@ -1561,6 +1583,70 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async consommer(item) {
|
||||
DialogConsommer.create(this, item, {
|
||||
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-consommer-nourriture.html',
|
||||
}, []);
|
||||
}
|
||||
|
||||
async manger(sust) {
|
||||
if (sust > 0) {
|
||||
await this.updateCompteurValue('sust', Misc.templateData(this).compteurs.sust.value + sust);
|
||||
}
|
||||
}
|
||||
|
||||
async boire(eau) {
|
||||
if (eau > 0) {
|
||||
await this.actor.updateCompteurValue('eau', Misc.templateData(this).eau.value + this.consommerData.data.desaltere);
|
||||
}
|
||||
}
|
||||
|
||||
async alcool(forceAlcool) {
|
||||
const actorTplData = Misc.templateData(this);
|
||||
const etatGeneral = this.getEtatGeneral({ ethylisme: true });
|
||||
const nbDoses = -Number(actorTplData.compteurs.ethylisme.nb_doses || 0);
|
||||
let rollData = {
|
||||
vieValue: actorTplData.sante.vie.value,
|
||||
forceAlcool: forceAlcool,
|
||||
etat: etatGeneral,
|
||||
diffNbDoses: nbDoses,
|
||||
finalLevel: nbDoses + forceAlcool + etatGeneral,
|
||||
diffConditions: 0,
|
||||
};
|
||||
await this.performEthylisme(rollData);
|
||||
}
|
||||
|
||||
async apprecierCuisine(consommerData) {
|
||||
const cuisine = Misc.data(this.getCompetence('cuisine'));
|
||||
const qualite = consommerData.data.qualite;
|
||||
if (cuisine && qualite > 0 && qualite > cuisine.data.niveau) {
|
||||
const rolled = await this.rollCaracCompetence('gout', 'cuisine', qualite, { title: consommerData.data.boisson ? "apprécie la boisson" : "apprécie le plat" });
|
||||
if (rolled.isSuccess) {
|
||||
await this.jetDeMoral('heureux');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async surmonterExotisme(consommerData) {
|
||||
const qualite = consommerData.data.qualite;
|
||||
if (qualite < 0) {
|
||||
const rolled = await this.rollCaracCompetence('volonte', 'cuisine', qualite, { title: "tente de surmonter l'exotisme" });
|
||||
if (rolled.isEchec) {
|
||||
if (!consommerData.data.seForcer) {
|
||||
return false;
|
||||
}
|
||||
await this.actor.jetDeMoral('malheureux');
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
async jetGoutCuisine() {
|
||||
console.info('Jet de Gout/Cuisine');
|
||||
return true;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async transformerStress() {
|
||||
const actorData = Misc.data(this);
|
||||
@ -1974,7 +2060,7 @@ export class RdDActor extends Actor {
|
||||
RdDResolutionTable.displayRollData(rollData, this, 'chat-resultat-general.html');
|
||||
}
|
||||
|
||||
async rollCaracCompetence(caracName, compName, diff) {
|
||||
async rollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
|
||||
const carac = this.getCaracByName(caracName);
|
||||
if (!carac) {
|
||||
ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`)
|
||||
@ -1993,11 +2079,12 @@ export class RdDActor extends Actor {
|
||||
finalLevel: (competence?.data.niveau ?? 0) + diff,
|
||||
diffLibre: diff,
|
||||
showDice: true,
|
||||
show: { title: "Jets multiples" }
|
||||
show: { title: options?.title ?? '' }
|
||||
};
|
||||
await RdDResolutionTable.rollData(rollData);
|
||||
this.appliquerExperience(rollData);
|
||||
RdDResolutionTable.displayRollData(rollData, this)
|
||||
return rollData.rolled;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -3090,7 +3177,7 @@ export class RdDActor extends Actor {
|
||||
return guerisonData;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* -------------------------------------------- */
|
||||
async consommerPotionSoin(potionData) {
|
||||
potionData.alias = this.name;
|
||||
|
||||
|
Reference in New Issue
Block a user