mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
* Changed experience schema field name from 'modifier' to 'total' to match useage in Character and Companion * Using 'signedString()'
96 lines
3.6 KiB
JavaScript
96 lines
3.6 KiB
JavaScript
import DHAdversarySettings from '../../applications/sheets-configs/adversary-settings.mjs';
|
|
import ActionField from '../fields/actionField.mjs';
|
|
import BaseDataActor from './base.mjs';
|
|
|
|
const resourceField = () =>
|
|
new foundry.data.fields.SchemaField({
|
|
value: new foundry.data.fields.NumberField({ initial: 0, integer: true }),
|
|
max: new foundry.data.fields.NumberField({ initial: 0, integer: true })
|
|
});
|
|
|
|
export default class DhpAdversary extends BaseDataActor {
|
|
static LOCALIZATION_PREFIXES = ['DAGGERHEART.ACTORS.Adversary'];
|
|
|
|
static get metadata() {
|
|
return foundry.utils.mergeObject(super.metadata, {
|
|
label: 'TYPES.Actor.adversary',
|
|
type: 'adversary',
|
|
settingSheet: DHAdversarySettings
|
|
});
|
|
}
|
|
|
|
static defineSchema() {
|
|
const fields = foundry.data.fields;
|
|
return {
|
|
tier: new fields.StringField({
|
|
required: true,
|
|
choices: CONFIG.DH.GENERAL.tiers,
|
|
initial: CONFIG.DH.GENERAL.tiers.tier1.id
|
|
}),
|
|
type: new fields.StringField({
|
|
required: true,
|
|
choices: CONFIG.DH.ACTOR.adversaryTypes,
|
|
initial: CONFIG.DH.ACTOR.adversaryTypes.standard.id
|
|
}),
|
|
description: new fields.StringField(),
|
|
motivesAndTactics: new fields.StringField(),
|
|
notes: new fields.HTMLField(),
|
|
difficulty: new fields.NumberField({ required: true, initial: 1, integer: true }),
|
|
hordeHp: new fields.NumberField({ required: true, initial: 1, integer: true }),
|
|
damageThresholds: new fields.SchemaField({
|
|
major: new fields.NumberField({ required: true, initial: 0, integer: true }),
|
|
severe: new fields.NumberField({ required: true, initial: 0, integer: true })
|
|
}),
|
|
resources: new fields.SchemaField({
|
|
hitPoints: resourceField(),
|
|
stress: resourceField()
|
|
}),
|
|
attack: new ActionField({
|
|
initial: {
|
|
name: 'Attack',
|
|
img: 'icons/skills/melee/blood-slash-foam-red.webp',
|
|
_id: foundry.utils.randomID(),
|
|
systemPath: 'attack',
|
|
type: 'attack',
|
|
range: 'melee',
|
|
target: {
|
|
type: 'any',
|
|
amount: 1
|
|
},
|
|
roll: {
|
|
type: 'weapon'
|
|
},
|
|
damage: {
|
|
parts: [
|
|
{
|
|
value: {
|
|
multiplier: 'flat'
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}),
|
|
experiences: new fields.TypedObjectField(
|
|
new fields.SchemaField({
|
|
name: new fields.StringField(),
|
|
total: new fields.NumberField({ required: true, integer: true, initial: 1 })
|
|
})
|
|
),
|
|
bonuses: new fields.SchemaField({
|
|
difficulty: new fields.SchemaField({
|
|
all: new fields.NumberField({ integer: true, initial: 0 }),
|
|
reaction: new fields.NumberField({ integer: true, initial: 0 })
|
|
})
|
|
})
|
|
};
|
|
}
|
|
|
|
get attackBonus() {
|
|
return this.attack.roll.bonus;
|
|
}
|
|
|
|
get features() {
|
|
return this.parent.items.filter(x => x.type === 'feature');
|
|
}
|
|
}
|