mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-12 03:31:07 +01:00
Added so effects can be applied from a partner to a companion and vice versa
This commit is contained in:
parent
fa21baf8bf
commit
f3cf850355
6 changed files with 55 additions and 3 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
import BaseEffect from './baseEffect.mjs';
|
import BaseEffect from './baseEffect.mjs';
|
||||||
import BeastformEffect from './beastformEffect.mjs';
|
import BeastformEffect from './beastformEffect.mjs';
|
||||||
|
import CompanionEffect from './companionEffect.mjs';
|
||||||
import HordeEffect from './hordeEffect.mjs';
|
import HordeEffect from './hordeEffect.mjs';
|
||||||
|
|
||||||
export { BaseEffect, BeastformEffect, HordeEffect };
|
export { BaseEffect, BeastformEffect, HordeEffect };
|
||||||
|
|
@ -7,5 +8,6 @@ export { BaseEffect, BeastformEffect, HordeEffect };
|
||||||
export const config = {
|
export const config = {
|
||||||
base: BaseEffect,
|
base: BaseEffect,
|
||||||
beastform: BeastformEffect,
|
beastform: BeastformEffect,
|
||||||
|
companion: CompanionEffect,
|
||||||
horde: HordeEffect
|
horde: HordeEffect
|
||||||
};
|
};
|
||||||
|
|
|
||||||
11
module/data/activeEffect/companionEffect.mjs
Normal file
11
module/data/activeEffect/companionEffect.mjs
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import BaseEffect from './baseEffect.mjs';
|
||||||
|
|
||||||
|
export default class CompanionEffect extends BaseEffect {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
|
||||||
|
return {
|
||||||
|
...BaseEffect.defineSchema()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -453,8 +453,7 @@ export default class DhCharacter extends BaseDataActor {
|
||||||
|
|
||||||
if (
|
if (
|
||||||
item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.foundation ||
|
item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.foundation ||
|
||||||
(item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.specialization &&
|
(item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.specialization && subclassState >= 2) ||
|
||||||
subclassState >= 2) ||
|
|
||||||
(item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.mastery && subclassState >= 3)
|
(item.system.identifier === CONFIG.DH.ITEM.featureSubTypes.mastery && subclassState >= 3)
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -573,6 +572,16 @@ export default class DhCharacter extends BaseDataActor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allApplicableEffects(baseEffects) {
|
||||||
|
if (!this.companion) return baseEffects;
|
||||||
|
|
||||||
|
const effects = [
|
||||||
|
...Array.from(baseEffects),
|
||||||
|
...Array.from(this.companion.getBaseApplicableEffects()).filter(x => x.type === 'companion')
|
||||||
|
];
|
||||||
|
return effects;
|
||||||
|
}
|
||||||
|
|
||||||
prepareBaseData() {
|
prepareBaseData() {
|
||||||
this.evasion += this.class.value?.system?.evasion ?? 0;
|
this.evasion += this.class.value?.system?.evasion ?? 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,16 @@ export default class DhCompanion extends BaseDataActor {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allApplicableEffects(baseEffects) {
|
||||||
|
if (!this.partner) return baseEffects;
|
||||||
|
|
||||||
|
const effects = [
|
||||||
|
...Array.from(baseEffects),
|
||||||
|
...Array.from(this.partner.getBaseApplicableEffects()).filter(x => x.type === 'companion')
|
||||||
|
];
|
||||||
|
return effects;
|
||||||
|
}
|
||||||
|
|
||||||
prepareBaseData() {
|
prepareBaseData() {
|
||||||
this.attack.roll.bonus = this.partner?.system?.spellcastModifier ?? 0;
|
this.attack.roll.bonus = this.partner?.system?.spellcastModifier ?? 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,25 @@ export default class DhpActor extends Actor {
|
||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getBaseApplicableEffects() {
|
||||||
|
const effects = [...this.effects];
|
||||||
|
if (CONFIG.ActiveEffect.legacyTransferral) return;
|
||||||
|
|
||||||
|
for (const item of this.items) {
|
||||||
|
for (const effect of item.effects) {
|
||||||
|
if (effect.transfer) effects.push(effect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return effects;
|
||||||
|
}
|
||||||
|
|
||||||
|
allApplicableEffects() {
|
||||||
|
const effects = this.getBaseApplicableEffects();
|
||||||
|
|
||||||
|
return this.system.allApplicableEffects?.(effects) ?? effects;
|
||||||
|
}
|
||||||
|
|
||||||
/**@inheritdoc */
|
/**@inheritdoc */
|
||||||
async _preCreate(data, options, user) {
|
async _preCreate(data, options, user) {
|
||||||
if ((await super._preCreate(data, options, user)) === false) return false;
|
if ((await super._preCreate(data, options, user)) === false) return false;
|
||||||
|
|
|
||||||
|
|
@ -263,6 +263,7 @@
|
||||||
},
|
},
|
||||||
"ActiveEffect": {
|
"ActiveEffect": {
|
||||||
"beastform": {},
|
"beastform": {},
|
||||||
|
"companion": {},
|
||||||
"horde": {}
|
"horde": {}
|
||||||
},
|
},
|
||||||
"Combat": {
|
"Combat": {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue