277 lines
16 KiB
JavaScript
277 lines
16 KiB
JavaScript
Hooks.once("init", function() {
|
|
console.log("INIT");
|
|
|
|
CONFIG.Actor.dataModels.Player = DSA41_CharacterData;
|
|
CONFIG.Item.dataModels.Gegenstaende = DSA41_GegenstaendeData;
|
|
|
|
//DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet);
|
|
DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, {
|
|
makeDefault: true,
|
|
types: [
|
|
"Player",
|
|
]
|
|
});
|
|
|
|
//DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet);
|
|
DocumentSheetConfig.registerSheet(Item, "dsa41", DSA41_ItemSheet, {
|
|
makeDefault: true,
|
|
types: [
|
|
"Gegenstaende",
|
|
"Waffen",
|
|
"Ruestungen",
|
|
]
|
|
});
|
|
});
|
|
|
|
const { SchemaField, NumberField, StringField } = foundry.data.fields;
|
|
|
|
class AttributeField extends foundry.data.fields.SchemaField {
|
|
constructor() {
|
|
return super({
|
|
initial: new NumberField({ integer: true, initial: 8, min: 8, max: 14, }),
|
|
advancement: new NumberField({ integer: true, initial: 0, min: 0, max: 4, }),
|
|
modifier: new NumberField({ integer: true, initial: 0, min: 0, }),
|
|
});
|
|
}
|
|
}
|
|
|
|
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 {
|
|
race: new StringField(),
|
|
culture: new StringField(),
|
|
profession: new StringField(),
|
|
|
|
attributes: new SchemaField({
|
|
courage: new AttributeField(),
|
|
cleverness: new AttributeField(),
|
|
intuition: new AttributeField(),
|
|
charisma: new AttributeField(),
|
|
dexterity: new AttributeField(),
|
|
agility: new AttributeField(),
|
|
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 }),
|
|
}),
|
|
}),
|
|
}
|
|
}
|
|
|
|
prepareDerivedData() {
|
|
super.prepareDerivedData();
|
|
this.computed = {};
|
|
|
|
for (const [attribute, values] of Object.entries(this.attributes)) {
|
|
this.computed[attribute] = Object.values(values).reduce((a, b) => a + b, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
class DSA41_GegenstaendeData extends foundry.abstract.TypeDataModel {
|
|
static defineSchema() {
|
|
return {
|
|
gewicht: new NumberField({ integer: false, initial: 0, min: 0 }),
|
|
preis: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
};
|
|
}
|
|
}
|
|
|
|
class DSA41_RuestungenData extends foundry.abstract.TypeDataModel {
|
|
static defineSchema() {
|
|
return {
|
|
gewicht: new NumberField({ integer: false, initial: 0, min: 0 }),
|
|
preis: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
|
|
kopf: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
brust: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
ruecken: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
bauch: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
linker_arm: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
rechter_arm: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
linkes_bein: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
rechtes_bein: new NumberField({ integer: true, initial: 0, min: 0 }),
|
|
|
|
gesamt_ruestungsschutz: new NumberField({ integer: false, initial: 0, min: 0 }),
|
|
gesamt_behinderung: new NumberField({ integer: false, initial: 0, min: 0 }),
|
|
};
|
|
}
|
|
}
|
|
|
|
class DSA41_ActorSheet extends ActorSheet {
|
|
get template() {
|
|
return "systems/dsa-4th-edition/src/ActorSheet.html";
|
|
}
|
|
}
|
|
|
|
class DSA41_ItemSheet extends ItemSheet {
|
|
get template() {
|
|
return "systems/dsa-4th-edition/src/ItemSheets/" + this.item.type + ".html";
|
|
}
|
|
}
|