const foundry = @import("foundry.zig"); const String = []const u8; pub const SYSTEM_NAME = "dsa-4th-edition"; pub const SYSTEM_VERSION = "0.1.5"; pub const ItemCompendium = foundry.Compendium(.Item, union(enum) { const Entry = @This(); Folder: struct { name: String, entries: []const Entry, }, Gegenstand: foundry.Item("Gegenstand", struct { gewicht: Gewicht = .{ .value = 0, .unit = .stein }, preis: Preis = .{ .value = 0, .unit = .silbertaler }, }), Ruestung: foundry.Item("Ruestung", struct { angelegt: bool = false, gewicht: Gewicht = .{ .value = 0, .unit = .stein }, preis: Preis = .{ .value = 0, .unit = .silbertaler }, kopf: u8 = 0, brust: u8 = 0, ruecken: u8 = 0, bauch: u8 = 0, linker_arm: u8 = 0, rechter_arm: u8 = 0, linkes_bein: u8 = 0, rechtes_bein: u8 = 0, gesamt_ruestungsschutz: f64 = 0, gesamt_behinderung: f64 = 0, }), Bewaffnung: foundry.Item("Bewaffnung", struct { angelegt: bool = false, gewicht: Gewicht = .{ .value = 0, .unit = .stein }, preis: Preis = .{ .value = 0, .unit = .silbertaler }, nahkampfwaffe: struct { aktiv: bool = false, basis: String = "1d4", schwellenwert: u8 = 0, schadensschritte: u8 = 0, modifikator_attacke: i8 = 0, modifikator_parade: i8 = 0, initiative: i8 = 0, bruchfaktor: i8 = 0, distanzklasse: String = "", kampftalente: String = "", laenge: Laenge = .{ .value = 0, .unit = .schritt }, zweihaendig: bool = false, werfbar: bool = false, improvisiert: bool = false, priviligiert: bool = false, } = .{}, parierwaffe: struct { aktiv: bool = false, modifikator_attacke: i8 = 0, modifikator_parade: i8 = 0, initiative: i8 = 0, bruchfaktor: i8 = 0, } = .{}, schild: struct { aktiv: bool = false, groesse: String = "klein", modifikator_attacke: i8 = 0, modifikator_parade: i8 = 0, initiative: i8 = 0, bruchfaktor: i8 = 0, } = .{}, fernkampfwaffe: struct { aktiv: bool = false, basis: String = "1d6 + 1", laden: u8 = 0, reichweite1: u8 = 0, reichweite2: u8 = 0, reichweite3: u8 = 0, reichweite4: u8 = 0, reichweite5: u8 = 0, modifikator1: ?i8 = null, modifikator2: ?i8 = null, modifikator3: ?i8 = null, modifikator4: ?i8 = null, modifikator5: ?i8 = null, munitionskosten: u8 = 0, munitionsgewicht: u8 = 0, } = .{}, }), Talent: foundry.Item("Talent", struct { kategorie: enum { koerperliche, gesellschaftliche, natur, wissens, handwerks, } = .koerperliche, behinderung: String = "", attribute1: Attribute = .MU, attribute2: Attribute = .MU, attribute3: Attribute = .MU, talentwert: u8 = 0, }), Kampftalent: foundry.Item("Kampftalent", struct { kategorie: enum { waffenlos, nahkampf, fernkampf, } = .waffenlos, steigern: enum { A_Star, A, B, C, D, E, F, G, H, } = .A_Star, behinderung: String = "", beschreibung: String = "", talentwert: u8 = 0, attacke: u8 = 0, parade: u8 = 0, }), Sonderfertigkeit: foundry.Item("Sonderfertigkeit", struct { kategorie: enum { allgemein, kampf, magisch, klerikal, } = .allgemein, kosten: u64 = 0, verbreitung: u64 = 0, beschreibung: String = "", }), VorNachteil: foundry.Item("VorNachteil", struct { kategorie: enum { vorteil, nachteil } = .vorteil, kosten: u64 = 0, beschreibung: String = "", }), }); const Attribute = enum { MU, KL, IN, CH, FF, GE, KO, KK, pub fn jsonStringify(self: @This(), out: anytype) !void { const attribute = switch (self) { .MU => "courage", .KL => "cleverness", .IN => "intuition", .CH => "charisma", .FF => "dexterity", .GE => "agility", .KO => "constitution", .KK => "strength", }; try out.write(attribute); } }; const PreisUnit = enum { kreuzer, heller, silbertaler, dukaten, }; const Preis = struct { value: f64, unit: PreisUnit, }; const GewichtUnit = enum { gran, karat, skrupel, unze, stein, sack, quader, }; const Gewicht = struct { value: f64, unit: GewichtUnit, }; const LaengeUnit = enum { halbfinger, finger, spann, schritt, faden, lot, meile, tagesreise, baryd, }; const Laenge = struct { value: f64, unit: LaengeUnit, };