feature/wounds #55
|
|
@ -45,13 +45,14 @@ const convert = function (from, to, ofType) {
|
|||
readdirSync(SOURCE).forEach(file => {
|
||||
let originalSource = JSON.parse(readFileSync(join(SOURCE, file), {encoding: "utf8"}));
|
||||
let id = randomID();
|
||||
|
||||
let targetSource = {
|
||||
_id: id,
|
||||
_key: "!items!" + id,
|
||||
type: TYPE,
|
||||
img: originalSource.image,
|
||||
name: originalSource.name.trim(),
|
||||
system: {...originalSource}
|
||||
system: {...originalSource},
|
||||
}
|
||||
delete targetSource.system.image;
|
||||
let target = JSON.stringify(targetSource, null, 2);
|
||||
|
|
@ -101,6 +102,7 @@ async function prepareDB() {
|
|||
convert("./src/packs/_source/munition", "./src/packs/__source/munition", "Equipment");
|
||||
convert("./src/packs/_source/ruestzeug", "./src/packs/__source/ruestzeug", "Equipment");
|
||||
convert("./src/packs/_source/liturgien-und-segnungen", "./src/packs/__source/liturgien", "Liturgy");
|
||||
convert("./src/packs/_source/wunden", "./src/packs/__source/wunden", "ActiveEffect");
|
||||
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
|
|
|
|||
48
src/main.mjs
48
src/main.mjs
|
|
@ -127,6 +127,54 @@ Hooks.once("init", () => {
|
|||
label: 'DSA41.ActiveEffectLabels.ActiveFfect'
|
||||
})
|
||||
|
||||
game.settings.register('DSA_4-1', 'optional_trefferzonen', {
|
||||
name: "Optional: Trefferzonen",
|
||||
hint: "Ersetzt das Wundensystem aus dem BRW durch das Trefferzonensystem aus WdH",
|
||||
scope: "world",
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
onChange: value => {
|
||||
},
|
||||
requiresReload: true
|
||||
})
|
||||
|
||||
game.settings.register('DSA_4-1', 'optional_ruestungzonen', {
|
||||
name: "Optional: Zonenrüstung",
|
||||
hint: "Ersetzt das Rüstungssystem aus dem BRW durch das Zonenrüstungssystem aus WdH",
|
||||
scope: "world",
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
onChange: value => {
|
||||
},
|
||||
requiresReload: true
|
||||
})
|
||||
|
||||
game.settings.register('DSA_4-1', 'optional_ausdauer', {
|
||||
name: "Optional: Ausdauerregeln",
|
||||
hint: "Aktiviert Regeln für das Spiel mit Ausdauer",
|
||||
scope: "world",
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
onChange: value => {
|
||||
},
|
||||
requiresReload: true
|
||||
})
|
||||
|
||||
game.settings.register('DSA_4-1', 'optional_distanzklassen', {
|
||||
name: "Optional: Distanzklassen",
|
||||
hint: "Aktiviert Regeln für das Spiel mit Distanzklassen",
|
||||
scope: "world",
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
onChange: value => {
|
||||
},
|
||||
requiresReload: true
|
||||
})
|
||||
|
||||
return preloadHandlebarsTemplates();
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import BaseItem from "./base-item.mjs";
|
||||
|
||||
const {ArrayField, NumberField, StringField, HTMLField} = foundry.data.fields;
|
||||
const {ArrayField, BooleanField, NumberField, AnyField, StringField, HTMLField} = foundry.data.fields;
|
||||
|
||||
export class ActiveEffectDataModel extends BaseItem {
|
||||
|
||||
|
|
@ -8,6 +8,8 @@ export class ActiveEffectDataModel extends BaseItem {
|
|||
return {
|
||||
name: new StringField({required: true}),
|
||||
notes: new HTMLField(),
|
||||
unique: new BooleanField({initial: false}),
|
||||
effects: new AnyField()
|
||||
}
|
||||
/*
|
||||
|
||||
|
|
@ -33,12 +35,13 @@ export class ActiveEffectDataModel extends BaseItem {
|
|||
|
||||
_onCreate(data, options, userId) {
|
||||
super._onCreate(data, options, userId);
|
||||
if (this.parent.getEmbeddedCollection("ActiveEffect").contents.length === 0) {
|
||||
|
||||
console.log(data);
|
||||
if (this.parent.getEmbeddedCollection("ActiveEffect").contents.length === 0) {
|
||||
|
||||
this.parent.createEmbeddedDocuments("ActiveEffect", [{
|
||||
name: data.name,
|
||||
changes: [],
|
||||
changes: data.system.effects,
|
||||
duration: {},
|
||||
icon: this.img,
|
||||
}]);
|
||||
|
|
|
|||
|
|
@ -55,6 +55,10 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
|||
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
||||
mod: new NumberField({required: true, integer: true}),
|
||||
}),
|
||||
gs: new SchemaField({
|
||||
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
||||
mod: new NumberField({required: true, integer: true}),
|
||||
}),
|
||||
attribute: new SchemaField({
|
||||
mu: new SchemaField({
|
||||
start: new NumberField({required: true, integer: true}),
|
||||
|
|
@ -125,7 +129,18 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
|||
key: new StringField(),
|
||||
notiz: new StringField(),
|
||||
})),
|
||||
|
||||
wunden: new SchemaField({
|
||||
aktuell: new NumberField({required: true, integer: true}), // only with DSA_4-1.optional_trefferzonen = false
|
||||
max: new NumberField({required: true, integer: true}), // only with DSA_4-1.optional_trefferzonen = false
|
||||
mod: new NumberField({required: true, integer: true}), // only with DSA_4-1.optional_trefferzonen = false
|
||||
armlinks: new NumberField({required: true, integer: true, initial: 0}),
|
||||
armrechts: new NumberField({required: true, integer: true, initial: 0}),
|
||||
beinlinks: new NumberField({required: true, integer: true, initial: 0}),
|
||||
beinrechts: new NumberField({required: true, integer: true, initial: 0}),
|
||||
bauch: new NumberField({required: true, integer: true, initial: 0}),
|
||||
torso: new NumberField({required: true, integer: true, initial: 0}),
|
||||
kopf: new NumberField({required: true, integer: true, initial: 0}),
|
||||
}),
|
||||
heldenausruestung: new ArrayField(
|
||||
new SchemaField({
|
||||
links: new DocumentIdField(),
|
||||
|
|
|
|||
|
|
@ -28,63 +28,167 @@ export class Character extends Actor {
|
|||
const actorData = this;
|
||||
const systemData = actorData.system;
|
||||
|
||||
const mu = systemData.attribute.mu.aktuell + systemData.attribute.mu.mod;
|
||||
const kl = systemData.attribute.kl.aktuell + systemData.attribute.kl.mod;
|
||||
const _in = systemData.attribute.in.aktuell + systemData.attribute.in.mod;
|
||||
const ch = systemData.attribute.ch.aktuell + systemData.attribute.ch.mod;
|
||||
systemData.attribute.mu.aktuell = systemData.attribute.mu.start + systemData.attribute.mu.mod;
|
||||
systemData.attribute.kl.aktuell = systemData.attribute.kl.start + systemData.attribute.kl.mod;
|
||||
systemData.attribute.in.aktuell = systemData.attribute.in.start + systemData.attribute.in.mod;
|
||||
systemData.attribute.ch.aktuell = systemData.attribute.ch.start + systemData.attribute.ch.mod;
|
||||
|
||||
const ff = systemData.attribute.ff.aktuell + systemData.attribute.ff.mod;
|
||||
const ge = systemData.attribute.ge.aktuell + systemData.attribute.ge.mod;
|
||||
const ko = systemData.attribute.kk.aktuell + systemData.attribute.ko.mod;
|
||||
const kk = systemData.attribute.kk.aktuell + systemData.attribute.kk.mod;
|
||||
systemData.attribute.ff.aktuell = systemData.attribute.ff.start + systemData.attribute.ff.mod;
|
||||
systemData.attribute.ge.aktuell = systemData.attribute.ge.start + systemData.attribute.ge.mod;
|
||||
systemData.attribute.ko.aktuell = systemData.attribute.ko.start + systemData.attribute.ko.mod;
|
||||
systemData.attribute.kk.aktuell = systemData.attribute.kk.start + systemData.attribute.kk.mod;
|
||||
|
||||
const mu = systemData.attribute.mu.aktuell;
|
||||
const kl = systemData.attribute.kl.aktuell;
|
||||
const _in = systemData.attribute.in.aktuell;
|
||||
const ch = systemData.attribute.ch.aktuell;
|
||||
const ff = systemData.attribute.ff.aktuell;
|
||||
const ge = systemData.attribute.ge.aktuell;
|
||||
const ko = systemData.attribute.ko.aktuell;
|
||||
const kk = systemData.attribute.kk.aktuell;
|
||||
|
||||
systemData.lep.max = Math.round((ko + ko + kk) / 2) + systemData.lep.mod;
|
||||
systemData.aup.max = Math.round((mu + ko + ge) / 2) + systemData.aup.mod;
|
||||
systemData.asp.max = Math.round((mu + _in + ch) / 2) + systemData.asp.mod;
|
||||
|
||||
|
||||
systemData.at = Math.round((mu + ge + kk) / 5);
|
||||
systemData.pa = Math.round((_in + ge + kk) / 5);
|
||||
systemData.fk = Math.round((_in + ff + kk) / 5);
|
||||
systemData.at = systemData.at ?? {links: {}, rechts: {}}
|
||||
systemData.at.links = systemData.at.links ?? {
|
||||
aktuell: 0,
|
||||
mods: 0
|
||||
}
|
||||
systemData.at.rechts = systemData.at.rechts ?? {
|
||||
aktuell: 0,
|
||||
mods: 0
|
||||
}
|
||||
systemData.at.basis = Math.round((mu + ge + kk) / 5)
|
||||
systemData.at.aktuell = systemData.at.basis + (systemData.at.mod ?? 0);
|
||||
systemData.at.links.aktuell = systemData.at.basis + (systemData.at.links.mod ?? 0);
|
||||
systemData.at.rechts.aktuell = systemData.at.basis + (systemData.at.rechts.mod ?? 0);
|
||||
systemData.pa = systemData.pa ?? {links: {}, rechts: {}}
|
||||
systemData.pa.links = systemData.pa.links ?? {
|
||||
aktuell: 0,
|
||||
mods: 0
|
||||
}
|
||||
systemData.pa.rechts = systemData.pa.rechts ?? {
|
||||
aktuell: 0,
|
||||
mods: 0
|
||||
}
|
||||
systemData.pa.basis = Math.round((_in + ge + kk) / 5);
|
||||
systemData.pa.aktuell = systemData.pa.basis + (systemData.pa.mod ?? 0);
|
||||
systemData.pa.links.aktuell = systemData.pa.basis + (systemData.pa.links.mod ?? 0);
|
||||
systemData.pa.rechts.aktuell = systemData.pa.basis + (systemData.pa.links.mod ?? 0);
|
||||
systemData.fk = systemData.fk ?? {
|
||||
aktuell: 0,
|
||||
mods: 0
|
||||
}
|
||||
systemData.fk.basis = Math.round((_in + ff + kk) / 5);
|
||||
systemData.fk.aktuell = systemData.fk.basis + (systemData.fk.mod ?? 0);
|
||||
|
||||
systemData.ini.aktuell = Math.round((mu + mu + _in + ge) / 5) + systemData.ini.mod;
|
||||
systemData.mr.aktuell = Math.round((mu + kl + ko) / 5) + systemData.mr.mod;
|
||||
systemData.ini.basis = Math.round((mu + mu + _in + ge) / 5)
|
||||
systemData.ini.aktuell = systemData.ini.basis + (systemData.ini.mod ?? 0);
|
||||
systemData.mr.basis = Math.round((mu + kl + ko) / 5)
|
||||
systemData.mr.aktuell = systemData.mr.basis + (systemData.mr.mod ?? 0);
|
||||
systemData.gs.basis = 6;
|
||||
systemData.gs.aktuell = systemData.gs.basis + (systemData.gs.mod ?? 0); // TOOD: get GS from species
|
||||
|
||||
systemData.rs = 0;
|
||||
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs = {
|
||||
torso: 0,
|
||||
bauch: 0,
|
||||
armlinks: 0,
|
||||
armrechts: 0,
|
||||
beinlinks: 0,
|
||||
beinrechts: 0,
|
||||
kopf: 0,
|
||||
}; // only with DSA_4-1.optional_trefferzonen = true
|
||||
} else {
|
||||
systemData.rs = 0; // only with DSA_4-1.optional_trefferzonen = false
|
||||
}
|
||||
systemData.be = 0;
|
||||
|
||||
|
||||
// half KO is the maximum a character can sustain wounds before collapsing
|
||||
systemData.wunden.max = ko / 2;
|
||||
if (game.settings.get("DSA_4-1", "optional_trefferzonen")) {
|
||||
systemData.wunden.kopf = 0;
|
||||
systemData.wunden.torso = 0;
|
||||
systemData.wunden.bauch = 0;
|
||||
systemData.wunden.armlinks = 0;
|
||||
systemData.wunden.armrechts = 0;
|
||||
systemData.wunden.beinlinks = 0;
|
||||
systemData.wunden.beinrechts = 0;
|
||||
}
|
||||
|
||||
|
||||
// map current set to RS and BE
|
||||
|
||||
const ausruestung = systemData.heldenausruestung[systemData.setEquipped];
|
||||
if (ausruestung) {
|
||||
if (ausruestung.brust) {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
||||
systemData.be += systemData.parent.items.get(ausruestung.brust).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs.torso = systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
if (ausruestung.bauch) {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.bauch).system.armorValue ?? 0
|
||||
systemData.be += systemData.parent.items.get(ausruestung.bauch).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs.bauch = systemData.parent.items.get(ausruestung.bauch).system.armorValue ?? 0
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.bauch).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
if (ausruestung.ruecken) {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.ruecken).system.armorValue ?? 0
|
||||
systemData.be += systemData.parent.items.get(ausruestung.ruecken).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
// ruecken is not a valid trefferzone
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.ruecken).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
if (ausruestung.armlinks) {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.armlinks).system.armorValue ?? 0
|
||||
systemData.be += systemData.parent.items.get(ausruestung.armlinks).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs.armlinks = systemData.parent.items.get(ausruestung.armlinks).system.armorValue ?? 0
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.armlinks).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
if (ausruestung.armrechts) {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.armrechts).system.armorValue ?? 0
|
||||
systemData.be += systemData.parent.items.get(ausruestung.armrechts).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs.armrechts = systemData.parent.items.get(ausruestung.armrechts).system.armorValue ?? 0
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.armrechts).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
if (ausruestung.beinlinks) {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.beinlinks).system.armorValue ?? 0
|
||||
systemData.be += systemData.parent.items.get(ausruestung.beinlinks).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs.beinlinks = systemData.parent.items.get(ausruestung.beinlinks).system.armorValue ?? 0
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.beinlinks).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
if (ausruestung.beinrechts) {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.beinrechts).system.armorValue ?? 0
|
||||
systemData.be += systemData.parent.items.get(ausruestung.beinrechts).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs.beinrechts = systemData.parent.items.get(ausruestung.beinrechts).system.armorValue ?? 0
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.beinrechts).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
if (ausruestung.kopf) {
|
||||
systemData.be += systemData.parent.items.get(ausruestung.kopf).system.armorHandicap ?? 0
|
||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||
systemData.rs.kopf = systemData.parent.items.get(ausruestung.kopf).system.armorValue ?? 0
|
||||
} else {
|
||||
systemData.rs += systemData.parent.items.get(ausruestung.kopf).system.armorValue ?? 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -125,6 +125,19 @@ export class CharacterSheet extends ActorSheet {
|
|||
context.name = context.derived.name ?? actorData.name;
|
||||
context.effects = actorData.effects ?? [];
|
||||
|
||||
context.maxWounds = actorData.system.wunden.max ?? 3;
|
||||
context.wounds = actorData.system.wunden.aktuell ?? 0;
|
||||
context.woundsFilled = [];
|
||||
for (let i = 1; i <= context.maxWounds; i++) {
|
||||
context.woundsFilled[i] = i <= context.wounds
|
||||
}
|
||||
|
||||
context.zonenruestung = game.settings.get("DSA_4-1", "optional_ruestungzonen")
|
||||
context.trefferzonen = game.settings.get("DSA_4-1", "optional_trefferzonen")
|
||||
context.ausdauer = game.settings.get("DSA_4-1", "optional_ausdauer")
|
||||
|
||||
|
||||
this.#addEffectsToContext(context)
|
||||
this.#addSkillsToContext(context)
|
||||
this.#addAdvantagesToContext(context)
|
||||
this.#addSpecialAbilitiesToContext(context)
|
||||
|
|
@ -137,6 +150,43 @@ export class CharacterSheet extends ActorSheet {
|
|||
return context;
|
||||
}
|
||||
|
||||
#addEffectsToContext(context) {
|
||||
const actorData = context.data;
|
||||
|
||||
context.isGM = game.user.isGM
|
||||
context.effects = [];
|
||||
Object.values(actorData.items).forEach((item, index) => {
|
||||
if (item.type === "ActiveEffect") {
|
||||
const effect = item.effects[0];
|
||||
const conditions = []
|
||||
|
||||
if (effect) {
|
||||
effect.changes.forEach(change => {
|
||||
if (change.key.indexOf("wunden") === -1) {
|
||||
const key = change.key
|
||||
.replace(/system\./g, "")
|
||||
.replace(/\.mod/g, "")
|
||||
.replace(/attribute./g, "")
|
||||
.replace(/.links/g, "(Links)")
|
||||
.replace(/.rechts/g, "(Rechts)")
|
||||
const value = Number(change.value) > 0 ? "+" + change.value : change.value;
|
||||
conditions.push(
|
||||
`${key}${value}`
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
context.effects.push({
|
||||
name: item.name,
|
||||
conditions: conditions.join(" "),
|
||||
id: item._id,
|
||||
actor: actorData._id
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#addSpellsToContext(context) {
|
||||
const actorData = context.data;
|
||||
context.spells = [];
|
||||
|
|
@ -189,56 +239,60 @@ export class CharacterSheet extends ActorSheet {
|
|||
"ff": await this.#getModsOfAttribute('system.attribute.ff.mod'),
|
||||
"ge": await this.#getModsOfAttribute('system.attribute.ge.mod'),
|
||||
"ko": await this.#getModsOfAttribute('system.attribute.ko.mod'),
|
||||
"kk": await this.#getModsOfAttribute('system.attribute.kk.mod')
|
||||
"kk": await this.#getModsOfAttribute('system.attribute.kk.mod'),
|
||||
"at": await this.#getModsOfAttribute('system.at.mod'),
|
||||
"pa": await this.#getModsOfAttribute('system.pa.mod'),
|
||||
"fk": await this.#getModsOfAttribute('system.fk.mod'),
|
||||
|
||||
}
|
||||
context.attributes = [
|
||||
{
|
||||
eigenschaft: "mu",
|
||||
name: "MU",
|
||||
tooltip: "Mut",
|
||||
wert: (context.derived.attribute.mu.aktuell + context.derived.attribute.mu.mod) ?? 0,
|
||||
wert: context.derived.attribute.mu.aktuell ?? 0,
|
||||
},
|
||||
{
|
||||
eigenschaft: "kl",
|
||||
name: "KL",
|
||||
tooltip: "Klugheit",
|
||||
wert: (context.derived.attribute.kl.aktuell + context.derived.attribute.kl.mod) ?? 0,
|
||||
wert: context.derived.attribute.kl.aktuell ?? 0,
|
||||
},
|
||||
{
|
||||
eigenschaft: "in",
|
||||
name: "IN",
|
||||
tooltip: "Intuition",
|
||||
wert: (context.derived.attribute.in.aktuell + context.derived.attribute.in.mod) ?? 0,
|
||||
wert: context.derived.attribute.in.aktuell ?? 0,
|
||||
},
|
||||
{
|
||||
eigenschaft: "ch",
|
||||
name: "CH",
|
||||
tooltip: "Charisma",
|
||||
wert: (context.derived.attribute.ch.aktuell + context.derived.attribute.ch.mod) ?? 0,
|
||||
wert: context.derived.attribute.ch.aktuell ?? 0,
|
||||
},
|
||||
{
|
||||
eigenschaft: "ff",
|
||||
name: "FF",
|
||||
tooltip: "Fingerfertigkeit",
|
||||
wert: (context.derived.attribute.ff.aktuell + context.derived.attribute.ff.mod) ?? 0,
|
||||
wert: context.derived.attribute.ff.aktuell ?? 0,
|
||||
},
|
||||
{
|
||||
eigenschaft: "ge",
|
||||
name: "GE",
|
||||
tooltip: "Geschicklichkeit",
|
||||
wert: (context.derived.attribute.ge.aktuell + context.derived.attribute.ge.mod) ?? 0,
|
||||
wert: context.derived.attribute.ge.aktuell ?? 0,
|
||||
},
|
||||
{
|
||||
eigenschaft: "ko",
|
||||
name: "KO",
|
||||
tooltip: "Konstitution",
|
||||
wert: (context.derived.attribute.ko.aktuell + context.derived.attribute.ko.mod) ?? 0,
|
||||
wert: context.derived.attribute.ko.aktuell ?? 0,
|
||||
},
|
||||
{
|
||||
eigenschaft: "kk",
|
||||
name: "KK",
|
||||
tooltip: "Körperkraft",
|
||||
wert: (context.derived.attribute.kk.aktuell + context.derived.attribute.kk.mod) ?? 0,
|
||||
wert: context.derived.attribute.kk.aktuell ?? 0,
|
||||
},
|
||||
|
||||
];
|
||||
|
|
@ -329,8 +383,8 @@ export class CharacterSheet extends ActorSheet {
|
|||
context.attacks.push({
|
||||
name: obj.name,
|
||||
using: fernkampf.name,
|
||||
atroll: `1d20 + ${this.object.system.fk + obj.system.at}`,
|
||||
at: `1w20 + ${this.object.system.fk + obj.system.at}`,
|
||||
atroll: `1d20 + ${this.object.system.fk.aktuell + obj.system.at}`,
|
||||
at: `1w20 + ${this.object.system.fk.aktuell + obj.system.at}`,
|
||||
iniroll: `(${context.inidice})d6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
|
||||
ini: `${context.inidice}w6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
|
||||
})
|
||||
|
|
@ -343,10 +397,10 @@ export class CharacterSheet extends ActorSheet {
|
|||
context.attacks.push({
|
||||
name: obj.name,
|
||||
using: links.name,
|
||||
atroll: `1d20 + ${this.object.system.at + obj.system.at + links.system.attackModifier}`,
|
||||
at: `1w20 + ${this.object.system.at + obj.system.at + links.system.attackModifier}`,
|
||||
paroll: `1d20 + ${this.object.system.pa + obj.system.pa + links.system.parryModifier}`,
|
||||
pa: `1w20 + ${this.object.system.pa + obj.system.pa + links.system.parryModifier}`,
|
||||
atroll: `1d20 + ${this.object.system.at.links.aktuell + obj.system.at + links.system.attackModifier}`,
|
||||
at: `1w20 + ${this.object.system.at.links.aktuell + obj.system.at + links.system.attackModifier}`,
|
||||
paroll: `1d20 + ${this.object.system.pa.links.aktuell + obj.system.pa + links.system.parryModifier}`,
|
||||
pa: `1w20 + ${this.object.system.pa.links.aktuell + obj.system.pa + links.system.parryModifier}`,
|
||||
iniroll: `(${context.inidice})d6 + ${context.inivalue + links.system.iniModifier ?? 0}`,
|
||||
ini: `${context.inidice}w6 + ${context.inivalue + links.system.iniModifier ?? 0}`,
|
||||
})
|
||||
|
|
@ -360,10 +414,10 @@ export class CharacterSheet extends ActorSheet {
|
|||
context.attacks.push({
|
||||
name: obj.name,
|
||||
using: rechts.name,
|
||||
atroll: `1d20 + ${this.object.system.at + obj.system.at + rechts.system.attackModifier}`,
|
||||
at: `1w20 + ${this.object.system.at + obj.system.at + rechts.system.attackModifier}`,
|
||||
paroll: `1d20 + ${this.object.system.pa + obj.system.pa + rechts.system.parryModifier}`,
|
||||
pa: `1w20 + ${this.object.system.pa + obj.system.pa + rechts.system.parryModifier}`,
|
||||
atroll: `1d20 + ${this.object.system.at.rechts.aktuell + obj.system.at + rechts.system.attackModifier}`,
|
||||
at: `1w20 + ${this.object.system.at.rechts.aktuell + obj.system.at + rechts.system.attackModifier}`,
|
||||
paroll: `1d20 + ${this.object.system.pa.rechts.aktuell + obj.system.pa + rechts.system.parryModifier}`,
|
||||
pa: `1w20 + ${this.object.system.pa.rechts.aktuell + obj.system.pa + rechts.system.parryModifier}`,
|
||||
iniroll: `(${context.inidice})d6 + ${context.inivalue + rechts.system.iniModifier ?? 0}`,
|
||||
ini: `${context.inidice}w6 + ${context.inivalue + rechts.system.iniModifier ?? 0}`,
|
||||
})
|
||||
|
|
@ -753,10 +807,7 @@ export class CharacterSheet extends ActorSheet {
|
|||
const array = Array.from(actor.items);
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
if (array[i].name === activeEffect.name) {
|
||||
// replace active effect
|
||||
actor.deleteEmbeddedDocuments('Item', [array[i].id]).then(() => {
|
||||
console.log("await")
|
||||
})
|
||||
// replace active effect if its unique
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -792,6 +843,13 @@ export class CharacterSheet extends ActorSheet {
|
|||
this.object.update({"system.setEquipped": id})
|
||||
})
|
||||
|
||||
html.on('click', '[data-operation="removeEffect"]', (evt) => {
|
||||
const {actorId, effectId} = evt.currentTarget.dataset;
|
||||
if (game.user.isGM) {
|
||||
this.object.items.get(effectId).delete();
|
||||
}
|
||||
})
|
||||
|
||||
html.on('click', '.talent.rollable', (evt) => {
|
||||
this._onTalentRoll(evt);
|
||||
});
|
||||
|
|
@ -911,6 +969,16 @@ export class CharacterSheet extends ActorSheet {
|
|||
}
|
||||
]);
|
||||
|
||||
html.on('click', '[data-operation="addWounds"]', async (evt) => {
|
||||
const {value} = evt.currentTarget.dataset
|
||||
this.object.update({"system.wunden.aktuell": value})
|
||||
})
|
||||
|
||||
html.on('click', '[data-operation="reduceWounds"]', async (evt) => {
|
||||
const {value} = evt.currentTarget.dataset
|
||||
this.object.update({"system.wunden.aktuell": value})
|
||||
})
|
||||
|
||||
html.on('click', '.liturgy.rollable', async (evt) => {
|
||||
|
||||
evt.stopPropagation();
|
||||
|
|
@ -963,7 +1031,6 @@ export class CharacterSheet extends ActorSheet {
|
|||
})
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#handleDroppedEquipment(actor, equipment) {
|
||||
|
|
|
|||
|
|
@ -30,10 +30,10 @@ export class GroupSheet extends ActorSheet {
|
|||
// update group
|
||||
const settings = {...group.system.settings}
|
||||
character.items.filter((i) => i.type === "Advantage").forEach((advantage) => {
|
||||
settings[this.#stringToKeyFieldName(advantage.name)] = false
|
||||
settings[sheet.#stringToKeyFieldName(advantage.name)] = false
|
||||
})
|
||||
character.items.filter((i) => i.type === "Skill").forEach((skill) => {
|
||||
settings[this.#stringToKeyFieldName(skill.name)] = false
|
||||
settings[sheet.#stringToKeyFieldName(skill.name)] = false
|
||||
}),
|
||||
await group.update({
|
||||
system: {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"name": "Wunde Rechter Arm",
|
||||
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am rechten Arm verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden.armrechts",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.at.rechts.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.atribute.pa.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.rechts.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.kk.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.ff.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"name": "Wunde Linker Arm",
|
||||
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am linken Arm verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden.armlinks",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.at.links.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.links.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.kk.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.ff.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"name": "Bauchwunde",
|
||||
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am Bauch verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden.bauch",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.at.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.ko.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.kk.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.gs.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"name": "Wunde Rechtes Bein",
|
||||
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am rechten Bein verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden.beinrechts",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.at.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.ge.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.ini.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.gs.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"name": "Wunde Linkes Bein",
|
||||
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am linken Bein verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden.beinlinks",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.at.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.ge.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.ini.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.gs.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"name": "Kopfwunde",
|
||||
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am Kopf verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden.kopf",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.mu.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.kl.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.in.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.ini.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"name": "Brustwunde",
|
||||
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde an der Brust verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden.torso",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.kk.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.ko.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.at.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"name": "Wunde",
|
||||
"notes": "Nur für das Spiel ohne Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde verursacht",
|
||||
"unique": false,
|
||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||
"effects": [
|
||||
{
|
||||
"key": "system.wunden",
|
||||
"mode": 2,
|
||||
"value": "1",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.at.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.pa.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.fk.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.ini.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.attribute.ge.mod",
|
||||
"mode": 2,
|
||||
"value": "-2",
|
||||
"priority": 10
|
||||
},
|
||||
{
|
||||
"key": "system.gs.mod",
|
||||
"mode": 2,
|
||||
"value": "-1",
|
||||
"priority": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -240,10 +240,9 @@
|
|||
}
|
||||
|
||||
.backpack.active {
|
||||
padding: 8px;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 320px;
|
||||
grid-template-rows: 64px 1fr;
|
||||
grid-template-rows: 74px 1fr;
|
||||
gap: 10px;
|
||||
height: 100%;
|
||||
grid-template-areas:
|
||||
|
|
@ -284,8 +283,194 @@
|
|||
}
|
||||
|
||||
|
||||
.tab.combat {
|
||||
.tab.combat.active {
|
||||
|
||||
display: grid;
|
||||
|
||||
grid-template-columns: 1fr 320px;
|
||||
grid-template-rows: 32px 32px 1fr;
|
||||
grid-template-areas: "res res" "wounds wounds" "actions actions";
|
||||
gap: 10px;
|
||||
|
||||
.tab-resources {
|
||||
grid-area: res;
|
||||
}
|
||||
|
||||
.wounds {
|
||||
position: relative;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
margin-bottom: 8px;
|
||||
padding-left: 130px;
|
||||
grid-area: wounds;
|
||||
|
||||
label {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
line-height: 24px;
|
||||
width: 120px;
|
||||
bottom: 0;
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
height: 24px;
|
||||
display: inline-block;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.filled-segment {
|
||||
border: 1px solid black;
|
||||
background-image: url('../assets/gradient.png');
|
||||
background-size: 24px 100%;
|
||||
position: relative;
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 24px;
|
||||
color: white;
|
||||
text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.3);
|
||||
background-color: rgba(255, 0, 0, 0.8);
|
||||
background-blend-mode: multiply;
|
||||
|
||||
}
|
||||
|
||||
.empty-segment {
|
||||
border: 1px solid black;
|
||||
background-image: url('../assets/gradient.png');
|
||||
background-size: 32px 100%;
|
||||
position: relative;
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 24px;
|
||||
color: gold;
|
||||
text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.3);
|
||||
background-color: rgba(0, 0, 0, 0.8);
|
||||
background-blend-mode: multiply;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.actions {
|
||||
grid-area: actions;
|
||||
}
|
||||
|
||||
&.zones {
|
||||
grid-template-areas: "res res" "wounds wounds" "actions paperdoll";
|
||||
|
||||
.paperdoll {
|
||||
grid-area: paperdoll;
|
||||
|
||||
div {
|
||||
position: relative;
|
||||
margin-left: 9px;
|
||||
margin-top: 42px;
|
||||
|
||||
.wound {
|
||||
position: absolute;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 16px;
|
||||
border: 1px solid black;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
||||
line-height: 32px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
color: red;
|
||||
|
||||
|
||||
&.armlinks {
|
||||
top: 146px;
|
||||
left: 210px;
|
||||
}
|
||||
|
||||
&.armrechts {
|
||||
top: 146px;
|
||||
left: 60px;
|
||||
}
|
||||
|
||||
&.beinlinks {
|
||||
top: 346px;
|
||||
left: 210px;
|
||||
}
|
||||
|
||||
&.beinrechts {
|
||||
top: 346px;
|
||||
left: 60px;
|
||||
}
|
||||
|
||||
&.bauch {
|
||||
top: 166px;
|
||||
left: 136px;
|
||||
}
|
||||
|
||||
&.kopf {
|
||||
top: 6px;
|
||||
left: 136px
|
||||
}
|
||||
|
||||
&.torso {
|
||||
top: 86px;
|
||||
left: 110px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.armor {
|
||||
position: absolute;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 0 0 16px 16px;
|
||||
line-height: 32px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border: 1px solid silver;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
||||
color: silver;
|
||||
|
||||
&.armlinks {
|
||||
top: 180px;
|
||||
left: 210px;
|
||||
}
|
||||
|
||||
&.armrechts {
|
||||
top: 180px;
|
||||
left: 60px;
|
||||
}
|
||||
|
||||
&.beinlinks {
|
||||
top: 380px;
|
||||
left: 210px;
|
||||
}
|
||||
|
||||
&.beinrechts {
|
||||
top: 380px;
|
||||
left: 60px;
|
||||
}
|
||||
|
||||
&.bauch {
|
||||
top: 200px;
|
||||
left: 136px;
|
||||
}
|
||||
|
||||
&.kopf {
|
||||
top: 40px;
|
||||
left: 136px
|
||||
}
|
||||
|
||||
&.torso {
|
||||
top: 120px;
|
||||
left: 110px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -434,23 +619,23 @@
|
|||
& > div {
|
||||
|
||||
|
||||
height: 48px;
|
||||
height: 32px;
|
||||
position: relative;
|
||||
|
||||
label {
|
||||
width: 80px;
|
||||
line-height: 48px;
|
||||
line-height: 32px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
input {
|
||||
display: inline-block;
|
||||
width: 40px;
|
||||
height: 48px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
span.inline {
|
||||
line-height: 48px;
|
||||
line-height: 32px;
|
||||
vertical-align: middle;
|
||||
width: 40px;
|
||||
text-align: center;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,14 @@
|
|||
"type": "Item",
|
||||
"path": "packs/munition",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "Wounds",
|
||||
"label": "Trefferzonen Wunden",
|
||||
"system": "DSA_4-1",
|
||||
"type": "Item",
|
||||
"path": "packs/wunden",
|
||||
"private": false
|
||||
}
|
||||
],
|
||||
"languages": [
|
||||
|
|
|
|||
|
|
@ -22,9 +22,11 @@
|
|||
<label>LeP: {{this.lep}}</label><span class="resource-fill lep" style="width: {{this.lepper}}%"></span>
|
||||
</div>
|
||||
|
||||
{{#if ausdauer}}
|
||||
<div class="sidebar-element resource-bar">
|
||||
<label>AuP: {{this.aup}}</label><span class="resource-fill aup" style="width: {{this.aupper}}%"></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.hasLiturgies}}
|
||||
<div class="sidebar-element resource-bar">
|
||||
|
|
@ -74,7 +76,7 @@
|
|||
<a class="item" data-tab="backpack">Inventar</a>
|
||||
{{#if this.hasSpells}}<a class="item" data-tab="spells">Zauber</a>{{/if}}
|
||||
{{#if this.hasLiturgies}}<a class="item" data-tab="liturgies">Liturgien</a>{{/if}}
|
||||
<a class="item" data-tab="pets">Begleiter</a>
|
||||
<a class="item" data-tab="effects">Effekte</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
|
|
@ -211,6 +213,33 @@
|
|||
<label>Sozialstatus</label>
|
||||
<input value="{{this.system.attribute.so.aktuell}}">
|
||||
</div>
|
||||
<div class="attribute">
|
||||
<label>AT-Basis</label>
|
||||
<input value="{{derived.at.basis}}">
|
||||
<div class="mods">
|
||||
{{#each this.mods.at}}
|
||||
<span class="mod" title="{{this.name}}">{{this.value}}</span>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="attribute">
|
||||
<label>PA-Basis</label>
|
||||
<input value="{{derived.pa.basis}}">
|
||||
<div class="mods">
|
||||
{{#each this.mods.pa}}
|
||||
<span class="mod" title="{{this.name}}">{{this.value}}</span>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="attribute">
|
||||
<label>FK-Basis</label>
|
||||
<input value="{{derived.fk.basis}}">
|
||||
<div class="mods">
|
||||
{{#each this.mods.fk}}
|
||||
<span class="mod" title="{{this.name}}">{{this.value}}</span>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resources-overview">
|
||||
<div class="attribute">
|
||||
|
|
@ -218,21 +247,27 @@
|
|||
<input value="{{actor.system.lep.aktuell}}">
|
||||
<input value="{{actor.system.lep.max}}">
|
||||
</div>
|
||||
{{#if ausdauer}}
|
||||
<div class="attribute">
|
||||
<label>Ausdauer</label>
|
||||
<input value="{{actor.system.aup.aktuell}}">
|
||||
<input value="{{actor.system.aup.max}}">
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if hasSpells}}
|
||||
<div class="attribute">
|
||||
<label>Astralenergie</label>
|
||||
<input value="{{actor.system.asp.aktuell}}">
|
||||
<input value="{{actor.system.asp.max}}">
|
||||
</div>
|
||||
<div class="attribute">
|
||||
{{/if}}
|
||||
{{#if hasLiturgies}}
|
||||
<div class="attribute">
|
||||
<label>Karmaenergie</label>
|
||||
<input value="{{actor.system.kap.aktuell}}">
|
||||
<input value="{{actor.system.kap.max}}">
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="advantages">
|
||||
<h3>Vor- und Nachteile</h3>
|
||||
|
|
@ -252,7 +287,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||
<div class="tab combat {{#if (or trefferzonen zonenruestung)}}zones{{/if}}" data-group="primary"
|
||||
data-tab="combat">
|
||||
|
||||
<div class="tab-resources">
|
||||
|
||||
|
|
@ -268,16 +304,20 @@
|
|||
<span class="inline">von</span>
|
||||
<input type="number" name="system.lep.max" value="{{actor.system.lep.max}}"/>
|
||||
</div>
|
||||
{{#if ausdauer}}
|
||||
<div class="ausdauer">
|
||||
<label>Ausdauerpunkte:</label>
|
||||
<input type="number" name="system.aup.aktuell" value="{{actor.system.aup.aktuell}}"/>
|
||||
<span class="inline">von</span>
|
||||
<input type="number" name="system.aup.max" value="{{actor.system.aup.max}}"/>
|
||||
</div>
|
||||
<div class="armor">
|
||||
{{/if}}
|
||||
{{#if (not zonenruestung)}}
|
||||
<div class="armor">
|
||||
<label>RS:</label>
|
||||
{{derived.rs}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="handicap">
|
||||
<label>BE:</label>
|
||||
{{derived.be}}
|
||||
|
|
@ -285,13 +325,64 @@
|
|||
|
||||
|
||||
</div>
|
||||
{{#if (not trefferzonen)}}
|
||||
<div class="wounds">
|
||||
<label data-operation="reduceWounds" data-value="0">Wunden: {{this.wounds}} / {{this.maxWounds}}</label>
|
||||
{{#each this.woundsFilled}}
|
||||
{{#if this}}
|
||||
<div class="filled-segment" data-operation="reduceWounds"
|
||||
data-value="{{@index}}">{{@index}}</div>
|
||||
{{else}}
|
||||
<div class="empty-segment" data-operation="addWounds" data-value="{{@index}}">{{@index}}</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
||||
<div class="actions">
|
||||
<h3>Aktionen im Kampf</h3>
|
||||
{{#each this.actions}}
|
||||
{{> "systems/DSA_4-1/templates/ui/partial-action-button.hbs" this}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
{{#if (or trefferzonen zonenruestung)}}
|
||||
<div class="paperdoll">
|
||||
<h3>{{#if (and trefferzonen zonenruestung)}}Trefferzonen{{/if}}{{#if
|
||||
(and trefferzonen (not zonenruestung))}}Wunden{{/if}}{{#if
|
||||
(and (not trefferzonen) zonenruestung)}}Rüstung{{/if}}</h3>
|
||||
<div>
|
||||
<svg
|
||||
width="280"
|
||||
height="530"
|
||||
viewBox="0 0 70 140"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path class="paperdoll-image"
|
||||
d="m 22.868053,0.6591628 0.658626,-0.52687462 6.270125,4.42573652 3.97809,0.5795595 0.605938,-4.58379633 11.828915,2.02846193 0.07905,2.3182421 3.556578,-0.9220267 6.691636,3.7671414 2.292014,3.7671454 -4.030787,0.05268 0.89573,3.951549 -1.106491,2.23921 -3.345818,-0.632247 0.869387,4.241332 v 2.476303 l 1.422627,-0.02634 0.500563,1.343527 h 3.29312 l 1.975878,3.424677 0.05267,2.818774 2.371046,6.243447 6.665292,14.72611 1.949534,0.658592 0.34249,4.794545 -0.289802,1.606966 0.922074,1.765023 -0.395167,2.897805 2.002222,6.743979 1.027449,1.949433 -0.737657,5.031644 -3.925413,4.399394 -0.922074,-0.553222 0.579595,-1.844054 -1.896847,1.264499 -0.526897,-0.790314 1.475315,-1.369869 -1.36994,-5.690236 -0.974762,4.083275 -1.053803,-0.342473 -0.790345,-3.108552 0.579584,-2.370933 0.526907,-0.658592 -0.263459,-0.500527 0.289803,-1.554277 0.948418,-2.739737 -0.447865,-2.212876 -1.106492,-0.974715 -1.554356,-1.501588 -2.423744,-4.030581 0.711314,-1.264496 -3.793683,-5.532171 -0.02638,-1.554275 -1.475326,-1.554276 -1.185522,-3.213929 -0.869387,-0.763967 -3.029682,4.820892 -1.159179,0.447843 0.447865,0.974716 -0.790345,0.974716 -0.21076,2.002118 0.368823,1.343527 -0.289792,1.923087 1.71243,2.397274 0.02638,1.791371 1.23821,1.975774 2.950651,13.013779 -0.421522,0.684934 2.713536,14.278264 7.113157,18.150786 1.132835,0.0791 3.767339,9.19394 -2.344701,0.73762 1.92318,7.42891 -1.738774,3.87253 1.001116,3.79348 2.687192,4.10961 -0.68497,2.44996 -10.643392,0.079 -0.684969,-8.42997 1.106491,-1.42257 -1.659742,-1.47524 0.07905,-2.00211 -1.949535,-2.18653 -0.55325,-3.84617 -1.422628,0.15805 -0.500553,-7.71869 1.02745,-1.05374 -2.133941,-4.21499 0.421521,-2.42362 -4.32059,-6.322483 -1.317252,-4.056921 -9.247098,-17.702946 -0.395178,0.210749 -3.609266,18.783038 -1.975878,3.635422 -0.289802,10.721871 0.764011,-0.0264 2.397389,7.71869 -4.663069,0.97472 -0.737658,6.74398 -2.212983,1.92309 1.422638,6.74397 -1.896847,3.10855 -4.504997,0.34248 -0.105385,-0.86934 -3.714641,1.2118 -8.140618,0.21075 -0.131729,-2.00212 8.483107,-5.47948 0.711314,-1.89674 -0.316146,-2.18653 0.869386,-0.71128 -1.027449,-1.36986 1.659732,-6.55958 -2.502775,-0.76396 1.317252,-3.42469 -0.289792,-1.2645 2.397389,-3.05585 2.107608,-12.592278 -0.948419,-7.349881 0.316136,-13.90946 -1.554356,-1.159119 4.504996,-21.153968 0.316147,-4.557454 0.948418,-3.345646 -2.160295,2.924147 -4.847487,4.135956 1.264565,1.080091 -3.42485,2.397275 -3.29313,2.766082 -0.68497,1.923087 -1.791461,-0.57956 -1.001116,1.633307 0.07905,4.87358 L 9.168636,68.889233 4.2948053,70.180074 1.5812697,67.466679 0.13228831,66.070468 2.9775532,60.801731 6.5868297,58.825953 6.692205,57.245334 8.0884885,56.059869 v -1.923064 l 2.9769935,-7.824067 2.897953,0.553216 7.323918,-8.166536 v -0.500531 l 3.872714,-4.689172 -0.263448,-2.028463 2.766234,-5.1897 5.163622,-1.448903 0.158063,-1.844055 -0.922074,-2.291899 0.948428,-5.95367 -0.658626,-4.294017 -4.926518,-3.9515498 z"/>
|
||||
</svg>
|
||||
{{#if trefferzonen}}
|
||||
<span class="wound kopf">{{derived.wunden.kopf}}</span>
|
||||
<span class="wound torso">{{derived.wunden.torso}}</span>
|
||||
<span class="wound armlinks">{{derived.wunden.armlinks}}</span>
|
||||
<span class="wound armrechts">{{derived.wunden.armrechts}}</span>
|
||||
<span class="wound bauch">{{derived.wunden.bauch}}</span>
|
||||
<span class="wound beinlinks">{{derived.wunden.beinlinks}}</span>
|
||||
<span class="wound beinrechts">{{derived.wunden.beinrechts}}</span>
|
||||
{{/if}}
|
||||
{{#if zonenruestung}}
|
||||
<span class="armor kopf">{{derived.rs.kopf}}</span>
|
||||
<span class="armor torso">{{derived.rs.torso}}</span>
|
||||
<span class="armor armlinks">{{derived.rs.armlinks}}</span>
|
||||
<span class="armor armrechts">{{derived.rs.armrechts}}</span>
|
||||
<span class="armor bauch">{{derived.rs.bauch}}</span>
|
||||
<span class="armor beinlinks">{{derived.rs.beinlinks}}</span>
|
||||
<span class="armor beinrechts">{{derived.rs.beinrechts}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
<div class="tab skills" data-group="primary" data-tab="skills">
|
||||
<div>
|
||||
|
|
@ -687,10 +778,29 @@
|
|||
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if this.hasPets}}
|
||||
<div class="tab pets" data-group="primary" data-tab="pets">
|
||||
|
||||
<div class="tab effects" data-group="primary" data-tab="effects">
|
||||
<table class="effects">
|
||||
<thead>
|
||||
<th>Effekt</th>
|
||||
<th>Veränderungen</th>
|
||||
<th></th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each this.effects}}
|
||||
<tr>
|
||||
<td>
|
||||
{{this.name}}
|
||||
</td>
|
||||
<td>{{this.conditions}}</td>
|
||||
<td>{{#if ../isGM}}
|
||||
<button data-operation="removeEffect" data-actor-id="{{actor}}" data-effect-id="{{id}}"><i
|
||||
class="fa-solid fa-trash"></i></button>{{/if}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
|
|
|||
Loading…
Reference in New Issue