dsa-4th-edition/zig/system.zig
Sven Balzer 942c395f59 add zig build for compendium packs
move document types from template.json into system.json
change Talents into Items
add rolls for Talents
change the fallback language to german
2024-11-23 18:29:11 +01:00

149 lines
3.5 KiB
Zig

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: f64 = 0,
preis: f64 = 0,
}),
Ruestung: foundry.Item("Ruestung", struct {
gewicht: f64 = 0,
preis: f64 = 0,
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 {
gewicht: f64 = 0,
preis: f64 = 0,
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: u8 = 0,
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 = "1d4",
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,
},
behinderung: String = "",
attribute1: Attribute,
attribute2: Attribute,
attribute3: Attribute,
talentwert: u8 = 0,
}),
});
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);
}
};