diff --git a/lang/en.json b/lang/en.json index 9de04f27..bcdfe03d 100755 --- a/lang/en.json +++ b/lang/en.json @@ -2623,7 +2623,8 @@ "cardTooHighLevel": "The card is too high level!", "duplicateCard": "You cannot select the same card more than once.", "duplicateCharacter": "This actor is already registered in the party members list.", - "onlyCharactersInPartySheet": "You can drag only characters to a party sheet.", + "onlyCharactersInPartySheet": "You can only drag characters, companions and adverasries to the party sheet.", + "onlyLinkedActorsInPartySheet": "Actors in the ", "notPrimary": "The weapon is not a primary weapon!", "notSecondary": "The weapon is not a secondary weapon!", "itemTooHighTier": "The item must be from Tier1", diff --git a/module/applications/sheets/actors/party.mjs b/module/applications/sheets/actors/party.mjs index a622dcec..2b93d592 100644 --- a/module/applications/sheets/actors/party.mjs +++ b/module/applications/sheets/actors/party.mjs @@ -7,6 +7,7 @@ import { socketEvent } from '../../../systemRegistration/socket.mjs'; import GroupRollDialog from '../../dialogs/group-roll-dialog.mjs'; import DhpActor from '../../../documents/actor.mjs'; import DHItem from '../../../documents/item.mjs'; +import DhParty from '../../../data/actor/party.mjs'; export default class Party extends DHBaseActorSheet { constructor(options) { @@ -79,6 +80,9 @@ export default class Party extends DHBaseActorSheet { } }; + static ALLOWED_ACTOR_TYPES = ['character', 'companion', 'adversary']; + static DICE_ROLL_ACTOR_TYPES = ['character']; + async _onRender(context, options) { await super._onRender(context, options); this._createFilterMenus(); @@ -276,14 +280,18 @@ export default class Party extends DHBaseActorSheet { }); } + get partyMembersForRoll() { + return this.document.system.partyMembers.filter(x => Party.DICE_ROLL_ACTOR_TYPES.includes(x.type)); + } + static async #tagTeamRoll() { - new game.system.api.applications.dialogs.TagTeamDialog(this.document.system.partyMembers).render({ + new game.system.api.applications.dialogs.TagTeamDialog(this.partyMembersForRoll).render({ force: true }); } static async #groupRoll(params) { - new GroupRollDialog(this.document.system.partyMembers).render({ force: true }); + new GroupRollDialog(this.partyMembersForRoll).render({ force: true }); } /** @@ -455,7 +463,7 @@ export default class Party extends DHBaseActorSheet { const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event); const item = await foundry.utils.fromUuid(data.uuid); - if (item instanceof DhpActor) { + if (item instanceof DhpActor && Party.ALLOWED_ACTOR_TYPES.includes(item.type)) { const currentMembers = this.document.system.partyMembers.map(x => x.uuid); if (currentMembers.includes(data.uuid)) { return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.duplicateCharacter')); diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 8afb1770..645a50da 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -672,14 +672,6 @@ export default class DhCharacter extends BaseDataActor { if (this.companion) { this.companion.updateLevel(1); } - - if (this.parent.parties) { - for (const party of this.parent.parties) { - await party.update({ - 'system.partyMembers': party.system.partyMembers.filter(x => x.uuid !== this.parent.uuid) - }); - } - } } _getTags() { diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 8faf1350..c9110ba3 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -85,6 +85,17 @@ export default class DhpActor extends Actor { this.updateSource({ prototypeToken }); } + /**@inheritdoc */ + async _preDelete() { + if (this.parent.parties) { + for (const party of this.parent.parties) { + await party.update({ + 'system.partyMembers': party.system.partyMembers.filter(x => x.uuid !== this.parent.uuid) + }); + } + } + } + _onUpdate(changes, options, userId) { super._onUpdate(changes, options, userId); for (const party of this.parties) { diff --git a/styles/less/sheets/actors/party/resources.less b/styles/less/sheets/actors/party/resources.less index fc7e0110..4db254bf 100644 --- a/styles/less/sheets/actors/party/resources.less +++ b/styles/less/sheets/actors/party/resources.less @@ -32,7 +32,7 @@ body.game:is(.performance-low, .noblur) { background: light-dark(@dark-blue-40, @dark-golden-40); border-radius: 6px; border: 1px solid light-dark(@dark-blue, @golden); - max-width: 230px; + width: 230px; height: -webkit-fill-available; .actor-name { diff --git a/templates/sheets/actors/party/inventory.hbs b/templates/sheets/actors/party/inventory.hbs index 95845197..65e042de 100644 --- a/templates/sheets/actors/party/inventory.hbs +++ b/templates/sheets/actors/party/inventory.hbs @@ -49,6 +49,7 @@ canCreate=true hideResources=true hideContextMenu=true + isActor=true }} {{> 'daggerheart.inventory-items' title='TYPES.Item.armor' @@ -59,6 +60,7 @@ canCreate=true hideResources=true hideContextMenu=true + isActor=true }} {{> 'daggerheart.inventory-items' title='TYPES.Item.consumable' @@ -68,6 +70,7 @@ isGlassy=true canCreate=true hideContextMenu=true + isActor=true }} {{> 'daggerheart.inventory-items' title='TYPES.Item.loot' @@ -77,6 +80,7 @@ isGlassy=true canCreate=true hideContextMenu=true + isActor=true }} \ No newline at end of file diff --git a/templates/sheets/actors/party/resources.hbs b/templates/sheets/actors/party/resources.hbs index edb58248..74f94806 100644 --- a/templates/sheets/actors/party/resources.hbs +++ b/templates/sheets/actors/party/resources.hbs @@ -22,19 +22,21 @@