diff --git a/assets/actions/malade.svg b/assets/actions/malade.svg new file mode 100644 index 00000000..eff65da5 --- /dev/null +++ b/assets/actions/malade.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/changelog.md b/changelog.md index 335c766b..bb65778f 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ## 13.0.20 - L'immobilisme d'Illysis +- Ajout d'un statut malade/empoisonné - Fenêtre de jet v2 - correction du compteur empoignade - amélioration des messages liés à l'empoignade diff --git a/lang/fr.json b/lang/fr.json index e44d03db..8d468b73 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -63,6 +63,7 @@ "StatusUnarmed": "Désarmé", "StatusGrappling": "Empoignade", "StatusGrappled": "Empoigné", + "StatusMalade": "Malade", "StatusRestrained": "Immobilisé", "StatusComma": "Comma", "StatusDead": "Mort", diff --git a/module/actor.js b/module/actor.js index 1b3695c6..43633192 100644 --- a/module/actor.js +++ b/module/actor.js @@ -130,11 +130,6 @@ export class RdDActor extends RdDBaseActorSang { return etatGeneral } - /* -------------------------------------------- */ - getActivePoisons() { - return foundry.utils.duplicate(this.items.filter(item => item.type == 'poison' && item.system.active)) - } - /* -------------------------------------------- */ getMalusArmure() { return this.itemTypes[ITEM_TYPES.armure].filter(it => it.system.equipe) @@ -332,10 +327,6 @@ export class RdDActor extends RdDBaseActorSang { await this._recupererVie(message, isMaladeEmpoisonne); } - getMaladiesPoisons() { - return this.items.filter(item => item.type == 'maladie' || (item.type == 'poison' && item.system.active)); - } - _messageRecuperationMaladiePoisons(maladiesPoisons, message) { if (maladiesPoisons.length > 0) { const identifies = maladiesPoisons.filter(it => it.system.identifie); diff --git a/module/actor/base-actor-sang.js b/module/actor/base-actor-sang.js index cff30d81..74bcc4f5 100644 --- a/module/actor/base-actor-sang.js +++ b/module/actor/base-actor-sang.js @@ -183,28 +183,46 @@ export class RdDBaseActorSang extends RdDBaseActorReve { } async onCreateItem(item, options, id) { - switch (item.type) { - case ITEM_TYPES.blessure: - await this.changeBleedingState() - break - } + await this.changeItemEffects(item) await super.onCreateItem(item, options, id) } async onUpdateItem(item, options, id) { - switch (item.type) { - case ITEM_TYPES.blessure: - await this.changeBleedingState() - break - } + await this.changeItemEffects(item); await super.onUpdateItem(item, options, id) } - async changeBleedingState() { + async onDeleteItem(item, options, id) { + await this.changeItemEffects(item); + await super.onDeleteItem(item, options, id) + } + + async changeItemEffects(item) { + switch (item.type) { + case ITEM_TYPES.blessure: + await this.changeStateBleeding(); + break; + case ITEM_TYPES.maladie: + case ITEM_TYPES.poison: + await this.changeStateMalade(); + break; + } + } + + async changeStateBleeding() { const bleeding = this.itemTypes[ITEM_TYPES.blessure].find(it => it.isBleeding()) await this.setEffect(STATUSES.StatusBleeding, bleeding ? true : false) } + async changeStateMalade() { + const maladiePoisons = this.getMaladiesPoisons() + await this.setEffect(STATUSES.StatusMalade, maladiePoisons.length > 0) + } + + getMaladiesPoisons() { + return this.items.filter(it => [ITEM_TYPES.maladie, ITEM_TYPES.poison].includes(it.type)) + } + /* -------------------------------------------- */ async ajouterBlessure(encaissement, attackerToken = undefined) { if (encaissement.gravite < 0) return; diff --git a/module/constants.js b/module/constants.js index bffd5cb6..e90ea3f1 100644 --- a/module/constants.js +++ b/module/constants.js @@ -65,6 +65,7 @@ export const RDD_CONFIG = { surenc: 'systems/foundryvtt-reve-de-dragon/assets/actions/surenc.svg', magique: 'systems/foundryvtt-reve-de-dragon/assets/actions/magique.svg', armebrisee: 'systems/foundryvtt-reve-de-dragon/assets/actions/arme-brisee.svg', + malade: 'systems/foundryvtt-reve-de-dragon/assets/actions/malade.svg', }, encaissement: { mortel: 'mortel', diff --git a/module/settings/status-effects.js b/module/settings/status-effects.js index 27017fd3..71f84c58 100644 --- a/module/settings/status-effects.js +++ b/module/settings/status-effects.js @@ -16,6 +16,7 @@ export const STATUSES = { StatusDemiReve: 'demi-reve', StatusSurEnc: 'sur-encombrement', StatusForceWeak: 'force insuffisante', + StatusMalade: 'malade', } export const forceWeakStatusEffect = { rdd: true, id: STATUSES.StatusForceWeak, name: 'EFFECT.StatusForceWeak', img: RDD_CONFIG.icons.forceWeak }; @@ -35,11 +36,12 @@ const rddStatusEffects = [ { rdd: true, id: STATUSES.StatusComma, name: 'EFFECT.StatusComma', img: 'icons/svg/skull.svg' }, { rdd: true, id: STATUSES.StatusBleeding, name: 'EFFECT.StatusBleeding', img: 'icons/svg/blood.svg' }, + { rdd: true, id: STATUSES.StatusMalade, name: 'EFFECT.StatusMalade', img: RDD_CONFIG.icons.malade }, { rdd: true, id: STATUSES.StatusDead, name: 'EFFECT.StatusDead', img: 'icons/svg/skull.svg' }, + surEncEffect, demiReveStatusEffect, forceWeakStatusEffect, - surEncEffect, -]; +] const statusDemiSurprise = new Set([STATUSES.StatusStunned, STATUSES.StatusProne, STATUSES.StatusRestrained, STATUSES.StatusForceWeak]) const statusSurpriseTotale = new Set([STATUSES.StatusUnconscious, STATUSES.StatusBlind, STATUSES.StatusComma]) diff --git a/template.json b/template.json index c2f5a524..7fbff462 100644 --- a/template.json +++ b/template.json @@ -704,8 +704,7 @@ }, "remedesconnus": false, "remedes": "", - "dommages": "", - "active": false + "dommages": "" }, "arme": { "templates": ["description", "equipement", "inventaire"], diff --git a/templates/item/poison-sheet.hbs b/templates/item/poison-sheet.hbs index a3aecd92..05e6e889 100644 --- a/templates/item/poison-sheet.hbs +++ b/templates/item/poison-sheet.hbs @@ -12,14 +12,10 @@ {{!-- Sheet Body --}}
-
- - -
{{#if (or options.isGM system.identifie)}}
- +
@@ -47,7 +43,7 @@
{{/if}} {{/if}} - {{#if (and options.isGM options.isOwned system.active)}} + {{#if (and options.isGM options.isOwned)}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Contracté" labelfin="Prochain jet"}} {{/if}}