export interface DS4ActorDataType { attributes: DS4ActorDataAttributes; traits: DS4ActorDataTraits; combatValues: DS4ActorDataCombatValues; baseInfo: DS4ActorDataBaseInfo; progression: DS4ActorDataProgression; language: DS4ActorDataLanguage; profile: DS4ActorDataProfile; } interface DS4ActorDataAttributes { body: BodyAttribute; mobility: ModifiableData; mind: ModifiableData; } export interface ModifiableData { base: T; mod: T; total?: T; } interface UsableResource { total: T; used: T; } interface ResourceData extends ModifiableData { value: T; max?: T; } // Blueprint in case we need more detailed differentiation type BodyAttribute = ModifiableData; interface DS4ActorDataTraits { strength: ModifiableData; constitution: ModifiableData; agility: ModifiableData; dexterity: ModifiableData; intellect: ModifiableData; aura: ModifiableData; } interface DS4ActorDataCombatValues { hitPoints: ResourceData; defense: ModifiableData; initiative: ModifiableData; movement: ModifiableData; meleeAttack: ModifiableData; rangedAttack: ModifiableData; spellcasting: ModifiableData; targetedSpellcasting: ModifiableData; } interface DS4ActorDataBaseInfo { race: string; class: string; heroClass: string; culture: string; } interface DS4ActorDataProgression { level: number; experiencePoints: number; talentPoints: UsableResource; progressPoints: UsableResource; } interface DS4ActorDataLanguage { languages: string; alphabets: string; } interface DS4ActorDataProfile { gender: string; birthday: string; birthplace: string; age: number; height: number; hairColor: string; weight: number; eyeColor: string; specialCharacteristics: string; }