initial skill data and dialog test

pull/14/head
macniel 2025-09-25 19:26:26 +02:00
parent 2a5de44d21
commit 3b768ca44c
4 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,18 @@
const { BooleanField, NumberField, SchemaField, SetField, StringField } = foundry.data.fields;
export default class Skill extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
name: StringField({required: true}),
category: StringField({required: true}),
attributeReference1: StringField(), // References one of the eight attributes by name
attributeReference2: StringField(), // References one of the eight attributes by name
attributeReference3: StringField(), // References one of the eight attributes by name
skillValue: NumberField(), // TaW
handicapValue: NumberField(), // BE-X
complexity: NumberField(), // In case of languages
}
}
}

View File

@ -0,0 +1,43 @@
export class SkillItemSheet 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 `${path}/item-${this.item.type}-sheet.hbs`;
}
/** @override */
getData() {
// Retrieve base data structure.
const context = super.getData();
// Use a safe clone of the item data for further operations.
const itemData = context.data;
// Retrieve the roll data for TinyMCE editors.
context.rollData = this.item.getRollData();
// Add the item's data to context.data for easier access, as well as flags.
context.system = itemData.system;
context.flags = itemData.flags;
// Prepare active effects for easier access
context.effects = prepareActiveEffectCategories(this.item.effects);
return context;
}
}

View File

@ -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>

View File

@ -0,0 +1,28 @@
<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"/>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="description">Description</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="form-fields">
<input type="text" name="system.attributeReference1.value" value="{{system.attributeReference1.value}}" />
<input type="text" name="system.attributeReference2.value" value="{{system.attributeReference2.value}}" />
<input type="text" name="system.attributeReference3.value" value="{{system.attributeReference3.value}}" />
<input type="text" name="system.hanidcapValue.value" value="{{system.handicapValue.value}}" />
<input type="text" name="system.complexity.value" value="{{system.complexity.value}}" />
</div>
</div>
</section>
</form>