From 200e35b7b7c1bd13beffb3ecf9a21f0b622dce7a Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 10 Apr 2026 14:18:41 +0200 Subject: [PATCH] Filtrage des actions des items des commerces --- changelog.md | 1 + module/item/item-actions.js | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/changelog.md b/changelog.md index a3e28177..915267e9 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,7 @@ - Correction du recul contre une entité de cauchemar (qui utilise le rêve comme force) - Correction erreur lors de la suppression d'un objet d'un conteneur - Meilleure gestion des messages publics/GM, en particulier pour les tirage dans les compendiums +- Filtrage des boutons pour les acteurs non personnages (pour éviter de faire manger l'auberge...) ## 13.0.34 - La saumuche d'Illysis diff --git a/module/item/item-actions.js b/module/item/item-actions.js index f6f8e818..c76ab2fd 100644 --- a/module/item/item-actions.js +++ b/module/item/item-actions.js @@ -28,6 +28,7 @@ const _MONTRER = { } const _SPLIT = { code: 'item-split', label: 'Séparer le goupe', icon: 'fa-solid fa-unlink', + actorFilter: actor => actor.isOwner, filter: it => Misc.toInt(it.system.quantite) > 1 && it.parent?.type != ACTOR_TYPES.commerce, action: (item, actor) => RdDSheetUtility.splitItem(item, actor) } @@ -45,6 +46,7 @@ const _DELETE = { } const _EQUIPER = { code: 'item-equip', label: 'Equiper', icon: it => it.system.equipe ? 'fa-solid fa-hand-rock' : 'fa-regular fa-hand-paper', + actorFilter: actor => actor.isPersonnage(), filter: it => !it.estContenu && it.isEquipable(), action: (item, actor) => actor.equiperObjet(item) } @@ -52,26 +54,31 @@ const _EQUIPER = { const _CUISINER = { code: 'item-cuisiner', label: 'Cuisiner', img: 'systems/foundryvtt-reve-de-dragon/assets/actions/cuisine.svg', + actorFilter: actor => actor.isPersonnage(), filter: it => it.getUtilisation() == 'cuisine' && it.system.sust > 0, action: (item, actor) => actor.preparerNourriture(item) } const _MANGER_CRU = { code: 'item-manger-cru', label: 'Manger cru', icon: 'fa-solid fa-drumstick-bite', + actorFilter: actor => actor.isPersonnage(), filter: it => it.getUtilisation() == 'cuisine' && it.system.sust > 0, action: (item, actor) => actor.mangerNourriture(item) } const _MANGER = { code: 'item-manger', label: 'Manger', icon: 'fa-solid fa-utensils', + actorFilter: actor => actor.isPersonnage(), filter: it => !(it.system.boisson), action: (item, actor) => actor.mangerNourriture(item) } const _BOIRE = { code: 'item-boire', label: 'Boire', icon: 'fa-solid fa-glass-water', + actorFilter: actor => actor.isPersonnage(), filter: it => it.system.boisson, action: (item, actor) => actor.mangerNourriture(item) } const _DECOCTION = { code: 'item-decoction', label: 'Décoction', icon: 'fa-solid fa-flask-vial', + actorFilter: actor => actor.isPersonnage(), action: (item, actor) => actor.fabriquerDecoctionHerbe(item) } @@ -82,17 +89,20 @@ const _OUVRIR = { } const _LIRE = { code: 'item-lire', label: 'Lire', icon: 'fa-solid fa-book-open', + actorFilter: actor => actor.isPersonnage(), action: (item, actor) => actor.actionLire(item) } const _REFOULER = { code: 'item-refouler', label: 'Refouler', icon: 'fa-solid fa-burst', + actorFilter: actor => actor.isPersonnage(), filter: it => it.system.refoulement > 0, action: (item, actor) => actor.actionRefoulement(item) } const _SORT_RESERVE = { code: 'item-sortreserve-add', label: 'Ajouter en réserve', icon: 'fa-solid fa-sparkles', + actorFilter: actor => actor.isPersonnage(), filter: it => game.user.isGM && !it.system.isrituel, action: (item, actor) => actor.addSortReserve(item) } @@ -118,6 +128,7 @@ export class ItemAction { static applies(action, item, options) { return action && item && item.isActionAllowed(action.code) + && (!action.actorFilter || (item.actor && action.actorFilter(item.actor))) && (!action.filter || action.filter(item)) && (action.allowLimited || options.editable) && (!action.optionsFilter || action.optionsFilter(options))