#63 Jet d'éthylisme

This commit is contained in:
sladecraven 2020-12-06 21:11:30 +01:00
parent bf317e54d7
commit 1afce56348
4 changed files with 43 additions and 17 deletions

View File

@ -909,6 +909,8 @@ export class RdDActor extends Actor {
state = 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);
if (data.compteurs && data.compteurs.ethylisme) // Ajout de l'éthylisme
state = state + data.compteurs.ethylisme.value;
state = state;
surenc = -this.detectSurEncombrement();
data.compteurs.etat.value = state;
@ -1197,7 +1199,7 @@ export class RdDActor extends Actor {
async ethylismeTest() {
let rollData = {
vieValue: this.data.data.sante.vie.value,
etat: this.data.data.compteurs.etat.value,
etat: this.data.data.compteurs.etat.value - this.data.data.compteurs.etat.value, // Pour les jets d'Ethylisme, on ignore le degré d'éthylisme (p.162)
niveauEthylisme: this.data.data.compteurs.ethylisme.value,
nbDoses: this.data.data.compteurs.ethylisme.nb_doses || 0,
finalLevel: 0,
@ -1208,26 +1210,38 @@ export class RdDActor extends Actor {
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-ethylisme.html', rollData);
new RdDRollDialogEthylisme(html, rollData, this ).render(true);
}
/* -------------------------------------------- */
async performEthylisme( rollData ) {
let ethylisme = duplicate(this.data.data.compteurs.ethylisme);
let roll = await RdDResolutionTable.roll( rollData.vieValue, rollData.finalLevel);
let msgText;
if (roll.isSuccess ) {
ethylisme.value = ethylisme.value - 1;
msgText = "Vous avez échouez à votre jet d'éthylisme, votre niveau d'éthylisme est de " + ethylisme.value
+ "(" + RdDUtility.getNomEthylisme(ethylisme.value) + ")";
} else {
// Je d'ethylisme
let rollEthylisme = await RdDResolutionTable.roll( rollData.vieValue, rollData.finalLevel);
let msgText = RdDResolutionTable.explain(rollEthylisme) + "<br>";
if (rollEthylisme.isSuccess ) {
ethylisme.nb_doses = ethylisme.nb_doses + 1;
msgText = "Vous avez réussitvotre jet d'éthylisme, votre vous avez désormais " + ethylisme.nb_doses + " doses sans effet.";
msgText += "Vous avez réussi votre jet d'éthylisme, votre vous avez désormais " + ethylisme.nb_doses + " doses sans effet.";
} else {
ethylisme.value = ethylisme.value - 1;
if ( ethylisme.value > 7) ethylisme.value = 7; // Niveau max
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) + ").";
// Qui a bu boira (p 164)
let rollVolonte = await RdDResolutionTable.roll( this.data.data.carac.volonte.value, -ethylisme.value);
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.";
}
await this.update( { 'data.compteurs.ethylisme': ethylisme} );
const message = {
content: msgText,
whisper: ChatMessage.getWhisperRecipients(game.user.name)
};
ChatMessage.create(message);
ChatMessage.create(message);
}
/* -------------------------------------------- */
@ -1338,6 +1352,7 @@ export class RdDActor extends Actor {
new RdDRollDialog("carac", html, rollData, this ).render(true);
}
/* -------------------------------------------- */
async appelChance( )
{
let rollData = {
@ -1360,6 +1375,7 @@ export class RdDActor extends Actor {
dialog.render(true);
}
/* -------------------------------------------- */
_appelChanceResultat(rollData) {
const message = {
user: game.user._id,
@ -1373,17 +1389,20 @@ export class RdDActor extends Actor {
ChatMessage.create(message);
}
/* -------------------------------------------- */
async chanceActuelleIncDec(value) {
let chance = duplicate(this.data.data.compteurs.chance);
chance.value = Math.max(chance.value + value, 0);
await this.update( {"data.compteurs.chance": chance } );
}
/* -------------------------------------------- */
ajustementAstrologique() {
//TODO: selon heure et heure de naissance...
return 0;
}
/* -------------------------------------------- */
getCaracByName(caracName) {
switch (caracName)
{

View File

@ -97,6 +97,7 @@ export class RdDResolutionTable {
}
}
/* -------------------------------------------- */
static async rollData(rollData ) {
rollData.rolled = await this.roll(rollData.caracValue, rollData.finalLevel, rollData.bonus);
return rollData;

View File

@ -86,7 +86,9 @@ const fatigueMarche = { "aise": { "4":1, "6":2, "8":3, "10":4, "12":6 },
"malaise": { "4":2, "6":3, "8":4, "10":6 },
"difficile": { "4":3, "6":4, "8":6 },
"tresdifficile": { "4":4, "6":6 } }
/* Static tables for commands /table */
/* -------------------------------------------- */
/* Static tables for commands /table */
const table2func = { "queues": {descr: "queues : Tire une queue de Dragon", func: RdDRollTables.getQueue},
"ombre": { descr: "ombre: Tire une Ombre de Dragon", func: RdDRollTables.getOmbre },
"tetehr": {descr: "tetehr: Tire une Tête de Dragon pour Hauts Revants", fund: RdDRollTables.getTeteHR},
@ -101,6 +103,9 @@ const definitionsBlessures = [
{ type: "critique", facteur : 6 }
]
/* -------------------------------------------- */
const nomEthylisme = [ "Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "Complètement fait", "Ivre mort"];
/* -------------------------------------------- */
const definitionsEncaissement = {
"mortel": [
@ -191,10 +196,11 @@ export class RdDUtility {
}
/* -------------------------------------------- */
getNomEthylisme( niveauEthylisme ) {
static getNomEthylisme( niveauEthylisme ) {
let index = Math.abs(niveauEthylisme);
return nomEthylisme[index];
}
/* -------------------------------------------- */
static initAfficheContenu( actorId ) { // persistent handling of conteneur show/hide
if ( !this.afficheContenu )

View File

@ -144,7 +144,7 @@
{{#if compteur.isStress}}
<a class="item-control stress-test" id="stress-test" title="Transformer">Transformer</a>
{{else}}
{{#if eq compteur.label 'Ethylisme'}}
{{#if (eq compteur.label 'Ethylisme')}}
<a class="item-control ethylisme-test" id="ethylisme-test" title="Jet d'Ethylisme">Jet d'Ethylisme</a>
{{else}}
<label></label>