From 442cae2598c8f8078676bf48e053ca8eb81aafb1 Mon Sep 17 00:00:00 2001
From: Sven Balzer <4653051+Kyuusokuna@users.noreply.github.com>
Date: Fri, 4 Oct 2024 22:22:18 +0200
Subject: [PATCH] add talents
---
src/ActorSheet.html | 50 +++++++++++++
src/lang/de.json | 103 +++++++++++++++++++++++++++
src/lang/en.json | 103 +++++++++++++++++++++++++++
src/main.mjs | 168 ++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 424 insertions(+)
diff --git a/src/ActorSheet.html b/src/ActorSheet.html
index 0d911b1..9dc5077 100644
--- a/src/ActorSheet.html
+++ b/src/ActorSheet.html
@@ -33,12 +33,14 @@
{{>editable-input type="text" name="system.culture" value=actor.system.culture placeholder=(localize "DSA41.culture")}}
{{>editable-input type="text" name="system.profession" value=actor.system.profession placeholder=(localize "DSA41.profession")}}
+

{{#each actor.system.attributes}}
{{>die-value type=@key}}
{{/each}}
+
+
+
+
+
+
+ {{#each actor.system.talente}}
+
+
+
+ {{/each}}
\ No newline at end of file
diff --git a/src/lang/de.json b/src/lang/de.json
index be10413..d16d2b2 100644
--- a/src/lang/de.json
+++ b/src/lang/de.json
@@ -32,6 +32,109 @@
"constitution": "KO",
"strength": "KK"
}
+ },
+
+ "talente":{
+ "label": "Talent",
+ "label_eigenschaften": "Eigenschaften",
+ "label_talentwert": "Talentwert",
+
+ "kampf": {
+ "label": "Kampf Talente",
+ "label_attacke": "Attacke",
+ "label_parade": "Parade",
+ "label_attacke_total": "Attacke",
+ "label_parade_total": "Parade",
+
+ "name": {
+ "anderthalbhaender": "Anderthalbhänder",
+ "armbrust": "Armbrust"
+ }
+ },
+
+ "koerperliche": {
+ "label": "Körperliche Talente",
+
+ "name": {
+ "akrobatik": "Akrobatik",
+ "athletik": "Athletik",
+ "fliegen": "Fliegen",
+ "gaukeleien": "Gaukeleien",
+ "klettern": "Klettern",
+ "koerperbeherrschung": "Körperbeherrschung",
+ "reiten": "Reiten",
+ "schleichen": "Schleichen",
+ "schwimmen": "Schwimmen",
+ "selbstbeherrschung": "Selbstbeherrschung",
+ "sich_verstecken": "Sich Verstecken",
+ "singen": "Singen",
+ "sinnenschärfe": "Sinnenschärfe",
+ "skifahren": "Skifahren",
+ "stimmen_imitieren": "Stimmen Imitieren",
+ "tanzen": "Tanzen",
+ "taschendiebstahl": "Taschendiebstahl",
+ "zechen": "Zechen"
+ }
+ },
+
+ "gesellschaftliche": {
+ "label": "Gesellschaftliche Talente",
+
+ "name": {
+ "betoeren": "Betören",
+ "etikette": "Etikette",
+ "gassenwissen": "Gassenwissen",
+ "lehren": "Lehren",
+ "menschenkenntnis": "Menschenkenntnis",
+ "schauspielerei": "Schauspielerei",
+ "schriftlicher_ausdruck": "Schriftlicher Ausdruck",
+ "sich_verkleiden": "Sich Verkleiden",
+ "ueberreden": "Überreden",
+ "ueberzeugen": "Überzeugen"
+ }
+ },
+
+ "natur": {
+ "label": "Natur-Talente",
+
+ "name": {
+ "faehrtensuchen": "Fährtensuchen",
+ "fallenstellen": "Fallenstellen",
+ "fesseln": "Fesseln/Entfesseln",
+ "fischen": "Fischen/Angeln",
+ "orientierung": "Orientierung",
+ "wettervorhersage": "Wettervorhersage",
+ "wildnisleben": "Wildnisleben"
+ }
+ },
+
+ "wissens": {
+ "label": "Wissenstalente",
+
+ "name": {
+ "anatomie": "Anatomie",
+ "baukunst": "Baukunst"
+ }
+ },
+
+ "sprachen": {
+ "label": "Sprachen und Schriften",
+
+ "name": {
+ "lesen_schreiben": "Lesen/Schreiben [Schrift]",
+ "muttersprache": "Sprachen [Muttersprache]",
+ "fremdsprache": "Sprachen [Fremdsprache]"
+ }
+ },
+
+ "handwerks": {
+ "label": "Handwerkstalente",
+
+ "name": {
+ "abrichten": "Abrichten",
+ "ackerbau": "Ackerbau"
+ }
+ }
}
}
}
\ No newline at end of file
diff --git a/src/lang/en.json b/src/lang/en.json
index 7ff6d94..617947d 100644
--- a/src/lang/en.json
+++ b/src/lang/en.json
@@ -32,6 +32,109 @@
"constitution": "CN",
"strength": "ST"
}
+ },
+
+ "talente": {
+ "label": "Talent",
+ "label_eigenschaften": "Attributes",
+ "label_talentwert": "Talent Prowess",
+
+ "kampf": {
+ "label": "Combat Talents",
+ "label_attacke": "!!TODO!!",
+ "label_parade": "!!TODO!!",
+ "label_attacke_total": "!!TODO!!",
+ "label_parade_total": "!!TODO!!",
+
+ "name": {
+ "anderthalbhaender": "!!TODO!!",
+ "armbrust": "!!TODO!!"
+ }
+ },
+
+ "koerperliche": {
+ "label": "!!TODO!!",
+
+ "name": {
+ "akrobatik": "!!TODO!!",
+ "athletik": "!!TODO!!",
+ "fliegen": "!!TODO!!",
+ "gaukeleien": "!!TODO!!",
+ "klettern": "!!TODO!!",
+ "koerperbeherrschung": "!!TODO!!",
+ "reiten": "!!TODO!!",
+ "schleichen": "!!TODO!!",
+ "schwimmen": "!!TODO!!",
+ "selbstbeherrschung": "!!TODO!!",
+ "sich_verstecken": "!!TODO!!",
+ "singen": "!!TODO!!",
+ "sinnenschärfe": "!!TODO!!",
+ "skifahren": "!!TODO!!",
+ "stimmen_imitieren": "!!TODO!!",
+ "tanzen": "!!TODO!!",
+ "taschendiebstahl": "!!TODO!!",
+ "zechen": "!!TODO!!"
+ }
+ },
+
+ "gesellschaftliche": {
+ "label": "!!TODO!!",
+
+ "name": {
+ "betoeren": "!!TODO!!",
+ "etikette": "!!TODO!!",
+ "gassenwissen": "!!TODO!!",
+ "lehren": "!!TODO!!",
+ "menschenkenntnis": "!!TODO!!",
+ "schauspielerei": "!!TODO!!",
+ "schriftlicher_ausdruck": "!!TODO!!",
+ "sich_verkleiden": "!!TODO!!",
+ "ueberreden": "!!TODO!!",
+ "ueberzeugen": "!!TODO!!"
+ }
+ },
+
+ "natur": {
+ "label": "Nature Talents",
+
+ "name": {
+ "faehrtensuchen": "Track",
+ "fallenstellen": "Traps",
+ "fesseln": "Bind/Escape",
+ "fischen": "Fish",
+ "orientierung": "Orientation",
+ "wettervorhersage": "Weather Sense",
+ "wildnisleben": "Survival"
+ }
+ },
+
+ "wissens": {
+ "label": "!!TODO!!",
+
+ "name": {
+ "anatomie": "!!TODO!!",
+ "baukunst": "!!TODO!!"
+ }
+ },
+
+ "sprachen": {
+ "label": "!!TODO!!",
+
+ "name": {
+ "lesen_schreiben": "!!TODO!!",
+ "muttersprache": "!!TODO!!",
+ "fremdsprache": "!!TODO!!"
+ }
+ },
+
+ "handwerks": {
+ "label": "!!TODO!!",
+
+ "name": {
+ "abrichten": "!!TODO!!",
+ "ackerbau": "!!TODO!!"
+ }
+ }
}
}
}
\ No newline at end of file
diff --git a/src/main.mjs b/src/main.mjs
index 3d222ef..985ca87 100644
--- a/src/main.mjs
+++ b/src/main.mjs
@@ -36,6 +36,16 @@ class AttributeField extends foundry.data.fields.SchemaField {
}
}
+class CombatTalentField extends foundry.data.fields.SchemaField {
+ constructor() {
+ return super({
+ talentwert: new NumberField({ integer: true, initial: 0 }),
+ attacke: new NumberField({ integer: true, initial: 0 }),
+ parade: new NumberField({ integer: true, initial: 0 }),
+ });
+ }
+}
+
class DSA41_CharacterData extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
@@ -53,6 +63,164 @@ class DSA41_CharacterData extends foundry.abstract.TypeDataModel {
constitution: new AttributeField(),
strength: new AttributeField(),
}),
+
+ kampf_talente: new SchemaField({
+ anderthalbhaender: new CombatTalentField(),
+ armbrust: new CombatTalentField(),
+ belagerungswaffen: new CombatTalentField(),
+ blasrohr: new CombatTalentField(),
+ bogen: new CombatTalentField(),
+ diskus: new CombatTalentField(),
+ dolche: new CombatTalentField(),
+ fechtwaffen: new CombatTalentField(),
+ hiebwaffen: new CombatTalentField(),
+ infanteriewaffen: new CombatTalentField(),
+ kettenstaebe: new CombatTalentField(),
+ kettenwaffen: new CombatTalentField(),
+ lanzenreiten: new CombatTalentField(),
+ peitsche: new CombatTalentField(),
+ raufen: new CombatTalentField(),
+ ringen: new CombatTalentField(),
+ saebel: new CombatTalentField(),
+ schleuder: new CombatTalentField(),
+ schwerter: new CombatTalentField(),
+ speere: new CombatTalentField(),
+ staebe: new CombatTalentField(),
+ wurfbeile: new CombatTalentField(),
+ wurfmesser: new CombatTalentField(),
+ wurfspeere: new CombatTalentField(),
+ zweihandflegel: new CombatTalentField(),
+ zweihand_hiebwaffen: new CombatTalentField(),
+ zweihandschwerter: new CombatTalentField(),
+ }),
+
+ talente: new SchemaField({
+ koerperliche: new SchemaField({
+ akrobatik: new NumberField({ integer: true, initial: 0 }),
+ athletik: new NumberField({ integer: true, initial: 0 }),
+ fliegen: new NumberField({ integer: true, initial: 0 }),
+ gaukeleien: new NumberField({ integer: true, initial: 0 }),
+ klettern: new NumberField({ integer: true, initial: 0 }),
+ koerperbeherrschung: new NumberField({ integer: true, initial: 0 }),
+ reiten: new NumberField({ integer: true, initial: 0 }),
+ schleichen: new NumberField({ integer: true, initial: 0 }),
+ schwimmen: new NumberField({ integer: true, initial: 0 }),
+ selbstbeherrschung: new NumberField({ integer: true, initial: 0 }),
+ sich_verstecken: new NumberField({ integer: true, initial: 0 }),
+ singen: new NumberField({ integer: true, initial: 0 }),
+ sinnenschärfe: new NumberField({ integer: true, initial: 0 }),
+ skifahren: new NumberField({ integer: true, initial: 0 }),
+ stimmen_imitieren: new NumberField({ integer: true, initial: 0 }),
+ tanzen: new NumberField({ integer: true, initial: 0 }),
+ taschendiebstahl: new NumberField({ integer: true, initial: 0 }),
+ zechen: new NumberField({ integer: true, initial: 0 }),
+ }),
+
+ gesellschaftliche: new SchemaField({
+ betoeren: new NumberField({ integer: true, initial: 0 }),
+ etikette: new NumberField({ integer: true, initial: 0 }),
+ gassenwissen: new NumberField({ integer: true, initial: 0 }),
+ lehren: new NumberField({ integer: true, initial: 0 }),
+ menschenkenntnis: new NumberField({ integer: true, initial: 0 }),
+ schauspielerei: new NumberField({ integer: true, initial: 0 }),
+ schriftlicher_ausdruck: new NumberField({ integer: true, initial: 0 }),
+ sich_verkleiden: new NumberField({ integer: true, initial: 0 }),
+ ueberreden: new NumberField({ integer: true, initial: 0 }),
+ ueberzeugen: new NumberField({ integer: true, initial: 0 }),
+ }),
+
+ natur: new SchemaField({
+ faehrtensuchen: new NumberField({ integer: true, initial: 0 }),
+ fallenstellen: new NumberField({ integer: true, initial: 0 }),
+ fesseln: new NumberField({ integer: true, initial: 0 }),
+ fischen: new NumberField({ integer: true, initial: 0 }),
+ orientierung: new NumberField({ integer: true, initial: 0 }),
+ wettervorhersage: new NumberField({ integer: true, initial: 0 }),
+ wildnisleben: new NumberField({ integer: true, initial: 0 }),
+ }),
+
+ wissens: new SchemaField({
+ anatomie: new NumberField({ integer: true, initial: 0 }),
+ baukunst: new NumberField({ integer: true, initial: 0 }),
+ brett_kartenspiel: new NumberField({ integer: true, initial: 0 }),
+ geographie: new NumberField({ integer: true, initial: 0 }),
+ geschichtswissen: new NumberField({ integer: true, initial: 0 }),
+ gesteinskunde: new NumberField({ integer: true, initial: 0 }),
+ goetter_kulte: new NumberField({ integer: true, initial: 0 }),
+ heraldik: new NumberField({ integer: true, initial: 0 }),
+ huettenkunde: new NumberField({ integer: true, initial: 0 }),
+ kriegskunst: new NumberField({ integer: true, initial: 0 }),
+ kryptographie: new NumberField({ integer: true, initial: 0 }),
+ magiekunde: new NumberField({ integer: true, initial: 0 }),
+ mechanik: new NumberField({ integer: true, initial: 0 }),
+ pflanzenkunde: new NumberField({ integer: true, initial: 0 }),
+ philosophie: new NumberField({ integer: true, initial: 0 }),
+ rechnen: new NumberField({ integer: true, initial: 0 }),
+ rechtskunde: new NumberField({ integer: true, initial: 0 }),
+ sagen_legenden: new NumberField({ integer: true, initial: 0 }),
+ schaetzen: new NumberField({ integer: true, initial: 0 }),
+ sprachenkunde: new NumberField({ integer: true, initial: 0 }),
+ staatskunst: new NumberField({ integer: true, initial: 0 }),
+ sternkunde: new NumberField({ integer: true, initial: 0 }),
+ tierkunde: new NumberField({ integer: true, initial: 0 }),
+ }),
+
+ sprachen: new SchemaField({
+ lesen_schreiben: new NumberField({ integer: true, initial: 0 }),
+ muttersprache: new NumberField({ integer: true, initial: 0 }),
+ fremdsprache: new NumberField({ integer: true, initial: 0 }),
+ }),
+
+ handwerks: new SchemaField({
+ abrichten: new NumberField({ integer: true, initial: 0 }),
+ ackerbau: new NumberField({ integer: true, initial: 0 }),
+ alchimie: new NumberField({ integer: true, initial: 0 }),
+ bergbau: new NumberField({ integer: true, initial: 0 }),
+ bogenbau: new NumberField({ integer: true, initial: 0 }),
+ boote_fahren: new NumberField({ integer: true, initial: 0 }),
+ brauer: new NumberField({ integer: true, initial: 0 }),
+ drucker: new NumberField({ integer: true, initial: 0 }),
+ fahrzeug_lenken: new NumberField({ integer: true, initial: 0 }),
+ falschspiel: new NumberField({ integer: true, initial: 0 }),
+ feinmechanik: new NumberField({ integer: true, initial: 0 }),
+ feuersteinbearbeitung: new NumberField({ integer: true, initial: 0 }),
+ fleischer: new NumberField({ integer: true, initial: 0 }),
+ gerber: new NumberField({ integer: true, initial: 0 }),
+ glaskunst: new NumberField({ integer: true, initial: 0 }),
+ grobschmied: new NumberField({ integer: true, initial: 0 }),
+ handel: new NumberField({ integer: true, initial: 0 }),
+ hauswirtschaft: new NumberField({ integer: true, initial: 0 }),
+ heilkunde_gift: new NumberField({ integer: true, initial: 0 }),
+ heilkunde_krankheiten: new NumberField({ integer: true, initial: 0 }),
+ heilkunde_seele: new NumberField({ integer: true, initial: 0 }),
+ heilkunde_wunden: new NumberField({ integer: true, initial: 0 }),
+ holzbearbeitung: new NumberField({ integer: true, initial: 0 }),
+ instrumentenbauer: new NumberField({ integer: true, initial: 0 }),
+ kartographie: new NumberField({ integer: true, initial: 0 }),
+ kochen: new NumberField({ integer: true, initial: 0 }),
+ kristallzucht: new NumberField({ integer: true, initial: 0 }),
+ lederarbeiten: new NumberField({ integer: true, initial: 0 }),
+ malen_zeichnen: new NumberField({ integer: true, initial: 0 }),
+ maurer: new NumberField({ integer: true, initial: 0 }),
+ metallguss: new NumberField({ integer: true, initial: 0 }),
+ musizieren: new NumberField({ integer: true, initial: 0 }),
+ schloesser_knacken: new NumberField({ integer: true, initial: 0 }),
+ schnapps_brennen: new NumberField({ integer: true, initial: 0 }),
+ schneidern: new NumberField({ integer: true, initial: 0 }),
+ seefahrt: new NumberField({ integer: true, initial: 0 }),
+ seiler: new NumberField({ integer: true, initial: 0 }),
+ steinmetz: new NumberField({ integer: true, initial: 0 }),
+ juwelier: new NumberField({ integer: true, initial: 0 }),
+ stellmacher: new NumberField({ integer: true, initial: 0 }),
+ stoffe_faerben: new NumberField({ integer: true, initial: 0 }),
+ taetowieren: new NumberField({ integer: true, initial: 0 }),
+ toepfern: new NumberField({ integer: true, initial: 0 }),
+ viehzucht: new NumberField({ integer: true, initial: 0 }),
+ webkunst: new NumberField({ integer: true, initial: 0 }),
+ winzer: new NumberField({ integer: true, initial: 0 }),
+ zimmermann: new NumberField({ integer: true, initial: 0 }),
+ }),
+ }),
}
}