mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
* Add ability to sort inventories in player and party sheets * Format base actor sheet * Check item validity when creating on an actor * Block dragdrop on adversaries and environments * Support drag and drop in adversary and environment sheets * Fix regression with dropping to character sheet * Move vault when created handling to domain card preCreate
68 lines
2.5 KiB
JavaScript
68 lines
2.5 KiB
JavaScript
import BaseDataActor from './base.mjs';
|
|
import ForeignDocumentUUIDArrayField from '../fields/foreignDocumentUUIDArrayField.mjs';
|
|
|
|
export default class DhParty extends BaseDataActor {
|
|
/**@inheritdoc */
|
|
static defineSchema() {
|
|
const fields = foundry.data.fields;
|
|
return {
|
|
...super.defineSchema(),
|
|
partyMembers: new ForeignDocumentUUIDArrayField({ type: 'Actor' }, { prune: true }),
|
|
notes: new fields.HTMLField(),
|
|
gold: new fields.SchemaField({
|
|
coins: new fields.NumberField({ initial: 0, integer: true }),
|
|
handfuls: new fields.NumberField({ initial: 1, integer: true }),
|
|
bags: new fields.NumberField({ initial: 0, integer: true }),
|
|
chests: new fields.NumberField({ initial: 0, integer: true })
|
|
})
|
|
};
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**@inheritdoc */
|
|
static DEFAULT_ICON = 'systems/daggerheart/assets/icons/documents/actors/dark-squad.svg';
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
isItemValid(source) {
|
|
return ["weapon", "armor", "consumable", "loot"].includes(source.type);
|
|
}
|
|
|
|
prepareBaseData() {
|
|
super.prepareBaseData();
|
|
|
|
// Register this party to all members
|
|
if (game.actors.get(this.parent.id) === this.parent) {
|
|
for (const member of this.partyMembers) {
|
|
member.parties?.add(this.parent);
|
|
}
|
|
}
|
|
}
|
|
|
|
async _preDelete() {
|
|
/* Clear all partyMembers from tagTeam setting.*/
|
|
/* Revisit this when tagTeam is improved for many parties */
|
|
const tagTeam = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll);
|
|
await tagTeam.updateSource({
|
|
initiator: this.partyMembers.some(x => x.id === tagTeam.initiator) ? null : tagTeam.initiator,
|
|
members: Object.keys(tagTeam.members).reduce((acc, key) => {
|
|
if (this.partyMembers.find(x => x.id === key)) {
|
|
acc[`-=${key}`] = null;
|
|
}
|
|
|
|
return acc;
|
|
}, {})
|
|
});
|
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, tagTeam);
|
|
}
|
|
|
|
_onDelete(options, userId) {
|
|
super._onDelete(options, userId);
|
|
|
|
// Clear this party from all members that aren't deleted
|
|
for (const member of this.partyMembers) {
|
|
member?.parties?.delete(this.parent);
|
|
}
|
|
}
|
|
}
|