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 {DsaActor} from "./module/Actors/dsa-actor.mjs";
|
||||
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";
|
||||
|
||||
Hooks.once("init", () => {
|
||||
|
||||
// Configure custom Document implementations.
|
||||
CONFIG.Actor.documentClass = DsaActor;
|
||||
|
||||
|
|
@ -10,5 +13,15 @@ Hooks.once("init", () => {
|
|||
character: PlayerCharacterDataModel,
|
||||
};
|
||||
|
||||
CONFIG.Item.dataModels = {
|
||||
skills: Skill
|
||||
}
|
||||
|
||||
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": {
|
||||
"Actor": {
|
||||
"character": {}
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
"skill": {
|
||||
"stringFields": ["name", "category", "attributeReference1", "attributeReference2", "attributeReference3", "requisite"],
|
||||
"numberFields": ["handicapValue", "complexity"],
|
||||
"htmlFields": ["text"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket": false,
|
||||
"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