#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); state = state - (data.sante.vie.max - data.sante.vie.value);
if (data.sante.fatigue) // Creatures n'ont pas de fatigue if (data.sante.fatigue) // Creatures n'ont pas de fatigue
state = state + RdDUtility.currentFatigueMalus(data.sante.fatigue.value, data.sante.endurance.max); 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; state = state;
surenc = -this.detectSurEncombrement(); surenc = -this.detectSurEncombrement();
data.compteurs.etat.value = state; data.compteurs.etat.value = state;
@ -1197,7 +1199,7 @@ export class RdDActor extends Actor {
async ethylismeTest() { async ethylismeTest() {
let rollData = { let rollData = {
vieValue: this.data.data.sante.vie.value, 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, niveauEthylisme: this.data.data.compteurs.ethylisme.value,
nbDoses: this.data.data.compteurs.ethylisme.nb_doses || 0, nbDoses: this.data.data.compteurs.ethylisme.nb_doses || 0,
finalLevel: 0, finalLevel: 0,
@ -1212,22 +1214,34 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async performEthylisme( rollData ) { async performEthylisme( rollData ) {
let ethylisme = duplicate(this.data.data.compteurs.ethylisme); let ethylisme = duplicate(this.data.data.compteurs.ethylisme);
let roll = await RdDResolutionTable.roll( rollData.vieValue, rollData.finalLevel);
let msgText; // Je d'ethylisme
if (roll.isSuccess ) { let rollEthylisme = await RdDResolutionTable.roll( rollData.vieValue, rollData.finalLevel);
ethylisme.value = ethylisme.value - 1; let msgText = RdDResolutionTable.explain(rollEthylisme) + "<br>";
msgText = "Vous avez échouez à votre jet d'éthylisme, votre niveau d'éthylisme est de " + ethylisme.value if (rollEthylisme.isSuccess ) {
+ "(" + RdDUtility.getNomEthylisme(ethylisme.value) + ")";
} else {
ethylisme.nb_doses = ethylisme.nb_doses + 1; 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 = { const message = {
content: msgText, content: msgText,
whisper: ChatMessage.getWhisperRecipients(game.user.name) 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); new RdDRollDialog("carac", html, rollData, this ).render(true);
} }
/* -------------------------------------------- */
async appelChance( ) async appelChance( )
{ {
let rollData = { let rollData = {
@ -1360,6 +1375,7 @@ export class RdDActor extends Actor {
dialog.render(true); dialog.render(true);
} }
/* -------------------------------------------- */
_appelChanceResultat(rollData) { _appelChanceResultat(rollData) {
const message = { const message = {
user: game.user._id, user: game.user._id,
@ -1373,17 +1389,20 @@ export class RdDActor extends Actor {
ChatMessage.create(message); ChatMessage.create(message);
} }
/* -------------------------------------------- */
async chanceActuelleIncDec(value) { async chanceActuelleIncDec(value) {
let chance = duplicate(this.data.data.compteurs.chance); let chance = duplicate(this.data.data.compteurs.chance);
chance.value = Math.max(chance.value + value, 0); chance.value = Math.max(chance.value + value, 0);
await this.update( {"data.compteurs.chance": chance } ); await this.update( {"data.compteurs.chance": chance } );
} }
/* -------------------------------------------- */
ajustementAstrologique() { ajustementAstrologique() {
//TODO: selon heure et heure de naissance... //TODO: selon heure et heure de naissance...
return 0; return 0;
} }
/* -------------------------------------------- */
getCaracByName(caracName) { getCaracByName(caracName) {
switch (caracName) switch (caracName)
{ {

View File

@ -97,6 +97,7 @@ export class RdDResolutionTable {
} }
} }
/* -------------------------------------------- */
static async rollData(rollData ) { static async rollData(rollData ) {
rollData.rolled = await this.roll(rollData.caracValue, rollData.finalLevel, rollData.bonus); rollData.rolled = await this.roll(rollData.caracValue, rollData.finalLevel, rollData.bonus);
return rollData; 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 }, "malaise": { "4":2, "6":3, "8":4, "10":6 },
"difficile": { "4":3, "6":4, "8":6 }, "difficile": { "4":3, "6":4, "8":6 },
"tresdifficile": { "4":4, "6":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}, const table2func = { "queues": {descr: "queues : Tire une queue de Dragon", func: RdDRollTables.getQueue},
"ombre": { descr: "ombre: Tire une Ombre de Dragon", func: RdDRollTables.getOmbre }, "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}, "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 } { type: "critique", facteur : 6 }
] ]
/* -------------------------------------------- */
const nomEthylisme = [ "Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "Complètement fait", "Ivre mort"];
/* -------------------------------------------- */ /* -------------------------------------------- */
const definitionsEncaissement = { const definitionsEncaissement = {
"mortel": [ "mortel": [
@ -191,8 +196,9 @@ export class RdDUtility {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getNomEthylisme( niveauEthylisme ) { static getNomEthylisme( niveauEthylisme ) {
let index = Math.abs(niveauEthylisme);
return nomEthylisme[index];
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

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