mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-06-06 04:44:16 +02:00
Fix issues with companions
This commit is contained in:
parent
6d09c5504d
commit
899f286def
6 changed files with 25 additions and 13 deletions
|
|
@ -57,7 +57,7 @@ const companionBaseResources = Object.freeze({
|
||||||
stress: {
|
stress: {
|
||||||
id: 'stress',
|
id: 'stress',
|
||||||
initial: 0,
|
initial: 0,
|
||||||
max: 0,
|
max: 3,
|
||||||
reverse: true,
|
reverse: true,
|
||||||
label: 'DAGGERHEART.GENERAL.stress'
|
label: 'DAGGERHEART.GENERAL.stress'
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -189,6 +189,9 @@ export default class DhpAdversary extends DhCreature {
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
this.attack.roll.isStandardAttack = true;
|
this.attack.roll.isStandardAttack = true;
|
||||||
|
|
||||||
|
// Clamp resources (must be done last to ensure all updates occur)
|
||||||
|
this.resources.clamp();
|
||||||
}
|
}
|
||||||
|
|
||||||
_getTags() {
|
_getTags() {
|
||||||
|
|
|
||||||
|
|
@ -778,6 +778,8 @@ export default class DhCharacter extends DhCreature {
|
||||||
|
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
|
|
||||||
|
this.resources.hope.max -= this.scars;
|
||||||
if (this.companion) {
|
if (this.companion) {
|
||||||
for (let levelKey in this.companion.system.levelData.levelups) {
|
for (let levelKey in this.companion.system.levelData.levelups) {
|
||||||
const level = this.companion.system.levelData.levelups[levelKey];
|
const level = this.companion.system.levelData.levelups[levelKey];
|
||||||
|
|
@ -791,7 +793,6 @@ export default class DhCharacter extends DhCreature {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.resources.hope.max -= this.scars;
|
|
||||||
this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait;
|
this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait;
|
||||||
|
|
||||||
this.resources.armor = {
|
this.resources.armor = {
|
||||||
|
|
@ -801,6 +802,9 @@ export default class DhCharacter extends DhCreature {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.attack.damage.parts.hitPoints.value.custom.formula = `@prof${this.basicAttackDamageDice}${this.rules.attack.damage.bonus ? ` + ${this.rules.attack.damage.bonus}` : ''}`;
|
this.attack.damage.parts.hitPoints.value.custom.formula = `@prof${this.basicAttackDamageDice}${this.rules.attack.damage.bonus ? ` + ${this.rules.attack.damage.bonus}` : ''}`;
|
||||||
|
|
||||||
|
// Clamp resources (must be done last to ensure all updates occur)
|
||||||
|
this.resources.clamp();
|
||||||
}
|
}
|
||||||
|
|
||||||
getRollData() {
|
getRollData() {
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ export default class DhCompanion extends DhCreature {
|
||||||
for (let selection of level.selections) {
|
for (let selection of level.selections) {
|
||||||
switch (selection.type) {
|
switch (selection.type) {
|
||||||
case 'hope':
|
case 'hope':
|
||||||
this.resources.hope += selection.value;
|
this.resources.hope.max += selection.value;
|
||||||
break;
|
break;
|
||||||
case 'vicious':
|
case 'vicious':
|
||||||
if (selection.data[0] === 'damage') {
|
if (selection.data[0] === 'damage') {
|
||||||
|
|
@ -183,6 +183,9 @@ export default class DhCompanion extends DhCreature {
|
||||||
return acc;
|
return acc;
|
||||||
}, this.partner.system.companionData.levelupChoices);
|
}, this.partner.system.companionData.levelupChoices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clamp resources (must be done last to ensure all updates occur)
|
||||||
|
this.resources.clamp();
|
||||||
}
|
}
|
||||||
|
|
||||||
async _preUpdate(changes, options, userId) {
|
async _preUpdate(changes, options, userId) {
|
||||||
|
|
|
||||||
|
|
@ -60,14 +60,4 @@ export default class DhCreature extends BaseDataActor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
prepareDerivedData() {
|
|
||||||
const minLimitResource = resource => {
|
|
||||||
if (resource) resource.value = Math.min(resource.value, resource.max);
|
|
||||||
};
|
|
||||||
|
|
||||||
minLimitResource(this.resources.stress);
|
|
||||||
minLimitResource(this.resources.hitPoints);
|
|
||||||
minLimitResource(this.resources.hope);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,18 @@ class ResourcesField extends fields.TypedObjectField {
|
||||||
value.isReversed = resources[key].reverse;
|
value.isReversed = resources[key].reverse;
|
||||||
value.max = typeof resource.max === 'number' ? (value.max ?? resource.max) : null;
|
value.max = typeof resource.max === 'number' ? (value.max ?? resource.max) : null;
|
||||||
}
|
}
|
||||||
|
Object.defineProperty(data, 'clamp', {
|
||||||
|
value: function () {
|
||||||
|
for (const key of Object.keys(this)) {
|
||||||
|
const resource = this[key];
|
||||||
|
if (typeof resource?.max === 'number') {
|
||||||
|
resource.value = Math.clamp(resource.value, 0, resource.max);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enumerable: false
|
||||||
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue