Stress amélioré

Commande: /stress
Ouvre une fenêtre pour gérer finement le stress (ou l'expérience)

Commande: /stress <v> <motif> <nom>
Stress donné à un acteur/joueur avec un nom proche

Notifications des joueurs qui reçoivent du stress
This commit is contained in:
Vincent Vandemeulebrouck
2021-10-08 23:28:55 +02:00
parent 41c6270bf1
commit 1efdca028c
6 changed files with 171 additions and 36 deletions

View File

@ -1002,17 +1002,34 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async updateCompteurValue(fieldName, fieldValue, raison = 'Inconnue') {
await this.update({ [`data.compteurs.${fieldName}.value`]: fieldValue });
if (fieldName == 'stress') {
await this.updateExperienceLog('stress', fieldValue, raison);
}
await this.addStressExperienceLog(fieldName, fieldValue, 'forcé: '+raison);
}
/* -------------------------------------------- */
async addCompteurValue(fieldName, fieldValue, raison = 'Inconnue') {
let oldValue = (Misc.templateData(this)).compteurs[fieldName].value;
await this.update({ [`data.compteurs.${fieldName}.value`]: Number(oldValue) + Number(fieldValue) });
if (fieldName == 'stress') {
await this.updateExperienceLog('stress', fieldValue, raison);
await this.addStressExperienceLog(fieldName, fieldValue, raison);
}
async addStressExperienceLog(fieldName, fieldValue, raison) {
switch (fieldName) {
case 'stress': case 'experience':
await this.updateExperienceLog(fieldName, fieldValue, raison);
}
}
/* -------------------------------------------- */
distribuerStress(compteur, stress, motif) {
if (game.user.isGM && this.hasPlayerOwner && this.isPersonnage()) {
switch (compteur) {
case 'stress': case 'experience':
const message = `${this.name} a reçu ${stress} points ${compteur == 'stress' ? "de stress" : "d'expérience"} (raison : ${motif})`;
this.addCompteurValue(compteur, stress, motif);
ui.notifications.info(message);
game.users.players.filter(player => player.active && player.character?.id == this.id)
.forEach(player => ChatUtility.notifyUser(player.id, 'info', message));
}
}
}