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}}
+
{{localize "DSA41.attributes.label"}} @@ -70,4 +72,52 @@
+ +
+
+ {{localize "DSA41.talente.kampf_talente.label"}} + + + + + + + + + + {{#each actor.system.kampf_talente}} + + + + + + + + + {{/each}} +
{{localize "DSA41.talente.label"}}{{localize "DSA41.talente.label_talentwert"}}{{localize "DSA41.talente.kampf.label_attacke"}}{{localize "DSA41.talente.kampf.label_parade"}}{{localize "DSA41.talente.kampf.label_attacke_total"}}{{localize "DSA41.talente.kampf.label_parade_total"}}
{{localize (concat "DSA41.talente.kampf.name." @key)}}{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".talentwert") value=(lookup this "talentwert")}}{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".attacke") value=(lookup this "attacke")}}{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".parade") value=(lookup this "parade")}}00
+
+
+ + {{#each actor.system.talente}} +
+
+ {{localize (concat "DSA41.talente." @key ".label")}} + + + + + + + {{#each @this}} + + + + + + {{/each}} +
{{localize "DSA41.talente.label"}}{{localize "DSA41.talente.label_eigenschaften"}}{{localize "DSA41.talente.label_talentwert"}}
{{localize (concat "DSA41.talente." @../key ".name." @key)}}{{>editable-input type="number" name=(concat "system.talente." @../key "." @key) value=@this}}
+
+
+ {{/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 }), + }), + }), } }