Moral sur éthylisme
This commit is contained in:
parent
6f22c4ab18
commit
df7d39f38e
@ -46,6 +46,7 @@ export class RdDActorHumanoideSheet extends ActorSheet {
|
||||
|
||||
data.data.competencecreature = data.itemsByType["competencecreature"];
|
||||
data.data.isGM = game.user.isGM;
|
||||
data.data.compteurs.ethylisme.nom = RdDUtility.getNomEthylisme(data.data.compteurs.ethylisme.value);
|
||||
|
||||
RdDUtility.filterItemsPerTypeForSheet(data );
|
||||
RdDUtility.buildArbreDeConteneur( this, data );
|
||||
|
@ -202,8 +202,8 @@ export class RdDActor extends Actor {
|
||||
let message = {
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
|
||||
content : ""
|
||||
|
||||
};
|
||||
|
||||
const blessures = duplicate(this.data.data.blessures);
|
||||
console.log("dormirChateauDormant", blessures)
|
||||
await this._recupererBlessures(message, "legere", blessures.legeres.liste.filter(b => b.active), []);
|
||||
@ -316,6 +316,8 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
await this.update( {"data.blessures": blessures } );
|
||||
}
|
||||
await this.update({ "data.compteurs.ethylisme.value": 0 });
|
||||
await this.update({ "data.compteurs.ethylisme.nb_doses": 0 });
|
||||
await this.santeIncDec("vie", this.data.data.sante.vie.max - this.data.data.sante.vie.value);
|
||||
await this.santeIncDec("endurance", this.data.data.sante.endurance.max - this.data.data.sante.endurance.value);
|
||||
if (this.data.data.sante.fatigue){
|
||||
@ -335,12 +337,26 @@ export class RdDActor extends Actor {
|
||||
};
|
||||
await this.recupereEndurance(message);
|
||||
for (let i=0; i<heures; i++) {
|
||||
await this._recupererEthylisme(message);
|
||||
await this.recupererFatigue(message);
|
||||
await this.recuperationReve(message);
|
||||
}
|
||||
ChatMessage.create( message );
|
||||
}
|
||||
|
||||
async _recupererEthylisme(message) {
|
||||
let ethylisme = duplicate(this.data.data.compteurs.ethylisme);
|
||||
if (ethylisme.value < 1)
|
||||
{
|
||||
ethylisme.value = Math.min(ethylisme.value + 1, 1);
|
||||
ethylisme.nb_doses = 0;
|
||||
await this.update({ "data.compteurs.ethylisme": ethylisme });
|
||||
if (ethylisme.value <= 0) {
|
||||
message.content += `<br>Vous dégrisez un peu (${RdDUtility.getNomEthylisme(ethylisme.value)})`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async recupereEndurance(message) {
|
||||
const manquant = this._computeEnduranceMax() - this.data.data.sante.endurance.value;
|
||||
@ -680,18 +696,15 @@ export class RdDActor extends Actor {
|
||||
return;
|
||||
}
|
||||
// Pour les autres
|
||||
let state = 0, surenc = 0;
|
||||
state = state - (data.sante.vie.max - data.sante.vie.value);
|
||||
let state = - (data.sante.vie.max - data.sante.vie.value);
|
||||
if (data.sante.fatigue) // Creatures n'ont pas de fatigue
|
||||
state = state + RdDUtility.currentFatigueMalus(data.sante.fatigue.value, data.sante.endurance.max);
|
||||
state += RdDUtility.currentFatigueMalus(data.sante.fatigue.value, data.sante.endurance.max);
|
||||
if (data.compteurs && data.compteurs.ethylisme && data.compteurs.ethylisme.value < 0 ) { // Ajout de l'éthylisme
|
||||
state = state + data.compteurs.ethylisme.value;
|
||||
state += data.compteurs.ethylisme.value;
|
||||
}
|
||||
state = state;
|
||||
data.compteurs.etat.value = state;
|
||||
if ( data.compteurs && data.compteurs.surenc) {
|
||||
surenc = -this.detectSurEncombrement();
|
||||
data.compteurs.surenc.value = surenc;
|
||||
data.compteurs.surenc.value = - this.detectSurEncombrement();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1063,21 +1076,21 @@ export class RdDActor extends Actor {
|
||||
let msgText = RdDResolutionTable.explain(rollEthylisme) + "<br>";
|
||||
if (rollEthylisme.isSuccess ) {
|
||||
ethylisme.nb_doses = ethylisme.nb_doses + 1;
|
||||
msgText += "Vous avez réussi votre jet d'éthylisme, votre vous avez désormais " + ethylisme.nb_doses + " doses sans effet.";
|
||||
msgText += `Vous avez réussi votre jet d'éthylisme, vous avez consommé ${ethylisme.nb_doses} doses sans effet.`;
|
||||
} else {
|
||||
ethylisme.value = ethylisme.value - 1;
|
||||
if ( ethylisme.value > 7) ethylisme.value = 7; // Niveau max
|
||||
ethylisme.value = Math.max(ethylisme.value -1, -7);
|
||||
|
||||
let enduranceLost = new Roll("1d6").roll().total;
|
||||
await this.santeIncDec("endurance", -enduranceLost);
|
||||
msgText += "Vous avez échoué à votre jet d'éthylisme, votre niveau d'éthylisme est de " + ethylisme.value
|
||||
+ "(" + RdDUtility.getNomEthylisme(ethylisme.value) + ").";
|
||||
const ajustementEthylique = ethylisme.value;
|
||||
// Qui a bu boira (p 164)
|
||||
let rollVolonte = await RdDResolutionTable.roll( this.data.data.carac.volonte.value, -ethylisme.value);
|
||||
let rollVolonte = await RdDResolutionTable.roll( this.data.data.carac.volonte.value, Math.min(ajustementEthylique, 0) + this.data.data.compteurs.moral.value);
|
||||
msgText += `Vous avez échoué à votre jet d'éthylisme, vous êtes maintenant ${RdDUtility.getNomEthylisme(ajustementEthylique)} (${ajustementEthylique}).`
|
||||
msgText += "<br>" + RdDResolutionTable.explain(rollVolonte) + "<br>";
|
||||
if ( rollVolonte.isSuccess)
|
||||
msgText += "Qui a bu boira : vous êtes libre de continuer à boire ou pas.";
|
||||
else
|
||||
msgText += "Qui a bu boira : vous avez une envie irrépréssible de reprendre un verre.";
|
||||
msgText += "Qui a bu boira : " +(rollVolonte.isSuccess
|
||||
? "vous êtes libre de continuer à boire ou pas."
|
||||
: "vous avez une envie irrépréssible de reprendre un verre.");
|
||||
|
||||
}
|
||||
await this.update( { 'data.compteurs.ethylisme': ethylisme} );
|
||||
const message = {
|
||||
@ -1085,6 +1098,10 @@ export class RdDActor extends Actor {
|
||||
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
||||
};
|
||||
ChatMessage.create(message);
|
||||
|
||||
if (rollEthylisme.isEchec && ethylisme.value == 0) {
|
||||
await this.jetDeMoral('heureuse'); // note: en, théorie, un deuxième jet de moral peut avoir lieu le même jour si lme premier est manqué, qui fait perdre du moral si raté...
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -203,8 +203,8 @@ export class RdDUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getNomEthylisme( niveauEthylisme ) {
|
||||
let index = Math.abs(niveauEthylisme);
|
||||
return nomEthylisme[index];
|
||||
let index = -niveauEthylisme;
|
||||
return index <0 ? 'Aucun' : nomEthylisme[index];
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -1,9 +1,9 @@
|
||||
<option value="1">Aucun</option>
|
||||
<option value="0">Eméché</option>
|
||||
<option value="-1">Gris</option>
|
||||
<option value="-2">Pinté</option>
|
||||
<option value="-3">Pas Frais</option>
|
||||
<option value="-4">Ivre</option>
|
||||
<option value="-5">Bu</option>
|
||||
<option value="-6">Complètement fait</option>
|
||||
<option value="-7">Ivre mort</option>
|
||||
<option value="0">Eméché (0)</option>
|
||||
<option value="-1">Gris (-1)</option>
|
||||
<option value="-2">Pinté (-2)</option>
|
||||
<option value="-3">Pas Frais (-3)</option>
|
||||
<option value="-4">Ivre (-4)</option>
|
||||
<option value="-5">Bu (-5)</option>
|
||||
<option value="-6">Complètement fait (-6)</option>
|
||||
<option value="-7">Ivre mort (-7)</option>
|
||||
|
Loading…
Reference in New Issue
Block a user