forked from public/foundryvtt-reve-de-dragon
Récupération de fatigue
This commit is contained in:
@ -329,38 +329,76 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
async dormir(heures=1) {
|
||||
let message = { title : "Récupération", content :"Vous dormez " + heures + " heure" + (heures > 1 ? "s": "") };
|
||||
this.recupereEndurance(message);
|
||||
for (let i=0; i<heures; i++) {
|
||||
console.log("recuperationReve", this.data.data);
|
||||
/**
|
||||
* TODO: récupérer les segment de fatigue
|
||||
*/
|
||||
this.recuperationReve();
|
||||
await this.recupererFatigueUneHeure(message);
|
||||
this.recuperationReve(message);
|
||||
}
|
||||
ChatMessage.create( message );
|
||||
}
|
||||
|
||||
recupereEndurance(message) {
|
||||
const avant = this.data.data.sante.endurance.value;
|
||||
this.santeIncDec("endurance", this.data.data.sante.endurance.max - avant);
|
||||
const recupere = this.data.data.sante.endurance.value - avant;
|
||||
if (recupere>0) {
|
||||
message.content += "<br>Vous récuperez " + recupere + " points d'endurance";
|
||||
}
|
||||
}
|
||||
|
||||
async recuperationReve() {
|
||||
const seuil = this.data.data.reve.seuil.value;
|
||||
const reve = this.getReveActuel();
|
||||
console.log("recuperationReve", this.data.data);
|
||||
let message = { title : "Récupération" }
|
||||
if (reve > seuil) {
|
||||
message.content = "Vous avez déjà récupéré suffisament (seuil " + seuil + ", rêve actuel "+reve+")";
|
||||
}
|
||||
else {
|
||||
let deRecuperation = await RdDDice.deDraconique();
|
||||
console.log("recuperationReve", deRecuperation);
|
||||
if (deRecuperation>=7)
|
||||
{
|
||||
// Rêve de Dragon !
|
||||
message.content = "Vous faites un <strong>Rêve de Dragon</strong> de " + deRecuperation + " Points de rêve";
|
||||
message.content += await this.combattreReveDeDragon(deRecuperation);
|
||||
}
|
||||
else{
|
||||
message.content = "Vous récupérez " + deRecuperation + " Points de rêve";
|
||||
await this.updatePointsDeReve(deRecuperation);
|
||||
async recupererFatigueUneHeure(message) {
|
||||
let fatigue = duplicate(this.data.data.sante.fatigue)
|
||||
if (fatigue.value == 0) {
|
||||
message.content += "<br>Vous êtes déjà reposé";
|
||||
return;
|
||||
}
|
||||
const segments = RdDUtility.getSegmentsFatigue(this.data.data.sante.endurance.max);
|
||||
let cumul = 0;
|
||||
console.log("recupererFatigue", segments);
|
||||
|
||||
let i;
|
||||
for (i=0; i <11; i++) {
|
||||
cumul += segments[i];
|
||||
let diff = cumul - fatigue.value ;
|
||||
if (diff >= 0)
|
||||
{
|
||||
const limit2Segments = Math.floor(segments[i] / 2);
|
||||
if (diff > limit2Segments && i > 0) {
|
||||
cumul -= segments[i-1]; // le segment est à moins de la moitié, il est récupéré
|
||||
}
|
||||
cumul -= segments[i];
|
||||
break;
|
||||
}
|
||||
ChatMessage.create( message );
|
||||
}
|
||||
fatigue.value = cumul;
|
||||
await this.update( {"data.sante.fatigue": fatigue } );
|
||||
if (fatigue.value == 0)
|
||||
{
|
||||
message.content += "<br>Vous êtes bien reposé";
|
||||
}
|
||||
}
|
||||
|
||||
recuperationReve(message) {
|
||||
const seuil = this.data.data.reve.seuil.value;
|
||||
const reve = this.getReveActuel();
|
||||
if (reve >= seuil) {
|
||||
message.content += "<br>Vous avez suffisament rêvé (seuil " + seuil + ", rêve actuel "+reve+")";
|
||||
}
|
||||
else {
|
||||
let deRecuperation = RdDDice.deDraconique();
|
||||
console.log("recuperationReve", deRecuperation);
|
||||
if (deRecuperation>=7)
|
||||
{
|
||||
// Rêve de Dragon !
|
||||
message.content += "<br>Vous faites un <strong>Rêve de Dragon</strong> de " + deRecuperation + " Points de rêve";
|
||||
message.content += this.combattreReveDeDragon(deRecuperation);
|
||||
}
|
||||
else{
|
||||
message.content += "<br>Vous récupérez " + deRecuperation + " Points de rêve";
|
||||
this.updatePointsDeReve(deRecuperation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
combattreReveDeDragon(force){
|
||||
@ -370,6 +408,7 @@ export class RdDActor extends Actor {
|
||||
let difficulte = niveau - etat - force;
|
||||
let reveActuel = this.getReveActuel();
|
||||
let rolled = RdDResolutionTable.roll(reveActuel, difficulte);
|
||||
// TODO: xp particulière
|
||||
consome.log("combattreReveDeDragon", rolled );
|
||||
return this.appliquerReveDeDragon(rolled, force);
|
||||
}
|
||||
|
Reference in New Issue
Block a user