From 4079a40d6b1a7ad0f123dbb973e549cfd087d477 Mon Sep 17 00:00:00 2001 From: Sven Balzer <4653051+Kyuusokuna@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:28:29 +0100 Subject: [PATCH] change Kampftalente to be Items --- src/ActorSheet.hbs | 22 +++++----- src/ItemSheets/Kampftalent.hbs | 39 ++++++++++++++++++ src/ItemSheets/VorNachteil.hbs | 1 - src/lang/de.json | 61 ++++++++++++++------------- src/main.mjs | 75 +++++++++++++++++----------------- system.json | 1 + zig/compendium_creator.zig | 31 ++++++++++++++ zig/system.zig | 26 ++++++++++++ 8 files changed, 175 insertions(+), 81 deletions(-) create mode 100644 src/ItemSheets/Kampftalent.hbs diff --git a/src/ActorSheet.hbs b/src/ActorSheet.hbs index 316d4fe..a4eddb2 100644 --- a/src/ActorSheet.hbs +++ b/src/ActorSheet.hbs @@ -171,15 +171,13 @@ {{#each this}}
-
-
{{maybeLocalize name prefix=(concat "DSA41.talente." system.kategorie ".name")}}
-
+
{{maybeLocalize name prefix=(concat "DSA41.talente." system.kategorie ".name")}}
{{>die-type type=system.attribute1}} {{>die-type type=system.attribute2}} {{>die-type type=system.attribute3}}
-
{{>editable-input type="number" data-name="system.talentwert" value=system.talentwert}}
+
{{>editable-input name=(concat name "system.talentwert") type="number" data-name="system.talentwert" value=system.talentwert}}
{{/each}} @@ -196,14 +194,14 @@
{{localize "DSA41.talente.kampf.label_parade_total"}}
- {{#each actor.system.kampf_talente}} -
-
{{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")}}
-
{{lookup (lookup @root.actor.system.computed.kampf.talente @key) "attacke"}}
-
{{lookup (lookup @root.actor.system.computed.kampf.talente @key) "parade"}}
+ {{#each actor.system.kampftalente}} +
+
{{maybeLocalize name prefix="DSA41.talente.kampf.name."}}
+
{{>editable-input type="number" name=(concat name "system.talentwert") data-name="system.talentwert" value=system.talentwert}}
+
{{>editable-input type="number" name=(concat name "system.attacke") data-name="system.attacke" value=system.attacke}}
+
{{>editable-input type="number" name=(concat name "system.parade") data-name="system.parade" value=system.parade}}
+
{{lookup (lookup @root.actor.system.computed.kampf.talente name) "attacke"}}
+
{{lookup (lookup @root.actor.system.computed.kampf.talente name) "parade"}}
{{/each}}
diff --git a/src/ItemSheets/Kampftalent.hbs b/src/ItemSheets/Kampftalent.hbs new file mode 100644 index 0000000..36ccd73 --- /dev/null +++ b/src/ItemSheets/Kampftalent.hbs @@ -0,0 +1,39 @@ +
+
+ +
+
+ {{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}} +
+ +
{{localize "DSA41.kampftalent.label_steigern"}}
+
+ {{>editable-input type="text" name="system.behinderung" value=item.system.behinderung placeholder=(localize "DSA41.talente.label_behinderung")}} +
+
+
+ +
{{localize "DSA41.talente.label_kategorie"}}
+
+
+
+
+
+ + +
+
diff --git a/src/ItemSheets/VorNachteil.hbs b/src/ItemSheets/VorNachteil.hbs index f950baf..c8aaa64 100644 --- a/src/ItemSheets/VorNachteil.hbs +++ b/src/ItemSheets/VorNachteil.hbs @@ -17,7 +17,6 @@
-
diff --git a/src/lang/de.json b/src/lang/de.json index a23bb4b..99d3d50 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -1,10 +1,15 @@ { "TYPES": { + "Actor": { + "Player": "Spieler" + }, + "Item": { "Gegenstand": "Gegenstand", "Ruestung": "Rüstung", "Bewaffnung": "Bewaffnung", "Talent": "Talent", + "Kampftalent": "Kampftalent", "Sonderfertigkeit": "Sonderfertigkeit", "VorNachteil": "Vor-/Nachteil" } @@ -120,6 +125,30 @@ } }, + "kampftalent": { + "label": "Kampftalent", + "label_kategorie": "Kategorie", + "label_steigern": "Steigern", + + "kategorie":{ + "waffenlos": "Waffenlos", + "nahkampf": "Bewaffneter Nahkampf", + "fernkampf": "Fernkampf" + }, + + "steigern": { + "A_Star": "A*", + "A": "A", + "B": "B", + "C": "C", + "D": "D", + "E": "E", + "F": "F", + "G": "G", + "H": "H" + } + }, + "talente":{ "label": "Talent", "label_eigenschaften": "Eigenschaften", @@ -132,37 +161,7 @@ "label_attacke": "Attacke", "label_parade": "Parade", "label_attacke_total": "Attacke", - "label_parade_total": "Parade", - - "name": { - "anderthalbhaender": "Anderthalbhänder", - "armbrust": "Armbrust", - "belagerungswaffen": "Belagerungswaffen", - "blasrohr": "Blasrohr", - "bogen": "Bogen", - "diskus": "Diskus", - "dolche": "Dolche", - "fechtwaffen": "Fechtwaffen", - "hiebwaffen": "Hiebwaffen", - "infanteriewaffen": "Infanteriewaffen", - "kettenstaebe": "Kettenstäbe", - "kettenwaffen": "Kettenwaffen", - "lanzenreiten": "Lanzenreiten", - "peitsche": "Peitsche", - "raufen": "Raufen", - "ringen": "Ringen", - "saebel": "Saebel", - "schleuder": "Schleuder", - "schwerter": "Schwerter", - "speere": "Speere", - "staebe": "Stäbe", - "wurfbeile": "Wurfbeile", - "wurfmesser": "Wurfmesser", - "wurfspeere": "Wurfspeere", - "zweihandflegel": "Zweihandflegel", - "zweihand_hiebwaffen": "Zweihand-Hiebwaffen", - "zweihandschwerter": "Zweihandschwerter/-säbel" - } + "label_parade_total": "Parade" }, "koerperliche": { diff --git a/src/main.mjs b/src/main.mjs index ee1cf1c..bcea8d1 100644 --- a/src/main.mjs +++ b/src/main.mjs @@ -18,6 +18,7 @@ Hooks.once("init", async function() { CONFIG.Item.dataModels.Ruestung = DSA41_RuestungData; CONFIG.Item.dataModels.Bewaffnung = DSA41_BewaffnungData; CONFIG.Item.dataModels.Talent = DSA41_TalentData; + CONFIG.Item.dataModels.Kampftalent = DSA41_KampftalentData; CONFIG.Item.dataModels.Sonderfertigkeit = DSA41_SonderfertigkeitData; CONFIG.Item.dataModels.VorNachteil = DSA41_VorNachteilData; @@ -37,6 +38,7 @@ Hooks.once("init", async function() { "Ruestung", "Bewaffnung", "Talent", + "Kampftalent", "Sonderfertigkeit", "VorNachteil", ] @@ -183,6 +185,14 @@ class DSA41_CharacterDocument extends Actor { "Lederarbeiten", "Malen/Zeichnen", "Schneidern", + + // Basis Kampftalente + "Dolche", + "Hiebwaffen", + "Raufen", + "Ringen", + "Säbel", + "Wurfmesser", ]}); await actor.createEmbeddedDocuments("Item", talente); @@ -212,36 +222,6 @@ class DSA41_CharacterData extends 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(), - }), } } @@ -309,10 +289,14 @@ class DSA41_CharacterData extends TypeDataModel { this.computed.kampf.ruestungen_gesamt[key] = Math.round(value); } - for(const [name, values] of Object.entries(this.kampf_talente)) { - this.computed.kampf.talente[name] = {}; - this.computed.kampf.talente[name].attacke = this.computed.at_basiswert + values.attacke; - this.computed.kampf.talente[name].parade = this.computed.pa_basiswert + values.parade; + this.kampftalente = this.parent.items.filter((x) => x.type === "Kampftalent").sort((a, b) => a.name > b.name); + for(const talent of this.kampftalente) { + this.computed.kampf.talente[talent.name] = {}; + this.computed.kampf.talente[talent.name].attacke = this.computed.at_basiswert + talent.system.attacke; + this.computed.kampf.talente[talent.name].parade = this.computed.pa_basiswert + talent.system.parade; + + this.computed.kampf.talente[talent.name].talent_attacke = talent.system.attacke; + this.computed.kampf.talente[talent.name].talent_parade = talent.system.parade; } const equipped_bewaffnung = this.parent.items.filter((x) => x.type === "Bewaffnung"); @@ -353,8 +337,8 @@ class DSA41_CharacterData extends TypeDataModel { const talent = item.system.nahkampfwaffe.kampftalente; - computed.talent_attacke = this.kampf_talente[talent]?.attacke ?? 0; - computed.talent_parade = this.kampf_talente[talent]?.parade ?? 0; + computed.talent_attacke = this.computed.kampf.talente[talent]?.talent_attacke ?? 0; + computed.talent_parade = this.computed.kampf.talente[talent]?.talent_parade ?? 0; computed.modifikator_attacke = item.system.nahkampfwaffe.modifikator_attacke; computed.modifikator_parade = item.system.nahkampfwaffe.modifikator_parade; @@ -399,7 +383,7 @@ class DSA41_CharacterData extends TypeDataModel { computed.basis_attacke = this.computed.fk_basiswert; const talent = item.system.nahkampfwaffe.kampftalente; - computed.talent_attacke = this.kampf_talente[talent]?.attacke ?? 0; + computed.talent_attacke = this.computed.kampf.talente[talent]?.talent_attacke ?? 0; computed.attacke = computed.basis_attacke + computed.talent_attacke; @@ -542,6 +526,22 @@ class DSA41_TalentData extends TypeDataModel { } } +class DSA41_KampftalentData extends TypeDataModel { + static defineSchema() { + return { + kategorie: new StringField(), + behinderung: new StringField(), + steigern: new StringField(), + + beschreibung: new StringField(), + + talentwert: new NumberField({ integer: true, initial: 0 }), + attacke: new NumberField({ integer: true, initial: 0 }), + parade: new NumberField({ integer: true, initial: 0 }), + }; + } +} + class DSA41_SonderfertigkeitData extends TypeDataModel { static defineSchema() { return { @@ -900,6 +900,7 @@ class DSA41_ItemSheetV2 extends DSA41_ApplicationMixin(ItemSheetV2) { Gegenstand: { template: "systems/dsa-4th-edition/src/ItemSheets/Gegenstand.hbs" }, Ruestung: { template: "systems/dsa-4th-edition/src/ItemSheets/Ruestung.hbs" }, Talent: { template: "systems/dsa-4th-edition/src/ItemSheets/Talent.hbs" }, + Kampftalent: { template: "systems/dsa-4th-edition/src/ItemSheets/Kampftalent.hbs" }, Sonderfertigkeit: { template: "systems/dsa-4th-edition/src/ItemSheets/Sonderfertigkeit.hbs" }, VorNachteil: { template: "systems/dsa-4th-edition/src/ItemSheets/VorNachteil.hbs" }, }; diff --git a/system.json b/system.json index 6470eb4..439c16d 100644 --- a/system.json +++ b/system.json @@ -15,6 +15,7 @@ "Bewaffnung": {}, "Talent": {}, + "Kampftalent": {}, "Sonderfertigkeit": {}, "VorNachteil": {} } diff --git a/zig/compendium_creator.zig b/zig/compendium_creator.zig index 8940163..df4fb6a 100644 --- a/zig/compendium_creator.zig +++ b/zig/compendium_creator.zig @@ -131,6 +131,37 @@ const talente: system.ItemCompendium = .{ .entries = &.{ .{ .Talent = .{ .name = "Winzer", .system = .{ .kategorie = .handwerks, .attribute1 = .KL, .attribute2 = .FF, .attribute3 = .KK, .behinderung = "" } } }, .{ .Talent = .{ .name = "Zimmermann", .system = .{ .kategorie = .handwerks, .attribute1 = .KL, .attribute2 = .FF, .attribute3 = .KK, .behinderung = "" } } }, }}}, + + // Kampftalente + .{ .Folder = .{ .name = "Kampftalente", .entries = &.{ + .{ .Kampftalent = .{ .name = "Anderthalbhänder", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Armbrust", .system = .{ .kategorie = .fernkampf, .steigern = .C, .behinderung = "@BE - 5" } } }, + .{ .Kampftalent = .{ .name = "Belagerungswaffen", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "" } } }, + .{ .Kampftalent = .{ .name = "Blasrohr", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "@BE - 5" } } }, + .{ .Kampftalent = .{ .name = "Bogen", .system = .{ .kategorie = .fernkampf, .steigern = .E, .behinderung = "@BE - 3" } } }, + .{ .Kampftalent = .{ .name = "Diskus", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Dolche", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 1" } } }, + .{ .Kampftalent = .{ .name = "Fechtwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 1" } } }, + .{ .Kampftalent = .{ .name = "Hiebwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 4" } } }, + .{ .Kampftalent = .{ .name = "Infanteriewaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } }, + .{ .Kampftalent = .{ .name = "Kettenstäbe", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 1" } } }, + .{ .Kampftalent = .{ .name = "Kettenwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } }, + // .{ .Kampftalent = .{ .name = "Lanzenreiten", .system = .{ .kategorie = .???, .steigern = .E, .behinderung = "" } } }, + // .{ .Kampftalent = .{ .name = "Peitsche", .system = .{ .kategorie = .???, .steigern = .E, .behinderung = "@BE - 1" } } }, + .{ .Kampftalent = .{ .name = "Raufen", .system = .{ .kategorie = .waffenlos, .steigern = .C, .behinderung = "@BE" } } }, + .{ .Kampftalent = .{ .name = "Ringen", .system = .{ .kategorie = .waffenlos, .steigern = .D, .behinderung = "@BE" } } }, + .{ .Kampftalent = .{ .name = "Saebel", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Schleuder", .system = .{ .kategorie = .fernkampf, .steigern = .E, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Schwerter", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Speere", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } }, + .{ .Kampftalent = .{ .name = "Stäbe", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Wurfbeile", .system = .{ .kategorie = .fernkampf, .steigern = .D, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Wurfmesser", .system = .{ .kategorie = .fernkampf, .steigern = .C, .behinderung = "@BE - 3" } } }, + .{ .Kampftalent = .{ .name = "Wurfspeere", .system = .{ .kategorie = .fernkampf, .steigern = .C, .behinderung = "@BE - 2" } } }, + .{ .Kampftalent = .{ .name = "Zweihandflegel", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } }, + .{ .Kampftalent = .{ .name = "Zweihand-Hiebwaffen", .system = .{ .kategorie = .nahkampf, .steigern = .D, .behinderung = "@BE - 3" } } }, + .{ .Kampftalent = .{ .name = "Zweihandschwerter/-säbel", .system = .{ .kategorie = .nahkampf, .steigern = .E, .behinderung = "@BE - 2" } } }, + }}}, }}; pub fn main() !void { diff --git a/zig/system.zig b/zig/system.zig index e393b24..fa4fca2 100644 --- a/zig/system.zig +++ b/zig/system.zig @@ -120,6 +120,32 @@ pub const ItemCompendium = foundry.Compendium(.Item, union(enum) { talentwert: u8 = 0, }), + Kampftalent: foundry.Item("Kampftalent", struct { + kategorie: enum { + waffenlos, + nahkampf, + fernkampf, + }, + + steigern: enum { + A_Star, + A, + B, + C, + D, + E, + F, + G, + H, + }, + + behinderung: String = "", + beschreibung: String = "", + + talentwert: u8 = 0, + attacke: u8 = 0, + parade: u8 = 0, + }), }); const Attribute = enum {