diff --git a/module/actor.js b/module/actor.js index 7ce284e3..7a0a2b93 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1541,10 +1541,9 @@ export class RdDActor extends Actor { } if ( this.type == 'personnage') { // Gestion blessure graves : -1 pt endurance - let nbGraves = this.countBlessuresByName("graves"); + let nbGraves = this.countBlessuresNonSoigneeByName( 'graves'); if ( nbGraves > 0) { await this.santeIncDec("endurance", -1 ); - ChatMessage.create({ content: `${this.name} a perdu 1 point d'Endurance à cause d'au moins une Blessure Grave` }); } } } @@ -1583,6 +1582,10 @@ export class RdDActor extends Actor { return this.countBlessures(Misc.templateData(this).blessures[name].liste); } + countBlessuresNonSoigneeByName(name) { + let blessures = Misc.templateData(this).blessures[name].liste; + return blessures.filter( b => b.active && b.premiers_soins < 0).length; + } /* -------------------------------------------- */ async testSiSonne(endurance) { diff --git a/module/rdd-calendrier.js b/module/rdd-calendrier.js index 472bd38e..724d8fa2 100644 --- a/module/rdd-calendrier.js +++ b/module/rdd-calendrier.js @@ -221,16 +221,33 @@ export class RdDCalendrier extends Application { this.updateDisplay(); } + /* -------------------------------------------- */ + checkMaladie( periode) { + for (let actor of game.actors) { + if (actor.type == 'personnage') { + let maladies = actor.filterItems( item => (item.type == 'maladie' || item.type == 'poison') && item.data.periodicite.toLowerCase().includes(periode) ); + for (let maladie of maladies) { + ChatMessage.create({ content: `${actor.name} souffre de ${maladie.name} (${maladie.type}): vérifiez que les effets ne se sont pas aggravés !` }); + } + } + } + } + /* -------------------------------------------- */ async incrementTime(minutes = 0) { this.calendrier.minutesRelative += minutes; + this.checkMaladie("round"); + this.checkMaladie("minute"); if (this.calendrier.minutesRelative >= RDD_MINUTES_PAR_HEURES) { this.calendrier.minutesRelative -= RDD_MINUTES_PAR_HEURES; this.calendrier.heureRdD += 1; - } + this.checkMaladie("heure"); + } if (this.calendrier.heureRdD >= RDD_HEURES_PAR_JOUR) { this.calendrier.heureRdD -= RDD_HEURES_PAR_JOUR; await this.incrementerJour(); + this.checkMaladie("heure"); + this.checkMaladie("jour"); } game.settings.set("foundryvtt-reve-de-dragon", "calendrier", duplicate(this.calendrier)); // Notification aux joueurs diff --git a/module/rdd-combat.js b/module/rdd-combat.js index 24b55914..fb02808c 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -1328,9 +1328,9 @@ export class RdDCombat { isGrave: false, isCritique: false } - if (actor.countBlessuresByName("critiques") > 0) { // Pour éviter le cumul grave + critique + if (actor.countBlessuresNonSoigneeByName("critiques") > 0) { // Pour éviter le cumul grave + critique data.isCritique = true; - } else if (actor.countBlessuresByName("graves") > 0) { + } else if (actor.countBlessuresNonSoigneeByName("graves") > 0) { data.isGrave = true; } diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 25e6798e..89ec1f16 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -378,6 +378,9 @@ export class RdDUtility { formData.gemmes = this.checkNull(formData.itemsByType['gemme']); formData.recettescuisine = this.checkNull(formData.itemsByType['recettecuisine']); formData.recettesAlchimiques = this.checkNull(formData.itemsByType['recettealchimique']); + formData.maladies = this.checkNull(formData.itemsByType['maladie']); + formData.poisons = this.checkNull(formData.itemsByType['poison']); + formData.maladiesPoisons = formData.maladies.concat( formData.poisons); formData.objets = formData.conteneurs.concat(formData.materiel) .concat(formData.armes) .concat(formData.armures) diff --git a/system.json b/system.json index c3cf7e70..6b863738 100644 --- a/system.json +++ b/system.json @@ -2,11 +2,11 @@ "name": "foundryvtt-reve-de-dragon", "title": "Rêve de Dragon", "description": "Rêve de Dragon RPG for FoundryVTT", - "version": "1.5.14", + "version": "1.5.16", "manifestPlusVersion": "1.0.0", "minimumCoreVersion": "0.8.0", "compatibleCoreVersion": "0.8.9", - "templateVersion": 121, + "templateVersion": 123, "author": "LeRatierBretonnien", "authors": [ { diff --git a/template.json b/template.json index 45dfc35e..b7f30eea 100644 --- a/template.json +++ b/template.json @@ -169,18 +169,18 @@ }, "blessures": { "legeres": { - "liste": [ { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" }, - { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" }, - { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" }, - { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" }, - { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" } ] + "liste": [ { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" }, + { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" }, + { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" }, + { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" }, + { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" } ] }, "graves": { - "liste": [ { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" }, - { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" } ] + "liste": [ { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" }, + { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" } ] }, "critiques": { - "liste": [ { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" } ] + "liste": [ { "active": false, "premiers_soins": -1, "soins_complets": -1, "jours": 0, "localisation": "" } ] } }, "attributs": { @@ -878,16 +878,20 @@ "descriptionmj": "" }, "maladie": { + "identifie": false, "malignite": 0, "periodicite": "", + "remedesconnus": false, "remedes": "", "dommages":"", "description": "", "descriptionmj": "" }, "poison": { + "identifie": false, "malignite": 0, "periodicite": "", + "remedesconnus": false, "remedes": "", "dommages":"", "description": "", diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 42ec06ab..c579b654 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -293,6 +293,41 @@
{{!-- Liste de blessures --}} {{> "systems/foundryvtt-reve-de-dragon/templates/actor-liste-blessures-partial.html" this}} + + {{!-- Maladies & Poison --}} +

Maladies & Poisons:

+ + {{!-- Connaissances Tab --}} diff --git a/templates/chat-actor-turn-summary.html b/templates/chat-actor-turn-summary.html index 15058a36..dc91ba2e 100644 --- a/templates/chat-actor-turn-summary.html +++ b/templates/chat-actor-turn-summary.html @@ -2,7 +2,7 @@
{{blessuresStatus}}
Son état général est de : {{etatGeneral}} {{#if isSonne}} et est sonné{{/if}}
{{#if isGrave}} -
{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes, et de retirer 1 point d'endurance par blessure grave.
+
{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes. Un point d'Endurance a été retiré automatiquement.
{{/if}} {{#if isCritique}}
{{alias}} souffre d'une Blessure Critique : faites un Jet de Vie.