mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-15 21:21:08 +01:00
[BUG] - Sending an active effect to chat doesnt work (#727)
Fixes #616 Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>
This commit is contained in:
parent
45b3569cba
commit
85982bac8c
7 changed files with 33 additions and 34 deletions
|
|
@ -2259,11 +2259,6 @@
|
||||||
"abilityCheckTitle": "{ability} Check"
|
"abilityCheckTitle": "{ability} Check"
|
||||||
},
|
},
|
||||||
"featureTitle": "Class Feature",
|
"featureTitle": "Class Feature",
|
||||||
"foundationCard": {
|
|
||||||
"ancestryTitle": "Ancestry Card",
|
|
||||||
"communityTitle": "Community Card",
|
|
||||||
"subclassFeatureTitle": "Subclass Feature"
|
|
||||||
},
|
|
||||||
"healingRoll": {
|
"healingRoll": {
|
||||||
"title": "Heal - {damage}",
|
"title": "Heal - {damage}",
|
||||||
"heal": "Heal",
|
"heal": "Heal",
|
||||||
|
|
|
||||||
|
|
@ -51,9 +51,8 @@ import { ItemBrowser } from '../../ui/itemBrowser.mjs';
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @template {Constructor<foundry.applications.api.DocumentSheet>} BaseDocumentSheet
|
* @template {new (...args: any[]) => {}} T
|
||||||
* @param {BaseDocumentSheet} Base - The base class to extend.
|
* @arg Base {T}
|
||||||
* @returns {BaseDocumentSheet}
|
|
||||||
*/
|
*/
|
||||||
export default function DHApplicationMixin(Base) {
|
export default function DHApplicationMixin(Base) {
|
||||||
class DHSheetV2 extends HandlebarsApplicationMixin(Base) {
|
class DHSheetV2 extends HandlebarsApplicationMixin(Base) {
|
||||||
|
|
@ -123,12 +122,13 @@ export default function DHApplicationMixin(Base) {
|
||||||
super._attachPartListeners(partId, htmlElement, options);
|
super._attachPartListeners(partId, htmlElement, options);
|
||||||
this._dragDrop.forEach(d => d.bind(htmlElement));
|
this._dragDrop.forEach(d => d.bind(htmlElement));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**@inheritdoc */
|
/**@inheritdoc */
|
||||||
async _onFirstRender(context, options) {
|
async _onFirstRender(context, options) {
|
||||||
await super._onFirstRender(context, options);
|
await super._onFirstRender(context, options);
|
||||||
|
|
||||||
const docs = [];
|
const docs = [];
|
||||||
for (var docData of this.relatedDocs) {
|
for (const docData of this.relatedDocs) {
|
||||||
const doc = await foundry.utils.fromUuid(docData.uuid);
|
const doc = await foundry.utils.fromUuid(docData.uuid);
|
||||||
docs.push(doc);
|
docs.push(doc);
|
||||||
}
|
}
|
||||||
|
|
@ -247,6 +247,9 @@ export default function DHApplicationMixin(Base) {
|
||||||
/* Context Menu */
|
/* Context Menu */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create all configured context menus for this application ins tance.
|
||||||
|
*/
|
||||||
_createContextMenus() {
|
_createContextMenus() {
|
||||||
for (const config of this.options.contextMenus) {
|
for (const config of this.options.contextMenus) {
|
||||||
const { handler, selector, options } = config;
|
const { handler, selector, options } = config;
|
||||||
|
|
@ -257,9 +260,9 @@ export default function DHApplicationMixin(Base) {
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the set of ContextMenu options for DomainCards.
|
* Get the set of ContextMenu options for ActiveEffects.
|
||||||
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance
|
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance
|
||||||
* @this {CharacterSheet}
|
* @this {DHSheetV2}
|
||||||
* @protected
|
* @protected
|
||||||
*/
|
*/
|
||||||
static #getEffectContextOptions() {
|
static #getEffectContextOptions() {
|
||||||
|
|
@ -305,8 +308,13 @@ export default function DHApplicationMixin(Base) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the set of ContextMenu options.
|
* Get the common ContextMenu options for an element.
|
||||||
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance
|
* @param {Object} options
|
||||||
|
* @param {boolean} [options.usable=false] - Whether to include an option to use the item or apply damage.
|
||||||
|
* @param {boolean} [options.toChat=false] - Whether to include an option to send the item to chat.
|
||||||
|
* @param {boolean} [options.deletable=true] - Whether to include an option to delete the item.
|
||||||
|
*
|
||||||
|
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]}
|
||||||
*/
|
*/
|
||||||
_getContextMenuCommonOptions({ usable = false, toChat = false, deletable = true }) {
|
_getContextMenuCommonOptions({ usable = false, toChat = false, deletable = true }) {
|
||||||
const options = [
|
const options = [
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@ const { ActorSheetV2 } = foundry.applications.sheets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A base actor sheet extending {@link ActorSheetV2} via {@link DHApplicationMixin}
|
* A base actor sheet extending {@link ActorSheetV2} via {@link DHApplicationMixin}
|
||||||
* @extends ActorSheetV2
|
|
||||||
* @mixes DHSheetV2
|
|
||||||
*/
|
*/
|
||||||
export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) {
|
export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) {
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
|
|
@ -106,7 +104,7 @@ export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) {
|
||||||
/**
|
/**
|
||||||
* Get the set of ContextMenu options for Features.
|
* Get the set of ContextMenu options for Features.
|
||||||
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance
|
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance
|
||||||
* @this {DHSheetV2}
|
* @this {DHBaseActorSheet}
|
||||||
* @protected
|
* @protected
|
||||||
*/
|
*/
|
||||||
static #getFeatureContextOptions() {
|
static #getFeatureContextOptions() {
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@ const { ItemSheetV2 } = foundry.applications.sheets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A base item sheet extending {@link ItemSheetV2} via {@link DHApplicationMixin}
|
* A base item sheet extending {@link ItemSheetV2} via {@link DHApplicationMixin}
|
||||||
* @extends ItemSheetV2
|
|
||||||
* @mixes DHSheetV2
|
|
||||||
*/
|
*/
|
||||||
export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
|
export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
|
|
@ -108,7 +106,7 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
|
||||||
/**
|
/**
|
||||||
* Get the set of ContextMenu options for Features.
|
* Get the set of ContextMenu options for Features.
|
||||||
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance
|
* @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance
|
||||||
* @this {DHSheetV2}
|
* @this {DHBaseItemSheet}
|
||||||
* @protected
|
* @protected
|
||||||
*/
|
*/
|
||||||
static #getFeatureContextOptions() {
|
static #getFeatureContextOptions() {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ export default class DHAbilityUse extends foundry.abstract.TypeDataModel {
|
||||||
const fields = foundry.data.fields;
|
const fields = foundry.data.fields;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title: new fields.StringField({}),
|
|
||||||
origin: new fields.StringField({}),
|
origin: new fields.StringField({}),
|
||||||
img: new fields.StringField({}),
|
img: new fields.StringField({}),
|
||||||
name: new fields.StringField({}),
|
name: new fields.StringField({}),
|
||||||
|
|
|
||||||
|
|
@ -124,15 +124,20 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect {
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new ChatMessage to display this document’s data.
|
||||||
|
* @param {String} origin - uuid of a document. TODO: This needs to be reviewed.
|
||||||
|
*/
|
||||||
async toChat(origin) {
|
async toChat(origin) {
|
||||||
|
/**@type {foundry.documents.ChatMessage} */
|
||||||
const cls = getDocumentClass('ChatMessage');
|
const cls = getDocumentClass('ChatMessage');
|
||||||
const actor = game.actors.get(cls.getSpeaker().actor);
|
const speaker = cls.getSpeaker();
|
||||||
|
const actor = cls.getSpeakerActor(speaker);
|
||||||
const systemData = {
|
const systemData = {
|
||||||
action: { img: this.img, name: this.name },
|
action: { img: this.img, name: this.name },
|
||||||
actor: { name: actor.name, img: actor.img },
|
actor: { name: actor?.name, img: actor?.img },
|
||||||
author: this.author,
|
speaker,
|
||||||
speaker: cls.getSpeaker(),
|
origin,
|
||||||
origin: origin,
|
|
||||||
description: this.description,
|
description: this.description,
|
||||||
actions: []
|
actions: []
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -142,19 +142,16 @@ export default class DHItem extends foundry.documents.Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new ChatMessage to display this document’s data
|
||||||
|
* @param {String} origin - uuid of a document. TODO: This needs to be reviewed.
|
||||||
|
*/
|
||||||
async toChat(origin) {
|
async toChat(origin) {
|
||||||
|
/**@type {foundry.documents.ChatMessage} */
|
||||||
const cls = getDocumentClass('ChatMessage');
|
const cls = getDocumentClass('ChatMessage');
|
||||||
const item = await foundry.utils.fromUuid(origin);
|
const item = await foundry.utils.fromUuid(origin);
|
||||||
|
|
||||||
const systemData = {
|
const systemData = {
|
||||||
title:
|
|
||||||
this.type === 'ancestry'
|
|
||||||
? game.i18n.localize('DAGGERHEART.UI.Chat.foundationCard.ancestryTitle')
|
|
||||||
: this.type === 'community'
|
|
||||||
? game.i18n.localize('DAGGERHEART.UI.Chat.foundationCard.communityTitle')
|
|
||||||
: this.type === 'feature'
|
|
||||||
? game.i18n.localize('TYPES.Item.feature')
|
|
||||||
: game.i18n.localize('DAGGERHEART.UI.Chat.foundationCard.subclassFeatureTitle'),
|
|
||||||
origin: origin,
|
origin: origin,
|
||||||
img: this.img,
|
img: this.img,
|
||||||
item: {
|
item: {
|
||||||
|
|
@ -170,7 +167,6 @@ export default class DHItem extends foundry.documents.Item {
|
||||||
type: 'abilityUse',
|
type: 'abilityUse',
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
actor: item.parent,
|
actor: item.parent,
|
||||||
author: this.author,
|
|
||||||
speaker: cls.getSpeaker(),
|
speaker: cls.getSpeaker(),
|
||||||
system: systemData,
|
system: systemData,
|
||||||
title: game.i18n.localize('DAGGERHEART.ACTIONS.Config.displayInChat'),
|
title: game.i18n.localize('DAGGERHEART.ACTIONS.Config.displayInChat'),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue