Compare commits
15 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
e57d62aef2 | |
|
|
bef9b90901 | |
|
|
51ad48d058 | |
|
|
2414f3b8f3 | |
|
|
81da532074 | |
|
|
2972bc2cf7 | |
|
|
4a35a24d43 | |
|
|
fe9fe03282 | |
|
|
4eedb1527b | |
|
|
192b1b4252 | |
|
|
48c6d1123d | |
|
|
e91fe82e95 | |
|
|
32e44a5cf9 | |
|
|
1ba672680e | |
|
|
3b768ca44c |
17
src/main.mjs
17
src/main.mjs
|
|
@ -1,7 +1,10 @@
|
||||||
import {PlayerCharacterDataModel} from "./module/character/character.mjs";
|
import { PlayerCharacterDataModel } from "./module/character/character.mjs";
|
||||||
import {DsaActor} from "./module/Actors/dsa-actor.mjs";
|
import { DsaActor } from "./module/Actors/dsa-actor.mjs";
|
||||||
|
import { Skill } from "./module/Items/Skill.mjs"
|
||||||
|
import { SkillSheet } from "./module/Items/SkillSheet.mjs";
|
||||||
|
|
||||||
Hooks.once("init", () => {
|
Hooks.once("init", () => {
|
||||||
|
|
||||||
// Configure custom Document implementations.
|
// Configure custom Document implementations.
|
||||||
CONFIG.Actor.documentClass = DsaActor;
|
CONFIG.Actor.documentClass = DsaActor;
|
||||||
|
|
||||||
|
|
@ -10,5 +13,15 @@ Hooks.once("init", () => {
|
||||||
character: PlayerCharacterDataModel,
|
character: PlayerCharacterDataModel,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CONFIG.Item.dataModels = {
|
||||||
|
skills: Skill
|
||||||
|
}
|
||||||
|
|
||||||
console.log("DSA 4.1 is ready for development!")
|
console.log("DSA 4.1 is ready for development!")
|
||||||
|
|
||||||
|
// Register sheet application classes
|
||||||
|
Items.registerSheet('dsa41.skill', SkillSheet, {
|
||||||
|
makeDefault: true,
|
||||||
|
label: 'DSA41.SheetLabels.Item',
|
||||||
|
});
|
||||||
})
|
})
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
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,58 @@
|
||||||
|
export class SkillSheet extends ItemSheet {
|
||||||
|
/**@override */
|
||||||
|
static get defaultOptions() {
|
||||||
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
|
classes: ['dsa41', 'sheet', 'item', 'skill'],
|
||||||
|
width: 520,
|
||||||
|
height: 480,
|
||||||
|
tabs: [
|
||||||
|
{
|
||||||
|
navSelector: '.sheet-tabs',
|
||||||
|
contentSelector: '.sheet-body',
|
||||||
|
initial: 'description',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
get template() {
|
||||||
|
return `systems/DSA_4-1/templates/item/item-${this.item.type}-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;
|
||||||
|
context.categoryOptions = {
|
||||||
|
combat: "Kampf",
|
||||||
|
physical: "Körperlich",
|
||||||
|
social: "Gesellschaft",
|
||||||
|
survival: "Natur",
|
||||||
|
knowledge: "Wissen",
|
||||||
|
languages: "Sprache und Schriften",
|
||||||
|
crafting: "Handwerk"
|
||||||
|
}
|
||||||
|
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
|
||||||
|
// Everything below here is only needed if the sheet is editable
|
||||||
|
if (!this.isEditable) return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -41,7 +41,14 @@
|
||||||
"documentTypes": {
|
"documentTypes": {
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"character": {}
|
"character": {}
|
||||||
}
|
},
|
||||||
|
"Item": {
|
||||||
|
"skill": {
|
||||||
|
"stringFields": ["name", "category", "attributeReference1", "attributeReference2", "attributeReference3", "requisite"],
|
||||||
|
"numberFields": ["handicapValue", "complexity"],
|
||||||
|
"htmlFields": ["text"]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"socket": false,
|
"socket": false,
|
||||||
"initiative": "1d6",
|
"initiative": "1d6",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off">
|
||||||
|
|
||||||
|
{{!-- Sheet Header --}}
|
||||||
|
<header class="sheet-header">
|
||||||
|
{{!-- Header stuff goes here --}}
|
||||||
|
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
|
||||||
|
<div class="header-fields">
|
||||||
|
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{!-- Sheet Tab Navigation --}}
|
||||||
|
<nav class="sheet-tabs tabs" data-group="primary">
|
||||||
|
<a class="item" data-tab="overview">Übersicht</a>
|
||||||
|
<a class="item" data-tab="skills">Talente</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
<div class="tab description" data-group="primary" data-tab="description">
|
||||||
|
<input type="text" name="system.meta.spezies.value" value="{{system.meta.spezies.value}}" />
|
||||||
|
<input type="text" name="system.meta.kultur.value" value="{{system.meta.kultur.value}}" />
|
||||||
|
<input type="text" name="system.meta.profession.value" value="{{system.meta.profession.value}}" />
|
||||||
|
<input type="text" name="system.meta.geschlecht.value" value="{{system.meta.geschlecht.value}}" />
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
<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">Talent</a>
|
||||||
|
<a class="item" data-tab="description">Regeltext</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body" style="flex: 1">
|
||||||
|
|
||||||
|
<div class="tab meta" data-group="primary" data-tab="meta">
|
||||||
|
<div>
|
||||||
|
<label>Kategorie
|
||||||
|
<select type="text" name="system.category.value">
|
||||||
|
{{selectOptions categoryOptions selected=value}}
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>Erstes Attribut
|
||||||
|
<input type="text" name="system.attributeReference1.value"
|
||||||
|
value="{{system.attributeReference1.value}}" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div><label>Zweites Attribut
|
||||||
|
<input type="text" name="system.attributeReference2.value"
|
||||||
|
value="{{system.attributeReference2.value}}" />
|
||||||
|
</label></div>
|
||||||
|
<div>
|
||||||
|
<label>Drittes Attribut
|
||||||
|
<input type="text" name="system.attributeReference3.value"
|
||||||
|
value="{{system.attributeReference3.value}}" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>Behinderung
|
||||||
|
<input type="text" name="system.hanidcapValue.value" value="{{system.handicapValue.value}}" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>Sprachenkomplexizität
|
||||||
|
<input type="text" name="system.complexity.value" value="{{system.complexity.value}}" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<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}}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>Voraussetzung
|
||||||
|
<input type="text" name="system.requisite.value" value="{{system.requisite.value}}" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
Loading…
Reference in New Issue