Merge pull request #1 from SobranDM/feat/foundry-v14-updates
Feat/foundry v14 updates
This commit is contained in:
@@ -15,3 +15,6 @@ deltagreen.lock
|
||||
|
||||
# Ignore npm modules
|
||||
node_modules
|
||||
|
||||
# Ignore Foundry VTT Reference Files
|
||||
reference/
|
||||
@@ -0,0 +1,14 @@
|
||||
import defineBaseItemSystemFields from "./base-fields.js";
|
||||
|
||||
const { NumberField, StringField, BooleanField } = foundry.data.fields;
|
||||
|
||||
export default class ArmorItemData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
...defineBaseItemSystemFields(),
|
||||
protection: new NumberField({ initial: 3, integer: true }),
|
||||
equipped: new BooleanField({ initial: true }),
|
||||
expense: new StringField({ initial: "Standard" }),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
const { StringField } = foundry.data.fields;
|
||||
|
||||
/**
|
||||
* Shared system fields for all Delta Green item types (from legacy template base).
|
||||
* Item display name lives on the document (`Item#name`), not in system.
|
||||
*/
|
||||
export default function defineBaseItemSystemFields() {
|
||||
return {
|
||||
description: new StringField({ initial: "" }),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import defineBaseItemSystemFields from "./base-fields.js";
|
||||
|
||||
const { NumberField, StringField, BooleanField } = foundry.data.fields;
|
||||
|
||||
export default class BondItemData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
...defineBaseItemSystemFields(),
|
||||
score: new NumberField({ initial: 10, integer: true }),
|
||||
relationship: new StringField({ initial: "?" }),
|
||||
hasBeenDamagedSinceLastHomeScene: new BooleanField({ initial: false }),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import defineBaseItemSystemFields from "./base-fields.js";
|
||||
|
||||
const { StringField, BooleanField } = foundry.data.fields;
|
||||
|
||||
export default class GearItemData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
...defineBaseItemSystemFields(),
|
||||
equipped: new BooleanField({ initial: true }),
|
||||
expense: new StringField({ initial: "Standard" }),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import defineBaseItemSystemFields from "./base-fields.js";
|
||||
|
||||
const { StringField, BooleanField } = foundry.data.fields;
|
||||
|
||||
export default class MotivationItemData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
...defineBaseItemSystemFields(),
|
||||
disorder: new StringField({ initial: "" }),
|
||||
crossedOut: new BooleanField({ initial: false }),
|
||||
disorderCured: new BooleanField({ initial: false }),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import defineBaseItemSystemFields from "./base-fields.js";
|
||||
|
||||
const { NumberField, StringField, BooleanField, SchemaField } =
|
||||
foundry.data.fields;
|
||||
|
||||
export default class RitualItemData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
...defineBaseItemSystemFields(),
|
||||
studyTime: new StringField({ initial: "" }),
|
||||
sanity: new SchemaField({
|
||||
notes: new StringField({ initial: "" }),
|
||||
failedLoss: new StringField({ initial: "1D10" }),
|
||||
successLoss: new StringField({ initial: "0" }),
|
||||
}),
|
||||
learnedSanity: new SchemaField({
|
||||
notes: new StringField({ initial: "" }),
|
||||
failedLoss: new StringField({ initial: "1D10" }),
|
||||
successLoss: new StringField({ initial: "0" }),
|
||||
}),
|
||||
unnaturalSkillIncrease: new NumberField({ initial: 1, integer: true }),
|
||||
activationCosts: new StringField({ initial: "" }),
|
||||
activationTime: new StringField({ initial: "" }),
|
||||
complexity: new StringField({ initial: "Simple" }),
|
||||
handlerNotes: new StringField({ initial: "" }),
|
||||
revealed: new BooleanField({ initial: false }),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import defineBaseItemSystemFields from "./base-fields.js";
|
||||
|
||||
const { NumberField, StringField, BooleanField, SchemaField } =
|
||||
foundry.data.fields;
|
||||
|
||||
export default class TomeItemData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
...defineBaseItemSystemFields(),
|
||||
language: new StringField({ initial: "" }),
|
||||
studyTime: new StringField({ initial: "" }),
|
||||
unnaturalSkillIncrease: new NumberField({ initial: 5, integer: true }),
|
||||
occultSkillIncrease: new NumberField({ initial: 3, integer: true }),
|
||||
sanity: new SchemaField({
|
||||
notes: new StringField({ initial: "" }),
|
||||
failedLoss: new StringField({ initial: "1D6" }),
|
||||
successLoss: new StringField({ initial: "1D4" }),
|
||||
}),
|
||||
handlerNotes: new StringField({ initial: "" }),
|
||||
revealed: new BooleanField({ initial: false }),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import defineBaseItemSystemFields from "./base-fields.js";
|
||||
|
||||
const { NumberField, StringField, BooleanField } = foundry.data.fields;
|
||||
|
||||
export default class WeaponItemData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
...defineBaseItemSystemFields(),
|
||||
skill: new StringField({ initial: "" }),
|
||||
skillModifier: new NumberField({ initial: 0, integer: true }),
|
||||
customSkillTarget: new NumberField({ initial: 50, integer: true }),
|
||||
range: new StringField({ initial: "10M" }),
|
||||
damage: new StringField({ initial: "1D8" }),
|
||||
armorPiercing: new NumberField({ initial: 0, integer: true }),
|
||||
lethality: new NumberField({ initial: 0, integer: true }),
|
||||
isLethal: new BooleanField({ initial: false }),
|
||||
killRadius: new StringField({ initial: "N/A" }),
|
||||
ammo: new StringField({ initial: "" }),
|
||||
expense: new StringField({ initial: "Standard" }),
|
||||
equipped: new BooleanField({ initial: true }),
|
||||
};
|
||||
}
|
||||
}
|
||||
+18
-1
@@ -25,18 +25,35 @@ import AgentData from "./data/actor/agent.js";
|
||||
import UnnaturalData from "./data/actor/unnatural.js";
|
||||
import NPCData from "./data/actor/npc.js";
|
||||
import VehicleData from "./data/actor/vehicle.js";
|
||||
import WeaponItemData from "./data/item/weapon.js";
|
||||
import ArmorItemData from "./data/item/armor.js";
|
||||
import MotivationItemData from "./data/item/motivation.js";
|
||||
import BondItemData from "./data/item/bond.js";
|
||||
import GearItemData from "./data/item/gear.js";
|
||||
import TomeItemData from "./data/item/tome.js";
|
||||
import RitualItemData from "./data/item/ritual.js";
|
||||
|
||||
const { Actors, Items } = foundry.documents.collections;
|
||||
|
||||
Hooks.once("init", async () => {
|
||||
Object.assign(CONFIG.Actor.dataModels, {
|
||||
// The keys are the types defined in our template.json
|
||||
// The keys are the types defined in system.json documentTypes.Actor
|
||||
agent: AgentData,
|
||||
unnatural: UnnaturalData,
|
||||
npc: NPCData,
|
||||
vehicle: VehicleData,
|
||||
});
|
||||
|
||||
Object.assign(CONFIG.Item.dataModels, {
|
||||
weapon: WeaponItemData,
|
||||
armor: ArmorItemData,
|
||||
motivation: MotivationItemData,
|
||||
bond: BondItemData,
|
||||
gear: GearItemData,
|
||||
tome: TomeItemData,
|
||||
ritual: RitualItemData,
|
||||
});
|
||||
|
||||
game.deltagreen = {
|
||||
DeltaGreenActor,
|
||||
DeltaGreenItem,
|
||||
|
||||
+11
-2
@@ -18,8 +18,8 @@
|
||||
"version": "dev",
|
||||
"compatibility": {
|
||||
"minimum": "13",
|
||||
"verified": "13",
|
||||
"maximum": "13"
|
||||
"verified": "14",
|
||||
"maximum": "14"
|
||||
},
|
||||
"flags": {
|
||||
"hotReload": {
|
||||
@@ -207,6 +207,15 @@
|
||||
"unnatural": {},
|
||||
"npc": {},
|
||||
"vehicle": {}
|
||||
},
|
||||
"Item": {
|
||||
"weapon": {},
|
||||
"armor": {},
|
||||
"motivation": {},
|
||||
"bond": {},
|
||||
"gear": {},
|
||||
"tome": {},
|
||||
"ritual": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-91
@@ -1,91 +1 @@
|
||||
{
|
||||
"Item": {
|
||||
"types": [
|
||||
"weapon",
|
||||
"armor",
|
||||
"motivation",
|
||||
"bond",
|
||||
"gear",
|
||||
"tome",
|
||||
"ritual"
|
||||
],
|
||||
"templates": {
|
||||
"base": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"weapon": {
|
||||
"templates": ["base"],
|
||||
"skill": "",
|
||||
"skillModifier": 0,
|
||||
"customSkillTarget": 50,
|
||||
"range": "10M",
|
||||
"damage": "1D8",
|
||||
"armorPiercing": 0,
|
||||
"lethality": 0,
|
||||
"isLethal": false,
|
||||
"killRadius": "N/A",
|
||||
"ammo": "",
|
||||
"expense": "Standard",
|
||||
"equipped": true
|
||||
},
|
||||
"armor": {
|
||||
"templates": ["base"],
|
||||
"protection": 3,
|
||||
"equipped": true,
|
||||
"expense": "Standard"
|
||||
},
|
||||
"motivation": {
|
||||
"templates": ["base"],
|
||||
"disorder": "",
|
||||
"crossedOut": false,
|
||||
"disorderCured": false
|
||||
},
|
||||
"bond": {
|
||||
"templates": ["base"],
|
||||
"score": 10,
|
||||
"relationship": "?",
|
||||
"hasBeenDamagedSinceLastHomeScene": false
|
||||
},
|
||||
"gear": {
|
||||
"templates": ["base"],
|
||||
"equipped": true,
|
||||
"expense": "Standard"
|
||||
},
|
||||
"tome": {
|
||||
"templates": ["base"],
|
||||
"language": "",
|
||||
"studyTime": "",
|
||||
"unnaturalSkillIncrease": 5,
|
||||
"occultSkillIncrease": 3,
|
||||
"sanity": {
|
||||
"notes": "",
|
||||
"failedLoss": "1D6",
|
||||
"successLoss": "1D4"
|
||||
},
|
||||
"handlerNotes": "",
|
||||
"revealed": false
|
||||
},
|
||||
"ritual": {
|
||||
"templates": ["base"],
|
||||
"studyTime": "",
|
||||
"sanity": {
|
||||
"notes": "",
|
||||
"failedLoss": "1D10",
|
||||
"successLoss": "0"
|
||||
},
|
||||
"learnedSanity": {
|
||||
"notes": "",
|
||||
"failedLoss": "1D10",
|
||||
"successLoss": "0"
|
||||
},
|
||||
"unnaturalSkillIncrease": 1,
|
||||
"activationCosts": "",
|
||||
"activationTime": "",
|
||||
"complexity": "Simple",
|
||||
"handlerNotes": "",
|
||||
"revealed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
{}
|
||||
|
||||
Reference in New Issue
Block a user