Gestion des jets de moral #40

This commit is contained in:
2020-12-16 02:54:28 +01:00
parent ce6680d5e8
commit c8a2d69e0f
6 changed files with 232 additions and 7 deletions

View File

@ -1189,6 +1189,45 @@ export class RdDActor extends Actor {
this.update( { "data.blessures": blessures } );
}
async jetDeMoral(situation) {
let jetMoral = new Roll("1d20").roll();
RdDDice.show(jetMoral);
let compteurs = duplicate(this.data.data.compteurs);
compteurs.moral.value = Misc.toInt(compteurs.moral.value);
const succes = jetMoral.total <= 10 + compteurs.moral.value;
let ajustementMoral = this._calculAjustementMoral(succes, compteurs.moral, situation);
if (ajustementMoral != 0) {
compteurs.moral.value += ajustementMoral;
if (compteurs.moral.value>3) {
// exaltation
compteurs.moral.value --;
compteurs.exaltation.value = Misc.toInt(compteurs.exaltation.value) + 1;
}
if (compteurs.moral.value<-3) {
// dissolution
compteurs.moral.value ++;
compteurs.dissolution.value = Misc.toInt(compteurs.dissolution.value) + 1;
}
await this.update( { 'data.compteurs': compteurs} );
}
ChatMessage.create({
whisper: ChatMessage.getWhisperRecipients(game.user.name),
content: "Jet de moral ("+ jetMoral.total + ")" + (succes? "réussi": "manqué") + " en situation "+situation+", vous "+(ajustementMoral>0? "gagnez du moral":ajustementMoral<0? "perdez du moral": "gardez votre moral")
});
}
_calculAjustementMoral(succes, moral, situation)
{
switch (situation) {
case 'heureuse': return succes ? 1 : 0;
case 'malheureuse':return succes ? 0 : -1;
case 'neutre':
if (succes && moral <= 0) return 1;
if (!succes && moral > 0) return -1;
}
return 0;
}
/* -------------------------------------------- */
async ethylismeTest() {
let rollData = {
@ -1648,7 +1687,7 @@ export class RdDActor extends Actor {
// Cas de désir lancinant, pas d'expérience sur particulière
if ( this.checkDesirLancinant() ) {
ChatMessage.create( { content: `Vous souffrez au moins d'un Désir Lancinant, vous ne pouvez pas gagner d'expérience sur une Particulière tant que le désir n'est pas assouvi`,
whisper: ChatMessage.getWhisperRecipients(game.user.name) } ).create();
whisper: ChatMessage.getWhisperRecipients(game.user.name) } );
return { result:false, xpcarac:0, xpCompetence: 0 };
}
@ -1672,7 +1711,7 @@ export class RdDActor extends Actor {
await this.update( {"data.carac": carac } );
} else {
ChatMessage.create( { content: `Vous avez ${xpCarac} à répartir pour la caractérisque dérivée ${caracName}. Vous devez le faire manuellement.`,
whisper: ChatMessage.getWhisperRecipients(game.user.name) } ).create();
whisper: ChatMessage.getWhisperRecipients(game.user.name) } );
}
return { result:true, xpcarac:xpCarac, xpCompetence: xpComp }; //XP
}