From 8e2f6f0f116cf18db70d2e776ce3d8bd8d6d7c53 Mon Sep 17 00:00:00 2001
From: roth-michael <72220390+roth-michael@users.noreply.github.com>
Date: Tue, 4 Feb 2025 13:28:45 -0500
Subject: [PATCH] [#4802] Add "display chat card" button to inventory item
context menu (#5021)
---
lang/en.json | 1 +
module/applications/components/inventory.mjs | 5 +++++
module/documents/chat-message.mjs | 13 ++++---------
3 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/lang/en.json b/lang/en.json
index c3a73e2d7f..db1b535321 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1740,6 +1740,7 @@
"DND5E.Disadvantage": "Disadvantage",
"DND5E.Discord": "Discord",
"DND5E.Disclaimer": "Disclaimer",
+"DND5E.DisplayCard": "Display in Chat",
"DND5E.DistAny": "Any",
"DND5E.DistFt": "Feet",
"DND5E.DistFtAbbr": "ft",
diff --git a/module/applications/components/inventory.mjs b/module/applications/components/inventory.mjs
index f6e913d0ef..d9dfe0dcef 100644
--- a/module/applications/components/inventory.mjs
+++ b/module/applications/components/inventory.mjs
@@ -212,6 +212,11 @@ export default class InventoryElement extends HTMLElement {
condition: () => item.canDelete && item.isOwner && !item.compendium?.locked,
callback: li => this._onAction(li[0], "delete")
},
+ {
+ name: "DND5E.DisplayCard",
+ icon: '',
+ callback: () => item.displayCard()
+ },
{
name: "DND5E.Scroll.CreateScroll",
icon: '',
diff --git a/module/documents/chat-message.mjs b/module/documents/chat-message.mjs
index 8a69adb791..795d57ac2c 100644
--- a/module/documents/chat-message.mjs
+++ b/module/documents/chat-message.mjs
@@ -669,16 +669,11 @@ export default class ChatMessage5e extends ChatMessage {
* @protected
*/
_enrichUsageEffects(html) {
+ if ( this.getFlag("dnd5e", "messageType") !== "usage" ) return;
const item = this.getAssociatedItem();
- let effects;
- if ( this.getFlag("dnd5e", "messageType") === "usage" ) {
- effects = this.getFlag("dnd5e", "use.effects")?.map(id => item?.effects.get(id));
- } else {
- if ( this.getFlag("dnd5e", "roll.type") ) return;
- effects = item?.effects.filter(e => (e.type !== "enchantment")
- && !item.getFlag("dnd5e", "riders.effect")?.includes(e.id));
- }
- effects = effects?.filter(e => e && (game.user.isGM || (e.transfer && (this.author.id === game.user.id))));
+ const effects = this.getFlag("dnd5e", "use.effects")
+ ?.map(id => item?.effects.get(id))
+ .filter(e => e && (game.user.isGM || (e.transfer && (this.author.id === game.user.id))));
if ( !effects?.length ) return;
const effectApplication = document.createElement("effect-application");