diff --git a/module/actor.js b/module/actor.js
index 9368dc2b..6079c2a5 100644
--- a/module/actor.js
+++ b/module/actor.js
@@ -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) + "
";
+ 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 += "
" + RdDResolutionTable.explain(rollVolonte) + "
";
+ 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)
{
diff --git a/module/rdd-resolution-table.js b/module/rdd-resolution-table.js
index 13ec0e76..9cc24b10 100644
--- a/module/rdd-resolution-table.js
+++ b/module/rdd-resolution-table.js
@@ -97,6 +97,7 @@ export class RdDResolutionTable {
}
}
+ /* -------------------------------------------- */
static async rollData(rollData ) {
rollData.rolled = await this.roll(rollData.caracValue, rollData.finalLevel, rollData.bonus);
return rollData;
diff --git a/module/rdd-utility.js b/module/rdd-utility.js
index 89a71d77..2273ce66 100644
--- a/module/rdd-utility.js
+++ b/module/rdd-utility.js
@@ -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 )
diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html
index 859888b1..4d3889df 100644
--- a/templates/actor-sheet.html
+++ b/templates/actor-sheet.html
@@ -144,7 +144,7 @@
{{#if compteur.isStress}}
Transformer
{{else}}
- {{#if eq compteur.label 'Ethylisme'}}
+ {{#if (eq compteur.label 'Ethylisme')}}
Jet d'Ethylisme
{{else}}