update system
parent
1a83d92bf8
commit
02a5478cd1
17
src/main.mjs
17
src/main.mjs
|
|
@ -1,7 +1,9 @@
|
|||
import { PlayerCharacterDataModel } from "./module/character/character.mjs";
|
||||
import { DsaActor } from "./module/Actors/dsa-actor.mjs";
|
||||
import { Skill } from "./module/Items/Skill.mjs"
|
||||
import { SkillSheet } from "./module/Items/SkillSheet.mjs";
|
||||
import { Skill } from "./module/Items/skill.mjs"
|
||||
import { SkillSheet } from "./module/Items/skillSheet.mjs";
|
||||
import { Spell } from "./module/Items/spell.mjs";
|
||||
import { SpellSheet } from "./module/Items/spellSheet.mjs";
|
||||
|
||||
Hooks.once("init", () => {
|
||||
|
||||
|
|
@ -14,14 +16,21 @@ Hooks.once("init", () => {
|
|||
};
|
||||
|
||||
CONFIG.Item.dataModels = {
|
||||
skills: Skill
|
||||
skills: Skill,
|
||||
spells: Spell
|
||||
}
|
||||
|
||||
console.log("DSA 4.1 is ready for development!")
|
||||
|
||||
// Register sheet application classes
|
||||
Items.registerSheet('dsa41.skill', SkillSheet, {
|
||||
types: ["Skill"],
|
||||
makeDefault: true,
|
||||
label: 'DSA41.SheetLabels.Item',
|
||||
label: 'DSA41.SkillLabels.Item',
|
||||
});
|
||||
Items.registerSheet('dsa41.spell', SpellSheet, {
|
||||
types: ["Spell"],
|
||||
makeDefault: true,
|
||||
label: 'DSA41.SpellLabels.Item',
|
||||
});
|
||||
})
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
const { BooleanField, NumberField, SchemaField, SetField, StringField, HTMLField } = foundry.data.fields;
|
||||
|
||||
export class Skill extends foundry.abstract.TypeDataModel {
|
||||
|
||||
static defineSchema() {
|
||||
return {
|
||||
name: new StringField({ required: true }),
|
||||
category: new StringField({ required: true }),
|
||||
attributeReference1: new StringField(), // References one of the eight attributes by name
|
||||
attributeReference2: new StringField(), // References one of the eight attributes by name
|
||||
attributeReference3: new StringField(), // References one of the eight attributes by name
|
||||
requisite: new StringField(), // Required skills at a given level
|
||||
text: new HTMLField(),
|
||||
handicapValue: new NumberField(), // BE-X
|
||||
complexity: new NumberField(), // In case of languages
|
||||
derivedAttribute1: new NumberField(),
|
||||
derivedAttribute2: new NumberField(),
|
||||
derivedAttribute3: new NumberField(),
|
||||
derivedSkillValue: new NumberField(), // TaW
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
const { BooleanField, ArrayField, NumberField, SchemaField, StringField, HTMLField } = foundry.data.fields;
|
||||
|
||||
export class Skill extends Item {
|
||||
|
||||
static defineSchema() {
|
||||
return {
|
||||
name: new StringField({ required: true }),
|
||||
gruppe: new StringField({ required: true }),
|
||||
probe: new ArrayField(new StringField(), { exact: 3 }), // References one of the eight attributes by name
|
||||
voraussetzung: new SchemaField({
|
||||
talent: new StringField({ model: Skill }),
|
||||
wert: new NumberField(),
|
||||
}), // Required skills at a given level
|
||||
talent: new HTMLField(),
|
||||
behinderung: new NumberField(), // BE-X
|
||||
komplexität: new NumberField(), // In case of languages
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Augment the basic Item data model with additional dynamic data.
|
||||
*/
|
||||
prepareData() { }
|
||||
|
||||
/**
|
||||
* Prepare a data object which is passed to any Roll formulas which are created related to this Item
|
||||
* @private
|
||||
*/
|
||||
getRollData() { }
|
||||
|
||||
/**
|
||||
* Handle clickable rolls.
|
||||
* @param {Event} event The originating click event
|
||||
* @private
|
||||
*/
|
||||
async roll() { }
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@ export class SkillSheet extends ItemSheet {
|
|||
|
||||
/** @override */
|
||||
get template() {
|
||||
return `systems/DSA_4-1/templates/item/item-${this.item.type}-sheet.hbs`;
|
||||
return `systems/DSA_4-1/templates/item/item-Skill-sheet.hbs`;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
|
|
@ -35,13 +35,13 @@ export class SkillSheet extends ItemSheet {
|
|||
context.system = skillData.system;
|
||||
context.flags = skillData.flags;
|
||||
context.categoryOptions = {
|
||||
combat: "Kampf",
|
||||
physical: "Körperlich",
|
||||
social: "Gesellschaft",
|
||||
survival: "Natur",
|
||||
knowledge: "Wissen",
|
||||
languages: "Sprache und Schriften",
|
||||
crafting: "Handwerk"
|
||||
kampf: "Kampf",
|
||||
körperlich: "Körperlich",
|
||||
gesellschaft: "Gesellschaft",
|
||||
natur: "Natur",
|
||||
wissen: "Wissen",
|
||||
sprachen: "Sprache und Schriften",
|
||||
handwerk: "Handwerk"
|
||||
}
|
||||
|
||||
return context;
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
const { BooleanField, NumberField, SchemaField, ArrayField, StringField, HTMLField } = foundry.data.fields;
|
||||
|
||||
export class Spell extends Item {
|
||||
|
||||
static defineSchema() {
|
||||
return {
|
||||
seite: new NumberField(),
|
||||
name: new StringField({ required: true }),
|
||||
probe: new ArrayField({ required: true, exact: 3 }),
|
||||
probeMod: new StringField(),
|
||||
technik: new StringField(),
|
||||
zauberdauer: new StringField(),
|
||||
wirkung: new StringField(),
|
||||
kosten: new StringField(),
|
||||
reichweite: new StringField({ required: true }),
|
||||
wirkungsdauer: new StringField({ required: true }),
|
||||
modifikationen: new StringField({ required: true }),
|
||||
reversalis: new StringField(),
|
||||
antimagie: new StringField(),
|
||||
merkmal: new StringField(),
|
||||
komplexität: new StringField(),
|
||||
repräsentation: new StringField(),
|
||||
info: new StringField()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Augment the basic Item data model with additional dynamic data.
|
||||
*/
|
||||
prepareData() { }
|
||||
|
||||
/**
|
||||
* Prepare a data object which is passed to any Roll formulas which are created related to this Item
|
||||
* @private
|
||||
*/
|
||||
getRollData() { }
|
||||
|
||||
/**
|
||||
* Handle clickable rolls.
|
||||
* @param {Event} event The originating click event
|
||||
* @private
|
||||
*/
|
||||
async roll() { }
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
export class SpellSheet extends ItemSheet {
|
||||
/**@override */
|
||||
static get defaultOptions() {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ['dsa41', 'sheet', 'item', 'spell'],
|
||||
width: 520,
|
||||
height: 480,
|
||||
tabs: [
|
||||
{
|
||||
navSelector: '.sheet-tabs',
|
||||
contentSelector: '.sheet-body',
|
||||
initial: 'meta',
|
||||
},
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
/** @override */
|
||||
get template() {
|
||||
return `systems/DSA_4-1/templates/item/item-Spell-sheet.hbs`;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
getData() {
|
||||
// Retrieve the data structure from the base sheet. You can inspect or log
|
||||
// the context variable to see the structure, but some key properties for
|
||||
// sheets are the actor object, the data object, whether or not it's
|
||||
// editable, the items array, and the effects array.
|
||||
const context = super.getData();
|
||||
|
||||
// Use a safe clone of the actor data for further operations.
|
||||
const skillData = context.data;
|
||||
|
||||
// Add the actor's data to context.data for easier access, as well as flags.
|
||||
context.system = skillData.system;
|
||||
context.flags = skillData.flags;
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.isEditable) return;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,11 @@
|
|||
import { Skill } from "../Items/skill.mjs";
|
||||
import { Spell } from "../Items/spell.mjs";
|
||||
|
||||
const {
|
||||
SchemaField, NumberField, StringField, ArrayField, BooleanField,
|
||||
SchemaField, NumberField, StringField, ArrayField, BooleanField, EmbeddedCollectionField,
|
||||
} = foundry.data.fields;
|
||||
|
||||
export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
||||
export class PlayerCharacterDataModel extends Actor {
|
||||
|
||||
static defineSchema() {
|
||||
return {
|
||||
|
|
@ -40,20 +43,8 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
|||
so: new NumberField({ required: true, integer: true }),
|
||||
gilde: new StringField(),
|
||||
}),
|
||||
talente: new ArrayField(new SchemaField({
|
||||
name: new StringField(),
|
||||
taw: new NumberField({required: true, integer: true }),
|
||||
kategorie: new StringField(),
|
||||
probe: new StringField(),
|
||||
})),
|
||||
zauber: new ArrayField(new SchemaField({
|
||||
name: new StringField(),
|
||||
rep: new StringField(),
|
||||
merkmale: new ArrayField(new StringField()),
|
||||
hauszauber: new BooleanField(),
|
||||
zfw: new NumberField({ required: true, integer: true }),
|
||||
quelle: new StringField(),
|
||||
})),
|
||||
talente: new EmbeddedCollectionField( { model: Skill }),
|
||||
zauber: new EmbeddedCollectionField( { model: Spell }),
|
||||
liturgien: new ArrayField(new SchemaField({
|
||||
name: new StringField(),
|
||||
})),
|
||||
|
|
|
|||
155
src/system.json
155
src/system.json
|
|
@ -7,48 +7,119 @@
|
|||
"minimum": 12,
|
||||
"verified": 13
|
||||
},
|
||||
"authors": [{
|
||||
"name": "GrandpaPoppy"
|
||||
},{
|
||||
"name": "ParanoidSpectre"
|
||||
},{
|
||||
"name": "macniel"
|
||||
}],
|
||||
"esmodules": ["main.mjs"],
|
||||
"styles": ["style/styles.css"],
|
||||
"packs": [{
|
||||
"name": "talente",
|
||||
"label": "Basistalente",
|
||||
"type": "Item"
|
||||
},{
|
||||
"name": "zauber",
|
||||
"label": "Basiszauber",
|
||||
"type": "Item"
|
||||
},{
|
||||
"name": "liturgien",
|
||||
"label": "Basisliturgien",
|
||||
"type": "Item"
|
||||
},{
|
||||
"name": "sonderfertigkeiten",
|
||||
"label": "Basissonderfertigkeiten",
|
||||
"type": "Item"
|
||||
}],
|
||||
"languages": [{
|
||||
"lang": "de",
|
||||
"name": "Deutsch",
|
||||
"path": "lang/de.json"
|
||||
}],
|
||||
"documentTypes": {
|
||||
"Actor": {
|
||||
"character": {}
|
||||
},
|
||||
"Item": {
|
||||
"skill": {
|
||||
"stringFields": ["name", "category", "attributeReference1", "attributeReference2", "attributeReference3", "requisite"],
|
||||
"numberFields": ["handicapValue", "complexity"],
|
||||
"htmlFields": ["text"]
|
||||
"authors": [
|
||||
{
|
||||
"name": "GrandpaPoppy"
|
||||
},
|
||||
{
|
||||
"name": "ParanoidSpectre"
|
||||
},
|
||||
{
|
||||
"name": "macniel"
|
||||
}
|
||||
],
|
||||
"esmodules": [
|
||||
"main.mjs"
|
||||
],
|
||||
"styles": [
|
||||
"style/styles.css"
|
||||
],
|
||||
"packs": [
|
||||
{
|
||||
"name": "Skill",
|
||||
"label": "Basistalente",
|
||||
"system": "DSA_4-1",
|
||||
"type": "Item",
|
||||
"path": "packs/talente",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "Spells",
|
||||
"label": "Basiszauber",
|
||||
"system": "DSA_4-1",
|
||||
"type": "Item",
|
||||
"path": "packs/zauber",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "liturgien",
|
||||
"label": "Basisliturgien",
|
||||
"system": "DSA_4-1",
|
||||
"type": "Item"
|
||||
},
|
||||
{
|
||||
"name": "sonderfertigkeiten",
|
||||
"label": "Basissonderfertigkeiten",
|
||||
"system": "DSA_4-1",
|
||||
"type": "Item"
|
||||
}
|
||||
],
|
||||
"packFolders": [
|
||||
{
|
||||
"name": "Basiszauber",
|
||||
"color": "#801020",
|
||||
"sorting": "m",
|
||||
"packs": [
|
||||
"Spells"
|
||||
]
|
||||
}
|
||||
],
|
||||
"languages": [
|
||||
{
|
||||
"lang": "de",
|
||||
"name": "Deutsch",
|
||||
"path": "lang/de.json"
|
||||
}
|
||||
],
|
||||
"documentTypes": {
|
||||
"Actor": {
|
||||
"character": {}
|
||||
},
|
||||
"Item": {
|
||||
"Skill": {
|
||||
"stringFields": [
|
||||
"name",
|
||||
"gruppe",
|
||||
"probe",
|
||||
"voraussetzung"
|
||||
],
|
||||
"numberFields": [
|
||||
"handicapValue",
|
||||
"complexity"
|
||||
],
|
||||
"htmlFields": [
|
||||
"text"
|
||||
],
|
||||
"foreignDocumentField": [
|
||||
"voraussetzung"
|
||||
]
|
||||
},
|
||||
"Spell": {
|
||||
"stringFields": [
|
||||
"name",
|
||||
"probenMod",
|
||||
"technik",
|
||||
"zauberdauer",
|
||||
"wirkung",
|
||||
"kosten",
|
||||
"reichweite",
|
||||
"wirkungsdauer",
|
||||
"modifikationen",
|
||||
"reversalis",
|
||||
"antimagie",
|
||||
"merkmal",
|
||||
"komplexität",
|
||||
"repräsentation",
|
||||
"info"
|
||||
],
|
||||
"numberFields": [
|
||||
"seite"
|
||||
],
|
||||
"arrayFields": [
|
||||
"probe"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket": false,
|
||||
"initiative": "1d6",
|
||||
|
|
@ -61,4 +132,4 @@
|
|||
"url": "https://git.macniel.online/macniel/foundry-dsa41-game",
|
||||
"manifest": "https://git.macniel.online/macniel/foundry-dsa41-game/releases/download/{{VERSION}}/system.json",
|
||||
"download": "https://git.macniel.online/macniel/foundry-dsa41-game/releases/download/{{VERSION}}/release.zip"
|
||||
}
|
||||
}
|
||||
|
|
@ -18,35 +18,35 @@
|
|||
<div class="tab meta" data-group="primary" data-tab="meta">
|
||||
<div>
|
||||
<label>Kategorie
|
||||
<select type="text" name="system.category.value">
|
||||
<select type="text" name="system.gruppe.value">
|
||||
{{selectOptions categoryOptions selected=value}}
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Erstes Attribut
|
||||
<input type="text" name="system.attributeReference1.value"
|
||||
value="{{system.attributeReference1.value}}" />
|
||||
<input type="text" name="system.probe.0"
|
||||
value="{{system.probe.[0]}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div><label>Zweites Attribut
|
||||
<input type="text" name="system.attributeReference2.value"
|
||||
value="{{system.attributeReference2.value}}" />
|
||||
<input type="text" name="system.probe.1"
|
||||
value="{{system.probe.[1]}}" />
|
||||
</label></div>
|
||||
<div>
|
||||
<label>Drittes Attribut
|
||||
<input type="text" name="system.attributeReference3.value"
|
||||
value="{{system.attributeReference3.value}}" />
|
||||
<input type="text" name="system.probe.2"
|
||||
value="{{system.probe.[2]}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Behinderung
|
||||
<input type="text" name="system.hanidcapValue.value" value="{{system.handicapValue.value}}" />
|
||||
<input type="text" name="system.behinderung" value="{{system.behinderung}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Sprachenkomplexizität
|
||||
<input type="text" name="system.complexity.value" value="{{system.complexity.value}}" />
|
||||
<input type="text" name="system.komplexität" value="{{system.komplexität}}" />
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
|
@ -54,12 +54,12 @@
|
|||
<div class="tab description" data-group="primary" data-tab="description">
|
||||
<div>
|
||||
<label>Beschreibungstext
|
||||
{{editor system.text target="system.text" button=true owner=owner editable=editable}}
|
||||
{{editor system.text target="system.talent" button=true owner=owner editable=editable}}
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Voraussetzung
|
||||
<input type="text" name="system.requisite.value" value="{{system.requisite.value}}" />
|
||||
<input type="text" name="system.vorraussetzung" value="{{system.voraussetzung}}" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
<form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off">
|
||||
|
||||
{{!-- Sheet Header --}}
|
||||
<header class="sheet-header" style="flex: 0">
|
||||
{{!-- Header stuff goes here --}}
|
||||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100" />
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" style="flex: 0" data-group="primary">
|
||||
<a class="item" data-tab="meta">Kopfdaten</a>
|
||||
<a class="item" data-tab="variants">Varianten</a>
|
||||
<a class="item" data-tab="commonality">Verbreitung</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body" style="flex: 1">
|
||||
|
||||
<div class="tab meta" data-group="primary" data-tab="meta">
|
||||
<div>
|
||||
<label>Name
|
||||
<input type="text" name="system.name.value"
|
||||
value="{{system.attributeReference1.value}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Probe
|
||||
<input type="text" name="system.probe.0"
|
||||
value="{{system.probe.[0]}}" />
|
||||
<input type="text" name="system.probe.1"
|
||||
value="{{system.probe.[1]}}" />
|
||||
<input type="text" name="system.probe[2].value"
|
||||
value="{{system.probe.[2]}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div><label>Proben Modifikation
|
||||
<input type="text" name="system.probenMod"
|
||||
value="{{system.probenMod}}" />
|
||||
</label></div>
|
||||
<div>
|
||||
<label>Zauberdauer
|
||||
<input type="text" name="system.zauberdauer"
|
||||
value="{{system.zauberdauer}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Kosten
|
||||
<input type="text" name="system.kosten" value="{{system.kosten}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Wirkung
|
||||
<input type="text" name="system.wirkung" value="{{system.wirkung}}" />
|
||||
</label>
|
||||
</div> <div>
|
||||
<label>Wirkungsdauer
|
||||
<input type="text" name="system.wirkungsdauer" value="{{system.wirkungsdauer}}" />
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab variants" data-group="primary" data-tab="variants">
|
||||
<div>
|
||||
<label>Modifikationen
|
||||
<input type="text" name="system.modifikationen" value="{{system.modifikationen}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Varianten
|
||||
hier später Varianten
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Reversalis
|
||||
<input type="text" name="system.reversalis" value="{{system.reversalis}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Antimagie
|
||||
<input type="text" name="system.antimagie" value="{{system.antimagie}}" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab commonality" data-group="primary" data-tab="commonality">
|
||||
<div>
|
||||
<label>Komplexität
|
||||
<input type="text" name="system.komplexität" value="{{system.komplexität}}" />
|
||||
</label>
|
||||
</div><div>
|
||||
<label>Repräsentation
|
||||
<input type="text" name="system.repräsentation" value="{{system.repräsentation}}" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label>Verbreitung
|
||||
<input type="text" name="system.info" value="{{system.info}}" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</form>
|
||||
Loading…
Reference in New Issue