#171 - Gestion des potions de repos
This commit is contained in:
parent
38b58cd4b0
commit
31d2c01ebb
@ -311,6 +311,30 @@ export class RdDActor extends Actor {
|
||||
return Misc.templateData(this).reve.tmrpos.coord;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async verifierPotionsEnchantees() {
|
||||
let potionsEnchantees = this.filterItemsData( it => it.type == 'potion' && it.data.categorie.toLowerCase().includes('enchante'));
|
||||
for ( let potion of potionsEnchantees) {
|
||||
if ( !potion.prpermanent) {
|
||||
console.log(potion);
|
||||
let newPr = (potion.data.pr > 0) ? potion.data.pr - 1 : 0;
|
||||
let update = { _id: potion._id, 'data.pr': newPr};
|
||||
const updated = await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
|
||||
let messageData = {
|
||||
pr : newPr,
|
||||
alias : this.name,
|
||||
potionName : potion.name,
|
||||
potionImg : potion.img
|
||||
}
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, messageData)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async deleteSortReserve(sortReserve) {
|
||||
let reserve = duplicate(Misc.templateData(this).reve.reserve);
|
||||
@ -358,6 +382,7 @@ export class RdDActor extends Actor {
|
||||
await this.retourSeuilDeReve(message);
|
||||
this.bonusRecuperationPotion= 0; // Reset potion
|
||||
await this.retourSust(message);
|
||||
await this.verifierPotionsEnchantees();
|
||||
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`;
|
||||
ChatMessage.create(message);
|
||||
}
|
||||
@ -3216,22 +3241,17 @@ export class RdDActor extends Actor {
|
||||
});
|
||||
// Gestion de la résistance:
|
||||
let rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8 );
|
||||
potionData.reussiteReve = false;
|
||||
if (!rolled.isSuccess) {
|
||||
await this.reveActuelIncDec(-1);
|
||||
potionData.guerisonData = await this.buildPotionGuerisonList(potionData.pointsGuerison);
|
||||
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 {
|
||||
potionData.reussiteReve = false;
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-appliquer-potion-soin.html`, potionData )
|
||||
});
|
||||
}
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-appliquer-potion-soin.html`, potionData )
|
||||
});
|
||||
} else {
|
||||
potionData.enchanteTexte = "";
|
||||
potionData.isEnchante = false;
|
||||
@ -3243,17 +3263,64 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async consommerPotionRepos(potionData) {
|
||||
potionData.alias = this.name;
|
||||
|
||||
if (potionData.data.categorie.includes('Enchante')) {
|
||||
potionData.casesRepos = RdDHerbes.calculePointsRepos( potionData.data);
|
||||
potionData.enchanteTexte = "enchantée";
|
||||
potionData.isEnchante = true;
|
||||
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:
|
||||
let rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8 );
|
||||
potionData.reussiteReve = false;
|
||||
if (!rolled.isSuccess) {
|
||||
await this.reveActuelIncDec(-1);
|
||||
let fatigueActuelle = this.getFatigueActuelle();
|
||||
potionData.caseFatigueReel = (fatigueActuelle >= potionData.casesRepos) ? potionData.casesRepos : fatigueActuelle;
|
||||
potionData.guerisonDureeUnite = (potionData.data.reposalchimique) ? "rounds" : "minutes";
|
||||
potionData.guerisonDureeValue = (potionData.data.reposalchimique) ? potionData.caseFatigueReel : potionData.caseFatigueReel*5;
|
||||
potionData.reussiteReve = true;
|
||||
potionData.aphasiePermanente = false;
|
||||
if ( potionData.data.reposalchimique ) {
|
||||
let chanceAphasie = new Roll("1d100").evaluate({async : false} ).total;
|
||||
if ( chanceAphasie <= potionData.data.pr ) {
|
||||
potionData.aphasiePermanente = true;
|
||||
}
|
||||
}
|
||||
await this.santeIncDec("fatigue", -potionData.caseFatigueReel);
|
||||
}
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-appliquer-potion-repos.html`, potionData )
|
||||
});
|
||||
} else {
|
||||
potionData.enchanteTexte = "";
|
||||
potionData.isEnchante = false;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async consommerPotion( potion ) {
|
||||
const potionData = Misc.data(potion);
|
||||
|
||||
if ( potionData.data.categorie.includes('Soin')) {
|
||||
this.consommerPotionSoin( potionData);
|
||||
} else if( potion.data.categorie.includes('Repos')) {
|
||||
//TODO
|
||||
} else if( potionData.data.categorie.includes('Repos')) {
|
||||
this.consommerPotionRepos(potionData);
|
||||
} else {
|
||||
//TODO
|
||||
}
|
||||
await this.deleteEmbeddedDocuments('Item', [ potion._id ] );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -60,6 +60,11 @@ export class RdDHerbes extends Item {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static calculePointsRepos( data ) {
|
||||
return data.herbebonus * data.pr;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static calculePointsGuerison( data ){
|
||||
return data.herbebonus * data.pr;
|
||||
|
@ -187,7 +187,8 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-resultat-alchimie.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-summary.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html'
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html'
|
||||
];
|
||||
|
||||
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
||||
|
22
templates/chat-appliquer-potion-repos.html
Normal file
22
templates/chat-appliquer-potion-repos.html
Normal file
@ -0,0 +1,22 @@
|
||||
<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) : la potion fait effet !
|
||||
{{else}}
|
||||
{{alias}} a bu la potion et a réussi son Jet de Résistance (Rêve actuel à -8) : 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>
|
@ -1,23 +1,21 @@
|
||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="potion de soin" />
|
||||
<h4>
|
||||
{{#if enchante}}
|
||||
|
||||
{{else}}
|
||||
{{#if reussiteReve}}
|
||||
{{alias}} a bu la potion et a échoué son Jet de Résistance (Rêve actuel à -8) : la potion fait effet !
|
||||
{{else}}
|
||||
{{alias}} a bu la potion et a réussi son Jet de Résistance (Rêve actuel à -8) : la potion ne fait pas effet !
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</h4>
|
||||
<hr>
|
||||
{{#if reussiteReve}}
|
||||
<div>
|
||||
{{alias}} perd 1 point de rêve (déduit autmatiquement) et s'endort pour {{guerisonMinutes}} minutes. A son réveil, les blessures suivantes seront guéries :
|
||||
{{#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>
|
||||
</div>
|
||||
<br>
|
||||
{{/if}}
|
||||
La potion a également été supprimée de l'équipement.
|
||||
</div>
|
||||
|
13
templates/chat-consommer-potion-repos.html
Normal file
13
templates/chat-consommer-potion-repos.html
Normal file
@ -0,0 +1,13 @@
|
||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_botanique.png" alt="potion de repos" />
|
||||
<h4>
|
||||
{{alias}} consomme sa Potion de Repos {{enchanteTexte}} de {{name}} ({{data.herbe}}, {{data.herbebrins}} brins).
|
||||
</h4>
|
||||
<hr>
|
||||
<div>
|
||||
{{#if casesRepos}}
|
||||
Elle permet de récupérer jusqu'à {{casesRepos}} cases de repos.
|
||||
{{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).
|
||||
<br>La potion a également été supprimée de l'équipement.
|
||||
{{/if}}
|
||||
</div>
|
@ -8,5 +8,6 @@
|
||||
Elle permet de guérir {{pointsGuerison}} Points de Guérison.
|
||||
{{else}}
|
||||
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}}
|
||||
</div>
|
||||
|
9
templates/chat-potionenchantee-chateaudormant.html
Normal file
9
templates/chat-potionenchantee-chateaudormant.html
Normal file
@ -0,0 +1,9 @@
|
||||
<img class="chat-icon" src="{{potionImg}}" alt="{{potionName}}" />
|
||||
<h4>
|
||||
La potion enchantée {{potionName}} de {{alias}} a perdu un Point de Rêve (nouveau total : {{pr}}).</h4>
|
||||
<hr>
|
||||
<div>
|
||||
{{#if (eq pr 0)}}
|
||||
Sa potion étant désormais à 0 Point de Rêve, elle est inutilisable et doit être jetée.
|
||||
{{/if}}
|
||||
</div>
|
Loading…
Reference in New Issue
Block a user