Potion de soin sans effet #63

Closed
opened 2022-02-13 11:42:53 +01:00 by pallando · 9 comments
pallando commented 2022-02-13 11:42:53 +01:00 (Migrated from gitlab.com)

Utiliser le bouton "exécuter l'effet" avec une potion de soin sur les dernières versions de Foundry+WFRP donne l'erreur suivante :
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'value')
Le debugger semble indiquer, sur le code correspondant, que la variable "item" ne contient pas de champ "quantity", mais que celui-ci se trouve encapsulé dans un champ "data".

Ce problème semble présent avec les autres consommables (Faxtoryll, etc...).

Versions utilisées :

  • foundry: 9.249
  • wfrp4e: 5.1.0
  • wfrp4e-core: 2.4.0
  • wfrp4e-rnhd: 2.4.0
  • wfrp4e-starter-set: 2.3.0
  • wh4-fr-fr: 5.0.25
Utiliser le bouton "exécuter l'effet" avec une potion de soin sur les dernières versions de Foundry+WFRP donne l'erreur suivante : `Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'value')` Le debugger semble indiquer, sur le code [correspondant](https://gitlab.com/LeRatierBretonnien/foundryvtt-wh4-lang-fr-fr/-/blob/v4/compendium/wfrp4e-core.trappings.json#L654), que la variable "item" ne contient pas de champ "quantity", mais que celui-ci se trouve encapsulé dans un champ "data". Ce problème semble présent avec les autres consommables (Faxtoryll, etc...). Versions utilisées : - foundry: 9.249 - wfrp4e: 5.1.0 - wfrp4e-core: 2.4.0 - wfrp4e-rnhd: 2.4.0 - wfrp4e-starter-set: 2.3.0 - wh4-fr-fr: 5.0.25
pallando commented 2022-02-13 11:43:46 +01:00 (Migrated from gitlab.com)

changed the description

changed the description
LeRatierBretonnien commented 2022-02-13 19:35:45 +01:00 (Migrated from gitlab.com)

Un rapport de bug comme je les aime, merci !
Corrigé normalement

Un rapport de bug comme je les aime, merci ! Corrigé normalement
pallando commented 2022-02-13 21:55:46 +01:00 (Migrated from gitlab.com)

Merci !
Malheureusement, il semblerait que je rencontre un autre problème plus loin dans le code :
TypeError: this.actor.updateEmbeddedEntity is not a function

Je suppose que cela est une conséquence du retrait de la méthode updateEmbeddedEntity de l'API.
J'ai essayé de remplacer la méthode par updateEmbeddedDocuments, comme indiqué, et ça fonctionne presque, mais ça ne décrémente pas le nombre de potions : Error: OwnedItem is not a valid embedded Document within the Actor Document

Néanmoins, j'ai remarqué que le système WFRP incluait une fonction "reduceQuantity", ainsi, en créant un nouvel objet "potion" avec l'effet définit comme suit, cela fonctionne a priori sur les dernières versions :

          "effectApplication": "actor",
          "effectTrigger": "invoke",
          "preventDuplicateEffects": false,
          "script": "let wounds = this.actor.status.wounds\nif (wounds.value == 0)\n  return ui.notifications.error(\"Aucun effet à 0 points de blessure\")\nwounds.value += this.actor.characteristics.t.bonus\n\nui.notifications.notify(`Healed ${this.actor.characteristics.t.bonus} Wounds`)\n\nif (wounds.value > wounds.max)\n   wounds.value = wounds.max\n\nthis.actor.update({\"data.status.wounds\" : wounds})",
          "reduceQuantity": true,

Mais je dois avouer que je n'ai découvert Foundry que cette semaine, j'ai donc peur de rater des éléments importants.

Merci ! Malheureusement, il semblerait que je rencontre un autre problème plus loin dans le code : `TypeError: this.actor.updateEmbeddedEntity is not a function` Je suppose que cela est une conséquence du [retrait de la méthode `updateEmbeddedEntity` de l'API](https://gitlab.com/foundrynet/foundryvtt/-/issues/5783). J'ai essayé de remplacer la méthode par `updateEmbeddedDocuments`, comme indiqué, et ça fonctionne presque, mais ça ne décrémente pas le nombre de potions : `Error: OwnedItem is not a valid embedded Document within the Actor Document` Néanmoins, j'ai remarqué que le système WFRP [incluait une fonction "reduceQuantity"](https://github.com/moo-man/WFRP4e-FoundryVTT/blob/434d3ae5db0551cb95ce15fb440c6d4c0c29befa/modules/system/effect-wfrp4e.js#L128-L140), ainsi, en créant un nouvel objet "potion" avec l'effet définit comme suit, cela fonctionne a priori sur les dernières versions : ``` "effectApplication": "actor", "effectTrigger": "invoke", "preventDuplicateEffects": false, "script": "let wounds = this.actor.status.wounds\nif (wounds.value == 0)\n return ui.notifications.error(\"Aucun effet à 0 points de blessure\")\nwounds.value += this.actor.characteristics.t.bonus\n\nui.notifications.notify(`Healed ${this.actor.characteristics.t.bonus} Wounds`)\n\nif (wounds.value > wounds.max)\n wounds.value = wounds.max\n\nthis.actor.update({\"data.status.wounds\" : wounds})", "reduceQuantity": true, ``` Mais je dois avouer que je n'ai découvert Foundry que cette semaine, j'ai donc peur de rater des éléments importants.
LeRatierBretonnien commented 2022-02-14 14:00:43 +01:00 (Migrated from gitlab.com)

La méthode de gestion des potions a complètement changée dans le système, j'ai ré-écrit les fonctions en rapport. A re-tester

La méthode de gestion des potions a complètement changée dans le système, j'ai ré-écrit les fonctions en rapport. A re-tester
pallando commented 2022-02-14 17:28:06 +01:00 (Migrated from gitlab.com)

A priori, l'effet est bien appliqué !
Mais le nombre de potions ne diminue pas.
Je pense qu'il faut ajouter "reduceQuantity": true, au-dessus ou en dessous de "script": ....

(Je me demande aussi si un "9" ne s'est pas glissé à la place d'un "0" ligne 654.)

A priori, l'effet est bien appliqué ! Mais le nombre de potions ne diminue pas. Je pense qu'il faut ajouter `"reduceQuantity": true,` au-dessus ou en dessous de `"script": ...`. (Je me demande aussi si un "9" ne s'est pas glissé à la place d'un "0" ligne [654](https://gitlab.com/LeRatierBretonnien/foundryvtt-wh4-lang-fr-fr/-/blob/938ace62a4ddbc9f3a72d79bbff201b30ce00944/compendium/wfrp4e-core.trappings.json#L654).)
LeRatierBretonnien commented 2022-02-14 17:34:46 +01:00 (Migrated from gitlab.com)

C'est la recopie de l'effet du système VO. La quantité est à gérer manuellement.
Pour une automatisation, contacter MooMan, mais si il l'a enlevé, c'est qu'il y a une bonne raison.

C'est la recopie de l'effet du système VO. La quantité est à gérer manuellement. Pour une automatisation, contacter MooMan, mais si il l'a enlevé, c'est qu'il y a une bonne raison.
pallando commented 2022-02-14 17:57:49 +01:00 (Migrated from gitlab.com)

Dans la dernière version du Core, j'ai ceci dans la base de données (packs/trappings.db si je ne me trompe pas) :

"effects":[{"_id":"K7C1LFtqdLQ5bhFS","flags":{"wfrp4e":{"effectTrigger":"invoke","effectApplication":"actor","script":"let wounds = this.actor.status.wounds\nif (wounds.value == 0)\n return ui.notifications.error("No effect at 0 Wounds")\n\nui.notifications.notify('Healed ${this.actor.characteristics.t.bonus} Wounds')\nthis.actor.modifyWounds(this.actor.characteristics.t.bonus)","preventDuplicateEffects":false,"reduceQuantity":true,"hide":false}},"changes":[],"disabled":false,"duration":{"startTime":null},"icon":"modules/wfrp4e-core/icons/equipment/herbs_and_draughts/healing-draught.png","label":"Healing Draught","tint":"","transfer":true}]

Dans la dernière version du Core, j'ai ceci dans la base de données (packs/trappings.db si je ne me trompe pas) : > "effects":[{"_id":"K7C1LFtqdLQ5bhFS","flags":{"wfrp4e":{"effectTrigger":"invoke","effectApplication":"actor","script":"let wounds = this.actor.status.wounds\nif (wounds.value == 0)\n return ui.notifications.error(\"No effect at 0 Wounds\")\n\nui.notifications.notify('Healed ${this.actor.characteristics.t.bonus} Wounds\')\nthis.actor.modifyWounds(this.actor.characteristics.t.bonus)","preventDuplicateEffects":false,**"reduceQuantity":true**,"hide":false}},"changes":[],"disabled":false,"duration":{"startTime":null},"icon":"modules/wfrp4e-core/icons/equipment/herbs_and_draughts/healing-draught.png","label":"Healing Draught","tint":"","transfer":true}]
LeRatierBretonnien commented 2022-02-14 20:17:28 +01:00 (Migrated from gitlab.com)

Ah j'étais passé à côté. Fixed, je crois

Ah j'étais passé à côté. Fixed, je crois
pallando commented 2022-02-14 20:33:58 +01:00 (Migrated from gitlab.com)

Trop cool ! Merci beaucoup !

Trop cool ! Merci beaucoup !
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: public/foundryvtt-wh4-lang-fr-fr#63
No description provided.