#63 Jet d'éthylisme
This commit is contained in:
parent
bf317e54d7
commit
1afce56348
@ -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)
|
||||
{
|
||||
|
@ -97,6 +97,7 @@ export class RdDResolutionTable {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async rollData(rollData ) {
|
||||
rollData.rolled = await this.roll(rollData.caracValue, rollData.finalLevel, rollData.bonus);
|
||||
return rollData;
|
||||
|
@ -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 )
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user