implements calculations for zone wounds
parent
b34ca30a33
commit
917eec11f4
|
|
@ -45,13 +45,14 @@ const convert = function (from, to, ofType) {
|
||||||
readdirSync(SOURCE).forEach(file => {
|
readdirSync(SOURCE).forEach(file => {
|
||||||
let originalSource = JSON.parse(readFileSync(join(SOURCE, file), {encoding: "utf8"}));
|
let originalSource = JSON.parse(readFileSync(join(SOURCE, file), {encoding: "utf8"}));
|
||||||
let id = randomID();
|
let id = randomID();
|
||||||
|
|
||||||
let targetSource = {
|
let targetSource = {
|
||||||
_id: id,
|
_id: id,
|
||||||
_key: "!items!" + id,
|
_key: "!items!" + id,
|
||||||
type: TYPE,
|
type: TYPE,
|
||||||
img: originalSource.image,
|
img: originalSource.image,
|
||||||
name: originalSource.name.trim(),
|
name: originalSource.name.trim(),
|
||||||
system: {...originalSource}
|
system: {...originalSource},
|
||||||
}
|
}
|
||||||
delete targetSource.system.image;
|
delete targetSource.system.image;
|
||||||
let target = JSON.stringify(targetSource, null, 2);
|
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/munition", "./src/packs/__source/munition", "Equipment");
|
||||||
convert("./src/packs/_source/ruestzeug", "./src/packs/__source/ruestzeug", "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/liturgien-und-segnungen", "./src/packs/__source/liturgien", "Liturgy");
|
||||||
|
convert("./src/packs/_source/wunden", "./src/packs/__source/wunden", "ActiveEffect");
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import BaseItem from "./base-item.mjs";
|
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 {
|
export class ActiveEffectDataModel extends BaseItem {
|
||||||
|
|
||||||
|
|
@ -8,6 +8,8 @@ export class ActiveEffectDataModel extends BaseItem {
|
||||||
return {
|
return {
|
||||||
name: new StringField({required: true}),
|
name: new StringField({required: true}),
|
||||||
notes: new HTMLField(),
|
notes: new HTMLField(),
|
||||||
|
unique: new BooleanField({initial: false}),
|
||||||
|
effects: new AnyField()
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
|
@ -33,12 +35,13 @@ export class ActiveEffectDataModel extends BaseItem {
|
||||||
|
|
||||||
_onCreate(data, options, userId) {
|
_onCreate(data, options, userId) {
|
||||||
super._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", [{
|
this.parent.createEmbeddedDocuments("ActiveEffect", [{
|
||||||
name: data.name,
|
name: data.name,
|
||||||
changes: [],
|
changes: data.system.effects,
|
||||||
duration: {},
|
duration: {},
|
||||||
icon: this.img,
|
icon: this.img,
|
||||||
}]);
|
}]);
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,10 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
||||||
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
aktuell: new NumberField({required: true, integer: true, initial: 0}),
|
||||||
mod: new NumberField({required: true, integer: true}),
|
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({
|
attribute: new SchemaField({
|
||||||
mu: new SchemaField({
|
mu: new SchemaField({
|
||||||
start: new NumberField({required: true, integer: true}),
|
start: new NumberField({required: true, integer: true}),
|
||||||
|
|
|
||||||
|
|
@ -28,28 +28,69 @@ export class Character extends Actor {
|
||||||
const actorData = this;
|
const actorData = this;
|
||||||
const systemData = actorData.system;
|
const systemData = actorData.system;
|
||||||
|
|
||||||
const mu = systemData.attribute.mu.aktuell + systemData.attribute.mu.mod;
|
systemData.attribute.mu.aktuell = systemData.attribute.mu.start + systemData.attribute.mu.mod;
|
||||||
const kl = systemData.attribute.kl.aktuell + systemData.attribute.kl.mod;
|
systemData.attribute.kl.aktuell = systemData.attribute.kl.start + systemData.attribute.kl.mod;
|
||||||
const _in = systemData.attribute.in.aktuell + systemData.attribute.in.mod;
|
systemData.attribute.in.aktuell = systemData.attribute.in.start + systemData.attribute.in.mod;
|
||||||
const ch = systemData.attribute.ch.aktuell + systemData.attribute.ch.mod;
|
systemData.attribute.ch.aktuell = systemData.attribute.ch.start + systemData.attribute.ch.mod;
|
||||||
|
|
||||||
const ff = systemData.attribute.ff.aktuell + systemData.attribute.ff.mod;
|
systemData.attribute.ff.aktuell = systemData.attribute.ff.start + systemData.attribute.ff.mod;
|
||||||
const ge = systemData.attribute.ge.aktuell + systemData.attribute.ge.mod;
|
systemData.attribute.ge.aktuell = systemData.attribute.ge.start + systemData.attribute.ge.mod;
|
||||||
const ko = systemData.attribute.kk.aktuell + systemData.attribute.ko.mod;
|
systemData.attribute.ko.aktuell = systemData.attribute.ko.start + systemData.attribute.ko.mod;
|
||||||
const kk = systemData.attribute.kk.aktuell + systemData.attribute.kk.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.lep.max = Math.round((ko + ko + kk) / 2) + systemData.lep.mod;
|
||||||
systemData.aup.max = Math.round((mu + ko + ge) / 2) + systemData.aup.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.asp.max = Math.round((mu + _in + ch) / 2) + systemData.asp.mod;
|
||||||
|
|
||||||
|
|
||||||
systemData.at = Math.round((mu + ge + kk) / 5);
|
systemData.at = systemData.at ?? {links: {}, rechts: {}}
|
||||||
systemData.pa = Math.round((_in + ge + kk) / 5);
|
systemData.at.links = systemData.at.links ?? {
|
||||||
systemData.fk = Math.round((_in + ff + kk) / 5);
|
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.ini.basis = Math.round((mu + mu + _in + ge) / 5)
|
||||||
systemData.mr.aktuell = Math.round((mu + kl + ko) / 5) + systemData.mr.mod;
|
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
|
||||||
|
|
||||||
|
|
||||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ export class CharacterSheet extends ActorSheet {
|
||||||
context.ausdauer = game.settings.get("DSA_4-1", "optional_ausdauer")
|
context.ausdauer = game.settings.get("DSA_4-1", "optional_ausdauer")
|
||||||
|
|
||||||
|
|
||||||
|
this.#addEffectsToContext(context)
|
||||||
this.#addSkillsToContext(context)
|
this.#addSkillsToContext(context)
|
||||||
this.#addAdvantagesToContext(context)
|
this.#addAdvantagesToContext(context)
|
||||||
this.#addSpecialAbilitiesToContext(context)
|
this.#addSpecialAbilitiesToContext(context)
|
||||||
|
|
@ -149,6 +150,41 @@ export class CharacterSheet extends ActorSheet {
|
||||||
return context;
|
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];
|
||||||
|
console.log(effect.changes);
|
||||||
|
const conditions = []
|
||||||
|
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) {
|
#addSpellsToContext(context) {
|
||||||
const actorData = context.data;
|
const actorData = context.data;
|
||||||
context.spells = [];
|
context.spells = [];
|
||||||
|
|
@ -201,56 +237,60 @@ export class CharacterSheet extends ActorSheet {
|
||||||
"ff": await this.#getModsOfAttribute('system.attribute.ff.mod'),
|
"ff": await this.#getModsOfAttribute('system.attribute.ff.mod'),
|
||||||
"ge": await this.#getModsOfAttribute('system.attribute.ge.mod'),
|
"ge": await this.#getModsOfAttribute('system.attribute.ge.mod'),
|
||||||
"ko": await this.#getModsOfAttribute('system.attribute.ko.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 = [
|
context.attributes = [
|
||||||
{
|
{
|
||||||
eigenschaft: "mu",
|
eigenschaft: "mu",
|
||||||
name: "MU",
|
name: "MU",
|
||||||
tooltip: "Mut",
|
tooltip: "Mut",
|
||||||
wert: (context.derived.attribute.mu.aktuell + context.derived.attribute.mu.mod) ?? 0,
|
wert: context.derived.attribute.mu.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eigenschaft: "kl",
|
eigenschaft: "kl",
|
||||||
name: "KL",
|
name: "KL",
|
||||||
tooltip: "Klugheit",
|
tooltip: "Klugheit",
|
||||||
wert: (context.derived.attribute.kl.aktuell + context.derived.attribute.kl.mod) ?? 0,
|
wert: context.derived.attribute.kl.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eigenschaft: "in",
|
eigenschaft: "in",
|
||||||
name: "IN",
|
name: "IN",
|
||||||
tooltip: "Intuition",
|
tooltip: "Intuition",
|
||||||
wert: (context.derived.attribute.in.aktuell + context.derived.attribute.in.mod) ?? 0,
|
wert: context.derived.attribute.in.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eigenschaft: "ch",
|
eigenschaft: "ch",
|
||||||
name: "CH",
|
name: "CH",
|
||||||
tooltip: "Charisma",
|
tooltip: "Charisma",
|
||||||
wert: (context.derived.attribute.ch.aktuell + context.derived.attribute.ch.mod) ?? 0,
|
wert: context.derived.attribute.ch.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eigenschaft: "ff",
|
eigenschaft: "ff",
|
||||||
name: "FF",
|
name: "FF",
|
||||||
tooltip: "Fingerfertigkeit",
|
tooltip: "Fingerfertigkeit",
|
||||||
wert: (context.derived.attribute.ff.aktuell + context.derived.attribute.ff.mod) ?? 0,
|
wert: context.derived.attribute.ff.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eigenschaft: "ge",
|
eigenschaft: "ge",
|
||||||
name: "GE",
|
name: "GE",
|
||||||
tooltip: "Geschicklichkeit",
|
tooltip: "Geschicklichkeit",
|
||||||
wert: (context.derived.attribute.ge.aktuell + context.derived.attribute.ge.mod) ?? 0,
|
wert: context.derived.attribute.ge.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eigenschaft: "ko",
|
eigenschaft: "ko",
|
||||||
name: "KO",
|
name: "KO",
|
||||||
tooltip: "Konstitution",
|
tooltip: "Konstitution",
|
||||||
wert: (context.derived.attribute.ko.aktuell + context.derived.attribute.ko.mod) ?? 0,
|
wert: context.derived.attribute.ko.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eigenschaft: "kk",
|
eigenschaft: "kk",
|
||||||
name: "KK",
|
name: "KK",
|
||||||
tooltip: "Körperkraft",
|
tooltip: "Körperkraft",
|
||||||
wert: (context.derived.attribute.kk.aktuell + context.derived.attribute.kk.mod) ?? 0,
|
wert: context.derived.attribute.kk.aktuell ?? 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
@ -341,8 +381,8 @@ export class CharacterSheet extends ActorSheet {
|
||||||
context.attacks.push({
|
context.attacks.push({
|
||||||
name: obj.name,
|
name: obj.name,
|
||||||
using: fernkampf.name,
|
using: fernkampf.name,
|
||||||
atroll: `1d20 + ${this.object.system.fk + obj.system.at}`,
|
atroll: `1d20 + ${this.object.system.fk.aktuell + obj.system.at}`,
|
||||||
at: `1w20 + ${this.object.system.fk + obj.system.at}`,
|
at: `1w20 + ${this.object.system.fk.aktuell + obj.system.at}`,
|
||||||
iniroll: `(${context.inidice})d6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
|
iniroll: `(${context.inidice})d6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
|
||||||
ini: `${context.inidice}w6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
|
ini: `${context.inidice}w6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
|
||||||
})
|
})
|
||||||
|
|
@ -355,10 +395,10 @@ export class CharacterSheet extends ActorSheet {
|
||||||
context.attacks.push({
|
context.attacks.push({
|
||||||
name: obj.name,
|
name: obj.name,
|
||||||
using: links.name,
|
using: links.name,
|
||||||
atroll: `1d20 + ${this.object.system.at + obj.system.at + links.system.attackModifier}`,
|
atroll: `1d20 + ${this.object.system.at.links.aktuell + obj.system.at + links.system.attackModifier}`,
|
||||||
at: `1w20 + ${this.object.system.at + 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 + obj.system.pa + links.system.parryModifier}`,
|
paroll: `1d20 + ${this.object.system.pa.links.aktuell + obj.system.pa + links.system.parryModifier}`,
|
||||||
pa: `1w20 + ${this.object.system.pa + 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}`,
|
iniroll: `(${context.inidice})d6 + ${context.inivalue + links.system.iniModifier ?? 0}`,
|
||||||
ini: `${context.inidice}w6 + ${context.inivalue + links.system.iniModifier ?? 0}`,
|
ini: `${context.inidice}w6 + ${context.inivalue + links.system.iniModifier ?? 0}`,
|
||||||
})
|
})
|
||||||
|
|
@ -372,10 +412,10 @@ export class CharacterSheet extends ActorSheet {
|
||||||
context.attacks.push({
|
context.attacks.push({
|
||||||
name: obj.name,
|
name: obj.name,
|
||||||
using: rechts.name,
|
using: rechts.name,
|
||||||
atroll: `1d20 + ${this.object.system.at + obj.system.at + rechts.system.attackModifier}`,
|
atroll: `1d20 + ${this.object.system.at.rechts.aktuell + obj.system.at + rechts.system.attackModifier}`,
|
||||||
at: `1w20 + ${this.object.system.at + 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 + obj.system.pa + rechts.system.parryModifier}`,
|
paroll: `1d20 + ${this.object.system.pa.rechts.aktuell + obj.system.pa + rechts.system.parryModifier}`,
|
||||||
pa: `1w20 + ${this.object.system.pa + 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}`,
|
iniroll: `(${context.inidice})d6 + ${context.inivalue + rechts.system.iniModifier ?? 0}`,
|
||||||
ini: `${context.inidice}w6 + ${context.inivalue + rechts.system.iniModifier ?? 0}`,
|
ini: `${context.inidice}w6 + ${context.inivalue + rechts.system.iniModifier ?? 0}`,
|
||||||
})
|
})
|
||||||
|
|
@ -766,10 +806,7 @@ export class CharacterSheet extends ActorSheet {
|
||||||
const array = Array.from(actor.items);
|
const array = Array.from(actor.items);
|
||||||
for (let i = 0; i < array.length; i++) {
|
for (let i = 0; i < array.length; i++) {
|
||||||
if (array[i].name === activeEffect.name) {
|
if (array[i].name === activeEffect.name) {
|
||||||
// replace active effect
|
// replace active effect if its unique
|
||||||
actor.deleteEmbeddedDocuments('Item', [array[i].id]).then(() => {
|
|
||||||
console.log("await")
|
|
||||||
})
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -805,6 +842,13 @@ export class CharacterSheet extends ActorSheet {
|
||||||
this.object.update({"system.setEquipped": id})
|
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) => {
|
html.on('click', '.talent.rollable', (evt) => {
|
||||||
this._onTalentRoll(evt);
|
this._onTalentRoll(evt);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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.at.rechts.mod",
|
||||||
|
"mode": 2,
|
||||||
|
"value": "-2",
|
||||||
|
"priority": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system.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.attribute.at.mod",
|
||||||
|
"mode": 2,
|
||||||
|
"value": "-2",
|
||||||
|
"priority": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system.attribute.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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -364,6 +364,8 @@
|
||||||
|
|
||||||
div {
|
div {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
margin-left: 9px;
|
||||||
|
margin-top: 42px;
|
||||||
|
|
||||||
.wound {
|
.wound {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,14 @@
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"path": "packs/munition",
|
"path": "packs/munition",
|
||||||
"private": false
|
"private": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Wounds",
|
||||||
|
"label": "Trefferzonen Wunden",
|
||||||
|
"system": "DSA_4-1",
|
||||||
|
"type": "Item",
|
||||||
|
"path": "packs/wunden",
|
||||||
|
"private": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@
|
||||||
<a class="item" data-tab="backpack">Inventar</a>
|
<a class="item" data-tab="backpack">Inventar</a>
|
||||||
{{#if this.hasSpells}}<a class="item" data-tab="spells">Zauber</a>{{/if}}
|
{{#if this.hasSpells}}<a class="item" data-tab="spells">Zauber</a>{{/if}}
|
||||||
{{#if this.hasLiturgies}}<a class="item" data-tab="liturgies">Liturgien</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>
|
</nav>
|
||||||
|
|
||||||
{{!-- Sheet Body --}}
|
{{!-- Sheet Body --}}
|
||||||
|
|
@ -213,6 +213,33 @@
|
||||||
<label>Sozialstatus</label>
|
<label>Sozialstatus</label>
|
||||||
<input value="{{this.system.attribute.so.aktuell}}">
|
<input value="{{this.system.attribute.so.aktuell}}">
|
||||||
</div>
|
</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>
|
||||||
<div class="resources-overview">
|
<div class="resources-overview">
|
||||||
<div class="attribute">
|
<div class="attribute">
|
||||||
|
|
@ -220,21 +247,27 @@
|
||||||
<input value="{{actor.system.lep.aktuell}}">
|
<input value="{{actor.system.lep.aktuell}}">
|
||||||
<input value="{{actor.system.lep.max}}">
|
<input value="{{actor.system.lep.max}}">
|
||||||
</div>
|
</div>
|
||||||
|
{{#if ausdauer}}
|
||||||
<div class="attribute">
|
<div class="attribute">
|
||||||
<label>Ausdauer</label>
|
<label>Ausdauer</label>
|
||||||
<input value="{{actor.system.aup.aktuell}}">
|
<input value="{{actor.system.aup.aktuell}}">
|
||||||
<input value="{{actor.system.aup.max}}">
|
<input value="{{actor.system.aup.max}}">
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if hasSpells}}
|
||||||
<div class="attribute">
|
<div class="attribute">
|
||||||
<label>Astralenergie</label>
|
<label>Astralenergie</label>
|
||||||
<input value="{{actor.system.asp.aktuell}}">
|
<input value="{{actor.system.asp.aktuell}}">
|
||||||
<input value="{{actor.system.asp.max}}">
|
<input value="{{actor.system.asp.max}}">
|
||||||
</div>
|
</div>
|
||||||
<div class="attribute">
|
{{/if}}
|
||||||
|
{{#if hasLiturgies}}
|
||||||
|
<div class="attribute">
|
||||||
<label>Karmaenergie</label>
|
<label>Karmaenergie</label>
|
||||||
<input value="{{actor.system.kap.aktuell}}">
|
<input value="{{actor.system.kap.aktuell}}">
|
||||||
<input value="{{actor.system.kap.max}}">
|
<input value="{{actor.system.kap.max}}">
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="advantages">
|
<div class="advantages">
|
||||||
<h3>Vor- und Nachteile</h3>
|
<h3>Vor- und Nachteile</h3>
|
||||||
|
|
@ -745,10 +778,22 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/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">
|
||||||
|
{{#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}}
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
|
||||||
</section>
|
</section>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue