mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-04-21 23:13:39 +02:00
Add game.actors.party and refine logic
This commit is contained in:
parent
b08b8b93b6
commit
031f497c33
5 changed files with 22 additions and 18 deletions
|
|
@ -3212,7 +3212,7 @@
|
||||||
"companion": "Level {level} - {partner}",
|
"companion": "Level {level} - {partner}",
|
||||||
"companionNoPartner": "No Partner",
|
"companionNoPartner": "No Partner",
|
||||||
"duplicateToNewTier": "Duplicate to New Tier",
|
"duplicateToNewTier": "Duplicate to New Tier",
|
||||||
"activateParty": "Make Activate Party",
|
"activateParty": "Make Active Party",
|
||||||
"partyIsActive": "Active",
|
"partyIsActive": "Active",
|
||||||
"createAdversary": "Create Adversary",
|
"createAdversary": "Create Adversary",
|
||||||
"pickTierTitle": "Pick a new tier for this adversary"
|
"pickTierTitle": "Pick a new tier for this adversary"
|
||||||
|
|
|
||||||
|
|
@ -51,20 +51,13 @@ export default class DhParty extends BaseDataActor {
|
||||||
_onCreate(data, options, userId) {
|
_onCreate(data, options, userId) {
|
||||||
super._onCreate(data, options, userId);
|
super._onCreate(data, options, userId);
|
||||||
|
|
||||||
if (game.user.isActiveGM && !game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty)) {
|
if (game.user.isActiveGM && !game.actors.party) {
|
||||||
game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, this.parent.id).then(_ => {
|
game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, this.parent.id).then(_ => {
|
||||||
ui.actors.render();
|
ui.actors.render();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async _preDelete() {
|
|
||||||
super._preDelete();
|
|
||||||
|
|
||||||
if (this.active)
|
|
||||||
game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
_onDelete(options, userId) {
|
_onDelete(options, userId) {
|
||||||
super._onDelete(options, userId);
|
super._onDelete(options, userId);
|
||||||
|
|
||||||
|
|
@ -72,5 +65,11 @@ export default class DhParty extends BaseDataActor {
|
||||||
for (const member of this.partyMembers) {
|
for (const member of this.partyMembers) {
|
||||||
member?.parties?.delete(this.parent);
|
member?.parties?.delete(this.parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If this *was* the active party, delete it. We can't use game.actors.party as this actor was already deleted
|
||||||
|
const isWorldActor = !this.parent?.parent && !this.parent.compendium;
|
||||||
|
const activePartyId = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty);
|
||||||
|
if (isWorldActor && this.id === activePartyId)
|
||||||
|
game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,9 @@ export default class DhpActor extends Actor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async _preDelete() {
|
async _preDelete(options, user) {
|
||||||
|
if ((await super._preDelete(options, user)) === false) return false;
|
||||||
|
|
||||||
if (this.prototypeToken.actorLink) {
|
if (this.prototypeToken.actorLink) {
|
||||||
game.system.registeredTriggers.unregisterItemTriggers(this.items);
|
game.system.registeredTriggers.unregisterItemTriggers(this.items);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -125,8 +127,6 @@ export default class DhpActor extends Actor {
|
||||||
game.system.registeredTriggers.unregisterItemTriggers(token.actor.items);
|
game.system.registeredTriggers.unregisterItemTriggers(token.actor.items);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.system._preDelete() === false) return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDelete(options, userId) {
|
_onDelete(options, userId) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,11 @@
|
||||||
export default class DhActorCollection extends foundry.documents.collections.Actors {
|
export default class DhActorCollection extends foundry.documents.collections.Actors {
|
||||||
|
/** @returns the active party */
|
||||||
|
get party() {
|
||||||
|
const id = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty);
|
||||||
|
const actor = game.actors.get(id);
|
||||||
|
return actor?.type === "party" ? actor : null;
|
||||||
|
}
|
||||||
|
|
||||||
/** Ensure companions are initialized after all other subtypes. */
|
/** Ensure companions are initialized after all other subtypes. */
|
||||||
_initialize() {
|
_initialize() {
|
||||||
super._initialize();
|
super._initialize();
|
||||||
|
|
|
||||||
|
|
@ -191,13 +191,11 @@ export const getDeleteKeys = (property, innerProperty, innerPropertyDefaultValue
|
||||||
const nativeReplaceFormulaData = Roll.replaceFormulaData;
|
const nativeReplaceFormulaData = Roll.replaceFormulaData;
|
||||||
Roll.replaceFormulaData = function (formula, baseData = {}, { missing, warn = false } = {}) {
|
Roll.replaceFormulaData = function (formula, baseData = {}, { missing, warn = false } = {}) {
|
||||||
/* Inserting global data */
|
/* Inserting global data */
|
||||||
const data = {
|
const data = {
|
||||||
...baseData,
|
...baseData,
|
||||||
partySize:
|
partySize: game.actors?.party?.system.partyMembers.length ?? 0
|
||||||
!game.actors ? 0 :
|
|
||||||
game.actors.find(x => x.type === 'party' && x.system.active)?.system.partyMembers.length ?? 0,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const terms = Object.keys(CONFIG.DH.GENERAL.multiplierTypes).map(type => {
|
const terms = Object.keys(CONFIG.DH.GENERAL.multiplierTypes).map(type => {
|
||||||
return { term: type, default: 1 };
|
return { term: type, default: 1 };
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue