Improve the chat message handling to make it so that the flavour can be properly updated if you include @active roll data

This commit is contained in:
Oliver 2026-04-29 19:53:39 -06:00
parent 0fb10b7ae2
commit c090daa2aa
2 changed files with 41 additions and 7 deletions

View file

@ -136,11 +136,28 @@ export class AttributeItemData extends foundry.abstract.TypeDataModel {
// Provide the chat-specific context when required // Provide the chat-specific context when required
if (macro.type === `chat`) { if (macro.type === `chat`) {
const extraContext = {
name: this.parent.name,
min: this.min,
value: this.value,
max: this.max,
};
Hooks.once(`taf.getRollData`, (data) => { Hooks.once(`taf.getRollData`, (data) => {
data.active = { data.active = extraContext;
min: this.min, });
value: this.value,
max: this.max, // Apply any roll data additions to the message flavour as well
// since that doesn't get formatted by the ChatLog
Hooks.once(`preCreateChatMessage`, (message) => {
if (message.flavor.includes(`@active`)) {
const flavor = message.flavor.replaceAll(
/@active\.(\w+)/g,
(fullMatch, key) => {
return extraContext[key] || fullMatch;
},
);
message.updateSource({ flavor, });
}; };
}); });
}; };

View file

@ -59,10 +59,27 @@ export class GenericItemData extends foundry.abstract.TypeDataModel {
// Provide the chat-specific context when required // Provide the chat-specific context when required
if (macro.type === `chat`) { if (macro.type === `chat`) {
const extraContext = {
name: this.parent.name,
quantity: this.quantity,
equipped: this.equipped ? 1 : 0,
};
Hooks.once(`taf.getRollData`, (data) => { Hooks.once(`taf.getRollData`, (data) => {
data.active = { data.active = extraContext;
quantity: this.quantity, });
equipped: this.equipped ? 1 : 0,
// Apply any roll data additions to the message flavour as well
// since that doesn't get formatted by the ChatLog
Hooks.once(`preCreateChatMessage`, (message) => {
if (message.flavor.includes(`@active`)) {
const flavor = message.flavor.replaceAll(
/@active\.(\w+)/g,
(fullMatch, key) => {
return extraContext[key] || fullMatch;
},
);
message.updateSource({ flavor, });
}; };
}); });
}; };