chore: eslinted
Pull Request Check / testing (pull_request) Successful in 17s Details

pull/50/head
macniel 2025-10-05 13:41:52 +02:00
parent b3b247d1a7
commit fa05bed932
420 changed files with 8519 additions and 7502 deletions

View File

@ -2,7 +2,7 @@ name: Pull Request Check
run-name: ${{ gitea.actor }} is updating the pull request 🚀
on:
pull_request:
types: [synchronize]
types: [ synchronize ]
jobs:
testing:

View File

@ -2,7 +2,7 @@ name: Release Job
run-name: ${{gitea.actor}} is releasing a package
on:
release:
types: [published]
types: [ published ]
jobs:
build:

View File

@ -1,18 +1,18 @@
import { src, dest, series } from 'gulp';
import {dest, series, src} from 'gulp';
import process from 'node:process';
import replace from 'gulp-replace';
import * as dartSass from 'sass';
import gulpSass from 'gulp-sass';
import {deleteAsync} from 'del';
import {readdirSync} from 'node:fs';
import {join} from 'node:path';
import {compilePack} from '@foundryvtt/foundryvtt-cli';
const sass = gulpSass(dartSass);
import { deleteAsync } from 'del';
import { readdirSync } from 'node:fs';
import { join } from 'node:path';
import { compilePack } from '@foundryvtt/foundryvtt-cli';
function cleanDist() {
return deleteAsync(['dist/**']);
}
@ -22,7 +22,7 @@ function buildStyles() {
return src('src/style/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(dest('dist/style/'))
};
}
function copySource() {
return src(['src/**/*', '!src/assets/**/*', '!src/style/**/*.scss', '!src/packs/**/*'])
@ -47,7 +47,7 @@ function buildDB() {
const PACK_DEST = "dist/packs/"
return new Promise(async (resolve, reject) => {
const folders = readdirSync(PACK_SRC, { withFileTypes: true }).filter(file =>
const folders = readdirSync(PACK_SRC, {withFileTypes: true}).filter(file =>
file.isDirectory()
);
@ -55,7 +55,7 @@ function buildDB() {
const src = join(PACK_SRC, folder.name);
const dest = join(PACK_DEST, folder.name);
console.info(`Compiling pack ${folder.name}`);
await compilePack(src, dest, { recursive: true, log: true, nedb: false });
await compilePack(src, dest, {recursive: true, log: true, nedb: false});
}
resolve()

View File

@ -1,13 +1,13 @@
import { cpSync, existsSync } from 'node:fs';
import { resolve, join } from 'node:path';
import {cpSync, existsSync} from 'node:fs';
import {join, resolve} from 'node:path';
const MODULE_ID = process.cwd();
const SRC = join(MODULE_ID, "/dist")
const DEST = "/home/macniel/.local/share/FoundryVTT/Data/systems/DSA_4-1"
if ( existsSync(SRC)) {
cpSync(SRC, resolve(DEST), { recursive: true })
if (existsSync(SRC)) {
cpSync(SRC, resolve(DEST), {recursive: true})
console.log(`copied ${SRC} to ${DEST}`)
} else {
console.error(`Source ${SRC} does not exists. Forgot to compile?`)

View File

@ -2,19 +2,18 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
version="1.1"
width="901.49994"
height="901.49994"
id="svg2"
sodipodi:docname="Boron_2.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
xmlns="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview40721"
pagecolor="#ffffff"
@ -33,9 +32,9 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
inkscape:current-layer="svg2"/>
<defs
id="defs4" />
id="defs4"/>
<metadata
id="metadata7">
<rdf:RDF>
@ -43,15 +42,15 @@
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="rotate(22.635939,-713.81049,-2820.5556)"
id="g5124"
style="stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<g
id="g41280">
<rect
@ -60,14 +59,14 @@
x="510.50003"
y="434.99994"
id="rect2953"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<rect
width="220"
height="40"
x="170.50011"
y="434.99994"
id="rect2953-1"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<rect
width="220"
height="40"
@ -75,7 +74,7 @@
y="-470.50003"
transform="matrix(0,-1,-1,0,0,0)"
id="rect2953-4"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<rect
width="220"
height="40"
@ -83,7 +82,7 @@
y="620.28595"
transform="rotate(-45)"
id="rect2953-9"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<rect
width="220"
height="40"
@ -91,22 +90,22 @@
y="-23.181307"
transform="rotate(-135)"
id="rect2953-9-4"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path
d="m 164.09378,365.49994 c -8.8221,28.26434 -13.5938,58.32961 -13.5938,89.5 0,165.68542 134.3146,300 300.00002,300 165.68542,0 300,-134.31458 300,-300 0,-31.17039 -4.77164,-61.23566 -13.59375,-89.5 l -38.1875,11.9375 c 7.6477,24.49847 11.78125,50.54473 11.78125,77.5625 0,143.59403 -116.40597,260 -260,260 -143.59403,0 -260.00002,-116.40597 -260.00002,-260 0,-27.01777 4.1336,-53.06403 11.7813,-77.5625 z"
id="path2938"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path
d="m 670.53125,133.09369 c 0,0 -0.67043,13.60031 -3.3125,29.65625 -2.64207,16.05594 -8.94199,34.57952 -12.3125,38.78125 -13.67668,17.04956 -38.43505,25.28914 -68.5625,33.8125 -30.12745,8.52336 -65.25279,17.1821 -90.65625,45.28125 -16.69459,18.46613 -25.89713,44.55225 -33.21875,67.25 -7.32162,22.69775 -11.5,41.90625 -11.5,41.90625 l 39.09375,8.5 c 0,0 3.80945,-17.48054 10.46875,-38.125 6.6593,-20.64446 17.43077,-44.5537 24.8125,-52.71875 15.30547,-16.92962 41.53873,-25.00248 71.90625,-33.59375 30.36752,-8.59127 65.2405,-17.8181 88.875,-47.28125 13.82909,-17.23957 17.50447,-38.72877 20.5625,-57.3125 3.05803,-18.58373 3.8125,-34.25 3.8125,-34.25 z"
id="path3020"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate" />
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate"/>
<path
d="m 230.46878,133.09369 c 0,0 0.6704,13.60031 3.3125,29.65625 2.642,16.05594 8.942,34.57952 12.3125,38.78125 13.67665,17.04956 38.43502,25.28914 68.56247,33.8125 30.12745,8.52336 65.25279,17.1821 90.65625,45.28125 16.69459,18.46613 25.89713,44.55225 33.21875,67.25 7.32162,22.69775 11.5,41.90625 11.5,41.90625 l -39.09375,8.5 c 0,0 -3.80945,-17.48054 -10.46875,-38.125 -6.6593,-20.64446 -17.43077,-44.5537 -24.8125,-52.71875 -15.30547,-16.92962 -41.53873,-25.00248 -71.90625,-33.59375 -30.36752,-8.59127 -65.24052,-17.8181 -88.87502,-47.28125 -13.8291,-17.23957 -17.5045,-38.72877 -20.5625,-57.3125 -3.058,-18.58373 -3.8125,-34.25 -3.8125,-34.25 z"
id="path3020-8"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate" />
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate"/>
<path
d="m 450.5,374.99994 c -44.18278,0 -80,35.81722 -80,80 0,44.18278 35.81722,80 80,80 44.18278,0 80,-35.81722 80,-80 0,-44.18278 -35.81722,-80 -80,-80 z m 0,40 c 22.09139,0 40,17.90861 40,40 0,22.09139 -17.90861,40 -40,40 -22.09139,0 -40,-17.90861 -40,-40 0,-22.09139 17.90861,-40 40,-40 z"
id="path2948"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
width="24"
height="24"
version="1.1"
id="svg4"
sodipodi:docname="circle.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
>
<defs
id="defs8" />
id="defs8"/>
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
@ -30,7 +30,7 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
inkscape:current-layer="svg4"/>
<circle
cx="12"
cy="12"
@ -38,5 +38,5 @@
stroke="#008000"
stroke-width="1"
fill="#ffff00"
id="circle2" />
id="circle2"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -2,6 +2,8 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
width="24"
height="24"
viewBox="0 0 6.3499998 6.35"
@ -9,12 +11,10 @@
id="svg10"
sodipodi:docname="die.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
>
<defs
id="defs14" />
id="defs14"/>
<sodipodi:namedview
id="namedview12"
pagecolor="#ffffff"
@ -33,7 +33,7 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg10" />
inkscape:current-layer="svg10"/>
<g
id="g54292"
transform="matrix(0.18024007,0,0,0.18024007,-0.89816307,-0.85756211)"
@ -43,43 +43,43 @@
d="M 22.60018,5.4074448 15.210951,18.121927 7.821723,13.87057 Z"
id="path54272"
fill="currentColor"
class="die topleft" />
class="die topleft"/>
<path
style="fill:none;stroke:#000000;stroke-width:1.05833;stroke-linejoin:bevel;stroke-dasharray:none"
d="M 22.60018,5.4074448 29.989407,18.121927 37.34771,13.890365 Z"
id="path54274"
fill="currentColor"
class="die topright" />
class="die topright"/>
<path
style="fill:none;stroke:#000000;stroke-width:1.05833;stroke-linejoin:bevel;stroke-dasharray:none"
d="m 29.989407,18.121927 7.389229,12.754072 -2e-6,-17.005429 z"
id="path54276"
fill="currentColor"
class="die bottomright" />
class="die bottomright"/>
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:1.05833;stroke-linejoin:bevel;stroke-dasharray:none"
d="m 15.210951,18.121927 -7.3934235,12.756367 2e-6,-17.005429 z"
id="path54278"
fill="currentColor"
class="die bottomleft" />
class="die bottomleft"/>
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:1.05833;stroke-linejoin:bevel;stroke-dasharray:none"
d="M 7.8175275,30.878293 22.600179,39.378712 37.378634,30.875999 Z"
id="path54280"
fill="currentColor"
class="die bottom" />
class="die bottom"/>
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:1.05833;stroke-linejoin:bevel;stroke-dasharray:none"
d="M 7.821723,30.875999 22.600179,5.3678558 37.378634,30.875999 Z"
id="path54282"
fill="currentColor"
class="die center" />
class="die center"/>
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.896643;stroke-dasharray:none;paint-order:normal"
id="path2181"
fill="currentColor"
class="die borer"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 V 95.663763 l 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(1.1823833,0,0,1.1782771,-5.0966027,-98.847851)" />
transform="matrix(1.1823833,0,0,1.1782771,-5.0966027,-98.847851)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -2,6 +2,9 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="936"
height="128"
viewBox="0 0 247.65002 33.866666"
@ -10,11 +13,8 @@
sodipodi:docname="kampftalent.svg"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
@ -33,7 +33,8 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
inkscape:current-layer="layer1" />
<defs
id="defs2"><linearGradient
inkscape:collect="always"
id="linearGradient11174"><stop
@ -42,18 +43,21 @@
id="stop11170" /><stop
style="stop-color:#cc0000;stop-opacity:0;"
offset="1"
id="stop11172" /></linearGradient><rect
id="stop11172"/></linearGradient>
<rect
x="-146.37109"
y="-165.10944"
width="3.1819806"
height="18.031223"
id="rect8930" /><clipPath
id="rect8930"/>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3563"><use
x="0"
y="0"
xlink:href="#g3559"
id="use3565" /></clipPath><linearGradient
id="use3565" /></clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient11174"
id="linearGradient11176"
@ -62,7 +66,8 @@
x2="123.80584"
y2="8.5387707"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.9999991,0,0,1.9999991,-6.3180528e-7,2.0198111e-6)" /></defs><g
gradientTransform="matrix(1.9999991,0,0,1.9999991,-6.3180528e-7,2.0198111e-6)"/></defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><rect
@ -71,7 +76,8 @@
width="231.77489"
height="32.808315"
x="15.307509"
y="0.67337787" /><g
y="0.67337787" />
<g
id="g3196"
transform="matrix(1.9999991,0,0,1.9999991,60.86841,-212.70002)"
inkscape:label="pa"><rect
@ -80,14 +86,16 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" /><rect
y="106.68675" />
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect1211"
width="0.26458347"
height="13.803041"
x="-76.967453"
y="106.68675"
transform="scale(-1,1)" /><text
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
x="84.790123"
@ -98,7 +106,8 @@
id="tspan2183-1"
style="fill:#555753;stroke:none;stroke-width:0.529167"
x="84.790123"
y="122.37695">PA</tspan></text><text
y="122.37695">PA</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:1"
x="131.09895"
@ -110,7 +119,8 @@
id="tspan5829"
style="fill:#000000;stroke-width:1"
x="131.09895"
y="91.726837">-</tspan></text></g><g
y="91.726837">-</tspan></text></g>
<g
id="g3252"
transform="matrix(1.9999991,0,0,1.9999991,28.324693,-212.70002)"
inkscape:label="at"><rect
@ -120,21 +130,24 @@
height="16.748518"
x="76.57058"
y="106.68675"
inkscape:label="rect3242" /><rect
inkscape:label="rect3242" />
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect3244"
width="0.26458347"
height="13.803041"
x="-76.967453"
y="106.68675"
transform="scale(-1,1)" /><rect
transform="scale(-1,1)"/>
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect3246"
width="0.26458347"
height="13.803041"
x="-93.239319"
y="106.68675"
transform="scale(-1,1)" /><text
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
x="84.790123"
@ -145,7 +158,8 @@
id="tspan3248"
style="fill:#555753;stroke:none;stroke-width:0.529167"
x="84.790123"
y="122.37695">AT</tspan></text><text
y="122.37695">AT</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:1"
x="114.82708"
@ -157,13 +171,15 @@
id="tspan5825"
style="fill:#000000;stroke-width:1"
x="114.82708"
y="91.726837">23</tspan></text></g><rect
y="91.726837">23</tspan></text></g>
<rect
style="fill:none;fill-opacity:1;stroke:#333333;stroke-width:1.05833;stroke-dasharray:none;stroke-opacity:1"
id="rect788"
width="231.77489"
height="32.808315"
x="15.307509"
y="0.67337787" /><text
y="0.67337787"/>
<text
xml:space="preserve"
style="font-size:8.46666px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:start;text-anchor:start;fill:#ffffff;stroke-width:2"
x="49.406403"
@ -174,7 +190,8 @@
id="tspan950"
style="text-align:start;text-anchor:start;fill:#ffffff;stroke-width:2"
x="49.406403"
y="20.332304">Bogen</tspan></text><g
y="20.332304">Bogen</tspan></text>
<g
id="g3561"
clip-path="url(#clipPath3563)"
transform="matrix(2.0832585,0,0,2.0735313,-46.386506,-169.785)"
@ -196,15 +213,18 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" /></g><path
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" /></g>
<path
style="fill:#ef2929;fill-opacity:1;stroke:none;stroke-width:0.530407;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 22.596749,93.771327 7.028072,-11.836363 -6.909419,4.004048 z"
id="path8173"
transform="matrix(0.96003407,0,0,0.96003407,0.91547839,3.6348696)"
sodipodi:nodetypes="cccc" /><path
sodipodi:nodetypes="cccc"/>
<path
style="fill:none;stroke:#000000;stroke-width:0.509208;stroke-dasharray:none;paint-order:normal"
d="m 22.723038,86.139249 6.891154,3.457526 6.891152,-3.457526"
id="path5077" /><path
id="path5077"/>
<path
sodipodi:type="star"
style="fill:#cc0000;fill-opacity:1;stroke:#000000;stroke-width:1.17592;stroke-dasharray:none"
id="path3523"
@ -219,7 +239,8 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 67.788266,126.47675 -31.89446,0.0102 15.938378,-27.626518 z"
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)" /><path
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)"/>
<path
sodipodi:type="star"
style="fill:none;stroke:#000000;stroke-width:1.79328;stroke-dasharray:none;paint-order:normal"
id="path8372"
@ -234,7 +255,8 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)" /></g><text
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)"/></g>
<text
xml:space="preserve"
style="font-size:8.46666px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:2"
x="14.456725"

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -2,6 +2,9 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="936"
height="128"
viewBox="0 0 247.65002 33.866666"
@ -10,11 +13,8 @@
sodipodi:docname="liturgie.svg"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
@ -33,7 +33,8 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
inkscape:current-layer="layer1" />
<defs
id="defs2"><linearGradient
inkscape:collect="always"
id="linearGradient19422"><stop
@ -42,13 +43,15 @@
id="stop19418" /><stop
style="stop-color:#edd400;stop-opacity:0;"
offset="1"
id="stop19420" /></linearGradient><clipPath
id="stop19420"/></linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3563"><use
x="0"
y="0"
xlink:href="#g3559"
id="use3565" /></clipPath><linearGradient
id="use3565" /></clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient19422"
id="linearGradient19424"
@ -57,7 +60,8 @@
x2="123.80584"
y2="8.5387707"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.9999991,0,0,1.9999991,-6.3180528e-7,2.0198111e-6)" /></defs><g
gradientTransform="matrix(1.9999991,0,0,1.9999991,-6.3180528e-7,2.0198111e-6)"/></defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><rect
@ -66,7 +70,8 @@
width="231.77489"
height="32.808315"
x="15.307509"
y="0.67337787" /><g
y="0.67337787" />
<g
id="g3196"
transform="matrix(1.9999991,0,0,1.9999991,60.86841,-212.70002)"
inkscape:label="eigenschaft 3"><rect
@ -75,14 +80,16 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" /><rect
y="106.68675" />
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect1211"
width="0.26458347"
height="13.803041"
x="-76.967453"
y="106.68675"
transform="scale(-1,1)" /><text
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
x="84.790123"
@ -93,7 +100,8 @@
id="tspan2183-1"
style="fill:#555753;stroke:none;stroke-width:0.529167"
x="84.790123"
y="122.37695">CH</tspan></text><text
y="122.37695">CH</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:1"
x="131.09895"
@ -105,7 +113,8 @@
id="tspan5829"
style="fill:#000000;stroke-width:1"
x="131.09895"
y="91.726837">14</tspan></text></g><g
y="91.726837">14</tspan></text></g>
<g
id="g3252"
transform="matrix(1.9999991,0,0,1.9999991,28.324693,-212.70002)"
inkscape:label="eigenschaft 2"><rect
@ -114,14 +123,16 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" /><rect
y="106.68675" />
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect3244"
width="0.26458347"
height="13.803041"
x="-76.967453"
y="106.68675"
transform="scale(-1,1)" /><text
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
x="84.790123"
@ -132,7 +143,8 @@
id="tspan3248"
style="fill:#555753;stroke:none;stroke-width:0.529167"
x="84.790123"
y="122.37695">IN</tspan></text><text
y="122.37695">IN</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:1"
x="114.82708"
@ -144,7 +156,8 @@
id="tspan5825"
style="fill:#000000;stroke-width:1"
x="114.82708"
y="91.726837">14</tspan></text></g><g
y="91.726837">14</tspan></text></g>
<g
id="g3264"
transform="matrix(1.9999991,0,0,1.9999991,-4.2190233,-212.70002)"
inkscape:label="eigenschaft 1"><rect
@ -153,14 +166,16 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" /><rect
y="106.68675" />
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect3256"
width="0.26458347"
height="13.803041"
x="-76.967453"
y="106.68675"
transform="scale(-1,1)" /><text
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
x="84.790123"
@ -171,7 +186,8 @@
id="tspan3260"
style="fill:#555753;stroke:none;stroke-width:0.529167"
x="84.790123"
y="122.37695">MU</tspan></text><text
y="122.37695">MU</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:1"
x="98.555214"
@ -183,13 +199,15 @@
id="tspan5821"
style="fill:#000000;stroke-width:1"
x="98.555214"
y="91.726837">13</tspan></text></g><rect
y="91.726837">13</tspan></text></g>
<rect
style="fill:none;fill-opacity:1;stroke:#333333;stroke-width:1.05833;stroke-dasharray:none;stroke-opacity:1"
id="rect788"
width="231.77489"
height="32.808315"
x="15.307509"
y="0.67337787" /><text
y="0.67337787"/>
<text
xml:space="preserve"
style="font-size:8.46666px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:start;text-anchor:start;fill:#fce94f;stroke-width:2"
x="49.406403"
@ -200,7 +218,8 @@
id="tspan950"
style="text-align:start;text-anchor:start;fill:#000000;stroke-width:2"
x="49.406403"
y="20.332304">Ruf zur Ruhe</tspan></text><g
y="20.332304">Ruf zur Ruhe</tspan></text>
<g
id="g3561"
clip-path="url(#clipPath3563)"
transform="matrix(2.0832585,0,0,2.0735313,-46.386506,-169.785)"
@ -222,15 +241,18 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" /></g><path
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" /></g>
<path
style="fill:#fce94f;fill-opacity:1;stroke:none;stroke-width:0.530407;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 22.596749,93.771327 7.028072,-11.836363 -6.909419,4.004048 z"
id="path8173"
transform="matrix(0.96003407,0,0,0.96003407,0.91547839,3.6348696)"
sodipodi:nodetypes="cccc" /><path
sodipodi:nodetypes="cccc"/>
<path
style="fill:none;stroke:#000000;stroke-width:0.509208;stroke-dasharray:none;paint-order:normal"
d="m 22.723038,86.139249 6.891154,3.457526 6.891152,-3.457526"
id="path5077" /><path
id="path5077"/>
<path
sodipodi:type="star"
style="fill:#edd400;fill-opacity:1;stroke:#000000;stroke-width:1.17592;stroke-dasharray:none"
id="path3523"
@ -245,7 +267,8 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 67.788266,126.47675 -31.89446,0.0102 15.938378,-27.626518 z"
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)" /><path
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)"/>
<path
sodipodi:type="star"
style="fill:none;stroke:#000000;stroke-width:1.79328;stroke-dasharray:none;paint-order:normal"
id="path8372"
@ -260,4 +283,4 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)" /></g></g></svg>
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -2,6 +2,9 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="936"
height="128"
viewBox="0 0 247.65002 33.866666"
@ -10,11 +13,8 @@
sodipodi:docname="nachteil.svg"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
@ -33,7 +33,8 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
inkscape:current-layer="layer1" />
<defs
id="defs2"><linearGradient
inkscape:collect="always"
id="linearGradient12058"><stop
@ -42,18 +43,21 @@
id="stop12054" /><stop
style="stop-color:#2e3436;stop-opacity:0;"
offset="1"
id="stop12056" /></linearGradient><rect
id="stop12056"/></linearGradient>
<rect
x="-146.37109"
y="-165.10944"
width="3.1819806"
height="18.031223"
id="rect8930" /><clipPath
id="rect8930"/>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3563"><use
x="0"
y="0"
xlink:href="#g3559"
id="use3565" /></clipPath><linearGradient
id="use3565" /></clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient12058"
id="linearGradient12060"
@ -62,7 +66,8 @@
x2="123.80584"
y2="8.5387707"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.9999991,0,0,1.9999991,-6.3180528e-7,2.0198111e-6)" /></defs><g
gradientTransform="matrix(1.9999991,0,0,1.9999991,-6.3180528e-7,2.0198111e-6)"/></defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><rect
@ -71,13 +76,15 @@
width="231.77489"
height="32.808315"
x="15.307509"
y="0.67337787" /><rect
y="0.67337787" />
<rect
style="fill:none;fill-opacity:1;stroke:#333333;stroke-width:1.05833;stroke-dasharray:none;stroke-opacity:1"
id="rect788"
width="231.77489"
height="32.808315"
x="15.307509"
y="0.67337787" /><text
y="0.67337787"/>
<text
xml:space="preserve"
style="font-size:8.46666px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:start;text-anchor:start;fill:#ffffff;stroke-width:2"
x="49.406403"
@ -88,7 +95,8 @@
id="tspan950"
style="text-align:start;text-anchor:start;fill:#ffffff;stroke-width:2"
x="49.406403"
y="20.332304">Arroganz</tspan></text><g
y="20.332304">Arroganz</tspan></text>
<g
id="g3561"
clip-path="url(#clipPath3563)"
transform="matrix(2.0832585,0,0,2.0735313,-46.386506,-169.785)"
@ -110,15 +118,18 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" /></g><path
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" /></g>
<path
style="fill:#888a85;fill-opacity:1;stroke:none;stroke-width:0.530407;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 22.596749,93.771327 7.028072,-11.836363 -6.909419,4.004048 z"
id="path8173"
transform="matrix(0.96003407,0,0,0.96003407,0.91547839,3.6348696)"
sodipodi:nodetypes="cccc" /><path
sodipodi:nodetypes="cccc"/>
<path
style="fill:none;stroke:#000000;stroke-width:0.509208;stroke-dasharray:none;paint-order:normal"
d="m 22.723038,86.139249 6.891154,3.457526 6.891152,-3.457526"
id="path5077" /><path
id="path5077"/>
<path
sodipodi:type="star"
style="fill:#555753;fill-opacity:1;stroke:#000000;stroke-width:1.17592;stroke-dasharray:none"
id="path3523"
@ -133,7 +144,8 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 67.788266,126.47675 -31.89446,0.0102 15.938378,-27.626518 z"
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)" /><path
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)"/>
<path
sodipodi:type="star"
style="fill:none;stroke:#000000;stroke-width:1.79328;stroke-dasharray:none;paint-order:normal"
id="path8372"
@ -148,7 +160,8 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)" /></g><text
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)"/></g>
<text
xml:space="preserve"
style="font-size:8.46666px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:2"
x="14.456725"

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -2,6 +2,9 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="468"
height="64"
viewBox="0 0 123.82501 16.933333"
@ -9,11 +12,8 @@
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="rollable.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
>
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
@ -33,7 +33,7 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
inkscape:current-layer="layer1"/>
<defs
id="defs2">
<linearGradient
@ -42,11 +42,11 @@
<stop
style="stop-color:#5389f3;stop-opacity:1;"
offset="0"
id="stop3459" />
id="stop3459"/>
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3461" />
id="stop3461"/>
</linearGradient>
<linearGradient
inkscape:collect="always"
@ -57,7 +57,7 @@
x2="139.65504"
y2="90.083244"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0557721,0,0,0.99516084,-23.623299,-81.108547)" />
gradientTransform="matrix(1.0557721,0,0,0.99516084,-23.623299,-81.108547)"/>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3563">
@ -65,7 +65,7 @@
x="0"
y="0"
xlink:href="#g3559"
id="use3565" />
id="use3565"/>
</clipPath>
</defs>
<g
@ -82,7 +82,7 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" />
y="106.68675"/>
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.264583;stroke-dasharray:none"
id="rect1211"
@ -90,7 +90,7 @@
height="13.803041"
x="-76.702873"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.264583;stroke-dasharray:none"
id="rect1976"
@ -98,7 +98,7 @@
height="13.803041"
x="-92.974739"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
@ -135,7 +135,7 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" />
y="106.68675"/>
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.264583;stroke-dasharray:none"
id="rect3244"
@ -143,7 +143,7 @@
height="13.803041"
x="-76.702873"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.264583;stroke-dasharray:none"
id="rect3246"
@ -151,7 +151,7 @@
height="13.803041"
x="-92.974739"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
@ -188,7 +188,7 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" />
y="106.68675"/>
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.264583;stroke-dasharray:none"
id="rect3256"
@ -196,7 +196,7 @@
height="13.803041"
x="-76.702873"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.264583;stroke-dasharray:none"
id="rect3258"
@ -204,7 +204,7 @@
height="13.803041"
x="-92.974739"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
@ -237,7 +237,7 @@
width="115.8875"
height="16.404165"
x="7.6537585"
y="0.33668807" />
y="0.33668807"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:1"
@ -274,18 +274,18 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" />
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)"/>
</g>
<path
style="fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:0.530407;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 22.596749,93.771327 7.028072,-11.836363 -6.909419,4.004048 z"
id="path8173"
transform="matrix(0.96003407,0,0,0.96003407,0.91547839,3.6348696)"
sodipodi:nodetypes="cccc" />
sodipodi:nodetypes="cccc"/>
<path
style="fill:none;stroke:#000000;stroke-width:0.509208;stroke-dasharray:none;paint-order:normal"
d="m 22.723038,86.139249 6.891154,3.457526 6.891152,-3.457526"
id="path5077" />
id="path5077"/>
<path
sodipodi:type="star"
style="fill:#3465a4;fill-opacity:1;stroke:#000000;stroke-width:1.17592;stroke-dasharray:none"
@ -301,7 +301,7 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 67.788266,126.47675 -31.89446,0.0102 15.938378,-27.626518 z"
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)" />
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)"/>
<path
sodipodi:type="star"
style="fill:none;stroke:#000000;stroke-width:1.79328;stroke-dasharray:none;paint-order:normal"
@ -317,7 +317,7 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)" />
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)"/>
</g>
<text
xml:space="preserve"

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -2,6 +2,9 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="936"
height="128"
viewBox="0 0 247.65002 33.866666"
@ -9,11 +12,8 @@
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="zauber.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
>
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
@ -33,7 +33,7 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
inkscape:current-layer="layer1"/>
<defs
id="defs2">
<linearGradient
@ -42,11 +42,11 @@
<stop
style="stop-color:#5389f3;stop-opacity:1;"
offset="0"
id="stop3459" />
id="stop3459"/>
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3461" />
id="stop3461"/>
</linearGradient>
<linearGradient
inkscape:collect="always"
@ -57,7 +57,7 @@
x2="139.65504"
y2="90.083244"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0557721,0,0,0.99516084,-23.623299,-81.108547)" />
gradientTransform="matrix(1.0557721,0,0,0.99516084,-23.623299,-81.108547)"/>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3563">
@ -65,7 +65,7 @@
x="0"
y="0"
xlink:href="#g3559"
id="use3565" />
id="use3565"/>
</clipPath>
</defs>
<g
@ -83,14 +83,14 @@
height="16.404165"
x="7.6537585"
y="0.33668807"
transform="translate(-30.434219,106.35006)" />
transform="translate(-30.434219,106.35006)"/>
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
id="rect3107"
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" />
y="106.68675"/>
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect1211"
@ -98,7 +98,7 @@
height="13.803041"
x="-76.967453"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
@ -135,7 +135,7 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" />
y="106.68675"/>
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect3246"
@ -143,7 +143,7 @@
height="13.803041"
x="-93.239319"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
@ -180,7 +180,7 @@
width="16.536451"
height="16.748518"
x="76.57058"
y="106.68675" />
y="106.68675"/>
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect3256"
@ -188,7 +188,7 @@
height="13.803041"
x="-76.967453"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<rect
style="fill:#000000;stroke:none;stroke-width:234.2;stroke-dasharray:none"
id="rect3258"
@ -196,7 +196,7 @@
height="13.803041"
x="-93.239319"
y="106.68675"
transform="scale(-1,1)" />
transform="scale(-1,1)"/>
<text
xml:space="preserve"
style="font-size:4.23333px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#555753;stroke:none;stroke-width:0.529167;stroke-dasharray:none"
@ -229,7 +229,7 @@
width="231.77489"
height="32.808315"
x="15.307509"
y="0.67337787" />
y="0.67337787"/>
<text
xml:space="preserve"
style="font-size:8.46666px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';text-align:center;text-anchor:middle;fill:#fce94f;stroke-width:2"
@ -266,18 +266,18 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)" />
transform="matrix(0.56756439,0,0,0.56824657,16.065304,31.622044)"/>
</g>
<path
style="fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:0.530407;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 22.596749,93.771327 7.028072,-11.836363 -6.909419,4.004048 z"
id="path8173"
transform="matrix(0.96003407,0,0,0.96003407,0.91547839,3.6348696)"
sodipodi:nodetypes="cccc" />
sodipodi:nodetypes="cccc"/>
<path
style="fill:none;stroke:#000000;stroke-width:0.509208;stroke-dasharray:none;paint-order:normal"
d="m 22.723038,86.139249 6.891154,3.457526 6.891152,-3.457526"
id="path5077" />
id="path5077"/>
<path
sodipodi:type="star"
style="fill:#3465a4;fill-opacity:1;stroke:#000000;stroke-width:1.17592;stroke-dasharray:none"
@ -293,7 +293,7 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 67.788266,126.47675 -31.89446,0.0102 15.938378,-27.626518 z"
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)" />
transform="matrix(0.43118457,0,0,0.43488655,7.0070777,39.302145)"/>
<path
sodipodi:type="star"
style="fill:none;stroke:#000000;stroke-width:1.79328;stroke-dasharray:none;paint-order:normal"
@ -309,7 +309,7 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 35.923409,110.09622 -12.498871,7.21622 -12.498871,-7.21622 0,-14.432457 12.498871,-7.216227 12.498871,7.216227 z"
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)" />
transform="matrix(0.56756439,0,0,0.56824658,16.065304,31.622045)"/>
</g>
<text
xml:space="preserve"

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,18 +1,18 @@
import {PlayerCharacterDataModel} from "./module/data/character.mjs";
import { SkillSheet } from "./module/sheets/skillSheet.mjs";
import { SpellSheet } from "./module/sheets/spellSheet.mjs";
import { SkillDataModel } from "./module/data/skill.mjs";
import { SpellDataModel } from "./module/data/spell.mjs";
import { VornachteileDataModel } from "./module/data/vornachteile.mjs";
import { Character } from "./module/documents/character.mjs";
import { CharacterSheet } from "./module/sheets/characterSheet.mjs";
import { VornachteilSheet } from "./module/sheets/vornachteilSheet.mjs";
import {SkillSheet} from "./module/sheets/skillSheet.mjs";
import {SpellSheet} from "./module/sheets/spellSheet.mjs";
import {SkillDataModel} from "./module/data/skill.mjs";
import {SpellDataModel} from "./module/data/spell.mjs";
import {VornachteileDataModel} from "./module/data/vornachteile.mjs";
import {Character} from "./module/documents/character.mjs";
import {CharacterSheet} from "./module/sheets/characterSheet.mjs";
import {VornachteilSheet} from "./module/sheets/vornachteilSheet.mjs";
import {GroupDataModel} from "./module/data/group.mjs";
import {GroupSheet} from "./module/sheets/groupSheet.mjs";
import {EquipmentDataModel} from "./module/data/equipment.mjs";
import {AusruestungSheet} from "./module/sheets/equipmentSheet.mjs";
import { CreatureDataModel } from "./module/data/creature.mjs";
import { CreatureSheet } from "./module/sheets/creatureSheet.mjs";
import {CreatureDataModel} from "./module/data/creature.mjs";
import {CreatureSheet} from "./module/sheets/creatureSheet.mjs";
async function preloadHandlebarsTemplates() {
return loadTemplates([
@ -68,12 +68,12 @@ Hooks.once("init", () => {
Actors.registerSheet('dsa41.creature', CreatureSheet, {
types: ["creature"],
makeDefault: true,
label : 'DSA41.CreatureLabel.Item'
label: 'DSA41.CreatureLabel.Item'
})
Actors.registerSheet('dsa41.group', GroupSheet, {
types: ["group"],
makeDefault: true,
label : 'DSA41.GroupLabel.Item'
label: 'DSA41.GroupLabel.Item'
})
// Register sheet application classes
@ -109,9 +109,9 @@ Hooks.on('dropActorSheetData', (actor, sheet, data) => {
return GroupSheet.onDroppedData(actor, sheet, data);
}
}
} )
})
Hooks.once("ready", async function() {
Hooks.once("ready", async function () {
// Wait to register hotbar drop hook on ready so that modules could register earlier if they want to
Hooks.on("hotbarDrop", (bar, data, slot) => createBoilerplateMacro(data, slot));
});
@ -131,7 +131,7 @@ async function createBoilerplateMacro(data, slot) {
type: "script",
img: item.img,
command: command,
flags: { "dsa41.itemMacro": true }
flags: {"dsa41.itemMacro": true}
});
}
game.user.assignHotbarMacro(macro, slot);

View File

@ -1,14 +1,14 @@
export default class BaseItem extends foundry.abstract.TypeDataModel {
/** @inheritDoc */
async importFromCompendium(pack, id, updateData={}, options={}) {
async importFromCompendium(pack, id, updateData = {}, options = {}) {
console.log(`called ${pack} ${id} `);
const created = await super.importFromCompendium(pack, id, updateData, options);
const item = await pack.getDocument(id);
const contents = await item.system.contents;
if ( contents ) {
const fromOptions = foundry.utils.mergeObject({ clearSort: false }, options);
if (contents) {
const fromOptions = foundry.utils.mergeObject({clearSort: false}, options);
const toCreate = await BaseItem.createWithContents(contents, {
container: created, keepId: options.keepId, transformAll: item => this.fromCompendium(item, fromOptions)
});

View File

@ -1,6 +1,3 @@
import {Skill} from "../documents/skill.mjs";
import {SkillDataModel} from "./skill.mjs";
const {
SchemaField, NumberField, StringField, EmbeddedDocumentField, DocumentIdField, ArrayField, ForeignDocumentField
} = foundry.data.fields;
@ -16,103 +13,103 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
professions: new ArrayField(new StringField()),
geschlecht: new StringField(),
haarfarbe: new StringField(),
groesse: new NumberField({ required: true, integer: false }),
groesse: new NumberField({required: true, integer: false}),
augenfarbe: new StringField(),
geburtstag: new StringField(),
alter: new NumberField({ required: true, integer: true }),
gewicht: new NumberField({ required: true, integer: true }),
alter: new NumberField({required: true, integer: true}),
gewicht: new NumberField({required: true, integer: true}),
aussehen: new ArrayField(new StringField()),
familie: new ArrayField(new StringField()),
titel: new StringField(),
stand: new StringField(),
}),
ini: new SchemaField({
aktuell: new NumberField({ required: true, integer: true, initial: 0 }),
mod: new NumberField({ required: true, integer: true, initial: 0 }),
wuerfel: new NumberField({ required: true, integer: true, initial: 1}),
aktuell: new NumberField({required: true, integer: true, initial: 0}),
mod: new NumberField({required: true, integer: true, initial: 0}),
wuerfel: new NumberField({required: true, integer: true, initial: 1}),
}),
lep: new SchemaField({
aktuell: new NumberField({ required: true, integer: true, initial: 0 }),
mod: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({required: true, integer: true, initial: 0}),
mod: new NumberField({required: true, integer: true}),
}),
mr: new SchemaField({
mod: new NumberField({ required: true, integer: true }),
mod: new NumberField({required: true, integer: true}),
}),
aup: new SchemaField({
aktuell: new NumberField({ required: true, integer: true, initial: 0 }),
mod: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({required: true, integer: true, initial: 0}),
mod: new NumberField({required: true, integer: true}),
}),
asp: new SchemaField({
aktuell: new NumberField({ required: true, integer: true, initial: 0 }),
mod: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({required: true, integer: true, initial: 0}),
mod: new NumberField({required: true, integer: true}),
}),
kap: new SchemaField({
aktuell: new NumberField({ required: true, integer: true, initial: 0 }),
mod: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({required: true, integer: true, initial: 0}),
mod: new NumberField({required: true, integer: true}),
}),
attribute: new SchemaField({
mu: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
kl: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
in: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
ch: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
ff: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
ge: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
ko: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
kk: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
at: new SchemaField({
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
pa: new SchemaField({
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
fk: new SchemaField({
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
so: new SchemaField({
start: new NumberField({ required: true, integer: true }),
aktuell: new NumberField({ required: true, integer: true }),
mod: new NumberField({ required: true, integer: true }),
start: new NumberField({required: true, integer: true}),
aktuell: new NumberField({required: true, integer: true}),
mod: new NumberField({required: true, integer: true}),
}),
gilde: new StringField(),
}),
vornachteile: new ArrayField(new SchemaField({
vornachteil: new DocumentIdField(Item),
wert: new NumberField({ required: false, integer: true }),
wert: new NumberField({required: false, integer: true}),
})),
sonderfertigkeiten: new ArrayField(new SchemaField({
name: new StringField(),
@ -129,8 +126,8 @@ export class PlayerCharacterDataModel extends foundry.abstract.TypeDataModel {
})),
kampfwerte: new ArrayField(new SchemaField({
name: new StringField(),
at: new NumberField({ required: true, integer: true }),
pa: new NumberField({ required: true, integer: true }),
at: new NumberField({required: true, integer: true}),
pa: new NumberField({required: true, integer: true}),
})),
notizen: new ArrayField(new SchemaField({
key: new StringField(),

View File

@ -1,4 +1,5 @@
import BaseItem from "./base-item.mjs";
const {
ArrayField, NumberField, StringField, HTMLField
} = foundry.data.fields;
@ -7,34 +8,34 @@ export class EquipmentDataModel extends BaseItem {
static defineSchema() {
return {
quantity: new NumberField({ required: true, integer: true, initial: 1}),
category: new ArrayField(new StringField({ required: true })),
quantity: new NumberField({required: true, integer: true, initial: 1}),
category: new ArrayField(new StringField({required: true})),
description: new HTMLField(),
weight: new NumberField({ required: true }),
weight: new NumberField({required: true}),
price: new StringField(),
breakFactor: new NumberField({ required: false }),
iniModifier: new NumberField({ required: false }),
attackModifier: new NumberField({ required: false }),
parryModifier: new NumberField({ required: false }),
breakFactor: new NumberField({required: false}),
iniModifier: new NumberField({required: false}),
attackModifier: new NumberField({required: false}),
parryModifier: new NumberField({required: false}),
meleeAttackModifier: new NumberField({ integer: true }),
meleeAttackModifierIncrement: new NumberField({ integer: true }),
meleeAttackModifier: new NumberField({integer: true}),
meleeAttackModifierIncrement: new NumberField({integer: true}),
meleeSkills: new ArrayField(
new StringField({ required: true }),
new StringField({required: true}),
),
meleeAttackDamage: new StringField(),
rangedSkills: new ArrayField(
new StringField({ required: true }),
new StringField({required: true}),
),
rangedRangeModifier: new StringField({ required: false }),
rangeRangeDamageModifier: new StringField({ required: false }),
rangedRangeModifier: new StringField({required: false}),
rangeRangeDamageModifier: new StringField({required: false}),
rangedAttackDamage: new StringField(),
rangedReloadTime: new NumberField({ required: false }),
rangedReloadTime: new NumberField({required: false}),
armorValue: new NumberField({ required: false }),
armorHandicap: new NumberField({ required: false }),
armorValue: new NumberField({required: false}),
armorHandicap: new NumberField({required: false}),
}
}

View File

@ -1,36 +1,39 @@
import BaseItem from "./base-item.mjs";
const { BooleanField, ArrayField, NumberField, SchemaField, StringField, HTMLField } = foundry.data.fields;
const {BooleanField, ArrayField, NumberField, SchemaField, StringField, HTMLField} = foundry.data.fields;
export class SkillDataModel extends BaseItem {
static defineSchema() {
return {
name: new StringField({ required: true }),
gruppe: new StringField({ required: true }),
taw: new NumberField({ integer: true, initial: 0 }),
at: new NumberField({ required: false, integer: 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
name: new StringField({required: true}),
gruppe: new StringField({required: true}),
taw: new NumberField({integer: true, initial: 0}),
at: new NumberField({required: false, integer: 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
voraussetzung: new SchemaField({
talent: new StringField({ model: SkillDataModel }),
talent: new StringField({model: SkillDataModel}),
wert: new NumberField({}),
}), // Required skills at a given level
talent: new HTMLField({ required: true }),
behinderung: new NumberField({ required: false}), // BE-X
komplexität: new NumberField({ required: false }), // In case of languages
talent: new HTMLField({required: true}),
behinderung: new NumberField({required: false}), // BE-X
komplexität: new NumberField({required: false}), // In case of languages
}
}
/**
* Augment the basic Item data model with additional dynamic data.
*/
prepareData() { }
prepareData() {
}
/**
* Prepare a data object which is passed to any Roll formulas which are created related to this Item
* @private
*/
getRollData() { }
getRollData() {
}
/**
* Handle clickable rolls.
@ -51,28 +54,35 @@ export class SkillDataModel extends BaseItem {
if (dsaDieRollEvaluated.tap >= 0) { // erfolg
evaluated1.toMessage({
speaker: ChatMessage.getSpeaker({actor: this.actor}),
flavor: ` ${dsaDieRollEvaluated.meisterlich?'Meisterlich geschafft':'Geschafft'} mit ${dsaDieRollEvaluated.tap} Punkten übrig`,
flavor: ` ${dsaDieRollEvaluated.meisterlich ? 'Meisterlich geschafft' : 'Geschafft'} mit ${dsaDieRollEvaluated.tap} Punkten übrig`,
rollMode: game.settings.get('core', 'rollMode'),
})
} else { // misserfolg
evaluated1.toMessage({
speaker: ChatMessage.getSpeaker({actor: this.actor}),
flavor: ` ${dsaDieRollEvaluated.meisterlich?'Gepatzt':''} mit ${Math.abs(dsaDieRollEvaluated.tap)} Punkten daneben`,
flavor: ` ${dsaDieRollEvaluated.meisterlich ? 'Gepatzt' : ''} mit ${Math.abs(dsaDieRollEvaluated.tap)} Punkten daneben`,
rollMode: game.settings.get('core', 'rollMode'),
})
}
}
_evaluateRoll(rolledDice, { taw, lowerThreshold = 1, upperThreshold = 20, countToMeisterlich = 3, countToPatzer = 3, werte = [] } ) {
_evaluateRoll(rolledDice, {
taw,
lowerThreshold = 1,
upperThreshold = 20,
countToMeisterlich = 3,
countToPatzer = 3,
werte = []
}) {
let tap = taw;
let meisterlichCounter = 0;
let patzerCounter = 0;
let failCounter = 0;
rolledDice.forEach( (rolledDie, index) => {
rolledDice.forEach((rolledDie, index) => {
if (tap < 0 && rolledDie.result > werte[index]) {
tap -= rolledDie.result - werte[index];
if (tap <0) { // konnte nicht vollständig ausgeglichen werden
if (tap < 0) { // konnte nicht vollständig ausgeglichen werden
failCounter++;
}
} else if (rolledDie.result > werte[index]) { // taw ist bereits aufgebraucht und wert kann nicht ausgeglichen werden

View File

@ -1,23 +1,23 @@
import BaseItem from "./base-item.mjs";
const { BooleanField, NumberField, SchemaField, ArrayField, StringField, HTMLField } = foundry.data.fields;
const {BooleanField, NumberField, SchemaField, ArrayField, StringField, HTMLField} = foundry.data.fields;
export class SpellDataModel extends BaseItem {
static defineSchema() {
return {
seite: new NumberField(),
name: new StringField({ required: true }),
probe: new ArrayField( new StringField(), { required: true, exact: 3 }),
name: new StringField({required: true}),
probe: new ArrayField(new StringField(), {required: true, exact: 3}),
probeMod: new StringField(),
technik: new StringField(),
zauberdauer: new StringField(),
wirkung: new StringField(),
kosten: new StringField(),
zielobjekt: new StringField(),
reichweite: new StringField({ required: true }),
wirkungsdauer: new StringField({ required: true }),
modifikationen: new StringField({ required: true }),
reichweite: new StringField({required: true}),
wirkungsdauer: new StringField({required: true}),
modifikationen: new StringField({required: true}),
reversalis: new StringField(),
antimagie: new StringField(),
merkmal: new StringField(),
@ -31,19 +31,22 @@ export class SpellDataModel extends BaseItem {
/**
* Augment the basic Item data model with additional dynamic data.
*/
prepareData() { }
prepareData() {
}
/**
* Prepare a data object which is passed to any Roll formulas which are created related to this Item
* @private
*/
getRollData() { }
getRollData() {
}
/**
* Handle clickable rolls.
* @param {Event} event The originating click event
* @private
*/
async roll() { }
async roll() {
}
}

View File

@ -1,37 +1,37 @@
import BaseItem from "./base-item.mjs";
const { ArrayField, NumberField, StringField, HTMLField } = foundry.data.fields;
const {ArrayField, NumberField, StringField, HTMLField} = foundry.data.fields;
export class VornachteileDataModel extends BaseItem {
static defineSchema() {
return {
name: new StringField({ required: true }),
name: new StringField({required: true}),
description: new HTMLField(),
// Optional Fields
value: new ArrayField( new StringField(), { required: false }),
regenerationASP: new ArrayField( new NumberField( { integer: true }), { required: false }),
regenerationLEP: new ArrayField( new NumberField( { integer: true }), { required: false }),
inRollRegeneration: new ArrayField( new NumberField( { integer: true }), { required: false }),
koRollRegeneration: new ArrayField( new NumberField( { integer: true }), { required: false }),
modGrosseRegeneration: new ArrayField( new NumberField( { integer: true }), { required: false }),
maxASP: new ArrayField( new NumberField( { integer: true }), { required: false }),
auswahl: new ArrayField( new StringField( { required: false })),
talente: new ArrayField( new StringField(), { required: false }),
talentBonus: new NumberField( { required: false, integer: true }),
attribute: new ArrayField( new StringField(), { required: false }),
attributBonus: new NumberField( { required: false, integer: true }),
ritualBonus: new NumberField( { integer: true }),
wundschwellenModifikator: new NumberField( { integer: true }),
inBonus: new NumberField( new NumberField( { integer: true }), { required: false }),
fkBonus: new NumberField( new NumberField( { integer: true }), { required: false }),
zauberBonus: new NumberField( { integer: true, required: false }),
gsMod: new ArrayField( new NumberField( { integer: true }), { required: false }),
ausweichenMod: new ArrayField( new NumberField( { integer: true }), { required: false }),
beVoraussetzung: new ArrayField( new NumberField( { integer: true }), { required: false }),
maxLEP: new ArrayField( new NumberField( { integer: true }), { required: false }),
maxMR: new ArrayField( new NumberField( { integer: true }), { required: false }),
value: new ArrayField(new StringField(), {required: false}),
regenerationASP: new ArrayField(new NumberField({integer: true}), {required: false}),
regenerationLEP: new ArrayField(new NumberField({integer: true}), {required: false}),
inRollRegeneration: new ArrayField(new NumberField({integer: true}), {required: false}),
koRollRegeneration: new ArrayField(new NumberField({integer: true}), {required: false}),
modGrosseRegeneration: new ArrayField(new NumberField({integer: true}), {required: false}),
maxASP: new ArrayField(new NumberField({integer: true}), {required: false}),
auswahl: new ArrayField(new StringField({required: false})),
talente: new ArrayField(new StringField(), {required: false}),
talentBonus: new NumberField({required: false, integer: true}),
attribute: new ArrayField(new StringField(), {required: false}),
attributBonus: new NumberField({required: false, integer: true}),
ritualBonus: new NumberField({integer: true}),
wundschwellenModifikator: new NumberField({integer: true}),
inBonus: new NumberField(new NumberField({integer: true}), {required: false}),
fkBonus: new NumberField(new NumberField({integer: true}), {required: false}),
zauberBonus: new NumberField({integer: true, required: false}),
gsMod: new ArrayField(new NumberField({integer: true}), {required: false}),
ausweichenMod: new ArrayField(new NumberField({integer: true}), {required: false}),
beVoraussetzung: new ArrayField(new NumberField({integer: true}), {required: false}),
maxLEP: new ArrayField(new NumberField({integer: true}), {required: false}),
maxMR: new ArrayField(new NumberField({integer: true}), {required: false}),
}
/*

View File

@ -1,4 +1,3 @@
export class Advantages extends Item {
/**
* Augment the basic Item data model with additional dynamic data.

View File

@ -75,7 +75,7 @@ export class Character extends Actor {
// move sonderfertigkeiten into data, if it isn't in data the actor doesn't have that sonderfertigkeit
data.sf = {}
if(data.sonderfertigkeiten) {
if (data.sonderfertigkeiten) {
data.sonderfertigkeiten.forEach(sf => {
data.sf[sf.name] = sf.auswahl;
})

View File

@ -1,4 +1,3 @@
export class Equipment extends Item {
/**
* Augment the basic Item data model with additional dynamic data.

View File

@ -1,4 +1,3 @@
export class Skill extends Item {
/**
* Augment the basic Item data model with additional dynamic data.

View File

@ -202,19 +202,18 @@ export class ActionManager {
]
#hatSonderfertigkeitBeginnendMit(name) {
return this.actor.system.sonderfertigkeiten.find( p => p.name.startsWith(name) ) != null
return this.actor.system.sonderfertigkeiten.find(p => p.name.startsWith(name)) != null
}
#hatSonderfertigkeit(name) {
return this.actor.system.sonderfertigkeiten.find( p => p.name === name ) != null
return this.actor.system.sonderfertigkeiten.find(p => p.name === name) != null
}
evaluate() {
let actionArray = [...this.#freeActions, ...this.#regularActions, ...this.#continuingActions]
return actionArray.filter( action => action.eval() );
return actionArray.filter(action => action.eval());
}
}

View File

@ -1,6 +1,5 @@
import {Character} from "../documents/character.mjs";
import {PlayerCharacterDataModel} from "../data/character.mjs";
import { ActionManager } from "./actions/action-manager.mjs";
import {ActionManager} from "./actions/action-manager.mjs";
export class CharacterSheet extends ActorSheet {
/**@override */
@ -45,12 +44,21 @@ export class CharacterSheet extends ActorSheet {
return context;
}
static getElementByName(collection, id) {
const array = Array.from(collection);
for (const element of array) {
if (element._id === id) {
return element;
}
}
}
#addSkillsToContext(context) {
const actorData = context.data;
context.skills = {};
context.flatSkills = [];
Object.values(actorData.items).forEach( (item, index) => {
Object.values(actorData.items).forEach((item, index) => {
if (item.type === "Skill") {
const talentGruppe = item.system.gruppe;
@ -88,23 +96,6 @@ export class CharacterSheet extends ActorSheet {
);
}
#addAdvantagesToContext(context) {
context.advantages = [];
const actorData = context.data;
Object.values(actorData.items).forEach( (item) => {
if (item.type === "Advantage") {
context.advantages.push({
id: item._id,
name: item.name,
value: item.system.value,
options: item.system.auswahl,
description: item.system.description,
});
}
}
);
}
#addAttributesToContext(context) {
const actorData = context.data;
context.attributes = [
@ -161,18 +152,21 @@ export class CharacterSheet extends ActorSheet {
}
#isWorn(itemId, setId) {
const slots = PlayerCharacterDataModel.getSlots()
const set = this.object.system.heldenausruestung[setId]
for ( const slot of slots) {
const equipmentSlotId = set[slot]
if (equipmentSlotId === itemId) {
return slot
#addAdvantagesToContext(context) {
context.advantages = [];
const actorData = context.data;
Object.values(actorData.items).forEach((item) => {
if (item.type === "Advantage") {
context.advantages.push({
id: item._id,
name: item.name,
value: item.system.value,
options: item.system.auswahl,
description: item.system.description,
});
}
}
return false
);
}
#findEquipmentOnSlot(slot, setNumber) {
@ -188,6 +182,20 @@ export class CharacterSheet extends ActorSheet {
context.actions = am.evaluate()
}
#isWorn(itemId, setId) {
const slots = PlayerCharacterDataModel.getSlots()
const set = this.object.system.heldenausruestung[setId]
for (const slot of slots) {
const equipmentSlotId = set[slot]
if (equipmentSlotId === itemId) {
return slot
}
}
return false
}
async #addCombatStatistics(context) {
const actorData = context.data;
@ -207,8 +215,8 @@ export class CharacterSheet extends ActorSheet {
context.attacks = [];
if (fernkampf) {
const fkitems = fernkampf.system.rangedSkills.map( async (skillInQuestion) => await this.object.items.getName(skillInQuestion) )
fkitems.forEach( async skill => {
const fkitems = fernkampf.system.rangedSkills.map(async (skillInQuestion) => await this.object.items.getName(skillInQuestion))
fkitems.forEach(async skill => {
const obj = await skill
console.log(this.object.system.fk, obj.system.at);
context.attacks.push({
@ -216,14 +224,14 @@ export class CharacterSheet extends ActorSheet {
using: fernkampf.name,
atroll: `1d20 + ${this.object.system.fk + obj.system.at}`,
at: `1w20 + ${this.object.system.fk + obj.system.at}`,
iniroll: `(${context.inidice})d6 + ${context.inivalue + fernkampf.system.iniModifier??0}`,
ini: `${context.inidice}w6 + ${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}`,
})
})
}
if (links) {
const meitems = links.system.meleeSkills.map( async (skillInQuestion) => await this.object.items.getName(skillInQuestion) )
meitems.forEach( async skill => {
const meitems = links.system.meleeSkills.map(async (skillInQuestion) => await this.object.items.getName(skillInQuestion))
meitems.forEach(async skill => {
const obj = await skill
context.attacks.push({
name: obj.name,
@ -232,14 +240,14 @@ export class CharacterSheet extends ActorSheet {
at: `1w20 + ${this.object.system.at + obj.system.at + links.system.attackModifier}`,
paroll: `1d20 + ${this.object.system.pa + obj.system.pa + links.system.parryModifier}`,
pa: `1w20 + ${this.object.system.pa + obj.system.pa + links.system.parryModifier}`,
iniroll: `(${context.inidice})d6 + ${context.inivalue + links.system.iniModifier??0}`,
ini: `${context.inidice}w6 + ${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}`,
})
})
}
if (rechts) {
const meitems = rechts.system.meleeSkills.map( async (skillInQuestion) => await this.object.items.getName(skillInQuestion) )
meitems.forEach( async skill => {
const meitems = rechts.system.meleeSkills.map(async (skillInQuestion) => await this.object.items.getName(skillInQuestion))
meitems.forEach(async skill => {
const obj = await skill
console.log(this.object.system.at)
context.attacks.push({
@ -249,8 +257,8 @@ export class CharacterSheet extends ActorSheet {
at: `1w20 + ${this.object.system.at + obj.system.at + rechts.system.attackModifier}`,
paroll: `1d20 + ${this.object.system.pa + obj.system.pa + rechts.system.parryModifier}`,
pa: `1w20 + ${this.object.system.pa + obj.system.pa + rechts.system.parryModifier}`,
iniroll: `(${context.inidice})d6 + ${context.inivalue + rechts.system.iniModifier??0}`,
ini: `${context.inidice}w6 + ${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}`,
})
})
}
@ -258,11 +266,19 @@ export class CharacterSheet extends ActorSheet {
// add weapons to sidebar
}
prepareEigenschaftRoll(actorData, name) {
if (name) {
return actorData.system.attribute[name.toLowerCase()].aktuell
} else {
return 0
}
}
#addEquipmentsToContext(context) {
context.equipments = [];
const actorData = context.data;
context.carryingweight = 0;
Object.values(actorData.items).forEach( (item, index) => {
Object.values(actorData.items).forEach((item, index) => {
if (item.type === "Equipment") {
context.equipments.push({
index: index,
@ -277,15 +293,15 @@ export class CharacterSheet extends ActorSheet {
}
})
context.maxcarryingcapacity = actorData.system.attribute.kk.aktuell
context.carryingpercentage = Math.min((context.carryingweight / context.maxcarryingcapacity)*100, 100);
context.carryingpercentage = Math.min((context.carryingweight / context.maxcarryingcapacity) * 100, 100);
const maxSets = 3
const romanNumerals = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"]
context.sets = []
for (let setIndex = 0; setIndex<maxSets; setIndex++) {
for (let setIndex = 0; setIndex < maxSets; setIndex++) {
context.sets.push({
tab: "set" + (setIndex+1),
tab: "set" + (setIndex + 1),
name: romanNumerals[setIndex],
index: setIndex,
slots: [
@ -366,14 +382,6 @@ export class CharacterSheet extends ActorSheet {
}
}
prepareEigenschaftRoll(actorData, name) {
if (name) {
return actorData.system.attribute[name.toLowerCase()].aktuell
} else {
return 0
}
}
async _onTalentRoll(event) {
event.preventDefault();
const dataset = event.currentTarget.dataset;
@ -391,13 +399,13 @@ export class CharacterSheet extends ActorSheet {
if (dsaDieRollEvaluated.tap >= 0) { // erfolg
evaluated1.toMessage({
speaker: ChatMessage.getSpeaker({actor: this.actor}),
flavor: ` ${dsaDieRollEvaluated.meisterlich?'Meisterlich geschafft':'Geschafft'} mit ${dsaDieRollEvaluated.tap} Punkten übrig`,
flavor: ` ${dsaDieRollEvaluated.meisterlich ? 'Meisterlich geschafft' : 'Geschafft'} mit ${dsaDieRollEvaluated.tap} Punkten übrig`,
rollMode: game.settings.get('core', 'rollMode'),
})
} else { // misserfolg
evaluated1.toMessage({
speaker: ChatMessage.getSpeaker({actor: this.actor}),
flavor: ` ${dsaDieRollEvaluated.meisterlich?'Gepatzt':''} mit ${Math.abs(dsaDieRollEvaluated.tap)} Punkten daneben`,
flavor: ` ${dsaDieRollEvaluated.meisterlich ? 'Gepatzt' : ''} mit ${Math.abs(dsaDieRollEvaluated.tap)} Punkten daneben`,
rollMode: game.settings.get('core', 'rollMode'),
})
}
@ -406,16 +414,23 @@ export class CharacterSheet extends ActorSheet {
}
}
_evaluateRoll(rolledDice, { taw, lowerThreshold = 1, upperThreshold = 20, countToMeisterlich = 3, countToPatzer = 3, werte = [] } ) {
_evaluateRoll(rolledDice, {
taw,
lowerThreshold = 1,
upperThreshold = 20,
countToMeisterlich = 3,
countToPatzer = 3,
werte = []
}) {
let tap = taw;
let meisterlichCounter = 0;
let patzerCounter = 0;
let failCounter = 0;
rolledDice.forEach( (rolledDie, index) => {
rolledDice.forEach((rolledDie, index) => {
if (tap < 0 && rolledDie.result > werte[index]) {
tap -= rolledDie.result - werte[index];
if (tap <0) { // konnte nicht vollständig ausgeglichen werden
if (tap < 0) { // konnte nicht vollständig ausgeglichen werden
failCounter++;
}
} else if (rolledDie.result > werte[index]) { // taw ist bereits aufgebraucht und wert kann nicht ausgeglichen werden
@ -440,22 +455,7 @@ export class CharacterSheet extends ActorSheet {
let label = dataset.label ? `[Attribut] ${dataset.label}` : '';
let roll = new Roll(dataset.roll, this.actor.getRollData());
roll.toMessage({
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
flavor: label,
rollMode: game.settings.get('core', 'rollMode'),
});
return roll;
}
}
_onRoll(event) {
event.preventDefault();
const dataset = event.currentTarget.dataset;
if (dataset.roll) {
let label = dataset.label ? `${dataset.label}` : '';
let roll = new Roll(dataset.roll, this.actor.getRollData());
roll.toMessage({
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
speaker: ChatMessage.getSpeaker({actor: this.actor}),
flavor: label,
rollMode: game.settings.get('core', 'rollMode'),
});
@ -467,36 +467,19 @@ export class CharacterSheet extends ActorSheet {
this.object.items.get(documentId).sheet.render(true)
}
showAdjustAttributeDialog(attributeName, attributeField, previousValue) {
const thisActor = this;
const myContent = `
Value:
<input id="attributeValue" type="number" value="${previousValue}" />
`;
function updateAttribute(html) {
const value = html.find("input#attributeValue").val();
const attribute = {}
attribute[attributeField.toLowerCase()] = {
aktuell: value
_onRoll(event) {
event.preventDefault();
const dataset = event.currentTarget.dataset;
if (dataset.roll) {
let label = dataset.label ? `${dataset.label}` : '';
let roll = new Roll(dataset.roll, this.actor.getRollData());
roll.toMessage({
speaker: ChatMessage.getSpeaker({actor: this.actor}),
flavor: label,
rollMode: game.settings.get('core', 'rollMode'),
});
return roll;
}
thisActor.object.update({ system: { attribute }})
}
new Dialog({
title: `${attributeName} ändern auf`,
content: myContent,
buttons: {
button1: {
label: "Ändern",
callback: (html) => {
updateAttribute(html)
},
icon: `<i class="fas fa-check"></i>`
}
}
}).render(true);
}
#getEquipmentset(setId) {
@ -518,10 +501,46 @@ export class CharacterSheet extends ActorSheet {
return updateObject;
}
showAdjustAttributeDialog(attributeName, attributeField, previousValue) {
const thisActor = this;
const myContent = `
Value:
<input id="attributeValue" type="number" value="${previousValue}" />
`;
function updateAttribute(html) {
const value = html.find("input#attributeValue").val();
const attribute = {}
attribute[attributeField.toLowerCase()] = {
aktuell: value
}
thisActor.object.update({system: {attribute}})
}
new Dialog({
title: `${attributeName} ändern auf`,
content: myContent,
buttons: {
button1: {
label: "Ändern",
callback: (html) => {
updateAttribute(html)
},
icon: `<i class="fas fa-check"></i>`
}
}
}).render(true);
}
activateListeners(html) {
super.activateListeners(html);
const tabs = new Tabs({navSelector: ".paperdoll-tabs.tabs", contentSelector: ".sheet-body.paperdoll-sets", initial: "set1"});
const tabs = new Tabs({
navSelector: ".paperdoll-tabs.tabs",
contentSelector: ".sheet-body.paperdoll-sets",
initial: "set1"
});
tabs.bind(html[0]);
html.on('click', '.attribute.rollable', (evt) => {
@ -573,7 +592,8 @@ export class CharacterSheet extends ActorSheet {
}
evt.stopPropagation();
} catch (e) {}
} catch (e) {
}
})
new ContextMenu(html, '.talent.rollable', [
@ -638,7 +658,7 @@ export class CharacterSheet extends ActorSheet {
#handleDroppedSkill(actor, skill) {
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 === skill.name) {
return false;
}
@ -647,7 +667,7 @@ export class CharacterSheet extends ActorSheet {
#handleDroppedAdvantage(actor, advantage) {
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 === advantage.name) { // TODO: adjust for uniqueness
return false;
}
@ -656,7 +676,7 @@ export class CharacterSheet extends ActorSheet {
#handleDroppedEquipment(actor, equipment) {
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 === equipment.name) { // TODO: adjust item quantity if item is the same
console.log(equipment);
return false;
@ -664,15 +684,6 @@ export class CharacterSheet extends ActorSheet {
}
}
static getElementByName(collection, id) {
const array = Array.from(collection);
for (const element of array) {
if (element._id === id) {
return element;
}
}
}
static onDroppedData(actor, characterSheet, data) {
const uuid = foundry.utils.parseUuid(data.uuid);
const collection = uuid.collection.index ?? uuid.collection;

View File

@ -98,12 +98,12 @@ export class AusruestungSheet extends ItemSheet {
const fieldToTarget = evt.currentTarget.dataset.targetField;
const newSkills = [...this.object.system[fieldToTarget], addingValue];
this.object.update( { system: { [fieldToTarget]: newSkills }} );
this.object.update({system: {[fieldToTarget]: newSkills}});
evt.currentTarget.value = "";
})
// Everything below here is only needed if the sheet is editable
if (!this.isEditable) return;
if (!this.isEditable)
}
}

View File

@ -69,7 +69,7 @@ export class GroupSheet extends ActorSheet {
context.equipments = [];
const actorData = context.data;
Object.values(actorData.items).forEach( (item, index) => {
Object.values(actorData.items).forEach((item, index) => {
if (item.type === "Equipment") {
context.equipments.push({
index: index,

View File

@ -72,7 +72,7 @@ function getJsonFromXML(dom) {
async function addSkillFromCompendiumByNameToActor(talentName, taw, actor) {
const compendiumOfSkills = game.packs.get('DSA_4-1.talente-brw');
const talentId = compendiumOfSkills.index.find( skill => skill.name === talentName)
const talentId = compendiumOfSkills.index.find(skill => skill.name === talentName)
if (talentId) {
const talent = await compendiumOfSkills.getDocument(talentId._id);
@ -88,7 +88,7 @@ async function addSkillFromCompendiumByNameToActor(talentName, taw, actor) {
async function addAdvantageFromCompendiumByNameToActor(advantageName, advantageValue, actor) {
const compendiumOfAdvantages = game.packs.get('DSA_4-1.Advantage');
const advantageId = compendiumOfAdvantages.index.find( skill => skill.name === advantageName)
const advantageId = compendiumOfAdvantages.index.find(skill => skill.name === advantageName)
if (advantageId) {
const advantage = await compendiumOfAdvantages.getDocument(advantageId._id);
@ -207,22 +207,22 @@ function mapRawJson(actor, rawJson) {
json.attribute.ko = getAttributeJson(attributes, "Konstitution")
json.attribute.kk = getAttributeJson(attributes, "Körperkraft")
json.mr = {
mod: filterAttribute(attributes,"Magieresistenz").mod
mod: filterAttribute(attributes, "Magieresistenz").mod
}
json.lep = {
mod: filterAttribute(attributes,"Lebensenergie").mod
mod: filterAttribute(attributes, "Lebensenergie").mod
}
json.aup = {
mod: filterAttribute(attributes,"Ausdauer").mod
mod: filterAttribute(attributes, "Ausdauer").mod
}
json.asp = {
mod: filterAttribute(attributes,"Astralenergie").mod
mod: filterAttribute(attributes, "Astralenergie").mod
}
json.kap = {
mod: filterAttribute(attributes,"Karmaenergie").mod
mod: filterAttribute(attributes, "Karmaenergie").mod
}
let attribute = filterAttribute(attributes,"Karmaenergie")
attribute = filterAttribute(attributes,"ini")
let attribute = filterAttribute(attributes, "Karmaenergie")
attribute = filterAttribute(attributes, "ini")
json.ini = {
mod: attribute.mod,
aktuell: attribute.value
@ -238,7 +238,7 @@ function mapRawJson(actor, rawJson) {
name: specialAbility.name.replace("Liturgie:", "").trim(),
})
} else {
let specialAbilityJson= {
let specialAbilityJson = {
name: specialAbility.name,
auswahlen: []
}

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"behinderung": "-2",
"talent": "So mancher Held kann unversehens in feine Gesellschaft geraten sei es, weil er als Belohnung für eine besondere Tat zu einem Hofball oder einer Audienz eingeladen wird, sei es, weil er am Herzogenhof einem Schurken nachspioniert. Wie aber lautet die korrekte Anredeform für die Tochter des Markgrafen, welcher Anwesende wird zuerst gegrüßt, welches Wappen trägt das Haus Sturmfels-Mersingen? Aber auch: Welche Weine gelten momentan als schick? Welche Mode trägt man am Horashof? Ist es geschmacklos, süße Pastetchen nach Hammelaufläufen zu reichen? Da der Spieler all diese Dinge unmöglich im Kopf behalten kann, sollte sein Held sich möglichst auf dem Feld der Etikette auskennen. Etikette-Proben können vom Meister verdeckt gewürfelt werden."

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"behinderung": "-4",
"talent": "Dieses Talent ermöglicht eine rasche Orientierung in einer fremden Stadt. Erfolgreiche Pro­ben veranlassen den Meis­ter zu Antworten auf Fragen wie die folgenden: Wo treffe ich voraussichtlich auf Gardisten? Wo finde ich einen preiswerten Unterschlupf? Wo kann ich hier am leichtesten meinem Steckenpferd (der Beutelschneiderei) nachgehen? In welchem Tempel hat man am ehesten ein Herz für eine arme Seele, die sich für eine kräftige Mahlzeit zu jedem beliebigen Gott bekennt? Auch städtebauliche Fragen können mit diesem Talent beantwortet werden: Wie erkenne ich einen Eingang zu einem für Menschen passend großen Kanalisationsschacht? Ist in dieser Stadt mit Sackgassen oder abgeschlossenen Hinterhöfen zu rechnen? Ebenfalls hilfreich ist in diesem Zusammenhang die Sonderfertigkeit Ortskenntnis, aber auch die Vorteile Innerer Kompass bzw. Richtungssinn. Proben auf Gassenwissen können vom Meister verdeckt gewürfelt werden."

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"talent": "Nicht jedem ist es gegeben, eigenes Wissen und eigene Fertigkeiten so an andere weiterzugeben, dass diese tatsächlich Lehren für sich selber daraus ziehen können. Da vermutlich nur wenige Helden sich ernsthaft für eine Lehrmeister-Tätigkeit interessieren, wird die Pflege dieses Talentes wohl hauptsächlich Meisterpersonen vorbehalten bleiben."
}

View File

@ -11,7 +11,6 @@
"GE"
],
"voraussetzung": [
],
"behinderung": "*2",
"talent": "Der Spielleiter legt die Zuschläge auf die Probe nach Art der gewünschten Verkleidung fest, auch die hervorstechenden Körpermerkmale des Helden sind zu berücksichtigen. (Ein hünenhafter Thorwaler hat gewisse Schwierigkeiten, als zierliches Mohamädel aufzutreten.) Eine gelungene Sich Verkleiden-Probe bewirkt, dass einem Helden seine Verkleidung von der Umgebung zunächst einmal abgenommen wird, die Kleidung also ebenso überzeugend ist wie die Bewegungen und das Verhalten. Doch auch ein gut verkleideter Held muss sein Gegenüber überreden, wenn er mit ihm ins Gespräch kommt. Hohe TaP* aus der Sich Verkleiden-Probe mögen die Überreden-Probe erleichtern, wer­­den sie aber kaum überflüssig machen. Ebenfalls in diesem Talent enthalten ist eine grundlegende Kenntnis der Mode und des Schminkens."

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Mit diesem Talent ist ein Held in der Lage, sein Gegenüber mit einem Wortgewitter so zu verwirren, dass sich dieses zumindest kurzfristig vom Helden zu bestimmten Handlungen bewegen lässt. Anwendungsgebiete dieses Talents sind:<ul><li><b>Feilschen:</b> Neben anderen gehört auch das Feilschen zu den Fertigkeiten, die nach Möglichkeit nicht durch Proben, sondern durch reale Spieleraktionen dargestellt werden können. In diesem Fall lässt sich der Meister je nach Talentwert des Helden leichter, schwieriger oder gar nicht herunterhandeln. Im Interesse einer zügigen Spielabwicklung kann aber auch eine Feilschen-Probe gewürfelt werden. Der Spieler kann sich selbst Zuschläge auf die Probe auferlegen je höher der Zuschlag, desto höher der Prozentsatz, um den er den Verkäufer herunterhandeln kann: +0 = 5 %, +1 = 10 %, +2 = 15 % usw. bis zu einem Maximum von +9 = 50 %. Hier ist durchaus auch eine vergleichende Probe möglich. Auch das Anpreisen, also die Fertigkeit, eine beliebige Ware so lautstark und wortgewandt zu präsentieren, dass sich zumindest potentielle Käufer einfinden, die die Ware begutachten, fällt unter diesen Bereich.</li><li><b>Betteln:</b> Dies umfasst sowohl die Kenntnis der richtigen Verkleidung als auch der entsprechenden herzerweichenden Sprüche, um mitleidigen Seelen einige Heller aus der Tasche zu ziehen. Betteln ist in den Städten nicht nur unumgänglicher Zwang für die Ärmsten der Armen, nein, es hat sich über die Jahre zu einer Art Lehrberuf entwickelt, wie ja auch die Bettler in den großen Städten Aventuriens oftmals regelrechte Gilden gegründet haben.</li><li><b>Lügen:</b> Eigentlich sollte man denken, dass jeder Held dieses Talent besitzt, doch es gibt einige Typen, die so gründlich zur Ehrlichkeit erzogen wurden, dass sie auch dann Probleme mit dem Lügen haben, wenn es um ihr Leben geht. Eine Lüge kann nur dann erfolgreich sein, wenn das Opfer im Augenblick keine Möglichkeit hat, den Wahrheitsgehalt einer Aussage zu überprüfen. Eine gelungene Probe kann das Opfer dazu bringen, auf die Überprüfung einer unwahren Aussage zu verzichten. Lügen-Proben können je nach Situation vom Meister verdeckt gewürfelt werden. Eine Lüge lässt sich unter Umständen durch eine erfolgreiche Menschenkenntnis-Probe durchschauen. Die Fertigkeit, vor Gardisten, Richtern und gehörnten Ehegatten eigene Verfehlungen als klein und unwichtig erscheinen zu lassen und schnell zu anderen Themen überzugehen, nennt man üblicherweise nicht Lügen, sondern Herausreden, sie wird aber trotzdem genauso behandelt.</li></ul>"

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Wann immer ein Held seinem Tier ein Kunststück (einem Pferd den stummen Alarm, einem Hund das Apportieren oder Männchen machen) beibringen will, ist eine Probe auf Abrichten fällig. Zuschläge auf die Probe entstehen durch Fehlversuche (+2 für jede gescheiterte Probe), durch die Schwierigkeit des Kunststücks und die grundsätzliche Lernfähigkeit und potentielle Loyalität des Tieres. Übungen, die einem Tier wegen körperlicher oder geistiger Beschränkungen nicht möglich sind, kann ihm auch ein meisterlicher Abrichter nicht beibringen."

View File

@ -11,7 +11,6 @@
"KO"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Dies ist die grundlegende Kenntnis von Bodenverhältnissen, Aussaat und Ernte, Feldbestellungs- und Lagerungsmethoden. Mit dem Talent kann man Nutzpflanzen erkennen und unterscheiden und auf diese Art und Weise z.B. eine auf einer einsamen Insel gestrandete Heldengruppe vor dem Verhungern bewahren. Zudem erkennt ein Ackerbau-Kundiger leicht Wert und Haltbarkeit von Nahrungsmitteln. Auf der aktiven Seite heißt dies auch, dass ein entsprechend ausgebildeter Held mit Pflug, Hacke und Dreschflegel umzugehen weiß."

View File

@ -11,7 +11,6 @@
"KK"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Diese Talent umfasst das sachgerechte Anlegen von Tunneln und Schächten und deren Luftversorgung und Wasserentsorgung. Außerdem ermöglichen Kenntnisse im Bergbau die Beurteilung von unterirdischen Anlagen: Welche Wesen haben sie geschaffen? Wo wurden bauliche Veränderungen vorgenommen? Solche und ähnliche Fragen müssen vom Meister nach einer gelungener Bergbau-Probe des Helden beantwortet werden. Dass sich die meisten aventurischen Zwerge fast von Natur aus auf solche Kenntnisse verstehen, verwundert nicht."

View File

@ -11,7 +11,6 @@
"KK"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Alle Talente, die zur Fortbewegung eines kleinen Wasserfahrzeuges dienen - Rudern, Segeln, Paddeln, Staken - sind hier zusammengefasst. Der Meister sollte es den Helden gestatten, ohne Probe gemächlich über einen stillen Teich zu rudern - irgendwie wird der Held schon ans andere Ufer gelangen. Segeln, Wildwasserfahrten und ähnliche Aktionen sind nur mit gelungener Probe möglich. Für die Handhabung größerer Segel- oder Ruderschiffe sind das Talent SEEFAHRT und eine gröere Anzahl von Matrosen nötig."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Die Art des Fahrzeugs und vor allem die Anzahl der Zugtiere bestimmen die Schwierigkeiten einer Probe. Um z.B. eine vierspänige Rennkutsche auch bei geringem Tempo einigermaßen auf der Straße zu halten, muss eine Probe +4 gelingen, ein von einem geduldigen Maultier gezogener Lastkarren fährt sich da schon bedeutend gemütlicher. Verschärfte Proben werden fällig, wenn gewagte Manöver ausgeführt werden sollen: im scharfen Galopp ein Stadttor passieren oder ein von sechs durchgehend Darpatrindern gezogenes Brauereigespann einbremsen. Ebenfalls erschwert ist das Steuern ungewohnter Fahrzeuge wie Hundeschlitten für solche Helden, die bislang nur Erfahrung mit Pferdekutschen haben."

View File

@ -11,7 +11,6 @@
"KK"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Ein Schlachter, Fleischer oder Metzger weiß, wie man Nutztiere sinnvoll tötet, möglichst viele verwertbare Materialien erhält und daraus haltbare Schinken, Wurstwaren und Bratenstücke herstellt. Er kann beurteilen, wie lang Fleisch noch haltbar ist und welchen Preis es auf dem Markt erzielt. Zudem kennt er sich ähnlich wie der Anatom mit verwundbaren Punkten aus und richtet deswegen im Kampf gegen Wesen, die seinem üblichen Schlachtvieh auch nur grob ähneln, 1 TP mehr an als ein unkundiger Kämpfer, wenn er über einen Fleischer-TaW von 10 oder mehr verfügt (Die Zusatzpunkte von Anatomie und Fleische werden nicht aufaddiert: Auch ein Anatomie-beschlagener Fleischer erhält keine 2 zusätzlichen TP im waffenlosen Kampf.)"

View File

@ -11,7 +11,6 @@
"KO"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Dieses Talent dient dazu, die Haut oder auch das Fell von Tieren haltbar und dabei ansehnlich zu machen und zu Lederwaren oder Pelzen weiterzuvearbeiten, was oft eine ziemlich unappetitliche Angelegenheit ist, die einen starken Magen und eine Art intuitiver Alchimie erfordert. Gerber und Kürschner sind in der Lage, Pelz- und Lederwaren nach Wert und Qualität zu beurteilen. Eine bisweilen ausgeübte Spezialisierung ist die Präparation von Trophäen aus Tieren aller Art."

View File

@ -11,7 +11,6 @@
"KO"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "<b>Schwarzschmiede</b> (die trotz des Namens auch mit Messing und Bronze umzugehen wissen) beschäftigen sich vor allem mit der Herstellung von landwirtschaftlichem Gerät, dem Beschlagen von Reittieren oder der Produktion von Kleineisenteilen wie Nägel, Bolzen, Ketten und Scharniere. Sie sind zudem in der Lage, Waffen zu reparieren.<br/>Ein <b>Waffenschmied</b> ist zwar auch in der Lage, Harken, Türbeschläge oder Truhenbänder herzustellen, seine Spezialität sind jedoch Metallwaffen aller Art, die er sowohl herstellen und reparieren als auch beurteilen kann.<br/>Der <b>Plättner</b> und Harnischmacher hat das Grobschmiedehandwerk bis zum Äußersten verfeinert und stellt nur noch metallene Rüstungen aller Art her; er ist der einzige, der Harnische, Lamellare und auch Kettenhemden herstellen und reparieren kann.<br/><b>Spengler</b> oder Blechwerker schließlich befassen sich mit der Weiterverarbeitung von Metallblechen (vor allem zu Rohren) und deren Einsatz, wozu auch Kenntnisse im Nieten und Löten gehören; sie sind ebenfalls in der Lage, Rüstungen zu reparieren."

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Eine gelungene erste Probe (Erkennungsprobe) auf das Heilen von Vergiftungen bedeutet, dass das Gift richtig identifiziert wurde. (Einige besonders tückische Gifte erfordern einen Zuschlag in Höhe ihrer halben Stufe.) Der Meister benennt die Art des Giftes und teilt mit, wie die Vergiftung zu behandeln ist möglicherweise muss der Heiler zunächst bestimmte Kräuter oder andere Zutaten beschaffen. Sind diese Voraussetzungen erfüllt, kann der Heiler eine zweite Probe (Behandlungsprobe) ablegen, die mit einem Zuschlag in Höhe der gesamten Stufe des Giftes zu belegen ist. Gelingt auch diese Probe, so ist die Wirkung des Gifts gestoppt und der Heiler kann dem Vergifteten Lebenspunkte zurückgeben, die er durch diese Vergiftung verloren hatte: 1 LeP pro übrig behaltenem Talentpunkt bei der zweiten Probe. Eine dritte Probe regelt die Nachbehandlung; auch hier können dem Patienten LeP je nach übrig behaltenen Talentpunkten zurückgegeben werden; der Zuschlag beträgt hierbei wieder die halbe Stufe des Giftes.<br/>Das Scheitern der Erkennungsprobe bedeutet, dass der Heiler das Gift offensichtlich nicht kennt und keine Heilmethode weiß; das Scheitern der Behandlungsprobe bedeutet, dass keine Heilung einsetzt (bei einem Patzer sogar, dass der Vergiftete 1d6 zusätzliche SP erleidet); das Scheitern der Nach behandlungsprobe bedeutet ebenfalls, dass der Patient zusätzlichen Schaden erleidet (1d6 SP).<br/>Zum Ablegen der Erkennungsprobe wer­den mindestens 5 Kampfrunden benöigt, zum Ablegen der Behandlungs- und der Nachbehandlungs-Probe jeweils mindestens 1 SR, die NachbehandlungsProbe kann zudem erst zwölf Stunden nach der Behandlungs-Probe (und nur einmal) abgelegt werden. Bei Misslingen der Proben kann der Heiler in diesem speziellen Fall keinen zweiten Versuch unternehmen."

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Alle Arten von Krankheiten - auch das gefährliche Wundfieber können mit Hilfe dieses Talentes behandelt werden. Der Heilkundige legt eine erste Talentprobe ab, die zur Diagnose und zum Bestimmen der benötigten Salben oder Arzneien dient: die Erkennungsprobe. (Eventuell ist diese Probe um die halbe Stufe der Krankheit erschwert, wenn es sich um eine schleichende Krankheit ohne eindeutige Symptome handelt.) Anschließend kann durch eine zweite Probe, die um die Stufe der Krankheit erschwert ist, die Heilung eingeleitet werden, wobei der Heiler dem Patienten so viele Lebenspunkte zurückgibt, wie er Talentpunkte übrig behalten hat (maximal natürlich so viele, wie durch die Krankheit verloren gegangen sind).<br/>Einen Tag später (und dann folgend jeden weiteren Tag) ist eine Nachbehandlungs-Probe möglich, die um die halbe Stufe der Krankheit erschwert ist; die übrig behaltenen TaP kommen dem Patienten als LeP zugute (auch hier natürlich nur, um den Schaden zu reduzieren, der aus einer Krankheit herrührt). Beim Scheitern der ersten Probe kommt es nicht zu einer Heilung; beim Scheitern einer der anschließenden Proben wird die Heilung gestoppt und der Patient erleidet 1d6 zusätzliche Schadenspunkte.<br/>Zum Ablegen der Erkennungs-Probe wird mindestens 1 Spielrunde benötigt, zum Ablegen der Behandlungs-Probe und der Nach-behandlungs-Proben mindestens 6 SR. Die Nachbehandlungs-Proben können erst einen Tag nach der Behandlungs-Probe abgelegt werden (und dann jeweils am nächsten Tag); bei Misslingen dieser Proben kann der Heiler keinen zweiten Versuch unternehmen."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Brüche, Schnitte, Stiche und andere Verletzungen, die im Kampf oder durch Unfälle entstehen, sind durch dieses Talent zu kurieren.<br/> <b>Erste Hilfe:</b> Ein lebensbedrohlich Verletzter (0 oder weniger LeP) kann dadurch gerettet werden, dass einem behandelnden Gefährten eine Heilkunde Wunden-Probe gelingt, die um doppelt so viele Punkte erschwert ist, wie die LeP des Patienten unter 0 liegen. Diese Probe dauert doppelt so viele KR, wie die LeP des Patienten unter 0 liegen, abzüglich der übrig behaltenen TaP aus der Heilkunde-Probe. Misslingt die Probe, so erleidet der Patient 1d6 weitere SP; die Probe kann jedoch wiederholt werden, wenn der Verletzte noch lebt. Bei Gelingen der Probe ist die akute Todesgefahr gebannt, der Patient hat nun genau 1 LeP.<br/><b>Heilung fördern:</b> Der Heilkundige legt eine erste Probe ab, die der allgemeinen Versorgung der Wunde dient und das Ausbrechen von Wundfieber verhindert, und anschließend eine zweite Probe, die der Einleitung der Heilung dient. Der Kranke erhält halb so viele LeP zurück, wie der Punktüberschuss aus der zweiten Probe beträgt. Diese LeP gelten zusätzlich zu den LeP, die der Verletzte aus der normalen Heilung (der nächtlichen Regneration) gewinnt, und werden auch nur während dieser Regenerationsphase zurückgewonnen. Am nächsten Tag (und den folgenden) kann jeweils eine Nachbehandlungs-Probe durchgeführt werden, die die allgemeine Regenerationsfähigkeit des Patienten verbessert: Pro 3 übrig behaltener Punkte aus dieser Probe erhält der Patient einen Punkt zu seiner folgenden nächtlichen Regeneration hinzu (bei 5 übrig behaltenen Punkten also 1 zusätzlichen LeP).<br/>Beim Scheitern der ersten Probe kommt es nicht zu einer Heilung, der Patient erkrankt mit einer erhöhten Wahrscheinlichkeit an Wundfieber (KO-Wurf um 3 erschwert). Beim Scheitern der zweiten Heilprobe und der Nachbehandlungs-Proben wird die normale Heilung für 24 Stunden unterbrochen und der Verletzte erleidet 1W6 zusätzliche Schadenspunkte. Die erste Probe dauert 4 Spielrunden, die zweite Probe und die Nachbehandlungsproben dauern jeweils 6 SR. Auch hier gilt insgesamt, dass nur solche LeP-Verluste mit diesem Talent zu heilen sind, die durch Verletzungen verursacht wurden.<br/><b>Wunden</b>: Um die Heilung einer Wunde (sie­ he im Kapitel zum Kampf auf Seite 138) zu beschleunigen, ist zuallererst eine reguläre Probe zur Erstversorgung (s.o.) nötig, die um je 2 Punkte pro erlittener Wunde erschwert ist. (Wenn Sie überhaupt mit Wunden spielen, ist diese Probe generell die Erstversor gungs-Probe, Sie müssen also nicht einmal gegen Schaden und einmal gegen Wunden würfeln.) Die zweite Probe, die der Einleitung der Heilung dient, ist um 3 Punkte pro Wunde des Patienten erschwert.<br/>Misslingt diese Probe, tritt keine Heilung ein; bei einem Patzer erleidet der Patient 1d6 weitere Schadenspunkte. Gelingt sie jedoch, so ist die KO-Probe des Patienten, mit der die Heilung eingeleitet wird, um so viele Punkte erleichtert, wie bei der Heilkunde-Probe übrig behalten wurden."

View File

@ -11,7 +11,6 @@
"KK"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Dieses Talent hat viele Anwendungsmöglichkeiten im täglichen Heldenleben: Eine morsche Bootsplanke ist auszutauschen, eine improvisierte Waffe oder ein Werkzeug soll hergestellt, auf die Schnelle ein Kinderspielzeug geschnitzt werden. Eine gelungene Probe auf dieses Talent kann die erfolgreiche Herstellung oder Reparatur eines hölzernen Gegenstandes bedeuten. Für die Fertigstellung komplizierter Holzgeräte oder besonders kunstfertiger Schnitzereien sollte die Probe mit einem Zuschlag belegt werden; beim Erstellen hölzerner Skulpturen zählen natürlich die TaP* für den künstlerischen Eindruck."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Ein Held, der seine Gäste (daheim oder am Lagerfeuer) durch ein gelungenes Essen beeindrucken will, muss eine erfolgreiche Probe evtl. mit Zuschlägen ablegen. Eine knapp gelungene Probe bedeutet, dass es dem Helden gelungen ist, etwas Essbares zu kochen um etwas Genießbares zu produzieren, sollte er mindestens 3 Talentpunkte übrig behalten; schmackhafte Kost beginnt bei 6 verbleibenden Punkten. Gerade in den Küchen des Hochadels ist diese Kunst nicht nur angesehen, sondern auch oft weiter unterteilt - Spezialisten für süßes Backwerk oder Bratensoßen sind keine Seltenheit."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Zu den täglichen Aufgaben einer Reisegruppe gehört sicherlich auch, sich hin und wieder Gedanken über den Zustand ihres Schuhwerks oder ihrer Garderobe machen. Wenn ein Held mit TaW 0 erklärt, er werde um Geld zu sparen die abgerissene Sohle selbst unter seinen Stiefel nageln, sollte ihn der Spielleiter beim Marsch zum nächsten Einsatzort diese Entscheidung bereuen lassen. Viele Berufe haben das Lederhandwerk deutlich spezialisiert: Die Berufsgruppen der Schuster und Sattler befassen sich mit Lederarbeiten aller Art, vor allem, wie der Name schon sagt, mit Schuhwerk und Sätteln, aber auch mit lederner Kleidung, Polstermöbeln und Lederharnischen. Zudem sind Schuster als einzige in der Lage, eine Lederrüstung nicht nur provisorisch zu flicken, sondern vollständig wiederherzustellen."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Natürlich kann alles, was es am Spieltisch zu zeichnen gibt, von den Spielern real zu Papier gebracht werden, aber im Interesse des Spielflusses (und der Belastung des Sehzentrums des Spielleiterhirns) sollte man auch hier mit Talentproben arbeiten. Ein an einem Luxusleben interessierter Held kann darüber nachdenken, ob er nicht diesen Talentwert steigert und seine Brötchen als Hofmaler verdient. Beim Zusammentreffen mit primitiven Stämmen hat übrigens schon der eine oder andere begabte Abenteurer durch die schmeichelhafte Porträtierung des Häuptlings sein Leben beträchtlich verlängert und sich außerdem einen (ungerechtfertigten) Ruf als mächtiger Zauberer erworben."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Zwar kann auch dieses Talent real von den Spielern ausgeführt werden, aber die Praxis hat gezeigt, dass der Verzicht auf solche Versuche enorm zum Frieden am Spieltisch beitragen kann. Eine gelungene Musizieren-Probe kann an einem Fürstenhof ein paar Dukaten in den Heldenbeutel bringen, die Unterkunft in einer Herberge sichern, aber auch einen aufgebrachten Bären besänftigen. Ein Held kann sich auf ein Instrument spezialisieren oder danach trachten, mehrere zu beherrschen. Um einen einigermaßen hörbaren Vortrag zustande zu bekommen, ist zumindest eine einfach gelungene Probe vonnöten; um damit Geld zu verdienen, sollten wenigstens 4 TaP übrig bleiben."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Dies ist die Grundlage des Einbrecherhand- werks. Um ein Schloss ohne den passenden Schlüssel (d.h., mit Dietrichen, Haarnadeln, Messern o.ä.) zu öffnen, kann der Meister Proben auf Schlösser Knacken verlangen, die je nach den Umständen mit deftigen Zuschlägen versehen sind. Ein Misslingen der Probe bedeutet in den meisten Fällen, dass der Dietrich oder das improvisierte Einbruchswerkzeug im Schloss abgebrochen ist und weitere Öffnungsversuche nur unter nochmals erschwerten Bedingungen durchgeführt werden können. Mit diesem Talent können auch bestimmte Arten mechanischer Fallen entschärft werden. Hierbei bedeutet ein Scheitern der Probe allerdings stets, dass der Held die Falle ausgelöst hat und ihre volle Schadenswirkung erleidet.<br/>Ein Held, der ohne Kenntnis dieses Talents versucht, ein Schloss zu öffnen, muss eine FF-Probe ablegen, die um mindestens 7 Punkte erschwert ist, je nach Schloss auch deutlich mehr; ein improvisiertes Werkzeug erleichtert diese Probe um 1 Punkt, ein regelrechter Dietrich um 2 Punkte."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Das Schneidern-Talent umfasst in erster Linie Flickschneidereien wie das Annähen abgerissener Knöpfe und Bänder, das Aufnähen von Flicken oder das Stopfen von Löchern. Wer aber hier einen hohen Talentwert vorweisen kann, der ist auch in der Lage, Änderungen an ungeliebter Garderobe vorzunehmen oder gar von Grund auf neue Kleidung herzustellen. Ein professioneller Schneider stellt aus Tuchen verschiedenster Art Kleidungsstücke her, ja, man kann sagen, er veredelt die Stoffe. Schneider sind in der Lage, aus schlichtem Stoff wahre Wunderwerke entstehen zu lassen, und natürlich können sie auch getragene und verschlissene Kleidung wieder in einen annehmbaren Zustand versetzen. Ein Held mit diesem Beruf kann selbstverständlich Wert und Qualität von Kleidungsstücken einschätzen."

View File

@ -11,7 +11,6 @@
"KK"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Kleinere Wasserfahrzeuge können mit dem Talent Boote Fahren gesteuert werden. Seefahrer sind jedoch die einzigen, die ein mehrmastiges Schiff bedienen und instand halten können. Vor allem das Setzen der Takelage, das Tiefenloten, die Wartung der Ruderanlage, die Überwachung der Ladung, aber auch das Abdichten kleinerer Leckagen und das korrekte Aufrollen von Tauen und Ketten gehören in den Aufgabenbereich des Seefahrers."

View File

@ -11,7 +11,6 @@
"KK"
],
"voraussetzung": [
],
"behinderung": "situationsbedingt",
"talent": "Zimmerleute, Schiffszimmerleute und Dachdecker beherrschen verschiedenste Arten der Holzbearbeitung, wobei sie sich jedoch (im Gegensatz zur normalen Holzbearbeitung) eher mit größeren Holzarbeiten wie Treppen, Dachbalken oder Schiffsmasten, deren Statik und deren Verbindungen beschäftigen. Außerdem sind sie in der Lage, den Wert und die Stabilität von Holzkonstruktionen zu beurteilen."

View File

@ -6,6 +6,5 @@
"system": {
"gruppe": "Kampf",
"talent": "Die meisten anderthalbhändig geführten Schwerter und Säbel können zwar je nach Körperkraft des Helden auch mit den Talenten Schwerter, Säbel oder Zweihandschwerter/-säbel geführt werden, ihre wahren Fähigkeiten erkennt man jedoch nur, wenn man die für sie typischen Manöver in einer Kampftechnik erlernt hat: der schnelle Wechsel von einhän-diger zu zweihändiger Führung und zurück, daher auch der Name anderthalbhändig. Trotz ihres nicht unbeträchtlichen Gewichts können gut geführte Anderthalbhänder ein fast so variantenreiches Klingenspiel ermöglichen wie Fechtwaffen, weswegen dieses Talent auch gerne als die Königsdisziplin unter den Klingenwaffen angesehen wird."
}
}

View File

@ -15,4 +15,4 @@
"behinderung": "*2",
"talent": "Ausrutschen auf einer steilen Treppe, Abrollen nach einem Sturz vom Pferd, ein Hechtsprung über das just einstürzende Brückensegment oder das auf-den-Beinen-Bleiben auf einem Schiff im Sturm in all diesen Fällen ist das Talent Körperbeherrschung gefragt. Die Schwierigkeit der Situation sollte auch die Höhe der Zuschläge bestimmen. Sie­ he auch die Anmerkungen zu den Talenten Akrobatik und Athletik."
}
}
}

View File

@ -14,4 +14,4 @@
],
"talent": "Zum einen bezeichnet die Selbstbeherrschung die Fähigkeit, großen Schmerzen zu widerstehen. Ein hoher TaW kann also nicht nur auf der Folterbank, sondern auch im Kampf (um nach einem schweren Treffer nicht sofort das Bewusstsein zu verlieren) oder auf einem strapaziösen Eilmarsch von Nutzen sein. Zum anderen ist die Selbstbeherrschung auch dann gefordert, wenn es gilt, Versuchungen zu widerstehen oder ein Lachen oder eine spöttische Bemerkung zu unterdrücken. In einigen der letztgenannten Situationen ist es jedoch angebracht, den Helden nicht auf seine Selbstbeherrschung, sondern auf seinen Jähzorn, seinen Stolz o.ä. zu prüfen oder aber die Selbstbeherrschungs-Probe (in diesem Fall auf MU/MU/KL) um den genannten Wert zu erschweren."
}
}
}

View File

@ -11,7 +11,6 @@
"GE"
],
"voraussetzung": [
],
"behinderung": "*2",
"talent": "Gelungene Tanzen-Proben können nicht nur an manchem Grafenhof, sondern auch bei einem Hexenfest große Vorteile bringen, während eine gescheiterte Probe auch den imposantesten Helden der Lächerlichkeit preisgibt und ihn gesellschaftliches Ansehen kosten kann. Dieses Talent regelt die grundsätzliche Bewegungskoordination und das Rhythmusgefühl; um bei komplizierten höfischen Tänzen eine gute Figur zu machen, ist zudem auch eine solide Kenntnis der Etikette vonnöten, bei Tänzen aus fremden Kulturen auch die Sonderfertigkeit Kulturkunde."

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"behinderung": "*2",
"talent": "Sei es das Beutelschneiden oder das unbemerkte Stibitzen eines Gegenstandes aus einer fremden Umhängetasche: Viele Helden von nicht ganz einwandfreiem Ruf bedienen sich dieses Talentes. Bei der Festlegung der Zuschläge auf eine Probe sind diverse Faktoren zu berücksichtigen: Rechnet das Opfer mit einem Diebstahl? Wie sperrig ist die Beute? Hat der Dieb einen Komplizen, der das Opfer anrempelt oder auf andere Weise ablenkt? Und so weiter. Der Spieler kann die Probe beeinflussen, indem er seine Vorgehensweise beschreibt und dem Meister plausibel macht, dass sein spezieller Diebestrick besonders erfolgversprechend ist. Ein versuchter Taschendiebstahl kann mit einer erfolgreichen Sinnenschärfe-Probe gekontert werden."

View File

@ -11,7 +11,6 @@
"KK"
],
"voraussetzung": [
],
"talent": "Ein Held kann jederzeit zu einem Gelage eingeladen werden, das ihn an die Grenze seiner Belastbarkeit bringt. Normalerweise entstehen durch starkes Zechen zwar Zugewinne an Mut und Verminderungen diverser Ängste, aber drastische Abzüge auf alle anderen guten Eigenschaften, wie auch eine Steigerung von Attributen wie Neugier, Aberglauben und vor allem Jähzorn. Durch gelungene Proben auf Zechen kann ein Held solche üblen Folgen abwehren. Auch der schwere Kopf am nächsten Tag in Aventurien je nach Schwere Wolf oder Werwolf genannt lässt sich durch eine erfolgreiche Zechen-Probe in die Schranken weisen."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Die Kenntnis der verschiedensten Brettspiele (wie z.B. Urdas, Garadan, das thorwalsche Hneftafl oder das weit verbreitete und vielfach variierte tulamidische Kamelspiel) sowie Kartenspiele (hier namentlich das verbreitete Boltan- oder Fünfas-Spiel) gehören zu dieser Fertigkeit, die nicht nur Regelkunde, sondern auch Spieltechnik, Gewinnkombinationen, Stellungseinschätzung und dergleichen mehr beinhaltet."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Die Landeskunde ist ein Fach, das man aus Schriften mühselig einpauken oder auf weiten Reisen quasi von selbst erlernen kann, wobei die praktische Erfahrung der theoretischen bei weitem vorzuziehen ist. Bei einer gelungenen Geographie-Probe sollte der Spielleiter dem Spieler-Helden die passenden geographischen Fakten (zu Landschaftsform, Klima, Böden, zu schiffbaren Flüssen und gangbaren Pässen ...) mitteilen. Mit einem hohen Geographie-Wert kennt man zwar auch die grundsätzlichen Fakten zu den Bewohnern einer Region, jedoch sind ohne eine passende Kulturkunde-Sonderfertigkeit alle Geographie-Proben zur Klärung kultureller Detailfragen erschwert."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Die schriftlich niedergelegte Geschichte Aventuriens beträgt mittlerweile bereits drei-tausend Jahre, aber die Erzählungen vieler Völker reichen deutlich weiter in die Vergangenheit die Zeitalter davor, von denen nur noch verwitterte Ruinen künden, gar nicht eingerechnet. Da die meisten Helden immer wieder einmal mit der Vergangenheit ihrer Welt konfrontiert werden weil sie zum Beispiel die Toten nicht in ihrer Gruft ruhen lassen können , wird es oft von Nutzen sein, einen geschichtsbewanderten Gefährten in der Nähe zu wissen. Historie ist eines der wenigen Wissensgebiete, das sehr stark auf schriftlichen Quellen beruht, und nicht nur das Entziffern, sondern auch das Einordnen und Bewerten alter Texte sind wichtiges Handwerkszeug für den Geschichtskundigen. Geschichtswissen ist ein Talent, das bei fehlender Kulturkunde erschwert werden kann."
}

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"talent": "Eine Ausbildung in diesem Talent ermöglicht das Erkennen geeigneter Gesteinsarten für Bauzwecke, aber auch das Absuchen des Bodens nach Erzadern oder das Schürfen nach Edelmetallen und Edelsteinen. Dazu kommt eine grundsätzliche Kenntnis der Material­ eigenschaften verschiedener Gesteins-, Erz-und Edelsteinarten."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Dies ist das Wissen um religiöse Riten und Bekenntnisse des eigenen Glaubens. Für jeden Geweihten ein absolutes Muss, will man nicht im Tempel einer Bruder- oder Schwes­ tergottheit unangenehm auffallen. Ebenfalls zu diesem Talent gehört die Kenntnis von Göttersagen und Heiligenlegenden sowie auch der geziemenden Anreden und Verbeugungen vor einem Priester oder einer Priesterin. Wer sich gut genug mit Göttern und Kulten auskennt (TaW mindestens 7), kann sich entscheiden, auch sein Wissen über andere Religionen zu vertiefen. Ohne die passende Kulturkunde sind fremde Religionen jedoch nur schwer zu verstehen, weswegen entsprechende Proben erschwert werden sollten."
}

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"talent": "Während das Talent Etikette eher die allgemeinen Umgangsformen vor allem bei Hofe regelt und die Wappenkunde nebenher mit umfasst, beschäftigt sich die Heraldik einzig und allein mit der Geschichte, Entstehung und Verbreitung von Wappen, Schildund Feldzeichen, Helmzieren, Spruchbändern und ähnlichem mehr, dazu noch mit ein wenig Kunde der wichtigsten Verwandtschaftsbeziehungen und Erblinien. Ein Held kann mit dem Talent Heraldik feststellen, aus welcher Provinz ein Ritter stammt, ob aus einem angeheirateten Zweig eines alten Adelshauses oder ob irgendein Schurke sich mit gefälschten oder Phantasiewappen schmückt. Dazu kommt bei höherem TaW noch die Kenntnis der Farben und Banner der Regimenter (und ihrer einzelnen Unterabteilungen) der großen Reiche."
}

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"talent": "Als Kämpfer eine mutige Rolle in einer Schlacht zu spielen ist eine Sache eine andere ist es, die Schlacht selbst zu lenken. Truppen müssen bewegt, versorgt und motiviert werden. Das Terrain und die taktischen Möglichkeiten des Gegners sind zu erkunden. Nicht zuletzt müssen der Zeitpunkt des Handelns festgelegt und überdies die Gunst der Götter erworben werden. Strategie, Taktik und auch die Entscheidungen des Hauptmanns vor Ort all dies sind Anwendungsgebiete der Kriegskunst.<br/>Ein Held, der mehr als zehn Krieger kommandieren und ins Gefecht führen will, sollte mindestens einen Kriegskunst-Wert von 7 besitzen, oder er wird bei seinem Feldzug jämmerlich scheitern."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Was passiert als nächstes, wenn der alanfanische Zauberer die Hand zur Faust ballt? Könnte dieser in allen Farben schillernde Ring ein altes echsisches Artefakt sein? Wie kann es sein, dass die Fußspuren des Elfen auf einer freien Fläche abrupt enden?<br/>Alle diese Fragen können auch von nicht magisch begabten Helden beantwortet werden, die sich mit den arkanen Künsten beschäftigt haben. Ob als (seltenes und geheimes) Bücherwissen oder aus eigener leidvoller Erfahrung vielleicht bringt ein Fetzen dieses Wissens in der nächsten Auseinandersetzung die Entscheidung. Ein hoher TaW ist für Magier natürlich unabdingbar."
}

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"talent": "Die Kenntnis der Mechanik kann in vielen Situationen nützlich sein: Dieses Talent beschreibt das Wissen um einfache physikalische Grundlagen wie die Hebelgesetze, die Reibungskraft, den Flaschenzug, die schiefe Ebene und ähnliches mehr. Wenn der Held selbst improvisierte mechanische Gegenstände herstellen will (z.B. Raumfallen, Schleuderapparate oder Flaschenzüge), so muss er durch eine gelungene Mechanik-Probe die Funktionsfähigkeit seines Apparates nachweisen. Je komplizierter das Gerät ist, desto höher fällt der Zuschlag auf die Mechanik-Probe aus.<br/>Nur teilweise in diesen Bereich fällt die Kenntnis der Feinmechanik, also der Funk- tionsweise von Schlössern, Schlossfallen, Spieluhren oder Ähnlichem. Hierzu wird das Handwerks-Talent Feinmechanik benötigt. Der Meister kann Mechanik-Proben verdeckt auswürfeln und die Funktionsfähigkeit erst bei einer ersten Anwendung oder einem Probelauf bekannt geben."
}

View File

@ -11,7 +11,6 @@
"FF"
],
"voraussetzung": [
],
"talent": "Der Pflanzenkundige weiß nicht nur, wo er nach ihm bekannten Pflanzen suchen muss, sondern er ist auch in der Lage, fremde Pflanzen einzuschätzen, da er sie mit bekannten Gewächsen vergleichen kann. Auch die Fähigkeit, aus Pflanzen Gifte oder Heilmittel zu gewinnen, wird über das Talent Pflanzenkunde geregelt. In allen drei Bereichen (Pflanzen suchen, bestimmen, Elixiere brauen) sind Proben möglich, wobei eine misslungene Probe bei der Pflanzensuche zur Folge hat, dass man die Pflanze nicht findet; gescheiterte Proben auf das Bestimmen von Gewächsen und/oder das Brauen von Elixieren können verhängnisvollere Wirkungen haben. Bestimmungs- und Brau-Proben können vom Meister verdeckt gewürfelt werden."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Ähnlich wie beim Lesen und Schreiben wird es auch bei diesem Talent selten zu einer Probe kommen. Ein Held mit einem TaW von 0 kann zwar mühsam zählen, aber nicht rechnen; er unterscheidet zwischen viel und wenig bzw. zwischen mehr oder weniger. Helden mit TaW 1 bis 2 rechnen mühselig und unter Zuhilfenahme von Fingern und Zehen. Bei TaW 3 beginnt eine halbwegs flüssige Beherrschung der Grundrechenarten. TaW 4 ist die Mindestvoraussetzung für das Ablegen von Proben auf verschiedenen Wissensgebieten, während sich die höheren Mysterien (Geometrie, Wurzelziehen, Zinseszins bis hin zu den Grundlagen der Infinitesimalrechnung) erst ab einem TaW von 6 zu erschließen beginnen."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Dieses Talent regelt die Kenntnis des Rechtswesens verschiedener aventurischer Länder und Völker, vor allem aber der unterschiedlichen Rechtssysteme der einzelnen Gilden, des Kirchenrechts der Zwölfgötter-Kirchen, des Staats- und des Strafrechts. Da die Vorstellungen von Recht und Unrecht von Land zu Land variieren, hilft Rechtskunde auch fahrenden Helden, nicht auf Schritt und Tritt mit der Ordnungsmacht zu kollidieren. In diesem Zusammenhang ist das Talent besonders nützlich, wenn es um das Vermeiden von oder den richtigen Umgang mit heldentypischen Vergehen (Gifteinsatz, Beleidigung von weltlichen und geistlichen Würdenträgern, Waffengesetze) geht. Rechtskunde-Proben können vom Meister verdeckt gewürfelt werden, sie werden durch eventuell vorhandene (oder fehlende) Kulturkunde-Sonderfertigkeiten modifiziert."
}

View File

@ -11,7 +11,6 @@
"CH"
],
"voraussetzung": [
],
"talent": "Wer sich in diesem Talent gebildet hat, kennt sich nicht nur mit Sitten und Gewohnheiten des eigenen Volkes aus, sondern kann auch die Götter und Heroen identifizieren und ist in der Lage, Sagen und Legenden in Wort und/oder Schrift wiederzugeben. Um die Sagen und Legenden fremder Völker zu kennen, ist eine entsprechende Kulturkunde vonnöten, ansonsten sind die Talentproben mit einem Zuschlag zu versehen. Insofern ist dies nicht nur ein Talent für Diplomaten und Völkerkundler, sondern auch für reisende Sänger und Geschichtenerzähler. Bei den verbreiteten Mythen und Legenden der eigenen Kultur sind nur in Ausnahmefällen Proben nötig."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Wenn man in einer verlassenen Gruft einen kleinen Ring oder einen goldenen Kelch findet, kann man nicht darauf hoffen, dass an dem Fundstück ein Preisschild befestigt ist. Nach einer gelungenen Schätzen-Probe teilt der Meister dem Helden mit, welchen Preis er in etwa für einen Gegenstand erzielen kann. Beim Einkauf auf dem Markt hilft eine Probe, den wahren Wert einer überteuerten Ware zu erkennen. Schätzen-Proben können (und sollten bisweilen) vom Meister verdeckt gewürfelt werden.<br/><b>Anmerkung:</b> Das Talent Schätzen bezieht sich übrigens nur auf materielle Werte, nicht jedoch auf das Abschätzen von Entfernungen, benötigten Bausteinen etc. (Für solche Einschätzungen benötigt man das jeweils passende andere Talent.)"
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Viele Sprachen zu kennen ist zwar für einen Händler wichtig, hilft aber wenig, wenn man auf ein Volk trifft, das einen obskuren Dialekt spricht, oder man über eine Schrifttafel stolpert, die zwar irgendwie tulamidisch aussieht, aber offensichtlich ein anderes Alphabet verwendet. Hier kommt das Talent Sprachenkunde ins Spiel, das sich mit den Zusammenhängen der bekannten Sprachen, ihren Entwicklungen, Untergruppen und auch ihren verschiedenen Schriftformen beschäftigt. Der Meister kann Proben auf dieses Talent erlauben, wenn der Held Kenntnis einer verwandten Sprache besitzt und von dort auf eine unbekannte Sprache oder Schrift schließen will, um einen Dialekt oder eine Weiterentwicklung einer Sprache zu erkennen.<br/>Sprachenkunde wird zum Erlernen bestimmter (alter) Fremdsprachen benötigt (s.u.)."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Nicht nur die Astrologie als Methode der Zukunftsdeutung fällt unter dieses Talent, sondern auch die Navigation nach den Sternen, Methoden der Zeitbestimmung, die schiere Katalogisierung der Himmelsphänomene und dergleichen mehr; dazu auch die theoretischen Kenntnisse um den Lauf der Himmelskörper, auf denen schlussendlich alle vorgenannten Teilbereiche beruhen. Da gute Teleskope rar und teuer sind, ist dies immer noch ein Talent für Leute mit Geduld und scharfen Augen."
}

View File

@ -11,7 +11,6 @@
"IN"
],
"voraussetzung": [
],
"talent": "Für eine erfolgreiche Jagd ist ein solides Wissen über Verbreitung und Verhaltensweise der häufigsten Tierarten natürlich eine Grundvoraussetzung. Der erfahrene Tierkundler kann auch ihm bisher unbekannte Tiere einschätzen, da er sie mit ihm vertrauten Arten zu vergleichen vermag. Erfolgreiche Proben auf Tierkunde können zur Bestimmung einer Tierart dienen, zum Vorausahnen ihres Verhaltens oder aber (in Kombination mit Schleichen-Proben und sicherer Waffenhandhabung) über den Ausgang einer Jagd entscheiden."
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Balläster",
"image": "systems/DSA_4-1/assets/arsenal/arrow3.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.125,
"price": 0.6,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Eisenwalder",
"image": "systems/DSA_4-1/assets/arsenal/arrow3.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0,
"price": 1.5,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Elfenbogen",
"image": "systems/DSA_4-1/assets/arsenal/arrow2.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.075,
"price": 0.4,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Kompositbogen",
"image": "systems/DSA_4-1/assets/arsenal/arrow1.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.05,
"price": 0.25,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Kriegsbogen",
"image": "systems/DSA_4-1/assets/arsenal/arrow1.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.1,
"price": 0.6,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Kurzbogen",
"image": "systems/DSA_4-1/assets/arsenal/arrow1.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.05,
"price": 0.25,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Langbogen",
"image": "systems/DSA_4-1/assets/arsenal/arrow1.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.075,
"price": 0.4,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Leichte Armbrust",
"image": "systems/DSA_4-1/assets/arsenal/arrow3.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.075,
"price": 1.5,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,25 @@
{
"name": "Munition: Windenarmbrust",
"image": "systems/DSA_4-1/assets/arsenal/arrow3.png",
"category": ["Gegenstand"],
"category": [
"Gegenstand"
],
"weight": 0.1,
"price": 2,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 0,
"armorHandicap": 0,
"description": ""
}

View File

@ -1,28 +1,28 @@
{
"name": "Buckler",
"image": "systems/DSA_4-1/assets/armory/wooden_buckler.png",
"category": ["Gegenstand", "Nahkampfwaffe"],
"image": "systems/DSA_4-1/assets/armory/wooden_buckler.png",
"category": [
"Gegenstand",
"Nahkampfwaffe"
],
"weight": 1,
"price": 40,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 1,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": ["Schilde"],
"meleeSkills": [
"Schilde"
],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 1,
"armorHandicap": 1,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Dicke Kleidung",
"image": "systems/DSA_4-1/assets/armory/quilted_armor.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/quilted_armor.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 3,
"price": 0,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 1,
"armorHandicap": 1,
"description": ""
}

View File

@ -1,28 +1,28 @@
{
"name": "Einfacher Holzschild",
"image": "systems/DSA_4-1/assets/armory/wooden_buckler.png",
"category": ["Gegenstand", "Nahkampfwaffe"],
"image": "systems/DSA_4-1/assets/armory/wooden_buckler.png",
"category": [
"Gegenstand",
"Nahkampfwaffe"
],
"weight": 3.5,
"price": 40,
"breakFactor": 3,
"iniModifier": -1,
"attackModifier": -1,
"parryModifier": 3,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": ["Schilde"],
"meleeSkills": [
"Schilde"
],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 1,
"armorHandicap": 1,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Garether Platte",
"image": "systems/DSA_4-1/assets/armory/platemail.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/platemail.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 14,
"price": 750,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 6,
"armorHandicap": 4,
"description": ""
}

View File

@ -1,28 +1,28 @@
{
"name": "Großer Lederschild",
"image": "systems/DSA_4-1/assets/armory/wood_kite_shield.png",
"category": ["Gegenstand", "Nahkampfwaffe"],
"image": "systems/DSA_4-1/assets/armory/wood_kite_shield.png",
"category": [
"Gegenstand",
"Nahkampfwaffe"
],
"weight": 3,
"price": 75,
"breakFactor": 6,
"iniModifier": -1,
"attackModifier": -1,
"parryModifier": 4,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": ["Schilde"],
"meleeSkills": [
"Schilde"
],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 1,
"armorHandicap": 1,
"description": ""
}

View File

@ -1,28 +1,28 @@
{
"name": "Großschild (Reiterschild)",
"image": "systems/DSA_4-1/assets/armory/tower_shield.png",
"category": ["Gegenstand", "Nahkampfwaffe"],
"image": "systems/DSA_4-1/assets/armory/tower_shield.png",
"category": [
"Gegenstand",
"Nahkampfwaffe"
],
"weight": 5,
"price": 100,
"breakFactor": 2,
"iniModifier": -2,
"attackModifier": -2,
"parryModifier": 5,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": ["Schilde"],
"meleeSkills": [
"Schilde"
],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 1,
"armorHandicap": 1,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Horasischer Reiterharnisch",
"image": "systems/DSA_4-1/assets/armory/breastplate.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/breastplate.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 17,
"price": 1000,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 8,
"armorHandicap": 5,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Kettenhemd, 1/2 Arm",
"image": "systems/DSA_4-1/assets/armory/chainmail_jacket.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/chainmail_jacket.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 6.5,
"price": 150,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 3,
"armorHandicap": 3,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Komplette Gestechrüstung",
"image": "systems/DSA_4-1/assets/armory/close_helmet.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/close_helmet.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 30,
"price": 2500,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 12,
"armorHandicap": 10,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Krötenhaut",
"image": "systems/DSA_4-1/assets/armory/studded_jacket.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/studded_jacket.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 4,
"price": 60,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 3,
"armorHandicap": 2,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Kürass",
"image": "systems/DSA_4-1/assets/armory/leather_jacket_alt.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/leather_jacket_alt.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 4,
"price": 110,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 3,
"armorHandicap": 2,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Langes Kettenhemd",
"image": "systems/DSA_4-1/assets/armory/chainmail_alt.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/chainmail_alt.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 10,
"price": 180,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 4,
"armorHandicap": 4,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Lederharnisch",
"image": "systems/DSA_4-1/assets/armory/leather_jacket.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/leather_jacket.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 4.5,
"price": 80,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 3,
"armorHandicap": 3,
"description": ""
}

View File

@ -1,28 +1,28 @@
{
"name": "Lederschild",
"image": "systems/DSA_4-1/assets/armory/wood_kite_shield.png",
"category": ["Gegenstand", "Nahkampfwaffe"],
"image": "systems/DSA_4-1/assets/armory/wood_kite_shield.png",
"category": [
"Gegenstand",
"Nahkampfwaffe"
],
"weight": 2,
"price": 30,
"breakFactor": 5,
"iniModifier": 0,
"attackModifier": -1,
"parryModifier": 3,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": ["Schilde"],
"meleeSkills": [
"Schilde"
],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 1,
"armorHandicap": 1,
"description": ""
}

View File

@ -1,28 +1,26 @@
{
"name": "Leichte Platte",
"image": "systems/DSA_4-1/assets/armory/breastplate.png",
"category": ["Gegenstand", "Rüstung"],
"image": "systems/DSA_4-1/assets/armory/breastplate.png",
"category": [
"Gegenstand",
"Rüstung"
],
"weight": 7.5,
"price": 250,
"breakFactor": 0,
"iniModifier": 0,
"attackModifier": 0,
"parryModifier": 0,
"meleeAttackModifier": 0,
"meleeAttackModifierIncrement": 0,
"meleeSkills": [],
"meleeAttackDamage": "",
"rangedSkills": [],
"rangedRangeModifier": "",
"rangedRangeDamageModifier": "",
"rangedAttackDamage": "",
"rangedReloadTime": 0,
"armorValue": 4,
"armorHandicap": 3,
"description": ""
}

Some files were not shown because too many files have changed in this diff Show More