Amélioration des potions

- effet de base en cas de résistance à potion magique
- un seul message de tchat
- affichage du résultat du jet de résistance
- utilisation des l'image de la potion
- fabrication avec image de l'herbe
This commit is contained in:
Vincent Vandemeulebrouck 2021-10-09 22:04:34 +02:00
parent 9a637be4e9
commit bf2ec639c8
7 changed files with 76 additions and 101 deletions

View File

@ -3841,32 +3841,21 @@ export class RdDActor extends Actor {
potionData.supprimer = true; potionData.supprimer = true;
if (potionData.data.magique) { if (potionData.data.magique) {
// Gestion de la résistance:
potionData.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
if (potionData.rolled.isEchec) {
await this.reveActuelIncDec(-1);
potionData.guerisonData = await this.buildPotionGuerisonList(potionData.data.puissance);
potionData.guerisonMinutes = potionData.guerisonData.pointsConsommes * 5;
}
}
if (!potionData.data.magique || potionData.rolled.isSuccess) {
this.bonusRecuperationPotion = potionData.data.herbeBonus;
}
ChatMessage.create({ ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.html`, potionData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.html`, potionData)
}); });
// Gestion de la résistance:
let rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
potionData.reveResultDice = rolled.roll;
potionData.scoreReve = rolled.score;
potionData.reussiteReve = false;
if (!rolled.isSuccess) {
await this.reveActuelIncDec(-1);
potionData.guerisonData = await this.buildPotionGuerisonList(potionData.data.puissance);
potionData.guerisonMinutes = potionData.guerisonData.pointsConsommes * 5;
potionData.reussiteReve = true;
}
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-appliquer-potion-soin.html`, potionData)
});
} else {
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-appliquer-potion-soin.html`, potionData)
});
this.bonusRecuperationPotion = potionData.data.herbeBonus;
}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -3875,22 +3864,14 @@ export class RdDActor extends Actor {
potionData.supprimer = true; potionData.supprimer = true;
if (potionData.data.magique) { if (potionData.data.magique) {
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.html`, potionData)
});
// Gestion de la résistance: // Gestion de la résistance:
let rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8); potionData.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
potionData.reveResultDice = rolled.roll; if (potionData.rolled.isEchec) {
potionData.scoreReve = rolled.score;
potionData.reussiteReve = false;
if (!rolled.isSuccess) {
await this.reveActuelIncDec(-1); await this.reveActuelIncDec(-1);
let fatigueActuelle = this.getFatigueActuelle(); let fatigueActuelle = this.getFatigueActuelle();
potionData.caseFatigueReel = Math.min(fatigueActuelle, potionData.data.puissance); potionData.caseFatigueReel = Math.min(fatigueActuelle, potionData.data.puissance);
potionData.guerisonDureeUnite = (potionData.data.reposalchimique) ? "rounds" : "minutes"; potionData.guerisonDureeUnite = (potionData.data.reposalchimique) ? "rounds" : "minutes";
potionData.guerisonDureeValue = (potionData.data.reposalchimique) ? potionData.caseFatigueReel : potionData.caseFatigueReel * 5; potionData.guerisonDureeValue = (potionData.data.reposalchimique) ? potionData.caseFatigueReel : potionData.caseFatigueReel * 5;
potionData.reussiteReve = true;
potionData.aphasiePermanente = false; potionData.aphasiePermanente = false;
if (potionData.data.reposalchimique) { if (potionData.data.reposalchimique) {
let chanceAphasie = await RdDDice.rollTotal("1d100"); let chanceAphasie = await RdDDice.rollTotal("1d100");
@ -3900,17 +3881,14 @@ export class RdDActor extends Actor {
} }
await this.santeIncDec("fatigue", -potionData.caseFatigueReel); await this.santeIncDec("fatigue", -potionData.caseFatigueReel);
} }
ChatMessage.create({ }
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), if (!potionData.data.magique || potionData.rolled.isSuccess) {
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-appliquer-potion-repos.html`, potionData)
});
} else {
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-appliquer-potion-repos.html`, potionData)
});
this.bonusRepos = potionData.data.herbeBonus; this.bonusRepos = potionData.data.herbeBonus;
} }
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.html`, potionData)
});
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
dialogFabriquerPotion(herbe) { dialogFabriquerPotion(herbe) {
@ -3938,10 +3916,9 @@ export class RdDActor extends Actor {
let newQuantite = herbeData.data.quantite - herbeData.nbBrins; let newQuantite = herbeData.data.quantite - herbeData.nbBrins;
let messageData = { let messageData = {
alias: this.name, alias: this.name,
categorie: herbeData.data.categorie, nbBrinsReste: newQuantite,
herbe: herbeData.name, potion: newPotion,
nbBrinsPotion: herbeData.nbBrins, herbe: herbeData
nbBrinsReste: newQuantite
} }
this.diminuerQuantiteObjet(herbeData._id, herbeData.nbBrins); this.diminuerQuantiteObjet(herbeData._id, herbeData.nbBrins);
@ -3949,7 +3926,6 @@ export class RdDActor extends Actor {
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html`, messageData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html`, messageData)
}); });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -3964,6 +3940,13 @@ export class RdDActor extends Actor {
async consommerPotionGenerique(potionData) { async consommerPotionGenerique(potionData) {
potionData.alias = this.name; potionData.alias = this.name;
if (potionData.data.magique) {
// Gestion de la résistance:
potionData.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
if (potionData.rolled.isEchec) {
await this.reveActuelIncDec(-1);
}
}
ChatMessage.create({ ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-generique.html`, potionData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-generique.html`, potionData)

View File

@ -1,22 +0,0 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="potion de repos" />
<h4>
{{#if reussiteReve}}
{{alias}} a bu la potion et a échoué son Jet de Résistance (Rêve actuel à -8 : {{reveResultDice}}/{{scoreReve}}) : la potion fait effet !
{{else}}
{{alias}} a bu la potion et a réussi son Jet de Résistance (Rêve actuel à -8 : {{reveResultDice}}/{{scoreReve}}) : la potion ne fait pas effet !
{{/if}}
</h4>
<hr>
<div>
{{#if reussiteReve}}
{{alias}} perd 1 point de rêve (déduit automatiquement) et s'endort pour {{guerisonDureeValue}} {{guerisonDureeUnite}} et
se repose de {{caseFatigueReel}} cases de fatigue.<br>
{{#if data.reposalchimique}}
De plus, étant donné que la potion était alchimique, {{alias}} est en aphasie pendant cette durée.
{{#if aphasiePermanente}}
Et malheureusement, l'aphasie est permanente tant que {{alias}} ne réussit pas un jet de VOLONTE à 0 à Chateau Dormant (le moral compte).
{{/if}}
{{/if}}
{{/if}}
La potion a également été supprimée de l'équipement.
</div>

View File

@ -1,21 +0,0 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="potion de soin" />
<h4>
{{#if reussiteReve}}
{{alias}} a bu la potion et a échoué son Jet de Résistance (Rêve actuel à -8 : {{reveResultDice}}/{{scoreReve}}) : la potion fait effet !
{{else}}
{{alias}} a bu la potion et a réussi son Jet de Résistance (Rêve actuel à -8 : {{reveResultDice}}/{{scoreReve}}) : la potion ne fait pas effet !
{{/if}}
</h4>
<hr>
<div>
{{#if reussiteReve}}
{{alias}} perd 1 point de rêve (déduit automatiquement) et s'endort pour {{guerisonMinutes}} minutes. A son réveil, les blessures suivantes seront guéries :
<ul>
{{#each guerisonData.list as |guerison key|}}
<li>{{guerison}}</li>
{{/each}}
</ul>
<br>
{{/if}}
La potion a également été supprimée de l'équipement.
</div>

View File

@ -1,9 +1,18 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="potion de repos" /> <img class="chat-icon" src="{{img}}" alt="potion de repos" />
<h4> <h4>
{{alias}} consomme sa <b>Potion {{#if data.magique}}enchantée{{/if}}</b> de {{name}}. {{alias}} a bu une <strong>{{name}}{{#if data.magique}} enchantée{{/if}}</strong>
</h4> </h4>
<hr> <hr>
<div> <div>
Les effets de la potions sont à gérer manuellement, en fonction de sa nature{{#if data.magique}} et de son enchantement ({{data.pr}} Points de Rêve){{/if}}. {{#if data.magique}}
Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}.
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
{{/if}}
<br>Les effets de la potions sont à gérer manuellement, en fonction de sa nature
{{#if data.magique}}
{{#if rolled.isEchec}}et de son enchantement ({{data.pr}} Points de Rêve)
{{else}}son enchantement n'a pas d'effet
{{/if}}
{{/if}}.
<br>La potion a été supprimée de l'équipement. <br>La potion a été supprimée de l'équipement.
</div> </div>

View File

@ -1,13 +1,27 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="potion de repos" /> <img class="chat-icon" src="{{img}}" alt="potion de repos" />
<h4> <h4>
{{alias}} consomme sa <b>Potion de Repos {{#if data.magique}}enchantée{{/if}}</b> de {{name}} ({{data.herbe}}, {{data.herbebrins}} brins). {{alias}} a bu une <strong>{{name}}{{#if data.magique}} enchantée{{/if}}</strong>
</h4> </h4>
<hr> <hr>
<div> <div>
{{#if data.magique}} {{#if data.magique}}
Elle permet de récupérer jusqu'à {{data.puissance}} cases de repos. Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}.
{{else}} {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
Une fois consommée vers fin Lyre, elle vous octroie un bonus de {{data.herbebonus}} segments de fatigue récupérés en plus à la fin de Chateau Dormant (à gérer manuellement). {{#if rolled.isEchec}}
<br>La potion a également été supprimée de l'équipement. <br>La potion fait effet !
{{alias}} a perdu 1 point de rêve et s'endort pour {{guerisonDureeValue}} {{guerisonDureeUnite}} et
se récupère {{caseFatigueReel}} cases de fatigue.<br>
{{#if data.reposalchimique}}
De plus, la potion étant alchimique, {{alias}} est en aphasie pendant cette durée.
{{#if aphasiePermanente}}
Malheureusement, l'aphasie est permanente tant que {{alias}} ne réussit pas un jet de VOLONTE à 0 à Chateau Dormant (le moral compte).
{{/if}} {{/if}}
{{/if}}
{{else}}
<br>La potion ne fait pas effet ! Elle vous octroie tout de même un bonus de {{data.herbebonus}} segments de fatigue récupérés en plus à la fin de Chateau Dormant (à gérer manuellement).
{{/if}}
{{else}}
Une fois consommée (vers fin Lyre), elle vous octroie un bonus de {{data.herbebonus}} segments de fatigue récupérés en plus à la fin de Chateau Dormant (à gérer manuellement).
{{/if}}
<br>La potion a été supprimée de l'équipement.
</div> </div>

View File

@ -1,13 +1,25 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="potion de soin" /> <img class="chat-icon" src="{{img}}" alt="potion de soin" />
<h4> <h4>
{{alias}} consomme sa <b>Potion de soins {{#if data.magique}}enchantée{{/if}}</b> de {{name}} ({{data.herbe}}, {{data.herbebrins}} brins). {{alias}} a bu une <strong>{{name}}{{#if data.magique}} enchantée{{/if}}</strong>
</h4> </h4>
<hr> <hr>
<div> <div>
{{#if data.magique}} {{#if data.magique}}
Elle permet de guérir {{data.puissance}} Points de Guérison. Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}.
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
{{#if rolled.isEchec}}
<br>La potion fait effet!
{{alias}} a perdu 1 point de rêve et s'endort pour {{guerisonMinutes}} minutes. A son réveil, les blessures suivantes seront guéries :
<ul>
{{#each guerisonData.list as |guerison key|}}
<li>{{guerison}}</li>
{{/each}}
</ul>
{{else}}
<br>La potion ne fait pas effet ! Lors de votre prochain jet de récupération à Chateau Dormant, vous bénéficierez d'un bonus de {{data.herbebonus}} (appliqué automatiquement).
{{/if}}
{{else}} {{else}}
Lors de votre prochain jet de récupération à Chateau Dormant, vous bénéficierez d'un bonus de {{data.herbebonus}} (appliqué automatiquement). Lors de votre prochain jet de récupération à Chateau Dormant, vous bénéficierez d'un bonus de {{data.herbebonus}} (appliqué automatiquement).
<br>La potion a également été supprimée de l'équipement.
{{/if}} {{/if}}
<br>La potion a été supprimée de l'équipement.
</div> </div>

View File

@ -1,6 +1,6 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="fabrication" /> <img class="chat-icon" src="{{herbe.img}}" alt="fabrication" />
<h4> <h4>
{{alias}} a fabriqué une potion de {{categorie}} de {{herbe}}, avec {{nbBrinsPotion}} brins. {{alias}} a fabriqué une potion de {{herbe.data.categorie}} de {{herbe.name}}, avec {{herbe.nbBrins}} brins.
</h4> </h4>
<hr> <hr>
<div> <div>