Compare commits
1 commit
main
...
configurab
Author | SHA1 | Date | |
---|---|---|---|
cc7cb4a01d |
1748 changed files with 69380 additions and 82348 deletions
|
@ -3,5 +3,6 @@
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
/dist
|
/dist
|
||||||
client
|
/.pnp.cjs
|
||||||
common
|
/.pnp.loader.mjs
|
||||||
|
/.yarn/
|
||||||
|
|
|
@ -4,12 +4,38 @@
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
parser: "@typescript-eslint/parser",
|
parser: "@typescript-eslint/parser",
|
||||||
parserOptions: { ecmaVersion: 2020, sourceType: "module" },
|
|
||||||
env: { browser: true },
|
parserOptions: {
|
||||||
extends: ["plugin:@typescript-eslint/recommended", "prettier"],
|
ecmaVersion: 2020,
|
||||||
plugins: ["@typescript-eslint"],
|
sourceType: "module",
|
||||||
|
},
|
||||||
|
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
extends: ["plugin:@typescript-eslint/recommended", "plugin:jest/recommended", "plugin:prettier/recommended"],
|
||||||
|
|
||||||
|
plugins: ["@typescript-eslint", "jest"],
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
// Specify any specific ESLint rules.
|
||||||
|
},
|
||||||
|
|
||||||
overrides: [
|
overrides: [
|
||||||
{ files: ["./*.cjs"], rules: { "@typescript-eslint/no-var-requires": "off" } },
|
{
|
||||||
{ files: ["./spec/**/*"], env: { browser: false } },
|
files: ["./*.cjs", "./*.js"],
|
||||||
|
rules: {
|
||||||
|
"@typescript-eslint/no-var-requires": "off",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ["./spec/**/*"],
|
||||||
|
env: {
|
||||||
|
browser: false,
|
||||||
|
},
|
||||||
|
extends: ["plugin:jest/recommended"],
|
||||||
|
plugins: ["jest"],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,99 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2023 Johannes Loher
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
name: Bug Report
|
|
||||||
about: File a bug report
|
|
||||||
labels: ["bug", "to be confirmed"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/ds4/issues) before submitting a new one.
|
|
||||||
|
|
||||||
Thanks for taking the time to fill out this bug report! In order to make it effective, please provide the following information.
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
## Issue Description
|
|
||||||
- type: textarea
|
|
||||||
id: expected
|
|
||||||
attributes:
|
|
||||||
label: Expected Behavior
|
|
||||||
description: What is the behavior that you expected?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: current
|
|
||||||
attributes:
|
|
||||||
label: Current Behavior
|
|
||||||
description: What is the current behavior, i.e., what happens actually?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: steps
|
|
||||||
attributes:
|
|
||||||
label: Steps to Reproduce
|
|
||||||
description: What are the steps to reproduce the problem?
|
|
||||||
placeholder: |
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
4.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: context
|
|
||||||
attributes:
|
|
||||||
label: Context
|
|
||||||
description: Please provide any additional context that might be helpful, e.g. log messages, screenshots, videos, or exports of problematic scenes or worlds.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
## Environment Details
|
|
||||||
- type: input
|
|
||||||
id: version
|
|
||||||
attributes:
|
|
||||||
label: Version
|
|
||||||
description: Which version(s) of DS4 are you seeing the problem on?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
id: foundry-version
|
|
||||||
attributes:
|
|
||||||
label: Foundry VTT Version
|
|
||||||
description: Which version(s) and build of Foundry VTT are you seeing the problem on?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
id: os
|
|
||||||
attributes:
|
|
||||||
label: Operating System
|
|
||||||
description: Which operating system are you using? (Windows, OS X, Linux (which distro))
|
|
||||||
placeholder: Windows
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: dropdown
|
|
||||||
id: browser
|
|
||||||
attributes:
|
|
||||||
label: Browser / App
|
|
||||||
description: Are you using a Browser or the native Electron application? (Select all that apply)
|
|
||||||
multiple: true
|
|
||||||
options:
|
|
||||||
- Native Electron App
|
|
||||||
- Chrome
|
|
||||||
- Firefox
|
|
||||||
- Microsoft Edge
|
|
||||||
- Safari
|
|
||||||
- Other
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
id: modules
|
|
||||||
attributes:
|
|
||||||
label: Relevant Modules
|
|
||||||
description: Please list any other active modules (including their versions) that you think might be relevant.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
|
@ -1,5 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2023 Johannes Loher
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
blank_issues_enabled: false
|
|
|
@ -1,28 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2023 Johannes Loher
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
name: Feature Request
|
|
||||||
description: Submit a feature request
|
|
||||||
labels: ["feature"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/ds4/issues) before submitting a new one.
|
|
||||||
|
|
||||||
In order to submit an effective feature request, please provide the following information.
|
|
||||||
- type: textarea
|
|
||||||
id: description
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe the proposal in as much detail as you feel is necessary.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: context
|
|
||||||
attributes:
|
|
||||||
label: Context
|
|
||||||
description: Is there anything else you can add about the proposal? You might want to link to related issues here if you haven't already.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -25,8 +25,10 @@ dist
|
||||||
results.xml
|
results.xml
|
||||||
junit.xml
|
junit.xml
|
||||||
|
|
||||||
# foundry
|
# yarn
|
||||||
/client
|
.yarn/*
|
||||||
/common
|
!.yarn/releases
|
||||||
|
!.yarn/plugins
|
||||||
.pnpm-store/
|
!.yarn/sdks
|
||||||
|
!.yarn/versions
|
||||||
|
.pnp.*
|
||||||
|
|
184
.gitlab-ci.yml
Normal file
184
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,184 @@
|
||||||
|
# SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||||
|
# SPDX-FileCopyrightText: 2021 Oliver Rümpelein
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
image: node:lts
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- check
|
||||||
|
- build
|
||||||
|
- prepare-release
|
||||||
|
- release
|
||||||
|
- publish
|
||||||
|
|
||||||
|
cache: &global_cache
|
||||||
|
paths:
|
||||||
|
- .yarn/cache
|
||||||
|
|
||||||
|
lint:
|
||||||
|
stage: check
|
||||||
|
before_script:
|
||||||
|
- yarn install --immutable
|
||||||
|
script:
|
||||||
|
- yarn lint
|
||||||
|
cache:
|
||||||
|
<<: *global_cache
|
||||||
|
|
||||||
|
typecheck:
|
||||||
|
stage: check
|
||||||
|
before_script:
|
||||||
|
- yarn install --immutable
|
||||||
|
script:
|
||||||
|
- yarn typecheck
|
||||||
|
cache:
|
||||||
|
<<: *global_cache
|
||||||
|
|
||||||
|
test:
|
||||||
|
stage: check
|
||||||
|
before_script:
|
||||||
|
- yarn install --immutable
|
||||||
|
script:
|
||||||
|
- yarn test:ci
|
||||||
|
cache:
|
||||||
|
<<: *global_cache
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
reports:
|
||||||
|
junit:
|
||||||
|
- junit.xml
|
||||||
|
|
||||||
|
reuse:
|
||||||
|
stage: check
|
||||||
|
image:
|
||||||
|
name: fsfe/reuse:latest
|
||||||
|
entrypoint: [""]
|
||||||
|
script:
|
||||||
|
- reuse lint
|
||||||
|
|
||||||
|
build:
|
||||||
|
stage: build
|
||||||
|
before_script:
|
||||||
|
- yarn install --immutable
|
||||||
|
- if [[ ! -z ${CI_COMMIT_TAG+x} ]]; then export NODE_ENV=production; fi
|
||||||
|
script:
|
||||||
|
- yarn build
|
||||||
|
- mv dist ds4
|
||||||
|
cache:
|
||||||
|
<<: *global_cache
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- ds4
|
||||||
|
expire_in: 1 week
|
||||||
|
|
||||||
|
publish-artifacts:
|
||||||
|
stage: prepare-release
|
||||||
|
image: alpine:latest
|
||||||
|
before_script:
|
||||||
|
- apk update
|
||||||
|
- apk add zip curl
|
||||||
|
script: |
|
||||||
|
zip -r ds4.zip ds4/*
|
||||||
|
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/ds4.zip"
|
||||||
|
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json"
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
|
||||||
|
|
||||||
|
changelog:
|
||||||
|
stage: prepare-release
|
||||||
|
before_script:
|
||||||
|
- yarn install --immutable
|
||||||
|
script:
|
||||||
|
- yarn changelog
|
||||||
|
cache:
|
||||||
|
<<: *global_cache
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- CHANGELOG.md
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
|
||||||
|
|
||||||
|
.release-template: &release-template
|
||||||
|
stage: release
|
||||||
|
before_script:
|
||||||
|
- yarn install
|
||||||
|
- apt update
|
||||||
|
- apt install --yes jq
|
||||||
|
- REPOSITORY_URL=$(echo "${CI_REPOSITORY_URL}" | sed -e "s|gitlab-ci-token:.*@|${RELEASE_TOKEN}:${RELEASE_TOKEN_SECRET}@|g")
|
||||||
|
- git remote set-url origin $REPOSITORY_URL
|
||||||
|
- git config user.name $GITLAB_USER_LOGIN
|
||||||
|
- git config user.email $GITLAB_USER_EMAIL
|
||||||
|
- git branch -D ci-processing || true
|
||||||
|
- git checkout -b ci-processing
|
||||||
|
cache:
|
||||||
|
<<: *global_cache
|
||||||
|
script: |
|
||||||
|
yarn bump-version --release=${RELEASE_TYPE}
|
||||||
|
RELEASE_VERSION=$(jq -r '.version' < package.json)
|
||||||
|
git add package.json system.json
|
||||||
|
git --no-pager diff
|
||||||
|
git commit -m "chore(release): ${RELEASE_VERSION}"
|
||||||
|
git tag -f ${RELEASE_VERSION}
|
||||||
|
git push origin ci-processing:${CI_BUILD_REF_NAME} -o ci.skip
|
||||||
|
git push origin ${RELEASE_VERSION}
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
when: manual
|
||||||
|
|
||||||
|
release-patch:
|
||||||
|
variables:
|
||||||
|
RELEASE_TYPE: patch
|
||||||
|
<<: *release-template
|
||||||
|
|
||||||
|
release-minor:
|
||||||
|
variables:
|
||||||
|
RELEASE_TYPE: minor
|
||||||
|
<<: *release-template
|
||||||
|
|
||||||
|
release-major:
|
||||||
|
variables:
|
||||||
|
RELEASE_TYPE: major
|
||||||
|
<<: *release-template
|
||||||
|
|
||||||
|
release:
|
||||||
|
stage: release
|
||||||
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||||
|
script:
|
||||||
|
- echo 'release job'
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
|
||||||
|
release:
|
||||||
|
tag_name: $CI_COMMIT_TAG
|
||||||
|
description: "./CHANGELOG.md"
|
||||||
|
assets:
|
||||||
|
links:
|
||||||
|
- name: "ds4.zip"
|
||||||
|
url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/ds4.zip"
|
||||||
|
filepath: /ds4.zip
|
||||||
|
link_type: package
|
||||||
|
- name: "system.json"
|
||||||
|
url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json"
|
||||||
|
filepath: /system.json
|
||||||
|
link_type: other
|
||||||
|
|
||||||
|
publish-latest-manifest:
|
||||||
|
stage: publish
|
||||||
|
image: alpine:latest
|
||||||
|
before_script:
|
||||||
|
- apk update
|
||||||
|
- apk add zip curl
|
||||||
|
script: |
|
||||||
|
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/latest/system.json"
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
|
||||||
|
|
||||||
|
publish-to-foundry-admin:
|
||||||
|
stage: publish
|
||||||
|
image: johannesloher/foundry-publish
|
||||||
|
variables:
|
||||||
|
FVTT_MANIFEST_PATH: ds4/system.json
|
||||||
|
FVTT_MANIFEST_URL: ${CI_PROJECT_URL}/-/releases/${CI_COMMIT_TAG}/downloads/system.json
|
||||||
|
FVTT_DELETE_OBSOLETE_VERSIONS: "true"
|
||||||
|
script: foundry-publish
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
|
48
.gitlab/issue_templates/Bug Report.md
Normal file
48
.gitlab/issue_templates/Bug Report.md
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
Your issue may already have been reported! Please search on the issue tracker (https://git.f3l.de/dungeonslayers/ds4/-/issues) before submitting a new one.
|
||||||
|
|
||||||
|
Thanks for taking the time to fill out this bug report! In order to make it effective, please provide the following information.
|
||||||
|
|
||||||
|
# Issue Description
|
||||||
|
|
||||||
|
## Expected Behavior
|
||||||
|
|
||||||
|
(What is the behavior that you expected?)
|
||||||
|
|
||||||
|
## Current Behavior
|
||||||
|
|
||||||
|
(What is the current behavior, i.e., what happens actually?)
|
||||||
|
|
||||||
|
## Steps to Reproduce
|
||||||
|
|
||||||
|
(What are the steps to reproduce the problem?)
|
||||||
|
|
||||||
|
1. ...
|
||||||
|
2. ...
|
||||||
|
3. ...
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
(Please provide any additional context that might be helpful, e.g. log messages,
|
||||||
|
screenshots, videos, or exports of problematic scenes or worlds.)
|
||||||
|
|
||||||
|
# Environment Details
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
(Which version(s) of DS4 are you seeing the problem on?)
|
||||||
|
|
||||||
|
## Foundry VTT Version
|
||||||
|
|
||||||
|
(Which version(s) and build of Foundry VTT are you seeing the problem on?)
|
||||||
|
|
||||||
|
## Operating System
|
||||||
|
|
||||||
|
(Which operating system are you using? (Windows, OS X, Linux (which distro)))
|
||||||
|
|
||||||
|
## Browser / App
|
||||||
|
|
||||||
|
(Are you using a Browser or the native Electron application?)
|
||||||
|
|
||||||
|
## Relevant Modules
|
||||||
|
|
||||||
|
(Please list any active modules (including their versions) that you think might be relevant.)
|
11
.gitlab/issue_templates/Feature Request.md
Normal file
11
.gitlab/issue_templates/Feature Request.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Your issue may already have been reported! Please search on the issue tracker (https://git.f3l.de/dungeonslayers/ds4/-/issues) before submitting a new one.
|
||||||
|
|
||||||
|
In order to submit an effective feature request, please provide the following information.
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
(Please describe the proposal in as much detail as you feel is necessary.)
|
||||||
|
|
||||||
|
# Context
|
||||||
|
|
||||||
|
(Is there anything else you can add about the proposal? You might want to link to related issues here if you haven't already.)
|
3
.gitlab/issue_templates/Feature Request.md.license
Normal file
3
.gitlab/issue_templates/Feature Request.md.license
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
SPDX-FileCopyrightText: 2022 Johannes Loher
|
||||||
|
|
||||||
|
SPDX-License-Identifier: MIT
|
1
.husky/.gitignore
vendored
Normal file
1
.husky/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
_
|
9
.husky/commit-msg
Executable file
9
.husky/commit-msg
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
yarn run commitlint --edit "$1"
|
9
.husky/pre-commit
Executable file
9
.husky/pre-commit
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
yarn run lint-staged
|
|
@ -4,8 +4,7 @@
|
||||||
|
|
||||||
/dist
|
/dist
|
||||||
/package-lock.json
|
/package-lock.json
|
||||||
/node_modules/
|
/.pnp.cjs
|
||||||
|
/.pnp.loader.mjs
|
||||||
|
/.yarn/
|
||||||
/.vscode/
|
/.vscode/
|
||||||
client
|
|
||||||
common
|
|
||||||
pnpm-lock.yaml
|
|
||||||
|
|
11
.prettierrc.cjs
Normal file
11
.prettierrc.cjs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
// SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
semi: true,
|
||||||
|
trailingComma: "all",
|
||||||
|
singleQuote: false,
|
||||||
|
printWidth: 120,
|
||||||
|
tabWidth: 4,
|
||||||
|
};
|
|
@ -1,11 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: 2021 Johannes Loher
|
|
||||||
//
|
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
export default {
|
|
||||||
semi: true,
|
|
||||||
trailingComma: "all",
|
|
||||||
singleQuote: false,
|
|
||||||
printWidth: 120,
|
|
||||||
tabWidth: 2,
|
|
||||||
};
|
|
33
.reuse/dep5
33
.reuse/dep5
|
@ -3,6 +3,10 @@ Upstream-Name: ds4
|
||||||
Upstream-Contact: Johannes Loher <johannes.loher@fg4f.de>
|
Upstream-Contact: Johannes Loher <johannes.loher@fg4f.de>
|
||||||
Source: https://git.f3l.de/dungeonslayers/ds4
|
Source: https://git.f3l.de/dungeonslayers/ds4
|
||||||
|
|
||||||
|
Files: .yarn/**
|
||||||
|
Copyright: Copyright (c) 2016-present, Yarn Contributors. All rights reserved.
|
||||||
|
License: BSD-2-Clause
|
||||||
|
|
||||||
Files: assets/icons/official/*
|
Files: assets/icons/official/*
|
||||||
Copyright: 2021 Johannes Loher
|
Copyright: 2021 Johannes Loher
|
||||||
License: CC-BY-NC-SA-4.0
|
License: CC-BY-NC-SA-4.0
|
||||||
|
@ -46,32 +50,3 @@ License: CC-BY-3.0
|
||||||
Files: assets/tokens/devin-night/*
|
Files: assets/tokens/devin-night/*
|
||||||
Copyright: Devin Night, https://immortalnights.com/
|
Copyright: Devin Night, https://immortalnights.com/
|
||||||
License: LicenseRef-DevinNightTokenUsageRights
|
License: LicenseRef-DevinNightTokenUsageRights
|
||||||
|
|
||||||
Files: packs/creatures/*
|
|
||||||
Copyright: 2021 Sascha Martens
|
|
||||||
2021 Johannes Loher
|
|
||||||
License: CC-BY-NC-SA-4.0
|
|
||||||
|
|
||||||
Files: packs/items/*
|
|
||||||
Copyright: 2021 Johannes Loher
|
|
||||||
License: CC-BY-NC-SA-4.0
|
|
||||||
|
|
||||||
Files: packs/languages-and-scripts/*
|
|
||||||
Copyright: 2021 Johannes Loher
|
|
||||||
License: CC-BY-NC-SA-4.0
|
|
||||||
|
|
||||||
Files: packs/racial-abilities/*
|
|
||||||
Copyright: 2021 Johannes Loher
|
|
||||||
License: CC-BY-NC-SA-4.0
|
|
||||||
|
|
||||||
Files: packs/special-creature-abilities/*
|
|
||||||
Copyright: 2021 Johannes Loher
|
|
||||||
License: CC-BY-NC-SA-4.0
|
|
||||||
|
|
||||||
Files: packs/spells/*
|
|
||||||
Copyright: 2021 Sascha Martens
|
|
||||||
License: CC-BY-NC-SA-4.0
|
|
||||||
|
|
||||||
Files: packs/talents/*
|
|
||||||
Copyright: 2022 Johannes Loher
|
|
||||||
License: CC-BY-NC-SA-4.0
|
|
||||||
|
|
6
.vscode/launch.json
vendored
6
.vscode/launch.json
vendored
|
@ -5,14 +5,12 @@
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"type": "chrome",
|
"type": "pwa-chrome",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"runtimeExecutable": "/usr/bin/chromium",
|
"runtimeExecutable": "/usr/bin/chromium",
|
||||||
"name": "Launch Chrome against localhost",
|
"name": "Launch Chrome against localhost",
|
||||||
"url": "http://localhost:30000/game",
|
"url": "http://localhost:30000/game",
|
||||||
"pathMapping": {
|
"webRoot": "${workspaceFolder}/dist"
|
||||||
"/systems/ds4": "${workspaceFolder}/dist"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
14
.vscode/settings.json
vendored
14
.vscode/settings.json
vendored
|
@ -1,4 +1,16 @@
|
||||||
{
|
{
|
||||||
"typescript.tsdk": "node_modules/typescript/lib",
|
"search.exclude": {
|
||||||
|
"**/.yarn": true,
|
||||||
|
"**/.pnp.*": true
|
||||||
|
},
|
||||||
|
"eslint.nodePath": ".yarn/sdks",
|
||||||
|
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
|
||||||
|
"typescript.tsdk": ".yarn/sdks/typescript/lib",
|
||||||
"typescript.enablePromptUseWorkspaceTsdk": true,
|
"typescript.enablePromptUseWorkspaceTsdk": true,
|
||||||
|
"importSorter.generalConfiguration.sortOnBeforeSave": true,
|
||||||
|
"importSorter.importStringConfiguration.maximumNumberOfImportExpressionsPerLine.type": "newLineEachExpressionAfterCountLimitExceptIfOnlyOne",
|
||||||
|
"importSorter.importStringConfiguration.maximumNumberOfImportExpressionsPerLine.count": 120,
|
||||||
|
"importSorter.importStringConfiguration.tabSize": 4,
|
||||||
|
"importSorter.importStringConfiguration.quoteMark": "double",
|
||||||
|
"importSorter.importStringConfiguration.trailingComma": "multiLine"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2023 Johannes Loher
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
|
|
||||||
|
|
||||||
variables:
|
|
||||||
- &node_image node:lts
|
|
||||||
- &enable_pnpm
|
|
||||||
- corepack enable
|
|
||||||
- corepack prepare pnpm@latest --activate
|
|
||||||
|
|
||||||
when:
|
|
||||||
- event: push
|
|
||||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
|
||||||
- event: pull_request
|
|
||||||
- event: tag
|
|
||||||
- event: manual
|
|
||||||
|
|
||||||
steps:
|
|
||||||
install:
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm install --frozen-lockfile
|
|
||||||
lint:
|
|
||||||
group: check
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm lint
|
|
||||||
formatcheck:
|
|
||||||
group: check
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm format:check
|
|
||||||
typecheck:
|
|
||||||
group: check
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm typecheck
|
|
||||||
test:
|
|
||||||
group: check
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm test
|
|
||||||
reuse:
|
|
||||||
group: check
|
|
||||||
image: fsfe/reuse:latest
|
|
||||||
commands:
|
|
||||||
- reuse lint
|
|
||||||
commitlint:
|
|
||||||
group: check
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- git fetch origin ${CI_COMMIT_TARGET_BRANCH}
|
|
||||||
- pnpm exec commitlint --from origin/${CI_COMMIT_TARGET_BRANCH}
|
|
||||||
when:
|
|
||||||
event: pull_request
|
|
||||||
build:
|
|
||||||
group: build
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- export APPDATA=$(pwd)
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm build
|
|
|
@ -1,114 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2023 Johannes Loher
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
|
|
||||||
|
|
||||||
variables:
|
|
||||||
- &node_image node:lts
|
|
||||||
- &enable_pnpm
|
|
||||||
- corepack enable
|
|
||||||
- corepack prepare pnpm@latest --activate
|
|
||||||
- &is_latest_channel
|
|
||||||
evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$"
|
|
||||||
- &is_beta_channel
|
|
||||||
evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+-[0-9]+$"
|
|
||||||
- &release_plugin woodpeckerci/plugin-gitea-release
|
|
||||||
- &release_base_settings
|
|
||||||
base_url: ${CI_FORGE_URL}
|
|
||||||
title: ${CI_COMMIT_TAG}
|
|
||||||
note: CHANGELOG.md
|
|
||||||
files:
|
|
||||||
- ${CI_REPO_NAME}.zip
|
|
||||||
- ${CI_REPO_NAME}/system.json
|
|
||||||
api_key:
|
|
||||||
from_secret: forge_token
|
|
||||||
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[0-9]+)?$"
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- checks
|
|
||||||
|
|
||||||
steps:
|
|
||||||
install:
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm install --frozen-lockfile
|
|
||||||
build:
|
|
||||||
image: *node_image
|
|
||||||
environment:
|
|
||||||
NODE_ENV: production
|
|
||||||
commands:
|
|
||||||
- export APPDATA=$(pwd)
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm build
|
|
||||||
package:
|
|
||||||
group: prepare-release
|
|
||||||
image: alpine:latest
|
|
||||||
commands:
|
|
||||||
- apk update
|
|
||||||
- apk add zip curl
|
|
||||||
- mv dist ${CI_REPO_NAME}
|
|
||||||
- zip -r ${CI_REPO_NAME}.zip ${CI_REPO_NAME}/*
|
|
||||||
changelog:
|
|
||||||
group: prepare-release
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm changelog
|
|
||||||
choose-latest-channel:
|
|
||||||
group: prepare-release
|
|
||||||
image: alpine:latest
|
|
||||||
commands:
|
|
||||||
- echo latest > .RELEASE_CHANNEL
|
|
||||||
when:
|
|
||||||
<<: *is_latest_channel
|
|
||||||
choose-beta-channel:
|
|
||||||
group: prepare-release
|
|
||||||
image: alpine:latest
|
|
||||||
commands:
|
|
||||||
- echo beta > .RELEASE_CHANNEL
|
|
||||||
when:
|
|
||||||
<<: *is_beta_channel
|
|
||||||
release-latest:
|
|
||||||
image: *release_plugin
|
|
||||||
settings:
|
|
||||||
<<: *release_base_settings
|
|
||||||
when:
|
|
||||||
<<: *is_latest_channel
|
|
||||||
release-beta:
|
|
||||||
image: *release_plugin
|
|
||||||
settings:
|
|
||||||
<<: *release_base_settings
|
|
||||||
prerelease: true
|
|
||||||
when:
|
|
||||||
<<: *is_beta_channel
|
|
||||||
publish-manifest:
|
|
||||||
group: publish
|
|
||||||
image: alpine:latest
|
|
||||||
commands:
|
|
||||||
- apk update
|
|
||||||
- apk add curl
|
|
||||||
- export RELEASE_CHANNEL=$(cat .RELEASE_CHANNEL)
|
|
||||||
- 'curl --header "Authorization: token $${FORGE_TOKEN}" -X "DELETE" "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"'
|
|
||||||
- 'curl --fail --header "Authorization: token $${FORGE_TOKEN}" --upload-file ${CI_REPO_NAME}/system.json "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"'
|
|
||||||
secrets:
|
|
||||||
- forge_token
|
|
||||||
publish-to-foundry-admin:
|
|
||||||
group: publish
|
|
||||||
image: johannesloher/foundry-publish
|
|
||||||
environment:
|
|
||||||
FVTT_DELETE_OBSOLETE_VERSIONS: "true"
|
|
||||||
commands:
|
|
||||||
- export FVTT_MANIFEST_PATH=${CI_REPO_NAME}/system.json
|
|
||||||
- export FVTT_MANIFEST_URL=${CI_REPO_URL}/releases/download/${CI_COMMIT_TAG}/system.json
|
|
||||||
- foundry-publish
|
|
||||||
secrets:
|
|
||||||
- fvtt_package_id
|
|
||||||
- fvtt_username
|
|
||||||
- fvtt_password
|
|
||||||
when:
|
|
||||||
<<: *is_latest_channel
|
|
|
@ -1,47 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2023 Johannes Loher
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
|
|
||||||
|
|
||||||
variables:
|
|
||||||
- &node_image node:lts
|
|
||||||
- &enable_pnpm
|
|
||||||
- corepack enable
|
|
||||||
- corepack prepare pnpm@latest --activate
|
|
||||||
|
|
||||||
when:
|
|
||||||
event: manual
|
|
||||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- checks
|
|
||||||
|
|
||||||
steps:
|
|
||||||
install:
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- pnpm install --frozen-lockfile
|
|
||||||
release:
|
|
||||||
image: *node_image
|
|
||||||
commands:
|
|
||||||
- <<: *enable_pnpm
|
|
||||||
- apt-get update
|
|
||||||
- apt-get install --yes jq
|
|
||||||
- export REPOSITORY_URL=$(echo "${CI_REPO_CLONE_URL}" | sed -e "s|://|://$${FORGE_TOKEN_NAME}:$${FORGE_TOKEN}@|g")
|
|
||||||
- git remote set-url origin $${REPOSITORY_URL}
|
|
||||||
- git config user.name woodpecker[bot]
|
|
||||||
- git config user.email woodpecker[bot]@${CI_SYSTEM_HOST}
|
|
||||||
- pnpm bump-version --release=${RELEASE_TYPE}
|
|
||||||
- pnpm exec prettier --write package.json system.json
|
|
||||||
- export RELEASE_VERSION=$(jq -r '.version' < package.json)
|
|
||||||
- git --no-pager diff
|
|
||||||
- git add package.json system.json
|
|
||||||
- 'git commit -m "chore(release): $${RELEASE_VERSION}"'
|
|
||||||
- git tag -f $${RELEASE_VERSION}
|
|
||||||
- git push origin ${CI_COMMIT_BRANCH}
|
|
||||||
- git push origin $${RELEASE_VERSION}
|
|
||||||
secrets:
|
|
||||||
- forge_token_name
|
|
||||||
- forge_token
|
|
77
.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
vendored
Normal file
77
.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
vendored
Normal file
File diff suppressed because one or more lines are too long
785
.yarn/releases/yarn-3.2.0.cjs
vendored
Executable file
785
.yarn/releases/yarn-3.2.0.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
20
.yarn/sdks/eslint/bin/eslint.js
vendored
Executable file
20
.yarn/sdks/eslint/bin/eslint.js
vendored
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require eslint/bin/eslint.js
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real eslint/bin/eslint.js your application uses
|
||||||
|
module.exports = absRequire(`eslint/bin/eslint.js`);
|
20
.yarn/sdks/eslint/lib/api.js
vendored
Normal file
20
.yarn/sdks/eslint/lib/api.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require eslint
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real eslint your application uses
|
||||||
|
module.exports = absRequire(`eslint`);
|
6
.yarn/sdks/eslint/package.json
vendored
Normal file
6
.yarn/sdks/eslint/package.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "eslint",
|
||||||
|
"version": "8.11.0-sdk",
|
||||||
|
"main": "./lib/api.js",
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
5
.yarn/sdks/integrations.yml
vendored
Normal file
5
.yarn/sdks/integrations.yml
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# This file is automatically generated by @yarnpkg/sdks.
|
||||||
|
# Manual changes might be lost!
|
||||||
|
|
||||||
|
integrations:
|
||||||
|
- vscode
|
20
.yarn/sdks/prettier/index.js
vendored
Executable file
20
.yarn/sdks/prettier/index.js
vendored
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require prettier/index.js
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real prettier/index.js your application uses
|
||||||
|
module.exports = absRequire(`prettier/index.js`);
|
6
.yarn/sdks/prettier/package.json
vendored
Normal file
6
.yarn/sdks/prettier/package.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "prettier",
|
||||||
|
"version": "2.6.0-sdk",
|
||||||
|
"main": "./index.js",
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
20
.yarn/sdks/typescript/bin/tsc
vendored
Executable file
20
.yarn/sdks/typescript/bin/tsc
vendored
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require typescript/bin/tsc
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real typescript/bin/tsc your application uses
|
||||||
|
module.exports = absRequire(`typescript/bin/tsc`);
|
20
.yarn/sdks/typescript/bin/tsserver
vendored
Executable file
20
.yarn/sdks/typescript/bin/tsserver
vendored
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require typescript/bin/tsserver
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real typescript/bin/tsserver your application uses
|
||||||
|
module.exports = absRequire(`typescript/bin/tsserver`);
|
20
.yarn/sdks/typescript/lib/tsc.js
vendored
Normal file
20
.yarn/sdks/typescript/lib/tsc.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require typescript/lib/tsc.js
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real typescript/lib/tsc.js your application uses
|
||||||
|
module.exports = absRequire(`typescript/lib/tsc.js`);
|
196
.yarn/sdks/typescript/lib/tsserver.js
vendored
Normal file
196
.yarn/sdks/typescript/lib/tsserver.js
vendored
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
const moduleWrapper = tsserver => {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
return tsserver;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {isAbsolute} = require(`path`);
|
||||||
|
const pnpApi = require(`pnpapi`);
|
||||||
|
|
||||||
|
const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
|
||||||
|
const isPortal = str => str.startsWith("portal:/");
|
||||||
|
const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
|
||||||
|
|
||||||
|
const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
|
||||||
|
return `${locator.name}@${locator.reference}`;
|
||||||
|
}));
|
||||||
|
|
||||||
|
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
|
||||||
|
// doesn't understand. This layer makes sure to remove the protocol
|
||||||
|
// before forwarding it to TS, and to add it back on all returned paths.
|
||||||
|
|
||||||
|
function toEditorPath(str) {
|
||||||
|
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
|
||||||
|
if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
|
||||||
|
// We also take the opportunity to turn virtual paths into physical ones;
|
||||||
|
// this makes it much easier to work with workspaces that list peer
|
||||||
|
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
|
||||||
|
// file instances instead of the real ones.
|
||||||
|
//
|
||||||
|
// We only do this to modules owned by the the dependency tree roots.
|
||||||
|
// This avoids breaking the resolution when jumping inside a vendor
|
||||||
|
// with peer dep (otherwise jumping into react-dom would show resolution
|
||||||
|
// errors on react).
|
||||||
|
//
|
||||||
|
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
|
||||||
|
if (resolved) {
|
||||||
|
const locator = pnpApi.findPackageLocator(resolved);
|
||||||
|
if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
|
||||||
|
str = resolved;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
str = normalize(str);
|
||||||
|
|
||||||
|
if (str.match(/\.zip\//)) {
|
||||||
|
switch (hostInfo) {
|
||||||
|
// Absolute VSCode `Uri.fsPath`s need to start with a slash.
|
||||||
|
// VSCode only adds it automatically for supported schemes,
|
||||||
|
// so we have to do it manually for the `zip` scheme.
|
||||||
|
// The path needs to start with a caret otherwise VSCode doesn't handle the protocol
|
||||||
|
//
|
||||||
|
// Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
|
||||||
|
//
|
||||||
|
// Update Oct 8 2021: VSCode changed their format in 1.61.
|
||||||
|
// Before | ^zip:/c:/foo/bar.zip/package.json
|
||||||
|
// After | ^/zip//c:/foo/bar.zip/package.json
|
||||||
|
//
|
||||||
|
case `vscode <1.61`: {
|
||||||
|
str = `^zip:${str}`;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case `vscode`: {
|
||||||
|
str = `^/zip/${str}`;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
// To make "go to definition" work,
|
||||||
|
// We have to resolve the actual file system path from virtual path
|
||||||
|
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
|
||||||
|
case `coc-nvim`: {
|
||||||
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
|
str = resolve(`zipfile:${str}`);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
|
||||||
|
// We have to resolve the actual file system path from virtual path,
|
||||||
|
// everything else is up to neovim
|
||||||
|
case `neovim`: {
|
||||||
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
|
str = `zipfile://${str}`;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
default: {
|
||||||
|
str = `zip:${str}`;
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fromEditorPath(str) {
|
||||||
|
switch (hostInfo) {
|
||||||
|
case `coc-nvim`: {
|
||||||
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
|
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
|
||||||
|
// So in order to convert it back, we use .* to match all the thing
|
||||||
|
// before `zipfile:`
|
||||||
|
return process.platform === `win32`
|
||||||
|
? str.replace(/^.*zipfile:\//, ``)
|
||||||
|
: str.replace(/^.*zipfile:/, ``);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case `neovim`: {
|
||||||
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
|
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
|
||||||
|
return str.replace(/^zipfile:\/\//, ``);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case `vscode`:
|
||||||
|
default: {
|
||||||
|
return process.platform === `win32`
|
||||||
|
? str.replace(/^\^?(zip:|\/zip)\/+/, ``)
|
||||||
|
: str.replace(/^\^?(zip:|\/zip)\/+/, `/`);
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force enable 'allowLocalPluginLoads'
|
||||||
|
// TypeScript tries to resolve plugins using a path relative to itself
|
||||||
|
// which doesn't work when using the global cache
|
||||||
|
// https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238
|
||||||
|
// VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but
|
||||||
|
// TypeScript already does local loads and if this code is running the user trusts the workspace
|
||||||
|
// https://github.com/microsoft/vscode/issues/45856
|
||||||
|
const ConfiguredProject = tsserver.server.ConfiguredProject;
|
||||||
|
const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
|
||||||
|
ConfiguredProject.prototype.enablePluginsWithOptions = function() {
|
||||||
|
this.projectService.allowLocalPluginLoads = true;
|
||||||
|
return originalEnablePluginsWithOptions.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
// And here is the point where we hijack the VSCode <-> TS communications
|
||||||
|
// by adding ourselves in the middle. We locate everything that looks
|
||||||
|
// like an absolute path of ours and normalize it.
|
||||||
|
|
||||||
|
const Session = tsserver.server.Session;
|
||||||
|
const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
|
||||||
|
let hostInfo = `unknown`;
|
||||||
|
|
||||||
|
Object.assign(Session.prototype, {
|
||||||
|
onMessage(/** @type {string | object} */ message) {
|
||||||
|
const isStringMessage = typeof message === 'string';
|
||||||
|
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
|
||||||
|
|
||||||
|
if (
|
||||||
|
parsedMessage != null &&
|
||||||
|
typeof parsedMessage === `object` &&
|
||||||
|
parsedMessage.arguments &&
|
||||||
|
typeof parsedMessage.arguments.hostInfo === `string`
|
||||||
|
) {
|
||||||
|
hostInfo = parsedMessage.arguments.hostInfo;
|
||||||
|
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK && process.env.VSCODE_IPC_HOOK.match(/Code\/1\.([1-5][0-9]|60)\./)) {
|
||||||
|
hostInfo += ` <1.61`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
|
||||||
|
return typeof value === 'string' ? fromEditorPath(value) : value;
|
||||||
|
});
|
||||||
|
|
||||||
|
return originalOnMessage.call(
|
||||||
|
this,
|
||||||
|
isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
send(/** @type {any} */ msg) {
|
||||||
|
return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
|
||||||
|
return typeof value === `string` ? toEditorPath(value) : value;
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return tsserver;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require typescript/lib/tsserver.js
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real typescript/lib/tsserver.js your application uses
|
||||||
|
module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`));
|
196
.yarn/sdks/typescript/lib/tsserverlibrary.js
vendored
Normal file
196
.yarn/sdks/typescript/lib/tsserverlibrary.js
vendored
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
const moduleWrapper = tsserver => {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
return tsserver;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {isAbsolute} = require(`path`);
|
||||||
|
const pnpApi = require(`pnpapi`);
|
||||||
|
|
||||||
|
const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
|
||||||
|
const isPortal = str => str.startsWith("portal:/");
|
||||||
|
const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
|
||||||
|
|
||||||
|
const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
|
||||||
|
return `${locator.name}@${locator.reference}`;
|
||||||
|
}));
|
||||||
|
|
||||||
|
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
|
||||||
|
// doesn't understand. This layer makes sure to remove the protocol
|
||||||
|
// before forwarding it to TS, and to add it back on all returned paths.
|
||||||
|
|
||||||
|
function toEditorPath(str) {
|
||||||
|
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
|
||||||
|
if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
|
||||||
|
// We also take the opportunity to turn virtual paths into physical ones;
|
||||||
|
// this makes it much easier to work with workspaces that list peer
|
||||||
|
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
|
||||||
|
// file instances instead of the real ones.
|
||||||
|
//
|
||||||
|
// We only do this to modules owned by the the dependency tree roots.
|
||||||
|
// This avoids breaking the resolution when jumping inside a vendor
|
||||||
|
// with peer dep (otherwise jumping into react-dom would show resolution
|
||||||
|
// errors on react).
|
||||||
|
//
|
||||||
|
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
|
||||||
|
if (resolved) {
|
||||||
|
const locator = pnpApi.findPackageLocator(resolved);
|
||||||
|
if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
|
||||||
|
str = resolved;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
str = normalize(str);
|
||||||
|
|
||||||
|
if (str.match(/\.zip\//)) {
|
||||||
|
switch (hostInfo) {
|
||||||
|
// Absolute VSCode `Uri.fsPath`s need to start with a slash.
|
||||||
|
// VSCode only adds it automatically for supported schemes,
|
||||||
|
// so we have to do it manually for the `zip` scheme.
|
||||||
|
// The path needs to start with a caret otherwise VSCode doesn't handle the protocol
|
||||||
|
//
|
||||||
|
// Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
|
||||||
|
//
|
||||||
|
// Update Oct 8 2021: VSCode changed their format in 1.61.
|
||||||
|
// Before | ^zip:/c:/foo/bar.zip/package.json
|
||||||
|
// After | ^/zip//c:/foo/bar.zip/package.json
|
||||||
|
//
|
||||||
|
case `vscode <1.61`: {
|
||||||
|
str = `^zip:${str}`;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case `vscode`: {
|
||||||
|
str = `^/zip/${str}`;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
// To make "go to definition" work,
|
||||||
|
// We have to resolve the actual file system path from virtual path
|
||||||
|
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
|
||||||
|
case `coc-nvim`: {
|
||||||
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
|
str = resolve(`zipfile:${str}`);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
|
||||||
|
// We have to resolve the actual file system path from virtual path,
|
||||||
|
// everything else is up to neovim
|
||||||
|
case `neovim`: {
|
||||||
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
|
str = `zipfile://${str}`;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
default: {
|
||||||
|
str = `zip:${str}`;
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fromEditorPath(str) {
|
||||||
|
switch (hostInfo) {
|
||||||
|
case `coc-nvim`: {
|
||||||
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
|
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
|
||||||
|
// So in order to convert it back, we use .* to match all the thing
|
||||||
|
// before `zipfile:`
|
||||||
|
return process.platform === `win32`
|
||||||
|
? str.replace(/^.*zipfile:\//, ``)
|
||||||
|
: str.replace(/^.*zipfile:/, ``);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case `neovim`: {
|
||||||
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
|
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
|
||||||
|
return str.replace(/^zipfile:\/\//, ``);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case `vscode`:
|
||||||
|
default: {
|
||||||
|
return process.platform === `win32`
|
||||||
|
? str.replace(/^\^?(zip:|\/zip)\/+/, ``)
|
||||||
|
: str.replace(/^\^?(zip:|\/zip)\/+/, `/`);
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force enable 'allowLocalPluginLoads'
|
||||||
|
// TypeScript tries to resolve plugins using a path relative to itself
|
||||||
|
// which doesn't work when using the global cache
|
||||||
|
// https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238
|
||||||
|
// VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but
|
||||||
|
// TypeScript already does local loads and if this code is running the user trusts the workspace
|
||||||
|
// https://github.com/microsoft/vscode/issues/45856
|
||||||
|
const ConfiguredProject = tsserver.server.ConfiguredProject;
|
||||||
|
const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
|
||||||
|
ConfiguredProject.prototype.enablePluginsWithOptions = function() {
|
||||||
|
this.projectService.allowLocalPluginLoads = true;
|
||||||
|
return originalEnablePluginsWithOptions.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
// And here is the point where we hijack the VSCode <-> TS communications
|
||||||
|
// by adding ourselves in the middle. We locate everything that looks
|
||||||
|
// like an absolute path of ours and normalize it.
|
||||||
|
|
||||||
|
const Session = tsserver.server.Session;
|
||||||
|
const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
|
||||||
|
let hostInfo = `unknown`;
|
||||||
|
|
||||||
|
Object.assign(Session.prototype, {
|
||||||
|
onMessage(/** @type {string | object} */ message) {
|
||||||
|
const isStringMessage = typeof message === 'string';
|
||||||
|
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
|
||||||
|
|
||||||
|
if (
|
||||||
|
parsedMessage != null &&
|
||||||
|
typeof parsedMessage === `object` &&
|
||||||
|
parsedMessage.arguments &&
|
||||||
|
typeof parsedMessage.arguments.hostInfo === `string`
|
||||||
|
) {
|
||||||
|
hostInfo = parsedMessage.arguments.hostInfo;
|
||||||
|
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK && process.env.VSCODE_IPC_HOOK.match(/Code\/1\.([1-5][0-9]|60)\./)) {
|
||||||
|
hostInfo += ` <1.61`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
|
||||||
|
return typeof value === 'string' ? fromEditorPath(value) : value;
|
||||||
|
});
|
||||||
|
|
||||||
|
return originalOnMessage.call(
|
||||||
|
this,
|
||||||
|
isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
send(/** @type {any} */ msg) {
|
||||||
|
return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
|
||||||
|
return typeof value === `string` ? toEditorPath(value) : value;
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return tsserver;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require typescript/lib/tsserverlibrary.js
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real typescript/lib/tsserverlibrary.js your application uses
|
||||||
|
module.exports = moduleWrapper(absRequire(`typescript/lib/tsserverlibrary.js`));
|
20
.yarn/sdks/typescript/lib/typescript.js
vendored
Normal file
20
.yarn/sdks/typescript/lib/typescript.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {existsSync} = require(`fs`);
|
||||||
|
const {createRequire, createRequireFromPath} = require(`module`);
|
||||||
|
const {resolve} = require(`path`);
|
||||||
|
|
||||||
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
|
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
|
||||||
|
|
||||||
|
if (existsSync(absPnpApiPath)) {
|
||||||
|
if (!process.versions.pnp) {
|
||||||
|
// Setup the environment to be able to require typescript/lib/typescript.js
|
||||||
|
require(absPnpApiPath).setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defer to the real typescript/lib/typescript.js your application uses
|
||||||
|
module.exports = absRequire(`typescript/lib/typescript.js`);
|
6
.yarn/sdks/typescript/package.json
vendored
Normal file
6
.yarn/sdks/typescript/package.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "typescript",
|
||||||
|
"version": "4.6.2-sdk",
|
||||||
|
"main": "./lib/typescript.js",
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
7
.yarnrc.yml
Normal file
7
.yarnrc.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
nodeLinker: pnp
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
||||||
|
spec: "@yarnpkg/plugin-interactive-tools"
|
||||||
|
|
||||||
|
yarnPath: .yarn/releases/yarn-3.2.0.cjs
|
3
.yarnrc.yml.license
Normal file
3
.yarnrc.yml.license
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||||
|
|
||||||
|
SPDX-License-Identifier: MIT
|
9
LICENSES/BSD-2-Clause.txt
Normal file
9
LICENSES/BSD-2-Clause.txt
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
Copyright (c) <year> <owner> All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
32
README.md
32
README.md
|
@ -7,13 +7,6 @@ SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# DS4
|
# DS4
|
||||||
|
|
||||||
[![status-badge](https://ci.f3l.de/api/badges/5/status.svg)](https://ci.f3l.de/repos/5)
|
|
||||||
[![REUSE status](https://api.reuse.software/badge/git.f3l.de/dungeonslayers/ds4)](https://api.reuse.software/info/git.f3l.de/dungeonslayers/ds4)
|
|
||||||
[![Forge installs](https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Fds4&colorB=4aa94a)](https://forge-vtt.com/bazaar#package=ds4)
|
|
||||||
[![Supported foundry versions](https://img.shields.io/endpoint?url=https://foundryshields.com/version?url=https%3A%2F%2Fgit.f3l.de%2Fapi%2Fpackages%2Fdungeonslayers%2Fgeneric%2Fds4%2Flatest%2Fsystem.json)](https://git.f3l.de/dungeonslayers/ds4)
|
|
||||||
[![Matrix](https://img.shields.io/matrix/ds4%3Aim.f3l.de?server_fqdn=im.f3l.de&logo=matrix&color=0DBD8B)](https://matrix.to/#/#ds4:im.f3l.de)
|
|
||||||
[![Ko-fi](https://img.shields.io/badge/Ko--fi-ghostfvtt-00B9FE?logo=kofi)](https://ko-fi.com/ghostfvtt)
|
|
||||||
|
|
||||||
An implementation of the [Dungeonslayers] 4 game system for [Foundry Virtual
|
An implementation of the [Dungeonslayers] 4 game system for [Foundry Virtual
|
||||||
Tabletop].
|
Tabletop].
|
||||||
|
|
||||||
|
@ -26,16 +19,16 @@ To install and use the Dungeonslayers 4 system for Foundry Virtual Tabletop,
|
||||||
find it in the list in the **Install System** dialog on the Setup menu of the
|
find it in the list in the **Install System** dialog on the Setup menu of the
|
||||||
application. Alternatively, paste the following Manifest URL in that dialog:
|
application. Alternatively, paste the following Manifest URL in that dialog:
|
||||||
|
|
||||||
https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json
|
https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
In order to build this system, recent versions of `node` and `pnpm` are
|
In order to build this system, recent versions of `node` and `yarn` are
|
||||||
required. Most likely using `npm` or `yarn` also works but only `pnpm` is
|
required. Most likely using `npm` also works but only `yarn` is officially
|
||||||
officially supported. We recommend using the latest lts version of `node`. If
|
supported. We recommend using the latest lts version of `node`. If you use `nvm`
|
||||||
you use `nvm` to manage your `node` versions, you can simply run
|
to manage your `node` versions, you can simply run
|
||||||
|
|
||||||
```
|
```
|
||||||
nvm install
|
nvm install
|
||||||
|
@ -46,7 +39,7 @@ in the project's root directory.
|
||||||
You also need to install the project's dependencies. To do so, run
|
You also need to install the project's dependencies. To do so, run
|
||||||
|
|
||||||
```
|
```
|
||||||
pnpm install
|
yarn install
|
||||||
```
|
```
|
||||||
|
|
||||||
### Building
|
### Building
|
||||||
|
@ -54,13 +47,13 @@ pnpm install
|
||||||
You can build the project by running
|
You can build the project by running
|
||||||
|
|
||||||
```
|
```
|
||||||
pnpm build
|
yarn build
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, you can run
|
Alternatively, you can run
|
||||||
|
|
||||||
```
|
```
|
||||||
pnpm watch
|
yarn watch
|
||||||
```
|
```
|
||||||
|
|
||||||
to watch for changes and automatically build as necessary.
|
to watch for changes and automatically build as necessary.
|
||||||
|
@ -83,7 +76,7 @@ On platforms other than Linux you need to adjust the path accordingly.
|
||||||
Then run
|
Then run
|
||||||
|
|
||||||
```
|
```
|
||||||
pnpm link-package
|
yarn link-package
|
||||||
```
|
```
|
||||||
|
|
||||||
### Running the tests
|
### Running the tests
|
||||||
|
@ -91,12 +84,14 @@ pnpm link-package
|
||||||
You can run the tests with the following command:
|
You can run the tests with the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
pnpm test
|
yarn test
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Code and content contributions are accepted. To report issues, please contact us in [Matrix](https://matrix.to/#/#ds4:im.f3l.de).
|
Code and content contributions are accepted. Please feel free to submit issues
|
||||||
|
to the issue tracker or submit merge requests for code changes. To create an
|
||||||
|
issue, send a mail to [git+dungeonslayers-ds4-155-issue-@git.f3l.de].
|
||||||
|
|
||||||
## Licensing
|
## Licensing
|
||||||
|
|
||||||
|
@ -112,6 +107,7 @@ author(s). You can find these attributions in [ATTRIBUTION.md](ATTRIBUTION.md).
|
||||||
|
|
||||||
[Dungeonslayers]: https://www.dungeonslayers.net/
|
[Dungeonslayers]: https://www.dungeonslayers.net/
|
||||||
[Foundry Virtual Tabletop]: http://foundryvtt.com/
|
[Foundry Virtual Tabletop]: http://foundryvtt.com/
|
||||||
|
[git+dungeonslayers-ds4-155-issue-@git.f3l.de]: mailto:git+dungeonslayers-ds4-155-issue-@git.f3l.de
|
||||||
[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/
|
[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/
|
||||||
[REUSE]: https://reuse.software/
|
[REUSE]: https://reuse.software/
|
||||||
[.reuse/dep5]: .reuse/dep5
|
[.reuse/dep5]: .reuse/dep5
|
||||||
|
|
16
jest.config.js
Normal file
16
jest.config.js
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
|
||||||
|
const config = {
|
||||||
|
preset: "ts-jest",
|
||||||
|
globals: {
|
||||||
|
"ts-jest": {
|
||||||
|
tsconfig: "<rootDir>/spec/tsconfig.json",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setupFiles: ["<rootDir>/spec/setup.ts"],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"module": "es2022",
|
|
||||||
"target": "ES2022"
|
|
||||||
},
|
|
||||||
"exclude": ["node_modules", "dist"],
|
|
||||||
"include": ["src", "client", "common"]
|
|
||||||
}
|
|
103
lang/de.json
103
lang/de.json
|
@ -28,8 +28,6 @@
|
||||||
"DS4.OpponentDefense": "Gegnerabwehr",
|
"DS4.OpponentDefense": "Gegnerabwehr",
|
||||||
"DS4.OpponentDefenseAbbr": "GA",
|
"DS4.OpponentDefenseAbbr": "GA",
|
||||||
"DS4.SortByOpponentDefense": "Nach Gegnerabwehr sortieren",
|
"DS4.SortByOpponentDefense": "Nach Gegnerabwehr sortieren",
|
||||||
"DS4.OpponentDefenseMelee": "Gegnerabwehr für Schlagen",
|
|
||||||
"DS4.OpponentDefenseRanged": "Gegnerabwehr für Schießen",
|
|
||||||
"DS4.AttackTypeMelee": "Schlagen",
|
"DS4.AttackTypeMelee": "Schlagen",
|
||||||
"DS4.AttackTypeRanged": "Schießen",
|
"DS4.AttackTypeRanged": "Schießen",
|
||||||
"DS4.AttackTypeMeleeRanged": "Schlagen + Schießen",
|
"DS4.AttackTypeMeleeRanged": "Schlagen + Schießen",
|
||||||
|
@ -76,9 +74,7 @@
|
||||||
"DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit",
|
"DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit",
|
||||||
"DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten",
|
"DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten",
|
||||||
"DS4.ItemWeaponCheckFlavor": "{actor} greift mit {weapon} an.",
|
"DS4.ItemWeaponCheckFlavor": "{actor} greift mit {weapon} an.",
|
||||||
"DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} greift mit {weapon} an.<br>Gegnerabwehr: {opponentDefense}",
|
|
||||||
"DS4.ItemSpellCheckFlavor": "{actor} wirkt {spell}.",
|
"DS4.ItemSpellCheckFlavor": "{actor} wirkt {spell}.",
|
||||||
"DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} wirkt {spell}.<br>Gegnerabwehr: {opponentDefense}",
|
|
||||||
"DS4.ItemPropertiesArmor": "Panzerungseigenschaften",
|
"DS4.ItemPropertiesArmor": "Panzerungseigenschaften",
|
||||||
"DS4.ItemPropertiesEquipable": "Ausrüstungseigenschaften",
|
"DS4.ItemPropertiesEquipable": "Ausrüstungseigenschaften",
|
||||||
"DS4.ItemPropertiesPhysical": "Physische Eigenschaften",
|
"DS4.ItemPropertiesPhysical": "Physische Eigenschaften",
|
||||||
|
@ -122,31 +118,20 @@
|
||||||
"DS4.SortBySpellType": "Nach Zauberspruchtyp sortieren",
|
"DS4.SortBySpellType": "Nach Zauberspruchtyp sortieren",
|
||||||
"DS4.SpellTypeSpellcasting": "Zaubern",
|
"DS4.SpellTypeSpellcasting": "Zaubern",
|
||||||
"DS4.SpellTypeTargetedSpellcasting": "Zielzaubern",
|
"DS4.SpellTypeTargetedSpellcasting": "Zielzaubern",
|
||||||
"DS4.SpellGroups": "Zaubergruppen",
|
"DS4.SpellCategory": "Kategorie",
|
||||||
"DS4.SpellGroupsDescription": "Zaubergruppen, denen der Zauberspruch zugehörig ist.",
|
"DS4.SpellCategoryDescription": "Eine Kategorie, der der Zauberspruch zugehörig ist.",
|
||||||
"DS4.SpellGroupLightning": "Blitz",
|
"DS4.SpellCategoryHealing": "Heilung",
|
||||||
"DS4.SpellGroupEarth": "Erde, Fels, Stein",
|
"DS4.SpellCategoryFire": "Feuer",
|
||||||
"DS4.SpellGroupWater": "Wasser",
|
"DS4.SpellCategoryIce": "Eis",
|
||||||
"DS4.SpellGroupIce": "Eis, Frost",
|
"DS4.SpellCategoryLight": "Licht",
|
||||||
"DS4.SpellGroupFire": "Feuer",
|
"DS4.SpellCategoryDarkness": "Schatten",
|
||||||
"DS4.SpellGroupHealing": "Heilung",
|
"DS4.SpellCategoryMindAffecting": "Geistesbeeinflussend",
|
||||||
"DS4.SpellGroupLight": "Licht",
|
"DS4.SpellCategoryElectricity": "Elektrizität",
|
||||||
"DS4.SpellGroupAir": "Luft",
|
"DS4.SpellCategoryNone": "Keine",
|
||||||
"DS4.SpellGroupTransport": "Transport",
|
"DS4.SpellCategoryUnset": "Nicht gesetzt",
|
||||||
"DS4.SpellGroupDamage": "Schaden",
|
|
||||||
"DS4.SpellGroupShadow": "Schatten",
|
|
||||||
"DS4.SpellGroupProtection": "Schutz",
|
|
||||||
"DS4.SpellGroupMindAffecting": "Geistesbeeinflussend",
|
|
||||||
"DS4.SpellGroupDemonology": "Dämonologie",
|
|
||||||
"DS4.SpellGroupNecromancy": "Nekromantie",
|
|
||||||
"DS4.SpellGroupTransmutation": "Verwandlung",
|
|
||||||
"DS4.SpellGroupArea": "Fläche",
|
|
||||||
"DS4.SpellModifier": "Zauberbonus",
|
"DS4.SpellModifier": "Zauberbonus",
|
||||||
"DS4.SpellModifierNumerical": "Zauberbonus (numerisch)",
|
|
||||||
"DS4.SpellModifierComplex": "Zauberbonus (komplex)",
|
|
||||||
"DS4.SpellModifierAbbr": "ZB",
|
"DS4.SpellModifierAbbr": "ZB",
|
||||||
"DS4.SpellModifierNumericalDescription": "Der numerische Zauberbonus auf die Probe.",
|
"DS4.SpellModifierDescription": "Der Zauberbonus auf die Probe.",
|
||||||
"DS4.SpellModifierComplexDescription": "Ein komplexer Zauberbonus auf die Probe (zum Beispiel abhängig von Werten des Ziels). Wenn diese Art von Zauberbonus angegeben ist, wird der numerische ignoriert.",
|
|
||||||
"DS4.SortBySpellModifier": "Nach Zauberbonus sortieren",
|
"DS4.SortBySpellModifier": "Nach Zauberbonus sortieren",
|
||||||
"DS4.SpellDistance": "Distanz",
|
"DS4.SpellDistance": "Distanz",
|
||||||
"DS4.SpellDistanceDescription": "Die maximale Entfernung zum Ziel. „Selbst“ bedeutet, dass nur der Zauberwirker selbst das Ziel des Zaubers sein kann.",
|
"DS4.SpellDistanceDescription": "Die maximale Entfernung zum Ziel. „Selbst“ bedeutet, dass nur der Zauberwirker selbst das Ziel des Zaubers sein kann.",
|
||||||
|
@ -164,8 +149,6 @@
|
||||||
"DS4.CooldownDuration100R": "100 Kampfrunden",
|
"DS4.CooldownDuration100R": "100 Kampfrunden",
|
||||||
"DS4.CooldownDuration1D": "1 Tag",
|
"DS4.CooldownDuration1D": "1 Tag",
|
||||||
"DS4.CooldownDurationD20D": "W20 Tage",
|
"DS4.CooldownDurationD20D": "W20 Tage",
|
||||||
"DS4.SpellAllowsDefense": "Erlaubt Abwehr",
|
|
||||||
"DS4.SpellAllowsDefenseDescription": "Ist eine Abwehren-Probe gegen diesen Zauber erlaubt?",
|
|
||||||
"DS4.SpellMinimumLevel": "Zugangsstufe",
|
"DS4.SpellMinimumLevel": "Zugangsstufe",
|
||||||
"DS4.SpellMinimumLevelDescription": "Die minimale Stufe, ab der ein Zauberwirker den Zauberspruch erlernen kann.",
|
"DS4.SpellMinimumLevelDescription": "Die minimale Stufe, ab der ein Zauberwirker den Zauberspruch erlernen kann.",
|
||||||
"DS4.SpellCasterClassHealer": "Heiler",
|
"DS4.SpellCasterClassHealer": "Heiler",
|
||||||
|
@ -173,11 +156,11 @@
|
||||||
"DS4.SpellCasterClassWizard": "Zauberer",
|
"DS4.SpellCasterClassWizard": "Zauberer",
|
||||||
"DS4.SpellPrice": "Preis (Gold)",
|
"DS4.SpellPrice": "Preis (Gold)",
|
||||||
"DS4.SpellPriceDescription": "Der Kaufpreis des Zauberspruchs.",
|
"DS4.SpellPriceDescription": "Der Kaufpreis des Zauberspruchs.",
|
||||||
"DS4.EffectEnabled": "Eingeschaltet",
|
"DS4.EffectEnabled": "Aktiv",
|
||||||
"DS4.EffectEnabledAbbr": "E",
|
"DS4.EffectEnabledAbbr": "A",
|
||||||
"DS4.EffectActive": "Aktiv (unter Betrachtung, ob ein eventuelles Quellen-Item ausgerüstet ist usw.)",
|
"DS4.EffectEffectivelyEnabled": "Effektiv Aktiv (unter Betrachtung, ob ein eventuelles Quellen-Item ausgerüstet ist usw.)",
|
||||||
"DS4.EffectActiveAbbr": "A",
|
"DS4.EffectEffectivelyEnabledAbbr": "E",
|
||||||
"DS4.EffectName": "Name",
|
"DS4.EffectLabel": "Bezeichnung",
|
||||||
"DS4.EffectSourceName": "Quelle",
|
"DS4.EffectSourceName": "Quelle",
|
||||||
"DS4.EffectFactor": "Faktor (wie oft der Effekt angewendet wird)",
|
"DS4.EffectFactor": "Faktor (wie oft der Effekt angewendet wird)",
|
||||||
"DS4.EffectFactorAbbr": "F",
|
"DS4.EffectFactorAbbr": "F",
|
||||||
|
@ -226,12 +209,35 @@
|
||||||
"DS4.CharacterProgressionProgressPoints": "Lernpunkte",
|
"DS4.CharacterProgressionProgressPoints": "Lernpunkte",
|
||||||
"DS4.CharacterSlayerPoints": "Slayerpunkte",
|
"DS4.CharacterSlayerPoints": "Slayerpunkte",
|
||||||
"DS4.CharacterSlayerPointsAbbr": "SP",
|
"DS4.CharacterSlayerPointsAbbr": "SP",
|
||||||
|
"DS4.ClassNone": "Keine",
|
||||||
|
"DS4.ClassFighter": "Krieger",
|
||||||
|
"DS4.ClassScout": "Späher",
|
||||||
|
"DS4.ClassHealer": "Heiler",
|
||||||
|
"DS4.ClassWizard": "Zauberer",
|
||||||
|
"DS4.ClassSorcerer": "Schwarzmagier",
|
||||||
|
"DS4.HeroClassNone": "Keine",
|
||||||
|
"DS4.HeroClassBerserker": "Berserker",
|
||||||
|
"DS4.HeroClassWeaponMaster": "Waffenmeister",
|
||||||
|
"DS4.HeroClassPaladin": "Paladin",
|
||||||
|
"DS4.HeroClassAssassin": "Attentäter",
|
||||||
|
"DS4.HeroClassRanger": "Waldläufer",
|
||||||
|
"DS4.HeroClassRogue": "Meisterdieb",
|
||||||
|
"DS4.HeroClassCleric": "Kleriker",
|
||||||
|
"DS4.HeroClassDruid": "Druide",
|
||||||
|
"DS4.HeroClassMonk": "Kampfmönch",
|
||||||
|
"DS4.HeroClassArchmage": "Erzmagier",
|
||||||
|
"DS4.HeroClassElementalist": "Elementarist",
|
||||||
|
"DS4.HeroClassBattleMage": "Kriegszauberer",
|
||||||
|
"DS4.HeroClassBloodMage": "Blutmagier",
|
||||||
|
"DS4.HeroClassDemonologist": "Dämonologe",
|
||||||
|
"DS4.HeroClassNecromancer": "Nekromant",
|
||||||
"DS4.TalentRank": "Rang",
|
"DS4.TalentRank": "Rang",
|
||||||
"DS4.SortByTalentRank": "Nach Rang sortieren",
|
"DS4.SortByTalentRank": "Nach Rang sortieren",
|
||||||
"DS4.TalentRankBase": "Erworben",
|
"DS4.TalentRankBase": "Erworben",
|
||||||
"DS4.TalentRankMax": "Maximum",
|
"DS4.TalentRankMax": "Maximum",
|
||||||
"DS4.TalentRankMod": "Zusätzlich",
|
"DS4.TalentRankMod": "Zusätzlich",
|
||||||
"DS4.TalentRankTotal": "Gesamt",
|
"DS4.TalentRankTotal": "Gesamt",
|
||||||
|
"DS4.TalentRankOf": "von",
|
||||||
"DS4.CharacterLanguageLanguages": "Sprachen",
|
"DS4.CharacterLanguageLanguages": "Sprachen",
|
||||||
"DS4.CharacterLanguageAlphabets": "Schriftzeichen",
|
"DS4.CharacterLanguageAlphabets": "Schriftzeichen",
|
||||||
"DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte",
|
"DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte",
|
||||||
|
@ -267,6 +273,7 @@
|
||||||
"DS4.CreatureBaseInfoSizeCategory": "Größenkategorie",
|
"DS4.CreatureBaseInfoSizeCategory": "Größenkategorie",
|
||||||
"DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte",
|
"DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte",
|
||||||
"DS4.CreatureBaseInfoDescription": "Beschreibung",
|
"DS4.CreatureBaseInfoDescription": "Beschreibung",
|
||||||
|
"DS4.WarningManageActiveEffectOnOwnedItem": "Das Verwalten von aktiven Effekten innerhalb eines besessen Items wird derzeit nicht unterstützt und wird in einem nachfolgenden Update hinzugefügt. Falls Sie eigentlich den auf den Aktor übertragenen Effekt verwalten wollen, können Sie dies im 'Effekte'-Tab des Aktorbogens tun.",
|
||||||
"DS4.WarningActorCannotOwnItem": "Der Aktor '{actorName}' vom Typ '{actorType}' kann das Item '{itemName}' vom Typ '{itemType}' nicht besitzen.",
|
"DS4.WarningActorCannotOwnItem": "Der Aktor '{actorName}' vom Typ '{actorType}' kann das Item '{itemName}' vom Typ '{itemType}' nicht besitzen.",
|
||||||
"DS4.ErrorDiceCoupFumbleOverlap": "Es gibt eine Überlappung zwischen Patzern und Immersiegen.",
|
"DS4.ErrorDiceCoupFumbleOverlap": "Es gibt eine Überlappung zwischen Patzern und Immersiegen.",
|
||||||
"DS4.ErrorSlayingDiceRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.",
|
"DS4.ErrorSlayingDiceRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.",
|
||||||
|
@ -289,10 +296,9 @@
|
||||||
"DS4.WarningItemIsNotRollable": "Für das Item '{name}' ({id}) vom Typ '{type}' kann nicht gewürfelt werden.",
|
"DS4.WarningItemIsNotRollable": "Für das Item '{name}' ({id}) vom Typ '{type}' kann nicht gewürfelt werden.",
|
||||||
"DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Makros können nur für besessene Items angelegt werden.",
|
"DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Makros können nur für besessene Items angelegt werden.",
|
||||||
"DS4.WarningInvalidCheckDropped": "Eine ungültige Probe wurde auf die Hotbar gezogen.",
|
"DS4.WarningInvalidCheckDropped": "Eine ungültige Probe wurde auf die Hotbar gezogen.",
|
||||||
"DS4.WarningSystemUpdateCompletedWithErrors": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} abgeschlossen, aber es sind Fehler aufgetreten. Bitte prüfen Sie in der Entwicklerkonsole, ob es sich um relevante Fehler handelt, oder ob sie ignoriert werden können. Insbesondere kann https://github.com/foundryvtt/foundryvtt/issues/9672 zu Fehlern führen, die ignoriert werden können.",
|
|
||||||
"DS4.InfoManuallyEnterSpellModifier": "Der korrekte Wert für den Zauberbonus '{spellModifier}' des Zaubers '{name}' muss manuell angegeben werden.",
|
"DS4.InfoManuallyEnterSpellModifier": "Der korrekte Wert für den Zauberbonus '{spellModifier}' des Zaubers '{name}' muss manuell angegeben werden.",
|
||||||
"DS4.InfoSystemUpdateStart": "Aktualisiere DS4 System von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.",
|
"DS4.InfoSystemUpdateStart": "Aktualisiere DS4 System von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.",
|
||||||
"DS4.InfoSystemUpdateCompletedSuccessfully": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!",
|
"DS4.InfoSystemUpdateCompleted": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!",
|
||||||
"DS4.InfoCompendiumMigrationStart": "Aktualisiere Kompendium '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.",
|
"DS4.InfoCompendiumMigrationStart": "Aktualisiere Kompendium '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.",
|
||||||
"DS4.InfoCompendiumMigrationCompleted": "Aktualisierung des Kompendiums '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!",
|
"DS4.InfoCompendiumMigrationCompleted": "Aktualisierung des Kompendiums '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!",
|
||||||
"DS4.UnitRounds": "Runden",
|
"DS4.UnitRounds": "Runden",
|
||||||
|
@ -314,24 +320,15 @@
|
||||||
"DS4.DialogRollOptionsDefaultTitle": "Proben-Optionen",
|
"DS4.DialogRollOptionsDefaultTitle": "Proben-Optionen",
|
||||||
"DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde '{exType}', tatsächlich erhalten wurde '{realType}'.",
|
"DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde '{exType}', tatsächlich erhalten wurde '{realType}'.",
|
||||||
"DS4.ErrorCouldNotFindForm": "Konnte HTML Element '{htmlElement}' nicht finden.",
|
"DS4.ErrorCouldNotFindForm": "Konnte HTML Element '{htmlElement}' nicht finden.",
|
||||||
"DS4.ErrorActorDoesNotHaveItem": "Der Aktor '{actor}' hat kein Item mit der UUID '{uuid}'.",
|
"DS4.ErrorActorDoesNotHaveItem": "Der Aktor '{actor}' hat kein Item mit der ID '{id}'.",
|
||||||
"DS4.ErrorUnexpectedError": "Es gab einen unerwarteten Fehler im Dungeonslayers 4 System. Für mehr Details schauen Sie bitte in die Konsole (F12).",
|
"DS4.ErrorUnexpectedError": "Es gab einen unerwarteten Fehler im Dungeonslayers 4 System. Für mehr Details schauen Sie bitte in die Konsole (F12).",
|
||||||
"DS4.ErrorItemDoesNotHaveEffect": "Das Item '{item}' hat keinen Effekt mit der ID '{id}'.",
|
"DS4.ErrorItemDoesNotHaveEffect": "Das Item '{item}' hat keinen Effekt mit der ID '{id}'.",
|
||||||
"DS4.ErrorActorDoesNotHaveEffect": "Der Aktor '{actor}' hat keinen Effekt mit der UUID '{uuid}'.",
|
"DS4.ErrorActorDoesNotHaveEffect": "Der Aktor '{actor}' hat keinen Effekt mit der ID '{id}'.",
|
||||||
"DS4.DialogRollOptionsCheckTargetNumberLabel": "Probenwert",
|
"DS4.DialogRollOptionsCheckTargetNumberLabel": "Probenwert",
|
||||||
"DS4.DialogRollOptionsCheckModifierLabel": "Modifikator",
|
"DS4.DialogRollOptionsGMModifierLabel": "SL-Modifikator",
|
||||||
"DS4.DialogRollOptionsCheckModifierCustomLabel": "Individueller Modifikator",
|
|
||||||
"DS4.DialogRollOptionsMaximumCoupResultLabel": "Immersieg bis",
|
"DS4.DialogRollOptionsMaximumCoupResultLabel": "Immersieg bis",
|
||||||
"DS4.DialogRollOptionsMinimumFumbleResultLabel": "Patzer ab",
|
"DS4.DialogRollOptionsMinimumFumbleResultLabel": "Patzer ab",
|
||||||
"DS4.DialogRollOptionsRollModeLabel": "Sichtbarkeit",
|
"DS4.DialogRollOptionsRollModeLabel": "Sichtbarkeit",
|
||||||
"DS4.CheckModifierRoutine": "Routine",
|
|
||||||
"DS4.CheckModifierVeryEasy": "Sehr Leicht",
|
|
||||||
"DS4.CheckModifierEasy": "Leicht",
|
|
||||||
"DS4.CheckModifierMormal": "Normal",
|
|
||||||
"DS4.CheckModifierDifficult": "Schwer",
|
|
||||||
"DS4.CheckModifierVeryDifficult": "Sehr Schwer",
|
|
||||||
"DS4.CheckModifierExtremelyDifficult": "Äußerst Schwer",
|
|
||||||
"DS4.CheckModifierCustom": "Individuell",
|
|
||||||
"DS4.TooltipBaseValue": "Basiswert",
|
"DS4.TooltipBaseValue": "Basiswert",
|
||||||
"DS4.TooltipModifier": "Modifikator",
|
"DS4.TooltipModifier": "Modifikator",
|
||||||
"DS4.TooltipEffects": "Effekte",
|
"DS4.TooltipEffects": "Effekte",
|
||||||
|
@ -339,6 +336,9 @@
|
||||||
"DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Benutze Slayende Würfel bei automatisierten Proben.",
|
"DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Benutze Slayende Würfel bei automatisierten Proben.",
|
||||||
"DS4.SettingShowSlayerPointsName": "Slayerpunkte",
|
"DS4.SettingShowSlayerPointsName": "Slayerpunkte",
|
||||||
"DS4.SettingShowSlayerPointsHint": "Zeige Slayerpunkte im Charakterbogen an.",
|
"DS4.SettingShowSlayerPointsHint": "Zeige Slayerpunkte im Charakterbogen an.",
|
||||||
|
"DS4.MenuClassesName": "Klassenkonfiguration",
|
||||||
|
"DS4.MenuClassesHint": "Konfiguriere welche Klassen und Heldenklassen verwendet werden können.",
|
||||||
|
"DS4.MenuClassesLabel": "Klassen Konfigurieren",
|
||||||
"DS4.Checks": "Proben",
|
"DS4.Checks": "Proben",
|
||||||
"DS4.ChecksAppraise": "Schätzen",
|
"DS4.ChecksAppraise": "Schätzen",
|
||||||
"DS4.ChecksChangeSpell": "Zauber Wechseln",
|
"DS4.ChecksChangeSpell": "Zauber Wechseln",
|
||||||
|
@ -382,10 +382,5 @@
|
||||||
"DS4.NewLanguageName": "Neue Sprache",
|
"DS4.NewLanguageName": "Neue Sprache",
|
||||||
"DS4.NewAlphabetName": "Neue Schriftzeichen",
|
"DS4.NewAlphabetName": "Neue Schriftzeichen",
|
||||||
"DS4.NewSpecialCreatureAbilityName": "Neue Besondere Kreaturenfähigkeit",
|
"DS4.NewSpecialCreatureAbilityName": "Neue Besondere Kreaturenfähigkeit",
|
||||||
"DS4.NewEffectName": "Neuer Effekt",
|
"DS4.NewEffectLabel": "Neuer Effekt"
|
||||||
|
|
||||||
"DS4.ActiveEffectApplyToItems": "Auf Items Anwenden",
|
|
||||||
"DS4.ActiveEffectItemName": "Itemname",
|
|
||||||
"DS4.ActiveEffectItemCondition": "Bedingung",
|
|
||||||
"DS4.TooltipNotEditableDueToEffects": "Feld nicht bearbeitbar, weil von Aktiven Effekten beeinflusst"
|
|
||||||
}
|
}
|
||||||
|
|
101
lang/en.json
101
lang/en.json
|
@ -28,8 +28,6 @@
|
||||||
"DS4.OpponentDefense": "Opponent Defense",
|
"DS4.OpponentDefense": "Opponent Defense",
|
||||||
"DS4.OpponentDefenseAbbr": "OD",
|
"DS4.OpponentDefenseAbbr": "OD",
|
||||||
"DS4.SortByOpponentDefense": "Sort by Opponent Defense",
|
"DS4.SortByOpponentDefense": "Sort by Opponent Defense",
|
||||||
"DS4.OpponentDefenseMelee": "Opponent Defense for melee attacks",
|
|
||||||
"DS4.OpponentDefenseRanged": "Opponent Defense for ranged attacks",
|
|
||||||
"DS4.AttackTypeMelee": "Melee",
|
"DS4.AttackTypeMelee": "Melee",
|
||||||
"DS4.AttackTypeRanged": "Ranged",
|
"DS4.AttackTypeRanged": "Ranged",
|
||||||
"DS4.AttackTypeMeleeRanged": "Melee / Ranged",
|
"DS4.AttackTypeMeleeRanged": "Melee / Ranged",
|
||||||
|
@ -76,9 +74,7 @@
|
||||||
"DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability",
|
"DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability",
|
||||||
"DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities",
|
"DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities",
|
||||||
"DS4.ItemWeaponCheckFlavor": "{actor} attacks with {weapon}.",
|
"DS4.ItemWeaponCheckFlavor": "{actor} attacks with {weapon}.",
|
||||||
"DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} attacks with {weapon}<br>Opponent defense: {opponentDefense}",
|
|
||||||
"DS4.ItemSpellCheckFlavor": "{actor} casts {spell}.",
|
"DS4.ItemSpellCheckFlavor": "{actor} casts {spell}.",
|
||||||
"DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} casts {spell}.<br>Opponent Defense: {opponentDefense}",
|
|
||||||
"DS4.ItemPropertiesArmor": "Armor Properties",
|
"DS4.ItemPropertiesArmor": "Armor Properties",
|
||||||
"DS4.ItemPropertiesEquipable": "Equipment Properties",
|
"DS4.ItemPropertiesEquipable": "Equipment Properties",
|
||||||
"DS4.ItemPropertiesPhysical": "Physical Properties",
|
"DS4.ItemPropertiesPhysical": "Physical Properties",
|
||||||
|
@ -122,31 +118,20 @@
|
||||||
"DS4.SortBySpellType": "Sort by Spell Type",
|
"DS4.SortBySpellType": "Sort by Spell Type",
|
||||||
"DS4.SpellTypeSpellcasting": "Spellcasting",
|
"DS4.SpellTypeSpellcasting": "Spellcasting",
|
||||||
"DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting",
|
"DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting",
|
||||||
"DS4.SpellGroups": "Spell Groups",
|
"DS4.SpellCategory": "Category",
|
||||||
"DS4.SpellGroupsDescription": "Spell groups which the spell belongs to.",
|
"DS4.SpellCategoryDescription": "A category which the spell belongs to.",
|
||||||
"DS4.SpellGroupLightning": "Lightning",
|
"DS4.SpellCategoryHealing": "Healing",
|
||||||
"DS4.SpellGroupEarth": "Earth, Rock, Stone",
|
"DS4.SpellCategoryFire": "Fire",
|
||||||
"DS4.SpellGroupWater": "Water",
|
"DS4.SpellCategoryIce": "Ice",
|
||||||
"DS4.SpellGroupIce": "Ice, Frost",
|
"DS4.SpellCategoryLight": "Light",
|
||||||
"DS4.SpellGroupFire": "Fire",
|
"DS4.SpellCategoryDarkness": "Darkness",
|
||||||
"DS4.SpellGroupHealing": "Healing",
|
"DS4.SpellCategoryMindAffecting": "Mind Affecting",
|
||||||
"DS4.SpellGroupLight": "Light",
|
"DS4.SpellCategoryElectricity": "Electricity",
|
||||||
"DS4.SpellGroupAir": "Air",
|
"DS4.SpellCategoryNone": "None",
|
||||||
"DS4.SpellGroupTransport": "Transport",
|
"DS4.SpellCategoryUnset": "Unset",
|
||||||
"DS4.SpellGroupDamage": "Damage",
|
|
||||||
"DS4.SpellGroupShadow": "Shadow",
|
|
||||||
"DS4.SpellGroupProtection": "Protection",
|
|
||||||
"DS4.SpellGroupMindAffecting": "Mind Affecting",
|
|
||||||
"DS4.SpellGroupDemonology": "Demonologie",
|
|
||||||
"DS4.SpellGroupNecromancy": "Necromancy",
|
|
||||||
"DS4.SpellGroupTransmutation": "Transmutation",
|
|
||||||
"DS4.SpellGroupArea": "Area",
|
|
||||||
"DS4.SpellModifier": "Spell Modifier",
|
"DS4.SpellModifier": "Spell Modifier",
|
||||||
"DS4.SpellModifierNumerical": "Spell Modifier (numerical)",
|
|
||||||
"DS4.SpellModifierComplex": "Spell Modifier (complex)",
|
|
||||||
"DS4.SpellModifierAbbr": "SM",
|
"DS4.SpellModifierAbbr": "SM",
|
||||||
"DS4.SpellModifierNumericalDescription": "The numerical spell modifier for the corresponding check.",
|
"DS4.SpellModifierDescription": "The spell modifier for the corresponding check.",
|
||||||
"DS4.SpellModifierComplexDescription": "A complex spell modifier for the corresponding check (for example, dependent on the target’s values). If given, the numerical spell bonus is ignored.",
|
|
||||||
"DS4.SortBySpellModifier": "Sort by Spell Modifier",
|
"DS4.SortBySpellModifier": "Sort by Spell Modifier",
|
||||||
"DS4.SpellDistance": "Distance",
|
"DS4.SpellDistance": "Distance",
|
||||||
"DS4.SpellDistanceDescription": "The maximum distance to the target, “Self” meaning that only the caster can be the target of this spell.",
|
"DS4.SpellDistanceDescription": "The maximum distance to the target, “Self” meaning that only the caster can be the target of this spell.",
|
||||||
|
@ -164,8 +149,6 @@
|
||||||
"DS4.CooldownDuration100R": "100 Rounds",
|
"DS4.CooldownDuration100R": "100 Rounds",
|
||||||
"DS4.CooldownDuration1D": "1 Day",
|
"DS4.CooldownDuration1D": "1 Day",
|
||||||
"DS4.CooldownDurationD20D": "D20 Days",
|
"DS4.CooldownDurationD20D": "D20 Days",
|
||||||
"DS4.SpellAllowsDefense": "Allows Defense",
|
|
||||||
"DS4.SpellAllowsDefenseDescription": "Is it alowed to perform a defense check against this spell?",
|
|
||||||
"DS4.SpellMinimumLevel": "Minimum Level",
|
"DS4.SpellMinimumLevel": "Minimum Level",
|
||||||
"DS4.SpellMinimumLevelDescription": "The minimum level at which a spell caster may learn the spell.",
|
"DS4.SpellMinimumLevelDescription": "The minimum level at which a spell caster may learn the spell.",
|
||||||
"DS4.SpellCasterClassHealer": "Healer",
|
"DS4.SpellCasterClassHealer": "Healer",
|
||||||
|
@ -175,9 +158,9 @@
|
||||||
"DS4.SpellPriceDescription": "The price to purchase the spell.",
|
"DS4.SpellPriceDescription": "The price to purchase the spell.",
|
||||||
"DS4.EffectEnabled": "Enabled",
|
"DS4.EffectEnabled": "Enabled",
|
||||||
"DS4.EffectEnabledAbbr": "E",
|
"DS4.EffectEnabledAbbr": "E",
|
||||||
"DS4.EffectActive": "Active (taking into account whether a potential source item is equipped etc.)",
|
"DS4.EffectEffectivelyEnabled": "Effectively Enabled (taking into account whether a potential source item is equipped etc.)",
|
||||||
"DS4.EffectActiveAbbr": "A",
|
"DS4.EffectEffectivelyEnabledAbbr": "EE",
|
||||||
"DS4.EffectName": "Name",
|
"DS4.EffectLabel": "Label",
|
||||||
"DS4.EffectSourceName": "Source",
|
"DS4.EffectSourceName": "Source",
|
||||||
"DS4.EffectFactor": "Factor (the number of times the effect is being applied)",
|
"DS4.EffectFactor": "Factor (the number of times the effect is being applied)",
|
||||||
"DS4.EffectFactorAbbr": "F",
|
"DS4.EffectFactorAbbr": "F",
|
||||||
|
@ -226,12 +209,35 @@
|
||||||
"DS4.CharacterProgressionProgressPoints": "Progress Points",
|
"DS4.CharacterProgressionProgressPoints": "Progress Points",
|
||||||
"DS4.CharacterSlayerPoints": "Slayer Points",
|
"DS4.CharacterSlayerPoints": "Slayer Points",
|
||||||
"DS4.CharacterSlayerPointsAbbr": "SP",
|
"DS4.CharacterSlayerPointsAbbr": "SP",
|
||||||
|
"DS4.ClassNone": "None",
|
||||||
|
"DS4.ClassFighter": "Fighter",
|
||||||
|
"DS4.ClassScout": "Scout",
|
||||||
|
"DS4.ClassHealer": "Healer",
|
||||||
|
"DS4.ClassWizard": "Wizard",
|
||||||
|
"DS4.ClassSorcerer": "Sorcerer",
|
||||||
|
"DS4.HeroClassNone": "None",
|
||||||
|
"DS4.HeroClassBerserker": "Berserker",
|
||||||
|
"DS4.HeroClassWeaponMaster": "Weapon Master",
|
||||||
|
"DS4.HeroClassPaladin": "Paladin",
|
||||||
|
"DS4.HeroClassAssassin": "Assasin",
|
||||||
|
"DS4.HeroClassRanger": "Ranger",
|
||||||
|
"DS4.HeroClassRogue": "Rogue",
|
||||||
|
"DS4.HeroClassCleric": "Cleric",
|
||||||
|
"DS4.HeroClassDruid": "Druid",
|
||||||
|
"DS4.HeroClassMonk": "Monk",
|
||||||
|
"DS4.HeroClassArchmage": "Archmage",
|
||||||
|
"DS4.HeroClassElementalist": "Elementalist",
|
||||||
|
"DS4.HeroClassBattleMage": "Battle Mage",
|
||||||
|
"DS4.HeroClassBloodMage": "Blood Mage",
|
||||||
|
"DS4.HeroClassDemonologist": "Demonologist",
|
||||||
|
"DS4.HeroClassNecromancer": "Necromancer",
|
||||||
"DS4.TalentRank": "Rank",
|
"DS4.TalentRank": "Rank",
|
||||||
"DS4.SortByTalentRank": "Sort by Rank",
|
"DS4.SortByTalentRank": "Sort by Rank",
|
||||||
"DS4.TalentRankBase": "Acquired",
|
"DS4.TalentRankBase": "Acquired",
|
||||||
"DS4.TalentRankMax": "Maximum",
|
"DS4.TalentRankMax": "Maximum",
|
||||||
"DS4.TalentRankMod": "Additional",
|
"DS4.TalentRankMod": "Additional",
|
||||||
"DS4.TalentRankTotal": "Total",
|
"DS4.TalentRankTotal": "Total",
|
||||||
|
"DS4.TalentRankOf": "of",
|
||||||
"DS4.CharacterLanguageLanguages": "Languages",
|
"DS4.CharacterLanguageLanguages": "Languages",
|
||||||
"DS4.CharacterLanguageAlphabets": "Alphabets",
|
"DS4.CharacterLanguageAlphabets": "Alphabets",
|
||||||
"DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points",
|
"DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points",
|
||||||
|
@ -267,6 +273,7 @@
|
||||||
"DS4.CreatureBaseInfoSizeCategory": "Size Category",
|
"DS4.CreatureBaseInfoSizeCategory": "Size Category",
|
||||||
"DS4.CreatureBaseInfoExperiencePoints": "Experience Points",
|
"DS4.CreatureBaseInfoExperiencePoints": "Experience Points",
|
||||||
"DS4.CreatureBaseInfoDescription": "Description",
|
"DS4.CreatureBaseInfoDescription": "Description",
|
||||||
|
"DS4.WarningManageActiveEffectOnOwnedItem": "Managing Active Effects within an Owned Item is not currently supported and will be added in a subsequent update. If you actually want to manage the effect that has been transferred to the actor, you can do so in the 'Effects' tab in the actor sheet.",
|
||||||
"DS4.WarningActorCannotOwnItem": "The actor '{actorName}' of type '{actorType}' cannot own the item '{itemName}' of type '{itemType}'.",
|
"DS4.WarningActorCannotOwnItem": "The actor '{actorName}' of type '{actorType}' cannot own the item '{itemName}' of type '{itemType}'.",
|
||||||
"DS4.ErrorDiceCoupFumbleOverlap": "There is an overlap between Fumbles and Coups.",
|
"DS4.ErrorDiceCoupFumbleOverlap": "There is an overlap between Fumbles and Coups.",
|
||||||
"DS4.ErrorSlayingDiceRecursionLimitExceeded": "Maximum recursion depth for slaying dice roll exceeded.",
|
"DS4.ErrorSlayingDiceRecursionLimitExceeded": "Maximum recursion depth for slaying dice roll exceeded.",
|
||||||
|
@ -289,10 +296,9 @@
|
||||||
"DS4.WarningItemIsNotRollable": "Item '{name}' ({id}) of type '{type}' is not rollable.",
|
"DS4.WarningItemIsNotRollable": "Item '{name}' ({id}) of type '{type}' is not rollable.",
|
||||||
"DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Macros can only be created for owned items.",
|
"DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Macros can only be created for owned items.",
|
||||||
"DS4.WarningInvalidCheckDropped": "An invalid check was dropped on the Hotbar.",
|
"DS4.WarningInvalidCheckDropped": "An invalid check was dropped on the Hotbar.",
|
||||||
"DS4.WarningSystemUpdateCompletedWithErrors": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} completed with errors. Please check the development console (F12) to see whether the errors have significant impact or can be ignored. In particular, https://github.com/foundryvtt/foundryvtt/issues/9672 may cause issues that simply can be ignored.",
|
|
||||||
"DS4.InfoManuallyEnterSpellModifier": "The correct value of the spell modifier '{spellModifier}' of the spell '{name}' needs to be entered by manually.",
|
"DS4.InfoManuallyEnterSpellModifier": "The correct value of the spell modifier '{spellModifier}' of the spell '{name}' needs to be entered by manually.",
|
||||||
"DS4.InfoSystemUpdateStart": "Migrating DS4 system from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.",
|
"DS4.InfoSystemUpdateStart": "Migrating DS4 system from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.",
|
||||||
"DS4.InfoSystemUpdateCompletedSuccessfully": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} successful!",
|
"DS4.InfoSystemUpdateCompleted": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} successful!",
|
||||||
"DS4.InfoCompendiumMigrationStart": "Migrating compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.",
|
"DS4.InfoCompendiumMigrationStart": "Migrating compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.",
|
||||||
"DS4.InfoCompendiumMigrationCompleted": "Migration of compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion} successful!",
|
"DS4.InfoCompendiumMigrationCompleted": "Migration of compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion} successful!",
|
||||||
"DS4.UnitRounds": "Rounds",
|
"DS4.UnitRounds": "Rounds",
|
||||||
|
@ -314,24 +320,15 @@
|
||||||
"DS4.DialogRollOptionsDefaultTitle": "Roll Options",
|
"DS4.DialogRollOptionsDefaultTitle": "Roll Options",
|
||||||
"DS4.ErrorUnexpectedHtmlType": "Type Error: Expected '{exType}' but got '{realType}'.",
|
"DS4.ErrorUnexpectedHtmlType": "Type Error: Expected '{exType}' but got '{realType}'.",
|
||||||
"DS4.ErrorCouldNotFindForm": "Could not find HTML element '{htmlElement}'.",
|
"DS4.ErrorCouldNotFindForm": "Could not find HTML element '{htmlElement}'.",
|
||||||
"DS4.ErrorActorDoesNotHaveItem": "The actor '{actor}' does not have any item with the UUID '{uuid}'.",
|
"DS4.ErrorActorDoesNotHaveItem": "The actor '{actor}' does not have any item with the id '{id}'.",
|
||||||
"DS4.ErrorUnexpectedError": "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12).",
|
"DS4.ErrorUnexpectedError": "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12).",
|
||||||
"DS4.ErrorItemDoesNotHaveEffect": "The item '{item}' does not have any effect with the ID '{id}'.",
|
"DS4.ErrorItemDoesNotHaveEffect": "The item '{item}' does not have any effect with the id '{id}'.",
|
||||||
"DS4.ErrorActorDoesNotHaveEffect": "The actor '{actor}' does not have any effect with the UUID '{uuid}'.",
|
"DS4.ErrorActorDoesNotHaveEffect": "The actor '{actor}' does not have any effect with the id '{id}'.",
|
||||||
"DS4.DialogRollOptionsCheckTargetNumberLabel": "Check Target Number",
|
"DS4.DialogRollOptionsCheckTargetNumberLabel": "Check Target Number",
|
||||||
"DS4.DialogRollOptionsCheckModifierLabel": "Modifier",
|
"DS4.DialogRollOptionsGMModifierLabel": "Game Master Modifier",
|
||||||
"DS4.DialogRollOptionsCheckModifierCustomLabel": "Custom Modifier",
|
|
||||||
"DS4.DialogRollOptionsMaximumCoupResultLabel": "Coup to",
|
"DS4.DialogRollOptionsMaximumCoupResultLabel": "Coup to",
|
||||||
"DS4.DialogRollOptionsMinimumFumbleResultLabel": "Fumble from",
|
"DS4.DialogRollOptionsMinimumFumbleResultLabel": "Fumble from",
|
||||||
"DS4.DialogRollOptionsRollModeLabel": "Visibility",
|
"DS4.DialogRollOptionsRollModeLabel": "Visibility",
|
||||||
"DS4.CheckModifierRoutine": "Routine",
|
|
||||||
"DS4.CheckModifierVeryEasy": "Very Easy",
|
|
||||||
"DS4.CheckModifierEasy": "Easy",
|
|
||||||
"DS4.CheckModifierMormal": "Normal",
|
|
||||||
"DS4.CheckModifierDifficult": "Difficult",
|
|
||||||
"DS4.CheckModifierVeryDifficult": "Very Difficult",
|
|
||||||
"DS4.CheckModifierExtremelyDifficult": "Extremely Difficult",
|
|
||||||
"DS4.CheckModifierCustom": "Custom",
|
|
||||||
"DS4.TooltipBaseValue": "Base Value",
|
"DS4.TooltipBaseValue": "Base Value",
|
||||||
"DS4.TooltipModifier": "Modifier",
|
"DS4.TooltipModifier": "Modifier",
|
||||||
"DS4.TooltipEffects": "Effects",
|
"DS4.TooltipEffects": "Effects",
|
||||||
|
@ -339,6 +336,9 @@
|
||||||
"DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Use Slaying Dice for automated checks.",
|
"DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Use Slaying Dice for automated checks.",
|
||||||
"DS4.SettingShowSlayerPointsName": "Slayer Points",
|
"DS4.SettingShowSlayerPointsName": "Slayer Points",
|
||||||
"DS4.SettingShowSlayerPointsHint": "Show Slayer Points in the character sheet.",
|
"DS4.SettingShowSlayerPointsHint": "Show Slayer Points in the character sheet.",
|
||||||
|
"DS4.MenuClassesName": "Class Configuration",
|
||||||
|
"DS4.MenuClassesHint": "Configure which classes and hero classes can be used.",
|
||||||
|
"DS4.MenuClassesLabel": "Configure Classes",
|
||||||
"DS4.Checks": "Checks",
|
"DS4.Checks": "Checks",
|
||||||
"DS4.ChecksAppraise": "Appraise",
|
"DS4.ChecksAppraise": "Appraise",
|
||||||
"DS4.ChecksChangeSpell": "Change Spell",
|
"DS4.ChecksChangeSpell": "Change Spell",
|
||||||
|
@ -382,10 +382,5 @@
|
||||||
"DS4.NewLanguageName": "New Language",
|
"DS4.NewLanguageName": "New Language",
|
||||||
"DS4.NewAlphabetName": "New Alphabet",
|
"DS4.NewAlphabetName": "New Alphabet",
|
||||||
"DS4.NewSpecialCreatureAbilityName": "New Special Creature Ability",
|
"DS4.NewSpecialCreatureAbilityName": "New Special Creature Ability",
|
||||||
"DS4.NewEffectName": "New Effect",
|
"DS4.NewEffectLabel": "New Effect"
|
||||||
|
|
||||||
"DS4.ActiveEffectApplyToItems": "Apply to Items",
|
|
||||||
"DS4.ActiveEffectItemName": "Item Name",
|
|
||||||
"DS4.ActiveEffectItemCondition": "Condition",
|
|
||||||
"DS4.TooltipNotEditableDueToEffects": "field not editable, because affected by Active Effects"
|
|
||||||
}
|
}
|
||||||
|
|
93
package.json
93
package.json
|
@ -2,7 +2,7 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "dungeonslayers4",
|
"name": "dungeonslayers4",
|
||||||
"description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.",
|
"description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.",
|
||||||
"version": "1.21.1",
|
"version": "1.12.6",
|
||||||
"license": "https://git.f3l.de/dungeonslayers/ds4#licensing",
|
"license": "https://git.f3l.de/dungeonslayers/ds4#licensing",
|
||||||
"homepage": "https://git.f3l.de/dungeonslayers/ds4",
|
"homepage": "https://git.f3l.de/dungeonslayers/ds4",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
"url": "https://git.f3l.de/dungeonslayers/ds4"
|
"url": "https://git.f3l.de/dungeonslayers/ds4"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://git.f3l.de/dungeonslayers/ds4/issues"
|
"url": "https://git.f3l.de/dungeonslayers/ds4/-/issues"
|
||||||
},
|
},
|
||||||
"contributors": [
|
"contributors": [
|
||||||
{
|
{
|
||||||
|
@ -39,59 +39,62 @@
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "run-s clean:files build:files",
|
"build": "run-s clean:files build:files",
|
||||||
"build:files": "run-p build:rollup build:packs",
|
"build:files": "rollup -c",
|
||||||
"build:rollup": "rollup -c",
|
|
||||||
"build:packs": "./tools/packs.sh pack",
|
|
||||||
"watch": "rollup -c -w",
|
"watch": "rollup -c -w",
|
||||||
"link-package": "node ./tools/link-package.js",
|
"link-package": "node ./tools/link-package.js",
|
||||||
"clean": "run-p clean:files clean:link",
|
"clean": "run-p clean:files clean:link",
|
||||||
"clean:files": "rimraf dist",
|
"clean:files": "rimraf dist",
|
||||||
"clean:link": "node ./tools/link-package.js --clean",
|
"clean:link": "node ./tools/link-package.js --clean",
|
||||||
"lint": "pnpm eslint",
|
"lint": "eslint --ext .ts,.js,.cjs,.mjs .",
|
||||||
"lint:fix": "pnpm eslint --fix",
|
"lint:fix": "eslint --ext .ts,.js,.cjs,.mjs --fix .",
|
||||||
"eslint": "eslint --ext .ts,.js,.cjs,.mjs .",
|
"test": "jest",
|
||||||
"format": "pnpm prettier --write",
|
"test:watch": "jest --watch",
|
||||||
"format:check": "pnpm prettier --check",
|
"test:ci": "jest --ci --reporters=default --reporters=jest-junit",
|
||||||
"prettier": "prettier './**/*.(ts|js|cjs|mjs|json|scss|yml|yaml)'",
|
"format": "prettier --write \"./**/*.(ts|js|cjs|mjs|json|scss|yml)\"",
|
||||||
"test": "run-p test:vitest test:typecheck",
|
|
||||||
"test:vitest": "vitest run",
|
|
||||||
"test:typecheck": "tsc --noEmit --project spec/tsconfig.json",
|
|
||||||
"test:watch": "vitest",
|
|
||||||
"typecheck": "tsc --noEmit",
|
"typecheck": "tsc --noEmit",
|
||||||
"typecheck:watch": "tsc --noEmit --watch",
|
|
||||||
"bump-version": "node ./tools/bump-version.js",
|
"bump-version": "node ./tools/bump-version.js",
|
||||||
|
"convert-packs-to-json": "node ./tools/convert-packs-to-json.js",
|
||||||
|
"postinstall": "husky install",
|
||||||
"changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2"
|
"changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "19.5.0",
|
"@commitlint/cli": "16.2.3",
|
||||||
"@commitlint/config-conventional": "19.5.0",
|
"@commitlint/config-conventional": "16.2.1",
|
||||||
"@foundryvtt/foundryvtt-cli": "0.0.9",
|
"@guanghechen/rollup-plugin-copy": "1.9.2",
|
||||||
"@guanghechen/rollup-plugin-copy": "6.0.2",
|
"@league-of-foundry-developers/foundry-vtt-types": "9.255.3",
|
||||||
"@ironkinoko/rollup-plugin-styles": "4.0.3",
|
"@rollup/plugin-typescript": "8.3.1",
|
||||||
"@swc/core": "1.7.39",
|
"@seald-io/nedb": "3.0.0",
|
||||||
"@types/fs-extra": "11.0.4",
|
"@types/fs-extra": "9.0.13",
|
||||||
"@types/jquery": "3.5.31",
|
"@types/jest": "27.4.1",
|
||||||
"@types/node": "18.19.3",
|
"@typescript-eslint/eslint-plugin": "5.18.0",
|
||||||
"@typescript-eslint/eslint-plugin": "7.18.0",
|
"@typescript-eslint/parser": "5.18.0",
|
||||||
"@typescript-eslint/parser": "7.18.0",
|
"conventional-changelog-cli": "2.2.2",
|
||||||
"conventional-changelog-cli": "5.0.0",
|
"conventional-changelog-conventionalcommits": "4.6.3",
|
||||||
"conventional-changelog-conventionalcommits": "8.0.0",
|
"eslint": "8.12.0",
|
||||||
"eslint": "8.57.1",
|
"eslint-config-prettier": "8.5.0",
|
||||||
"eslint-config-prettier": "9.1.0",
|
"eslint-plugin-jest": "26.1.3",
|
||||||
"fs-extra": "11.2.0",
|
"eslint-plugin-prettier": "4.0.0",
|
||||||
"handlebars": "4.7.8",
|
"fs-extra": "10.0.1",
|
||||||
|
"husky": "7.0.4",
|
||||||
|
"jest": "27.5.1",
|
||||||
|
"jest-junit": "13.1.0",
|
||||||
|
"lint-staged": "12.3.7",
|
||||||
"npm-run-all": "4.1.5",
|
"npm-run-all": "4.1.5",
|
||||||
"prettier": "3.3.3",
|
"prettier": "2.6.2",
|
||||||
"rimraf": "6.0.1",
|
"rimraf": "3.0.2",
|
||||||
"rollup": "4.24.0",
|
"rollup": "2.70.1",
|
||||||
"rollup-plugin-swc3": "0.12.1",
|
"rollup-plugin-styles": "4.0.0",
|
||||||
"sass": "1.80.3",
|
"rollup-plugin-terser": "7.0.2",
|
||||||
"semver": "7.6.3",
|
"sass": "1.49.11",
|
||||||
"tslib": "2.8.0",
|
"semver": "7.3.5",
|
||||||
"typescript": "5.5.4",
|
"ts-jest": "27.1.4",
|
||||||
"vite": "4.5.5",
|
"tslib": "2.3.1",
|
||||||
"vitest": "0.34.6",
|
"typescript": "4.6.3",
|
||||||
"yargs": "17.7.2"
|
"yargs": "17.4.0"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@9.12.2"
|
"lint-staged": {
|
||||||
|
"*.(ts|js|cjs|mjs)": "eslint --cache --fix",
|
||||||
|
"*.(json|scss|yml)": "prettier --write"
|
||||||
|
},
|
||||||
|
"packageManager": "yarn@3.2.0"
|
||||||
}
|
}
|
||||||
|
|
32355
packs/creatures.json
Normal file
32355
packs/creatures.json
Normal file
File diff suppressed because it is too large
Load diff
4
packs/creatures.json.license
Normal file
4
packs/creatures.json.license
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
SPDX-FileCopyrightText: 2021 Sascha Martens
|
||||||
|
SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||||
|
|
||||||
|
SPDX-License-Identifier: CC-BY-NC-SA-4.0
|
|
@ -1,166 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "HjpxMlpyjPr3hd3r",
|
|
||||||
"name": "Adler",
|
|
||||||
"type": "creature",
|
|
||||||
"img": "systems/ds4/assets/tokens/devin-night/eagle.png",
|
|
||||||
"items": ["9vJL3lyC4RTQCZ7e", "zYQAanmjVsNytqBl", "ysyoJA3dYTu4XXvt", "k9Ng7RdfvSRN5JVW", "zUXT2ZkY12TAu5CU"],
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"system": {
|
|
||||||
"attributes": {
|
|
||||||
"body": {
|
|
||||||
"base": 3,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mobility": {
|
|
||||||
"base": 8,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mind": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traits": {
|
|
||||||
"strength": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"constitution": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"agility": {
|
|
||||||
"base": 3,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"dexterity": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"intellect": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"aura": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"combatValues": {
|
|
||||||
"hitPoints": {
|
|
||||||
"mod": -6,
|
|
||||||
"value": 7
|
|
||||||
},
|
|
||||||
"defense": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"initiative": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"movement": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"meleeAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"rangedAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"spellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"targetedSpellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baseInfo": {
|
|
||||||
"loot": "Trophäe (BW 1A:11)",
|
|
||||||
"foeFactor": 1,
|
|
||||||
"creatureType": "animal",
|
|
||||||
"sizeCategory": "small",
|
|
||||||
"experiencePoints": 52,
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"prototypeToken": {
|
|
||||||
"flags": {},
|
|
||||||
"name": "Adler",
|
|
||||||
"displayName": 20,
|
|
||||||
"width": 1,
|
|
||||||
"height": 1,
|
|
||||||
"lockRotation": false,
|
|
||||||
"rotation": 0,
|
|
||||||
"actorLink": false,
|
|
||||||
"disposition": -1,
|
|
||||||
"displayBars": 40,
|
|
||||||
"bar1": {
|
|
||||||
"attribute": "combatValues.hitPoints"
|
|
||||||
},
|
|
||||||
"bar2": {
|
|
||||||
"attribute": null
|
|
||||||
},
|
|
||||||
"randomImg": false,
|
|
||||||
"alpha": 1,
|
|
||||||
"light": {
|
|
||||||
"alpha": 0.5,
|
|
||||||
"angle": 360,
|
|
||||||
"bright": 0,
|
|
||||||
"coloration": 1,
|
|
||||||
"dim": 0,
|
|
||||||
"luminosity": 0.5,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0,
|
|
||||||
"shadows": 0,
|
|
||||||
"animation": {
|
|
||||||
"speed": 5,
|
|
||||||
"intensity": 5,
|
|
||||||
"reverse": false,
|
|
||||||
"type": null
|
|
||||||
},
|
|
||||||
"darkness": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 1
|
|
||||||
},
|
|
||||||
"attenuation": 0.5,
|
|
||||||
"color": null
|
|
||||||
},
|
|
||||||
"texture": {
|
|
||||||
"src": "systems/ds4/assets/tokens/devin-night/eagle.png",
|
|
||||||
"scaleX": 0.7,
|
|
||||||
"scaleY": 0.7,
|
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"rotation": 0,
|
|
||||||
"tint": null
|
|
||||||
},
|
|
||||||
"sight": {
|
|
||||||
"angle": 360,
|
|
||||||
"enabled": false,
|
|
||||||
"range": 0,
|
|
||||||
"brightness": 1,
|
|
||||||
"visionMode": "basic",
|
|
||||||
"color": null,
|
|
||||||
"attenuation": 0.1,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0
|
|
||||||
},
|
|
||||||
"detectionModes": [],
|
|
||||||
"appendNumber": false,
|
|
||||||
"prependAdjective": false
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": "ds4",
|
|
||||||
"systemVersion": "1.19.4",
|
|
||||||
"coreVersion": "11.305",
|
|
||||||
"createdTime": 1668995346489,
|
|
||||||
"modifiedTime": 1688934880952,
|
|
||||||
"lastModifiedBy": "DS4BuildSystem00"
|
|
||||||
},
|
|
||||||
"_key": "!actors!HjpxMlpyjPr3hd3r"
|
|
||||||
}
|
|
|
@ -1,166 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "ttzlBKtMWz981WF3",
|
|
||||||
"name": "Alligator",
|
|
||||||
"type": "creature",
|
|
||||||
"img": "systems/ds4/assets/tokens/devin-night/alligator-green.png",
|
|
||||||
"items": ["Z4ZEuB2l0vo2dJcK", "ACGvtQk97Udg1rih", "Buv9Nzqx0hpPPsew", "ree4HN3j8tv7b18k", "8Aq23UcNNFecGbk9"],
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"system": {
|
|
||||||
"attributes": {
|
|
||||||
"body": {
|
|
||||||
"base": 12,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mobility": {
|
|
||||||
"base": 10,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mind": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traits": {
|
|
||||||
"strength": {
|
|
||||||
"base": 2,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"constitution": {
|
|
||||||
"base": 4,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"agility": {
|
|
||||||
"base": 5,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"dexterity": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"intellect": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"aura": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"combatValues": {
|
|
||||||
"hitPoints": {
|
|
||||||
"mod": 52,
|
|
||||||
"value": 78
|
|
||||||
},
|
|
||||||
"defense": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"initiative": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"movement": {
|
|
||||||
"mod": 3
|
|
||||||
},
|
|
||||||
"meleeAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"rangedAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"spellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"targetedSpellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baseInfo": {
|
|
||||||
"loot": "Trophäe (BW 1A:14)",
|
|
||||||
"foeFactor": 10,
|
|
||||||
"creatureType": "animal",
|
|
||||||
"sizeCategory": "large",
|
|
||||||
"experiencePoints": 151,
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"prototypeToken": {
|
|
||||||
"flags": {},
|
|
||||||
"name": "Alligator",
|
|
||||||
"displayName": 20,
|
|
||||||
"width": 2,
|
|
||||||
"height": 2,
|
|
||||||
"lockRotation": false,
|
|
||||||
"rotation": 0,
|
|
||||||
"actorLink": false,
|
|
||||||
"disposition": -1,
|
|
||||||
"displayBars": 40,
|
|
||||||
"bar1": {
|
|
||||||
"attribute": "combatValues.hitPoints"
|
|
||||||
},
|
|
||||||
"bar2": {
|
|
||||||
"attribute": null
|
|
||||||
},
|
|
||||||
"randomImg": true,
|
|
||||||
"alpha": 1,
|
|
||||||
"light": {
|
|
||||||
"alpha": 0.5,
|
|
||||||
"angle": 360,
|
|
||||||
"bright": 0,
|
|
||||||
"coloration": 1,
|
|
||||||
"dim": 0,
|
|
||||||
"luminosity": 0.5,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0,
|
|
||||||
"shadows": 0,
|
|
||||||
"animation": {
|
|
||||||
"speed": 5,
|
|
||||||
"intensity": 5,
|
|
||||||
"reverse": false,
|
|
||||||
"type": null
|
|
||||||
},
|
|
||||||
"darkness": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 1
|
|
||||||
},
|
|
||||||
"attenuation": 0.5,
|
|
||||||
"color": null
|
|
||||||
},
|
|
||||||
"texture": {
|
|
||||||
"src": "systems/ds4/assets/tokens/devin-night/alligator*.png",
|
|
||||||
"scaleX": 1,
|
|
||||||
"scaleY": 1,
|
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"rotation": 0,
|
|
||||||
"tint": null
|
|
||||||
},
|
|
||||||
"sight": {
|
|
||||||
"angle": 360,
|
|
||||||
"enabled": false,
|
|
||||||
"range": 0,
|
|
||||||
"brightness": 1,
|
|
||||||
"visionMode": "basic",
|
|
||||||
"color": null,
|
|
||||||
"attenuation": 0.1,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0
|
|
||||||
},
|
|
||||||
"detectionModes": [],
|
|
||||||
"appendNumber": false,
|
|
||||||
"prependAdjective": false
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": "ds4",
|
|
||||||
"systemVersion": "1.19.4",
|
|
||||||
"coreVersion": "11.305",
|
|
||||||
"createdTime": 1668995347112,
|
|
||||||
"modifiedTime": 1688934881499,
|
|
||||||
"lastModifiedBy": "DS4BuildSystem00"
|
|
||||||
},
|
|
||||||
"_key": "!actors!ttzlBKtMWz981WF3"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "U6mQ5sQwMjdLgUww",
|
|
||||||
"name": "Alterung (1 Jahr pro Schadenspunkt)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.</p>",
|
|
||||||
"experiencePoints": -1
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!6KmAeL9lVxWXIeU6.U6mQ5sQwMjdLgUww"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "U95WXWQaKfIPiJZK",
|
|
||||||
"name": "Alterung (1 Jahr pro Schadenspunkt)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.</p>",
|
|
||||||
"experiencePoints": -1
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!cE5kI3uqXWQrCaI5.U95WXWQaKfIPiJZK"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "gfZuHfJiCyZUskwn",
|
|
||||||
"name": "Alterung (1 Jahr pro Treffer)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.e9F812racwKeZPgR"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Bei einem Treffer altert das Ziel um 1 Jahr.</p>",
|
|
||||||
"experiencePoints": 1
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!T9YRYe0vnR4Qg4UM.gfZuHfJiCyZUskwn"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "wqzMhcBGP8qbClRW",
|
|
||||||
"name": "Anfällig (Erde)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!wYVw1a5UjPS09YxS.wqzMhcBGP8qbClRW"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "Kf2kAdMidDaK1SVD",
|
|
||||||
"name": "Anfällig (Feuer)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Feuerangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!P3mlpN2JrbnDtLwJ.Kf2kAdMidDaK1SVD"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "NKUKD1KfNTpKZygj",
|
|
||||||
"name": "Anfällig (Feuer)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Feuerangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!dlrDPQ3is4NkzZJB.NKUKD1KfNTpKZygj"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "X9jyAzrnyxuikyg3",
|
|
||||||
"name": "Anfällig (Feuer)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Feuerangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!WboyONCY2UZildi9.X9jyAzrnyxuikyg3"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "XBYL6p6Lh2di3cL0",
|
|
||||||
"name": "Anfällig (Licht)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 400000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.aOsmsf7jIK7hU9U8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Lichtangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!EItxqEiDUOmJdy4n.XBYL6p6Lh2di3cL0"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "23wk4FP7dNTkLgB5",
|
|
||||||
"name": "Anfällig (Luft)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!mOQ21HFNisTfu7ve.23wk4FP7dNTkLgB5"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "ur7rgX6JTOwscpm5",
|
|
||||||
"name": "Anfällig (Luft)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!GnW2ELzTtLoJmUQ1.ur7rgX6JTOwscpm5"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "MPb5ZrTIutJ291XD",
|
|
||||||
"name": "Anfällig (Wasser)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 400000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!O2maANGDJHPLX8aE.MPb5ZrTIutJ291XD"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "c95cnrJtMG20InKV",
|
|
||||||
"name": "Anfällig (Wasser)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.</p>",
|
|
||||||
"experiencePoints": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!tYcKw69Feoy3B6hG.c95cnrJtMG20InKV"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "4JCW7iKb2e9I2ZSj",
|
|
||||||
"name": "Angst (1)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 10
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!wqgUDJc7Qb28hBBo.4JCW7iKb2e9I2ZSj"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "J2eP8hBIWtgayfhH",
|
|
||||||
"name": "Angst (1)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 10
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!oVKL6zJ2kYMmBuYx.J2eP8hBIWtgayfhH"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "k4syi7gvtjmG6yVt",
|
|
||||||
"name": "Angst (1)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 10
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!SQv63FQBjA5jW5xv.k4syi7gvtjmG6yVt"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "yUtiK9PSMcNcvXfr",
|
|
||||||
"name": "Angst (1)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 400000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 10
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!P3mlpN2JrbnDtLwJ.yUtiK9PSMcNcvXfr"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "IolX9qsFGSxYN38o",
|
|
||||||
"name": "Angst (2)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 400000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 20
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!6KmAeL9lVxWXIeU6.IolX9qsFGSxYN38o"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "QkZT7930qdhuLFxw",
|
|
||||||
"name": "Angst (2)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 400000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 20
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!cE5kI3uqXWQrCaI5.QkZT7930qdhuLFxw"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "tWwaC91MGIR4k3Uy",
|
|
||||||
"name": "Angst (2)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 20
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!vsIywRHMnJM7u4ts.tWwaC91MGIR4k3Uy"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "pX6BSfPqftBLxuhf",
|
|
||||||
"name": "Angst (3)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.</p>",
|
|
||||||
"experiencePoints": 30
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!e1oy4levSO4VOQx8.pX6BSfPqftBLxuhf"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "z3o1FUNSKhEWkcpX",
|
|
||||||
"name": "Antimagie (10 Meter)",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.oUR6JglLxmJZduZz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.</p>",
|
|
||||||
"experiencePoints": 50
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!8E7Mm0LsiqFm6syY.z3o1FUNSKhEWkcpX"
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "quDuDAGeMVUvF3WD",
|
|
||||||
"name": "Arkanes Schwert",
|
|
||||||
"type": "spell",
|
|
||||||
"img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.spells.VjvrapwDmBvGYmfj"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.</p>\n<p>Innerhalb dieses Wirkungsbereiches kämpft es völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos seines Beschwöreres wie „Greif den großen Troll an“ oder „Schütze mich“.</p>\n<p>Bewegt sich der Zauberwirker, wandert der Wirkungsbereich des Schwertes mit ihm mit, so dass die magische Klinge niemals mehr als VE in Metern von ihm getrennt sein kann.</p>\n<p>Das Schwert löst sich in seine arkanen Bestandteile auf, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer verstrichen ist.</p>\n<p>Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.</p>\n<p>Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.</p>",
|
|
||||||
"equipped": false,
|
|
||||||
"spellType": "spellcasting",
|
|
||||||
"spellModifier": {
|
|
||||||
"numerical": 0,
|
|
||||||
"complex": ""
|
|
||||||
},
|
|
||||||
"allowsDefense": false,
|
|
||||||
"spellGroups": {
|
|
||||||
"lightning": false,
|
|
||||||
"earth": false,
|
|
||||||
"water": false,
|
|
||||||
"ice": false,
|
|
||||||
"fire": false,
|
|
||||||
"healing": false,
|
|
||||||
"light": true,
|
|
||||||
"air": false,
|
|
||||||
"transport": false,
|
|
||||||
"damage": false,
|
|
||||||
"shadow": false,
|
|
||||||
"protection": false,
|
|
||||||
"mindAffecting": false,
|
|
||||||
"demonology": false,
|
|
||||||
"necromancy": false,
|
|
||||||
"transmutation": false,
|
|
||||||
"area": false
|
|
||||||
},
|
|
||||||
"maxDistance": {
|
|
||||||
"value": "",
|
|
||||||
"unit": "meter"
|
|
||||||
},
|
|
||||||
"effectRadius": {
|
|
||||||
"value": "VE",
|
|
||||||
"unit": "meter"
|
|
||||||
},
|
|
||||||
"duration": {
|
|
||||||
"value": "VE x 2",
|
|
||||||
"unit": "rounds"
|
|
||||||
},
|
|
||||||
"cooldownDuration": "1d",
|
|
||||||
"minimumLevels": {
|
|
||||||
"healer": null,
|
|
||||||
"wizard": 10,
|
|
||||||
"sorcerer": 8
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!oVKL6zJ2kYMmBuYx.quDuDAGeMVUvF3WD"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "joNh3JSsqfqXk4lU",
|
|
||||||
"name": "Ast",
|
|
||||||
"type": "weapon",
|
|
||||||
"sort": 100000,
|
|
||||||
"flags": {},
|
|
||||||
"effects": [],
|
|
||||||
"img": "icons/svg/item-bag.svg",
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": false,
|
|
||||||
"attackType": "melee",
|
|
||||||
"weaponBonus": 0,
|
|
||||||
"opponentDefense": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!vXmTcBUKZkB2UBD7.joNh3JSsqfqXk4lU"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "CM1yKVLm6mhG2eQE",
|
|
||||||
"name": "Asthiebe",
|
|
||||||
"type": "weapon",
|
|
||||||
"sort": 100000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"attackType": "melee",
|
|
||||||
"weaponBonus": 2,
|
|
||||||
"opponentDefense": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!WboyONCY2UZildi9.CM1yKVLm6mhG2eQE"
|
|
||||||
}
|
|
|
@ -1,184 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "8E7Mm0LsiqFm6syY",
|
|
||||||
"name": "Augenball",
|
|
||||||
"type": "creature",
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"items": [
|
|
||||||
"V7Qw97Fk5MJgijNs",
|
|
||||||
"z3o1FUNSKhEWkcpX",
|
|
||||||
"tKiwh730ZOGMICdg",
|
|
||||||
"SZ8rvHDbY67EqjDN",
|
|
||||||
"v6ojDNs7V5QqwKgT",
|
|
||||||
"coIsPp1V166g8IAm",
|
|
||||||
"kY4uQF3t99ANzx5T",
|
|
||||||
"JMp5LjImHvoKsbGo",
|
|
||||||
"K3QPHlqz66xolbzw",
|
|
||||||
"16dN0fMIjJwdhvGF",
|
|
||||||
"u3CLqxahFyF7kVpa",
|
|
||||||
"BkokuzUTP9U6LtBp",
|
|
||||||
"lIchGK1m7Y7fMcKG",
|
|
||||||
"f0MedvERq1s8hy4z",
|
|
||||||
"cnl7AuqByHHjW1zd",
|
|
||||||
"D3McezCJz6afqzmR",
|
|
||||||
"bKyT6b0j4wLXbL7O"
|
|
||||||
],
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"system": {
|
|
||||||
"attributes": {
|
|
||||||
"body": {
|
|
||||||
"base": 8,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mobility": {
|
|
||||||
"base": 4,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mind": {
|
|
||||||
"base": 10,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traits": {
|
|
||||||
"strength": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"constitution": {
|
|
||||||
"base": 4,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"agility": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"dexterity": {
|
|
||||||
"base": 2,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"intellect": {
|
|
||||||
"base": 2,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"aura": {
|
|
||||||
"base": 3,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"combatValues": {
|
|
||||||
"hitPoints": {
|
|
||||||
"mod": 66,
|
|
||||||
"value": 88
|
|
||||||
},
|
|
||||||
"defense": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"initiative": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"movement": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"meleeAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"rangedAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"spellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"targetedSpellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baseInfo": {
|
|
||||||
"loot": "BW #5A:20, #5M:20",
|
|
||||||
"foeFactor": 23,
|
|
||||||
"creatureType": "magicalEntity",
|
|
||||||
"sizeCategory": "large",
|
|
||||||
"experiencePoints": 255,
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"prototypeToken": {
|
|
||||||
"flags": {},
|
|
||||||
"name": "Augenball",
|
|
||||||
"displayName": 20,
|
|
||||||
"width": 2,
|
|
||||||
"height": 2,
|
|
||||||
"lockRotation": false,
|
|
||||||
"rotation": 0,
|
|
||||||
"actorLink": false,
|
|
||||||
"disposition": -1,
|
|
||||||
"displayBars": 40,
|
|
||||||
"bar1": {
|
|
||||||
"attribute": "combatValues.hitPoints"
|
|
||||||
},
|
|
||||||
"bar2": {
|
|
||||||
"attribute": null
|
|
||||||
},
|
|
||||||
"randomImg": false,
|
|
||||||
"alpha": 1,
|
|
||||||
"light": {
|
|
||||||
"alpha": 0.5,
|
|
||||||
"angle": 360,
|
|
||||||
"bright": 0,
|
|
||||||
"coloration": 1,
|
|
||||||
"dim": 0,
|
|
||||||
"luminosity": 0.5,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0,
|
|
||||||
"shadows": 0,
|
|
||||||
"animation": {
|
|
||||||
"speed": 5,
|
|
||||||
"intensity": 5,
|
|
||||||
"reverse": false,
|
|
||||||
"type": null
|
|
||||||
},
|
|
||||||
"darkness": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 1
|
|
||||||
},
|
|
||||||
"attenuation": 0.5,
|
|
||||||
"color": null
|
|
||||||
},
|
|
||||||
"texture": {
|
|
||||||
"src": "icons/svg/mystery-man.svg",
|
|
||||||
"scaleX": 1,
|
|
||||||
"scaleY": 1,
|
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"rotation": 0,
|
|
||||||
"tint": null
|
|
||||||
},
|
|
||||||
"sight": {
|
|
||||||
"angle": 360,
|
|
||||||
"enabled": false,
|
|
||||||
"range": 0,
|
|
||||||
"brightness": 1,
|
|
||||||
"visionMode": "basic",
|
|
||||||
"color": null,
|
|
||||||
"attenuation": 0.1,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0
|
|
||||||
},
|
|
||||||
"detectionModes": [],
|
|
||||||
"appendNumber": false,
|
|
||||||
"prependAdjective": false
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": "ds4",
|
|
||||||
"systemVersion": "1.19.4",
|
|
||||||
"coreVersion": "11.305",
|
|
||||||
"createdTime": 1668995346257,
|
|
||||||
"modifiedTime": 1688934880746,
|
|
||||||
"lastModifiedBy": "DS4BuildSystem00"
|
|
||||||
},
|
|
||||||
"_key": "!actors!8E7Mm0LsiqFm6syY"
|
|
||||||
}
|
|
|
@ -1,166 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "InLjj4RGxfkDrtXr",
|
|
||||||
"name": "Bär",
|
|
||||||
"type": "creature",
|
|
||||||
"img": "systems/ds4/assets/tokens/devin-night/bear-1.png",
|
|
||||||
"items": ["qZayWokGcZreHpfI", "ayDGYJevUkbQ3N0c", "PKewYpkEmAWTc1j5", "WbEsNLQpzoWJlJyj"],
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"system": {
|
|
||||||
"attributes": {
|
|
||||||
"body": {
|
|
||||||
"base": 12,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mobility": {
|
|
||||||
"base": 8,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mind": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traits": {
|
|
||||||
"strength": {
|
|
||||||
"base": 3,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"constitution": {
|
|
||||||
"base": 3,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"agility": {
|
|
||||||
"base": 4,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"dexterity": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"intellect": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"aura": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"combatValues": {
|
|
||||||
"hitPoints": {
|
|
||||||
"mod": 50,
|
|
||||||
"value": 75
|
|
||||||
},
|
|
||||||
"defense": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"initiative": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"movement": {
|
|
||||||
"mod": 3
|
|
||||||
},
|
|
||||||
"meleeAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"rangedAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"spellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"targetedSpellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baseInfo": {
|
|
||||||
"loot": "Trophäe (BW 1A:16)",
|
|
||||||
"foeFactor": 9,
|
|
||||||
"creatureType": "animal",
|
|
||||||
"sizeCategory": "large",
|
|
||||||
"experiencePoints": 139,
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"prototypeToken": {
|
|
||||||
"flags": {},
|
|
||||||
"name": "Bär",
|
|
||||||
"displayName": 20,
|
|
||||||
"width": 2,
|
|
||||||
"height": 2,
|
|
||||||
"lockRotation": false,
|
|
||||||
"rotation": 0,
|
|
||||||
"actorLink": false,
|
|
||||||
"disposition": -1,
|
|
||||||
"displayBars": 40,
|
|
||||||
"bar1": {
|
|
||||||
"attribute": "combatValues.hitPoints"
|
|
||||||
},
|
|
||||||
"bar2": {
|
|
||||||
"attribute": null
|
|
||||||
},
|
|
||||||
"randomImg": true,
|
|
||||||
"alpha": 1,
|
|
||||||
"light": {
|
|
||||||
"alpha": 0.5,
|
|
||||||
"angle": 360,
|
|
||||||
"bright": 0,
|
|
||||||
"coloration": 1,
|
|
||||||
"dim": 0,
|
|
||||||
"luminosity": 0.5,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0,
|
|
||||||
"shadows": 0,
|
|
||||||
"animation": {
|
|
||||||
"speed": 5,
|
|
||||||
"intensity": 5,
|
|
||||||
"reverse": false,
|
|
||||||
"type": null
|
|
||||||
},
|
|
||||||
"darkness": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 1
|
|
||||||
},
|
|
||||||
"attenuation": 0.5,
|
|
||||||
"color": null
|
|
||||||
},
|
|
||||||
"texture": {
|
|
||||||
"src": "systems/ds4/assets/tokens/devin-night/bear*.png",
|
|
||||||
"scaleX": 1,
|
|
||||||
"scaleY": 1,
|
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"rotation": 0,
|
|
||||||
"tint": null
|
|
||||||
},
|
|
||||||
"sight": {
|
|
||||||
"angle": 360,
|
|
||||||
"enabled": false,
|
|
||||||
"range": 0,
|
|
||||||
"brightness": 1,
|
|
||||||
"visionMode": "basic",
|
|
||||||
"color": null,
|
|
||||||
"attenuation": 0.1,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0
|
|
||||||
},
|
|
||||||
"detectionModes": [],
|
|
||||||
"appendNumber": false,
|
|
||||||
"prependAdjective": false
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": "ds4",
|
|
||||||
"systemVersion": "1.19.4",
|
|
||||||
"coreVersion": "11.305",
|
|
||||||
"createdTime": 1668995346499,
|
|
||||||
"modifiedTime": 1688934880959,
|
|
||||||
"lastModifiedBy": "DS4BuildSystem00"
|
|
||||||
},
|
|
||||||
"_key": "!actors!InLjj4RGxfkDrtXr"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "Icq7W8YrjXTIlb7C",
|
|
||||||
"name": "Bandagen",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 1,
|
|
||||||
"armorMaterialType": "cloth",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!P3mlpN2JrbnDtLwJ.Icq7W8YrjXTIlb7C"
|
|
||||||
}
|
|
|
@ -1,173 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "GVLSLNSoMybeWhBP",
|
|
||||||
"name": "Basilisk",
|
|
||||||
"type": "creature",
|
|
||||||
"img": "systems/ds4/assets/tokens/devin-night/basilisk-green.png",
|
|
||||||
"items": [
|
|
||||||
"y5i2zrZBp74DKQrQ",
|
|
||||||
"3CFakJA3eQJYSFN7",
|
|
||||||
"x7vdeybwnlRnlqTu",
|
|
||||||
"kQZnCtDlaCaKc38S",
|
|
||||||
"cZa7Ms69DWYg8Pgz",
|
|
||||||
"Hn8EIElYWelAKxiD"
|
|
||||||
],
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"system": {
|
|
||||||
"attributes": {
|
|
||||||
"body": {
|
|
||||||
"base": 14,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mobility": {
|
|
||||||
"base": 7,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mind": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traits": {
|
|
||||||
"strength": {
|
|
||||||
"base": 3,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"constitution": {
|
|
||||||
"base": 4,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"agility": {
|
|
||||||
"base": 3,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"dexterity": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"intellect": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"aura": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"combatValues": {
|
|
||||||
"hitPoints": {
|
|
||||||
"mod": 140,
|
|
||||||
"value": 168
|
|
||||||
},
|
|
||||||
"defense": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"initiative": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"movement": {
|
|
||||||
"mod": 2.5
|
|
||||||
},
|
|
||||||
"meleeAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"rangedAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"spellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"targetedSpellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baseInfo": {
|
|
||||||
"loot": "Trophäe (BW 2A:20)",
|
|
||||||
"foeFactor": 18,
|
|
||||||
"creatureType": "magicalEntity",
|
|
||||||
"sizeCategory": "large",
|
|
||||||
"experiencePoints": 206,
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"prototypeToken": {
|
|
||||||
"flags": {},
|
|
||||||
"name": "Basilisk",
|
|
||||||
"displayName": 20,
|
|
||||||
"width": 2,
|
|
||||||
"height": 2,
|
|
||||||
"lockRotation": false,
|
|
||||||
"rotation": 0,
|
|
||||||
"actorLink": false,
|
|
||||||
"disposition": -1,
|
|
||||||
"displayBars": 40,
|
|
||||||
"bar1": {
|
|
||||||
"attribute": "combatValues.hitPoints"
|
|
||||||
},
|
|
||||||
"bar2": {
|
|
||||||
"attribute": null
|
|
||||||
},
|
|
||||||
"randomImg": true,
|
|
||||||
"alpha": 1,
|
|
||||||
"light": {
|
|
||||||
"alpha": 0.5,
|
|
||||||
"angle": 360,
|
|
||||||
"bright": 0,
|
|
||||||
"coloration": 1,
|
|
||||||
"dim": 0,
|
|
||||||
"luminosity": 0.5,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0,
|
|
||||||
"shadows": 0,
|
|
||||||
"animation": {
|
|
||||||
"speed": 5,
|
|
||||||
"intensity": 5,
|
|
||||||
"reverse": false,
|
|
||||||
"type": null
|
|
||||||
},
|
|
||||||
"darkness": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 1
|
|
||||||
},
|
|
||||||
"attenuation": 0.5,
|
|
||||||
"color": null
|
|
||||||
},
|
|
||||||
"texture": {
|
|
||||||
"src": "systems/ds4/assets/tokens/devin-night/basilisk*.png",
|
|
||||||
"scaleX": 1,
|
|
||||||
"scaleY": 1,
|
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"rotation": 0,
|
|
||||||
"tint": null
|
|
||||||
},
|
|
||||||
"sight": {
|
|
||||||
"angle": 360,
|
|
||||||
"enabled": false,
|
|
||||||
"range": 0,
|
|
||||||
"brightness": 1,
|
|
||||||
"visionMode": "basic",
|
|
||||||
"color": null,
|
|
||||||
"attenuation": 0.1,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0
|
|
||||||
},
|
|
||||||
"detectionModes": [],
|
|
||||||
"appendNumber": false,
|
|
||||||
"prependAdjective": false
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": "ds4",
|
|
||||||
"systemVersion": "1.19.4",
|
|
||||||
"coreVersion": "11.305",
|
|
||||||
"createdTime": 1668995346388,
|
|
||||||
"modifiedTime": 1688934880889,
|
|
||||||
"lastModifiedBy": "DS4BuildSystem00"
|
|
||||||
},
|
|
||||||
"_key": "!actors!GVLSLNSoMybeWhBP"
|
|
||||||
}
|
|
|
@ -1,174 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "WboyONCY2UZildi9",
|
|
||||||
"name": "Baumherr",
|
|
||||||
"type": "creature",
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"items": [
|
|
||||||
"CM1yKVLm6mhG2eQE",
|
|
||||||
"sZw8glq3cnPHu6yq",
|
|
||||||
"X9jyAzrnyxuikyg3",
|
|
||||||
"B1Sw09kZopPZB8ys",
|
|
||||||
"x0mAm5abWWHlKJLz",
|
|
||||||
"2bA1MnqkTTwKtMoS",
|
|
||||||
"fKCcOlyaebvj1HuL"
|
|
||||||
],
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"system": {
|
|
||||||
"attributes": {
|
|
||||||
"body": {
|
|
||||||
"base": 20,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mobility": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mind": {
|
|
||||||
"base": 1,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traits": {
|
|
||||||
"strength": {
|
|
||||||
"base": 5,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"constitution": {
|
|
||||||
"base": 5,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"agility": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"dexterity": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"intellect": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"aura": {
|
|
||||||
"base": 0,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"combatValues": {
|
|
||||||
"hitPoints": {
|
|
||||||
"mod": 35,
|
|
||||||
"value": 70
|
|
||||||
},
|
|
||||||
"defense": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"initiative": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"movement": {
|
|
||||||
"mod": 2
|
|
||||||
},
|
|
||||||
"meleeAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"rangedAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"spellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"targetedSpellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baseInfo": {
|
|
||||||
"loot": "Lediglich Brennholz",
|
|
||||||
"foeFactor": 23,
|
|
||||||
"creatureType": "plantBeing",
|
|
||||||
"sizeCategory": "large",
|
|
||||||
"experiencePoints": 158,
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"prototypeToken": {
|
|
||||||
"flags": {},
|
|
||||||
"name": "Baumherr",
|
|
||||||
"displayName": 20,
|
|
||||||
"width": 2,
|
|
||||||
"height": 2,
|
|
||||||
"lockRotation": false,
|
|
||||||
"rotation": 0,
|
|
||||||
"actorLink": false,
|
|
||||||
"disposition": -1,
|
|
||||||
"displayBars": 40,
|
|
||||||
"bar1": {
|
|
||||||
"attribute": "combatValues.hitPoints"
|
|
||||||
},
|
|
||||||
"bar2": {
|
|
||||||
"attribute": null
|
|
||||||
},
|
|
||||||
"randomImg": false,
|
|
||||||
"alpha": 1,
|
|
||||||
"light": {
|
|
||||||
"alpha": 0.5,
|
|
||||||
"angle": 360,
|
|
||||||
"bright": 0,
|
|
||||||
"coloration": 1,
|
|
||||||
"dim": 0,
|
|
||||||
"luminosity": 0.5,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0,
|
|
||||||
"shadows": 0,
|
|
||||||
"animation": {
|
|
||||||
"speed": 5,
|
|
||||||
"intensity": 5,
|
|
||||||
"reverse": false,
|
|
||||||
"type": null
|
|
||||||
},
|
|
||||||
"darkness": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 1
|
|
||||||
},
|
|
||||||
"attenuation": 0.5,
|
|
||||||
"color": null
|
|
||||||
},
|
|
||||||
"texture": {
|
|
||||||
"src": "icons/svg/mystery-man.svg",
|
|
||||||
"scaleX": 1,
|
|
||||||
"scaleY": 1,
|
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"rotation": 0,
|
|
||||||
"tint": null
|
|
||||||
},
|
|
||||||
"sight": {
|
|
||||||
"angle": 360,
|
|
||||||
"enabled": false,
|
|
||||||
"range": 0,
|
|
||||||
"brightness": 1,
|
|
||||||
"visionMode": "basic",
|
|
||||||
"color": null,
|
|
||||||
"attenuation": 0.1,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0
|
|
||||||
},
|
|
||||||
"detectionModes": [],
|
|
||||||
"appendNumber": false,
|
|
||||||
"prependAdjective": false
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": "ds4",
|
|
||||||
"systemVersion": "1.19.4",
|
|
||||||
"coreVersion": "11.305",
|
|
||||||
"createdTime": 1668995346710,
|
|
||||||
"modifiedTime": 1688934881181,
|
|
||||||
"lastModifiedBy": "DS4BuildSystem00"
|
|
||||||
},
|
|
||||||
"_key": "!actors!WboyONCY2UZildi9"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "ndjWMSfPfmPY9AUY",
|
|
||||||
"name": "Baumstamm",
|
|
||||||
"type": "weapon",
|
|
||||||
"sort": 100000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"attackType": "melee",
|
|
||||||
"weaponBonus": 4,
|
|
||||||
"opponentDefense": -4
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!rULL0cHbyACJsHDC.ndjWMSfPfmPY9AUY"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "VXyznv68DT2Guc0A",
|
|
||||||
"name": "Bezaubern",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.HMCFkxVzU2b3KkSA"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Kann Gegner mit einem „Lockruf“ bezaubern. Dieser Zauber funktioniert wie der Zauberspruch @Compendium[ds4.spells.wZYElRaDmhqgzUvQ]{Gehorche}. Abklingzeit des <em>Lockrufs</em>: 10 Kampfrunden</p>",
|
|
||||||
"experiencePoints": 25
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!s56U2LeRInrje3xh.VXyznv68DT2Guc0A"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "8Um85s0Ayigqse3B",
|
|
||||||
"name": "Biss",
|
|
||||||
"type": "weapon",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"attackType": "melee",
|
|
||||||
"weaponBonus": 2,
|
|
||||||
"opponentDefense": -1
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!PVuNoFILDAHpqGsa.8Um85s0Ayigqse3B"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "9olbXmWVzPkmPhvu",
|
|
||||||
"name": "Biss",
|
|
||||||
"type": "weapon",
|
|
||||||
"sort": 100000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"attackType": "melee",
|
|
||||||
"weaponBonus": 1,
|
|
||||||
"opponentDefense": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!O2maANGDJHPLX8aE.9olbXmWVzPkmPhvu"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "j0NbwyhdJPipL7Rl",
|
|
||||||
"name": "Biss",
|
|
||||||
"type": "weapon",
|
|
||||||
"sort": 100000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"attackType": "melee",
|
|
||||||
"weaponBonus": 1,
|
|
||||||
"opponentDefense": 0
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!Qm2toXbf6EVmvRS1.j0NbwyhdJPipL7Rl"
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "16dN0fMIjJwdhvGF",
|
|
||||||
"name": "Blenden",
|
|
||||||
"type": "spell",
|
|
||||||
"img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 100000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.spells.JldAx8a91vVO2wUf"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel (welches dagegen keine Abwehr würfeln darf).</p><p>Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.</p><p>Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.</p>",
|
|
||||||
"equipped": true,
|
|
||||||
"spellType": "targetedSpellcasting",
|
|
||||||
"spellModifier": {
|
|
||||||
"numerical": 0,
|
|
||||||
"complex": "-(AGI+AU)/2 des Ziels"
|
|
||||||
},
|
|
||||||
"allowsDefense": false,
|
|
||||||
"spellGroups": {
|
|
||||||
"lightning": false,
|
|
||||||
"earth": false,
|
|
||||||
"water": false,
|
|
||||||
"ice": false,
|
|
||||||
"fire": false,
|
|
||||||
"healing": false,
|
|
||||||
"light": true,
|
|
||||||
"air": false,
|
|
||||||
"transport": false,
|
|
||||||
"damage": false,
|
|
||||||
"shadow": false,
|
|
||||||
"protection": false,
|
|
||||||
"mindAffecting": false,
|
|
||||||
"demonology": false,
|
|
||||||
"necromancy": false,
|
|
||||||
"transmutation": false,
|
|
||||||
"area": false
|
|
||||||
},
|
|
||||||
"maxDistance": {
|
|
||||||
"value": "VE x 5",
|
|
||||||
"unit": "meter"
|
|
||||||
},
|
|
||||||
"effectRadius": {
|
|
||||||
"value": "",
|
|
||||||
"unit": "meter"
|
|
||||||
},
|
|
||||||
"duration": {
|
|
||||||
"value": "Prb.",
|
|
||||||
"unit": "rounds"
|
|
||||||
},
|
|
||||||
"cooldownDuration": "5r",
|
|
||||||
"minimumLevels": {
|
|
||||||
"healer": 1,
|
|
||||||
"wizard": 5,
|
|
||||||
"sorcerer": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!8E7Mm0LsiqFm6syY.16dN0fMIjJwdhvGF"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "MuXvP2TjwvevxLpo",
|
|
||||||
"name": "Blickangriff",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 400000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.</p>",
|
|
||||||
"experiencePoints": 10
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!F3zJ4xbHwN9syuK8.MuXvP2TjwvevxLpo"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "x7vdeybwnlRnlqTu",
|
|
||||||
"name": "Blickangriff",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.</p>",
|
|
||||||
"experiencePoints": 10
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!GVLSLNSoMybeWhBP.x7vdeybwnlRnlqTu"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "yjkoipelFXEzcy1x",
|
|
||||||
"name": "Blitz-Odem",
|
|
||||||
"type": "specialCreatureAbility",
|
|
||||||
"sort": 800000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).</p>",
|
|
||||||
"experiencePoints": -1
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!nDRdljcZzkonbU0s.yjkoipelFXEzcy1x"
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "aa8a89EaVy8fjgLn",
|
|
||||||
"name": "Blitz",
|
|
||||||
"type": "spell",
|
|
||||||
"sort": 900000,
|
|
||||||
"flags": {
|
|
||||||
"core": {
|
|
||||||
"sourceId": "Compendium.ds4.spells.Senq5ub2Cx0agJgi"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "<p>Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.</p>",
|
|
||||||
"equipped": false,
|
|
||||||
"spellType": "targetedSpellcasting",
|
|
||||||
"spellModifier": {
|
|
||||||
"numerical": 3,
|
|
||||||
"complex": ""
|
|
||||||
},
|
|
||||||
"allowsDefense": true,
|
|
||||||
"spellGroups": {
|
|
||||||
"lightning": true,
|
|
||||||
"earth": false,
|
|
||||||
"water": false,
|
|
||||||
"ice": false,
|
|
||||||
"fire": false,
|
|
||||||
"healing": false,
|
|
||||||
"light": false,
|
|
||||||
"air": false,
|
|
||||||
"transport": false,
|
|
||||||
"damage": true,
|
|
||||||
"shadow": false,
|
|
||||||
"protection": false,
|
|
||||||
"mindAffecting": false,
|
|
||||||
"demonology": false,
|
|
||||||
"necromancy": false,
|
|
||||||
"transmutation": false,
|
|
||||||
"area": false
|
|
||||||
},
|
|
||||||
"maxDistance": {
|
|
||||||
"value": "VE x 10",
|
|
||||||
"unit": "meter"
|
|
||||||
},
|
|
||||||
"effectRadius": {
|
|
||||||
"value": "",
|
|
||||||
"unit": "meter"
|
|
||||||
},
|
|
||||||
"duration": {
|
|
||||||
"value": "Sofort",
|
|
||||||
"unit": "custom"
|
|
||||||
},
|
|
||||||
"cooldownDuration": "1r",
|
|
||||||
"minimumLevels": {
|
|
||||||
"healer": 10,
|
|
||||||
"wizard": 7,
|
|
||||||
"sorcerer": 7
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!sCBrVIDh2umWr63g.aa8a89EaVy8fjgLn"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "hcB5LcidhVSW5rI7",
|
|
||||||
"name": "Brennendes Fell",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 1,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!O2maANGDJHPLX8aE.hcB5LcidhVSW5rI7"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "b1YoPObYAlp0qgLo",
|
|
||||||
"name": "Chitinpanzer",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 3,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!WYvb8G0z5GuNi7kO.b1YoPObYAlp0qgLo"
|
|
||||||
}
|
|
|
@ -1,173 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "PKPmkOMLDGwS9QZJ",
|
|
||||||
"name": "Dämonenfürst",
|
|
||||||
"type": "creature",
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"items": [
|
|
||||||
"bXEiQJc7aJmLW1K4",
|
|
||||||
"N6MfjihlDL9hfse6",
|
|
||||||
"BDsxMEuEKfjEgFk3",
|
|
||||||
"AHJhJgRCvw2dKx78",
|
|
||||||
"DURD01IkVxPAwlxf",
|
|
||||||
"hvOFruV5fmieLXnk"
|
|
||||||
],
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"system": {
|
|
||||||
"attributes": {
|
|
||||||
"body": {
|
|
||||||
"base": 20,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mobility": {
|
|
||||||
"base": 20,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"mind": {
|
|
||||||
"base": 10,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traits": {
|
|
||||||
"strength": {
|
|
||||||
"base": 10,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"constitution": {
|
|
||||||
"base": 10,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"agility": {
|
|
||||||
"base": 10,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"dexterity": {
|
|
||||||
"base": 10,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"intellect": {
|
|
||||||
"base": 5,
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"aura": {
|
|
||||||
"base": 5,
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"combatValues": {
|
|
||||||
"hitPoints": {
|
|
||||||
"mod": 360,
|
|
||||||
"value": 400
|
|
||||||
},
|
|
||||||
"defense": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"initiative": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"movement": {
|
|
||||||
"mod": 5
|
|
||||||
},
|
|
||||||
"meleeAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"rangedAttack": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"spellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
},
|
|
||||||
"targetedSpellcasting": {
|
|
||||||
"mod": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baseInfo": {
|
|
||||||
"loot": "-",
|
|
||||||
"foeFactor": 42,
|
|
||||||
"creatureType": "magicalEntity",
|
|
||||||
"sizeCategory": "colossal",
|
|
||||||
"experiencePoints": 579,
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"prototypeToken": {
|
|
||||||
"flags": {},
|
|
||||||
"name": "Dämonenfürst",
|
|
||||||
"displayName": 20,
|
|
||||||
"width": 4,
|
|
||||||
"height": 4,
|
|
||||||
"lockRotation": false,
|
|
||||||
"rotation": 0,
|
|
||||||
"actorLink": false,
|
|
||||||
"disposition": -1,
|
|
||||||
"displayBars": 40,
|
|
||||||
"bar1": {
|
|
||||||
"attribute": "combatValues.hitPoints"
|
|
||||||
},
|
|
||||||
"bar2": {
|
|
||||||
"attribute": null
|
|
||||||
},
|
|
||||||
"randomImg": false,
|
|
||||||
"alpha": 1,
|
|
||||||
"light": {
|
|
||||||
"alpha": 0.5,
|
|
||||||
"angle": 360,
|
|
||||||
"bright": 0,
|
|
||||||
"coloration": 1,
|
|
||||||
"dim": 0,
|
|
||||||
"luminosity": 0.5,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0,
|
|
||||||
"shadows": 0,
|
|
||||||
"animation": {
|
|
||||||
"speed": 5,
|
|
||||||
"intensity": 5,
|
|
||||||
"reverse": false,
|
|
||||||
"type": null
|
|
||||||
},
|
|
||||||
"darkness": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 1
|
|
||||||
},
|
|
||||||
"attenuation": 0.5,
|
|
||||||
"color": null
|
|
||||||
},
|
|
||||||
"texture": {
|
|
||||||
"src": "icons/svg/mystery-man.svg",
|
|
||||||
"scaleX": 1,
|
|
||||||
"scaleY": 1,
|
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"rotation": 0,
|
|
||||||
"tint": null
|
|
||||||
},
|
|
||||||
"sight": {
|
|
||||||
"angle": 360,
|
|
||||||
"enabled": false,
|
|
||||||
"range": 0,
|
|
||||||
"brightness": 1,
|
|
||||||
"visionMode": "basic",
|
|
||||||
"color": null,
|
|
||||||
"attenuation": 0.1,
|
|
||||||
"saturation": 0,
|
|
||||||
"contrast": 0
|
|
||||||
},
|
|
||||||
"detectionModes": [],
|
|
||||||
"appendNumber": false,
|
|
||||||
"prependAdjective": false
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": "ds4",
|
|
||||||
"systemVersion": "1.19.4",
|
|
||||||
"coreVersion": "11.305",
|
|
||||||
"createdTime": 1668995346629,
|
|
||||||
"modifiedTime": 1688934881055,
|
|
||||||
"lastModifiedBy": "DS4BuildSystem00"
|
|
||||||
},
|
|
||||||
"_key": "!actors!PKPmkOMLDGwS9QZJ"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "N6MfjihlDL9hfse6",
|
|
||||||
"name": "Dämonenhaut",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 2,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!RxSUSzQBSTFYHOlV.N6MfjihlDL9hfse6"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "DDaq3xgZrGuEl4Dc",
|
|
||||||
"name": "Dicke Borstenhaut",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 2,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!FxGhbznQbwd0jRUT.DDaq3xgZrGuEl4Dc"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "pSQjVkwbjngPoEPZ",
|
|
||||||
"name": "Dicke Borstenhaut",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 2,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!GWNFUkgxocfKchIQ.pSQjVkwbjngPoEPZ"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "sZw8glq3cnPHu6yq",
|
|
||||||
"name": "Dicke Rinde",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 2,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!WboyONCY2UZildi9.sZw8glq3cnPHu6yq"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "b80BR5n1f6WvGavG",
|
|
||||||
"name": "Dicke Spinnenhaut",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 300000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 1,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!4276kgAddflo3bwN.b80BR5n1f6WvGavG"
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"_id": "OehvVDNjDg4xbsW7",
|
|
||||||
"name": "Dickhäuter",
|
|
||||||
"type": "armor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"img": "icons/svg/mystery-man.svg",
|
|
||||||
"effects": [],
|
|
||||||
"folder": null,
|
|
||||||
"system": {
|
|
||||||
"description": "",
|
|
||||||
"quantity": 1,
|
|
||||||
"price": 0,
|
|
||||||
"availability": "unset",
|
|
||||||
"storageLocation": "-",
|
|
||||||
"equipped": true,
|
|
||||||
"armorValue": 2,
|
|
||||||
"armorMaterialType": "natural",
|
|
||||||
"armorType": "body"
|
|
||||||
},
|
|
||||||
"ownership": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"_stats": {
|
|
||||||
"systemId": null,
|
|
||||||
"systemVersion": null,
|
|
||||||
"coreVersion": null,
|
|
||||||
"createdTime": null,
|
|
||||||
"modifiedTime": null,
|
|
||||||
"lastModifiedBy": null
|
|
||||||
},
|
|
||||||
"_key": "!actors.items!BIyY1wlxWtJ5FRQJ.OehvVDNjDg4xbsW7"
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue