Compare commits
4 Commits
719e571b21
...
8b0e11f071
| Author | SHA1 | Date |
|---|---|---|
|
|
8b0e11f071 | |
|
|
4388cc8f60 | |
|
|
8fc2d37942 | |
|
|
416830a56e |
|
|
@ -20,12 +20,14 @@ 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',
|
||||||
|
|
@ -42,7 +44,11 @@ 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.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
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,6 +59,7 @@ 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}),
|
||||||
|
|
@ -138,7 +139,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}),
|
||||||
torso: new NumberField({required: true, integer: true, initial: 0}),
|
brust: 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(
|
||||||
|
|
@ -180,9 +181,6 @@ 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, initial: 0}),
|
pa: new NumberField({required: false, integer: true, nullable: 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,5 +1,6 @@
|
||||||
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 {
|
||||||
|
|
||||||
|
|
@ -95,7 +96,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 = {
|
||||||
torso: 0,
|
brust: 0,
|
||||||
bauch: 0,
|
bauch: 0,
|
||||||
armlinks: 0,
|
armlinks: 0,
|
||||||
armrechts: 0,
|
armrechts: 0,
|
||||||
|
|
@ -113,7 +114,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.torso = 0;
|
systemData.wunden.brust = 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;
|
||||||
|
|
@ -121,6 +122,7 @@ 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
|
||||||
|
|
||||||
|
|
@ -129,7 +131,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.torso = systemData.parent.items.get(ausruestung.brust).system.armorValue ?? 0
|
systemData.rs.brust = 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
|
||||||
}
|
}
|
||||||
|
|
@ -242,4 +244,62 @@ 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,10 +94,22 @@ 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,
|
||||||
id: item._id,
|
komplexität: item.system.komplexität
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
@ -379,7 +391,6 @@ 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) {
|
async function addSkillFromCompendiumByNameToActor(talentName, taw, actor, combatStatistics, attributes) {
|
||||||
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,7 +83,21 @@ async function addSkillFromCompendiumByNameToActor(talentName, taw, actor) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const embeddedDocument = (await actor.createEmbeddedDocuments('Item', [talent]))[0]
|
const embeddedDocument = (await actor.createEmbeddedDocuments('Item', [talent]))[0]
|
||||||
embeddedDocument.update({system: {taw: taw}});
|
if (talent.system.gruppe === "Kampf") {
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
|
|
@ -171,7 +185,7 @@ function calculateBirthdate(json) {
|
||||||
return `${day}. ${month} ${year} BF`
|
return `${day}. ${month} ${year} BF`
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapSkills(actor, held) {
|
function mapSkills(actor, held, kampfwerte) {
|
||||||
for (let talent in held.talentliste.talent) {
|
for (let talent in held.talentliste.talent) {
|
||||||
talent = held.talentliste.talent[talent]
|
talent = held.talentliste.talent[talent]
|
||||||
|
|
||||||
|
|
@ -191,7 +205,8 @@ function mapSkills(actor, held) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// proceed
|
// proceed
|
||||||
addSkillFromCompendiumByNameToActor(talent.name, talent.value, actor)
|
const eigenschaften = held.eigenschaften.eigenschaft
|
||||||
|
addSkillFromCompendiumByNameToActor(talent.name, talent.value, actor, kampfwerte, eigenschaften)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -333,10 +348,6 @@ 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]
|
||||||
|
|
@ -347,6 +358,11 @@ 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 und Schreiben Asdharia",
|
"name": "Lesen/Schreiben Asdharia",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Chrmk",
|
"name": "Lesen/Schreiben Chrmk",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Geheiligte Glyphen von Unau",
|
"name": "Lesen/Schreiben Geheiligte Glyphen von Unau",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Hjaldingsche Runen",
|
"name": "Lesen/Schreiben Hjaldingsche Runen",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Isdira",
|
"name": "Lesen/Schreiben Isdira",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Kusliker Zeichen",
|
"name": "Lesen/Schreiben Kusliker Zeichen",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Nanduria",
|
"name": "Lesen/Schreiben Nanduria",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Rogolan",
|
"name": "Lesen/Schreiben Rogolan",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Tulamidya",
|
"name": "Lesen/Schreiben Tulamidya",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Ur-Tulamidya",
|
"name": "Lesen/Schreiben Urtulamidya",
|
||||||
"gruppe": "Sprachen",
|
"gruppe": "Sprachen",
|
||||||
"probe": [
|
"probe": [
|
||||||
"KL",
|
"KL",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Lesen und Schreiben Zhayad",
|
"name": "Lesen/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.torso",
|
"key": "system.wunden.brust",
|
||||||
"mode": 2,
|
"mode": 2,
|
||||||
"value": "1",
|
"value": "1",
|
||||||
"priority": 10
|
"priority": 10
|
||||||
|
|
@ -411,7 +411,7 @@
|
||||||
left: 136px
|
left: 136px
|
||||||
}
|
}
|
||||||
|
|
||||||
&.torso {
|
&.brust {
|
||||||
top: 86px;
|
top: 86px;
|
||||||
left: 110px;
|
left: 110px;
|
||||||
}
|
}
|
||||||
|
|
@ -461,7 +461,7 @@
|
||||||
left: 136px
|
left: 136px
|
||||||
}
|
}
|
||||||
|
|
||||||
&.torso {
|
&.brust {
|
||||||
top: 120px;
|
top: 120px;
|
||||||
left: 110px;
|
left: 110px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,27 @@
|
||||||
$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,6 +5,10 @@
|
||||||
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,7 +3,6 @@
|
||||||
@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,
|
||||||
|
|
@ -17,6 +16,20 @@ $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 {
|
||||||
|
|
@ -152,10 +165,16 @@ $rollable_colours: (
|
||||||
|
|
||||||
@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" name="system.lep.max" value="{{actor.system.lep.max}}"/>
|
<input type="number" disabled 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" name="system.aup.max" value="{{actor.system.aup.max}}"/>
|
<input type="number" disabled 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 torso">{{derived.wunden.torso}}</span>
|
<span class="wound brust">{{derived.wunden.brust}}</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 torso">{{derived.rs.torso}}</span>
|
<span class="armor brust">{{derived.rs.brust}}</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>
|
<div class="talent-group">
|
||||||
<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>
|
<div class="talent-group">
|
||||||
<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>
|
<div class="talent-group">
|
||||||
<h2>Gesellschaftliche Talente</h2>
|
<h2>Gesellschaftliche Talente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -425,7 +425,7 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div class="talent-group">
|
||||||
<h2>Natur Talente</h2>
|
<h2>Natur Talente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -436,7 +436,7 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div class="talent-group">
|
||||||
<h2>Wissenstalente</h2>
|
<h2>Wissenstalente</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -447,23 +447,23 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div class="talent-group">
|
||||||
<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-button.hbs" this}}
|
{{> "systems/DSA_4-1/templates/ui/partial-rollable-language-button.hbs" this}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#each skills.Schriften}}
|
{{#each skills.Sprachen}}
|
||||||
<li>
|
<li>
|
||||||
{{> "systems/DSA_4-1/templates/ui/partial-rollable-button.hbs" this}}
|
{{> "systems/DSA_4-1/templates/ui/partial-rollable-language-button.hbs" this}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div class="talent-group">
|
||||||
<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>
|
||||||
{{derived.asp.max}}
|
<input type="number" disabled value="{{derived.asp.max}}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="mr">
|
<div class="mr">
|
||||||
<label>MR: </label>
|
<label>MR: </label>
|
||||||
{{derived.mr.aktuell}}
|
<input type="number" disabled value="{{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>
|
||||||
{{derived.kap.max}}
|
<input type="number" disabled value="{{derived.kap.max}}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<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,7 +19,9 @@
|
||||||
<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