ds4/src/module/actor/actor-data.ts

66 lines
1.6 KiB
TypeScript
Raw Normal View History

export interface DS4ActorDataType {
attributes: DS4ActorDataAttributes;
traits: DS4ActorDataTraits;
combatValues: DS4ActorDataCombatValues;
baseInfo: DS4ActorDataBaseInfo;
progression: DS4ActorDataProgression;
2020-12-28 15:51:00 +01:00
}
interface DS4ActorDataAttributes {
body: BodyAttribute;
mobility: ModifiableData<number>;
mind: ModifiableData<number>;
2020-12-28 15:51:00 +01:00
}
export interface ModifiableData<T> {
base: T;
mod: T;
total?: T;
}
interface UsableResource<T> {
total: T;
used: T;
}
interface CurrentData<T> extends ModifiableData<T> {
current: T;
2020-12-28 15:51:00 +01:00
}
// Blueprint in case we need more detailed differentiation
type BodyAttribute = ModifiableData<number>;
interface DS4ActorDataTraits {
strength: ModifiableData<number>;
constitution: ModifiableData<number>;
agility: ModifiableData<number>;
dexterity: ModifiableData<number>;
intellect: ModifiableData<number>;
aura: ModifiableData<number>;
}
interface DS4ActorDataCombatValues {
hitPoints: CurrentData<number>;
defense: ModifiableData<number>;
initiative: ModifiableData<number>;
movement: ModifiableData<number>;
meleeAttack: ModifiableData<number>;
rangedAttack: ModifiableData<number>;
spellcasting: ModifiableData<number>;
targetedSpellcasting: ModifiableData<number>;
}
interface DS4ActorDataBaseInfo {
race: string;
class: string;
heroClass: string;
racialAbilities: string;
}
interface DS4ActorDataProgression {
level: number;
experiencePoints: number;
2020-12-30 21:34:12 +01:00
talentPoints: UsableResource<number>;
progressPoints: UsableResource<number>;
2020-12-28 15:51:00 +01:00
}