Gestion des signes draconiques #455

Closed
vincent.vandeme wants to merge 233 commits from v1.4-signes-draconiques into master
2 changed files with 42 additions and 43 deletions
Showing only changes of commit d774e72565 - Show all commits

View File

@ -83,8 +83,8 @@ export class RdDActor extends Actor {
/** /**
* Override the create() function to provide additional RdD functionality. * Override the create() function to provide additional RdD functionality.
* *
* This overrided create() function adds initial items * This overrided create() function adds initial items
* Namely: Basic skills, money, * Namely: Basic skills, money,
* *
* @param {Object} actorData Barebones actor data which this function adds onto. * @param {Object} actorData Barebones actor data which this function adds onto.
* @param {Object} options (Unused) Additional options which customize the creation workflow. * @param {Object} options (Unused) Additional options which customize the creation workflow.
@ -909,7 +909,7 @@ export class RdDActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
/** Supprime un item d'un conteneur, sur la base /** Supprime un item d'un conteneur, sur la base
* de leurs ID */ * de leurs ID */
async enleverDeConteneur(itemId, conteneur) { async enleverDeConteneur(itemId, conteneur) {
if (conteneur?.isConteneur()) { // Si présent if (conteneur?.isConteneur()) { // Si présent
@ -926,7 +926,7 @@ export class RdDActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
/** Ajoute un item dans un conteneur, sur la base /** Ajoute un item dans un conteneur, sur la base
* de leurs ID */ * de leurs ID */
async ajouterDansConteneur(itemId, conteneur) { async ajouterDansConteneur(itemId, conteneur) {
if (conteneur?.isConteneur()) { if (conteneur?.isConteneur()) {
@ -1639,40 +1639,37 @@ export class RdDActor extends Actor {
const actorData = Misc.data(this); const actorData = Misc.data(this);
let ethylisme = duplicate(actorData.data.compteurs.ethylisme); let ethylisme = duplicate(actorData.data.compteurs.ethylisme);
// Je d'ethylisme // Jet d'ethylisme
let rollEthylisme = await RdDResolutionTable.roll(rollData.vieValue, rollData.finalLevel); let rollEthylisme = await RdDResolutionTable.roll(rollData.vieValue, rollData.finalLevel);
let msgText = RdDResolutionTable.explain(rollEthylisme) + "<br>"; let rollDataView = {
forceAlcool: rollData.forceAlcool,
rollEthylismeIsSuccess: rollEthylisme.isSuccess,
rollEthylismeText: RdDResolutionTable.explain(rollEthylisme),
};
if (rollEthylisme.isSuccess) { if (rollEthylisme.isSuccess) {
ethylisme.nb_doses++; ethylisme.nb_doses++;
msgText += `Vous avez réussi votre jet d'éthylisme, vous avez consommé ${ethylisme.nb_doses} doses sans effet.`; rollDataView.doses = ethylisme.nb_doses;
} else { } else {
ethylisme.value = Math.max(ethylisme.value - 1, -7); ethylisme.value = Math.max(ethylisme.value - 1, -7);
ethylisme.nb_doses = 0; ethylisme.nb_doses = 0;
rollDataView.doses = ethylisme.nb_doses;
rollDataView.ajustementEthylique = ethylisme.value;
rollDataView.nomEthylisme = RdDUtility.getNomEthylisme(ethylisme.value);
let enduranceLost = new Roll("1d6").roll().total; let enduranceLost = new Roll("1d6").roll().total;
await this.santeIncDec("endurance", -enduranceLost); rollDataView.enduranceLost = enduranceLost;
const ajustementEthylique = ethylisme.value; await this.santeIncDec("endurance", -enduranceLost, false);
// Qui a bu boira (p 164) // Qui a bu boira (p 164)
let rollVolonte = await RdDResolutionTable.roll(actorData.data.carac.volonte.value, Math.min(ajustementEthylique, 0) + actorData.data.compteurs.moral.value); let rollVolonte = await RdDResolutionTable.roll(actorData.data.carac.volonte.value, Math.min(ethylisme.value, 0) + actorData.data.compteurs.moral.value);
const quiABuBoira = (rollVolonte.isSuccess rollDataView.rollVolonteIsSuccess = rollVolonte.isSuccess;
? "vous êtes libre de continuer à boire ou pas." rollDataView.rollVolonteText = RdDResolutionTable.explain(rollVolonte);
: "vous avez une envie irrépréssible de reprendre un verre.");
msgText += `Vous avez échoué à votre jet d'éthylisme, vous êtes
maintenant ${RdDUtility.getNomEthylisme(ajustementEthylique)} (${ajustementEthylique}).
<br> ${RdDResolutionTable.explain(rollVolonte)}
<br>Qui a bu boira : ${quiABuBoira}`;
} }
RdDResolutionTable.displayRollData(rollDataView, this, 'chat-resultat-ethylisme.html');
ChatMessage.create({
content: msgText,
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name)
});
if (rollEthylisme.isEchec) { if (rollEthylisme.isEchec) {
await this._jetDeMoralEthylique(ethylisme); await this._jetDeMoralEthylique(ethylisme);
} }
await this.update({ 'data.compteurs.ethylisme': ethylisme }); await this.update({'data.compteurs.ethylisme': ethylisme});
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -1685,7 +1682,7 @@ export class RdDActor extends Actor {
if (ethylisme.value == -1 && adjust <= 0) { if (ethylisme.value == -1 && adjust <= 0) {
// alcool triste // alcool triste
ChatMessage.create({ ChatMessage.create({
content: "Décidément, vous avez l'alcool triste, vous perdez finalement un point de moral!", content: "Décidément, vous avez l'alcool triste, vous perdez finalement un point de moral !",
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name) whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name)
}); });
await this.moralIncDec(-1); await this.moralIncDec(-1);
@ -2659,7 +2656,7 @@ export class RdDActor extends Actor {
}); });
} }
} }
return { result: true, xpCarac: xpCarac, xpCompetence: xpComp }; //XP return { result: true, xpCarac: xpCarac, xpCompetence: xpComp }; //XP
} }
return { result: false, xpCarac: 0, xpCompetence: 0 }; // Pas d'XP return { result: false, xpCarac: 0, xpCompetence: 0 }; // Pas d'XP
} }

View File

@ -1,24 +1,26 @@
<h4> <h4>
{{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}} {{alias}} bois un verre d'alcool de force {{forceAlcool}}
le {{#if selectedSort.data.isrituel}}rituel{{else}}sort{{/if}}
{{selectedSort.name}}
</h4> </h4>
<div>Pour {{selectedSort.data.ptreve_reel}} point{{~#if (gt selectedSort.data.ptreve_reel 1)}}s{{/if}} de rêve en {{coordLabel}} ({{coord}}).
{{#if show.reveInsuffisant}}
<span>Pas assez de rêve!</span>
{{/if}}
</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr> <hr>
<div> <div>
<span> <span>
{{#if rolled.isETotal}}Echec TOTAL {{{rollEthylismeText}}}
{{else if rolled.isEchec}}Echec <br/>
{{else}}Réussite{{/if}} {{#if rollEthylismeIsSuccess}}
du {{#if selectedSort.data.isrituel}}rituel{{else}}sort{{/if}}, Vous avez réussi votre jet d'éthylisme, vous avez consommé {{doses}} doses sans effet.
{{#if (eq depenseReve 0)}}pas de dépense de rêve {{else}}
{{else if (eq depenseReve 1)}}1 point de rêve a été dépensé Vous avez échoué à votre jet d'éthylisme, vous êtes maintenant {{nomEthylisme}} ({{ajustementEthylique}}).
{{else}}{{depenseReve}} points de rêve ont été dépensés <br/>
{{~/if}}. Vous perdez {{enduranceLost}} points d'endurance.
<br/>
Qui a bu boira :
{{{rollVolonteText}}}
<br/>
{{#if rollVolonteIsSuccess}}
Vous êtes libre de continuer à boire ou pas.
{{else}}
Vous avez une envie irrépréssible de reprendre un verre
{{/if}}
{{/if}}
</span> </span>
</div> </div>