ref 249, Add Actor data (#277)

add actor data model
This commit is contained in:
reyzor1991
2025-10-17 11:01:47 +03:00
committed by GitHub
parent dced651355
commit 8a38be3a3b
13 changed files with 350 additions and 516 deletions
+56
View File
@@ -0,0 +1,56 @@
import HumanSkillsActorData from "./base/human-skills.js";
import CharacterData from "./base/character.js";
const { SchemaField, NumberField, StringField, BooleanField } =
foundry.data.fields;
export default class AgentData extends CharacterData {
static defineSchema() {
const superData = super.defineSchema();
return {
...superData,
...HumanSkillsActorData.defineSchema(),
schemaVersion: new NumberField({ initial: 1.0 }),
sanity: new SchemaField({
value: new NumberField({ initial: 100 }),
currentBreakingPoint: new NumberField({ initial: 101 }),
adaptations: new SchemaField({
violence: new SchemaField({
incident1: new BooleanField({ initial: false }),
incident2: new BooleanField({ initial: false }),
incident3: new BooleanField({ initial: false }),
}),
helplessness: new SchemaField({
incident1: new BooleanField({ initial: false }),
incident2: new BooleanField({ initial: false }),
incident3: new BooleanField({ initial: false }),
}),
}),
}),
physical: new SchemaField({
description: new StringField({
initial: "(Physical description of agent)",
}),
wounds: new StringField({ initial: "" }),
firstAidAttempted: new BooleanField({ initial: false }),
exhausted: new BooleanField({ initial: false }),
exhaustedPenalty: new NumberField({ initial: -20 }),
}),
biography: new SchemaField({
profession: new StringField({ initial: "" }),
employer: new StringField({ initial: "" }),
nationality: new StringField({ initial: "" }),
sex: new StringField({ initial: "" }),
age: new StringField({ initial: "" }),
education: new StringField({ initial: "" }),
}),
corruption: new SchemaField({
value: new NumberField({ initial: 0 }),
haveSeenTheYellowSign: new BooleanField({ initial: false }),
gift: new StringField({ initial: "" }),
insight: new StringField({ initial: "" }),
}),
};
}
}
+20
View File
@@ -0,0 +1,20 @@
import { resourceField, statisticsField } from "./general.js";
const { SchemaField } = foundry.data.fields;
export default class BaseActorData extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
health: resourceField(10, 10),
wp: resourceField(10, 10),
statistics: new SchemaField({
str: statisticsField(10),
con: statisticsField(10),
dex: statisticsField(10),
int: statisticsField(10),
pow: statisticsField(10),
cha: statisticsField(10),
}),
};
}
}
+11
View File
@@ -0,0 +1,11 @@
import BaseActorData from "./base-actor.js";
import SheetSettingsActorData from "./sheet-settings.js";
export default class CharacterData extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
...BaseActorData.defineSchema(),
...SheetSettingsActorData.defineSchema(),
};
}
}
+25
View File
@@ -0,0 +1,25 @@
const { SchemaField, NumberField, StringField, BooleanField } =
foundry.data.fields;
export function skillField(initialValue, label) {
return new SchemaField({
proficiency: new NumberField({ initial: initialValue }),
label: new StringField({ initial: label }),
failure: new BooleanField({ initial: false }),
});
}
export function resourceField(initialValue, initialMax) {
return new SchemaField({
min: new NumberField({ initial: 0 }),
value: new NumberField({ initial: initialValue }),
max: new NumberField({ initial: initialMax }),
});
}
export function statisticsField(initialValue) {
return new SchemaField({
value: new NumberField({ initial: initialValue }),
distinguishing_feature: new StringField({ initial: "" }),
});
}
+62
View File
@@ -0,0 +1,62 @@
import { skillField } from "./general.js";
const { SchemaField, NumberField, StringField, ArrayField, ObjectField } =
foundry.data.fields;
const { TypeDataModel } = foundry.abstract;
export default class HumanSkillsActorData extends TypeDataModel {
static defineSchema() {
return {
skills: new SchemaField({
accounting: skillField(10, "Accounting"),
alertness: skillField(20, "Alertness"),
anthropology: skillField(0, "Anthropology"),
archeology: skillField(0, "Archeology"),
artillery: skillField(0, "Artillery"),
athletics: skillField(30, "Athletics"),
bureaucracy: skillField(10, "Bureaucracy"),
computer_science: skillField(0, "Computer Science"),
criminology: skillField(10, "Criminology"),
demolitions: skillField(0, "Demolitions"),
disguise: skillField(10, "Disguise"),
dodge: skillField(30, "Dodge"),
drive: skillField(20, "Drive"),
firearms: skillField(20, "Firearms"),
first_aid: skillField(10, "First Aid"),
forensics: skillField(0, "Forensics"),
heavy_machiner: skillField(10, "Heavy Machinery"),
heavy_weapons: skillField(0, "Heavy Weapons"),
history: skillField(10, "History"),
humint: skillField(10, "HUMINT"),
law: skillField(0, "Law"),
medicine: skillField(0, "Medicine"),
melee_weapons: skillField(30, "Melee Weapons"),
navigate: skillField(10, "Navigate"),
occult: skillField(10, "Occult"),
persuade: skillField(20, "Persuade"),
pharmacy: skillField(0, "Pharmacy"),
psychotherapy: skillField(10, "Psychotherapy"),
ride: skillField(10, "Ride"),
search: skillField(20, "Search"),
sigint: skillField(0, "SIGINT"),
stealth: skillField(10, "Stealth"),
surgery: skillField(0, "Surgery"),
survival: skillField(10, "Survival"),
swim: skillField(20, "Swim"),
unarmed_combat: skillField(40, "Unarmed Combat"),
unnatural: new SchemaField({
proficiency: new NumberField({ initial: 0 }),
label: new StringField({ initial: "Unnatural" }),
}),
}),
typedSkills: new ObjectField({}),
specialTraining: new ArrayField(
new SchemaField({
attribute: new StringField(),
id: new StringField(),
name: new StringField(),
}),
),
};
}
}
+21
View File
@@ -0,0 +1,21 @@
const { SchemaField, NumberField, BooleanField } = foundry.data.fields;
const { TypeDataModel } = foundry.abstract;
export default class SheetSettingsActorData extends TypeDataModel {
static defineSchema() {
return {
settings: new SchemaField({
sorting: new SchemaField({
weaponSortAlphabetical: new BooleanField({ initial: false }),
armorSortAlphabetical: new BooleanField({ initial: false }),
gearSortAlphabetical: new BooleanField({ initial: false }),
tomeSortAlphabetical: new BooleanField({ initial: false }),
ritualSortAlphabetical: new BooleanField({ initial: false }),
}),
rolling: new SchemaField({
defaultPercentileModifier: new NumberField({ initial: 20 }),
}),
}),
};
}
}
@@ -0,0 +1,62 @@
import { skillField } from "./general.js";
const { SchemaField, NumberField, StringField, ArrayField, ObjectField } =
foundry.data.fields;
const { TypeDataModel } = foundry.abstract;
export default class UnnaturalSkillsActorData extends TypeDataModel {
static defineSchema() {
return {
skills: new SchemaField({
accounting: skillField(0, "Accounting"),
alertness: skillField(50, "Alertness"),
anthropology: skillField(0, "Anthropology"),
archeology: skillField(0, "Archeology"),
artillery: skillField(0, "Artillery"),
athletics: skillField(50, "Athletics"),
bureaucracy: skillField(0, "Bureaucracy"),
computer_science: skillField(0, "Computer Science"),
criminology: skillField(0, "Criminology"),
demolitions: skillField(0, "Demolitions"),
disguise: skillField(0, "Disguise"),
dodge: skillField(50, "Dodge"),
drive: skillField(0, "Drive"),
firearms: skillField(0, "Firearms"),
first_aid: skillField(0, "First Aid"),
forensics: skillField(0, "Forensics"),
heavy_machiner: skillField(0, "Heavy Machinery"),
heavy_weapons: skillField(0, "Heavy Weapons"),
history: skillField(0, "History"),
humint: skillField(0, "HUMINT"),
law: skillField(0, "Law"),
medicine: skillField(0, "Medicine"),
melee_weapons: skillField(50, "Melee Weapons"),
navigate: skillField(0, "Navigate"),
occult: skillField(0, "Occult"),
persuade: skillField(0, "Persuade"),
pharmacy: skillField(0, "Pharmacy"),
psychotherapy: skillField(0, "Psychotherapy"),
ride: skillField(0, "Ride"),
search: skillField(0, "Search"),
sigint: skillField(0, "SIGINT"),
stealth: skillField(50, "Stealth"),
surgery: skillField(0, "Surgery"),
survival: skillField(0, "Survival"),
swim: skillField(0, "Swim"),
unarmed_combat: skillField(50, "Unarmed Combat"),
unnatural: new SchemaField({
proficiency: new NumberField({ initial: 0 }),
label: new StringField({ initial: "Unnatural" }),
}),
}),
typedSkills: new ObjectField({}),
specialTraining: new ArrayField(
new SchemaField({
attribute: new StringField(),
id: new StringField(),
name: new StringField(),
}),
),
};
}
}
+24
View File
@@ -0,0 +1,24 @@
import HumanSkillsActorData from "./base/human-skills.js";
import CharacterData from "./base/character.js";
const { SchemaField, NumberField, StringField, BooleanField } =
foundry.data.fields;
export default class NPCData extends CharacterData {
static defineSchema() {
const superData = super.defineSchema();
return {
...superData,
...HumanSkillsActorData.defineSchema(),
schemaVersion: new NumberField({ initial: 1.0 }),
sanity: new SchemaField({
value: new NumberField({ initial: 100 }),
currentBreakingPoint: new NumberField({ initial: 101 }),
}),
notes: new StringField({ initial: "" }),
shortDescription: new StringField({ initial: "" }),
showUntrainedSkills: new BooleanField({ initial: true }),
};
}
}
+25
View File
@@ -0,0 +1,25 @@
import UnnaturalSkillsActorData from "./base/unnatural-skills.js";
import CharacterData from "./base/character.js";
const { SchemaField, NumberField, StringField, BooleanField } =
foundry.data.fields;
export default class UnnaturalData extends CharacterData {
static defineSchema() {
const superData = super.defineSchema();
return {
...superData,
...UnnaturalSkillsActorData.defineSchema(),
sanity: new SchemaField({
notes: new StringField({ initial: "" }),
failedLoss: new StringField({ initial: "1D4" }),
successLoss: new StringField({ initial: "1" }),
}),
schemaVersion: new NumberField({ initial: 1.0 }),
notes: new StringField({ initial: "" }),
shortDescription: new StringField({ initial: "" }),
showUntrainedSkills: new BooleanField({ initial: true }),
};
}
}
+23
View File
@@ -0,0 +1,23 @@
import SheetSettingsActorData from "./base/sheet-settings.js";
const { SchemaField, NumberField, StringField, ArrayField } =
foundry.data.fields;
export default class VehicleData extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
...SheetSettingsActorData.defineSchema(),
name: new StringField({ initial: "" }),
description: new StringField({ initial: "" }),
shortDescription: new StringField({ initial: "" }),
health: new SchemaField({
value: new NumberField({ initial: 10 }),
min: new NumberField({ initial: 0 }),
max: new NumberField({ initial: 10 }),
}),
speed: new StringField({ initial: "" }),
expense: new StringField({ initial: "Standard" }),
passengers: new ArrayField(new StringField()),
};
}
}