Compare commits
No commits in common. "8b0e11f071d419b71b5df697541308bf3efa578f" and "719e571b21f44c8bbb918e8dea9a968fcff4b3c8" have entirely different histories.
8b0e11f071
...
719e571b21
|
|
@ -20,14 +20,12 @@ import {SpecialAbilityDataModel} from "./module/data/specialAbility.mjs";
|
||||||
import {SpecialAbilitySheet} from "./module/sheets/specialAbilitySheet.mjs";
|
import {SpecialAbilitySheet} from "./module/sheets/specialAbilitySheet.mjs";
|
||||||
import {ActiveEffectSheet} from "./module/sheets/ActiveEffectSheet.mjs";
|
import {ActiveEffectSheet} from "./module/sheets/ActiveEffectSheet.mjs";
|
||||||
import {ActiveEffectDataModel} from "./module/data/activeeffect.mjs";
|
import {ActiveEffectDataModel} from "./module/data/activeeffect.mjs";
|
||||||
import {Trefferzone, Wunde, Zonenruestung, Zonenwunde} from "./module/data/Trefferzone.js";
|
|
||||||
|
|
||||||
async function preloadHandlebarsTemplates() {
|
async function preloadHandlebarsTemplates() {
|
||||||
return loadTemplates([
|
return loadTemplates([
|
||||||
// ui partials.
|
// ui partials.
|
||||||
'systems/DSA_4-1/templates/ui/partial-rollable-button.hbs',
|
'systems/DSA_4-1/templates/ui/partial-rollable-button.hbs',
|
||||||
'systems/DSA_4-1/templates/ui/partial-rollable-weaponskill-button.hbs',
|
'systems/DSA_4-1/templates/ui/partial-rollable-weaponskill-button.hbs',
|
||||||
'systems/DSA_4-1/templates/ui/partial-rollable-language-button.hbs',
|
|
||||||
'systems/DSA_4-1/templates/ui/partial-attribute-button.hbs',
|
'systems/DSA_4-1/templates/ui/partial-attribute-button.hbs',
|
||||||
'systems/DSA_4-1/templates/ui/partial-talent-editable.hbs',
|
'systems/DSA_4-1/templates/ui/partial-talent-editable.hbs',
|
||||||
'systems/DSA_4-1/templates/ui/partial-die.hbs',
|
'systems/DSA_4-1/templates/ui/partial-die.hbs',
|
||||||
|
|
@ -44,11 +42,7 @@ async function preloadHandlebarsTemplates() {
|
||||||
Hooks.once("init", () => {
|
Hooks.once("init", () => {
|
||||||
|
|
||||||
game.DSA41 = {
|
game.DSA41 = {
|
||||||
rollItemMacro,
|
rollItemMacro
|
||||||
Zonenruestung,
|
|
||||||
Zonenwunde,
|
|
||||||
Trefferzone,
|
|
||||||
Wunde
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configure custom Document implementations.
|
// Configure custom Document implementations.
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
export const Trefferzone = {
|
|
||||||
ARM_LINKS: "armlinks",
|
|
||||||
ARM_RECHTS: "armrechts",
|
|
||||||
BEIN_LINKS: "beinlinks",
|
|
||||||
BEIN_RECHTS: "beinrechts",
|
|
||||||
BAUCH: "bauch",
|
|
||||||
KOPF: "kopf",
|
|
||||||
BRUST: "brust"
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Zonenruestung = {
|
|
||||||
...Trefferzone,
|
|
||||||
WAFFE_LINKS: "links",
|
|
||||||
WAFFE_RECHTS: "rechts",
|
|
||||||
FERNKAMPF: "fernkampf",
|
|
||||||
MUNITION: "munition",
|
|
||||||
RUECKEN: "ruecken",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Zonenwunde = {
|
|
||||||
ARM_LINKS: "Wunde linker Arm",
|
|
||||||
ARM_RECHTS: "Wunde rechter Arm",
|
|
||||||
BEIN_LINKS: "Wunde rechtes Bein",
|
|
||||||
BEIN_RECHTS: "Wunde rechtes Bein",
|
|
||||||
BAUCH: "Bauchwunde",
|
|
||||||
KOPF: "Kopfwunde",
|
|
||||||
BRUST: "Brustwunde",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Wunde = "Wunde"
|
|
||||||
|
|
@ -59,7 +59,6 @@ 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}),
|
||||||
}),
|
}),
|
||||||
ws: new NumberField({required: true, integer: true, initial: 0}),
|
|
||||||
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}),
|
||||||
|
|
@ -139,7 +138,7 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
||||||
beinlinks: 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}),
|
beinrechts: new NumberField({required: true, integer: true, initial: 0}),
|
||||||
bauch: new NumberField({required: true, integer: true, initial: 0}),
|
bauch: new NumberField({required: true, integer: true, initial: 0}),
|
||||||
brust: 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}),
|
kopf: new NumberField({required: true, integer: true, initial: 0}),
|
||||||
}),
|
}),
|
||||||
heldenausruestung: new ArrayField(
|
heldenausruestung: new ArrayField(
|
||||||
|
|
@ -181,6 +180,9 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
async _onCreate(data, options, userId) {
|
async _onCreate(data, options, userId) {
|
||||||
|
|
||||||
|
console.log(data, 'onCreate');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSlots() {
|
static getSlots() {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ export class SkillDataModel extends BaseItem {
|
||||||
gruppe: new StringField({required: true}),
|
gruppe: new StringField({required: true}),
|
||||||
taw: new NumberField({integer: true, initial: 0}),
|
taw: new NumberField({integer: true, initial: 0}),
|
||||||
at: new NumberField({required: false, integer: true, initial: 0}),
|
at: new NumberField({required: false, integer: true, initial: 0}),
|
||||||
pa: new NumberField({required: false, integer: true, nullable: true, initial: 0}),
|
pa: new NumberField({required: false, integer: true, initial: 0}),
|
||||||
probe: new ArrayField(new StringField(), {exact: 3}), // References one of the eight attributes by name
|
probe: new ArrayField(new StringField(), {exact: 3}), // References one of the eight attributes by name
|
||||||
voraussetzung: new SchemaField({
|
voraussetzung: new SchemaField({
|
||||||
talent: new StringField({model: SkillDataModel}),
|
talent: new StringField({model: SkillDataModel}),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import {importCharacter} from "../xml-import/xml-import.mjs";
|
import {importCharacter} from "../xml-import/xml-import.mjs";
|
||||||
import {LiturgyData} from "../data/miracle/liturgydata.mjs";
|
import {LiturgyData} from "../data/miracle/liturgydata.mjs";
|
||||||
import {Zonenruestung, Zonenwunde} from "../data/Trefferzone.js";
|
|
||||||
|
|
||||||
export class Character extends Actor {
|
export class Character extends Actor {
|
||||||
|
|
||||||
|
|
@ -96,7 +95,7 @@ export class Character extends Actor {
|
||||||
|
|
||||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||||
systemData.rs = {
|
systemData.rs = {
|
||||||
brust: 0,
|
torso: 0,
|
||||||
bauch: 0,
|
bauch: 0,
|
||||||
armlinks: 0,
|
armlinks: 0,
|
||||||
armrechts: 0,
|
armrechts: 0,
|
||||||
|
|
@ -114,7 +113,7 @@ export class Character extends Actor {
|
||||||
systemData.wunden.max = ko / 2;
|
systemData.wunden.max = ko / 2;
|
||||||
if (game.settings.get("DSA_4-1", "optional_trefferzonen")) {
|
if (game.settings.get("DSA_4-1", "optional_trefferzonen")) {
|
||||||
systemData.wunden.kopf = 0;
|
systemData.wunden.kopf = 0;
|
||||||
systemData.wunden.brust = 0;
|
systemData.wunden.torso = 0;
|
||||||
systemData.wunden.bauch = 0;
|
systemData.wunden.bauch = 0;
|
||||||
systemData.wunden.armlinks = 0;
|
systemData.wunden.armlinks = 0;
|
||||||
systemData.wunden.armrechts = 0;
|
systemData.wunden.armrechts = 0;
|
||||||
|
|
@ -122,7 +121,6 @@ export class Character extends Actor {
|
||||||
systemData.wunden.beinrechts = 0;
|
systemData.wunden.beinrechts = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
systemData.ws = ko / 2;
|
|
||||||
|
|
||||||
// map current set to RS and BE
|
// map current set to RS and BE
|
||||||
|
|
||||||
|
|
@ -131,7 +129,7 @@ export class Character extends Actor {
|
||||||
if (ausruestung.brust) {
|
if (ausruestung.brust) {
|
||||||
systemData.be += systemData.parent.items.get(ausruestung.brust).system.armorHandicap ?? 0
|
systemData.be += systemData.parent.items.get(ausruestung.brust).system.armorHandicap ?? 0
|
||||||
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
if (game.settings.get("DSA_4-1", "optional_ruestungzonen")) {
|
||||||
systemData.rs.brust = systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
systemData.rs.torso = systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
||||||
} else {
|
} else {
|
||||||
systemData.rs += systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
systemData.rs += systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
||||||
}
|
}
|
||||||
|
|
@ -244,62 +242,4 @@ export class Character extends Actor {
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param amount
|
|
||||||
* @param zone either null or one of
|
|
||||||
* @returns {Promise<void>}
|
|
||||||
*/
|
|
||||||
async takeDamage(amount = null, zone = null) {
|
|
||||||
|
|
||||||
this.prepareDerivedData()
|
|
||||||
|
|
||||||
const playWithZoneArmor = game.settings.get("DSA_4-1", "optional_ruestungzonen")
|
|
||||||
const playWithWoundZones = game.settings.get("DSA_4-1", "optional_trefferzonen")
|
|
||||||
const previousLeP = this.system.lep.aktuell;
|
|
||||||
|
|
||||||
if (amount == null) {
|
|
||||||
// TODO show Dialog for entering damage amount (TP)
|
|
||||||
}
|
|
||||||
|
|
||||||
let armorReduction = 0
|
|
||||||
let setEquipped = this.system.setEquipped
|
|
||||||
let woundThreshold = this.system.ws
|
|
||||||
|
|
||||||
if (playWithZoneArmor) {
|
|
||||||
const armorId = this.system.heldenausruestung[setEquipped][Zonenruestung[zone]]
|
|
||||||
const zoneArmor = await this.items.find(p => p._id === armorId)
|
|
||||||
if (!zoneArmor) {
|
|
||||||
return console.error(`zone "${zone}" is not a valid value`)
|
|
||||||
}
|
|
||||||
armorReduction = zoneArmor.system.armorValue ?? 0
|
|
||||||
} else {
|
|
||||||
armorReduction = this.system.rs
|
|
||||||
}
|
|
||||||
|
|
||||||
let damage = amount - armorReduction
|
|
||||||
let wounds = damage / woundThreshold
|
|
||||||
|
|
||||||
let wound = null
|
|
||||||
|
|
||||||
if (playWithWoundZones) {
|
|
||||||
wound = await game.packs.get("DSA_4-1.Wounds").index.find(p => p.name === Zonenwunde[zone])
|
|
||||||
if (!wound) {
|
|
||||||
return console.error(`Wunden Dokument zu "${zone}" konnten nicht gefunden werden`)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
wound = await game.packs.get("DSA_4-1.Wounds").index.find(p => p.name === Wunde)
|
|
||||||
if (!wound) {
|
|
||||||
return console.error(`Wunden Dokument zu "${Wunde}" konnten nicht gefunden werden`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO this doesnt work yet, wound documents wont get expanded
|
|
||||||
|
|
||||||
for (let i = 0; i < wounds; i++) {
|
|
||||||
await this.createEmbeddedDocuments('Item', [wound])
|
|
||||||
}
|
|
||||||
await this.update({system: {lep: {aktuell: previousLeP - damage}}})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,22 +94,10 @@ export class CharacterSheet extends ActorSheet {
|
||||||
eigenschaft2: werte[1].name,
|
eigenschaft2: werte[1].name,
|
||||||
eigenschaft3: werte[2].name,
|
eigenschaft3: werte[2].name,
|
||||||
probe: `(${eigenschaften.join("/")})`,
|
probe: `(${eigenschaften.join("/")})`,
|
||||||
id: item._id,
|
|
||||||
at: item.system.at,
|
at: item.system.at,
|
||||||
pa: item.system.pa,
|
pa: item.system.pa,
|
||||||
komplexität: item.system.komplexität
|
id: item._id,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (talentGruppe === "Kampf") {
|
|
||||||
|
|
||||||
if (item.system.pa != null) { // has no parry value so it must be ranged talent (TODO: but it isnt as there can be combatstatistics which has no pa value assigned to)
|
|
||||||
obj.at = item.system.at + context.derived.at.aktuell
|
|
||||||
obj.pa = item.system.pa + context.derived.pa.aktuell
|
|
||||||
} else {
|
|
||||||
obj.at = item.system.at + context.derived.fk.aktuell
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
context.skills[talentGruppe].push(obj);
|
context.skills[talentGruppe].push(obj);
|
||||||
context.flatSkills.push(obj);
|
context.flatSkills.push(obj);
|
||||||
}
|
}
|
||||||
|
|
@ -391,6 +379,7 @@ export class CharacterSheet extends ActorSheet {
|
||||||
const fkitems = fernkampf.system.rangedSkills.map(async (skillInQuestion) => await this.object.items.getName(skillInQuestion))
|
const fkitems = fernkampf.system.rangedSkills.map(async (skillInQuestion) => await this.object.items.getName(skillInQuestion))
|
||||||
fkitems.forEach(async skill => {
|
fkitems.forEach(async skill => {
|
||||||
const obj = await skill
|
const obj = await skill
|
||||||
|
console.log(this.object.system.fk, obj.system.at);
|
||||||
context.attacks.push({
|
context.attacks.push({
|
||||||
name: obj.name,
|
name: obj.name,
|
||||||
using: fernkampf.name,
|
using: fernkampf.name,
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ function getJsonFromXML(dom) {
|
||||||
return jsonResult;
|
return jsonResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function addSkillFromCompendiumByNameToActor(talentName, taw, actor, combatStatistics, attributes) {
|
async function addSkillFromCompendiumByNameToActor(talentName, taw, actor) {
|
||||||
const compendiumOfSkills = game.packs.get('DSA_4-1.talente');
|
const compendiumOfSkills = game.packs.get('DSA_4-1.talente');
|
||||||
const talentId = compendiumOfSkills.index.find(skill => skill.name === talentName)
|
const talentId = compendiumOfSkills.index.find(skill => skill.name === talentName)
|
||||||
if (talentId) {
|
if (talentId) {
|
||||||
|
|
@ -83,21 +83,7 @@ async function addSkillFromCompendiumByNameToActor(talentName, taw, actor, comba
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const embeddedDocument = (await actor.createEmbeddedDocuments('Item', [talent]))[0]
|
const embeddedDocument = (await actor.createEmbeddedDocuments('Item', [talent]))[0]
|
||||||
if (talent.system.gruppe === "Kampf") {
|
embeddedDocument.update({system: {taw: taw}});
|
||||||
const atbasis = attributes.find(p => p.name === "at").value
|
|
||||||
const pabasis = attributes.find(p => p.name === "pa").value
|
|
||||||
const combatStatistic = combatStatistics.find(p => p.name === talent.name)
|
|
||||||
if (combatStatistic) { // melee with AT/PA values
|
|
||||||
let at = combatStatistic.at - atbasis ?? 0
|
|
||||||
let pa = combatStatistic.pa - pabasis ?? 0
|
|
||||||
console.log({system: {taw, at, pa}})
|
|
||||||
embeddedDocument.update({system: {taw, at, pa}});
|
|
||||||
} else { // ranged with only AT values which is equal to taw
|
|
||||||
embeddedDocument.update({system: {taw: taw, at: taw, pa: null}}); // at is already at raw taw and wasn't influenced by helden-software precalculations
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
embeddedDocument.update({system: {taw: taw, at: null, pa: null}}); // just regular talent with taw
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`${talentName} not found in items`, error)
|
console.error(`${talentName} not found in items`, error)
|
||||||
}
|
}
|
||||||
|
|
@ -185,7 +171,7 @@ function calculateBirthdate(json) {
|
||||||
return `${day}. ${month} ${year} BF`
|
return `${day}. ${month} ${year} BF`
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapSkills(actor, held, kampfwerte) {
|
function mapSkills(actor, held) {
|
||||||
for (let talent in held.talentliste.talent) {
|
for (let talent in held.talentliste.talent) {
|
||||||
talent = held.talentliste.talent[talent]
|
talent = held.talentliste.talent[talent]
|
||||||
|
|
||||||
|
|
@ -205,8 +191,7 @@ function mapSkills(actor, held, kampfwerte) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// proceed
|
// proceed
|
||||||
const eigenschaften = held.eigenschaften.eigenschaft
|
addSkillFromCompendiumByNameToActor(talent.name, talent.value, actor)
|
||||||
addSkillFromCompendiumByNameToActor(talent.name, talent.value, actor, kampfwerte, eigenschaften)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -348,6 +333,10 @@ function mapRawJson(actor, rawJson) {
|
||||||
json.sonderfertigkeiten = specialAbilities
|
json.sonderfertigkeiten = specialAbilities
|
||||||
json.liturgien = liturgies
|
json.liturgien = liturgies
|
||||||
|
|
||||||
|
mapSkills(actor, held)
|
||||||
|
mapSpells(actor, held)
|
||||||
|
mapMiracles(actor, liturgies)
|
||||||
|
|
||||||
let combatValues = []
|
let combatValues = []
|
||||||
for (let combatValue in held.kampf.kampfwerte) {
|
for (let combatValue in held.kampf.kampfwerte) {
|
||||||
combatValue = held.kampf.kampfwerte[combatValue]
|
combatValue = held.kampf.kampfwerte[combatValue]
|
||||||
|
|
@ -358,11 +347,6 @@ function mapRawJson(actor, rawJson) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
json.kampfwerte = combatValues
|
json.kampfwerte = combatValues
|
||||||
|
|
||||||
mapSkills(actor, held, combatValues)
|
|
||||||
mapSpells(actor, held)
|
|
||||||
mapMiracles(actor, liturgies)
|
|
||||||
|
|
||||||
let notes = []
|
let notes = []
|
||||||
for (let note in held.kommentare) {
|
for (let note in held.kommentare) {
|
||||||
note = held.kommentare[note]
|
note = held.kommentare[note]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Asdharia",
|
"name": "Lesen und Schreiben Asdharia",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Chrmk",
|
"name": "Lesen und Schreiben Chrmk",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Geheiligte Glyphen von Unau",
|
"name": "Lesen und Schreiben Geheiligte Glyphen von Unau",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Hjaldingsche Runen",
|
"name": "Lesen und Schreiben Hjaldingsche Runen",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Isdira",
|
"name": "Lesen und Schreiben Isdira",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Kusliker Zeichen",
|
"name": "Lesen und Schreiben Kusliker Zeichen",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Nanduria",
|
"name": "Lesen und Schreiben Nanduria",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Rogolan",
|
"name": "Lesen und Schreiben Rogolan",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Tulamidya",
|
"name": "Lesen und Schreiben Tulamidya",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Urtulamidya",
|
"name": "Lesen und Schreiben Ur-Tulamidya",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen/Schreiben Zhayad",
|
"name": "Lesen und Schreiben Zhayad",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Wunde rechter Arm",
|
"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",
|
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am rechten Arm verursacht",
|
||||||
"unique": false,
|
"unique": false,
|
||||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Wunde linker Arm",
|
"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",
|
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am linken Arm verursacht",
|
||||||
"unique": false,
|
"unique": false,
|
||||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Wunde rechtes Bein",
|
"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",
|
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am rechten Bein verursacht",
|
||||||
"unique": false,
|
"unique": false,
|
||||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Wunde linkes Bein",
|
"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",
|
"notes": "Nur für das Spiel mit Trefferzonen gedacht.<br/>Eine Waffe oder andere Auswirkung hat eine Wunde am linken Bein verursacht",
|
||||||
"unique": false,
|
"unique": false,
|
||||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
"image": "icons/skills/wounds/bone-broken-knee-beam.webp",
|
||||||
"effects": [
|
"effects": [
|
||||||
{
|
{
|
||||||
"key": "system.wunden.brust",
|
"key": "system.wunden.torso",
|
||||||
"mode": 2,
|
"mode": 2,
|
||||||
"value": "1",
|
"value": "1",
|
||||||
"priority": 10
|
"priority": 10
|
||||||
|
|
@ -411,7 +411,7 @@
|
||||||
left: 136px
|
left: 136px
|
||||||
}
|
}
|
||||||
|
|
||||||
&.brust {
|
&.torso {
|
||||||
top: 86px;
|
top: 86px;
|
||||||
left: 110px;
|
left: 110px;
|
||||||
}
|
}
|
||||||
|
|
@ -461,7 +461,7 @@
|
||||||
left: 136px
|
left: 136px
|
||||||
}
|
}
|
||||||
|
|
||||||
&.brust {
|
&.torso {
|
||||||
top: 120px;
|
top: 120px;
|
||||||
left: 110px;
|
left: 110px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,15 @@
|
||||||
$nachteil-color: #555753ff;
|
$nachteil-color: #555753ff;
|
||||||
$nachteil-text-color: #FFFF;
|
|
||||||
$liturgie-color: #edd400ff;
|
$liturgie-color: #edd400ff;
|
||||||
$liturgie-text-color: #000F;
|
|
||||||
$zauber-color: #3465a4ff;
|
$zauber-color: #3465a4ff;
|
||||||
$zauber-text-color: #000F;
|
|
||||||
$talent-color: #f57900ff;
|
$talent-color: #f57900ff;
|
||||||
$talent-text-color: #000F;
|
|
||||||
$kampftalent-color: #cc0000ff;
|
$kampftalent-color: #cc0000ff;
|
||||||
$kampftalent-text-color: #FFFF;
|
|
||||||
|
|
||||||
$talent-body-color: #16bd6c;
|
$talent-body-color: #16bd6c;
|
||||||
$talent-body-text-color: #000;
|
|
||||||
$talent-nature-color: #46800d;
|
$talent-nature-color: #46800d;
|
||||||
$talent-nature-text-color: #000;
|
|
||||||
$talent-social-color: #ae9809;
|
$talent-social-color: #ae9809;
|
||||||
$talent-social-text-color: #000;
|
|
||||||
$talent-knowledge-color: #d319ba;
|
$talent-knowledge-color: #d319ba;
|
||||||
$talent-knowledge-text-color: #000;
|
|
||||||
$talent-language-color: #573bbc;
|
$talent-language-color: #573bbc;
|
||||||
$talent-language-text-color: #fff;
|
|
||||||
$talent-crafting-color: #ae6813;
|
$talent-crafting-color: #ae6813;
|
||||||
$talent-crafting-text-color: #000;
|
|
||||||
|
|
||||||
|
|
||||||
$harm-fill-color: #ff0000ff;
|
$harm-fill-color: #ff0000ff;
|
||||||
$harm-border-color: #3c0000ff;
|
$harm-border-color: #3c0000ff;
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,6 @@
|
||||||
columns: 2;
|
columns: 2;
|
||||||
column-gap: 20px;
|
column-gap: 20px;
|
||||||
|
|
||||||
.talent-group {
|
|
||||||
break-inside: avoid-column;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
@use "_colours" as colour;
|
@use "_colours" as colour;
|
||||||
@use "_numbers" as numbers;
|
@use "_numbers" as numbers;
|
||||||
|
|
||||||
|
|
||||||
$rollable_colours: (
|
$rollable_colours: (
|
||||||
"nachteil": colour.$nachteil-color,
|
"nachteil": colour.$nachteil-color,
|
||||||
"talent": colour.$talent-color,
|
"talent": colour.$talent-color,
|
||||||
|
|
@ -16,20 +17,6 @@ $rollable_colours: (
|
||||||
"liturgie": colour.$liturgie-color,
|
"liturgie": colour.$liturgie-color,
|
||||||
"zauber": colour.$zauber-color,
|
"zauber": colour.$zauber-color,
|
||||||
);
|
);
|
||||||
$rollable_colours_font: (
|
|
||||||
"nachteil": colour.$nachteil-text-color,
|
|
||||||
"talent": colour.$talent-text-color,
|
|
||||||
"Körperlich": colour.$talent-body-text-color,
|
|
||||||
"Natur": colour.$talent-nature-text-color,
|
|
||||||
"Gesellschaft": colour.$talent-social-text-color,
|
|
||||||
"Wissen": colour.$talent-knowledge-text-color,
|
|
||||||
"Sprachen": colour.$talent-language-text-color,
|
|
||||||
"Handwerk": colour.$talent-crafting-text-color,
|
|
||||||
"kampf": colour.$kampftalent-text-color,
|
|
||||||
"liturgie": colour.$liturgie-text-color,
|
|
||||||
"zauber": colour.$zauber-text-color,
|
|
||||||
);
|
|
||||||
|
|
||||||
.dsa41.sheet.actor.character {
|
.dsa41.sheet.actor.character {
|
||||||
|
|
||||||
.block.rollable {
|
.block.rollable {
|
||||||
|
|
@ -165,16 +152,10 @@ $rollable_colours_font: (
|
||||||
|
|
||||||
@mixin coloring($name) {
|
@mixin coloring($name) {
|
||||||
$color: map.get($rollable_colours, $name);
|
$color: map.get($rollable_colours, $name);
|
||||||
$font_color: map.get($rollable_colours_font, $name);
|
|
||||||
|
|
||||||
.#{$name}.rollable {
|
.#{$name}.rollable {
|
||||||
.die {
|
.die {
|
||||||
stroke-width: 0.5;
|
stroke-width: 0.5;
|
||||||
|
|
||||||
span.value {
|
|
||||||
color: $font_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border {
|
.border {
|
||||||
fill: colour.$rollable-die-border-color;
|
fill: colour.$rollable-die-border-color;
|
||||||
stroke: colour.$rollable-die-border-color;
|
stroke: colour.$rollable-die-border-color;
|
||||||
|
|
|
||||||
|
|
@ -310,14 +310,14 @@
|
||||||
<label>Lebensenergie:</label>
|
<label>Lebensenergie:</label>
|
||||||
<input type="number" name="system.lep.aktuell" value="{{actor.system.lep.aktuell}}"/>
|
<input type="number" name="system.lep.aktuell" value="{{actor.system.lep.aktuell}}"/>
|
||||||
<span class="inline">von</span>
|
<span class="inline">von</span>
|
||||||
<input type="number" disabled value="{{actor.system.lep.max}}"/>
|
<input type="number" name="system.lep.max" value="{{actor.system.lep.max}}"/>
|
||||||
</div>
|
</div>
|
||||||
{{#if ausdauer}}
|
{{#if ausdauer}}
|
||||||
<div class="ausdauer">
|
<div class="ausdauer">
|
||||||
<label>Ausdauerpunkte:</label>
|
<label>Ausdauerpunkte:</label>
|
||||||
<input type="number" name="system.aup.aktuell" value="{{actor.system.aup.aktuell}}"/>
|
<input type="number" name="system.aup.aktuell" value="{{actor.system.aup.aktuell}}"/>
|
||||||
<span class="inline">von</span>
|
<span class="inline">von</span>
|
||||||
<input type="number" disabled value="{{actor.system.aup.max}}"/>
|
<input type="number" name="system.aup.max" value="{{actor.system.aup.max}}"/>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (not zonenruestung)}}
|
{{#if (not zonenruestung)}}
|
||||||
|
|
@ -371,7 +371,7 @@
|
||||||
</svg>
|
</svg>
|
||||||
{{#if trefferzonen}}
|
{{#if trefferzonen}}
|
||||||
<span class="wound kopf">{{derived.wunden.kopf}}</span>
|
<span class="wound kopf">{{derived.wunden.kopf}}</span>
|
||||||
<span class="wound brust">{{derived.wunden.brust}}</span>
|
<span class="wound torso">{{derived.wunden.torso}}</span>
|
||||||
<span class="wound armlinks">{{derived.wunden.armlinks}}</span>
|
<span class="wound armlinks">{{derived.wunden.armlinks}}</span>
|
||||||
<span class="wound armrechts">{{derived.wunden.armrechts}}</span>
|
<span class="wound armrechts">{{derived.wunden.armrechts}}</span>
|
||||||
<span class="wound bauch">{{derived.wunden.bauch}}</span>
|
<span class="wound bauch">{{derived.wunden.bauch}}</span>
|
||||||
|
|
@ -380,7 +380,7 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if zonenruestung}}
|
{{#if zonenruestung}}
|
||||||
<span class="armor kopf">{{derived.rs.kopf}}</span>
|
<span class="armor kopf">{{derived.rs.kopf}}</span>
|
||||||
<span class="armor brust">{{derived.rs.brust}}</span>
|
<span class="armor torso">{{derived.rs.torso}}</span>
|
||||||
<span class="armor armlinks">{{derived.rs.armlinks}}</span>
|
<span class="armor armlinks">{{derived.rs.armlinks}}</span>
|
||||||
<span class="armor armrechts">{{derived.rs.armrechts}}</span>
|
<span class="armor armrechts">{{derived.rs.armrechts}}</span>
|
||||||
<span class="armor bauch">{{derived.rs.bauch}}</span>
|
<span class="armor bauch">{{derived.rs.bauch}}</span>
|
||||||
|
|
@ -393,7 +393,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="tab skills" data-group="primary" data-tab="skills">
|
<div class="tab skills" data-group="primary" data-tab="skills">
|
||||||
<div class="talent-group">
|
<div>
|
||||||
<h2>Kampftalente</h2>
|
<h2>Kampftalente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
{{#each skills.Kampf}}
|
{{#each skills.Kampf}}
|
||||||
|
|
@ -403,7 +403,7 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="talent-group">
|
<div>
|
||||||
<h2>Körperliche Talente</h2>
|
<h2>Körperliche Talente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -414,7 +414,7 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="talent-group">
|
<div>
|
||||||
<h2>Gesellschaftliche Talente</h2>
|
<h2>Gesellschaftliche Talente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -425,7 +425,7 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="talent-group">
|
<div>
|
||||||
<h2>Natur Talente</h2>
|
<h2>Natur Talente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -436,7 +436,7 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="talent-group">
|
<div>
|
||||||
<h2>Wissenstalente</h2>
|
<h2>Wissenstalente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -447,23 +447,23 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="talent-group">
|
<div>
|
||||||
<h2>Schriften & Sprachen</h2>
|
<h2>Schriften & Sprachen</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
{{#each skills.Schriften}}
|
{{#each skills.Schriften}}
|
||||||
<li>
|
<li>
|
||||||
{{> "systems/DSA_4-1/templates/ui/partial-rollable-language-button.hbs" this}}
|
{{> "systems/DSA_4-1/templates/ui/partial-rollable-button.hbs" this}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#each skills.Sprachen}}
|
{{#each skills.Schriften}}
|
||||||
<li>
|
<li>
|
||||||
{{> "systems/DSA_4-1/templates/ui/partial-rollable-language-button.hbs" this}}
|
{{> "systems/DSA_4-1/templates/ui/partial-rollable-button.hbs" this}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="talent-group">
|
<div>
|
||||||
<h2>Handwerkliche Talente</h2>
|
<h2>Handwerkliche Talente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -544,11 +544,11 @@
|
||||||
<label>AsP:</label>
|
<label>AsP:</label>
|
||||||
<input type="number" name="system.asp.aktuell" value="{{system.asp.aktuell}}"/>
|
<input type="number" name="system.asp.aktuell" value="{{system.asp.aktuell}}"/>
|
||||||
<span class="inline">von</span>
|
<span class="inline">von</span>
|
||||||
<input type="number" disabled value="{{derived.asp.max}}"/>
|
{{derived.asp.max}}
|
||||||
</div>
|
</div>
|
||||||
<div class="mr">
|
<div class="mr">
|
||||||
<label>MR: </label>
|
<label>MR: </label>
|
||||||
<input type="number" disabled value="{{derived.mr.aktuell}}"/>
|
{{derived.mr.aktuell}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -594,7 +594,7 @@
|
||||||
<label>KaP:</label>
|
<label>KaP:</label>
|
||||||
<input type="number" name="system.kap.aktuell" value="{{system.kap.aktuell}}"/>
|
<input type="number" name="system.kap.aktuell" value="{{system.kap.aktuell}}"/>
|
||||||
<span class="inline">von</span>
|
<span class="inline">von</span>
|
||||||
<input type="number" disabled value="{{derived.kap.max}}"/>
|
{{derived.kap.max}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
<div class="block rollable {{this.type}} {{this.gruppe}}" data-item-id="{{this.id}}" data-id="{{this.id}}"
|
|
||||||
data-taw="{{this.taw}}"
|
|
||||||
data-name="{{this.name}}" data-eigenschaft1="{{this.eigenschaft1}}" data-eigenschaft2="{{this.eigenschaft2}}"
|
|
||||||
data-eigenschaft3="{{this.eigenschaft3}}" data-rollEigenschaft1="{{this.rollEigenschaft1}}"
|
|
||||||
data-rollEigenschaft2="{{this.rollEigenschaft2}}" data-rollEigenschaft3="{{this.rollEigenschaft3}}">
|
|
||||||
|
|
||||||
<div class="die">
|
|
||||||
{{> 'systems/DSA_4-1/templates/ui/partial-die.hbs' }}
|
|
||||||
<span class="value">{{#if this.taw}}
|
|
||||||
{{this.taw}}
|
|
||||||
{{else}}
|
|
||||||
{{#if this.liturgiekenntnis}}
|
|
||||||
<img src="{{this.liturgiekenntnis}}"/>
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="container">
|
|
||||||
<span class="name" data-id="{{this.id}}">{{this.name}}</span>
|
|
||||||
<div class="werte">
|
|
||||||
<div class="eigenschaft"><span class="name">Komp</span><span
|
|
||||||
class="value">{{this.komplexität}}</span></div>
|
|
||||||
{{#each this.werte}}
|
|
||||||
<div class="eigenschaft"><span class="name">{{this.name}}</span><span
|
|
||||||
class="value">{{this.value}}</span></div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
@ -19,9 +19,7 @@
|
||||||
<div class="werte">
|
<div class="werte">
|
||||||
|
|
||||||
<div class="eigenschaft"><span class="name">AT</span><span class="value">{{this.at}}</span></div>
|
<div class="eigenschaft"><span class="name">AT</span><span class="value">{{this.at}}</span></div>
|
||||||
{{#if this.pa}}
|
<div class="eigenschaft"><span class="name">PA</span><span class="value">{{this.pa}}</span></div>
|
||||||
<div class="eigenschaft"><span class="name">PA</span><span class="value">{{this.pa}}</span></div>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue